public async Task <ActionResult <Pedido> > PostPedido(Pedido pedido) { pedido.DroneId = null; pedido.DataHoraInclusao = DateTime.Now; DroneDTO droneDTO = await _pedidoService.DroneAtendePedido(pedido); if (droneDTO != null) { pedido.DroneId = droneDTO.Drone.Id; pedido.Situacao = (int)EStatusPedido.DRONE_ASSOCIADO; var calculo = (droneDTO.Distancia / droneDTO.Drone.Velocidade); var pedidos = await _context.Pedido.ToListAsync(); //Antes de colocar a data de finalizacao, verifica se o drone não tem outro pedido ainda nao finalizado //Caso tiver, considera a data de entrega a partir da data do pedido em aberto DateTime dataHoraEntrega = _pedidoService.BuscarDataEntregaPedidoAbertoDrone(pedidos, droneDTO.Drone.Id); pedido.DataHoraFinalizacao = dataHoraEntrega.AddHours(calculo); //Atualiza o drone com as novas capacidades de acordo com o pedido atendido _context.Entry(droneDTO.Drone).State = EntityState.Modified; } else { pedido.Situacao = (int)EStatusPedido.RECUSADO; pedido.DataHoraFinalizacao = DateTime.Now; } _context.Pedido.Add(pedido); await _context.SaveChangesAsync(); return(CreatedAtAction("GetPedido", new { id = pedido.Id }, pedido)); }