Table of Contents

Class ProjectInvitationRepository

Namespace
Builvero.Infrastructure.Repositories
Assembly
Builvero.Infrastructure.dll

Repository implementation for project invitation data access operations using Entity Framework Core.

public class ProjectInvitationRepository : IProjectInvitationRepository
Inheritance
ProjectInvitationRepository
Implements
Inherited Members

Remarks

Project invitations allow project owners to invite users to join their projects. Invitations use secure tokens for email-based acceptance without requiring login.

Constructors

ProjectInvitationRepository(ApplicationDbContext)

Initializes a new instance of the ProjectInvitationRepository class.

public ProjectInvitationRepository(ApplicationDbContext context)

Parameters

context ApplicationDbContext

The Entity Framework database context for data access.

Methods

CreateAsync(ProjectInvitation, CancellationToken)

Creates a new project invitation in the database.

public 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 its generated ID.

GetByIdAsync(Guid, CancellationToken)

Retrieves a project invitation by its unique identifier.

public 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 invitation with Project, FromUser, and ToUser loaded, or null if not found.

GetByTokenAsync(string, CancellationToken)

Retrieves a project invitation by its secure token.

public Task<ProjectInvitation?> GetByTokenAsync(string token, CancellationToken cancellationToken = default)

Parameters

token string

The secure token associated with the invitation.

cancellationToken CancellationToken

Cancellation token to cancel the operation.

Returns

Task<ProjectInvitation>

The invitation with Project, FromUser, and ToUser loaded, or null if not found.

GetIncomingInvitationsAsync(Guid, CancellationToken)

Retrieves all pending invitations received by a user.

public Task<List<ProjectInvitation>> GetIncomingInvitationsAsync(Guid userId, CancellationToken cancellationToken = default)

Parameters

userId Guid

The unique identifier of the user who received the invitations.

cancellationToken CancellationToken

Cancellation token to cancel the operation.

Returns

Task<List<ProjectInvitation>>

A list of pending invitations with Project and FromUser (with Profile) loaded, ordered by creation date (newest first).

GetOutgoingInvitationsAsync(Guid, CancellationToken)

Retrieves all invitations sent by a user (regardless of status).

public Task<List<ProjectInvitation>> GetOutgoingInvitationsAsync(Guid userId, CancellationToken cancellationToken = default)

Parameters

userId Guid

The unique identifier of the user who sent the invitations.

cancellationToken CancellationToken

Cancellation token to cancel the operation.

Returns

Task<List<ProjectInvitation>>

A list of invitations with Project and ToUser (with Profile) loaded, ordered by creation date (newest first).

GetPendingInvitationAsync(Guid, Guid, CancellationToken)

Retrieves a pending invitation for a specific project and user.

public 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 who was invited.

cancellationToken CancellationToken

Cancellation token to cancel the operation.

Returns

Task<ProjectInvitation>

The pending invitation if found; otherwise, null.

UpdateAsync(ProjectInvitation, CancellationToken)

Updates an existing project invitation in the database.

public Task<ProjectInvitation> UpdateAsync(ProjectInvitation invitation, CancellationToken cancellationToken = default)

Parameters

invitation ProjectInvitation

The project invitation entity to update.

cancellationToken CancellationToken

Cancellation token to cancel the operation.

Returns

Task<ProjectInvitation>

The updated project invitation entity.