Invitation globale work

+ tests
+ new services
+ InvitationDto and IInvitationReqest
This commit is contained in:
Artemy
2025-06-24 21:20:43 +07:00
parent f99ec0b17b
commit 76094af15b
38 changed files with 483 additions and 1640 deletions
@@ -0,0 +1,52 @@
using Govor.API.Services.Authentication.Interfaces;
using Govor.Core;
using Govor.Core.Models;
using Govor.Core.Repositories.Invaites;
using Govor.Data.Repositories.Exceptions;
namespace Govor.API.Services.Authentication;
public class InvitesService : IInvitesService
{
private readonly IInvitesRepository _invitesRepository;
public InvitesService(IInvitesRepository invitesRepository)
{
_invitesRepository = invitesRepository;
}
public async Task<string> GetRole(User user)
{
try
{
var invitation = await _invitesRepository.FindByIdAsync(user.InviteId);
return invitation.IsAdmin ? "Admin" : "User";
}
catch (NotFoundByKeyException<Guid>)
{
return "User";
}
}
public Invitation Validate(string inviteCode)
{
var invite = _invitesRepository.FindByCodeAsync(inviteCode).Result;
if (invite.EndDate < DateTime.Now ||
invite.MaxParticipants <= invite.Users.Count)
{
invite.IsActive = false;
_invitesRepository.UpdateAsync(invite);
throw new InviteLinkInvalidException(inviteCode);
}
return invite;
}
public string GenerateInvitationLink(Invitation invitation)
{
throw new NotImplementedException();
}
}
public class InviteLinkInvalidException(string inviteCode) : GovorCoreException($"Invite link invalid: {inviteCode}");