public IActionResult Dashboard() { IEnumerable <ViewDashboardClientViewModel> _clients = _mapper.Map <IEnumerable <ViewDashboardClientViewModel> >(_clientRepo.GetClients()); IEnumerable <ViewDashboardServerViewModel> _servers = _mapper.Map <IEnumerable <ViewDashboardServerViewModel> >(_serverRepo.GetServers()); IEnumerable <ViewDashboardVpnViewModel> _vpns = _mapper.Map <IEnumerable <ViewDashboardVpnViewModel> >(_vpnRepo.GetVpns()); var dashboardViewModel = new ViewDashboardViewModel { TotalClients = _clients.Count(), TotalServers = _servers.Count(), TotalVpns = _vpns.Count() }; foreach (var item in _servers) { item.ClientName = _clients.Where(c => c.Id == item.ClientId).FirstOrDefault().Name; } foreach (var item in _vpns) { item.ClientName = _clients.Where(c => c.Id == item.ClientId).FirstOrDefault().Name; } dashboardViewModel.Clients = _clients.Take(5); dashboardViewModel.Servers = _servers.Take(5); dashboardViewModel.Vpns = _vpns.Take(5); return(View(dashboardViewModel)); }
// GET: Dashboards/View/5 public ActionResult View(int?id) { if (id == 0) { return(HttpNotFound()); } var model = new ViewDashboardViewModel(); model.Dashlets = new List <Dashlet>(); model.DataSources = new List <DataSource>(); model.DashletsSqlResult = new Dictionary <int, string>(); model.DashletsFirstCol = new List <Dashlet>(); model.DashletsSecondCol = new List <Dashlet>(); model.DashletsThirdCol = new List <Dashlet>(); var userEmail = HttpContext.User.Identity.Name; var user = db.AppUsers.SingleOrDefault(u => u.Email == userEmail); model.IsCompanyAdmin = (user.Roles.Where(r => r.Name == "CompanyAdmin")).Count() == 1; model.IsSuperAdmin = (user.Roles.Where(r => r.Name == "SuperAdmin")).Count() == 1; model.IsUser = (user.Roles.Where(r => r.Name == "User")).Count() == 1; model.Dashboard = db.Dashboards.SingleOrDefault(d => d.Id == id); model.DashboardList = db.Dashboards.ToList(); model.DashboardListToUser = user.Dashboards.Select(p => new DashboardItemViewModel() { DashboardId = p.Id, DashboardName = p.Title }).ToList(); model.Dashlets = db.Dashlets.Include(m => m.DataSource).Where(d => d.DashboardId == id).OrderBy(d => d.Position).ToList(); model.CurrentUser = user; model.Email = user.Email; model.ID = user.Id; if (id == null) { if (model.IsSuperAdmin) { return(RedirectToAction("index", "dashboards")); } else if (model.IsCompanyAdmin) { return(RedirectToAction("index", "dashboards")); } else if (model.IsUser) { return(RedirectToAction("index", "dashboards")); } else { return(HttpNotFound("Undefiend role")); } } model.DataSources = db.DataSources.Where(x => x.OwnerId == model.Dashboard.IdOwner).ToList(); foreach (var dashlet in model.Dashlets) { switch (dashlet.DataSource.Type) { case "MSSQL": try { using (SqlConnection connection = new SqlConnection()) { connection.ConnectionString = dashlet.DataSource.ConnectionString; connection.Open(); SqlCommand command = new SqlCommand(dashlet.Sql, connection); using (SqlDataReader reader = command.ExecuteReader()) { if (reader.Read()) { model.DashletsSqlResult.Add(dashlet.Id, reader[0].ToString()); } } connection.Close(); } } catch { model.DashletsSqlResult.Add(dashlet.Id, "SQL queary is incorrect!"); //continue; //return Content("Invalid Connection to Database in Dashhlet: " + dashlet.Id); } break; default: model.DashletsSqlResult.Add(dashlet.Id, "Type of Database is unknown!"); //continue; //return Content("Invalid Type of Database in Dashhlet: " + dashlet.Id); break; } switch (dashlet.Column) { case 1: model.DashletsFirstCol.Add(dashlet); break; case 2: model.DashletsSecondCol.Add(dashlet); break; case 3: model.DashletsThirdCol.Add(dashlet); break; default: Console.WriteLine("Toggle is broke. It's equal to " + dashlet.Column); break; } } model.IsOwner = model.Dashboard.IdOwner == user.Id; model.IsDashboardAdmin = model.Dashboard.IdDashboardAdmin == user.Id; if (model.IsSuperAdmin) { return(View(model)); } else if (model.IsOwner) { model.DashboardList = model.DashboardList.Where(x => x.IdOwner == user.Id).ToList(); return(View("ViewCompanyAdmin", model)); } else if (model.IsDashboardAdmin) { model.DashboardList = model.DashboardList.Where(x => x.IdDashboardAdmin == user.Id).ToList(); return(View("ViewUser", model)); } else if (model.IsUser) { var isAllowedDashboard = user.Dashboards.SingleOrDefault(x => x.Id == id); if (isAllowedDashboard != null) { return(View("ViewUserReadOnly", model)); } else { return(View("~/Views/Shared/Errors/Error_NotFound_Available_Dashboard.cshtml")); } } return(RedirectToAction("index", "home", null)); }
// GET: Dashboards/View/5 public ActionResult ViewUser(int id) { if (id == 0) { return(HttpNotFound()); } var viewDashboardViewModel = new ViewDashboardViewModel(); viewDashboardViewModel.DashletsSqlResult = new Dictionary <int, string>(); viewDashboardViewModel.DashletsFirstCol = new List <Dashlet>(); viewDashboardViewModel.DashletsSecondCol = new List <Dashlet>(); viewDashboardViewModel.DashletsThirdCol = new List <Dashlet>(); viewDashboardViewModel.DashboardList = db.Dashboards.ToList(); viewDashboardViewModel.Dashboard = db.Dashboards.SingleOrDefault(d => d.Id == id); viewDashboardViewModel.Dashlets = db.Dashlets.Include(d => d.DataSource).Where(d => d.DashboardId == id).OrderBy(d => d.Position).ToList(); foreach (var dashlet in viewDashboardViewModel.Dashlets) { switch (dashlet.DataSource.Type) { case "MSSQL": try { using (SqlConnection connection = new SqlConnection()) { connection.ConnectionString = dashlet.DataSource.ConnectionString; connection.Open(); SqlCommand command = new SqlCommand(dashlet.Sql, connection); using (SqlDataReader reader = command.ExecuteReader()) { if (reader.Read()) { viewDashboardViewModel.DashletsSqlResult.Add(dashlet.Id, reader[0].ToString()); } } connection.Close(); } } catch { viewDashboardViewModel.DashletsSqlResult.Add(dashlet.Id, "SQL queary is incorrect!"); //continue; //return Content("Invalid Connection to Database in Dashhlet: " + dashlet.Id); } break; default: viewDashboardViewModel.DashletsSqlResult.Add(dashlet.Id, "Type of Database is unknown!"); //continue; //return Content("Invalid Type of Database in Dashhlet: " + dashlet.Id); break; } switch (dashlet.Column) { case 1: viewDashboardViewModel.DashletsFirstCol.Add(dashlet); break; case 2: viewDashboardViewModel.DashletsSecondCol.Add(dashlet); break; case 3: viewDashboardViewModel.DashletsThirdCol.Add(dashlet); break; default: Console.WriteLine("Toggle is broke. It's equal to " + dashlet.Column); break; } } return(View(viewDashboardViewModel)); }