This commit is contained in:
2022-04-20 17:46:16 +01:00
parent acd070dbc6
commit 9a8dc99d85
63 changed files with 1965 additions and 308 deletions
@@ -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<UserSportData> Sports { get; set; }
// User roles.
public List<String> userRoleCodes { get; } = new List<string>();
}
private void PopulateUserResponseData(SaxModel_Admin model, UserData_List data, SaxUserAccount user, List<SaxUserRole> userRoles)
private void PopulateUserResponseData(SaxModel_Admin model, UserData_List data, SaxUserAccount user, List<SaxUserSport> userSports, List<SaxUserRole> 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<SaxUserRole> userRoles)
private void PopulateUserResponseData(SaxModel_Admin model, UserData_Full data, SaxUserAccount user, List<SaxUserSport> userSports, List<SaxUserRole> 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<UserData_Full.UserSportData>();
List<SaxSport> 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<SaxUserSport> GetUserSports(SysId userAccountId, SaxUserSport.StatusCat statusCat = SaxUserSport.StatusCat.NotDeleted)
{
if (!SysId.IsValid(userAccountId)) return new List<SaxUserSport>();
SaxUserSport.Params prmUserSport = new SaxUserSport.Params();
prmUserSport.UserAccountIdsIncluded.Add(userAccountId);
prmUserSport.StatusCat = statusCat;
return AccountMgr.GetUserSportList(prmUserSport);
}
private List<SaxUserRole> GetUserRoles(SysId userAccountId, SaxUserRole.StatusCat statusCat = SaxUserRole.StatusCat.NotDeleted)
{
if (!SysId.IsValid(userAccountId)) return new List<SaxUserRole>();
@@ -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<SaxUserSport> userSports = GetUserSports(user.Id, SaxUserSport.StatusCat.ActiveOnly);
disposableItems.AddRange(userSports);
// User Roles.
List<SaxUserRole> 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<SaxUserSport> userSports = GetUserSports(user.Id, SaxUserSport.StatusCat.ActiveOnly);
disposableItems.AddRange(userSports);
// User Roles.
List<SaxUserRole> 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<SaxUserSport> 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<SaxUserSport> 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;
}