public virtual async Task <UserInfoModel> PrepareUserInfoModelAsync(TblUsers user) { var result = user.Adapt <UserInfoModel>(); result.ShowUserSubscriptionInfo = (await _userGroupsService.GetAsEnumerableAsync()).Any(); if (user.UserCountry != null) { result.Country = user.UserCountry.GetLocalized(x => x.CountryName); } if (user.UserGroup != null && user.SubscriptionExpireDate > DateTime.Now) { var textColor = string.IsNullOrWhiteSpace(user.UserGroup.GetLocalized(x => x.GroupTextColor)) ? "inherit" : user.UserGroup.GetLocalized(x => x.GroupTextColor); var backgroundColor = string.IsNullOrWhiteSpace(user.UserGroup.GetLocalized(x => x.GroupBackgroundColor)) ? "inherit" : user.UserGroup.GetLocalized(x => x.GroupBackgroundColor); var groupImage = string.IsNullOrWhiteSpace(user.UserGroup.GetLocalized(x => x.GroupSmallIcon)) ? "" : $@"<img style=""max-height: 18px;"" src=""{ user.UserGroup.GetLocalized(x => x.GroupSmallIcon) }""/>"; result.UserGroup = $@"<span class=""badge"" style=""color: {textColor}; background-color:{backgroundColor}"">{ groupImage } {user.UserGroup.GetLocalized(x => x.GroupName)}</span>"; var highestGroup = await _userGroupsService.GetHighestUserGroupAsync(); result.UserSubscribedToHighestPlan = user.UserGroup.GroupPriority >= highestGroup.GroupPriority; result.WhenExtendCurrentPlanBtnShown = user.UserGroup.WhenExtendCurrentPlanBtnShown; if (user.UserGroup.MaxDownloadCount > 0) { var maxDownloadPeriodTypeStr = _localizationService.GetResource(user.UserGroup.MaxDownloadPeriodType.ToString()); result.UserGroupDownloadLimit = user.UserGroup.MaxDownloadCount + _localizationService.GetResource("Per") + maxDownloadPeriodTypeStr; } else { result.UserGroupDownloadLimit = _localizationService.GetResource("Unlimited"); } } else { result.UserGroup = $"<small>({_localizationService.GetResource("YouNotSubscribedToPlan")})</small>"; result.SubscriptionDate = null; result.SubscriptionExpireDate = null; } if (user.MaxDownloadCount > 0) { var maxDownloadPeriodTypeStr = _localizationService.GetResource(user.MaxDownloadPeriodType.ToString()); result.DownloadLimit = user.MaxDownloadCount + _localizationService.GetResource("Per") + maxDownloadPeriodTypeStr; } else { result.DownloadLimit = _localizationService.GetResource("Unlimited"); } return(result); }
public virtual async Task <ActionResult> UsersChart(DateTime?FromDate, DateTime?ToDate, TimePeriodType PeriodType = TimePeriodType.Day) { if (FromDate == null || ToDate == null || FromDate >= ToDate) { FromDate = DateTime.Now.AddDays(-6); FromDate = new DateTime(FromDate.Value.Year, FromDate.Value.Month, FromDate.Value.Day, 0, 0, 0); ToDate = DateTime.Now; ToDate = new DateTime(ToDate.Value.Year, ToDate.Value.Month, ToDate.Value.Day, 23, 59, 59); } var datetimeToStringFormat = "g"; switch (PeriodType) { case TimePeriodType.Hour: datetimeToStringFormat = "yyyy/MM/dd HH:mm"; break; case TimePeriodType.Day: datetimeToStringFormat = "yyyy/MM/dd"; break; case TimePeriodType.Month: datetimeToStringFormat = "yyyy/MM"; break; case TimePeriodType.Year: datetimeToStringFormat = "yyyy"; break; } var allUsers = await _usersService.UsersReportAsync(FromDate.Value, ToDate.Value, PeriodType, false, 0); var verifiedUsers = await _usersService.UsersReportAsync(FromDate.Value, ToDate.Value, PeriodType, true, 0); var allUsersCount = allUsers.Sum(p => p.Value); var chartDatas = new List <ChartData> { new ChartData() { ChartItems = allUsers.Select(p => new ChartPoint() { Y = p.Value, X = p.Key.ToString(datetimeToStringFormat) }).ToList(), Name = $"{_localizationService.GetResource("Total")} ({allUsersCount})", Color = "#5e35b1" }, new ChartData() { ChartItems = verifiedUsers.Select(p => new ChartPoint() { Y = p.Value, X = p.Key.ToString(datetimeToStringFormat) }).ToList(), Name = $"{_localizationService.GetResource("EmailConfirmed")} ({verifiedUsers.Sum(p=> p.Value)} - %{(allUsersCount > 0 ? (verifiedUsers.Sum(p=> p.Value) * 100) / allUsersCount : 0)})", Color = "#bd30ab" } }; //By UserGroup foreach (var userGroup in (await _userGroupsService.GetAsEnumerableAsync()).OrderByDescending(p => p.GroupPriority)) { var userGroupReport = await _usersService.UsersReportAsync(FromDate.Value, ToDate.Value, PeriodType, false, userGroup.Id); chartDatas.Add(new ChartData() { ChartItems = userGroupReport.Select(p => new ChartPoint() { Y = p.Value, X = p.Key.ToString(datetimeToStringFormat) }).ToList(), Name = $"{userGroup.GetLocalized(x=> x.GroupName)} ({userGroupReport.Sum(p => p.Value)} - %{(allUsersCount > 0 ? (userGroupReport.Sum(p => p.Value) * 100) / allUsersCount : 0)})", Color = userGroup.GetLocalized(x => x.GroupBackgroundColor) }); } return(View("Partials/_Chart", new ChartModel() { ChartDatas = chartDatas, ToDate = ToDate.Value, FromDate = FromDate.Value, PeriodType = PeriodType, XAxisTitle = _localizationService.GetResource("Date"), YAxisTitle = _localizationService.GetResource("NumberOfUsers"), ChartName = "NumberUsersChart", ControllerName = "UsersChart", UpdateTargetId = "usersChartHolder" })); }