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); } }
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); }