public void TakeDelivery(int userId, int deliveryId) { var delivery = _queryFacade.Deliveries.FirstOrDefault(d => d.Id == deliveryId); if (delivery == null) { //404 код, если доставки с указанным id не найдено HttpContext.Response.StatusCode = 404; HttpContext.Response.WriteAsync($"Delivery with id {deliveryId} not found").Wait(); } else if (delivery.Status != DeliveySatus.Available) { //422, если доставка не доступна HttpContext.Response.StatusCode = 422; HttpContext.Response.WriteAsync($"Delivery with id {deliveryId} is not available").Wait(); } else { //если все ок - назначем AssignToUserCommand command = new AssignToUserCommand() { DeliveryId = delivery.Id, UserId = userId }; _commandHandler.Handle(command); } }
public Task Execute(IJobExecutionContext context) { return(Task.Run(() => { //выбираем нужные доставки var expiredDeliveries = _query.Deliveries.Where( d => d.Status == Models.DeliveySatus.Available && d.CreationDate.Add(TimeSpan.FromSeconds(d.ExpirationTime)) < DateTime.Now) .ToList(); int expiredCount = expiredDeliveries.Count; //каждую помечаем, как выполненную foreach (var expire in expiredDeliveries) { _commandHandler.Handle(new DeliveryExpireCommand() { DeliveryId = expire.Id }); } if (expiredCount > 0) { _logger.LogInformation($"{expiredCount} deliveries expired!"); } })); }
public Task Execute(IJobExecutionContext context) { return(Task.Run(() => { //в качестве рандомного тайтла используем гуид string title = Guid.NewGuid().ToString(); int expTime = _optionsAccessor.Value.ExpirationTime; int newId = _commandHandler.Handle(new CreateDeliveryCommand() { Title = title, ExpirationTime = expTime }); _logger.LogInformation($"Job {newId} {title} created!"); })); }