v1.0.6.0
Refresh Online Session with profile region and sports.
This commit is contained in:
@@ -157,6 +157,9 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
||||
return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.update.failed"]));
|
||||
}
|
||||
|
||||
// Refresh profile contact details to session.
|
||||
RefreshSessionProfileContact(userAccount);
|
||||
|
||||
// Construct response.
|
||||
responseData.Contact = new ContactResponseData();
|
||||
PopulateContactResponseData(responseData.Contact, userAccount);
|
||||
|
||||
@@ -14,6 +14,7 @@ using Sarand.Net.Standard.Base.Bus;
|
||||
using Sarand.Net.Standard.Base.Utils;
|
||||
using Sarand.Net.Standard.Base.Core;
|
||||
using Sarand.Net.Standard.Base.Dbas;
|
||||
using Saxonite.Net.Standard.Base.App;
|
||||
|
||||
namespace Saxonite.Net.Core.Web.Online.Controllers
|
||||
{
|
||||
@@ -29,11 +30,15 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
||||
public long Id { get; set; }
|
||||
public long SportId { get; set; }
|
||||
public String SportName { get; set; }
|
||||
public String SportParticipation { get; set; }
|
||||
public String SportOfficiating { get; set; }
|
||||
public String StatusCode { get; set; }
|
||||
public String StatusDesc { get; set; }
|
||||
}
|
||||
public class ProfileSportResponseData_Item : ProfileSportResponseData_List
|
||||
{
|
||||
public String SportParticipationCode { get; set; }
|
||||
public String SportOfficiatingCode { get; set; }
|
||||
public String CreatedOnFmt { get; set; }
|
||||
}
|
||||
private void PopulateProfileSportResponseData(Model_Account model, SaxUserSport userSport, SaxSport sport, ProfileSportResponseData_Item data)
|
||||
@@ -41,6 +46,10 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
||||
data.Id = SysId.ToLong(userSport.Id);
|
||||
data.SportId = SysId.ToLong(userSport.SportId);
|
||||
data.SportName = sport.Name;
|
||||
data.SportParticipationCode = SportParticipationCodes.GetCodeForType(userSport.Participation);
|
||||
data.SportParticipation = Localiser.GetSportParticipationTypeCaption(userSport.Participation);
|
||||
data.SportOfficiatingCode = SportOfficiatingCodes.GetCodeForType(userSport.Officiating);
|
||||
data.SportOfficiating = Localiser.GetSportOfficiatingTypeCaption(userSport.Officiating);
|
||||
data.CreatedOnFmt = DateUtil.Format(userSport.CreateStamp.On, "d-MMM-yyyy");
|
||||
data.StatusCode = userSport.StatusCode;
|
||||
data.StatusDesc = userSport.StatusDesc;
|
||||
@@ -79,11 +88,14 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
||||
ColumnDfn colId = AccountMgr.GetUserSportColumnDfn(SaxUserSport.Column.Id);
|
||||
ColumnDfn colSportId = AccountMgr.GetUserSportColumnDfn(SaxUserSport.Column.SportId);
|
||||
ColumnDfn colSportName = AccountMgr.GetUserSportColumnDfn(SaxUserSport.Column.Sport_Name);
|
||||
ColumnDfn colParticipation = AccountMgr.GetUserSportColumnDfn(SaxUserSport.Column.SportParticipation);
|
||||
ColumnDfn colOfficiating = AccountMgr.GetUserSportColumnDfn(SaxUserSport.Column.SportOfficiating);
|
||||
ColumnDfn colStatus = AccountMgr.GetUserSportColumnDfn(SaxUserSport.Column.Status);
|
||||
List<ColumnDfn> columns = new List<ColumnDfn>()
|
||||
{
|
||||
colId,
|
||||
colSportId, colSportName,
|
||||
colParticipation, colOfficiating,
|
||||
colStatus,
|
||||
};
|
||||
|
||||
@@ -103,6 +115,8 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
||||
Id = values.GetLong(colId.DataName),
|
||||
SportId = values.GetLong(colSportId.DataName),
|
||||
SportName = values.GetString(colSportName.DataName),
|
||||
SportParticipation = Localiser.GetSportParticipationTypeCaption((Sax.SportParticipation)values.GetLong(colParticipation.DataName)),
|
||||
SportOfficiating = Localiser.GetSportOfficiatingTypeCaption((Sax.SportOfficiating)values.GetLong(colOfficiating.DataName)),
|
||||
StatusCode = values.GetString(colStatus.DataName),
|
||||
StatusDesc = SacsSystem.GetStatusDescForCode(values.GetString(colStatus.DataName))
|
||||
};
|
||||
@@ -227,11 +241,28 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
||||
}
|
||||
}
|
||||
|
||||
// Create new item if required.
|
||||
// If sport doesn't exist for the user, it may have been previously deleted.
|
||||
if (userSport == null)
|
||||
userSport = AccountMgr.CreateUserSport(SessionData.User.UserAccountId, sportId);
|
||||
{
|
||||
SaxUserSport.Params prmUserSport = new SaxUserSport.Params();
|
||||
prmUserSport.UserAccountIdsIncluded.Add(SessionData.User.UserAccountId);
|
||||
prmUserSport.SportIdsIncluded.Add(sportId);
|
||||
prmUserSport.StatusCat = SaxUserSport.StatusCat.Any;
|
||||
userSport = AccountMgr.GetUserSport(prmUserSport);
|
||||
if (userSport != null)
|
||||
{
|
||||
SaLogger.Info(fn + " Resurrecting User Sport with status: " + userSport.StatusDesc + ". Id: " + SysId.ToString(userSport.Id));
|
||||
userSport.Status = SaxUserSport.DefaultStatus;
|
||||
}
|
||||
else
|
||||
userSport = AccountMgr.CreateUserSport(SessionData.User.UserAccountId, sportId);
|
||||
}
|
||||
|
||||
// Populate item properties.
|
||||
if (model.ProfileSportParticipationCode != null)
|
||||
userSport.Participation = model.ProfileSportParticipation;
|
||||
if (model.ProfileSportOfficiatingCode != null)
|
||||
userSport.Officiating = model.ProfileSportOfficiating;
|
||||
|
||||
// Store item.
|
||||
if (!SysId.IsValid(userSport.Id))
|
||||
@@ -251,6 +282,9 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
||||
}
|
||||
}
|
||||
|
||||
// Refresh list of profile sports for Activity Index.
|
||||
RefreshSessionProfileSports();
|
||||
|
||||
// Construct response.
|
||||
PopulateProfileSportResponseData(model, userSport, sport, responseData.Sport);
|
||||
responseData.Success = true;
|
||||
|
||||
+6
-6
@@ -46,7 +46,7 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
||||
private void PopulateOpportunityResponseData(Model_Organisation_Opportunities model, SaxOrganisationOpportunity opportunity, OpportunityData_List data)
|
||||
{
|
||||
data.Id = SysId.ToString(opportunity.Id);
|
||||
data.TypeCode = OpportunityTypes.GetCodeForType(opportunity.OpportunityType);
|
||||
data.TypeCode = OpportunityTypeCodes.GetCodeForType(opportunity.OpportunityType);
|
||||
data.TypeDesc = Localiser.GetOpportunityTypeCaption(opportunity.OpportunityType);
|
||||
data.Position = opportunity.Position;
|
||||
data.Outline = opportunity.Outline;
|
||||
@@ -113,7 +113,7 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
||||
SessionData_Online.Filter.SetMemberOrganisation(organisation);
|
||||
|
||||
// Reference data - opportunity types.
|
||||
foreach (TypeCodeDesc opportunityType in OpportunityTypes)
|
||||
foreach (TypeCodeDesc opportunityType in OpportunityTypeCodes)
|
||||
responseData.OpportunityTypes.Add(opportunityType.Code, Localiser.GetOpportunityTypeCaption((Sax.OpportunityType)opportunityType.Type));
|
||||
|
||||
// User organisation.
|
||||
@@ -172,11 +172,11 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
||||
{
|
||||
Id = values.GetString(colId.DataName),
|
||||
TypeCode = values.GetString(colOpportunityTypeCode.DataName),
|
||||
TypeDesc = Localiser.GetOpportunityTypeCaption((Sax.OpportunityType)OpportunityTypes.GetTypeForCode(values.GetString(colOpportunityTypeCode.DataName))),
|
||||
TypeDesc = Localiser.GetOpportunityTypeCaption((Sax.OpportunityType)OpportunityTypeCodes.GetTypeForCode(values.GetString(colOpportunityTypeCode.DataName))),
|
||||
Position = values.GetString(colPosition.DataName),
|
||||
Outline = values.GetString(colOutline.DataName),
|
||||
RegionCaption = model.GetRegionCaption(values.GetString(colRegionName.DataName).ToSysId()),
|
||||
SportCaption = model.GetSportCaption(values.GetString(colSportName.DataName).ToSysId()),
|
||||
RegionCaption = model.GetRegionCaption(values.GetString(colRegionId.DataName).ToSysId()),
|
||||
SportCaption = model.GetSportCaption(values.GetString(colSportId.DataName).ToSysId()),
|
||||
CreatedOnFmt = DateUtil.Format(values.GetDateTime(colCreatedOn.DataName), "d-MMM-yyyy"),
|
||||
PublishedOnFmt = DateUtil.Format(values.GetDateTime(colPublishedOn.DataName), "d-MMM-yyyy"),
|
||||
ExpiresOnFmt = DateUtil.Format(values.GetDateTime(colExpiresOn.DataName), "d-MMM-yyyy"),
|
||||
@@ -326,7 +326,7 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
||||
if (model.OpportunitySportId != null)
|
||||
opportunity.SportIdPrimary = model.OpportunitySportId.ToSysId();
|
||||
if (model.OpportunityTypeCode != null)
|
||||
opportunity.OpportunityType = (Sax.OpportunityType)OpportunityTypes.GetTypeForCode(model.OpportunityTypeCode);
|
||||
opportunity.OpportunityType = (Sax.OpportunityType)OpportunityTypeCodes.GetTypeForCode(model.OpportunityTypeCode);
|
||||
if (model.OpportunityPosition != null)
|
||||
opportunity.Position = model.OpportunityPosition;
|
||||
if (model.OpportunityOutline != null)
|
||||
|
||||
@@ -96,6 +96,22 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
||||
return true;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
/// <summary>Populate the user's profile contact details to the session.</summary>
|
||||
protected bool RefreshSessionProfileContact(SaxUserAccount userAccount)
|
||||
{
|
||||
String fn = GetType().Name + ".RefreshSessionProfileContact";
|
||||
SaxSessionData_Online sessionData = SessionData_Online;
|
||||
SysId userAccountId = sessionData?.User.UserAccountId ?? null;
|
||||
if (!SysId.IsValid(userAccountId)) return false;
|
||||
if (!SysId.IsValid(userAccount?.Id ?? null)) return false;
|
||||
if (!userAccountId.Equals(userAccount.Id)) return false;
|
||||
|
||||
sessionData.RefreshUser(userAccount);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
/// <summary>Populate the user's profile sports to the session.</summary>
|
||||
protected bool RefreshSessionProfileSports()
|
||||
@@ -109,18 +125,22 @@ namespace Saxonite.Net.Core.Web.Online.Controllers
|
||||
// Read discrete values to avoid loading the entire UserSport records which can be substantial.
|
||||
ColumnDfn colSportId = AccountMgr.GetUserSportColumnDfn(SaxUserSport.Column.SportId);
|
||||
ColumnDfn colSportName = AccountMgr.GetUserSportColumnDfn(SaxUserSport.Column.Sport_Name);
|
||||
ColumnDfn colParticipation = AccountMgr.GetUserSportColumnDfn(SaxUserSport.Column.SportParticipation);
|
||||
ColumnDfn colOfficiating = AccountMgr.GetUserSportColumnDfn(SaxUserSport.Column.SportOfficiating);
|
||||
ColumnDfn colStatus = AccountMgr.GetUserSportColumnDfn(SaxUserSport.Column.Status);
|
||||
|
||||
SaxUserSport.Params prmUserSport = new SaxUserSport.Params();
|
||||
prmUserSport.UserAccountIdsIncluded.Add(userAccountId);
|
||||
prmUserSport.StatusCat = SaxUserSport.StatusCat.ActiveOnly;
|
||||
using (DbResultSet resultSet = AccountMgr.ExecuteUserSportQuery(new List<ColumnDfn>() { colSportId, colSportName, colStatus }, prmUserSport))
|
||||
using (DbResultSet resultSet = AccountMgr.ExecuteUserSportQuery(new List<ColumnDfn>() { colSportId, colSportName, colParticipation, colOfficiating, colStatus }, prmUserSport))
|
||||
{
|
||||
while (resultSet != null && resultSet.NextRecord())
|
||||
{
|
||||
NamedValue.Map values = resultSet.GetRecordValues();
|
||||
SysId sportId = new SysId(values.GetLong(colSportId.DataName));
|
||||
String sportName = values.GetString(colSportName.DataName);
|
||||
Sax.SportParticipation participation = (Sax.SportParticipation)values.GetLong(colParticipation.DataName);
|
||||
Sax.SportOfficiating officiating = (Sax.SportOfficiating)values.GetLong(colOfficiating.DataName);
|
||||
SaStatus status = SacsSystem.GetStatusForCode(values.GetString(colStatus.DataName));
|
||||
sessionData.Profile.AddSport(sportId, status);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user