Interface IProjectInvitationRepository
- Namespace
- Builvero.Application.Interfaces.Repositories
- Assembly
- Builvero.Application.dll
Defines the contract for project invitation data access operations including retrieval, creation, updates, and querying.
public interface IProjectInvitationRepository
Remarks
This repository interface provides methods for managing project invitation entities. Invitations include secure tokens for email-based acceptance/decline without requiring login. Invitations expire after 30 days.
Methods
CreateAsync(ProjectInvitation, CancellationToken)
Creates a new project invitation entity in the database.
Task<ProjectInvitation> CreateAsync(ProjectInvitation invitation, CancellationToken cancellationToken = default)
Parameters
invitationProjectInvitationThe project invitation entity to create.
cancellationTokenCancellationTokenCancellation token to cancel the operation.
Returns
- Task<ProjectInvitation>
The created project invitation entity with generated ID, token, and timestamps.
GetByIdAsync(Guid, CancellationToken)
Retrieves a project invitation by its unique identifier.
Task<ProjectInvitation?> GetByIdAsync(Guid id, CancellationToken cancellationToken = default)
Parameters
idGuidThe unique identifier of the invitation to retrieve.
cancellationTokenCancellationTokenCancellation token to cancel the operation.
Returns
- Task<ProjectInvitation>
The project invitation entity if found; otherwise, null.
GetByTokenAsync(string, CancellationToken)
Retrieves a project invitation by its secure token (used for email-based acceptance/decline).
Task<ProjectInvitation?> GetByTokenAsync(string token, CancellationToken cancellationToken = default)
Parameters
tokenstringThe secure token from the invitation email.
cancellationTokenCancellationTokenCancellation token to cancel the operation.
Returns
- Task<ProjectInvitation>
The project invitation entity if found; otherwise, null.
GetIncomingInvitationsAsync(Guid, CancellationToken)
Retrieves all incoming invitations for a specific user (invitations sent to them).
Task<List<ProjectInvitation>> GetIncomingInvitationsAsync(Guid userId, CancellationToken cancellationToken = default)
Parameters
userIdGuidThe unique identifier of the user (invitee).
cancellationTokenCancellationTokenCancellation token to cancel the operation.
Returns
- Task<List<ProjectInvitation>>
A list of incoming project invitations for the user.
GetOutgoingInvitationsAsync(Guid, CancellationToken)
Retrieves all outgoing invitations created by a specific user (invitations they sent).
Task<List<ProjectInvitation>> GetOutgoingInvitationsAsync(Guid userId, CancellationToken cancellationToken = default)
Parameters
userIdGuidThe unique identifier of the user (inviter).
cancellationTokenCancellationTokenCancellation token to cancel the operation.
Returns
- Task<List<ProjectInvitation>>
A list of outgoing project invitations created by the user.
GetPendingInvitationAsync(Guid, Guid, CancellationToken)
Retrieves a pending invitation for a specific project and user combination.
Task<ProjectInvitation?> GetPendingInvitationAsync(Guid projectId, Guid toUserId, CancellationToken cancellationToken = default)
Parameters
projectIdGuidThe unique identifier of the project.
toUserIdGuidThe unique identifier of the user being invited.
cancellationTokenCancellationTokenCancellation token to cancel the operation.
Returns
- Task<ProjectInvitation>
The pending invitation if found; otherwise, null.
Remarks
Used to check if a pending invitation already exists before creating a new one.
UpdateAsync(ProjectInvitation, CancellationToken)
Updates an existing project invitation entity in the database.
Task<ProjectInvitation> UpdateAsync(ProjectInvitation invitation, CancellationToken cancellationToken = default)
Parameters
invitationProjectInvitationThe project invitation entity with updated values.
cancellationTokenCancellationTokenCancellation token to cancel the operation.
Returns
- Task<ProjectInvitation>
The updated project invitation entity.