예제 #1
0
        private void Grabar()
        {
            byte[] ArchivoEnBinario = new Byte[0];
            string sNombre          = "";
            bool   bPrivado         = false;
            bool   bLectura         = false;
            long?  idContentServer  = null;

            //Create el PostedFile
            HttpPostedFile Archivo = txtArchivo.PostedFile;

            //if (Archivo.ContentLength > 0)
            //{
            //    ArchivoEnBinario = new Byte[Archivo.ContentLength]; //Crear el array de bytes con la longitud del archivo
            //    Archivo.InputStream.Read(ArchivoEnBinario, 0, Archivo.ContentLength); //Forzar al control del archivo a cargar los datos en el array
            //}

            if (hdnsAccion.Text == "I")
            {
                if (Archivo.ContentLength > 0)
                {
                    string sArchivo = Archivo.FileName;
                    int    nPos     = sArchivo.LastIndexOf("\\");
                    sNombre = sArchivo.Substring(nPos + 1, sArchivo.Length - nPos - 1);
                }
            }
            else //U
            {
                if (Archivo.FileName != "")
                {
                    string sArchivo = Archivo.FileName;
                    int    nPos     = sArchivo.LastIndexOf("\\");
                    sNombre = sArchivo.Substring(nPos + 1, sArchivo.Length - nPos - 1);
                }
                else
                {
                    sNombre = txtArchivoOld.Text;
                }
            }

            #region Obtengo el id del archivo en Atenea.
            //Si no hay nombre de archivo lo dejamos en NULL porque puede ser
            //que el registro no tuviera documento o que lo tuviera pero ahora el usuario lo está borrando
            if (this.hdnContentServer.Value != "" && sNombre != "")
            {
                idContentServer = long.Parse(this.hdnContentServer.Value);
            }
            #endregion
            #region Obtengo el contenido del archivo y lo guardo en ATENEA
            if (Archivo.ContentLength > 0)
            {
                ArchivoEnBinario = new Byte[Archivo.ContentLength];                   //Crear el array de bytes con la longitud del archivo
                Archivo.InputStream.Read(ArchivoEnBinario, 0, Archivo.ContentLength); //Forzar al control del archivo a cargar los datos en el array

                //Si he seleccionado un archivo, cargo el archivo en el ContenteServer y obtengo su identificador

                if (this.hdnContentServer.Value != "")
                {//Cuando hemos cargado la página ya teníamos un Id de documento en ATENEA
                    idContentServer = long.Parse(this.hdnContentServer.Value);
                    if (sNombre == txtArchivoOld.Text)
                    {//Si el nombre del nuevo archivo es el mismo que el inicial
                        IB.Conserva.ConservaHelper.ActualizarContenidoDocumento((long)idContentServer, ArchivoEnBinario);
                    }
                    else
                    {//El archivo a cargar es dierente
                        IB.Conserva.ConservaHelper.ActualizarDocumento((long)idContentServer, ArchivoEnBinario, sNombre);
                    }
                }
                else
                {
                    idContentServer = IB.Conserva.ConservaHelper.SubirDocumento(sNombre, ArchivoEnBinario);
                }
            }
            #endregion


            if (chkPrivado.Checked)
            {
                bPrivado = true;
            }
            if (chkLectura.Checked)
            {
                bLectura = true;
            }

            //controlar que no se haya subido archivo: e.g. solo link
            switch (hdnsTipo.Text)
            {
            case "A":     //Area
                switch (hdnsAccion.Text)
                {
                case "I":
                    DOCAREA.Insert(null, int.Parse(hdnnItem.Text), idContentServer, txtDescripcion.Text, txtLink.Text, sNombre, bPrivado, bLectura, int.Parse(txtNumEmpleado.Text));
                    break;

                case "U":
                    DOCAREA.Update(null, int.Parse(hdnnIDDOC.Text), idContentServer, int.Parse(hdnnItem.Text), txtDescripcion.Text, txtLink.Text, sNombre, bPrivado, bLectura, int.Parse(Session["IDFICEPI"].ToString()));
                    break;
                }
                break;

            case "D":     //Deficiencia
                switch (hdnsAccion.Text)
                {
                case "I":
                    DOCDEFICIENCIA.Insert(null, int.Parse(hdnnItem.Text), idContentServer, txtDescripcion.Text, txtLink.Text, sNombre, bPrivado, bLectura, int.Parse(txtNumEmpleado.Text));
                    break;

                case "U":
                    DOCDEFICIENCIA.Update(null, int.Parse(hdnnIDDOC.Text), idContentServer, int.Parse(hdnnItem.Text), txtDescripcion.Text, txtLink.Text, sNombre, bPrivado, bLectura, int.Parse(Session["IDFICEPI"].ToString()));
                    break;
                }
                break;
            }
        }
예제 #2
0
        private void Page_Load(object sender, System.EventArgs e)
        {
            txtArchivoOld.Attributes.Add("readonly", "readonly");
            txtAutor.Attributes.Add("readonly", "readonly");
            Session["bSubido"] = false;

            //if (Session["CATEG_SUPER"].ToString() == "A") strAutor = "<label name='lblAutor' class='enlace' onclick='obtenerAutor()'>Autor</label>";

            try
            {
                if (!Page.IsPostBack)
                {
                    hdnsTipo.Text   = Request.QueryString["sTipo"].ToString();
                    hdnnItem.Text   = Request.QueryString["nItem"].ToString();
                    hdnsAccion.Text = Request.QueryString["sAccion"].ToString();

                    hdnModoLectura.Text = Session["MODOLECTURA"].ToString();

                    if (hdnsAccion.Text == "I")
                    {
                        txtNumEmpleado.Text = Session["IDFICEPI"].ToString();
                        txtAutor.Text       = Session["NOMBRE"].ToString();
                    }
                    else if (hdnsAccion.Text == "U")
                    {
                        switch (hdnsTipo.Text)
                        {
                        case "A":
                            DOCAREA oDocA = DOCAREA.Select(null, int.Parse(Request.QueryString["nIDDOC"].ToString()), false);
                            hdnnIDDOC.Text      = oDocA.t083_iddocut.ToString();
                            txtDescripcion.Text = oDocA.t083_descripcion;
                            txtLink.Text        = oDocA.t083_weblink;
                            txtArchivoOld.Text  = oDocA.t083_nombrearchivo;

                            if (oDocA.t083_privado)
                            {
                                chkPrivado.Checked = true;
                            }
                            else
                            {
                                chkPrivado.Checked = false;
                            }
                            if (oDocA.t083_modolectura)
                            {
                                chkLectura.Checked = true;
                            }
                            else
                            {
                                chkLectura.Checked = false;
                            }

                            txtNumEmpleado.Text = oDocA.t083_autor.ToString();
                            txtAutor.Text       = oDocA.DesAutor + "   (" + oDocA.t083_fecha.ToString() + ")";
                            txtAutorModif.Text  = oDocA.DesAutorModif + "   (" + oDocA.t083_fechamodif.ToString() + ")";

                            //Si el usuario no es ni el autor ni es administrador, se deshabilitan las características.
                            //if (oDocT.t063_autor.ToString() != Session["NUM_EMPLEADO_ENTRADA"].ToString() && Session["CATEG_SUPER"].ToString() != "A")
                            //{
                            //    chkPrivado.Enabled = false;
                            //    chkLectura.Enabled = false;
                            //    chkGestion.Enabled = false;
                            //}
                            break;

                        case "D":
                            DOCDEFICIENCIA oDocD = DOCDEFICIENCIA.Select(null, int.Parse(Request.QueryString["nIDDOC"].ToString()), false);
                            hdnnIDDOC.Text      = oDocD.t084_iddocut.ToString();
                            txtDescripcion.Text = oDocD.t084_descripcion;
                            txtLink.Text        = oDocD.t084_weblink;
                            txtArchivoOld.Text  = oDocD.t084_nombrearchivo;

                            if (oDocD.t084_privado)
                            {
                                chkPrivado.Checked = true;
                            }
                            else
                            {
                                chkPrivado.Checked = false;
                            }
                            if (oDocD.t084_modolectura)
                            {
                                chkLectura.Checked = true;
                            }
                            else
                            {
                                chkLectura.Checked = false;
                            }

                            txtNumEmpleado.Text = oDocD.t084_autor.ToString();
                            txtAutor.Text       = oDocD.DesAutor + "   (" + oDocD.t084_fecha.ToString() + ")";
                            txtAutorModif.Text  = oDocD.DesAutorModif + "   (" + oDocD.t084_fechamodif.ToString() + ")";
                            break;

                        case "PT":
                            /*DOCUPT oDocPT = DOCUPT.Select(null, int.Parse(Request.QueryString["nIDDOC"].ToString()), false);
                             * hdnnIDDOC.Text = oDocPT.t062_iddocupt.ToString();
                             * txtDescripcion.Text = oDocPT.t062_descripcion;
                             * txtLink.Text = oDocPT.t062_weblink;
                             * txtArchivoOld.Text = oDocPT.t062_nombrearchivo;
                             *
                             * if (oDocPT.t062_privado) chkPrivado.Checked = true;
                             * else chkPrivado.Checked = false;
                             * if (oDocPT.t062_modolectura) chkLectura.Checked = true;
                             * else chkLectura.Checked = false;
                             * if (oDocPT.t062_tipogestion) chkGestion.Checked = true;
                             * else chkGestion.Checked = false;
                             *
                             * txtNumEmpleado.Text = oDocPT.t062_autor.ToString();
                             * txtAutor.Text = oDocPT.DesAutor + "   (" + oDocPT.t062_fecha.ToString() + ")";
                             * txtAutorModif.Text = oDocPT.DesAutorModif + "   (" + oDocPT.t062_fechamodif.ToString() + ")";
                             *
                             * //Si el usuario no es ni el autor ni es administrador, se deshabilitan las características.
                             * if (oDocPT.t062_autor.ToString() != Session["NUM_EMPLEADO_ENTRADA"].ToString() && Session["CATEG_SUPER"].ToString() != "A")
                             * {
                             *  chkPrivado.Enabled = false;
                             *  chkLectura.Enabled = false;
                             *  chkGestion.Enabled = false;
                             * }
                             */
                            break;

                        case "PE":
                            /*DOCUPE oDocPE = DOCUPE.Select(null, int.Parse(Request.QueryString["nIDDOC"].ToString()), false);
                             * hdnnIDDOC.Text = oDocPE.t068_iddocupe.ToString();
                             * txtDescripcion.Text = oDocPE.t068_descripcion;
                             * txtLink.Text = oDocPE.t068_weblink;
                             * txtArchivoOld.Text = oDocPE.t068_nombrearchivo;
                             *
                             * if (oDocPE.t068_privado) chkPrivado.Checked = true;
                             * else chkPrivado.Checked = false;
                             * if (oDocPE.t068_modolectura) chkLectura.Checked = true;
                             * else chkLectura.Checked = false;
                             * if (oDocPE.t068_tipogestion) chkGestion.Checked = true;
                             * else chkGestion.Checked = false;
                             *
                             * txtNumEmpleado.Text = oDocPE.t068_autor.ToString();
                             * txtAutor.Text = oDocPE.DesAutor + "   (" + oDocPE.t068_fecha.ToString() + ")";
                             * txtAutorModif.Text = oDocPE.DesAutorModif + "   (" + oDocPE.t068_fechamodif.ToString() + ")";
                             *
                             * //Si el usuario no es ni el autor ni es administrador, se deshabilitan las características.
                             * if (oDocPE.t068_autor.ToString() != Session["NUM_EMPLEADO_ENTRADA"].ToString() && Session["CATEG_SUPER"].ToString() != "A")
                             * {
                             *  chkPrivado.Enabled = false;
                             *  chkLectura.Enabled = false;
                             *  chkGestion.Enabled = false;
                             * }
                             */
                            break;
                        }
                    }
                }
                else
                {
                    Session["bSubido"] = true;
                    Grabar();
                    EsPostBack = "true";
                }
            }
            catch (System.OutOfMemoryException)
            {
                //Si el archivo a subir es demasiado grande, se produce un error por falta de memoria.
                //La ventana de la barra de progreso ya avisa al usuario de esta situación y cierra esta ventana.
            }
            catch (ConservaException cex)
            {
                this.hdnError.Value = Utilidades.MsgErrorConserva("W", cex);
            }
            catch (Exception ex)
            {
                this.hdnError.Value = "Error: " + ex.Message + (char)10;
                if (ex.InnerException != null)
                {
                    this.hdnError.Value += "Detalle error: " + ex.InnerException.Message;
                }
            }
        }
    protected void Page_Load(object sender, EventArgs e)
    {
        string sTipo          = Request.QueryString["sTipo"].ToString();
        int    nIDDOC         = int.Parse(Request.QueryString["nIDDOC"].ToString());
        string sNombreArchivo = "";
        long?  t2_iddocumento = null;

        byte[] ArchivoBinario = null;

        Response.ClearContent();
        Response.ClearHeaders();
        Response.Buffer      = true;
        Response.ContentType = "application/octet-stream";
        try
        {
            switch (sTipo)
            {
            case "A":     // AREA
                DOCAREA oDocA = DOCAREA.Select(null, nIDDOC, true);
                sNombreArchivo = oDocA.t083_nombrearchivo;
                t2_iddocumento = oDocA.t2_iddocumento;
                break;

            case "D":     // DEFICIENCIA
                DOCDEFICIENCIA oDocD = DOCDEFICIENCIA.Select(null, nIDDOC, true);
                sNombreArchivo = oDocD.t084_nombrearchivo;
                t2_iddocumento = oDocD.t2_iddocumento;
                break;
            }

            if (t2_iddocumento != null)
            {
                ArchivoBinario = IB.Conserva.ConservaHelper.ObtenerDocumento((long)t2_iddocumento).content;
            }
            Response.AddHeader("content-disposition", String.Format("attachment;filename={0}", sNombreArchivo));
            //Response.AddHeader("Content-Disposition", "attachment; filename=\"" + sNombreArchivo + "\"");
            Response.BinaryWrite(ArchivoBinario);

            //if (Response.IsClientConnected) Response.Flush();
            //Response.Close();
            Response.End();
        }
        catch (ConservaException cex)
        {
            this.hdnError.Value = Utilidades.MsgErrorConserva("R", cex);
        }
        //catch (System.Web.HttpException hexc)
        //{
        //}
        catch (Exception ex)
        {
            this.hdnError.Value = "No se ha podido obtener el archivo." + (char)10 + (char)10 + " Error: " + ex.Message + (char)10;
            if (ex.InnerException != null)
            {
                this.hdnError.Value += "Detalle error: " + ex.InnerException.Message;
            }
        }
        //Response.Flush();
        finally
        {
            if (this.hdnError.Value == "")
            {
                Response.Close();
                //Response.End();
            }
        }
    }