public async Task LiberaDrone() { var listaDrones = await _dronesRepository.GetByStatus(DroneStatus.Pronto.ToString()); foreach (var item in listaDrones) { var listPedidosDrone = await _droneQuery.RetornaConsultaDronePedido(item); if (!TemPedido(listPedidosDrone)) //Se o drone ainda não tem pedido, então ele não será atualizado o seu status, pois não tem entrega para efetuar { continue; } if (listPedidosDrone != null) { foreach (var p in listPedidosDrone.Pedidos) { p.Status = PedidoStatus.EmTransito.ToString(); await _pedidosRepository.Atualizar(p); } } item.Status = DroneStatus.EmTransito; item.DataAtualizacao = DateTime.Now; await AtualizaDrone(item); } }
private async Task AtualizaStatusDrones(DroneEntity drone) { drone.DataAtualizacao ??= DateTime.Now; var total = (drone.DataAtualizacao - DateTime.Now).Value.TotalMinutes; switch (drone.Status) { case DroneStatus.Pronto: break; case DroneStatus.EmTransito: var pedido = await _pedidosRepository.GetByDroneID(drone.Id); if (total > drone.AUTONOMIA_RECARGA) { drone.Status = DroneStatus.Pronto; drone.DataAtualizacao = DateTime.Now; await _dronesRepository.Atualizar(drone); pedido.Status = PedidoStatus.Entregue; await _pedidosRepository.Atualizar(pedido); } if (total > drone.AUTONOMIA_MAXIMA) { drone.Status = DroneStatus.Carregando; drone.DataAtualizacao = DateTime.Now; await _dronesRepository.Atualizar(drone); pedido.Status = PedidoStatus.Entregue; await _pedidosRepository.Atualizar(pedido); } break; case DroneStatus.Carregando: if (total > drone.TEMPO_RECARGA_MINUTOS) { drone.Status = DroneStatus.Pronto; drone.DataAtualizacao = DateTime.Now; await _dronesRepository.Atualizar(drone); } break; default: drone.Status = DroneStatus.Pronto; drone.DataAtualizacao = DateTime.Now; await _dronesRepository.Atualizar(drone); break; } }
public async Task AtualizaPedido(PedidoEntity pedido) { await _pedidosRepository.Atualizar(pedido); }