public static DroneDto CreateFromEntity(DroneEntity dbEntity) { return(new DroneDto { iddrones = dbEntity.iddrones, ... });
public async Task <DroneEntity> SelecionarDrone(PedidoEntity pedido) { DroneEntity drone = null; var listaDrones = await _dronesRepository.GetAll(); foreach (var item in listaDrones) { await AtualizaStatusDrones(item); //Aproveito para atualizar o status de cada drone if (!Disponivel(item)) //Se o drone não encontra-se disponível, então pula para verificar a disponibilidade do próximo { continue; } var listPedidosDrone = await _droneQuery.RetornaConsultaDronePedido(item); if (SuportaPeso(listPedidosDrone, item, pedido) && TemAutonomiaSuficiente(listPedidosDrone, item, pedido)) { drone = item; break; } } return(drone); }
public async Task Incluir(DroneEntity drone) { var model = drone.ConvertTo <Drone>(); _connection.CreateTableIfNotExists <Drone>(); await _connection.InsertAsync(model); }
public async Task Incluir(DroneEntity drone) { using (SqlConnection conexao = new SqlConnection( _configuracoes.GetConnectionString(_configConnectionString))) { await conexao.InsertAsync <DroneEntity>(drone); } }
private async Task <ConsultaDronePedidoDTO> RetornConsultaDronePedido(DroneEntity drone) { return(new ConsultaDronePedidoDTO { IdDrone = drone.Id, Situacao = drone.Status.ToString() }); }
public async Task Atualizar(DroneEntity drone) { var model = drone.ConvertTo <Drone>(); _connection.CreateTableIfNotExists <Drone>(); await _connection.UpdateAsync(model); }
private async Task AtualizaStatusDrones(DroneEntity drone) { drone.DataAtualizacao ??= DateTime.Now; var total = (DateTime.Now - drone.DataAtualizacao).Value.TotalMinutes; switch (drone.Status) { case DroneStatus.Pronto: break; case DroneStatus.EmTransito: var pedidos = await _pedidosRepository.GetByDroneID(drone.Id); if (total > drone.AUTONOMIA_RECARGA) { drone.Status = DroneStatus.Pronto; drone.DataAtualizacao = DateTime.Now; await _dronesRepository.Atualizar(drone); foreach (var pedido in pedidos) { pedido.Status = PedidoStatus.Entregue.ToString(); await _pedidosRepository.Atualizar(pedido); } } if (total > drone.AUTONOMIA_MAXIMA) { drone.Status = DroneStatus.Carregando; drone.DataAtualizacao = DateTime.Now; await _dronesRepository.Atualizar(drone); foreach (var pedido in pedidos) { pedido.Status = PedidoStatus.Entregue.ToString(); await _pedidosRepository.Atualizar(pedido); } } break; case DroneStatus.Carregando: if (total > drone.TEMPO_RECARGA_MINUTOS) { drone.Status = DroneStatus.Pronto; drone.DataAtualizacao = DateTime.Now; await _dronesRepository.Atualizar(drone); } break; default: drone.Status = DroneStatus.Pronto; drone.DataAtualizacao = DateTime.Now; await _dronesRepository.Atualizar(drone); break; } }
public async Task Incluir(DroneEntity drone) { var model = drone.ConvertTo <Drone>(); using var conexao = await _dbFactory.OpenAsync(); conexao.CreateTableIfNotExists <Drone>(); await conexao.InsertAsync(model); }
public async Task AtualizaDrone(DroneEntity drone) { if (drone == null) { return; } await _dronesRepository.Atualizar(drone); }
private async Task <ConsultaDronePedidoDTO> RetornConsultaDronePedido(DroneEntity drone) { var pedidos = await _pedidosRepository.GetByDroneID(drone.Id); return(new ConsultaDronePedidoDTO { IdDrone = drone.Id, Situacao = drone.Status.ToString(), Pedidos = pedidos }); }
private bool SuportaPeso(ConsultaDronePedidoDTO listDronePedidos, DroneEntity drone, PedidoEntity pedidoNovo) { bool suporta = false; var pesoDeTodosPedidos = listDronePedidos != null && listDronePedidos.Pedidos != null && listDronePedidos.Pedidos.Count > 0 ? (listDronePedidos.Pedidos.Sum(s => s.Peso) + pedidoNovo.Peso) : pedidoNovo.Peso; if (pesoDeTodosPedidos <= drone.Capacidade) { suporta = true; } return(suporta); }
private async Task <ConsultaDronePedidoDTO> RetornConsultaDronePedido(DroneEntity drone) { var pedido = await _pedidosRepository.GetByDroneID(drone.Id); var idPedido = pedido == null ? (Guid?)null : pedido.Id; return(new ConsultaDronePedidoDTO { IdDrone = drone.Id, Situacao = drone.Status.ToString(), PedidoId = idPedido }); }
protected DroneEntity ConvertModelToModelEntity(Drone drone) { DroneEntity p = new DroneEntity() { Id = drone.Id, Status = RetornaStatus(drone.Status), AutonomiaMinitos = drone.Autonomia, CapacidadeGamas = drone.Capacidade, VelocidadeKmH = drone.Velocidade, DataAtualizacao = drone.DataAtualizacao }; return(p); }
private bool TemAutonomiaSuficiente(ConsultaDronePedidoDTO listDronePedidos, DroneEntity drone, PedidoEntity pedidoNovo) { bool temAuto = false; var distanciaDeTodosPedidosEmMetros = listDronePedidos != null && listDronePedidos.Pedidos != null && listDronePedidos.Pedidos.Count > 0 ? (listDronePedidos.Pedidos.Sum(s => s.DistanciaDaEntrega) + pedidoNovo.DistanciaDaEntrega) : pedidoNovo.DistanciaDaEntrega; var distanciaDeTodosPedidosKM = distanciaDeTodosPedidosEmMetros / 1000; var tempoTotalDeViagemParaTodosPedidosEmMinutos = (distanciaDeTodosPedidosKM * 60) / drone.Velocidade; //Multiplicando o KM por 60 minutos para representar Km/h e depois divido pela velocidade máxima do drone if ((tempoTotalDeViagemParaTodosPedidosEmMinutos * 2) <= drone.Autonomia) // Multiplico por 2 porque tem a ida e a volta, assim saberei o tempo total gasto em Minutos para entregar os pedidos { temAuto = true; } return(temAuto); }
public async Task Atualizar(DroneEntity drone) { using (SqlConnection conexao = new SqlConnection( _configuracoes.GetConnectionString(_configConnectionString))) { var dataAtualizacao = DateTime.Now; var query = @"UPDATE Dbo.Drone SET Status = @status, DataAtualizacao = @dataAtualizacao WHERE Id = @id "; await conexao.ExecuteAsync(query, new { drone.DescricaoStatus, dataAtualizacao, drone.Id } ); } }
private async Task AtualizaStatusDrones(DroneEntity drone) { drone.DataAtualizacao ??= DateTime.Now; var total = (drone.DataAtualizacao - DateTime.Now).Value.TotalMinutes; switch (drone.Status) { case DroneStatus.Pronto: break; case DroneStatus.EmTransito: if (total > drone.AUTONOMIA_RECARGA) { drone.Status = DroneStatus.Pronto; drone.DataAtualizacao = DateTime.Now; await _dronesRepository.Atualizar(drone); } if (total > drone.AUTONOMIA_MAXIMA) { drone.Status = DroneStatus.Carregando; drone.DataAtualizacao = DateTime.Now; await _dronesRepository.Atualizar(drone); } break; case DroneStatus.Carregando: if (total > drone.TEMPO_RECARGA_MINUTOS) { drone.Status = DroneStatus.Pronto; drone.DataAtualizacao = DateTime.Now; await _dronesRepository.Atualizar(drone); } break; default: drone.Status = DroneStatus.Pronto; drone.DataAtualizacao = DateTime.Now; await _dronesRepository.Atualizar(drone); break; } }
public async Task <ConsultaDronePedidoDTO> RetornaConsultaDronePedido(DroneEntity drone) { var pedidos = await _pedidosRepository.GetByDroneID(drone.Id); List <ConsultaPedidoCompradorDTO> listPedidoComprador = null; if (pedidos != null) { listPedidoComprador = pedidos.Select(async d => await GetPedidosWithComprador(d)) .Select(c => c.Result).ToList(); } return(new ConsultaDronePedidoDTO { IdDrone = drone.Id, Situacao = drone.Status.ToString(), Pedidos = pedidos, PedidosComprador = listPedidoComprador }); }
public async Task AtualizaDrone(DroneEntity drone) { await _dronesRepository.Atualizar(drone); }
public Task Atualizar(DroneEntity drone) { _drones.FirstOrDefault().DataAtualizacao = DateTime.Now; return(Task.CompletedTask); }
public Task Incluir(DroneEntity drone) { _drones.Add(drone); return(Task.CompletedTask); }
private bool Disponivel(DroneEntity drone) { return(drone.Status.Equals(DroneStatus.Pronto)); }