Exemple #1
0
 protected void Page_Load(object sender, EventArgs e)
 {
     if (!IsPostBack)
     {
         _TipoReporte            = (this.Request["rpt"] != null ?  ReportesController.GetTipoReporte(this.Request["rpt"].ToString().ToLower()) : TipoReportePublicacion.Autor);
         HiddenTipoReporte.Value = ((int)_TipoReporte).ToString();
         ViewState["rpt"]        = _TipoReporte;
         _Paginacion             = new Paginacion()
         {
             FilasPorPagina = GridViewResultado.PageSize, PaginaActual = 1, IsNavigating = false
         };
         ViewState["busquedaHabilitada"] = false;
         ViewState["isSortDescending"]   = false;
         ViewState["paginacion"]         = _Paginacion;
         //CargarTodos(string.Empty, false);
         ShowMenusBusqueda(_TipoReporte);
     }
     else
     {
         _TipoReporte            = (ViewState["rpt"] != null ? (TipoReportePublicacion)ViewState["rpt"] : TipoReportePublicacion.Autor);
         HiddenTipoReporte.Value = ((int)_TipoReporte).ToString();
         _Titulos    = ViewState["titulos"] as List <TituloLibreriaView>;
         _Paginacion = ViewState["paginacion"] as Paginacion;
         //ShowMenusBusqueda(_TipoReporte);
         if (Request.Params["__EVENTTARGET"].Contains("TextBoxPaginaActual"))
         {
             string id = Request.Params["__EVENTARGUMENT"];
             PaginaSelected_Changed(id);
         }
     }
     this.ButtonBuscar.Attributes.Add("style", "z-index:1;");
 }
        public static TipoReportePublicacion GetTipoReporte(string tipoReporte)
        {
            TipoReportePublicacion tipo = TipoReportePublicacion.Autor;

            tipoReporte = (string.IsNullOrEmpty(tipoReporte) ? string.Empty : tipoReporte.ToLower());
            switch (tipoReporte)
            {
            case "year":
                tipo = TipoReportePublicacion.Anio;
                break;

            case "autor":
                tipo = TipoReportePublicacion.Autor;
                break;

            case "tipotexto":
                tipo = TipoReportePublicacion.TipoTexto;
                break;

            case "traductor":
                tipo = TipoReportePublicacion.Traductor;
                break;

            case "edicion":
                tipo = TipoReportePublicacion.Edicion;
                break;

            case "editorial":
                tipo = TipoReportePublicacion.Editorial;
                break;

            default:
                tipo = TipoReportePublicacion.Autor;
                break;
            }
            return(tipo);
        }
        public static string GetCampoOrdenacionReporte(TipoReportePublicacion tipoReporte)
        {
            string campoOrdenacion = "autor";

            switch (tipoReporte)
            {
            case TipoReportePublicacion.Anio:
                campoOrdenacion = "año";
                break;

            case TipoReportePublicacion.Autor:
                campoOrdenacion = "autor";
                break;

            case TipoReportePublicacion.TipoTexto:
                campoOrdenacion = "titulo";
                break;

            case TipoReportePublicacion.Traductor:
                campoOrdenacion = "año";
                break;

            case TipoReportePublicacion.Edicion:
                campoOrdenacion = "edicion";
                break;

            case TipoReportePublicacion.Editorial:
                campoOrdenacion = "editorial";
                break;

            default:
                campoOrdenacion = "autor";
                break;
            }
            return(campoOrdenacion);
        }
        public static string GetNombreTipoReporte(TipoReportePublicacion tipoReporte)
        {
            string nombreReporte = string.Empty;

            switch (tipoReporte)
            {
            case TipoReportePublicacion.Anio:
                nombreReporte = "Pulicaciones por Año";
                break;

            case TipoReportePublicacion.Autor:
                nombreReporte = "Pulicaciones por Autor";
                break;

            case TipoReportePublicacion.TipoTexto:
                nombreReporte = "Pulicaciones por Tipo Texto";
                break;

            case TipoReportePublicacion.Traductor:
                nombreReporte = "Pulicaciones por Traductor";
                break;

            case TipoReportePublicacion.Edicion:
                nombreReporte = "Pulicaciones por Edición";
                break;

            case TipoReportePublicacion.Editorial:
                nombreReporte = "Pulicaciones por Editorial";
                break;

            default:
                nombreReporte = "SIN NOMBRE";
                break;
            }
            return(nombreReporte);
        }
Exemple #5
0
    private void ShowMenusBusqueda(TipoReportePublicacion tipoReporte)
    {
        switch (tipoReporte)
        {
        case TipoReportePublicacion.Anio:
            this.LabelTipoReporte.Text = "Publicaciones por año";
            ////this.DivBotonBusqueda.Attributes.Add("style", "float:left; padding-left:30px;");
            this.DivGroupBusqueda.Attributes.Add("class", "input-group busqueda-custom");
            this.DivBotonBusqueda.Attributes.Add("class", "input-group-btn busqueda-custom");
            this.DivRangosBusqueda.Visible      = true;
            this.TextBoxBusqueda.Visible        = false;
            this.DivContenedorTipoTexto.Visible = false;
            this.DivContenedorFuncion.Visible   = false;
            this.Title = "Publicaciones por año";
            break;

        case TipoReportePublicacion.Autor:
            LabelTipoReporte.Text = "Publicaciones por Autor";
            Title = "Publicaciones por autor";
            this.DivRangosBusqueda.Visible      = false;
            this.TextBoxBusqueda.Visible        = true;
            this.DivContenedorTipoTexto.Visible = false;
            this.DivContenedorFuncion.Visible   = false;
            break;

        case TipoReportePublicacion.TipoTexto:
            LabelTipoReporte.Text = "Publicaciones por tipo texto";
            Title = "Publicaciones por tipo texto";
            ////this.DivBotonBusqueda.Attributes.Add("style", "float:left; padding-left:30px;");
            this.DivGroupBusqueda.Attributes.Add("class", "input-group busqueda-custom");
            this.DivBotonBusqueda.Attributes.Add("class", "input-group-btn busqueda-custom");
            this.DivRangosBusqueda.Visible      = false;
            this.TextBoxBusqueda.Visible        = false;
            this.DivContenedorTipoTexto.Visible = true;
            this.DivContenedorFuncion.Visible   = false;
            break;

        case TipoReportePublicacion.Traductor:
            LabelTipoReporte.Text = "Publicaciones por traductor";
            Title = "Publicaciones por traductor";
            this.TextBoxBusqueda.CssClass = "form-control clase";
            //this.TextBoxBusqueda.CssClass = "clase2";
            //this.TextBoxBusqueda.Attributes.Add("style", "float:left;");

            this.DivGroupBusqueda.Attributes.Add("class", "input-group busqueda-custom");
            this.DivBotonBusqueda.Attributes.Add("class", "input-group-btn busqueda-custom");
            this.DivRangosBusqueda.Visible      = false;
            this.TextBoxBusqueda.Visible        = true;
            this.DivContenedorTipoTexto.Visible = false;
            this.DivContenedorFuncion.Visible   = true;
            break;

        case TipoReportePublicacion.Edicion:
            LabelTipoReporte.Text = "Publicaciones por edicion";
            Title = "Publicaciones por edicion";
            this.DivRangosBusqueda.Visible      = false;
            this.TextBoxBusqueda.Visible        = true;
            this.DivContenedorTipoTexto.Visible = false;
            this.DivContenedorFuncion.Visible   = false;
            break;

        case TipoReportePublicacion.Editorial:
            LabelTipoReporte.Text = "Publicaciones por editorial";
            Title = "Publicaciones por editorial";
            this.DivRangosBusqueda.Visible      = false;
            this.TextBoxBusqueda.Visible        = true;
            this.DivContenedorTipoTexto.Visible = false;
            this.DivContenedorFuncion.Visible   = false;
            break;

        default:
            LabelTipoReporte.Text = "Publicaciones por Autor";
            Title = "Publicaciones por autor";
            this.DivRangosBusqueda.Visible      = false;
            this.TextBoxBusqueda.Visible        = true;
            this.DivContenedorTipoTexto.Visible = false;
            this.DivContenedorFuncion.Visible   = false;
            break;
        }
    }
        public List <TituloLibreriaView> ReportePublicacionesPor(TipoReportePublicacion tipoReporte, string campoBusqueda, string rangoinicio, string rangoFin, string nombreFuncion, bool?isNovedad, string ordenColumna, bool isOrderDescending, ref bool isLoadedAll)
        {
            List <TituloLibreriaDetail> lista = null;
            string campoOrdenacion            = (string.IsNullOrEmpty(ordenColumna) ? ReportesController.GetCampoOrdenacionReporte(tipoReporte): ordenColumna);

            nombreFuncion = (string.IsNullOrEmpty(nombreFuncion) ? string.Empty : nombreFuncion.ToLower());
            try
            {
                if ((string.IsNullOrEmpty(campoBusqueda) & (tipoReporte != TipoReportePublicacion.Anio & tipoReporte != TipoReportePublicacion.Traductor)) || (string.IsNullOrEmpty(rangoinicio) & string.IsNullOrEmpty(rangoFin) & tipoReporte == TipoReportePublicacion.Anio))
                {
                    lista       = titulosBd.SelectReporteBy(null, null, null, null, null, null, null, null, isNovedad, campoOrdenacion, isOrderDescending);
                    isLoadedAll = true;
                }
                else
                {
                    isLoadedAll = false;
                    switch (tipoReporte)
                    {
                    case TipoReportePublicacion.Anio:
                        int intDummy   = -1;
                        int?anioInicio = null;
                        int?anioFin    = null;

                        Int32.TryParse(rangoinicio, out intDummy);
                        if (intDummy == -1)
                        {
                            anioInicio = new int?(intDummy);
                        }
                        else
                        {
                            anioInicio = (intDummy == 0 ? null : new int?(intDummy));
                        }


                        intDummy = -1;
                        Int32.TryParse(rangoFin, out intDummy);

                        if (intDummy == -1)
                        {
                            anioFin = new int?(intDummy);
                        }
                        else
                        {
                            anioFin = (intDummy == 0 ? null : new int?(intDummy));
                        }

                        lista = titulosBd.SelectReporteBy(anioInicio, anioFin, null, null, null, null, null, null, isNovedad, campoOrdenacion, isOrderDescending);
                        break;

                    case TipoReportePublicacion.Autor:
                        lista = titulosBd.SelectReporteBy(null, null, campoBusqueda, null, null, null, null, null, isNovedad, campoOrdenacion, isOrderDescending);
                        break;

                    case TipoReportePublicacion.TipoTexto:
                        lista = titulosBd.SelectReporteBy(null, null, null, campoBusqueda, null, null, null, null, isNovedad, campoOrdenacion, isOrderDescending);
                        break;

                    case TipoReportePublicacion.Traductor:
                        if (string.IsNullOrEmpty(nombreFuncion))
                        {
                            lista = titulosBd.SelectReporteBy(null, null, null, null, null, campoBusqueda, null, null, isNovedad, campoOrdenacion, isOrderDescending);
                        }
                        else
                        {
                            FuncionesController funcDb = new FuncionesController();
                            Funcion             func   = funcDb.CargarPorId(nombreFuncion);
                            if (func != null)
                            {
                                lista = titulosBd.SelectReporteBy(null, null, null, null, func.IdFuncion, campoBusqueda, null, null, isNovedad, campoOrdenacion, isOrderDescending);
                            }
                        }

                        break;

                    case TipoReportePublicacion.Editorial:
                        lista = titulosBd.SelectReporteBy(null, null, null, null, null, null, campoBusqueda, null, isNovedad, campoOrdenacion, isOrderDescending);
                        break;

                    case TipoReportePublicacion.Edicion:
                        int numero = 0;
                        Int32.TryParse(campoBusqueda, out numero);
                        int?edicion = (numero <= 0 ? null: new int?(numero));
                        lista = titulosBd.SelectReporteBy(null, null, null, null, null, null, null, edicion, isNovedad, campoOrdenacion, isOrderDescending);
                        break;

                    default:
                        lista = null;
                        break;
                    }
                }

                titulosBd.CloseConnection();
                return(LibreriaController.ResultadosTitulosGroupBy(lista, campoOrdenacion, isOrderDescending));
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        public bool GenerateExcel(TipoReportePublicacion tipoReporte, ref MemoryStream streamReturn, System.Drawing.Image imagen, List <TituloLibreriaView> listaDatos, ref string mensajeRetorno)
        {
            DateTime fechaActual = DateTime.Now;
            int      rowActual   = 5;
            int      initialRow  = rowActual;

            mensajeRetorno = string.Empty;
            bool retorno = false;

            try
            {
                using (var xlsPackage = new ExcelPackage())
                {
                    ExcelWorksheet worksheet = xlsPackage.Workbook.Worksheets.Add("Publicaciones ");
                    // Accediendo a las celdas. Al parecer el acceso a las celdas es a partir del indice = 1 => (1,1), no (0,0)
                    worksheet.Cells.Style.Font.Size = 10;
                    // (1, 3)
                    worksheet.Cells[1, 1].Value = "Catálogo " + GetNombreTipoReporte(tipoReporte);
                    // (2, 3)
                    worksheet.Cells[2, 1].Value = "Fecha: " + fechaActual.ToString("dd/MM/yyyy");

                    // ' IMAGEN - MERGE
                    // Dim imagenExcel As EPPlus.Drawing.ExcelPicture = worksheet.Drawings.AddPicture("Image", imagen)
                    // imagenExcel.SetSize(imagen.Width / 1.5, imagen.Height / 1.5)
                    // ' Aparentemente, aquí si se puede asignar las columnas 0 y filas 0
                    // imagenExcel.From.Column = 0
                    // imagenExcel.From.Row = 0
                    // imagenExcel.To.Column = 2
                    // imagenExcel.To.Row = 2
                    // ' Asignando un Merge a un rango (FromRow, FromCol, ToRow, ToCol)
                    worksheet.Cells[1, 1, 1, 3].Merge = true;
                    worksheet.Cells[2, 1, 2, 3].Merge = true;

                    // Estilo a la cabecera del Titulo Reporte
                    using (var rangeTitle = worksheet.Cells[1, 1, 2, 3])
                    {
                        rangeTitle.Style.Fill.PatternType = ExcelFillStyle.None;
                        rangeTitle.Style.Font.Color.SetColor(colorFondoNegro);
                        rangeTitle.Style.Font.Size = 10;
                        rangeTitle.Style.Font.Bold = true;
                    }

                    // Cabeceras de la tabla
                    AddCellXLSHeader(worksheet, rowActual);

                    if (listaDatos != null && listaDatos.Count > 0)
                    {
                        string nombre = string.Empty;
                        foreach (TituloLibreriaView item in listaDatos)
                        {
                            worksheet.Cells[rowActual, 1].Value = item.Titulo;
                            worksheet.Cells[rowActual, 2].Value = item.TituloOriginal;
                            int isbns        = 1;
                            int responsables = 1;

                            if (item.Autor != null)
                            {
                                nombre = item.Autor.NombreEspanol;
                                //if (!string.IsNullOrEmpty(item.Autor.NombreLatin))
                                //{
                                //    nombre = nombre + "(" + item.Autor.NombreLatin + ")";
                                //}
                                //else if (!string.IsNullOrEmpty(item.Autor.NombreGriego))
                                //{
                                //    nombre = nombre + "(" + item.Autor.NombreGriego + ")";
                                //}
                            }
                            else
                            {
                                nombre = string.Empty;
                            }
                            worksheet.Cells[rowActual, 3].Value = nombre;
                            worksheet.Cells[rowActual, 4].Value = item.AnioPublicacion;

                            string cadenaResp = string.Empty;

                            if (item.DetalleResponsables != null && item.DetalleResponsables.Count > 0)
                            {
                                var detalle = item.DetalleResponsables[0];
                                if (detalle.Responsables != null && detalle.Responsables.Count > 0)
                                {
                                    responsables = detalle.Responsables.Count;

                                    for (int i = 0; i < detalle.Responsables.Count; i++)
                                    {
                                        cadenaResp = cadenaResp + string.Format("{0} ({1}) ", detalle.Responsables[i].NombreCompletoResponsable, detalle.Responsables[i].TipoFuncion) + "\n";
                                    }
                                    worksheet.Cells[rowActual, 5].Value          = cadenaResp;
                                    worksheet.Cells[rowActual, 5].Style.WrapText = true;
                                }
                            }

                            worksheet.Cells[rowActual, 6].Value  = (item.Editor != null ? item.Editor.Nombre : string.Empty);
                            worksheet.Cells[rowActual, 7].Value  = item.Edicion;
                            worksheet.Cells[rowActual, 8].Value  = item.NumeroEdicion;
                            worksheet.Cells[rowActual, 9].Value  = item.NumeroReimpresion;
                            worksheet.Cells[rowActual, 10].Value = (item.Ciudad != null ? item.Ciudad.Descripcion : string.Empty);

                            string cadenaIsbn = string.Empty;

                            if (item.DetalleIsbn != null && item.DetalleIsbn.Count > 0)
                            {
                                for (int i = 0; i < item.DetalleIsbn.Count; i++)
                                {
                                    string edicion   = (item.DetalleIsbn[i].Edicion > 0) ? ", " + item.DetalleIsbn[i].Edicion + "a." + " ed." : "";
                                    string reedicion = (item.DetalleIsbn[i].Reedicion > 0) ? ", " + item.DetalleIsbn[i].Reedicion + "a." + " reed." : "";
                                    string reimp     = (item.DetalleIsbn[i].Reimpresion > 0) ? ", " + item.DetalleIsbn[i].Reimpresion + "a." + " reimpr." : "";
                                    string ediciones = edicion + reedicion + reimp;

                                    if (item.DetalleIsbn[i].IdDescripcion > 0)
                                    {
                                        cadenaIsbn += item.DetalleIsbn[i].ClaveIsbn + " (" + item.DetalleIsbn[i].DescripcionVersion + ediciones + ")" + "\n";
                                    }
                                    else
                                    {
                                        cadenaIsbn += item.DetalleIsbn[i].ClaveIsbn + (ediciones.Length > 0 ? "(" + ediciones + ")" : "") + "\n";
                                    }
                                }
                                isbns = item.DetalleIsbn.Count;
                                worksheet.Cells[rowActual, 11].Value          = cadenaIsbn;
                                worksheet.Cells[rowActual, 11].Style.WrapText = true;
                            }

                            worksheet.Cells[rowActual, 12].Value = item.Medidas;
                            worksheet.Cells[rowActual, 13].Value = item.Paginas;
                            worksheet.Cells[rowActual, 14].Value = item.Observaciones; //string.Format("{0:dd/MM/yyyy}", item.FechaAlta);
                            worksheet.Cells[rowActual, 15].Value = item.Secundarias;
                            if (item.Serie != null)
                            {
                                nombre = (string.IsNullOrEmpty(item.Serie.NombreLatin) ? item.Serie.NombreLatin : item.Serie.NombreGriego);
                            }
                            else
                            {
                                nombre = string.Empty;
                            }

                            worksheet.Cells[rowActual, 16].Value = nombre;
                            worksheet.Cells[rowActual, 17].Value = item.Serie500;
                            worksheet.Cells[rowActual, 18].Value = item.Tema;
                            worksheet.Cells[rowActual, 19].Value = item.Colofon;
                            worksheet.Cells[rowActual, 20].Value = item.Cualidades;
                            worksheet.Cells[rowActual, 21].Value = item.Contenido;
                            worksheet.Cells[rowActual, 22].Value = item.UffYL;
                            worksheet.Cells[rowActual, 23].Value = item.UiiFL;
                            worksheet.Cells[rowActual, 24].Value = (item.IsNovedad? "SI":"NO");

                            for (int i = 1; i < 25; i++)
                            {
                                SetStyleCellXLS(worksheet.Cells[rowActual, i], rowActual);
                            }

                            int maxValue = Math.Max(isbns, responsables);
                            worksheet.Row(rowActual).Height = 18.0 * maxValue;
                            rowActual = rowActual + 1;
                        }
                    }
                    else
                    {
                        for (int i = 1; i < 25; i++)
                        {
                            worksheet.Cells[rowActual, i].Value = "EMPTY";
                        }
                    }

                    worksheet.Column(1).Width  = 35;
                    worksheet.Column(2).Width  = 35;
                    worksheet.Column(3).Width  = 35;
                    worksheet.Column(4).Width  = 10;
                    worksheet.Column(5).Width  = 35;
                    worksheet.Column(6).Width  = 35;
                    worksheet.Column(7).Width  = 20;
                    worksheet.Column(8).Width  = 20;
                    worksheet.Column(9).Width  = 20;
                    worksheet.Column(10).Width = 20;
                    worksheet.Column(11).Width = 23;
                    worksheet.Column(12).Width = 20;
                    worksheet.Column(13).Width = 20;
                    worksheet.Column(14).Width = 20;
                    worksheet.Column(15).Width = 20;
                    worksheet.Column(16).Width = 20;
                    worksheet.Column(17).Width = 20;
                    worksheet.Column(18).Width = 35;
                    worksheet.Column(19).Width = 35;
                    worksheet.Column(20).Width = 35;
                    worksheet.Column(21).Width = 35;
                    worksheet.Column(22).Width = 20;
                    worksheet.Column(23).Width = 20;
                    worksheet.Column(24).Width = 10;

                    //worksheet.Cells.AutoFitColumns();
                    xlsPackage.Workbook.Properties.Title   = GetNombreTipoReporte(tipoReporte);
                    xlsPackage.Workbook.Properties.Author  = "Coordinación de Humanidades";
                    xlsPackage.Workbook.Properties.Company = "Universidad Nacional Autónoma de México";
                    xlsPackage.Stream.Flush();
                    // No debe guardarse, ,debido a que se usará para leer los bytes y escribirlos en el Stream de Response
                    // xlsPackage.Save()
                    streamReturn = new MemoryStream();
                    byte[] bytes = xlsPackage.GetAsByteArray();
                    streamReturn.Write(bytes, 0, bytes.Length);
                    // No es necesario reiniciar la posicion
                    // streamReturn.Position = 0
                    xlsPackage.Stream.Close();
                    mensajeRetorno = "Se ha generado el documento solicitado.";
                }
                retorno        = true;
                mensajeRetorno = "Archivo generado";
            }
            catch (Exception ex)
            {
                streamReturn   = null;
                mensajeRetorno = ex.Message;
                mensajeRetorno = mensajeRetorno + @":\n\r" + ex.StackTrace;
                retorno        = false;
            }
            return(retorno);
        }