public async Task <bool> InserirPedido(PedidoParam pedido)
        {
            var userDono = await _usuariosRepository.GetSingleByLogin(pedido.Login);

            var novoPedido = new PedidoEntity
            {
                Id          = Guid.NewGuid(),
                Peso        = pedido.Peso,
                DataHora    = pedido.DataHora,
                CompradorId = userDono.Id
            };

            //calculoDistancia
            novoPedido.DistanciaDaEntrega = GeolocalizacaoService.CalcularDistanciaEmMetro(userDono.Latitude, userDono.Longitude);
            //var distanciaEmMilhas = GeolocalizacaoService.distance(pedido.Latitude, pedido.Longitude, 'M');
            //var distanciaEmMilhasNauticas = GeolocalizacaoService.distance(pedido.Latitude, pedido.Longitude, 'N');

            if (!novoPedido.ValidaPedido())
            {
                return(false);
            }

            var drone = await _droneCommand.SelecionarDrone(novoPedido);

            novoPedido.Drone   = drone;
            novoPedido.DroneId = drone != null ? drone.Id : novoPedido.DroneId;
            novoPedido.Status  = PedidoStatus.PendenteEntrega.ToString();
            await _pedidosRepository.Inserir(novoPedido);

            await _droneCommand.AtualizaDrone(drone);

            return(true);
        }
示例#2
0
        public async Task <bool> InserirPedido(PedidoParam pedido)
        {
            var userDono = await _usuariosRepository.GetSingleByLogin(pedido.Login);

            var novoPedido = pedido.ConvertTo <PedidoEntity>();

            novoPedido.Id          = Guid.NewGuid();
            novoPedido.CompradorId = userDono.Id;


            //calculoDistancia
            novoPedido.DistanciaDaEntrega = GeolocalizacaoService.CalcularDistanciaEmMetro(userDono.Latitude, userDono.Longitude);

            if (!novoPedido.ValidaPedido())
            {
                return(false);
            }

            var drone = await _droneCommand.SelecionarDrone(novoPedido);

            novoPedido.Drone   = drone;
            novoPedido.DroneId = drone != null ? drone.Id : novoPedido.DroneId;

            novoPedido.Status = PedidoStatus.PendenteEntrega.ToString();
            await _pedidosRepository.Inserir(novoPedido);

            var pagamentoCartao = novoPedido.ConvertTo <PagamentoCartaoParam>();

            pagamentoCartao.IdPedido = novoPedido.Id;

            await _pagamentoExternalContext.EfetuarPagamentoCartao(pagamentoCartao);

            await _droneCommand.AtualizaDrone(drone);

            return(true);
        }
示例#3
0
 public async Task <UsuarioEntity> GetSingleByLogin(string login)
 {
     return(await _usuariosRepository.GetSingleByLogin(login));
 }