Пример #1
0
    protected void Page_Load(object sender, EventArgs e)
    {
        //-- Se puede exportar
        //-- 1 - UNA SOLA ENCUENTAS
        //-- 2 - TODAS LAS ENCUESTAS
        //---------------------------------------------
        if (Request.QueryString.Count == 0)
        {
            //-- Exporto TODAS
            //------------------------
            exportAll = true;
        }
        else
        if (Request["EncuestaNro"] == null || Request["Listado"] == null)
        {
            //-- Exporto UNA UNICA
            //------------------------
            exportAll    = false;
            mensaje.Text = "<span style='color:red;font-size:12px;'>ATENCION: Paso de parámetros incorrectos!!!</span>";
            return;
        }


        //-- Si estoy exportando una verifico que el usuario
        //-- logueado sea el DUEÑO.
        //--------------------------------------------------------
        if (exportAll == false)
        {
            Int32.TryParse(Request["EncuestaNro"].ToString(), out encuestaNro);
            Int32.TryParse(Request["listado"].ToString(), out listado);

            //-- Verifico que el UserId sea el dueño de la ENCUESTA
            //--------------------------------------------------------
            filterEncuesta.OpeUserId      = Helpers.Operators.Operadores_UniqueIdentifier.Igual;
            filterEncuesta.UserId         = MyUsers.GetLoggedUserId();
            filterEncuesta.OpeEncuestaNro = Helpers.Operators.Operadores_Int.Igual;
            filterEncuesta.EncuestaNro    = encuestaNro;
            DataTable dtEncuesta = busEncuesta.Search(filterEncuesta);
            if ((dtEncuesta != null && dtEncuesta.Rows.Count == 0) || listado == 0)
            {
                mensaje.Text = "<span style='color:red;font-size:12px;'>ATENCION: No hemos encontrado el Nro de Encuesta!!!</span>";
                return;
            }

            if (listado != 1 && listado != 2 && listado != 3)
            {
                mensaje.Text = "<span style='color:red;font-size:12px;'>ATENCION: Tipo de Reporte no válido. Contáctese con el Administrador!!!</span>";
                return;
            }
        }

        if (listado == 1)
        {
            try
            {
                #region Listado 1
                Listado_AlimentosPorEncuestasBus          bus    = new Listado_AlimentosPorEncuestasBus();
                Listado_AlimentosPorEncuestasEntityFilter filter = new Listado_AlimentosPorEncuestasEntityFilter();
                filter.OpeEncuestaNro = Helpers.Operators.Operadores_Int.Igual;
                filter.EncuestaNro    = encuestaNro;
                filter.OpeUserId      = Helpers.Operators.Operadores_UniqueIdentifier.Igual;
                filter.UserId         = MyUsers.GetLoggedUserId();
                filter.OrderBy        = "nombre";
                DataTable dtAlimentos = bus.Search(filter);
                if (dtAlimentos != null && dtAlimentos.Rows.Count > 0)
                {
                    ExportToExcel(dtAlimentos, 1);
                }
                #endregion
            }
            catch (Exception ex)
            {
                Logger.LogExceptionStatic(ex);
            }
        }
        else if (listado == 2)
        {
            try
            {
                #region Listado 2
                Listado_NutrientesPorEncuestasBus          busNutrientes    = new Listado_NutrientesPorEncuestasBus();
                Listado_NutrientesPorEncuestasEntityFilter filterNutrientes = new Listado_NutrientesPorEncuestasEntityFilter();
                filterNutrientes.OpeEncuestaNro = Helpers.Operators.Operadores_Int.Igual;
                filterNutrientes.EncuestaNro    = encuestaNro;
                filterNutrientes.OpeUserId      = Helpers.Operators.Operadores_UniqueIdentifier.Igual;
                filterNutrientes.UserId         = MyUsers.GetLoggedUserId();
                filterNutrientes.OrderBy        = "EncuestaNro, Nombre";
                DataTable dtAlimentos = busNutrientes.Search(filterNutrientes);
                if (dtAlimentos != null && dtAlimentos.Rows.Count > 0)
                {
                    ExportToExcel(dtAlimentos, 2);
                }
                #endregion
            }
            catch (Exception ex)
            {
                Logger.LogExceptionStatic(ex);
            }
        }
        else if (listado == 3)
        {
            try
            {
                #region Listado 3
                Listado_NutrientesPorAlimentosBus          busNutrientesPorAli    = new Listado_NutrientesPorAlimentosBus();
                Listado_NutrientesPorAlimentosEntityFilter filterNutrientesPorAli = new Listado_NutrientesPorAlimentosEntityFilter();
                filterNutrientesPorAli.OpeEncuestaNro = Helpers.Operators.Operadores_Int.Igual;
                filterNutrientesPorAli.EncuestaNro    = encuestaNro;
                filterNutrientesPorAli.OpeUserId      = Helpers.Operators.Operadores_UniqueIdentifier.Igual;
                filterNutrientesPorAli.UserId         = MyUsers.GetLoggedUserId();
                filterNutrientesPorAli.OrderBy        = "EncuestaNro, Alimento, Nutriente";
                DataTable dtAlimentos = busNutrientesPorAli.Search(filterNutrientesPorAli);
                if (dtAlimentos != null && dtAlimentos.Rows.Count > 0)
                {
                    ExportToExcel(dtAlimentos, 3);
                }
                #endregion
            }
            catch (Exception ex)
            {
                if (w != null)
                {
                    w.Close();
                }
                Logger.LogExceptionStatic(ex);
            }
        }
    }
    protected void Page_Load(object sender, EventArgs e)
    {
        //-- Se puede exportar
        //-- 1 - UNA SOLA ENCUENTAS
        //-- 2 - TODAS LAS ENCUESTAS => EncuestaNro = 0
        //------------------------------------------------
        if (Request["EncuestaNro"] == null || Request["Listado"] == null)
        {
            mensaje.Text = "<span style='color:red;font-size:12px;'>ATENCION: No hemos encontrado el Nro de Encuesta!!!</span>";
            return;
        }

        Int32.TryParse(Request["EncuestaNro"].ToString(), out encuestaNro);
        Int32.TryParse(Request["listado"].ToString(), out listado);

        bool isAdministrator = false;

        string[] aRolesUser = Roles.GetRolesForUser(MyUsers.GetLoggedUserName());
        foreach (string role in aRolesUser)
        {
            if (role.ToUpper() == "ADMINISTRADOR")
            {
                isAdministrator = true;
            }
        }

        //-- Si estoy exportando una verifico que el usuario
        //-- logueado sea el DUEÑO.
        //--------------------------------------------------------
        if (encuestaNro > 0)
        {
            if (isAdministrator == false)
            {
                //-- Verifico que el UserId sea el dueño de la ENCUESTA
                //--------------------------------------------------------
                filterEncuesta.OpeUserId      = Helpers.Operators.Operadores_UniqueIdentifier.Igual;
                filterEncuesta.UserId         = MyUsers.GetLoggedUserId();
                filterEncuesta.OpeEncuestaNro = Helpers.Operators.Operadores_Int.Igual;
                filterEncuesta.EncuestaNro    = encuestaNro;
                DataTable dtEncuesta = busEncuesta.Search(filterEncuesta);
                if ((dtEncuesta != null && dtEncuesta.Rows.Count == 0) || listado == 0)
                {
                    mensaje.Text = "<span style='color:red;font-size:12px;'>ATENCION: No hemos encontrado el Nro de Encuesta!!!</span>";
                    return;
                }
            }
        }

        if (listado != 1 && listado != 2 && listado != 3)
        {
            mensaje.Text = "<span style='color:red;font-size:12px;'>ATENCION: Tipo de Reporte no válido. Contáctese con el Administrador!!!</span>";
            return;
        }

        FileStream MyFileStream;
        string     nameFileEncuesta = string.Format("Encuesta-{0}.xls", encuestaNro.ToString().Trim());
        string     fileName         = string.Format("{0}.xls", Guid.NewGuid());

        string applicationPath = Server.MapPath(Request.ApplicationPath);

        if (!applicationPath.EndsWith(@"\"))
        {
            applicationPath = applicationPath.Trim() + @"\";
        }

        string fullNameFile = string.Format("{0}Excels\\{1}", applicationPath, fileName);

        //string fullNameFile = string.Format("{1}Excels\\{1}", applicationPath, fileName);

        if (listado == 1)
        {
            try
            {
                #region Listado 1
                Listado_AlimentosPorEncuestasBus          bus    = new Listado_AlimentosPorEncuestasBus();
                Listado_AlimentosPorEncuestasEntityFilter filter = new Listado_AlimentosPorEncuestasEntityFilter();
                if (encuestaNro > 0)
                {
                    filter.OpeEncuestaNro = Helpers.Operators.Operadores_Int.Igual;
                    filter.EncuestaNro    = encuestaNro;
                }
                if (!isAdministrator)
                {
                    filter.OpeUserId = Helpers.Operators.Operadores_UniqueIdentifier.Igual;
                    filter.UserId    = MyUsers.GetLoggedUserId();
                }
                filter.OrderBy     = "EncuestaNro, Nombre";
                filter.OpeCantidad = Helpers.Operators.Operadores_Numeric.Igual;
                filter.Cantidad    = 1;
                DataTable dtAlimentos = bus.Search(filter);
                if (dtAlimentos != null && dtAlimentos.Rows.Count > 0)
                {
                    FileStream fs = new FileStream(fullNameFile, FileMode.Create, FileAccess.ReadWrite);
                    w = new StreamWriter(fs);
                    EscribeCabeceraAlimento(dtAlimentos.Rows[0]);

                    int index = 1;
                    foreach (DataRow dr in dtAlimentos.Rows)
                    {
                        if (index == 1)
                        {
                            index = 2;
                        }
                        else
                        {
                            index = 1;
                        }
                        EscribeLineaAlimento(dr, index);
                    }
                    EscribePiePagina();
                    w.Close();
                }
                #endregion
            }
            catch (Exception ex)
            {
                mensaje.Text    = string.Format("<div style='padding:10px;background-color:Red;color:white;font-family:Arial;font-size:12px;'><b>{0}</b></div>", ex.Message);
                mensaje.Visible = true;
                if (w != null)
                {
                    w.Close();
                }
                Logger.LogExceptionStatic(ex);
            }
        }
        else if (listado == 2)
        {
            try
            {
                #region Listado 2
                Listado_NutrientesPorEncuestasBus          busNutrientes    = new Listado_NutrientesPorEncuestasBus();
                Listado_NutrientesPorEncuestasEntityFilter filterNutrientes = new Listado_NutrientesPorEncuestasEntityFilter();
                if (encuestaNro > 0)
                {
                    filterNutrientes.OpeEncuestaNro = Helpers.Operators.Operadores_Int.Igual;
                    filterNutrientes.EncuestaNro    = encuestaNro;
                }
                if (!isAdministrator)
                {
                    filterNutrientes.OpeUserId = Helpers.Operators.Operadores_UniqueIdentifier.Igual;
                    filterNutrientes.UserId    = MyUsers.GetLoggedUserId();
                }
                filterNutrientes.OrderBy = "EncuestaNro, Nombre";
                DataTable dtAlimentos = busNutrientes.Search(filterNutrientes);
                if (dtAlimentos != null && dtAlimentos.Rows.Count > 0)
                {
                    FileStream fs = new FileStream(fullNameFile, FileMode.Create, FileAccess.ReadWrite);
                    w = new StreamWriter(fs);
                    EscribeCabeceraNutriente(dtAlimentos.Rows[0]);

                    int index = 1;
                    foreach (DataRow dr in dtAlimentos.Rows)
                    {
                        if (index == 1)
                        {
                            index = 2;
                        }
                        else
                        {
                            index = 1;
                        }
                        EscribeLineaNutriente(dr, index);
                    }
                    EscribePiePagina();
                    w.Close();
                }
                #endregion
            }
            catch (Exception ex)
            {
                mensaje.Text    = string.Format("<div style='padding:10px;background-color:Red;color:white;font-family:Arial;font-size:12px;'><b>{0}</b></div>", ex.Message);
                mensaje.Visible = true;
                if (w != null)
                {
                    w.Close();
                }
                Logger.LogExceptionStatic(ex);
            }
        }
        else if (listado == 3)
        {
            try
            {
                #region Listado 3
                Listado_NutrientesPorAlimentosBus          busNutrientesPorAli    = new Listado_NutrientesPorAlimentosBus();
                Listado_NutrientesPorAlimentosEntityFilter filterNutrientesPorAli = new Listado_NutrientesPorAlimentosEntityFilter();
                if (encuestaNro > 0)
                {
                    filterNutrientesPorAli.OpeEncuestaNro = Helpers.Operators.Operadores_Int.Igual;
                    filterNutrientesPorAli.EncuestaNro    = encuestaNro;
                }
                if (!isAdministrator)
                {
                    filterNutrientesPorAli.OpeUserId = Helpers.Operators.Operadores_UniqueIdentifier.Igual;
                    filterNutrientesPorAli.UserId    = MyUsers.GetLoggedUserId();
                }
                filterNutrientesPorAli.OrderBy = "EncuestaNro, Alimento, Nutriente";
                DataTable dtAlimentos = busNutrientesPorAli.Search(filterNutrientesPorAli);
                if (dtAlimentos != null && dtAlimentos.Rows.Count > 0)
                {
                    FileStream fs = new FileStream(fullNameFile, FileMode.Create, FileAccess.ReadWrite);
                    w = new StreamWriter(fs);
                    EscribeCabeceraNutrientePorAli(dtAlimentos.Rows[0]);

                    int index = 1;
                    foreach (DataRow dr in dtAlimentos.Rows)
                    {
                        if (index == 1)
                        {
                            index = 2;
                        }
                        else
                        {
                            index = 1;
                        }
                        EscribeLineaNutrientePorAli(dr, index);
                    }
                    EscribePiePagina();
                    w.Close();
                }
                #endregion
            }
            catch (Exception ex)
            {
                mensaje.Text    = string.Format("<div style='padding:10px;background-color:Red;color:white;font-family:Arial;font-size:12px;'><b>{0}</b></div>", ex.Message);
                mensaje.Visible = true;
                if (w != null)
                {
                    w.Close();
                }
                Logger.LogExceptionStatic(ex);
            }
        }

        MyFileStream = new FileStream(fullNameFile, FileMode.Open);
        long   FileSize = MyFileStream.Length;
        byte[] Buffer   = new byte[(int)FileSize];
        MyFileStream.Read(Buffer, 0, (int)MyFileStream.Length);
        MyFileStream.Close();

        Response.Clear();
        Response.Buffer = false;
        Response.AppendHeader("Content-Type", "application/ms-excel");
        Response.AddHeader("Content-Disposition", string.Format("attachment; filename={0}", nameFileEncuesta));
        Response.AppendHeader("Content-Transfer-Encoding", "binary");
        Response.BinaryWrite(Buffer);
        Response.End();

        File.Delete(fullNameFile);
    }