Beispiel #1
0
        private void LlenaDatos()
        {
            try
            {
                DashboardAdministrador datos = _servicioDashboard.GetDashboardAdministrador();
                lblUsuariosRegistrados.Text  = datos.UsuariosRegistrados.ToString();
                lblUsuariosActivos.Text      = datos.UsuariosActivos.ToString();
                lblTicketsCreados.Text       = datos.TicketsCreados.ToString();
                lblOperadoresAcumulados.Text = datos.Operadores.ToString();

                lblEspacio.Text  = string.Format("{0} MB de {1} Mb en uso ", Math.Truncate(double.Parse(datos.GraficoAlmacenamiento.Rows[0][0].ToString())), Math.Truncate(double.Parse(datos.GraficoAlmacenamiento.Rows[0][0].ToString()) + double.Parse(datos.GraficoAlmacenamiento.Rows[0][1].ToString())));
                lblArchivos.Text = string.Format("{0} archivos adjuntos", datos.TotalArchivos);

                lblCategorias.Text  = datos.Categorias.ToString();
                lblArticulos.Text   = datos.Articulos.ToString();
                lblFormularios.Text = datos.Formularios.ToString();
                lblCatalogos.Text   = datos.Catalogos.ToString();

                lblOrganizaciones.Text = datos.Organizacion.ToString();
                lblUbicaciones.Text    = datos.Ubicacion.ToString();
                lblPuestos.Text        = datos.Puestos.ToString();

                lblGrupos.Text            = datos.Grupos.ToString();
                lblHorarios.Text          = datos.Horarios.ToString();
                lblFeriados.Text          = datos.Feriados.ToString();
                rptOperadorRol.DataSource = datos.OperadorRol;
                rptOperadorRol.DataBind();

                GeneraGraficaPie(rhcTicketsCanal, datos.GraficoTicketsCreadosCanal);
                GeneraGraficaPie(rhcUsuarios, datos.GraficoUsuariosRegistrados);
                GeneraGraficaStackedAdministrador(rhcEspacio, datos.GraficoAlmacenamiento);
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }
Beispiel #2
0
        public DashboardAdministrador GetDashboardAdministrador()
        {
            DashboardAdministrador results;
            DataBaseModelContext   db = new DataBaseModelContext();

            try
            {
                string connection = (((System.Data.EntityClient.EntityConnection)(db.Connection)).StoreConnection).ConnectionString;

                db.ContextOptions.ProxyCreationEnabled = _proxy;
                List <int> userFilters = new List <int>
                {
                    (int)BusinessVariables.EnumTiposUsuario.Empleado,
                    (int)BusinessVariables.EnumTiposUsuario.Cliente,
                    (int)BusinessVariables.EnumTiposUsuario.Proveedor
                };

                results = new DashboardAdministrador();

                results.UsuariosRegistrados = db.Usuario.Count(c => userFilters.Contains(c.IdTipoUsuario));
                results.UsuariosActivos     = db.Usuario.Count(c => userFilters.Contains(c.IdTipoUsuario) && c.Habilitado && c.Activo);
                results.TicketsCreados      = db.Ticket.Count();
                results.Operadores          = db.Usuario.Count(c => c.IdTipoUsuario == (int)BusinessVariables.EnumTiposUsuario.Agentes && c.Habilitado && c.Activo);

                DataTable dtTickets = new DataTable("dt");
                dtTickets.Columns.Add(new DataColumn("Id", typeof(int)));
                dtTickets.Columns.Add(new DataColumn("Descripcion", typeof(string)));
                dtTickets.Columns.Add(new DataColumn("Color", typeof(string)));
                dtTickets.Columns.Add(new DataColumn("Total", typeof(decimal)));
                foreach (GraficoConteo datos in db.Ticket.Join(db.Canal, ticket => ticket.IdCanal, canal => canal.Id, (ticket, canals) => new { ticket, canals }).GroupBy(g => g.canals).Select(s => new GraficoConteo {
                    Id = s.Key.Id, Descripcion = s.Key.Descripcion, Color = s.Key.ColorGrafico, Total = s.Count()
                }).ToList())
                {
                    dtTickets.Rows.Add(datos.Id, datos.Descripcion, datos.Color, datos.Total);
                }
                results.GraficoTicketsCreadosCanal = dtTickets;


                DataTable dtUsuarios = new DataTable("dt");
                dtUsuarios.Columns.Add(new DataColumn("Id", typeof(int)));
                dtUsuarios.Columns.Add(new DataColumn("Descripcion", typeof(string)));
                dtUsuarios.Columns.Add(new DataColumn("Color", typeof(string)));
                dtUsuarios.Columns.Add(new DataColumn("Total", typeof(decimal)));
                foreach (GraficoConteo datos in db.Usuario.Join(db.TipoUsuario, users => users.IdTipoUsuario, tipoUsuario => tipoUsuario.Id, (users, tipoUsuario) => new { users, tipoUsuario }).Where(w => userFilters.Contains(w.users.IdTipoUsuario)).GroupBy(g => g.tipoUsuario).Select(s => new GraficoConteo {
                    Id = s.Key.Id, Descripcion = s.Key.Descripcion, Color = s.Key.Id == (int)BusinessVariables.EnumTiposUsuario.Cliente ? "#B5E6A1" : s.Key.Id == (int)BusinessVariables.EnumTiposUsuario.Proveedor ? "#FFF0B3" : "#80D9FF", Total = s.Count()
                }).ToList())
                {
                    dtUsuarios.Rows.Add(datos.Id, datos.Descripcion, datos.Color, datos.Total);
                }
                results.GraficoUsuariosRegistrados = dtUsuarios;

                DataTable dtAlmacenamiento = new DataTable("dt");
                dtAlmacenamiento.Columns.Add(new DataColumn("Ocupado", typeof(double)));
                dtAlmacenamiento.Columns.Add(new DataColumn("Libre", typeof(double)));


                long maxSize = 10024;
                //string queryString = "SELECT DataBaseName = DB_NAME(database_id), \n" +
                //                     "LogSize = CAST(SUM(CASE WHEN type_desc = 'LOG' THEN size END) * 8 / 1024 AS DECIMAL(8,2)), \n" +
                //                     "RowSize_mb = CAST(SUM(CASE WHEN type_desc = 'ROWS' THEN size END) * 8 / 1024 AS DECIMAL(8,2)), \n" +
                //                     "TotalSize_mb = CAST(SUM(size) * 8 / 1024 AS DECIMAL(8,2)) \n" +
                //                     "FROM sys.master_files \n" +
                //                     "WHERE database_id = DB_ID() GROUP BY database_id";
                string queryString = "select name DataBaseName, \n" +
                                     "(SELECT cast((size*8)/1024 as decimal) \n" +
                                     "FROM sys.database_files \n" +
                                     "where type_desc = 'LOG') LogSize, \n" +
                                     "cast((size*8)/1024 as decimal) RowSize_mb, \n" +

                                     "(SELECT cast((size*8)/1024 as decimal) \n" +
                                     "FROM sys.database_files \n" +
                                     "where type_desc = 'LOG') + cast((size*8)/1024 as decimal) TotalSize_mb \n" +

                                     "FROM sys.database_files \n" +
                                     "where type_desc = 'ROWS'";
                //string queryString = "SELECT file_id, name, type_desc, physical_name, size, max_size \n" +
                //                     "FROM sys.database_files" ;
                SqlDataAdapter adapter = new SqlDataAdapter(queryString, connection);

                DataSet ds = new DataSet();
                adapter.Fill(ds, "Almacenamiento");

                DirectoryInfo dInfo          = new DirectoryInfo(BusinessVariables.Directorios.RepositorioRepositorio);
                long          sizeOfDirBytes = BusinessFile.DirectorySize(dInfo, true);
                double        sizeOfDirKb    = ((double)sizeOfDirBytes) / 1024;
                double        sizeOfDirMb    = sizeOfDirKb / 1024;
                double        sizeOfDirGb    = sizeOfDirMb / 1024;
                double        totalSize      = Math.Round(double.Parse((ds.Tables[0].Rows[0][3].ToString())) + sizeOfDirMb, 2);
                //if (totalSize > 1024)
                //    totalSize = totalSize / 1024;
                dtAlmacenamiento.Rows.Add(Math.Round(totalSize, 0, MidpointRounding.ToEven), Math.Round(maxSize - totalSize, 0, MidpointRounding.ToEven));
                results.TotalArchivos         = Directory.GetFiles(dInfo.FullName, "*.*", SearchOption.AllDirectories).Length;
                results.GraficoAlmacenamiento = dtAlmacenamiento;



                results.Categorias  = db.Area.Count();
                results.Articulos   = db.InformacionConsulta.Count();
                results.Formularios = db.Mascara.Count();
                results.Catalogos   = db.Catalogos.Count(c => !c.Sistema);
                results.OperadorRol = db.Rol.Where(w => w.Id != (int)BusinessVariables.EnumRoles.AccesoCentroSoporte)
                                      .Join(db.RolTipoUsuario, rol => rol.Id, roltipousuario => roltipousuario.IdRol, (rol, roltipousuario) => new { r = rol, rtu = roltipousuario })
                                      .Join(db.UsuarioRol, roltu => roltu.rtu.Id, usuariorol => usuariorol.IdRolTipoUsuario, (roltipousuario, usuariorol) => new { rtu = roltipousuario, ur = usuariorol })
                                      .GroupJoin(db.Usuario.Where(w => w.IdTipoUsuario == (int)BusinessVariables.EnumTiposUsuario.Agentes), ur => ur.ur.IdUsuario, users => users.Id, (usuariorol, usuarios) => new { ur = usuariorol, u = usuarios })
                                      .Select(s => new { s.ur.rtu.r })
                                      .GroupBy(g => g.r)
                                      .Select(s => new GraficoConteo {
                    Id = s.Key.Id, Descripcion = s.Key.Descripcion, Total = s.Count()
                }).ToList();

                results.Organizacion = db.Organizacion.Count();
                results.Ubicacion    = db.Ubicacion.Count();
                results.Puestos      = db.Puesto.Count();
                results.Grupos       = db.GrupoUsuario.Count();
                results.Horarios     = db.Horario.Count();
                results.Feriados     = db.DiasFeriados.Count();
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
            finally
            {
                db.Dispose();
            }
            return(results);
        }