예제 #1
0
    protected void Page_Load(object sender, EventArgs e)
    {
        #region Control de sesión
        if (Session["IDRED"] == null)
        {
            try
            {
                Response.Redirect("~/SesionCaducadaModal.aspx", true);
            }
            catch (System.Threading.ThreadAbortException) { return; }
        }
        #endregion
        string   sTipo  = Request.QueryString["sTipo"].ToString();
        string[] sIDDOC = null;
        int      nIDDOC = 0;
        switch (sTipo)
        {
        case "TIF":
        case "TAD":
        case "TAE":
            sIDDOC = Regex.Split(Request.QueryString["nIDDOC"].ToString(), "datos");
            break;

        case "CVTCUR":
        case "CVTCUR_IMP":
        case "CVTEXAMEN":
        case "CVTCERT":
        case "CVTEXAMEN2":
            sIDDOC = Regex.Split(Request.QueryString["nIDDOC"].ToString(), "datos");
            break;

        default:
            try { nIDDOC = int.Parse(Request.QueryString["nIDDOC"].ToString()); }
            catch (Exception e1)
            {
                string sError = "Descargar.aspx->Page_Load. Tipo=" + sTipo + " Id documento=" + Request.QueryString["nIDDOC"].ToString();
                sError += " Ficepi=" + Session["IDFICEPI_PC_ACTUAL"].ToString() + " Error=" + e1.Message;
                throw (new Exception(sError));
            }
            break;
        }
        #region Pruebas
        //string sPath = "", sNomFich="";

        ////sPath = @"../../Upload/634527150288235168.txt";
        ////sPath = Server.MapPath(@"/Upload/634527150288235168.txt");
        ////sPath = @"d:\inetpub\wwwroot\SUPER\Upload\634527150288235168.txt";
        //if (Request.QueryString["sPath"] != null)
        //{
        //    sNomFich = Utilidades.decodpar(Request.QueryString["sPath"].ToString());
        //    //sNomFich = "pepe.xml";
        //    //sPath = Server.MapPath(@"/SUPER/Upload/") + @"\" + sNomFich;
        //    if (System.Configuration.ConfigurationManager.ConnectionStrings["ENTORNO"].ToString() == "D")
        //        sPath = Server.MapPath(@"/SUPER/Upload/") + sNomFich;
        //    else
        //        sPath = Server.MapPath(@"/Upload/") + sNomFich;
        //        //sPath = @"d:\inetpub\wwwroot\SUPER\Upload\634527150288235168.txt";
        //        //sPath = Server.MapPath(@"/Upload/634527150288235168.txt");

        //}
        ////sPath = Server.MapPath(@"/Upload/634527150288235168.xml");
        ////sNomFich = "634527150288235168.txt";
        #endregion
        string sNombreArchivo = "";
        byte[] ArchivoBinario = null;
        long?  t2_iddocumento = null;
        Response.ClearContent();
        Response.ClearHeaders();
        Response.Buffer = true;
        if (Request.QueryString["descargaToken"] != null)
        {
            Response.AppendCookie(new HttpCookie("fileDownloadToken", Request.QueryString["descargaToken"].ToString())); //downloadTokenValue will have been provided in the form submit via the hidden input field
        }
        Response.ContentType = "application/octet-stream";
        try
        {
            #region Leer archivo en función de la tabla solicitada
            switch (sTipo)
            {
            case "AS_T":                                           //Asunto de Bitácora de TAREA
                DOCASU_T oDocAS_T = DOCASU_T.Select(null, nIDDOC); //, true);
                sNombreArchivo = oDocAS_T.t602_nombrearchivo;
                t2_iddocumento = oDocAS_T.t2_iddocumento;
                //if (t2_iddocumento == null) ArchivoBinario = oDocAS_T.t602_archivo;
                break;

            case "AC_T":                                           //Acción de Bitácora de TAREA
                DOCACC_T oDocAC_T = DOCACC_T.Select(null, nIDDOC); //, true);
                sNombreArchivo = oDocAC_T.t603_nombrearchivo;
                t2_iddocumento = oDocAC_T.t2_iddocumento;
                //if (t2_iddocumento == null) ArchivoBinario = oDocAC_T.t603_archivo;
                break;

            case "AS_PT":                                             //Asunto de Bitácora de PT
                DOCASU_PT oDocAS_PT = DOCASU_PT.Select(null, nIDDOC); //, true);
                sNombreArchivo = oDocAS_PT.t411_nombrearchivo;
                t2_iddocumento = oDocAS_PT.t2_iddocumento;
                //if (t2_iddocumento == null) ArchivoBinario = oDocAS_PT.t411_archivo;
                break;

            case "AC_PT":                                             //Acción de Bitácora de PT
                DOCACC_PT oDocAC_PT = DOCACC_PT.Select(null, nIDDOC); //, true);
                sNombreArchivo = oDocAC_PT.t412_nombrearchivo;
                t2_iddocumento = oDocAC_PT.t2_iddocumento;
                //if (t2_iddocumento == null) ArchivoBinario = oDocAC_PT.t412_archivo;
                break;

            case "AS":                                       //Asunto de Bitácora
            case "AS_PE":                                    //Asunto de Bitácora
                DOCASU oDocAS = DOCASU.Select(null, nIDDOC); //, true);
                sNombreArchivo = oDocAS.t386_nombrearchivo;
                t2_iddocumento = oDocAS.t2_iddocumento;
                //if (t2_iddocumento == null) ArchivoBinario = oDocAS.t386_archivo;
                break;

            case "AC":                                       //Acción de Bitácora
            case "AC_PE":                                    //Acción de Bitácora
                DOCACC oDocAC = DOCACC.Select(null, nIDDOC); //, true);
                sNombreArchivo = oDocAC.t387_nombrearchivo;
                t2_iddocumento = oDocAC.t2_iddocumento;
                //if (t2_iddocumento == null) ArchivoBinario = oDocAC.t387_archivo;
                break;

            case "IAP_T":
            case "T":
                DOCUT oDocT = DOCUT.Select(null, nIDDOC);    //, true);
                sNombreArchivo = oDocT.t363_nombrearchivo;
                t2_iddocumento = oDocT.t2_iddocumento;
                //if (t2_iddocumento == null) ArchivoBinario = oDocT.t363_archivo;
                break;

            case "A":                                     //Actividad
                DOCUA oDocA = DOCUA.Select(null, nIDDOC); //, true);
                sNombreArchivo = oDocA.t365_nombrearchivo;
                t2_iddocumento = oDocA.t2_iddocumento;
                //if (t2_iddocumento == null) ArchivoBinario = oDocA.t365_archivo;
                break;

            case "F":                                     //Fase
                DOCUF oDocF = DOCUF.Select(null, nIDDOC); //, true);
                sNombreArchivo = oDocF.t364_nombrearchivo;
                t2_iddocumento = oDocF.t2_iddocumento;
                //if (t2_iddocumento == null) ArchivoBinario = oDocF.t364_archivo;
                break;

            case "PT":                                       //Proyecto Técnico
                DOCUPT oDocPT = DOCUPT.Select(null, nIDDOC); //, true);
                sNombreArchivo = oDocPT.t362_nombrearchivo;
                t2_iddocumento = oDocPT.t2_iddocumento;
                //if (t2_iddocumento == null) ArchivoBinario = oDocPT.t362_archivo;
                break;

            case "PE":                                       //Proyecto Económico
            case "PSN":                                      //Proyecto Económico
                DOCUPE oDocPE = DOCUPE.Select(null, nIDDOC); //, true);
                sNombreArchivo = oDocPE.t368_nombrearchivo;
                t2_iddocumento = oDocPE.t2_iddocumento;
                //if (t2_iddocumento == null) ArchivoBinario = oDocPE.t368_archivo;
                break;

            case "PEF":                                                           //Espacio de acuerdo de Proyecto Económico
                DOC_ACUERDO_PROY oDocPEF = DOC_ACUERDO_PROY.Select(null, nIDDOC); //, true);
                sNombreArchivo = oDocPEF.t640_nombrearchivo;
                t2_iddocumento = oDocPEF.t2_iddocumento;
                //if (t2_iddocumento == null) ArchivoBinario = oDocPEF.t640_archivo;
                break;

            case "HT":                                    //Hito lineal
            case "HM":                                    //Hito discontinuo
                DOCUH oDocH = DOCUH.Select(null, nIDDOC); //, true);
                sNombreArchivo = oDocH.t366_nombrearchivo;
                t2_iddocumento = oDocH.t2_iddocumento;
                //if (t2_iddocumento == null) ArchivoBinario = oDocH.t366_archivo;
                break;

            case "HF":                                       //Hito de fecha
                DOCUHE oDocHE = DOCUHE.Select(null, nIDDOC); //, true);
                sNombreArchivo = oDocHE.t367_nombrearchivo;
                t2_iddocumento = oDocHE.t2_iddocumento;
                //if (t2_iddocumento == null) ArchivoBinario = oDocHE.t367_archivo;
                break;

            case "OF":     //ORDEN DE FACTURACIÓN
                DOCUOF oDocOF = DOCUOF.Select(null, nIDDOC, true);
                sNombreArchivo = oDocOF.t624_nombrearchivo;
                t2_iddocumento = oDocOF.t2_iddocumento;
                //if (t2_iddocumento == null) ArchivoBinario = oDocOF.t624_archivo;
                break;

            case "PL_OF":                                                       //PLANTILLA ORDEN DE FACTURACIÓN
                PLANTILLADOCUOF oDocPOF = PLANTILLADOCUOF.Select(null, nIDDOC); //, true);
                sNombreArchivo = oDocPOF.t631_nombrearchivo;
                t2_iddocumento = oDocPOF.t2_iddocumento;
                //if (t2_iddocumento == null) ArchivoBinario = oDocPOF.t631_archivo;
                break;

            case "EC":                                       //ESPACIO DE COMUNICACION
                DOCUEC oDocEC = DOCUEC.Select(null, nIDDOC); //, true);
                sNombreArchivo = oDocEC.t658_nombrearchivo;
                t2_iddocumento = oDocEC.t2_iddocumento;
                //if (t2_iddocumento == null) ArchivoBinario = oDocEC.t658_archivo;
                break;

            case "DI":                                                                                 //DIALOGO DE ALERTA
                SUPER.Capa_Datos.DOCDIALOGO oDocDI = SUPER.Capa_Datos.DOCDIALOGO.Select(null, nIDDOC); //, true);
                sNombreArchivo = oDocDI.t837_nombrearchivo;
                t2_iddocumento = oDocDI.t2_iddocumento;
                //if (t2_iddocumento == null) ArchivoBinario = oDocDI.t837_archivo;
                break;

            case "SC":                                                                       //SOLICITUD DE CERTIFICADO
                SUPER.BLL.DOCSOLICITUD oDocSC = SUPER.BLL.DOCSOLICITUD.Select(null, nIDDOC); //, true);
                sNombreArchivo = oDocSC.t697_nombrearchivo;
                t2_iddocumento = oDocSC.t2_iddocumento;
                //if (t2_iddocumento == null) ArchivoBinario = oDocSC.t697_archivo;
                break;

            case "CVTEXAMEN":     //CURVIT EXAMEN
                if (Utilidades.isNumeric(sIDDOC[0].ToString()))
                {
                    Examen oDocCVTE = Examen.SelectDoc(null, int.Parse(sIDDOC[0].ToString()), int.Parse(sIDDOC[1].ToString()));
                    sNombreArchivo = oDocCVTE.T591_NDOC;
                    //ArchivoBinario = oDocCVTE.T591_DOC;
                    t2_iddocumento = oDocCVTE.t2_iddocumento;
                    //if (t2_iddocumento == null) ArchivoBinario = oDocCVTE.T591_DOC;
                }
                else
                {
                    SUPER.DAL.DocuAux oDoc = SUPER.DAL.DocuAux.GetDocumento(null, sIDDOC[0].ToString());
                    sNombreArchivo = oDoc.t686_nombre;
                    t2_iddocumento = oDoc.t2_iddocumento;
                }
                break;

            case "CVTEXAMEN2":     //DESDE VARIABLE DE SESIÓN. NO ESTÁ AÚN GRABADO...
                sNombreArchivo = sIDDOC[1];
                ArchivoBinario = (byte[])Session[Utilidades.decodpar(sIDDOC[0])];
                break;

            case "CVTCERT":     //CURVIT CERTIFICADO
                if (Utilidades.isNumeric(sIDDOC[0].ToString()))
                {
                    Certificado oDocCVTC = Certificado.SelectDoc(null, int.Parse(sIDDOC[0].ToString()), int.Parse(sIDDOC[1].ToString()));
                    sNombreArchivo = oDocCVTC.T593_NDOC;
                    //ArchivoBinario = oDocCVTC.T593_DOC;
                    t2_iddocumento = oDocCVTC.t2_iddocumento;
                    //if (t2_iddocumento == null) ArchivoBinario = oDocCVTC.T593_DOC;
                }
                else
                {
                    SUPER.DAL.DocuAux oDoc = SUPER.DAL.DocuAux.GetDocumento(null, sIDDOC[0].ToString());
                    sNombreArchivo = oDoc.t686_nombre;
                    t2_iddocumento = oDoc.t2_iddocumento;
                }
                break;

            case "TIF":     //CURVIT TITULO IDIOMA FICEPI
                if (Utilidades.isNumeric(sIDDOC[0].ToString()))
                {
                    TituloIdiomaFic o = TituloIdiomaFic.SelectDoc(null, int.Parse(sIDDOC[0].ToString()));
                    sNombreArchivo = o.T021_NDOC;
                    t2_iddocumento = o.t2_iddocumento;
                }
                else
                {
                    SUPER.DAL.DocuAux oDoc = SUPER.DAL.DocuAux.GetDocumento(null, sIDDOC[0].ToString());
                    sNombreArchivo = oDoc.t686_nombre;
                    t2_iddocumento = oDoc.t2_iddocumento;
                }
                break;

            case "CVTCUR":     //CURVIT CURSO RECIBIDOS
                if (Utilidades.isNumeric(sIDDOC[0].ToString()))
                {
                    Curso oCurso = Curso.SelectDoc(null, int.Parse(sIDDOC[0].ToString()), int.Parse(sIDDOC[1].ToString()));
                    sNombreArchivo = oCurso.T575_NDOC;
                    //ArchivoBinario = oCurso.T575_DOC;
                    t2_iddocumento = oCurso.t2_iddocumento;
                    //if (t2_iddocumento == null) ArchivoBinario = oCurso.T575_DOC;
                }
                else
                {
                    SUPER.DAL.DocuAux oDoc = SUPER.DAL.DocuAux.GetDocumento(null, sIDDOC[0].ToString());
                    sNombreArchivo = oDoc.t686_nombre;
                    t2_iddocumento = oDoc.t2_iddocumento;
                }
                break;

            case "CVTCUR_IMP":     //CURVIT CURSO IMPARTIDOS
                if (Utilidades.isNumeric(sIDDOC[0].ToString()))
                {
                    Curso oCursoImp = Curso.SelectDoc2(null, int.Parse(sIDDOC[0].ToString()), int.Parse(sIDDOC[1].ToString()));
                    sNombreArchivo = oCursoImp.T580_NDOC;
                    //ArchivoBinario = oCursoImp.T580_DOC;
                    t2_iddocumento = oCursoImp.t2_iddocumento;
                    //if (t2_iddocumento == null) ArchivoBinario = oCursoImp.T580_DOC;
                }
                else
                {
                    SUPER.DAL.DocuAux oDoc = SUPER.DAL.DocuAux.GetDocumento(null, sIDDOC[0].ToString());
                    sNombreArchivo = oDoc.t686_nombre;
                    t2_iddocumento = oDoc.t2_iddocumento;
                }
                break;

            case "CVTDOCTIT":     //CURVIT TITULACION DOCUMENTO TITULO
                Titulacion oTitulo = Titulacion.SelectDoc(null, nIDDOC, "Tit");
                sNombreArchivo = oTitulo.NDOC;
                //ArchivoBinario = oTitulo.DOC;
                t2_iddocumento = oTitulo.t2_iddocumento;
                //if (t2_iddocumento == null) ArchivoBinario = oTitulo.DOC;
                break;

            case "CVTDOCEX":     //CURVIT TITULACION DOCUMENTO EXPEDIENTE
                Titulacion oTitulo1 = Titulacion.SelectDoc(null, nIDDOC, "Ex");
                sNombreArchivo = oTitulo1.NDOC;
                //ArchivoBinario = oTitulo1.DOC;
                t2_iddocumento = oTitulo1.t2_iddocumentoExpte;
                //if (t2_iddocumento == null) ArchivoBinario = oTitulo1.DOC;
                break;

            case "TAD":     //CURVIT TITULO FICEPI
                if (Utilidades.isNumeric(sIDDOC[0].ToString()))
                {
                    TituloFicepi o = TituloFicepi.Select(int.Parse(sIDDOC[0].ToString()));
                    sNombreArchivo = o.T012_NDOCTITULO;
                    t2_iddocumento = o.t2_iddocumento;
                }
                else
                {
                    SUPER.DAL.DocuAux oDoc = SUPER.DAL.DocuAux.GetDocumento(null, sIDDOC[0].ToString());
                    sNombreArchivo = oDoc.t686_nombre;
                    t2_iddocumento = oDoc.t2_iddocumento;
                }
                break;

            case "TAE":     //CURVIT Expediente TITULO FICEPI
                if (Utilidades.isNumeric(sIDDOC[0].ToString()))
                {
                    TituloFicepi o = TituloFicepi.Select(int.Parse(sIDDOC[0].ToString()));
                    sNombreArchivo = o.T012_NDOCEXPDTE;
                    t2_iddocumento = o.t2_iddocumentoExpte;
                }
                else
                {
                    SUPER.DAL.DocuAux oDoc = SUPER.DAL.DocuAux.GetDocumento(null, sIDDOC[0].ToString());
                    sNombreArchivo = oDoc.t686_nombre;
                    t2_iddocumento = oDoc.t2_iddocumento;
                }
                break;
            }
            #endregion

            if (t2_iddocumento != null)
            {
                ArchivoBinario = IB.Conserva.ConservaHelper.ObtenerDocumento((long)t2_iddocumento).content;
            }

            Response.AddHeader("Content-Disposition", "attachment; filename=\"" + sNombreArchivo + "\"");
            if (HttpContext.Current.Request.Browser.Browser.ToString() == "Chrome")
            {
                Response.AddHeader("Content-Length", "999999999999");
            }
            Response.BinaryWrite(ArchivoBinario);

            if (Response.IsClientConnected)
            {
                Response.Flush();
            }
        }
        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.<br /><br />Error: " + ex.Message;
            if (ex.InnerException != null)
            {
                this.hdnError.Value += "<br />Detalle error: " + ex.InnerException.Message;
            }
        }
        //Response.Flush();
        finally
        {
            if (this.hdnError.Value == "")
            {
                Response.Close();
                //Response.End();
            }
        }
    }