Example #1
0
        public void GenerarInforme(TipoInforme tipoInforme, int id, DateTime fechaDesde, DateTime fechaHasta)// usuario y grupo
        {
            try
            {
                fechaDesde = fechaDesde.Date;
                fechaHasta = fechaHasta.Date;

                List <Modelo.Sesion> sesiones = new List <Modelo.Sesion>();
                if (tipoInforme == TipoInforme.Grupo)
                {
                    sesiones = sesionDAO.ListarPorGrupo(id, fechaDesde, fechaHasta);
                }
                else
                {
                    sesiones = sesionDAO.ListarPorUsuario(id, fechaDesde, fechaHasta);
                }
                if (sesiones.Count > 0)
                {
                    GenerarExcel(tipoInforme, sesiones, fechaDesde, fechaHasta);
                }
                else
                {
                    throw new Exception("No se han encontrado sesiones.");
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Example #2
0
        private void GenerarExcel(TipoInforme tipoInforme, List <Modelo.Sesion> sesiones, DateTime fechaDesde, DateTime fechaHasta)
        {
            fechaDesde = fechaDesde.Date;
            fechaHasta = fechaHasta.Date;

            Excel.Application oXL    = null;
            Excel._Workbook   oWB    = null;
            Excel._Worksheet  oSheet = null;
            Excel.Range       oRng   = null;
            try
            {
                oXL             = new Excel.Application();
                oXL.UserControl = false;
                oXL.Visible     = true;

                oWB    = (Excel._Workbook)(oXL.Workbooks.Add(Missing.Value));
                oSheet = (Excel._Worksheet)oWB.ActiveSheet;
                string titulo = "";
                switch (tipoInforme)
                {
                case TipoInforme.Todos:
                    titulo = $"Informe de Todas las sesiones desde {fechaDesde} hasta {fechaHasta}";
                    break;

                case TipoInforme.Usuario:
                    titulo = $"Informe de Todas las sesiones del Usuario {sesiones[0].Usuario.Username} desde {fechaDesde} hasta {fechaHasta}";
                    break;

                case TipoInforme.Grupo:
                    titulo = $"Informe de Todas las sesiones del Grupo {sesiones[0].Usuario.Grupos[0].Descripcion} desde {fechaDesde} hasta {fechaHasta}";
                    break;

                default:
                    break;
                }
                oSheet.Cells[1, 1] = titulo;

                oSheet.Cells[3, 1] = "ID Sesión";
                oSheet.Cells[3, 2] = "Username";
                oSheet.Cells[3, 3] = "Fecha LogIn";
                oSheet.Cells[3, 4] = "Fecha LogOut";
                oSheet.Cells[3, 5] = "Tiempo de Sesión";


                string[,] ids = new string[sesiones.Count, 5];
                for (int i = 0; i < sesiones.Count; i++)
                {
                    ids[i, 0] = sesiones[i].ID.ToString();
                    ids[i, 1] = sesiones[i].Usuario.Username;
                    ids[i, 2] = sesiones[i].LogIn.ToString();
                    ids[i, 3] = sesiones[i].LogOut.ToString();
                    ids[i, 4] = sesiones[i].CalcularTiempoSesion().ToString(@"hh\:mm\:ss");
                }
                for (int i = 4; i <= sesiones.Count + 3; i++)
                {
                    if (i % 2 != 0)
                    {
                        oSheet.get_Range("A" + i, "E" + i).Interior.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.FromArgb(217, 225, 242));
                    }
                }
                oSheet.get_Range("A4", "E" + (sesiones.Count + 3).ToString()).Value2 = ids;
                oRng = oSheet.get_Range("B1", "E1");
                oRng.EntireColumn.AutoFit();

                oSheet.get_Range("A3").EntireRow.Font.Bold = true;
                oSheet.get_Range("A1").EntireRow.Font.Size = 14;

                oSheet.get_Range("A3", "E3").Interior.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.FromArgb(142, 169, 219));

                if (tipoInforme == TipoInforme.Usuario)
                {
                    oSheet.get_Range("B1").EntireColumn.Delete();
                }
                oXL.Visible     = true;
                oXL.UserControl = true;
                Marshal.ReleaseComObject(oSheet);
                Marshal.ReleaseComObject(oWB);
                Marshal.ReleaseComObject(oXL);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }