public ActionResult Create(ParametroSistemaEmpresa parametrosistemaempresa)
        {
            parametrosistemaempresa.FechaAlta = DateTime.Today;
            parametrosistemaempresa.UsuarioAlta = Convert.ToInt32(Session["userNameId"]);

            ValidaParametrosSistemaEmpresa(parametrosistemaempresa);

            if (ModelState.IsValid)
            {
                db.ParametrosSistemaEmpresa.Add(parametrosistemaempresa);
                db.SaveChanges();
                return RedirectToAction("Index");
            }

            return View(parametrosistemaempresa);
        }
        public ActionResult Edit(ParametroSistemaEmpresa parametrosistemaempresa)
        {
            var parametro = db.ParametrosSistemaEmpresa.Where(ps => ps.Id == parametrosistemaempresa.Id).First();

            ValidaParametrosSistemaEmpresa(parametrosistemaempresa);

            if (ModelState.IsValid)
            {
                parametro.EmpresaId = parametrosistemaempresa.EmpresaId;
                parametro.ParametrosSistemaId = parametrosistemaempresa.ParametrosSistemaId;
                parametro.TipoIncidenteId = parametrosistemaempresa.TipoIncidenteId;
                parametro.ValorInicial = parametrosistemaempresa.ValorInicial;
                parametro.Valorfinal = parametrosistemaempresa.Valorfinal;
                parametro.UsuarioModificacion = Convert.ToInt32(Session["userNameId"]);
                parametro.FechaUltimaModificacion = DateTime.Now;

                db.SaveChanges();
                return RedirectToAction("Index");
            }
            return View(parametrosistemaempresa);
        }
        private bool TipoEmpresaValido(ParametroSistemaEmpresa parametroSistemaEmpresa, ParametrosSistema parametroSistema)
        {
            var reglas = new Func<ParametroSistemaEmpresa, bool>[]
            {
                ps => (ps.EmpresaId == 1 || ps.EmpresaId == 2) && parametroSistema.TipoDeParametro != 1,
                ps => (ps.EmpresaId != 1 && ps.EmpresaId != 2) && parametroSistema.TipoDeParametro != 2
            };

            return reglas.All(regla => regla(parametroSistemaEmpresa) == false);
        }
 private bool ValorFinarValido(ParametroSistemaEmpresa parametroSistemaEmpresa)
 {
     return parametroSistemaEmpresa.Valorfinal.HasValue && parametroSistemaEmpresa.Valorfinal.Value > 0;
 }
        public void ValidaParametrosSistemaEmpresa(ParametroSistemaEmpresa parametroSistemaEmpresa)
        {
            var parametroSistema = db.ParametrosSistema.Where(ps => ps.Id == parametroSistemaEmpresa.ParametrosSistemaId)
                                                       .First();

            if (!TipoEmpresaValido(parametroSistemaEmpresa, parametroSistema))
                ModelState.AddModelError("TipoParametro", "El tipo de parametro especificado no es válido para la empresa seleccionada.");

            if (parametroSistema.TipoIncidenteEsRequerido &&
                parametroSistemaEmpresa.TipoIncidenteId <= 0)
            {
                ModelState.AddModelError("TipoIncidenteId", "El tipo de incidente es requerido.");
            }
            if (parametroSistema.ValorFinalEsRequerido)
            {
                if (!ValorFinarValido(parametroSistemaEmpresa))
                {
                    ModelState.AddModelError("ValorFinal", "El valor final es requerido.");
                }
                else if (parametroSistemaEmpresa.ValorInicial > parametroSistemaEmpresa.Valorfinal.Value)
                {
                    ModelState.AddModelError("ValorFinal", "El valor final debe ser mayor al valor inicial.");
                }
            }
        }