private async Task <TipoMaterialEspecificacionViewModel> ObtenerTipoMaterialEspecificacion(int id, TipoMaterialEspecificacionViewModel tipoMaterialEspecificacionView = null)
        {
            if (tipoMaterialEspecificacionView == null)
            {
                var tipoMaterial = new TipoMaterialEspecificacionViewModel
                {
                    TipoMaterialId = 0,
                    TipoMaterial   = await db.TipoMaterial.Where(x => x.TipoMaterialId == id).Select(x => new TipoMaterial
                    {
                        DescripcionTipoMaterial = x.DescripcionTipoMaterial,
                        TipoMaterialId          = x.TipoMaterialId,
                    }).FirstOrDefaultAsync(),
                    TipoMaterialEspecificacion = await ListaTipoMaterialEspecificacion(id)
                };
                return(tipoMaterial);
            }

            var tipoMaterialEspecificacionResult = new TipoMaterialEspecificacionViewModel
            {
                TipoMaterialId   = tipoMaterialEspecificacionView.TipoMaterialId,
                EspecificacionId = tipoMaterialEspecificacionView.EspecificacionId,

                TipoMaterialEspecificacion = await ListaTipoMaterialEspecificacion(id),
                TipoMaterial = await db.TipoMaterial.Where(x => x.TipoMaterialId == id).Select(x => new TipoMaterial
                {
                    DescripcionTipoMaterial = x.DescripcionTipoMaterial,
                }).FirstOrDefaultAsync(),
            };

            return(tipoMaterialEspecificacionResult);
        }
        public async Task <IActionResult> Especificaciones(TipoMaterialEspecificacionViewModel tipoMaterialEspecificacion)
        {
            try
            {
                await cargarListaEspecificacionesViewData();

                var existeRegistro = false;

                if (!await db.TipoMaterialEspecificacion.AnyAsync(c => c.EspecificacionId == tipoMaterialEspecificacion.EspecificacionId && c.TipoMaterialId == tipoMaterialEspecificacion.TipoMaterialId))
                {
                    var p = new TipoMaterialEspecificacion
                    {
                        TipoMaterialId   = tipoMaterialEspecificacion.TipoMaterialId,
                        EspecificacionId = tipoMaterialEspecificacion.EspecificacionId,
                    };
                    await db.AddAsync(p);
                }
                else
                {
                    existeRegistro = true;
                }

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

                    TempData["Mensaje"] = $"{Mensaje.Informacion}|{Mensaje.Satisfactorio}";
                    return(View(await ObtenerTipoMaterialEspecificacion(tipoMaterialEspecificacion.TipoMaterialId, null)));
                }
                else
                {
                    TempData["Mensaje"] = $"{Mensaje.Error}|{Mensaje.ExisteRegistro}";
                }

                return(View(await ObtenerTipoMaterialEspecificacion(tipoMaterialEspecificacion.TipoMaterialId, tipoMaterialEspecificacion)));
            }
            catch (Exception)
            {
                return(this.Redireccionar($"{Mensaje.Error}|{Mensaje.Excepcion}"));
            }
        }