v1.0.5.3
Activity index, Db schema validation.
This commit is contained in:
@@ -1,11 +1,15 @@
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using Sarand.Net.Standard.Base.App;
|
||||
using Sarand.Net.Standard.Base.Bus;
|
||||
using Sarand.Net.Standard.Base.Core;
|
||||
using Saxonite.Net.Core.Web.Base.App;
|
||||
using Saxonite.Net.Standard.Base.App;
|
||||
using Saxonite.Net.Standard.Base.Bus;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Runtime.Serialization;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Saxonite.Net.Core.Web.Online.App
|
||||
@@ -32,6 +36,54 @@ namespace Saxonite.Net.Core.Web.Online.App
|
||||
/// <summary>User - JSON deserialisation route.</summary>
|
||||
public new UserData User { get { return base.User; } set { SetUser(value); } }
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// User Profile.
|
||||
// Protected constructors & setters for JSON deserialisation.
|
||||
public class UserProfileData
|
||||
{
|
||||
public UserProfileData() { }
|
||||
// Sports.
|
||||
public class SportData
|
||||
{
|
||||
public SportData(SysId sportId, SaStatus status)
|
||||
{
|
||||
SportId = sportId;
|
||||
Status = status;
|
||||
}
|
||||
public SysId SportId { get; protected set; }
|
||||
public SaStatus Status { get; protected set; }
|
||||
}
|
||||
private class SportData_Online : SportData
|
||||
{
|
||||
// Internal class to allow values to be updated.
|
||||
public SportData_Online(SysId sportId, SaStatus status) : base(sportId, status) { }
|
||||
public SportData_Online(SportData sportData) : base(sportData.SportId, sportData.Status) { }
|
||||
public void SetSportId(SysId sportId) { SportId = sportId; }
|
||||
public void SetStatus(SaStatus status) { Status = status; }
|
||||
}
|
||||
[JsonIgnore]
|
||||
private readonly List<SportData_Online> sports = new List<SportData_Online>();
|
||||
[JsonIgnore]
|
||||
public int SportCount { get { return sports.Count; } }
|
||||
public List<SportData> Sports { get { return new List<SportData>(sports); } protected set { sports.Clear(); sports.AddRange(value.Select(item => new SportData_Online(item))); } }
|
||||
public void AddSport(SysId sportId, SaStatus status)
|
||||
{
|
||||
if (!SysId.IsValid(sportId)) throw new NotSupportedException("Session Profile Sport must have a valid Id");
|
||||
SportData_Online sport = this.sports.Find(item => item.SportId == sportId);
|
||||
if (sport != null)
|
||||
{
|
||||
sport.SetStatus(status);
|
||||
}
|
||||
else
|
||||
this.sports.Add(new SportData_Online(sportId, status));
|
||||
}
|
||||
public void ClearSports()
|
||||
{
|
||||
this.sports.Clear();
|
||||
}
|
||||
}
|
||||
public UserProfileData Profile { get; protected set; } = new UserProfileData();
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Filter properties.
|
||||
public class FilterData
|
||||
@@ -69,6 +121,25 @@ namespace Saxonite.Net.Core.Web.Online.App
|
||||
}
|
||||
public FilterData Filter { get; private set; } = new FilterData();
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// JSON Deserialisation.
|
||||
[JsonExtensionData]
|
||||
#pragma warning disable IDE0044 // Add readonly modifier
|
||||
private IDictionary<string, JToken> _additionalData;
|
||||
#pragma warning restore IDE0044 // Add readonly modifier
|
||||
[OnDeserialized]
|
||||
private void OnDeserialized(StreamingContext context)
|
||||
{
|
||||
if (_additionalData != null)
|
||||
{
|
||||
foreach (String name in _additionalData.Keys)
|
||||
{
|
||||
JToken value = _additionalData[name];
|
||||
SaLogger.Info("OnDeserialized Name: " + name + ". Value: " + value.ToString());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
//=======================================================================
|
||||
|
||||
Reference in New Issue
Block a user