public void FormView1_InsertItem() { var documento = new Prestlan.Models.Documento(); TryUpdateModel(documento); if (ModelState.IsValid) { // Fecha creación y actualización documento.FechaCreado = DateTime.Now; documento.FechaActualizado = DateTime.Now; // Hash del empleado ????? documento.HashEmpleado = Tools.GenerarHash(); // ID del usuario actual documento.Usuario_Id = Utilidades.Autentificacion.GetUsuarioID(); // Estado inicial = BORRADOR documento.Estado_Id = (int)TiposDeEstado.BORRADOR; // Etapa inicial = Etapa 1, Borrador documento.Etapa_Id = (int)TiposDeEtapa.BORRADOR; // Tipo documento (No esta con Bind por que al ser un desplegable filtrado por "rPropiedad" daba error) documento.TipoDocumento_Id = int.Parse(((DropDownList)FormView1.FindControl("ddTipoDocumento")).SelectedValue); // Procesar fichero FileUpload fu = ((FileUpload)FormView1.FindControl("fuDocumento")); string fuu = Guid.NewGuid().ToString().Replace("-", string.Empty).ToUpper() + System.IO.Path.GetExtension(fu.FileName); string filePath = ProcesarFichero(fu, fuu); if (filePath != "") { // Añadimos el fichero var fichero = new Prestlan.Models.Fichero(); fu.PostedFile.SaveAs(filePath); fichero.nombre = fu.FileName; fichero.nombreFS = fuu; fichero.FechaCreado = DateTime.Now; documento.Fichero = fichero; _db.Documento.Add(documento); _db.SaveChanges(); // Actualizamos la versión del documento documento.DocumentoVersion_Id = documento.Id; //Obtengo el tipo de propietario Empresa | Empleado string tipoPropietario = ((RadioButtonList)FormView1.FindControl("rbPropiedad")).SelectedValue; if (tipoPropietario == "Empresa") { var propietario = new Prestlan.Models.Propietario(); propietario.Empresa_Id = int.Parse(((DropDownList)FormView1.FindControl("ddlEmpresas")).SelectedValue); documento.Propietario.Add(propietario); } else if (tipoPropietario == "Empleado") { // Obtenemos todos los id de trabajador seleccionados en un array y añadimos los propietarios var selectedItems = from ListItem i in ((ListBox)FormView1.FindControl("ddAsignacion")).Items where i.Selected select i; if (selectedItems.Count() > 0) { documento.SinPropietarios = false; } else { documento.SinPropietarios = true; } foreach (var p in selectedItems) { var trabajador = _db.Trabajador.Find(int.Parse(p.Value)); var propietario = new Prestlan.Models.Propietario(); propietario.Empresa_Id = trabajador.Empresa_Id; propietario.Trabajador_Id = trabajador.Id; documento.Propietario.Add(propietario); } } else { documento.SinPropietarios = true; } _db.SaveChanges(); msgEstado.Text = Traduce.getTG("documentoinsertok"); panelEstado.Visible = true; FormView1.Visible = false; } else { msgError.Text = Traduce.getTG("soloficherosextension"); panelError.Visible = true; } } }
public void FormView1_UpdateItem(int id) { Prestlan.Models.Documento documento = _db.Documento.Find(id); if (documento == null) { ModelState.AddModelError("", String.Format("No se encontró el elemento con id. {0}", id)); return; } TryUpdateModel(documento); if (ModelState.IsValid) { FileUpload fu = ((FileUpload)FormView1.FindControl("fuDocumento")); if (documento.Estado_Id != (int)TiposDeEstado.BORRADOR && fu != null && fu.HasFile) { //CREAR UNA NUEVA VERSION //************************************************************************************************************/ Prestlan.Models.Documento nuevo_documento = new Prestlan.Models.Documento(); //Fichero string fuu = Guid.NewGuid().ToString().Replace("-", string.Empty).ToUpper() + System.IO.Path.GetExtension(fu.FileName); string filePath = ProcesarFichero(fu, fuu); if (filePath != "") { var fichero = new Prestlan.Models.Fichero(); fu.PostedFile.SaveAs(filePath); fichero.nombre = fu.FileName; fichero.nombreFS = fuu; fichero.FechaCreado = DateTime.Now; _db.Fichero.Add(fichero); _db.SaveChanges(); nuevo_documento.Fichero_Id = fichero.Id; } else { ModelState.AddModelError("", "Extension incorrecta"); return; } // Título nuevo_documento.Titulo = documento.Titulo; // Descripción nuevo_documento.Descripcion = documento.Descripcion; // Caducidad y Fecha de caducidad if (((CheckBox)FormView1.FindControl("cbCaducidad")).Checked) { nuevo_documento.Caduca = true; nuevo_documento.FechaCaducidad = DateTime.Parse(((TextBox)FormView1.FindControl("tbFechaCaducidad")).Text); } else { nuevo_documento.Caduca = false; nuevo_documento.FechaCaducidad = null; } // actualización de fecha nuevo_documento.FechaActualizado = DateTime.Now; // Reutilizamos el hash de empleado ????? nuevo_documento.HashEmpleado = documento.HashEmpleado; // Fecha creación y actualización nuevo_documento.FechaCreado = DateTime.Now; nuevo_documento.FechaActualizado = DateTime.Now; // ID del usuario actual nuevo_documento.Usuario_Id = documento.Usuario_Id; // Tipo documento nuevo_documento.TipoDocumento_Id = int.Parse(((DropDownList)FormView1.FindControl("ddTipoDocumento")).SelectedValue); // Estado inicial = BORRADOR nuevo_documento.Estado_Id = (int)TiposDeEstado.BORRADOR; // Etapa inicial = Etapa 1, Borrador nuevo_documento.Etapa_Id = (int)TiposDeEtapa.BORRADOR; // Versiones nuevo_documento.DocumentoVersion_Id = documento.Id; _db.Documento.Add(nuevo_documento); _db.SaveChanges(); //Obtengo el tipo de propietario Empresa | Empleado string tipoPropietario = ((RadioButtonList)FormView1.FindControl("rbPropiedad")).SelectedValue; if (tipoPropietario == "Empresa") { var propietario = new Prestlan.Models.Propietario(); propietario.Empresa_Id = int.Parse(((DropDownList)FormView1.FindControl("ddlEmpresas")).SelectedValue); nuevo_documento.Propietario.Add(propietario); } else if (tipoPropietario == "Empleado") { // Obtenemos todos los id de trabajador seleccionados en un array y añadimos los propietarios var selectedItems = from ListItem i in ((ListBox)FormView1.FindControl("ddAsignacion")).Items where i.Selected select i; if (selectedItems.Count() > 0) { nuevo_documento.SinPropietarios = false; } else { nuevo_documento.SinPropietarios = true; } foreach (var p in selectedItems) { var trabajador = _db.Trabajador.Find(int.Parse(p.Value)); var propietario = new Prestlan.Models.Propietario(); propietario.Empresa_Id = trabajador.Empresa_Id; propietario.Trabajador_Id = trabajador.Id; nuevo_documento.Propietario.Add(propietario); } } else { nuevo_documento.SinPropietarios = true; } _db.SaveChanges(); msgEstado.Text = Traduce.getTG("documentoeditok"); panelEstado.Visible = true; FormView1.Visible = false; } else { //Actualizar documento existente //Fichero string fuu = Guid.NewGuid().ToString().Replace("-", string.Empty).ToUpper() + System.IO.Path.GetExtension(fu.FileName); string filePath = ProcesarFichero(fu, fuu); if (filePath != "") { var fichero = new Prestlan.Models.Fichero(); fu.PostedFile.SaveAs(filePath); fichero.nombre = fu.FileName; fichero.nombreFS = fuu; fichero.FechaCreado = DateTime.Now; _db.Fichero.Add(fichero); _db.SaveChanges(); documento.Fichero_Id = fichero.Id; } else { ModelState.AddModelError("", "Extension incorrecta"); return; } //El resto de campos estan bindeados // Tipo documento documento.TipoDocumento_Id = int.Parse(((DropDownList)FormView1.FindControl("ddTipoDocumento")).SelectedValue); // Caducidad y Fecha de caducidad if (((CheckBox)FormView1.FindControl("cbCaducidad")).Checked) { documento.Caduca = true; documento.FechaCaducidad = DateTime.Parse(((TextBox)FormView1.FindControl("tbFechaCaducidad")).Text); } else { documento.Caduca = false; documento.FechaCaducidad = null; } //Borro los propietarios anteriores foreach (Propietario dp in documento.Propietario.ToList()) { _db.Entry<Propietario>(dp).State = EntityState.Deleted; } //Obtengo el tipo de propietario Empresa | Empleado string tipoPropietario = ((RadioButtonList)FormView1.FindControl("rbPropiedad")).SelectedValue; if (tipoPropietario == "Empresa") { var propietario = new Prestlan.Models.Propietario(); propietario.Empresa_Id = int.Parse(((DropDownList)FormView1.FindControl("ddlEmpresas")).SelectedValue); documento.Propietario.Add(propietario); } else if (tipoPropietario == "Empleado") { // Obtenemos todos los id de trabajador seleccionados en un array y añadimos los propietarios var selectedItems = from ListItem i in ((ListBox)FormView1.FindControl("ddAsignacion")).Items where i.Selected select i; if (selectedItems.Count() > 0) { documento.SinPropietarios = false; } else { documento.SinPropietarios = true; } foreach (var p in selectedItems) { var trabajador = _db.Trabajador.Find(int.Parse(p.Value)); var propietario = new Prestlan.Models.Propietario(); propietario.Empresa_Id = trabajador.Empresa_Id; propietario.Trabajador_Id = trabajador.Id; documento.Propietario.Add(propietario); } } else { documento.SinPropietarios = true; } _db.SaveChanges(); msgEstado.Text = Traduce.getTG("documentoeditok"); panelEstado.Visible = true; FormView1.Visible = false; } } }