예제 #1
0
        public async Task <bool> Insert(Pedido pedido)
        {
            var dronesSitema = await _droneRepository.GetAll();

            if (!dronesSitema.Any(d => d.Capacidade >= pedido.Peso))
            {
                return(await Task.Run(() => false));
            }

            //Deve colocar a regra de criação de pedido

            return(await _repositoryPedido.Insert(pedido));
        }
예제 #2
0
        public async Task <ActionResult <IEnumerable <SituacaoDroneDTO> > > GetDrone()
        {
            var drones = await _droneRepository.GetAll();

            IList <SituacaoDroneDTO> situacaoDrones = new List <SituacaoDroneDTO>();

            foreach (var drone in drones)
            {
                SituacaoDroneDTO situacaoDrone = new SituacaoDroneDTO();
                situacaoDrone.Drone = drone;

                var droneItinerario = _droneItinerarioRepository.GetAll().Result.SingleOrDefault(x => x.DroneId == drone.Id);

                if (droneItinerario == null)
                {
                    situacaoDrone.StatusDrone = EnumStatusDrone.Disponivel.ToString();
                }
                else
                {
                    situacaoDrone.StatusDrone = droneItinerario.StatusDrone.ToString();
                }

                var pedidos = await _pedidoRepository.GetAll();

                situacaoDrone.Pedidos = pedidos.Where(p => p.Drone != null && p.Status != EnumStatusPedido.Entregue && p.Drone.Id == drone.Id).ToList();;

                situacaoDrones.Add(situacaoDrone);
            }

            return(Ok(situacaoDrones));
        }
예제 #3
0
        public async Task <bool> Insert(Pedido pedido)
        {
            var dronesSitema = await _droneRepository.GetAll();

            if (!dronesSitema.Any(d => d.Capacidade >= pedido.Peso))
            {
                return(await Task.Run(() => false)); //"Nenhum drone com capacidade ou nenhum drone disponivel"
            }
            double distanciaEmKMIdaEVolta = CalcularDistanciaEmKilometros((double)pedido.Latitude, (double)pedido.Longitude);

            if (!dronesSitema.ToList().Any(d => d.Autonomia >= TempoDoTrajetoEmMinutos(distanciaEmKMIdaEVolta, d.Velocidade)))
            {
                return(await Task.Run(() => false)); //"Nenhum drone com autonomia disponivel"
            }
            pedido.InformarHoraPedido(DateTime.Now);
            pedido.InformarPrevisaoEntrega(DateTime.Now);
            pedido.InformarStatus(EnumStatusPedido.AguardandoEntregador);

            return(await _repositoryPedido.Insert(pedido));
        }
예제 #4
0
        public async Task <bool> Insert(Pedido pedido)
        {
            var dronesSitema = await _droneRepository.GetAll();

            var claims          = _userService.GetClaimsIdentity();
            var userAutenticate = claims.Select(c => c.Value).FirstOrDefault();

            if (!dronesSitema.Any(d => d.Capacidade >= pedido.Peso))
            {
                return(await Task.Run(() => false));
            }

            if (await _clienteRepository.GetByUserName(userAutenticate) == null)
            {
                return(await Task.Run(() => false));
            }

            pedido.Cliente = await _clienteRepository.GetByUserName(userAutenticate);

            return(await _repositoryPedido.Insert(pedido));
        }
예제 #5
0
        public async Task <List <Drone> > BuscarDrone()
        {
            var result = await _droneRepository.GetAll();

            result.ForEach(drone =>
            {
                drone.PedidosDrones.ForEach(pedidos =>
                {
                    var pedido = _pedidoRepository.GetPedidoById(pedidos.PedidoId).Result;
                    drone.Pedidos.Add(pedido);
                });
            });
            return(result);
        }
예제 #6
0
 public async Task <List <Drone> > BuscarDrone()
 {
     return(await _droneRepository.GetAll());
 }
 public async Task <IList <Drone> > GetAll()
 {
     return(await _droneRepository.GetAll());
 }
        public void TestaRetornoDeTodosDrone()
        {
            var droneResult = _droneRepository.GetAll().Result;

            Assert.NotNull(droneResult);
        }
예제 #9
0
 public ICollection <Drone> GetDetachedDrones()
 {
     return(_droneRepository.GetAll(x => string.IsNullOrEmpty(x.OwnerId)));
 }