예제 #1
0
        public UserUsageSummary CreateUserUsageSummary(DateTime period, IReportingClient client)
        {
            bool showDisclaimer = false;

            var gs = _provider.Data.GlobalSetting.GetGlobalSetting("ShowUserUsageSummaryDisclaimer");

            if (gs != null)
            {
                showDisclaimer = bool.Parse(gs.SettingValue);
            }

            string disclaimer = showDisclaimer ? string.Format("Please note: The data for {0:MMMM} usage has not yet been finalized.", period) : null;

            //var usage = UserUsageCharge.SelectByUser(client.ClientID, period).ToList();

            var result = new UserUsageSummary()
            {
                ClientID       = client.ClientID,
                UserName       = client.UserName,
                LName          = client.LName,
                FName          = client.FName,
                Period         = period,
                Created        = DateTime.Now,
                Disclaimer     = disclaimer,
                AggregateByOrg = CreateAggregateByOrg(client.ClientID, period)
            };

            return(result);
        }
        public UserUsageSummary GetUserUsage(string alias, UsagePeriod period)
        {
            var startDate = DateTime.MinValue;
            var endDate   = DateTime.MinValue;

            GetPeriodDates(period, ref startDate, ref endDate);

            // TODO get query working with null data
//            var minutes = _context.Usages
//                .Where(x => x.Alias == alias && (x.TickTime >= startDate && x.TickTime <= endDate))
//                .Sum(x => x.UsageMinutes);

            var minutes = 0;

            var summary = new UserUsageSummary();

            summary.Alias      = alias;
            summary.Period     = period;
            summary.TotalHours = minutes / 60;

            var span = endDate - startDate;

            if (span.Days == 0)
            {
                span = new TimeSpan(1, 0, 0, 0);
            }
            summary.AverageHours = (float)summary.TotalHours / span.Days;

            return(summary);
        }
예제 #3
0
        public async Task <IActionResult> Get(string userId, string view)
        {
            //TODO: authorization check

            // get requested user document
            ScampUser userDoc = await _userRepository.GetUserById(userId);

            if (userDoc == null)
            {
                return(HttpNotFound());
            }

            // get user usage across all resources
            List <UserBudgetState> usrBudgets = await _volatileStorageController.GetUserBudgetStates(userId);

            if (view == "summary")
            {
                UserUsageSummary tmpUserSummary = new UserUsageSummary()
                {
                    totGroups = userDoc.GroupMembership.Count()
                };

                // summarize resource usage
                foreach (var rscBudget in usrBudgets)
                {
                    tmpUserSummary.unitsBudgeted += rscBudget.UnitsBudgetted;
                    tmpUserSummary.totUnitsUsed  += rscBudget.UnitsUsed;
                }

                return(new ObjectResult(tmpUserSummary)
                {
                    StatusCode = 200
                });
            }
            else
            {
                return(new ObjectResult(string.Format("view '{0}' not supported", view))
                {
                    StatusCode = 400
                });
            }
        }