예제 #1
0
        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()
            }));
        }
예제 #2
0
        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));
        }
예제 #3
0
        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));
        }
예제 #4
0
        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));
        }