profileShare

rasmusjy / splitapp-backend-microservices

Read-only snapshot

No repository description.

main default branch 501 files Expires Sep 13, 2026, 9:06 AM
IInvitationService.cs 1,311 bytes
1 using SplitApp.WebApp.Application.DTO;
2 using SplitApp.Modules.Trips.Domain.Entities;
3 using SplitApp.Modules.Trips.Domain.Enums;
4 using SplitApp.Modules.Expenses.Domain.Entities;
5 using SplitApp.Modules.Expenses.Domain.Enums;
6
7 namespace SplitApp.WebApp.Application.Services;
8
9 public interface IInvitationService
10 {
11 Task<TripInvitationBllDto> CreateInvitationAsync(Guid tripId, Guid userId);
12 Task<bool> AcceptInvitationAsync(string token, Guid userId);
13
14 // Guarded variant: also checks organizer
15 Task<(TripInvitationBllDto? invitation, string? errorCode)> CreateInvitationGuardedAsync(Guid tripId, Guid userId);
16
17 // Lookups
18 Task<TripInvitationBllDto?> GetByIdAsync(Guid id);
19 Task<TripInvitationBllDto?> GetByTokenAsync(string token);
20 Task<List<TripInvitationBllDto>> GetPendingByTripIdAsync(Guid tripId, Guid userId);
21
22 // Accept: full guarded flow (API)
23 Task<(bool success, string? errorCode)> AcceptInvitationGuardedAsync(string token, Guid userId);
24
25 // Revoke & Decline
26 Task<(bool success, string? errorCode)> RevokeInvitationAsync(Guid invitationId, Guid tripId, Guid userId);
27 Task<(bool success, string? errorCode)> RevokeInvitationByTokenAsync(string token, Guid userId);
28 Task<(bool success, string? errorCode)> DeclineInvitationAsync(string token);
29 }
30