Ejemplo n.º 1
0
        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;
                }
            }
        }
Ejemplo n.º 2
0
        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;
                }
            }
        }