Exemple #1
0
        private async Task <ConsultaDronePedidoDTO> RetornConsultaDronePedido(DroneEntity drone)
        {
            var pedido = await _pedidosRepository.GetByDroneID(drone.Id);

            var idPedido = pedido == null ? (Guid?)null : pedido.Id;

            return(new ConsultaDronePedidoDTO
            {
                IdDrone = drone.Id,
                Situacao = drone.Status.ToString(),
                PedidoId = idPedido
            });
        }
        private async Task AtualizaStatusDrones(DroneEntity drone)
        {
            drone.DataAtualizacao ??= DateTime.Now;
            var total = (DateTime.Now - drone.DataAtualizacao).Value.TotalMinutes;

            switch (drone.Status)
            {
            case DroneStatus.Pronto:
                break;

            case DroneStatus.EmTransito:
                var pedidos = await _pedidosRepository.GetByDroneID(drone.Id);

                if (total > drone.AUTONOMIA_RECARGA)
                {
                    drone.Status          = DroneStatus.Pronto;
                    drone.DataAtualizacao = DateTime.Now;
                    await _dronesRepository.Atualizar(drone);

                    foreach (var pedido in pedidos)
                    {
                        pedido.Status = PedidoStatus.Entregue.ToString();
                        await _pedidosRepository.Atualizar(pedido);
                    }
                }

                if (total > drone.AUTONOMIA_MAXIMA)
                {
                    drone.Status          = DroneStatus.Carregando;
                    drone.DataAtualizacao = DateTime.Now;
                    await _dronesRepository.Atualizar(drone);

                    foreach (var pedido in pedidos)
                    {
                        pedido.Status = PedidoStatus.Entregue.ToString();
                        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;
            }
        }
Exemple #3
0
        public async Task LiberaDroneByStatusPagamentoPedido(PedidoEntity pedido)
        {
            var d = await _dronesRepository.GetByID(pedido.DroneId);

            var listpedidos = await _pedidosRepository.GetByDroneID(d.Id);

            var temPedidoComStatusPagamentoDiferenteDeAprov = listpedidos.Exists(e => e.StatusPagamento != StatusPagamentoEnum.Aprovado && e.Id != pedido.Id);

            if (!temPedidoComStatusPagamentoDiferenteDeAprov) //Se não tem  nenhum pedido vinculado ao Drone com seu status pagamento pendente de APROVADO, então não posso liberar o Drone
            {
                pedido.Status = PedidoStatus.EmTransito.ToString();
                await _pedidosRepository.Atualizar(pedido);

                d.Status          = DroneStatus.EmTransito;
                d.DataAtualizacao = DateTime.Now;
                await AtualizaDrone(d);
            }
        }
Exemple #4
0
        private async Task <ConsultaDronePedidoDTO> RetornConsultaDronePedido(DroneEntity drone)
        {
            var pedidos = await _pedidosRepository.GetByDroneID(drone.Id);

            return(new ConsultaDronePedidoDTO
            {
                IdDrone = drone.Id,
                Situacao = drone.Status.ToString(),
                Pedidos = pedidos
            });
        }
        public async Task <ConsultaDronePedidoDTO> RetornaConsultaDronePedido(DroneEntity drone)
        {
            var pedidos = await _pedidosRepository.GetByDroneID(drone.Id);

            List <ConsultaPedidoCompradorDTO> listPedidoComprador = null;

            if (pedidos != null)
            {
                listPedidoComprador = pedidos.Select(async d => await GetPedidosWithComprador(d))
                                      .Select(c => c.Result).ToList();
            }

            return(new ConsultaDronePedidoDTO
            {
                IdDrone = drone.Id,
                Situacao = drone.Status.ToString(),
                Pedidos = pedidos,
                PedidosComprador = listPedidoComprador
            });
        }
 public async Task <PedidoEntity> PedidoPorIdDrone(int droneId)
 {
     return(await _pedidosRepository.GetByDroneID(droneId));
 }