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 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()); } } }