private bool TemPedido(ConsultaDronePedidoDTO listPedidosDrone) { if (listPedidosDrone.Pedidos == null || listPedidosDrone.Pedidos.Count().Equals(0)) //Se o drone não tem pedidos relacionados, então já pego ele e saio do foreach { return(false); } return(true); }
private bool SuportaPeso(ConsultaDronePedidoDTO listDronePedidos, DroneEntity drone, PedidoEntity pedidoNovo) { bool suporta = false; var pesoDeTodosPedidos = listDronePedidos != null && listDronePedidos.Pedidos != null && listDronePedidos.Pedidos.Count > 0 ? (listDronePedidos.Pedidos.Sum(s => s.Peso) + pedidoNovo.Peso) : pedidoNovo.Peso; if (pesoDeTodosPedidos <= drone.Capacidade) { suporta = true; } return(suporta); }
private bool TemAutonomiaSuficiente(ConsultaDronePedidoDTO listDronePedidos, DroneEntity drone, PedidoEntity pedidoNovo) { bool temAuto = false; var distanciaDeTodosPedidosEmMetros = listDronePedidos != null && listDronePedidos.Pedidos != null && listDronePedidos.Pedidos.Count > 0 ? (listDronePedidos.Pedidos.Sum(s => s.DistanciaDaEntrega) + pedidoNovo.DistanciaDaEntrega) : pedidoNovo.DistanciaDaEntrega; var distanciaDeTodosPedidosKM = distanciaDeTodosPedidosEmMetros / 1000; var tempoTotalDeViagemParaTodosPedidosEmMinutos = (distanciaDeTodosPedidosKM * 60) / drone.Velocidade; //Multiplicando o KM por 60 minutos para representar Km/h e depois divido pela velocidade máxima do drone if ((tempoTotalDeViagemParaTodosPedidosEmMinutos * 2) <= drone.Autonomia) // Multiplico por 2 porque tem a ida e a volta, assim saberei o tempo total gasto em Minutos para entregar os pedidos { temAuto = true; } return(temAuto); }