private async Task <TipoNormaEspecificacionViewModel> ObtenerNormaEspecificacion(int id, TipoNormaEspecificacionViewModel tipoNormaEspecificacionView = null)
        {
            if (tipoNormaEspecificacionView == null)
            {
                var tipoNorma = new TipoNormaEspecificacionViewModel
                {
                    NormaId   = 0,
                    TipoNorma = await db.TipoNorma.Where(x => x.TipoNormaId == id).Select(x => new TipoNorma
                    {
                        DescripcionNorma = x.DescripcionNorma,
                        Sae = x.Sae,
                    }).FirstOrDefaultAsync(),
                    Normas = await  ListaNormaEspecificacion(id)
                };
                return(tipoNorma);
            }

            var NormaEspecificacionResult = new TipoNormaEspecificacionViewModel
            {
                TipoNormaId      = tipoNormaEspecificacionView.TipoNormaId,
                EspecificacionId = tipoNormaEspecificacionView.EspecificacionId,

                Normas    = await ListaNormaEspecificacion(id),
                TipoNorma = await db.TipoNorma.Where(x => x.TipoNormaId == id).Select(x => new TipoNorma
                {
                    DescripcionNorma = x.DescripcionNorma,
                    Sae = x.Sae,
                }).FirstOrDefaultAsync(),
            };

            return(NormaEspecificacionResult);
        }
        public async Task <IActionResult> Especificaciones(TipoNormaEspecificacionViewModel tipoNormaEspecificacion)
        {
            try
            {
                await cargarListaEspecificacionesViewData();

                if (tipoNormaEspecificacion.ValorMinimo == null && tipoNormaEspecificacion.ValorMaximo == null)
                {
                    TempData["Mensaje"] = $"{Mensaje.Error}|{Mensaje.DebeIntroducirAlMenosUnRango}";
                    return(View(await ObtenerNormaEspecificacion(tipoNormaEspecificacion.TipoNormaId, tipoNormaEspecificacion)));
                }

                if (tipoNormaEspecificacion.ValorMinimo > tipoNormaEspecificacion.ValorMaximo)
                {
                    TempData["Mensaje"] = $"{Mensaje.Error}|{Mensaje.ValorMinimoMayorRangoMaximo}";
                    return(View(await ObtenerNormaEspecificacion(tipoNormaEspecificacion.TipoNormaId, tipoNormaEspecificacion)));
                }

                var existeRegistro = false;

                if (!await db.Norma.AnyAsync(c => c.EspecificacionId == tipoNormaEspecificacion.EspecificacionId && c.TipoNormaId == tipoNormaEspecificacion.TipoNormaId))
                {
                    var p = new Norma
                    {
                        TipoNormaId      = tipoNormaEspecificacion.TipoNormaId,
                        EspecificacionId = tipoNormaEspecificacion.EspecificacionId,
                        ValorMaximo      = tipoNormaEspecificacion.ValorMaximo,
                        ValorMinimo      = tipoNormaEspecificacion.ValorMinimo,
                    };
                    await db.AddAsync(p);
                }
                else
                {
                    existeRegistro = true;
                }

                if (!existeRegistro)
                {
                    await db.SaveChangesAsync();

                    TempData["Mensaje"] = $"{Mensaje.MensajeSatisfactorio}|{Mensaje.Satisfactorio}";
                    return(View(await ObtenerNormaEspecificacion(tipoNormaEspecificacion.TipoNormaId, null)));
                }
                else
                {
                    TempData["Mensaje"] = $"{Mensaje.Error}|{Mensaje.ExisteRegistro}";
                }

                return(View(await ObtenerNormaEspecificacion(tipoNormaEspecificacion.TipoNormaId, tipoNormaEspecificacion)));
            }
            catch (Exception)
            {
                return(this.Redireccionar($"{Mensaje.Error}|{Mensaje.Excepcion}"));
            }
        }