Table of Contents

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

invitation ProjectInvitation

The project invitation entity to create.

cancellationToken CancellationToken

Cancellation 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

id Guid

The unique identifier of the invitation to retrieve.

cancellationToken CancellationToken

Cancellation 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

token string

The secure token from the invitation email.

cancellationToken CancellationToken

Cancellation 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

userId Guid

The unique identifier of the user (invitee).

cancellationToken CancellationToken

Cancellation 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

userId Guid

The unique identifier of the user (inviter).

cancellationToken CancellationToken

Cancellation 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

projectId Guid

The unique identifier of the project.

toUserId Guid

The unique identifier of the user being invited.

cancellationToken CancellationToken

Cancellation 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

invitation ProjectInvitation

The project invitation entity with updated values.

cancellationToken CancellationToken

Cancellation token to cancel the operation.

Returns

Task<ProjectInvitation>

The updated project invitation entity.