diff --git a/SaxoniteCoreWeb/Base/Consoles/SaxActivityConsole_Web.cs b/SaxoniteCoreWeb/Base/Consoles/SaxActivityConsole_Web.cs index 8febc5d..74b13e6 100644 --- a/SaxoniteCoreWeb/Base/Consoles/SaxActivityConsole_Web.cs +++ b/SaxoniteCoreWeb/Base/Consoles/SaxActivityConsole_Web.cs @@ -164,6 +164,7 @@ namespace Saxonite.Net.Core.Web.Base.Consoles // User Activity filter. SaxUserActivity.Params prmUserActivity = new SaxUserActivity.Params(); + prmUserActivity.UserAccountIdsIncluded.Add(context.UserAccountId); prmUserActivity.ItemIdsIncluded.AddRange(activityItemIds); prmUserActivity.StatusCat = SaxUserActivity.StatusCat.ActiveOnly; diff --git a/SaxoniteCoreWebAdmin/Admin/Controllers/UserController-Ajax.cs b/SaxoniteCoreWebAdmin/Admin/Controllers/UserController-Ajax.cs index a96de50..6aecf7f 100644 --- a/SaxoniteCoreWebAdmin/Admin/Controllers/UserController-Ajax.cs +++ b/SaxoniteCoreWebAdmin/Admin/Controllers/UserController-Ajax.cs @@ -28,7 +28,8 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers public String LastName { get; set; } public String RegionNameCountry { get; set; } public String RegionNameProvince { get; set; } - public int UserRoleCount { get; set; } + public int? UserSportCount { get; set; } = null; + public int? UserRoleCount { get; set; } = null; public bool? SystemAdmin { get; set; } = null; public String LastOnlineLoginAt { get; set; } public String LastAdminLoginAt { get; set; } @@ -37,9 +38,17 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers { public String RegionIdCountry { get; set; } public String RegionIdProvince { get; set; } + // User sports. + public class UserSportData + { + public String SportId { get; set; } + public String SportName { get; set; } + } + public List Sports { get; set; } + // User roles. public List userRoleCodes { get; } = new List(); } - private void PopulateUserResponseData(SaxModel_Admin model, UserData_List data, SaxUserAccount user, List userRoles) + private void PopulateUserResponseData(SaxModel_Admin model, UserData_List data, SaxUserAccount user, List userSports, List userRoles) { data.Id = SysId.ToString(user.Id); data.EmailAddress = user.EmailAddress; @@ -49,7 +58,10 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers data.LastName = user.LastName; data.RegionNameCountry = model.GetRegionName(user.RegionIdCountry); data.RegionNameProvince = model.GetRegionName(user.RegionIdProvince); - data.UserRoleCount = userRoles?.GetUserRolesByStatus(SaStatus.Active).Count ?? 0; + // User sports. + // User roles. + if (userRoles?.GetUserRolesByStatus(SaStatus.Active).Count > 0) + data.UserRoleCount = userRoles.GetUserRolesByStatus(SaStatus.Active).Count; data.SystemAdmin = (userRoles != null && userRoles.Exists(item => item.UserRole == Sax.UserRole.SystemAdmin) ? true : (bool?)null); data.LastOnlineLoginAt = model.FormatDateTimeForDisplay(user.LastLoginAt); data.StatusCode = user.StatusCode; @@ -59,13 +71,31 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers if (userRole_SystemAdmin != null) data.LastAdminLoginAt = model.FormatDateTimeForDisplay(userRole_SystemAdmin.LastLoginAt); } - private void PopulateUserResponseData(SaxModel_Admin model, UserData_Full data, SaxUserAccount user, List userRoles) + private void PopulateUserResponseData(SaxModel_Admin model, UserData_Full data, SaxUserAccount user, List userSports, List userRoles) { - PopulateUserResponseData(model, data as UserData_List, user, userRoles); + PopulateUserResponseData(model, data as UserData_List, user, userSports, userRoles); data.RegionIdCountry = SysId.ToString(user.RegionIdCountry); data.RegionIdProvince = SysId.ToString(user.RegionIdProvince); + // User sports. + if (userSports != null && !userSports.IsEmpty()) + { + data.Sports = new List(); + List sports = ReferenceMgr.GetSportListByIds(userSports.GetSportIds()); + foreach (SaxUserSport userSport in userSports) + { + SaxSport sport = sports.GetSportById(userSport.SportId); + UserData_Full.UserSportData userSportData = new UserData_Full.UserSportData() + { + SportId = SysId.ToString(userSport.SportId), + SportName = sport?.Name ?? null + }; + data.Sports.Add(userSportData); + } + } + + // User roles. if (userRoles != null) { foreach (SaxUserRole userRole in userRoles.GetUserRolesByStatus(SaStatus.Active)) @@ -75,6 +105,14 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers //------------------------------------------------------------------- // Utilities. + private List GetUserSports(SysId userAccountId, SaxUserSport.StatusCat statusCat = SaxUserSport.StatusCat.NotDeleted) + { + if (!SysId.IsValid(userAccountId)) return new List(); + SaxUserSport.Params prmUserSport = new SaxUserSport.Params(); + prmUserSport.UserAccountIdsIncluded.Add(userAccountId); + prmUserSport.StatusCat = statusCat; + return AccountMgr.GetUserSportList(prmUserSport); + } private List GetUserRoles(SysId userAccountId, SaxUserRole.StatusCat statusCat = SaxUserRole.StatusCat.NotDeleted) { if (!SysId.IsValid(userAccountId)) return new List(); @@ -142,6 +180,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers ColumnDfn colProvinceName = AccountMgr.GetUserAccountColumnDfn(SaxUserAccount.Column.RegionProvince_Name); ColumnDfn colUserRoleCount = AccountMgr.GetUserAccountColumnDfn(SaxUserAccount.Column.UserRoleCount); ColumnDfn colSystemAdminUser = AccountMgr.GetUserAccountColumnDfn(SaxUserAccount.Column.SystemAdminUser); + ColumnDfn colUserSportCount = AccountMgr.GetUserAccountColumnDfn(SaxUserAccount.Column.UserSportCount_Active); ColumnDfn colLastLogin = AccountMgr.GetUserAccountColumnDfn(SaxUserAccount.Column.LastLoginAt); ColumnDfn colAdminLastLogin = AccountMgr.GetUserAccountColumnDfn(SaxUserAccount.Column.LastAdminLoginAt); ColumnDfn colStatus = AccountMgr.GetUserAccountColumnDfn(SaxUserAccount.Column.Status); @@ -149,8 +188,9 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers { colId, colEmail, colTitle, colFirstName, colLastName, colCountryName, colProvinceName, - colUserRoleCount, colSystemAdminUser, - colLastLogin, colAdminLastLogin, colStatus + colUserSportCount, colUserRoleCount, + colSystemAdminUser, colLastLogin, colAdminLastLogin, + colStatus }; // Query items. @@ -168,6 +208,7 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers LastName = values.GetString(colLastName.DataName), RegionNameCountry = values.GetString(colCountryName.DataName), RegionNameProvince = values.GetString(colProvinceName.DataName), + UserSportCount = StringUtil.ToInt(values.GetString(colUserSportCount.DataName)), UserRoleCount = StringUtil.ToInt(values.GetString(colUserRoleCount.DataName)), SystemAdmin = StringUtil.ToBool(values.GetString(colSystemAdminUser.DataName)), LastOnlineLoginAt = model.FormatDateTimeForDisplay(values.GetDateTime(colLastLogin.DataName)), @@ -175,6 +216,9 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers StatusCode = values.GetString(colStatus.DataName), StatusDesc = SacsSystem.GetStatusDescForCode(values.GetString(colStatus.DataName)) }; + if (userData.UserSportCount < 1) userData.UserSportCount = null; + if (userData.UserRoleCount < 1) userData.UserRoleCount = null; + if (userData.SystemAdmin == false) userData.SystemAdmin = null; userData.DisplayName = SaxUserAccount.GetDisplayName(userData.Title, userData.FirstName, userData.LastName); responseData.Users.Add(userData); } @@ -231,8 +275,16 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.id.not.found"])); } + // User Sports. + List userSports = GetUserSports(user.Id, SaxUserSport.StatusCat.ActiveOnly); + disposableItems.AddRange(userSports); + + // User Roles. + List userRoles = GetUserRoles(user.Id, SaxUserRole.StatusCat.ActiveOnly); + disposableItems.AddRange(userRoles); + // Construct response. - PopulateUserResponseData(model, responseData.user, user, GetUserRoles(user.Id).GetUserRolesByStatus(SaStatus.Active)); + PopulateUserResponseData(model, responseData.user, user, userSports, userRoles); responseData.Success = true; } return Json(responseData); @@ -275,8 +327,16 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers return Json(responseData); } + // User Sports. + List userSports = GetUserSports(user.Id, SaxUserSport.StatusCat.ActiveOnly); + disposableItems.AddRange(userSports); + + // User Roles. + List userRoles = GetUserRoles(user.Id, SaxUserRole.StatusCat.ActiveOnly); + disposableItems.AddRange(userRoles); + // Construct response. - PopulateUserResponseData(model, responseData.user, user, GetUserRoles(user.Id).GetUserRolesByStatus(SaStatus.Active)); + PopulateUserResponseData(model, responseData.user, user, userSports, userRoles); responseData.Success = true; } return Json(responseData); @@ -407,8 +467,12 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers } } + // User Sports. + List userSports = GetUserSports(user.Id, SaxUserSport.StatusCat.ActiveOnly); + disposableItems.AddRange(userSports); + // Construct response. - PopulateUserResponseData(model, responseData.user, user, userRoles.GetUserRolesByStatus(SaStatus.Active)); + PopulateUserResponseData(model, responseData.user, user, userSports, userRoles.GetUserRolesByStatus(SaStatus.Active)); responseData.Success = true; } return Json(responseData); @@ -479,8 +543,12 @@ namespace Saxonite.Net.Core.Web.Admin.Controllers emailsSentCount++; } + // User Sports. + List userSports = GetUserSports(userAccount.Id, SaxUserSport.StatusCat.ActiveOnly); + disposableItems.AddRange(userSports); + // Construct response. - PopulateUserResponseData(model, responseData.user, userAccount, userRoles.GetUserRolesByStatus(SaStatus.Active)); + PopulateUserResponseData(model, responseData.user, userAccount, userSports, userRoles.GetUserRolesByStatus(SaStatus.Active)); responseData.SetNotification(messageTitle, "Emails sent: " + emailsSentCount); responseData.Success = true; } diff --git a/SaxoniteCoreWebAdmin/Localisation/SaxAdminProperties.resx b/SaxoniteCoreWebAdmin/Localisation/SaxAdminProperties.resx index e06946d..0ee55f2 100644 --- a/SaxoniteCoreWebAdmin/Localisation/SaxAdminProperties.resx +++ b/SaxoniteCoreWebAdmin/Localisation/SaxAdminProperties.resx @@ -118,7 +118,7 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - Solum Forti + Sportierre &copy; {0} @@ -162,6 +162,9 @@ Address + + Admin + Any @@ -378,6 +381,9 @@ Sport + + Sports + Status diff --git a/SaxoniteCoreWebAdmin/Views/User/Index.cshtml b/SaxoniteCoreWebAdmin/Views/User/Index.cshtml index a236052..acd1de7 100644 --- a/SaxoniteCoreWebAdmin/Views/User/Index.cshtml +++ b/SaxoniteCoreWebAdmin/Views/User/Index.cshtml @@ -138,8 +138,11 @@
-
Roles:
-
Admin: 
+
+ @Localiser["label.sports"]:   + @Localiser["label.roles"]: +
+
@Localiser["label.admin"]: 
diff --git a/SaxoniteCoreWebAdmin/Views/User/Panel-UserDialog.cshtml b/SaxoniteCoreWebAdmin/Views/User/Panel-UserDialog.cshtml index 3f4dc0b..c405098 100644 --- a/SaxoniteCoreWebAdmin/Views/User/Panel-UserDialog.cshtml +++ b/SaxoniteCoreWebAdmin/Views/User/Panel-UserDialog.cshtml @@ -4,6 +4,15 @@ /* Users - User dialog panel */ } +