Beispiel #1
0
        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);
            }
        }
Beispiel #2
0
        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);
 }