public ActionResult EditAccount(string id) { Account acct = null; if (Roles.IsUserInRole("sysadmin")) { acct = ModRepository.GetAccountByName(id); } else if (Roles.IsUserInRole("administrators")) { var userId = (Guid)Membership.GetUser().ProviderUserKey; acct = ModRepository.GetUserAccounts(userId).FirstOrDefault(acc => acc.SubdomainName == id); } if (acct == null) { TempData["Message"] = "Conta não encontrada."; return(RedirectToAction("Index", "Home")); } return(View(new AccountViewModel { Id = acct.Id, Logo = acct.Logo, Name = acct.Name, Subdomain = acct.SubdomainName, Users = acct.Users.Select(u => u.UserName).ToList() })); }
public ActionResult ListAccounts() { var model = new Dictionary <int, string>(); // sysadmin can see all system users if (Roles.IsUserInRole("sysadmin")) { foreach (var acct in ModRepository.GetAllAccounts()) { model.Add(acct.Id, acct.Name); } } else if (Roles.IsUserInRole("administrators")) { var userId = (Guid)Membership.GetUser().ProviderUserKey; var accounts = ModRepository.GetUserAccounts(userId); foreach (var acct in accounts) { model.Add(acct.Id, acct.Name); } } return(View(model)); }
public ActionResult List() { var model = new List <KeyValuePair <string, string> >(); // sysadmin can see all system users if (Roles.IsUserInRole("sysadmin")) { foreach (var user in ModRepository.GetAllUsers()) { var sb = new StringBuilder(); foreach (var acc in user.Accounts.Select(a => a.Name)) { sb.Append(acc + ", "); } model.Add(new KeyValuePair <string, string>( sb.ToString().TrimEnd(", ".ToCharArray()), user.UserName)); } } else if (Roles.IsUserInRole("administrators")) { var userId = (Guid)Membership.GetUser().ProviderUserKey; var accounts = ModRepository.GetUserAccounts(userId); foreach (var acct in accounts) { foreach (var user in ModRepository.GetAccountUsers(acct.Id)) { model.Add(new KeyValuePair <string, string>( acct.Name, user.UserName)); } } } return(View(model)); }
public ActionResult GetAnalyticsData() { // retrieve account analytic data string acctName = RouteData.Values["account"] as string; var analytics = new List <object>(); var period = String.Empty; var totalVisits = 0; var culture = new CultureInfo("pt-BR"); var gotTotals = false; if (acctName != null) { foreach (var module in ModRepository.GetAccountModules(acctName)) { if (!module.UsageCounters.IsLoaded) { module.UsageCounters.Load(); } // get all module counters through last 30 days timespan var validCounters = module .UsageCounters .Where(uc => IsValidCounter(uc)) .Select(uc => new { Date = new DateTime(uc.Year, uc.Month, uc.Day), Count = uc.RequestCount }); if (!gotTotals && validCounters.Count() > 0) { period = String.Format("{0} a {1}.", validCounters.Select(vc => vc.Date).Min().ToString("dd/MM/yyyy", culture), validCounters.Select(vc => vc.Date).Max().ToString("dd/MM/yyyy", culture)); totalVisits += validCounters.Sum(uc => uc.Count); } analytics.Add(new { label = module.DisplayName, data = validCounters.Select(uc => new long[] { uc.Date.ToJavaScriptTimestamp(), uc.Count }) }); } } else { var accounts = ModRepository.GetUserAccounts().OrderBy(a => a.Name); foreach (var account in accounts) { if (!account.Modules.IsLoaded) { account.Modules.Load(); } var groups = ModRepository. GetCountersByAccountId(account.Id) .Where(uc => IsValidCounter(uc)) .Select(uc => new { Date = new DateTime(uc.Year, uc.Month, uc.Day), Count = uc.RequestCount }).GroupBy(uc => uc.Date); var validCounters = groups.Select(g => new { Date = g.Key, Count = g.Sum(gr => gr.Count) }); if (!gotTotals && validCounters.Count() > 0) { period = String.Format("{0} a {1}", validCounters.Select(vc => vc.Date).Min().ToString("dd/MM/yyyy", culture), validCounters.Select(vc => vc.Date).Max().ToString("dd/MM/yyyy", culture)); totalVisits += validCounters.Sum(uc => uc.Count); } analytics.Add(new { label = account.Name, data = validCounters.Select(uc => new long[] { uc.Date.ToJavaScriptTimestamp(), uc.Count }) }); } } var data = new { period = period, totalVisits = totalVisits.ToString("0,0", culture), plotArray = analytics }; return(Json(data, JsonRequestBehavior.AllowGet)); }