Files
messengerapi/code/MessengerApi/Handlers/Endpoint/AckEndpointHandler.cs
masiton 4393977389
All checks were successful
Build and Push Docker Image / build (push) Successful in 1m3s
Build and Push Docker Image / docker (push) Successful in 43s
Initial commit carried over from private repo. This is V2.
2025-07-04 21:24:12 +02:00

40 lines
1.1 KiB
C#

using MessengerApi.Contracts.Models.Scoped;
using MessengerApi.Models.Scoped;
namespace MessengerApi.Handlers.Endpoint
{
public class AckEndpointHandler
{
private readonly ILogger logger;
private readonly IUnitOfWork unitOfWork;
private readonly Identity identity;
public AckEndpointHandler(
ILogger logger,
IUnitOfWork unitOfWork,
Identity identity)
{
this.logger = logger;
this.unitOfWork = unitOfWork;
this.identity = identity;
}
public async Task AckMessage(Guid messageId)
{
var message = unitOfWork.Messages.GetById(messageId);
// Authorize.
if (message.ToId != this.identity.User.Id)
{
throw new InvalidOperationException("It's not your message to ack.");
}
else if(!message.IsDelivered)
{
throw new InvalidOperationException("Can't ack undelivered message.");
}
// Act.
message.IsAcknowledged = true;
}
}
}