/// <summary> /// Gera a saída do problema para escrita na planilha /// </summary> /// <param name="entrada">Instância de <see cref="EntradaViewModel"/> contendo os dados informados na planilha de dados</param> /// <returns>Instancia de <see cref="SaidaViewModel"/> com a quantidade de produção diária para atender a demanda</returns> private SaidaViewModel GeraSaidaViewModel(EntradaViewModel entrada) { var saidaViewModel = new SaidaViewModel { Produtos = entrada.Produtos }; saidaViewModel.Produtos.ForEach(produto => { foreach (var diaSemana in Enum.GetValues(typeof(DiaDaSemana))) { var diaSemanaEnum = (DiaDaSemana)diaSemana; var producaoHR = Convert.ToInt32(_grbModel.GetVarByName(produto.GetNomeVariavel(diaSemanaEnum)).X); var producaoHE = Convert.ToInt32(_grbModel.GetVarByName(produto.GetNomeVariavel(diaSemanaEnum, true)).X); var excesso = Convert.ToInt32(_grbModel.GetVarByName(produto.GetNomeVariavel(diaSemanaEnum, isExcesso: true)).X); if (producaoHE > 0) { saidaViewModel.TeveHoraExtra[diaSemanaEnum] = true; } produto.Producao[diaSemanaEnum] = producaoHR + producaoHE; produto.Excesso[diaSemanaEnum] = excesso; } }); return(saidaViewModel); }
public ActionResult Create() { ViewBag.Ensinos = db.Ensinos; ViewBag.Situacao = db.Situacao; var model = new SaidaViewModel(); return(View(model)); }
/// <summary> /// Executa a otimização /// </summary> private static void ExecutaOtimizacao() { try { var _solver = new GurobiSolver(); _saidaViewModel = _solver.Run(_entradaViewModel); } catch (GRBException e) { Console.WriteLine("Error code: " + e.ErrorCode + ". " + e.Message); } }
public SaidaViewModel EncontrarMelhorOpcao(EntradaViewModel entrada) { var dia = ObterDiaSemana(entrada.DataBanho); var diaUtil = _repositorio.ObterDiasUteis().Contains(dia); var valores = CalcularPreco(entrada, diaUtil); var valoresOrdenados = valores.OrderBy(pb => pb.PrecoBanho).ToList(); var saida = new SaidaViewModel(); if (valoresOrdenados[0].PrecoBanho != valoresOrdenados[1].PrecoBanho) { saida.Canil = valoresOrdenados[0].Nome; saida.Preco = valoresOrdenados[0].PrecoBanho; } if (valoresOrdenados[0].PrecoBanho == valoresOrdenados[1].PrecoBanho && valoresOrdenados[0].PrecoBanho != valoresOrdenados[2].PrecoBanho) { var duasMenoresDistancias = new List <double> { valoresOrdenados[0].Distancia, valoresOrdenados[1].Distancia }; var menorDistancia = duasMenoresDistancias.Min(); var petShop = valores.FirstOrDefault(ps => ps.Distancia == menorDistancia); saida.Canil = petShop.Nome; saida.Preco = petShop.PrecoBanho; } if (valoresOrdenados[0].PrecoBanho == valoresOrdenados[1].PrecoBanho && valoresOrdenados[0].PrecoBanho == valoresOrdenados[2].PrecoBanho) { var distancas = new List <double> { valoresOrdenados[0].Distancia, valoresOrdenados[1].Distancia, valoresOrdenados[2].Distancia }; var menorDistancia = distancas.Min(); var petShop = valores.FirstOrDefault(ps => ps.Distancia == menorDistancia); saida.Canil = petShop.Nome; saida.Preco = petShop.PrecoBanho; } return(saida); }
public ActionResult Create(SaidaViewModel model) { if (ModelState.IsValid) { ///CADASTRO DE ALUNOS NO BANCO var cadastro2 = new Aluno(); cadastro2.Nome = model.Nome; cadastro2.NomeMae = model.NomeMae; cadastro2.dataNasc = model.dataNasc; db.Alunos.Add(cadastro2); db.SaveChanges(); ///CADASTRO DE SAIDAS var cadastro = new Saida(); cadastro.codAluno = cadastro2.codAluno; cadastro.codEnsino = model.codEnsino; cadastro.codEscola = 1; cadastro.ano = model.ano; cadastro.serie = model.serie; cadastro.local = model.local; cadastro.codSituacao = 1; cadastro.statusAluno = model.statusAluno; cadastro.anoStatus = model.anoStatus; db.Saidas.Add(cadastro); db.SaveChanges(); return(RedirectToAction("Create")); } // Se ocorrer um erro retorna para pagina ViewBag.Saidas = db.Saidas; return(View(model)); }
//RETIRAR ESSE MÉTODO private static void MockSaida() { List <ProdutoViewModel> produtos = new List <ProdutoViewModel>(); foreach (var produto in _entradaViewModel.Produtos) { var produtoSaida = new ProdutoViewModel() { Nome = produto.Nome }; for (int i = 1; i < 7; i++) { produtoSaida.Producao.Add((DiaDaSemana)i, i * 10); } produtos.Add(produtoSaida); } _saidaViewModel = new SaidaViewModel { Produtos = produtos }; }