This commit is contained in:
2022-03-03 18:46:08 +00:00
parent 1ac4c7f51a
commit 122056a9da
59 changed files with 1259 additions and 474 deletions
@@ -43,6 +43,7 @@ namespace Saxonite.Net.Standard.Base.Bus
Region_Name,
// Properties.
EffectiveOn,
ExpiresOn,
// Associated data.
// Common.
Notes,
@@ -59,9 +60,12 @@ namespace Saxonite.Net.Standard.Base.Bus
public class DataProperties
{
public ItemId ItemId { get; set; }
public SysId UserAccountIdOwner { get; set; }
public SysId OrganisationIdOwner { get; set; }
public SysId SportId { get; set; }
public SysId RegionId { get; set; }
public DateTime EffectiveOn { get; set; }
public DateTime ExpiresOn { get; set; }
}
//-------------------------------------------------------------------
@@ -81,6 +85,16 @@ namespace Saxonite.Net.Standard.Base.Bus
get { return data.ItemId; }
set { CheckChanged(data.ItemId, value); data.ItemId = value; }
}
public SysId UserAccountIdOwner
{
get { return data.UserAccountIdOwner; }
set { CheckChanged(data.UserAccountIdOwner, value); data.UserAccountIdOwner = value; }
}
public SysId OrganisationIdOwner
{
get { return data.OrganisationIdOwner; }
set { CheckChanged(data.OrganisationIdOwner, value); data.OrganisationIdOwner = value; }
}
public SysId SportId
{
get { return data.SportId; }
@@ -101,13 +115,26 @@ namespace Saxonite.Net.Standard.Base.Bus
data.EffectiveOn = value.Date;
}
}
public DateTime ExpiresOn
{
get { return data.ExpiresOn; }
set
{
// Values are restricted to whole date, ie. no time.
CheckChanged(data.ExpiresOn, value.Date);
data.ExpiresOn = value.Date;
}
}
// Population.
internal void PopulateFrom(Data data)
{
ItemId = data.ItemId;
UserAccountIdOwner = data.UserAccountIdOwner;
OrganisationIdOwner = data.OrganisationIdOwner;
SportId = data.SportId;
RegionId = data.RegionId;
EffectiveOn = data.EffectiveOn;
ExpiresOn = data.ExpiresOn;
base.PopulateFrom(data);
}
public Data Clone()
@@ -124,9 +151,12 @@ namespace Saxonite.Net.Standard.Base.Bus
{
// Identifies the field that has invalid data.
public ValidValue ItemId { get; set; } = ValidValue.Valid;
public ValidValue UserAccountIdOwner { get; set; } = ValidValue.Valid;
public ValidValue OrganisationIdOwner { get; set; } = ValidValue.Valid;
public ValidValue SportId { get; set; } = ValidValue.Valid;
public ValidValue RegionId { get; set; } = ValidValue.Valid;
public ValidValue EffectiveOn { get; set; } = ValidValue.Valid;
public ValidValue ExpiresOn { get; set; } = ValidValue.Valid;
}
//-------------------------------------------------------------------
@@ -135,13 +165,12 @@ namespace Saxonite.Net.Standard.Base.Bus
//-------------------------------------------------------------------
// Construction.
protected SaxActivityIndex(ItemId itemId, SysId sportId, SysId regionId, DateTime effectiveOn) : base()
protected SaxActivityIndex(ItemId itemId, SysId sportId, SysId regionId) : base()
{
base.SetData(data);
ItemId = itemId;
SportId = sportId;
RegionId = regionId;
EffectiveOn = effectiveOn;
Status = DefaultStatus;
}
@@ -164,13 +193,12 @@ namespace Saxonite.Net.Standard.Base.Bus
//-------------------------------------------------------------------
// Utilities.
/// <summary>
/// Match the item to the sport, region and effective date.
/// Match the item to the sport and region.
/// </summary>
public bool MatchesSportRegionEffective(SysId sportId, SysId regionId, DateTime effectiveOn)
public bool MatchesSportRegion(SysId sportId, SysId regionId)
{
if (!SportId.Equals(sportId)) return false;
if (!RegionId.Equals(regionId)) return false;
if (!EffectiveOn.Equals(effectiveOn.Date)) return false;
return true;
}
@@ -197,6 +225,16 @@ namespace Saxonite.Net.Standard.Base.Bus
get { return data.ItemId; }
protected set { data.ItemId = value; }
}
public SysId UserAccountIdOwner
{
get { return data.UserAccountIdOwner; }
set { data.UserAccountIdOwner = value; }
}
public SysId OrganisationIdOwner
{
get { return data.OrganisationIdOwner; }
set { data.OrganisationIdOwner = value; }
}
public SysId SportId
{
get { return data.SportId; }
@@ -212,6 +250,11 @@ namespace Saxonite.Net.Standard.Base.Bus
get { return data.EffectiveOn; }
set { data.EffectiveOn = value; }
}
public DateTime ExpiresOn
{
get { return data.ExpiresOn; }
set { data.ExpiresOn = value; }
}
//-------------------------------------------------------------------
// Flags - positions 1-16 available.
@@ -224,6 +267,19 @@ namespace Saxonite.Net.Standard.Base.Bus
// P a r a m s
//-------------------------------------------------------------------
/// <summary>
/// Combination Sport and Region Ids to index activities.
/// </summary>
public class SportRegionIds
{
public SportRegionIds(SysId sportId, SysId regionId)
{
SportId = sportId;
RegionId = regionId;
}
public SysId SportId { get; }
public SysId RegionId { get; }
}
/// <summary>
/// Item list parameters.
/// </summary>
public new class Params : SacsHierarchyItem.Params
@@ -232,12 +288,18 @@ namespace Saxonite.Net.Standard.Base.Bus
public List<SysId> IdsIncluded { get; } = new List<SysId>();
public List<SysId> IdsExcluded { get; } = new List<SysId>();
public List<ItemId> ItemIdsIncluded { get; } = new List<ItemId>();
public List<SysId> SportIdsIncluded { get; } = new List<SysId>();
public List<SysId> RegionIdsIncluded { get; } = new List<SysId>();
public DateTime EffectiveFrom { get; set; }
public DateTime EffectiveTo { get; set; }
/// <summary>Activities must match one of the sport/region combinations specified.</summary>
public List<SportRegionIds> SportRegionIdsIncluded { get; } = new List<SportRegionIds>();
/// <summary>Owner User Accounts - to include activities in result for users regardless of sports/regions.</summary>
public List<SysId> UserAccountIdsOwnerIncluded { get; } = new List<SysId>();
/// <summary>Owner Organisations - to include activities in result for organisations regardless of sport/region combinations.</summary>
public List<SysId> OrganisationIdsOwnerIncluded { get; } = new List<SysId>();
/// <summary>User Account - to include User Activity data in result.</summary>
public SysId UserAccountId { get; set; }
public DateTime EffectiveFrom { get; set; }
public DateTime EffectiveTo { get; set; }
/// <summary>Not Expired - either Expiry date not set or is after specified date.</summary>
public DateTime NotExpiredOn { get; set; }
// Table aliases - blank if not linked.
public String Alias_ActivityIndex { get; set; }
}
@@ -249,11 +311,11 @@ namespace Saxonite.Net.Standard.Base.Bus
public static class SaxActivityIndexList
{
/// <summary>
/// Get first entry that matcehs the sport, region and effective date.
/// Get first entry that matches the sport and region.
/// </summary>
public static SaxActivityIndex GetActivityIndexBySportRegionEffective(this List<SaxActivityIndex> values, SysId sportId, SysId regionId, DateTime effectiveOn)
public static SaxActivityIndex GetActivityIndexBySportRegion(this List<SaxActivityIndex> values, SysId sportId, SysId regionId)
{
return values.Find(item => item.MatchesSportRegionEffective(sportId, regionId, effectiveOn));
return values.Find(item => item.MatchesSportRegion(sportId, regionId));
}
}