public ActionResult GuardarTerminarDecreto1072()
        {
            List <CriteriosViewModelDecreto1072> list = new List <CriteriosViewModelDecreto1072>();

            try
            {
                Empresa     empresa     = db.Tb_Empresa.Find(AccountData.NitEmpresa);
                TipoEmpresa tipoEmpresa = empresa.TipoEmpresa;
                if (empresa.Empr_Ttrabaja > 0 && (tipoEmpresa == null || tipoEmpresa.Categoria < 3))
                {
                    tipoEmpresa = db.Tb_TipoEmpresa.FirstOrDefault(t => t.RangoMinimoTrabajadores <= empresa.Empr_Ttrabaja && t.RangoMaximoTrabajadores >= empresa.Empr_Ttrabaja);
                }
                AutoevaluacionDecreto1072 autoevaluaciondecreto1072 = db.Tb_AutoEvaluacionDecreto1072.FirstOrDefault(a => a.Empr_Nit == AccountData.NitEmpresa && !a.Finalizada);
                if (autoevaluaciondecreto1072 != null)
                {
                    int q  = db.Tb_cumplimientoDecreto1072.Count(c => c.AeDecreto_Id == autoevaluaciondecreto1072.AeDecreto_Id);
                    int q2 = db.Tb_ItemEstandarDecreto1072.Count(ie => tipoEmpresa.Categoria == 0 || ie.Categoria <= tipoEmpresa.Categoria && ie.CategoriaExcepcion != tipoEmpresa.Categoria && ie.CategoriaExcepcion != tipoEmpresa.Categoria);
                    if (q2 > q)
                    {
                        return(RedirectToAction("AutoevaluacionDecreto1072", new { textError = "Esta evaluación aún no ha sido finalizada" }));
                    }
                    autoevaluaciondecreto1072.Ae_Fin          = DateTime.Now;
                    autoevaluaciondecreto1072.Finalizada      = true;
                    db.Entry(autoevaluaciondecreto1072).State = EntityState.Modified;
                    db.SaveChanges();
                }
            }
            catch (Exception ex)
            {
                ViewBag.TextError = ex.Message;
                return(RedirectToAction("AutoevaluacionDecreto1072"));
            }

            return(RedirectToAction("Index", "Home"));
        }
 /// <summary>
 /// Inicializa una nueva instancia de la <see cref="AutoEvaluacionViewModelDecreto1072"/> clase.
 /// </summary>
 public AutoEvaluacionViewModelDecreto1072()
 {
     AutoEvaluacionDecreto1072 = new AutoevaluacionDecreto1072();
 }
        public ActionResult CumplimientoDecreto1072([Bind(Include = "AutoEvaluacionId,Cumple,Nocumple,Justifica,Nojustifica,Id,Registro,Observaciones,ItemEstandarId,Nit")] CumplimientoViewModelDecreto1072 model)
        {
            try
            {
                AutoevaluacionDecreto1072 autoevaluaciondecreto1072 = db.Tb_AutoEvaluacionDecreto1072.FirstOrDefault(a => a.Empr_Nit == AccountData.NitEmpresa && !a.Finalizada);
                CumplimientoDecreto1072   cumplimientodecreto1072;
                if (model.Id == 0)
                {
                    cumplimientodecreto1072 =
                        new CumplimientoDecreto1072
                    {
                        CumpDecreto_Id   = model.Id,
                        Cump_NoAplica    = model.NoAplica,
                        Cump_Cumple      = model.Cumple,
                        Cump_Nocumple    = model.Nocumple,
                        Cump_Justifica   = model.Justifica,
                        Cump_Nojustifica = model.Nojustifica,
                        Cump_Observ      = model.Observaciones,
                        Cump_Registro    = DateTime.Now,
                        Empr_Nit         = model.Nit,
                        IeDecreto_Id     = model.ItemEstandarId,
                        AeDecreto_Id     = autoevaluaciondecreto1072.AeDecreto_Id,
                    };
                    db.Tb_cumplimientoDecreto1072.Add(cumplimientodecreto1072);
                }
                else
                {
                    cumplimientodecreto1072 = db.Tb_cumplimientoDecreto1072.Find(model.Id);
                    cumplimientodecreto1072.Cump_NoAplica    = model.NoAplica;
                    cumplimientodecreto1072.CumpDecreto_Id   = model.Id;
                    cumplimientodecreto1072.Cump_Cumple      = model.Cumple;
                    cumplimientodecreto1072.Cump_Nocumple    = model.Nocumple;
                    cumplimientodecreto1072.Cump_Justifica   = model.Justifica;
                    cumplimientodecreto1072.Cump_Nojustifica = model.Nojustifica;
                    cumplimientodecreto1072.Cump_Observ      = model.Observaciones;
                    cumplimientodecreto1072.Cump_Registro    = DateTime.Now;
                    cumplimientodecreto1072.Empr_Nit         = model.Nit;
                    cumplimientodecreto1072.IeDecreto_Id     = model.ItemEstandarId;
                    cumplimientodecreto1072.AeDecreto_Id     = autoevaluaciondecreto1072.AeDecreto_Id;
                    db.Entry(cumplimientodecreto1072).State  = EntityState.Modified;
                }
                db.SaveChanges();
                model.Id            = cumplimientodecreto1072.CumpDecreto_Id;
                ViewBag.TextExitoso = "Se guardaron los datos exitosamente";
            }
            catch (Exception ex)
            {
                ViewBag.TextError = ex.Message;
                ItemEstandarDecreto1072 item = db.Tb_ItemEstandarDecreto1072.Find(model.ItemEstandarId);
                model.ItemEstandar =
                    new ElementoViewModelDecreto1072
                {
                    Id             = item.Iest_Id,
                    Descripcion    = item.Iest_Desc,
                    Observaciones  = item.Iest_Observa,
                    Porcentaje     = item.Iest_Porcentaje,
                    Recurso        = item.Iest_Recurso,
                    Registro       = item.Iest_Registro,
                    Reursob        = item.Iest_Rescursob,
                    Verificar      = item.Iest_Verificar,
                    Video          = item.Iest_Video,
                    Periodo        = item.Iest_Peri,
                    MasInformacion = item.Iest_MasInfo
                };
                return(View(model));
            }

            return(RedirectToAction("AutoevaluacionDecreto1072"));
        }
        public ActionResult AutoevaluacionDecreto1072(string textError = "")
        {
            List <CicloPHVAViewModelDecreto1072> list = new List <CicloPHVAViewModelDecreto1072>();

            try
            {
                ViewBag.TextError = textError;
                Empresa     empresa     = db.Tb_Empresa.Find(AccountData.NitEmpresa);
                TipoEmpresa tipoEmpresa = empresa.TipoEmpresa;
                if (empresa.Empr_Ttrabaja > 0 && (tipoEmpresa == null || tipoEmpresa.Categoria < 3))
                {
                    tipoEmpresa = db.Tb_TipoEmpresa.FirstOrDefault(t => t.Categoria < 4 && empresa.Empr_Ttrabaja > 0);
                }
                AutoevaluacionDecreto1072 autoevaluacionDecreto1072 = db.Tb_AutoEvaluacionDecreto1072.FirstOrDefault(a => a.Empr_Nit == AccountData.NitEmpresa && !a.Finalizada);
                if (autoevaluacionDecreto1072 == null)
                {
                    db.Tb_AutoEvaluacionDecreto1072.Add(
                        new AutoevaluacionDecreto1072
                    {
                        Empr_Nit  = AccountData.NitEmpresa,
                        Ae_Inicio = DateTime.Now,
                        Ae_Nom    = "Autoevaluación Decreto1072"
                    });
                    db.SaveChanges();
                }
                list =
                    db.Tb_cicloPHVADecreto1072
                    .Where(cp => cp.Categoria < 4)
                    .Select(cp =>
                            new CicloPHVAViewModelDecreto1072
                {
                    Id                   = cp.Id,
                    Nombre               = cp.Nombre,
                    Description          = cp.Description,
                    CriteriosDecreto1072 = cp.CriteriosDecreto1072
                                           .Where(c => cp.Id == c.CicloDecreto1072_Id && tipoEmpresa.Categoria == 0 || c.Categoria < 4)
                                           .Select(c =>
                                                   new CriteriosViewModelDecreto1072
                    {
                        Id                    = c.Crit_Id,
                        Nombre                = c.Crit_Nom,
                        Porcentaje            = c.Crit_Porcentaje,
                        Registro              = c.Crit_Registro,
                        EstandaresDecreto1072 =
                            c.EstandarDecreto1072
                            .Where(e => tipoEmpresa.Categoria == 0 || e.Categoria < 4)
                            .Select(e =>
                                    new EstandaresViewModelDecreto1072
                        {
                            Id                   = e.Esta_Id,
                            Nombre               = e.Esta_Nom,
                            Porcentaje           = e.Esta_Porcentaje,
                            Registro             = e.Esta_Registro,
                            ElementosDecreto1072 =
                                e.itemEstandarDecreto1072
                                .Where(ie => tipoEmpresa.Categoria == 0 || ie.Categoria < 4)
                                .Select(i =>
                                        new ElementoViewModelDecreto1072
                            {
                                Id                       = i.Iest_Id,
                                Descripcion              = i.Iest_Desc,
                                Observaciones            = i.Iest_Observa,
                                Porcentaje               = i.Iest_Porcentaje,
                                Recurso                  = i.Iest_Recurso,
                                Registro                 = i.Iest_Registro,
                                Reursob                  = i.Iest_Rescursob,
                                Verificar                = i.Iest_Verificar,
                                Video                    = i.Iest_Video,
                                Periodo                  = i.Iest_Peri,
                                MasInformacion           = i.Iest_MasInfo,
                                CumplimientosDecreto1072 = i.CumplimientoDecreto1072.Where(cu => cu.Empr_Nit == AccountData.NitEmpresa && !cu.AutoevaluacionDecreto1072.Finalizada).ToList()
                            }).ToList()
                        }).ToList()
                    }).ToList()
                }).ToList();
            }
            catch (Exception ex)
            {
                ViewBag.TextError = ex.Message;
            }
            return(View(list));
        }