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 novoPedido = new PedidoEntity { PesoGramas = pedido.Peso, Latitude = pedido.Latitude, Longitude = pedido.Longitude, DataHora = pedido.DataHora, }; //calculoDistancia var distancia = GeolocalizacaoService.CalcularDistanciaEmKm(pedido.Latitude, pedido.Longitude); if (!novoPedido.ValidaPedido(distancia)) { return(false); } var drone = await _droneService.SelecionarDrone(); if (drone == null) { novoPedido.Status = PedidoStatus.PendenteEntrega; novoPedido.DroneId = null; await _pedidosRepository.Inserir(novoPedido); return(true); } novoPedido.Drone = drone; novoPedido.DroneId = drone.Id; novoPedido.Status = PedidoStatus.EmTransito; await _pedidosRepository.Inserir(novoPedido); await _droneService.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); }