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); }
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); }
public async Task <UsuarioEntity> GetSingleByLogin(string login) { return(await _usuariosRepository.GetSingleByLogin(login)); }