43 lines
1.3 KiB
C#
43 lines
1.3 KiB
C#
using MessengerApi.Contracts.Models.Scoped;
|
|
using MessengerApi.Db.Entities;
|
|
using MessengerApi.Models.Scoped;
|
|
|
|
namespace MessengerApi.Handlers.Endpoint
|
|
{
|
|
public class ReceiveEndpointHandler
|
|
{
|
|
private readonly ILogger logger;
|
|
|
|
private readonly Timing timing;
|
|
private readonly Identity identity;
|
|
private readonly IUnitOfWork unitOfWork;
|
|
|
|
public ReceiveEndpointHandler(
|
|
ILogger logger,
|
|
Timing timing,
|
|
Identity identity,
|
|
IUnitOfWork unitOfWork)
|
|
{
|
|
this.logger = logger;
|
|
this.timing = timing;
|
|
this.identity = identity;
|
|
this.unitOfWork = unitOfWork;
|
|
}
|
|
|
|
public Task<Message[]> ReceiveMessages()
|
|
{
|
|
var pendingMessages = this.unitOfWork.Messages.GetPendingMessages(this.identity.User);
|
|
|
|
this.logger.Debug($"[{this.timing.Timestamp:s}] User {this.identity.User.Name} is receiving {pendingMessages.Count()}.");
|
|
|
|
if (!pendingMessages.Any())
|
|
{
|
|
return Task.FromResult(new Message[0]);
|
|
}
|
|
|
|
var messages = pendingMessages.ToList();
|
|
messages.ForEach(x => x.IsDelivered = true);
|
|
return Task.FromResult(messages.ToArray());
|
|
}
|
|
}
|
|
} |