public async Task <bool> InserirPedido(PedidoParam pedido) { var novoPedido = new PedidoEntity { Id = Guid.NewGuid(), Peso = pedido.Peso, Latitude = pedido.Latitude, Longitude = pedido.Longitude, DataHora = pedido.DataHora, }; //calculoDistancia novoPedido.DistanciaDaEntrega = GeolocalizacaoService.CalcularDistanciaEmMetro(pedido.Latitude, pedido.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 _droneService.SelecionarDrone(novoPedido); novoPedido.Drone = drone; novoPedido.DroneId = drone != null ? drone.Id : novoPedido.DroneId; novoPedido.Status = PedidoStatus.PendenteEntrega.ToString(); await _pedidosRepository.Inserir(novoPedido); await _droneService.AtualizaDrone(drone); return(true); }
private static bool ValidaPedido(PedidoParam pedido, out PedidoEntity novoPedido, out double distancia) { novoPedido = new PedidoEntity { PesoGramas = pedido.Peso, Latitude = pedido.Latitude, Longitude = pedido.Longitude, DataHora = pedido.DataHora, }; //calculoDistancia distancia = GeolocalizacaoService.CalcularDistanciaEmMetro(pedido.Latitude, pedido.Longitude); if (!novoPedido.ValidaPedido(distancia)) { return(false); } 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.CalcularDistanciaEmMetro(pedido.Latitude, pedido.Longitude); if (!novoPedido.ValidaPedido(distancia)) { return(false); } var drone = await _droneService.SelecionarDrone(); if (drone == null) { novoPedido.Status = PedidoStatus.PendenteEntrega; 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); }