Initial commit carried over from private repo. This is V2.
This commit is contained in:
40
code/MessengerApi/Handlers/Endpoint/AckEndpointHandler.cs
Normal file
40
code/MessengerApi/Handlers/Endpoint/AckEndpointHandler.cs
Normal file
@ -0,0 +1,40 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user