/// <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);
        }
Ejemplo n.º 2
0
        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);
     }
 }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        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));
        }
Ejemplo n.º 6
0
        //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
            };
        }