public ActionResult Crear(Int64? id)
        {
            if (id == null)
            {
                return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
            }
            Pieza pieza = db.Piezas.Find(id);
            if (pieza == null)
            {
                return HttpNotFound();
            }

            var catalogoPieza = new CatalogoPieza()
            {
                PiezaID = pieza.PiezaID,
                Status = true
            };

            return PartialView("_Crear", catalogoPieza);
        }
        //IMPORTAR PIEZA - CATALOGO
        public ActionResult ImportarPieza_Catalogo()
        {
            RecordFCSContext dbx = new RecordFCSContext();
            ViewBag.NombreTabla = "PIEZA AUTOR";
            var tipoAtt_CatalogoID = dbx.TipoAtributos.Where(a => a.AntNombre == "m_cats").Select(a => a.TipoAtributoID).FirstOrDefault();

            ViewBag.error = "";

            try
            {
                // mandar mensaje de conexion
                ViewBag.mensaje = "Conexión establecida";
                //definir el sql
                Int64 limite = 100000;
                Int64 total = 500;

                Int64 inicio = 0; //colocar el PIEZAID del cual comenzar se comienza desde actual+1
                Int64 fin = inicio + total;

                var listaCatalogos = dbx.Catalogos.Select(a => new { a.CatalogoID, a.AntID }).ToList();
                List<AnonimoPiezaTabla> listaAnt = new List<AnonimoPiezaTabla>();

                con1.Open();
                string campo0 = "id_pieza";
                string campo1 = "Catalogo_Clave";
                string tabla = "m_cats";
                string textSql1 = string.Format("SELECT [{0}], [{1}] FROM [{2}]", campo0, campo1, tabla);
                SqlCommand sql1 = new SqlCommand(textSql1, con1);
                SqlDataReader leer1 = sql1.ExecuteReader();

                while (leer1.Read())
                {
                    string id = leer1[campo0].ToString();
                    string clave = leer1[campo1].ToString();
                    listaAnt.Add(new AnonimoPiezaTabla()
                    {
                        id_pieza = id,
                        Clave = clave
                    });

                }
                con1.Close();

                while (fin <= limite)
                {
                    //tener la lista de pieza
                    var listPiezas = dbx.Piezas.Where(a => a.ObraID > inicio && a.ObraID <= fin).Select(a => new { a.ObraID, a.PiezaID, a.TipoPiezaID, a.Obra.AntID }).ToList();

                    foreach (var pieza in listPiezas)
                    {
                        //registrar una Pieza Autor
                        var anonimaPiezaTabla = listaAnt.Where(a => a.id_pieza == pieza.AntID).ToList();

                        if (anonimaPiezaTabla.Count > 0)
                        {
                            foreach (var apt in anonimaPiezaTabla)
                            {
                                //buscar al Autor
                                var catalogo = listaCatalogos.FirstOrDefault(a => a.AntID == apt.Clave);

                                CatalogoPieza catalogoPieza = new CatalogoPieza()
                                {
                                    PiezaID = pieza.PiezaID,
                                    CatalogoID = catalogo.CatalogoID,
                                    Status = true
                                };

                                //buscar que no exista el catalogo
                                if (dbx.CatalogoPiezas.Where(a => a.CatalogoID == catalogoPieza.CatalogoID && a.PiezaID == catalogoPieza.PiezaID).Count() == 0)
                                {
                                    dbx.CatalogoPiezas.Add(catalogoPieza);
                                    dbx.SaveChanges();
                                }

                            }
                        }

                    }

                    dbx.Dispose();
                    dbx = new RecordFCSContext();
                    dbx.Configuration.AutoDetectChangesEnabled = false;

                    inicio = fin;
                    fin = fin + total;
                }

            }
            catch (Exception)
            {

                throw;
            }
            return PartialView("_ImportarPieza_Descriptivo");
        }
Esempio n. 3
0
        public ActionResult Registro(Int64 TipoObraID, Int64 TipoPiezaID, string Folio)
        {
            db.Dispose();
            db = new RecordFCSContext();
            ////Validar el Folio
            //while (db.Obras.Where(a => a.Clave == Folio).Count() > 0)
            //{
            //    string[] nuevaClave = Folio.Split('-');
            //    int numero = Convert.ToInt32(nuevaClave[1]);
            //    numero++;
            //    Folio = nuevaClave[0] + '-' + numero.ToString().PadLeft(4, '0');
            //}

            var obra = new Obra()
            {
                Clave = Folio,
                TipoObraID = TipoObraID,
                FechaRegistro = DateTime.Now,
                Status = Status.PreRegistro,
            };

            //lista de atributos
            var listaAtributos = db.Atributos.Where(a => a.TipoPiezaID == TipoPiezaID).ToList();

            // filtrar los atributos que son solo de la OBRA
            foreach (var item in listaAtributos)
            {
                string campo = "req_list_" + item.TipoAtributoID;
                string id_text = Request.Form[campo];
                Int64 id = Convert.ToInt64(id_text);
                switch (item.TipoAtributo.DatoCS)
                {
                    case "TipoAdquisicionID":
                        var tipoAdq = db.TipoAdquisiciones.Where(a => a.TipoAdquisicionID == id).Select(a => new { a.TipoAdquisicionID, a.Nombre}).FirstOrDefault();
                        if (tipoAdq != null)
                        {
                            obra.TipoAdquisicionID = id;
                        }
                        break;

                    case "PropietarioID":
                        var propietario = db.Propietarios.Where(a => a.PropietarioID == id).Select(a => new { a.PropietarioID, a.Nombre}).FirstOrDefault();
                        if (propietario != null)
                        {
                            obra.PropietarioID = id;
                        }
                        break;

                    case "ColeccionID":
                        var coleccion = db.Colecciones.Where(a => a.ColeccionID == id).Select(a => new { a.ColeccionID, a.Nombre}).FirstOrDefault();
                        if (coleccion != null)
                        {
                            obra.ColeccionID = id;
                        }
                        break;

                    case "UbicacionID":
                        var ubicacion = db.Ubicaciones.Where(a => a.UbicacionID == id).Select(a => new { a.UbicacionID, a.Nombre}).FirstOrDefault();
                        if (ubicacion != null)
                        {
                            obra.UbicacionID = id;
                        }
                        break;
                }
            }

            //validar la clave al final
            //ultimo registro + 1
            var ultimo = db.Obras.Select(a => new { a.ObraID, a.TipoObraID, a.Status, a.Clave}).ToList().LastOrDefault();

            if (ultimo != null)
            {
                var folio = Convert.ToInt32(ultimo.Clave) + 1;
                obra.Clave = folio.ToString();
            }

            db.Obras.Add(obra);
            db.SaveChanges();

            // crear la pieza
            var tipoPieza = db.TipoPiezas.Where(a => a.TipoPiezaID == TipoPiezaID).Select(a => new {a.TipoPiezaID, a.TipoObraID, a.Clave }).FirstOrDefault();

            var pieza = new Pieza()
            {
                ObraID = obra.ObraID,
                Clave = obra.Clave + "-" + tipoPieza.Clave, // Rdddaaaa-0000-A
                TipoPiezaID = TipoPiezaID,
                UbicacionID = obra.UbicacionID,
                FechaRegistro = obra.FechaRegistro,
                Status = true
            };

            db.Piezas.Add(pieza);
            db.SaveChanges();

            //llenar los atributoPieza y si son requeridos extraer el valor
            foreach (var item in listaAtributos)
            {
                var atributoPieza = new AtributoPieza()
                {
                    PiezaID = pieza.PiezaID,
                    AtributoID = item.AtributoID
                };

                //si son NombreID == "Generico" guardar en AtributoPieza
                if (item.TipoAtributo.NombreID == "Generico")
                {
                    //y si es Requerido extraer el valor del form
                    if (item.Requerido)
                    {
                        //si es lista lo guarda en ValorListaID y si no en Valor
                        if (item.TipoAtributo.EsLista)
                        {
                            string campo = "req_list_" + item.TipoAtributoID;
                            Int64? id = Convert.ToInt64(Request.Form[campo]);

                            var listaValor = db.ListaValores.Where(a => a.ListaValorID == id).Select(a => new {a.ListaValorID, a.TipoAtributoID}).FirstOrDefault();

                            if (listaValor != null)
                            {
                                atributoPieza.ListaValorID = id;
                            }
                        }
                        else
                        {
                            string campo = "req_" + item.TipoAtributoID;
                            string valor = Request.Form[campo];

                            if (!String.IsNullOrEmpty(valor) || !String.IsNullOrWhiteSpace(valor))
                            {
                                atributoPieza.Valor = valor;
                            }
                        }
                    }
                }
                else if (item.TipoAtributo.DatoHTML == "Catalogo")
                {
                    //Si no es generico pero si es DatoHTML = "Catalogo"
                    // y si es Requerido entonces guardar el valor en la TABLAPieza
                    if (item.Requerido)
                    {
                        string campo = "req_list_" + item.TipoAtributoID;
                        int? id = Convert.ToInt32(Request.Form[campo]);
                        switch (item.TipoAtributo.DatoCS)
                        {
                            case "TecnicaPieza":
                                var tecnica = db.Tecnicas.Where(a => a.TecnicaID == id).Select(a => new { a.TecnicaID, a.Descripcion}).FirstOrDefault();
                                if (tecnica != null)
                                {
                                    TecnicaPieza tecPieza = new TecnicaPieza()
                                    {
                                        PiezaID = pieza.PiezaID,
                                        TecnicaID = tecnica.TecnicaID,
                                        Status = true
                                    };
                                    db.TecnicaPiezas.Add(tecPieza);
                                    //db.SaveChanges();
                                }
                                break;

                            case "AutorPieza":
                                var autor = db.Autores.Where(a => a.AutorID == id).Select(a => new { a.AutorID, a.Nombre}).FirstOrDefault();
                                if (autor != null)
                                {
                                    AutorPieza autorPieza = new AutorPieza()
                                    {
                                        PiezaID = pieza.PiezaID,
                                        AutorID = autor.AutorID,
                                        Status = true
                                    };
                                    db.AutorPiezas.Add(autorPieza);
                                    //db.SaveChanges();
                                }
                                break;

                            case "ImagenPieza":
                                //PEndiente por implementar
                                HttpPostedFileBase FileImagen = Request.Files["FileName"];

                                var extension = Path.GetExtension(FileImagen.FileName);
                                var imagenPieza = new ImagenPieza()
                                {
                                    PiezaID = pieza.PiezaID,
                                    Status = true,
                                    Orden = 1,
                                    Titulo = Request.Form["imagen_" + "Titulo"],
                                    Descripcion = Request.Form["imagen_" + "Descripcion"],
                                };

                                imagenPieza.ImgNombre = Guid.NewGuid().ToString() + extension;
                                var rutaOriginal = Server.MapPath("~" + imagenPieza.Ruta);
                                var rutaThumbnail = Server.MapPath("~" + imagenPieza.RutaThumb);

                                FileImagen.SaveAs(rutaOriginal);

                                //GUARDAR THUMBNAIL
                                var thumb = new Thumbnail()
                                {
                                    OrigenSrc = rutaOriginal,
                                    DestinoSrc = rutaThumbnail,
                                    LimiteAnchoAlto = 300
                                };

                                thumb.GuardarThumbnail();

                                //guardar en db
                                db.ImagenPiezas.Add(imagenPieza);
                                //db.SaveChanges();

                                break;

                            case "Medida":
                                //Pendiente por implementar
                                var tipoMedida = db.TipoMedidas.Where(a => a.TipoMedidaID == id).Select(a => new { a.TipoMedidaID, a.Nombre}).FirstOrDefault();
                                if (tipoMedida != null)
                                {
                                    Medida medida = new Medida()
                                    {
                                        PiezaID = pieza.PiezaID,
                                        TipoMedidaID = tipoMedida.TipoMedidaID,
                                        Status = true
                                    };
                                    var xlargo = Request.Form["med_" + "Largo"].ToString();
                                    var xancho = Request.Form["med_" + "Ancho"].ToString();
                                    var xprofundidad =Request.Form["med_" + "Profundidad"].ToString();
                                    var xdiametro = Request.Form["med_" + "Diametro"].ToString();
                                    var xdiametro2 = Request.Form["med_" + "Diametro2"].ToString();
                                    var xUMLongitud = Request.Form["med_" + "UMLongitud"].ToString();

                                    if (xlargo != "0" && xlargo != "")
                                        medida.Largo = Convert.ToDouble(xlargo);
                                    if (xancho != "0" && xancho != "")
                                        medida.Ancho = Convert.ToDouble(xancho);
                                    if (xprofundidad != "0" && xprofundidad != "")
                                        medida.Profundidad = Convert.ToDouble(xprofundidad);
                                    if (xdiametro != "0" && xdiametro != "")
                                        medida.Diametro = Convert.ToDouble(xdiametro);
                                    if (xdiametro2 != "0" && xdiametro2 != "")
                                        medida.Diametro2 = Convert.ToDouble(xdiametro2);

                                    switch (xUMLongitud)
                                    {
                                        case "cm":
                                            medida.UMLongitud = UMLongitud.cm;
                                            break;
                                        case "km":
                                            medida.UMLongitud = UMLongitud.km;
                                            break;
                                        case "m":
                                            medida.UMLongitud = UMLongitud.m;
                                            break;
                                        case "mm":
                                            medida.UMLongitud = UMLongitud.mm;
                                            break;
                                        case "pulgadas":
                                            medida.UMLongitud = UMLongitud.pulgadas;
                                            break;
                                    }
                                    db.Medidas.Add(medida);
                                    //db.SaveChanges();

                                }
                                break;

                            case "CatalogoPieza":
                                var catalogo = db.Catalogos.Where(a => a.CatalogoID == id).Select(a => new { a.CatalogoID, a.Nombre}).FirstOrDefault();
                                if (catalogo != null)
                                {
                                    CatalogoPieza catPieza = new CatalogoPieza()
                                    {
                                        PiezaID = pieza.PiezaID,
                                        CatalogoID = catalogo.CatalogoID,
                                        Status = true
                                    };
                                    db.CatalogoPiezas.Add(catPieza);
                                    //db.SaveChanges();
                                }
                                break;

                            case "ExposicionPieza":
                                var exposicion = db.Exposiciones.Where(a => a.ExposicionID == id).Select(a => new {a.ExposicionID, a.Nombre }).FirstOrDefault();
                                if (exposicion != null)
                                {
                                    ExposicionPieza expoPieza = new ExposicionPieza()
                                    {
                                        PiezaID = pieza.PiezaID,
                                        ExposicionID = exposicion.ExposicionID,
                                        Status = true
                                    };
                                    db.ExposicionPiezas.Add(expoPieza);
                                    //db.SaveChanges();
                                }
                                break;

                            case "MatriculaPieza":
                                var matricula = db.Matriculas.Where(a => a.MatriculaID == id).Select(a => new { a.MatriculaID, a.Descripcion}).FirstOrDefault();
                                if (matricula != null)
                                {
                                    MatriculaPieza matPieza = new MatriculaPieza()
                                    {
                                        PiezaID = pieza.PiezaID,
                                        MatriculaID = matricula.MatriculaID,
                                        Status = true
                                    };
                                    db.MatriculaPiezas.Add(matPieza);
                                    //db.SaveChanges();
                                }
                                break;

                            case "TecnicaMarcoPieza":
                                var tenicaMarco = db.TecnicaMarcos.Where(a => a.TecnicaMarcoID == id).Select(a => new { a.TecnicaMarcoID, a.Descripcion}).FirstOrDefault();
                                if (tenicaMarco != null)
                                {
                                    TecnicaMarcoPieza tecMarcoPieza = new TecnicaMarcoPieza()
                                    {
                                        PiezaID = pieza.PiezaID,
                                        TecnicaMarcoID = tenicaMarco.TecnicaMarcoID,
                                        Status = true
                                    };
                                    db.TecnicaMarcoPiezas.Add(tecMarcoPieza);
                                    //db.SaveChanges();
                                }
                                break;
                        }
                    }
                }

                db.AtributoPiezas.Add(atributoPieza);
            }

            db.SaveChanges();

            //redireccionar si se tiene el permiso para ver ficha completa
            if (User.IsInRole("ObraFichComplet"))
            {
                return RedirectToAction("Detalles", "Obra", new { id = obra.ObraID });
            }
            else
            {
                AlertaSuccess(string.Format("Se registro la obra: {0}, pero no tiene los permisos para visualizarla.", obra.Clave),true);
                return RedirectToAction("Registro", "Obra");
            }
        }
Esempio n. 4
0
        public ActionResult Crear([Bind(Include = "PiezaID,ObraID,TipoPiezaID,Status")] Pieza pieza, string Folio)
        {
            Obra obra = db.Obras.Find(pieza.ObraID);
            TipoPieza tipoPieza = db.TipoPiezas.Find(pieza.TipoPiezaID);

            pieza.FechaRegistro = DateTime.Now;
            pieza.UbicacionID = obra.UbicacionID;

            if (obra.Status == Status.Activo)
                pieza.Status = true;
            else
                pieza.Status = false;

            //lista de atributos
            var listaAtributos = db.Atributos.Where(a => a.TipoPiezaID == pieza.TipoPiezaID).ToList();

            // filtrar los atributos que son solo de la PIEZA
            foreach (var item in listaAtributos)
            {
                string campo = "req_list_" + item.TipoAtributoID;
                Int64 id = Convert.ToInt64(Request.Form[campo]);

                switch (item.TipoAtributo.DatoCS)
                {
                    case "UbicacionID":
                        var ubicacion = db.Ubicaciones.Find(id);
                        if (ubicacion != null)
                        {
                            pieza.UbicacionID = id;
                        }
                        break;
                }
            }

            //validar la clave al final
            var clave = "";
            var listaClaves = db.Piezas.Where(p => (p.ObraID == pieza.ObraID && p.TipoPiezaID == pieza.TipoPiezaID)).ToList();

            ////GENERAR EN AUTOMATICO LA CLAVE
            if (listaClaves.Count == 0)
                clave = obra.Clave + "-" + tipoPieza.Clave;
            else
            {
                var listaC = new List<Int32>();
                foreach (var item in listaClaves)
                {
                    char x = Convert.ToChar(tipoPieza.Clave);
                    char s = '-';
                    clave = item.Clave.Split(s).Last();
                    clave = clave.Split(x).Last();
                    if (clave != "")
                        listaC.Add(Convert.ToInt32(clave));
                }
                if (listaC.Count == 0)
                    clave = obra.Clave + "-" + tipoPieza.Clave + "2";
                else
                {
                    listaC.Sort();
                    var mayor = listaC.LastOrDefault();
                    mayor = mayor + 1;
                    clave = obra.Clave + "-" + tipoPieza.Clave + mayor;
                }
            }

            pieza.Clave = clave;

            db.Piezas.Add(pieza);
            db.SaveChanges();

            //llenar los atributoPieza y si son requeridos extraer el valor
            foreach (var item in listaAtributos)
            {
                var atributoPieza = new AtributoPieza()
                {
                    PiezaID = pieza.PiezaID,
                    AtributoID = item.AtributoID
                };

                //si son NombreID == "Generico" guardar en AtributoPieza
                if (item.TipoAtributo.NombreID == "Generico")
                {
                    //y si es Requerido extraer el valor del form
                    if (item.Requerido)
                    {
                        //si es lista lo guarda en ValorListaID y si no en Valor
                        if (item.TipoAtributo.EsLista)
                        {
                            string campo = "req_list_" + item.TipoAtributoID;
                            Int64? id = Convert.ToInt64(Request.Form[campo]);
                            var listaValor = db.ListaValores.Find(id);

                            if (listaValor != null)
                            {
                                atributoPieza.ListaValorID = id;
                            }
                        }
                        else
                        {
                            string campo = "req_" + item.TipoAtributoID;
                            string valor = Request.Form[campo];

                            if (!String.IsNullOrEmpty(valor) || !String.IsNullOrWhiteSpace(valor))
                            {
                                atributoPieza.Valor = valor;
                            }
                        }
                    }
                }
                else if (item.TipoAtributo.DatoHTML == "Catalogo")
                {
                    //Si no es generico pero si es DatoHTML = "Catalogo"
                    // y si es Requerido entonces guardar el valor en la TABLAPieza
                    if (item.Requerido)
                    {
                        string campo = "req_list_" + item.TipoAtributoID;
                        int? id = Convert.ToInt32(Request.Form[campo]);
                        switch (item.TipoAtributo.DatoCS)
                        {
                            case "TecnicaPieza":
                                var tecnica = db.Tecnicas.Find(id);
                                if (tecnica != null)
                                {
                                    TecnicaPieza tecPieza = new TecnicaPieza()
                                    {
                                        PiezaID = pieza.PiezaID,
                                        TecnicaID = tecnica.TecnicaID,
                                        Status = true
                                    };
                                    db.TecnicaPiezas.Add(tecPieza);
                                    db.SaveChanges();
                                }
                                break;

                            case "AutorPieza":
                                var autor = db.Autores.Find(id);
                                if (autor != null)
                                {
                                    AutorPieza autorPieza = new AutorPieza()
                                    {
                                        PiezaID = pieza.PiezaID,
                                        AutorID = autor.AutorID,
                                        Status = true
                                    };
                                    db.AutorPiezas.Add(autorPieza);
                                    db.SaveChanges();
                                }
                                break;

                            case "ImagenPieza":
                                //PEndiente por implementar
                                HttpPostedFileBase FileImagen = Request.Files["FileName"];

                                var extension = Path.GetExtension(FileImagen.FileName);
                                var imagenPieza = new ImagenPieza()
                                {
                                    PiezaID = pieza.PiezaID,
                                    Status = true,
                                    Orden = 1,
                                    Titulo = Request.Form["imagen_" + "Titulo"],
                                    Descripcion = Request.Form["imagen_" + "Descripcion"],
                                };

                                imagenPieza.ImgNombre = Guid.NewGuid().ToString() + extension;
                                var rutaOriginal = Server.MapPath("~" + imagenPieza.Ruta);
                                var rutaThumbnail = Server.MapPath("~" + imagenPieza.RutaThumb);

                                FileImagen.SaveAs(rutaOriginal);

                                //GUARDAR THUMBNAIL
                                var thumb = new Thumbnail()
                                {
                                    OrigenSrc = rutaOriginal,
                                    DestinoSrc = rutaThumbnail,
                                    LimiteAnchoAlto = 300
                                };

                                thumb.GuardarThumbnail();

                                //guardar en db
                                db.ImagenPiezas.Add(imagenPieza);
                                db.SaveChanges();

                                break;

                            case "Medida":
                                //Pendiente por implementar
                                var tipoMedida = db.TipoMedidas.Find(id);
                                if (tipoMedida != null)
                                {
                                    Medida medida = new Medida()
                                    {
                                        PiezaID = pieza.PiezaID,
                                        TipoMedidaID = tipoMedida.TipoMedidaID,
                                        Status = true
                                    };
                                    var xlargo = Request.Form["med_" + "Largo"].ToString();
                                    var xancho = Request.Form["med_" + "Ancho"].ToString();
                                    var xprofundidad = Request.Form["med_" + "Profundidad"].ToString();
                                    var xdiametro = Request.Form["med_" + "Diametro"].ToString();
                                    var xdiametro2 = Request.Form["med_" + "Diametro2"].ToString();
                                    var xUMLongitud = Request.Form["med_" + "UMLongitud"].ToString();

                                    if (xlargo != "0" && xlargo != "")
                                        medida.Largo = Convert.ToDouble(xlargo);
                                    if (xancho != "0" && xancho != "")
                                        medida.Ancho = Convert.ToDouble(xancho);
                                    if (xprofundidad != "0" && xprofundidad != "")
                                        medida.Profundidad = Convert.ToDouble(xprofundidad);
                                    if (xdiametro != "0" && xdiametro != "")
                                        medida.Diametro = Convert.ToDouble(xdiametro);
                                    if (xdiametro2 != "0" && xdiametro2 != "")
                                        medida.Diametro2 = Convert.ToDouble(xdiametro2);

                                    switch (xUMLongitud)
                                    {
                                        case "cm":
                                            medida.UMLongitud = UMLongitud.cm;
                                            break;
                                        case "km":
                                            medida.UMLongitud = UMLongitud.km;
                                            break;
                                        case "m":
                                            medida.UMLongitud = UMLongitud.m;
                                            break;
                                        case "mm":
                                            medida.UMLongitud = UMLongitud.mm;
                                            break;
                                        case "pulgadas":
                                            medida.UMLongitud = UMLongitud.pulgadas;
                                            break;
                                    }
                                    db.Medidas.Add(medida);
                                    db.SaveChanges();

                                }
                                break;

                            case "CatalogoPieza":
                                var catalogo = db.Catalogos.Find(id);
                                if (catalogo != null)
                                {
                                    CatalogoPieza catPieza = new CatalogoPieza()
                                    {
                                        PiezaID = pieza.PiezaID,
                                        CatalogoID = catalogo.CatalogoID,
                                        Status = true
                                    };
                                    db.CatalogoPiezas.Add(catPieza);
                                    db.SaveChanges();
                                }
                                break;

                            case "ExposicionPieza":
                                var exposicion = db.Exposiciones.Find(id);
                                if (exposicion != null)
                                {
                                    ExposicionPieza expoPieza = new ExposicionPieza()
                                    {
                                        PiezaID = pieza.PiezaID,
                                        ExposicionID = exposicion.ExposicionID,
                                        Status = true
                                    };
                                    db.ExposicionPiezas.Add(expoPieza);
                                    db.SaveChanges();
                                }
                                break;

                            case "MatriculaPieza":
                                var matricula = db.Matriculas.Find(id);
                                if (matricula != null)
                                {
                                    MatriculaPieza matPieza = new MatriculaPieza()
                                    {
                                        PiezaID = pieza.PiezaID,
                                        MatriculaID = matricula.MatriculaID,
                                        Status = true
                                    };
                                    db.MatriculaPiezas.Add(matPieza);
                                    db.SaveChanges();
                                }
                                break;

                            case "TecnicaMarcoPieza":
                                var tenicaMarco = db.TecnicaMarcos.Find(id);
                                if (tenicaMarco != null)
                                {
                                    TecnicaMarcoPieza tecMarcoPieza = new TecnicaMarcoPieza()
                                    {
                                        PiezaID = pieza.PiezaID,
                                        TecnicaMarcoID = tenicaMarco.TecnicaMarcoID,
                                        Status = true
                                    };
                                    db.TecnicaMarcoPiezas.Add(tecMarcoPieza);
                                    db.SaveChanges();
                                }
                                break;
                        }
                    }
                }

                db.AtributoPiezas.Add(atributoPieza);
                db.SaveChanges();
            }

            return RedirectToAction("Detalles", "Obra", new { id = obra.ObraID });
        }