public ActionResult CadastroAmostras(LimiteControleViewModel model)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    var l = new Lote();
                    l.UsuarioAnalise = new Usuario();
                    l.Maquina        = new Maquina();

                    l.IdLote                   = model.CadastroLoteAmostra.IdLote;
                    l.DataHora                 = DateTime.Now;
                    l.QtdTotal                 = model.CadastroLoteAmostra.QtdTotal;
                    l.QtdReprovada             = model.CadastroLoteAmostra.QtdReprovada;
                    l.PercentualReprovado      = Convert.ToDecimal(l.QtdReprovada) / Convert.ToDecimal(l.QtdTotal);
                    l.Comentario               = model.CadastroLoteAmostra.Comentario;
                    l.UsuarioAnalise.IdUsuario = model.CadastroLoteAmostra.UsuarioAnalise.IdUsuario;
                    l.TipoLote                 = model.CadastroLoteAmostra.TipoLote;
                    l.Maquina.IdMaquina        = model.CadastroLoteAmostra.IdMaquina;

                    new LoteDAL().CadastrarLoteAmostra(l);

                    TempData["Sucesso"]  = true;
                    TempData["Mensagem"] = $"Lote {model.CadastroLoteAmostra.IdLote} cadastrado com sucesso";

                    ModelState.Clear();
                }
            }
            catch (Exception e)
            {
                TempData["Sucesso"]  = false;
                TempData["Mensagem"] = $"Erro: {e.Message}";
            }
            return(CadastroAmostras());
        }
        // GET: AreaRestrita/Lote
        public ActionResult CadastroAmostras()
        {
            var model = new LimiteControleViewModel();

            model.CadastroLoteAmostra = new CadastroLoteAmostraViewModel();
            model.CadastroLoteAmostra.UsuarioAnalise = new Usuario();

            try
            {
                model.ConsultaLoteAmostra = ConsultarAmostras();

                model.CadastroLoteAmostra.TipoCarta      = new LimiteControle().TipoCarta;
                model.CadastroLoteAmostra.UsuarioAnalise = (Usuario)Session["usuario"];
                model.CadastroLoteAmostra.TipoLote       = Entidades.Enuns.TipoLote.Amostra;
                model.CadastroLoteAmostra.QtdTotal       = model.ConsultaLoteAmostra.Count > 0 ? model.ConsultaLoteAmostra.FirstOrDefault().QtdTotal : 0;
                model.CadastroLoteAmostra.IdMaquina      = model.ConsultaLoteAmostra.Count > 0 ? model.ConsultaLoteAmostra.FirstOrDefault().Maquina.IdMaquina : 0;
            }
            catch (Exception e)
            {
                TempData["Sucesso"]  = false;
                TempData["Mensagem"] = "Erro: " + e.Message;
            }

            return(View(model));
        }
        private LimiteControleViewModel CalcularLimiteControle()
        {
            try
            {
                var model = new LimiteControleViewModel();
                model.LimiteControle = new LimiteControle();

                model.ConsultaLoteAmostra = ConsultarAmostras();

                double totalDefeitos = model.ConsultaLoteAmostra.Sum(m => m.QtdReprovada);
                double qtdAmostras   = model.ConsultaLoteAmostra.Count();
                double qtdInspecao   = model.ConsultaLoteAmostra.FirstOrDefault().QtdTotal;
                double p             = Math.Round(totalDefeitos / (qtdAmostras * qtdInspecao), 4);

                model.LimiteControle.LC  = Convert.ToDecimal(p);
                model.LimiteControle.LSC = Math.Round(Convert.ToDecimal(p + 3 * Math.Sqrt((p * (1 - p)) / qtdAmostras)), 4);
                model.LimiteControle.LIC = Math.Round(Convert.ToDecimal(p - 3 * Math.Sqrt((p * (1 - p)) / qtdAmostras)), 4);

                return(model);
            }
            catch (Exception e)
            {
                throw e;
            }
        }
        public ActionResult ConsultaAmostras(int id)
        {
            var model = new LimiteControleViewModel();

            model.ConsultaLoteAmostra = ConsultarAmostras(id);
            model.LimiteControle      = new LimiteDAL().ConsultarLimiteControle(null, id).FirstOrDefault();

            return(View(model));
        }