v1.2.4
This commit is contained in:
@@ -18,7 +18,7 @@ namespace Saxonite.Net.Standard.Base.App
|
||||
//-------------------------------------------------------------------
|
||||
public static class Version
|
||||
{
|
||||
private static String version { get; } = "1.2.3.2";
|
||||
private static String version { get; } = "1.2.4";
|
||||
// Retrieve version.
|
||||
public static String GetFullVersion () { return version; }
|
||||
public static String GetAppVersion ()
|
||||
@@ -40,6 +40,9 @@ namespace Saxonite.Net.Standard.Base.App
|
||||
//-------------------------------------------------------------------
|
||||
// Version history.
|
||||
//-------------------------------------------------------------------
|
||||
// 1.2.4 3-Mar-2022 View own articles.
|
||||
// - Online Home page lists own articlesregardless of sport/region.
|
||||
// - Admin System Database Table info.
|
||||
// 1.2.3 16-Feb-2022 User online activity.
|
||||
// - Record user last online.
|
||||
// - Online Organisation category select - remove Partner/Other.
|
||||
|
||||
@@ -6,7 +6,7 @@ using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
// Code generated by Sarand Database Utilities Sat 15-Jan-2022 16:34:34
|
||||
// Code generated by Sarand Database Utilities Thu 3-Mar-2022 16:50:00
|
||||
//---------------------------------------------------------------------------
|
||||
namespace Saxonite.Base.App
|
||||
{
|
||||
@@ -47,6 +47,9 @@ namespace Saxonite.Base.App
|
||||
ActivityIndex_SportId,
|
||||
ActivityIndex_RegionId,
|
||||
ActivityIndex_EffectiveOn,
|
||||
ActivityIndex_UserAccountIdOwner,
|
||||
ActivityIndex_OrganisationIdOwner,
|
||||
ActivityIndex_ExpiresOn,
|
||||
ActivityIndex_Notes,
|
||||
ActivityIndex_Flags,
|
||||
ActivityIndex_Status,
|
||||
@@ -216,6 +219,7 @@ namespace Saxonite.Base.App
|
||||
Region_UpdateBy,
|
||||
Region_UpdateHost,
|
||||
Sport_Id,
|
||||
Sport_SportIdParent,
|
||||
Sport_Name,
|
||||
Sport_SpecialityLabel,
|
||||
Sport_Notes,
|
||||
@@ -360,7 +364,7 @@ namespace Saxonite.Base.App
|
||||
//-------------------------------------------------------------------
|
||||
// Data members.
|
||||
private static readonly int tableCount = 18;
|
||||
private static readonly int columnCount = 313;
|
||||
private static readonly int columnCount = 317;
|
||||
private static ulong maxTextLen = 0;
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
@@ -555,6 +559,9 @@ namespace Saxonite.Base.App
|
||||
new ColumnDfn(1,"SportId",4,4,false,10),
|
||||
new ColumnDfn(1,"RegionId",4,4,false,10),
|
||||
new ColumnDfn(1,"EffectiveOn",9,93,false,16),
|
||||
new ColumnDfn(1,"UserAccountIdOwner",4,4,false,10),
|
||||
new ColumnDfn(1,"OrganisationIdOwner",4,4,false,10),
|
||||
new ColumnDfn(1,"ExpiresOn",9,93,false,16),
|
||||
new ColumnDfn(1,"Notes",0,-9,false,2000),
|
||||
new ColumnDfn(1,"Flags",3,5,false,5),
|
||||
new ColumnDfn(1,"Status",0,12,false,3),
|
||||
@@ -724,6 +731,7 @@ namespace Saxonite.Base.App
|
||||
new ColumnDfn(9,"UpdateBy",4,4,false,10),
|
||||
new ColumnDfn(9,"UpdateHost",0,12,false,100),
|
||||
new ColumnDfn(10,"Id",4,4,true,10),
|
||||
new ColumnDfn(10,"SportIdParent",4,4,false,10),
|
||||
new ColumnDfn(10,"Name",0,-9,false,100),
|
||||
new ColumnDfn(10,"SpecialityLabel",3,5,false,5),
|
||||
new ColumnDfn(10,"Notes",0,-9,false,2000),
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -18,6 +18,8 @@ namespace Saxonite.Net.Standard.Base.Bus
|
||||
{
|
||||
Pos,
|
||||
Id,
|
||||
SportIdParent,
|
||||
ParentSport_Name,
|
||||
Name,
|
||||
SpecialityLabel,
|
||||
SpecialityLabel_Desc,
|
||||
@@ -36,6 +38,7 @@ namespace Saxonite.Net.Standard.Base.Bus
|
||||
/// <summary>Properties other than common.</summary>
|
||||
public class DataProperties
|
||||
{
|
||||
public SysId SportIdParent { get; set; }
|
||||
public String Name { get; set; } = String.Empty;
|
||||
public Sax.SportSpecialityLabel SpecialityLabel { get; set; }
|
||||
}
|
||||
@@ -52,6 +55,11 @@ namespace Saxonite.Net.Standard.Base.Bus
|
||||
Status = DefaultStatus;
|
||||
}
|
||||
// Properties.
|
||||
public SysId SportIdParent
|
||||
{
|
||||
get { return data.SportIdParent; }
|
||||
set { CheckChanged(data.SportIdParent, value); data.SportIdParent = value; }
|
||||
}
|
||||
public String Name
|
||||
{
|
||||
get { return data.Name; }
|
||||
@@ -65,6 +73,7 @@ namespace Saxonite.Net.Standard.Base.Bus
|
||||
// Population.
|
||||
internal void PopulateFrom (Data data)
|
||||
{
|
||||
SportIdParent = data.SportIdParent;
|
||||
Name = data.Name;
|
||||
SpecialityLabel = data.SpecialityLabel;
|
||||
base.PopulateFrom(data);
|
||||
@@ -82,6 +91,7 @@ namespace Saxonite.Net.Standard.Base.Bus
|
||||
public new class ErrField : SacsHierarchyItem.ErrField
|
||||
{
|
||||
// Identifies the field that has invalid data.
|
||||
public ValidValue SportIdParent { get; set; } = ValidValue.Valid;
|
||||
public ValidValue Name { get; set; } = ValidValue.Valid;
|
||||
public ValidValue SpecialityLabel { get; set; } = ValidValue.Valid;
|
||||
}
|
||||
@@ -134,6 +144,11 @@ namespace Saxonite.Net.Standard.Base.Bus
|
||||
throw new NotSupportedException(fn + " Id cannot be changed");
|
||||
this.data.PopulateFrom(data);
|
||||
}
|
||||
public SysId SportIdParent
|
||||
{
|
||||
get { return data.SportIdParent; }
|
||||
set { data.SportIdParent = value; }
|
||||
}
|
||||
public String Name
|
||||
{
|
||||
get { return data.Name; }
|
||||
@@ -172,6 +187,7 @@ namespace Saxonite.Net.Standard.Base.Bus
|
||||
// List filtering.
|
||||
public List<SysId> IdsIncluded { get; } = new List<SysId>();
|
||||
public List<SysId> IdsExcluded { get; } = new List<SysId>();
|
||||
public SysId SportIdParent {get; set; }
|
||||
/// <summary>Generic filter - partial sport name, or other matching value (tbd).</summary>
|
||||
public String SportFilter { get; set; }
|
||||
public String NameFull { get; set; }
|
||||
|
||||
@@ -22,7 +22,8 @@ namespace Saxonite.Net.Standard.Base.Bus
|
||||
OnlineAt,
|
||||
// User properties.
|
||||
EmailAddress,
|
||||
Title, FirstName, LastName,
|
||||
DisplayName, Title, FirstName, LastName,
|
||||
LastLoginOn,
|
||||
LastLoginAt,
|
||||
}
|
||||
|
||||
|
||||
@@ -25,21 +25,35 @@ namespace Saxonite.Net.Standard.Base.Consoles
|
||||
public class IndexContext
|
||||
{
|
||||
// ToDo Include Localiser.
|
||||
/// <summary>
|
||||
/// Index Context - high level activity filter.
|
||||
/// <para>User Account allows User specific information about the activities to be included.</para>
|
||||
/// </summary>
|
||||
public IndexContext(SysId userAccountId)
|
||||
{
|
||||
UserAccountId = userAccountId;
|
||||
}
|
||||
public SysId UserAccountId { get; }
|
||||
public List<SysId> SportIds { get; } = new List<SysId>();
|
||||
public List<SysId> RegionIds { get; } = new List<SysId>();
|
||||
// Todo: Default period is ~12 months ago up to ~3 months in the future.
|
||||
/// <summary>Activities must match one of the sport/region combinations specified.</summary>
|
||||
public List<SaxActivityIndex.SportRegionIds> SportRegionIdsIncluded { get; } = new List<SaxActivityIndex.SportRegionIds>();
|
||||
/// <summary>
|
||||
/// Owner Users - eg. journalist for articles.
|
||||
/// <para>Allows the users' activities to be queried without relying on matching sport/region combinations.</para>
|
||||
/// </summary>
|
||||
public List<SysId> UserAccountIdsOwner { get; } = new List<SysId>();
|
||||
/// <summary>
|
||||
/// Owner Organisations - for articles, events and opportunities.
|
||||
/// <para>Allows the organisations' own activities to be queried without relying on matching sport/region combinations.</para>
|
||||
/// </summary>
|
||||
public List<SysId> OrganisationIdsOwner { get; } = new List<SysId>();
|
||||
// Todo: Default effective period for Activities.
|
||||
public DateTime EffectiveFrom { get; set; } = DateUtil.IncrementDate(DateTime.Today, -365);
|
||||
public DateTime EffectiveTo { get; set; } = DateUtil.IncrementDate(DateTime.Today, 30);
|
||||
public DateTime NotExpiredOn { get; set; } = DateTime.Today;
|
||||
public bool IsValid()
|
||||
{
|
||||
// Context must contain at least a sport, a region and a valid effective period.
|
||||
if (!SportIds.HasValidIds()) return false;
|
||||
if (!RegionIds.HasValidIds()) return false;
|
||||
if (!SportRegionIdsIncluded.Exists(item => SysId.IsValid(item.SportId) && SysId.IsValid(item.RegionId)) && !UserAccountIdsOwner.HasValidIds() && !OrganisationIdsOwner.HasValidIds()) return false;
|
||||
if (!DateUtil.IsValid(EffectiveFrom) || EffectiveTo < EffectiveFrom) return false;
|
||||
return true;
|
||||
}
|
||||
@@ -138,6 +152,8 @@ namespace Saxonite.Net.Standard.Base.Consoles
|
||||
{
|
||||
// Activity Index properties.
|
||||
IndexData indexData = new IndexData(article.GetItemId());
|
||||
indexData.UserAccountIdOwner = article.UserAccountIdAuthor;
|
||||
indexData.OrganisationIdOwner = article.OrganisationId;
|
||||
indexData.SportIds.Add(article.SportIdPrimary);
|
||||
indexData.RegionIds.Add(article.RegionIdPrimary);
|
||||
indexData.EffectiveOn = DateUtil.OnInvalid(article.PublishedAt.Date, article.CreateStamp.On.Date);
|
||||
@@ -165,9 +181,11 @@ namespace Saxonite.Net.Standard.Base.Consoles
|
||||
|
||||
// Activity Index properties.
|
||||
IndexData indexData = new IndexData(organisationEvent.GetItemId());
|
||||
indexData.OrganisationIdOwner = organisationEvent.OrganisationId;
|
||||
indexData.SportIds.Add(organisationEvent.SportIdPrimary);
|
||||
indexData.RegionIds.Add(organisationEvent.RegionIdCountry);
|
||||
indexData.EffectiveOn = DateUtil.OnInvalid(organisationEvent.PublishedAt.Date, organisationEvent.CreateStamp.On.Date);
|
||||
indexData.ExpiresOn = DateUtil.OnInvalid(organisationEvent.ExpiresAt.Date, DateUtil.IncrementDate(indexData.EffectiveOn, 7));
|
||||
return StoreActivityIndexData(indexData, dbUpdateInfo);
|
||||
}
|
||||
public bool ClearActivityIndex(SaxOrganisationEvent organisationEvent, DbUpdateInfo dbUpdateInfo)
|
||||
@@ -190,9 +208,11 @@ namespace Saxonite.Net.Standard.Base.Consoles
|
||||
|
||||
// Activity Index properties.
|
||||
IndexData indexData = new IndexData(opportunity.GetItemId());
|
||||
indexData.OrganisationIdOwner = opportunity.OrganisationId;
|
||||
indexData.SportIds.Add(opportunity.SportIdPrimary);
|
||||
indexData.RegionIds.Add(opportunity.RegionIdPrimary);
|
||||
indexData.EffectiveOn = DateUtil.OnInvalid(opportunity.PublishedAt.Date, opportunity.CreateStamp.On.Date);
|
||||
indexData.ExpiresOn = DateUtil.OnInvalid(opportunity.ExpiresAt.Date, DateUtil.IncrementDate(indexData.EffectiveOn, 28));
|
||||
return StoreActivityIndexData(indexData, dbUpdateInfo);
|
||||
}
|
||||
public bool ClearActivityIndex(SaxOrganisationOpportunity opportunity, DbUpdateInfo dbUpdateInfo)
|
||||
@@ -211,9 +231,12 @@ namespace Saxonite.Net.Standard.Base.Consoles
|
||||
ItemId = itemId;
|
||||
}
|
||||
public ItemId ItemId { get; }
|
||||
public SysId UserAccountIdOwner { get; set; }
|
||||
public SysId OrganisationIdOwner { get; set; }
|
||||
public List<SysId> SportIds { get; } = new List<SysId>();
|
||||
public List<SysId> RegionIds { get; } = new List<SysId>();
|
||||
public DateTime EffectiveOn { get; set; }
|
||||
public DateTime ExpiresOn { get; set; }
|
||||
public bool IsValid()
|
||||
{
|
||||
if (!ItemId.IsValid(ItemId)) return false;
|
||||
@@ -226,17 +249,23 @@ namespace Saxonite.Net.Standard.Base.Consoles
|
||||
/// <summary>Single entry in the index for an activity.</summary>
|
||||
protected class IndexEntryData
|
||||
{
|
||||
public IndexEntryData(ItemId itemId, SysId sportId, SysId regionId, DateTime effectiveOn)
|
||||
public IndexEntryData(ItemId itemId, SysId userAccountIdOwner, SysId organisationIdOwner, SysId sportId, SysId regionId, DateTime effectiveOn, DateTime expiresOn)
|
||||
{
|
||||
ItemId = itemId;
|
||||
UserAccountIdOwner = userAccountIdOwner;
|
||||
OrganisationIdOwner = organisationIdOwner;
|
||||
SportId = sportId;
|
||||
RegionId = regionId;
|
||||
EffectiveOn = effectiveOn;
|
||||
ExpiresOn = expiresOn;
|
||||
}
|
||||
public ItemId ItemId { get; }
|
||||
public SysId UserAccountIdOwner { get; }
|
||||
public SysId OrganisationIdOwner { get; }
|
||||
public SysId SportId { get; }
|
||||
public SysId RegionId { get; }
|
||||
public DateTime EffectiveOn { get; }
|
||||
public DateTime ExpiresOn { get; }
|
||||
public bool IsValid()
|
||||
{
|
||||
if (!ItemId.IsValid(ItemId)) return false;
|
||||
@@ -279,7 +308,7 @@ namespace Saxonite.Net.Standard.Base.Consoles
|
||||
{
|
||||
foreach (SysId regionId in indexData.RegionIds.FindAll(item => SysId.IsValid(item)))
|
||||
{
|
||||
IndexEntryData indexEntry = new IndexEntryData(indexData.ItemId, sportId, regionId, indexData.EffectiveOn);
|
||||
IndexEntryData indexEntry = new IndexEntryData(indexData.ItemId, indexData.UserAccountIdOwner, indexData.OrganisationIdOwner, sportId, regionId, indexData.EffectiveOn, indexData.ExpiresOn);
|
||||
if (indexEntry.IsValid())
|
||||
indexEntries.Add(indexEntry);
|
||||
}
|
||||
|
||||
@@ -109,6 +109,13 @@ namespace Saxonite.Net.Standard.Base.Mgr
|
||||
switch ((SaxUserOnline.Column)column.Id)
|
||||
{
|
||||
//-----------------------------------------------------------
|
||||
case SaxUserOnline.Column.DisplayName:
|
||||
String title = values.GetValue(GetUserOnlineColumnDfn(SaxUserOnline.Column.Title).DataName).ToString();
|
||||
String firstName = values.GetValue(GetUserOnlineColumnDfn(SaxUserOnline.Column.FirstName).DataName).ToString();
|
||||
String lastName = values.GetValue(GetUserOnlineColumnDfn(SaxUserOnline.Column.LastName).DataName).ToString();
|
||||
value = new DataValue(SaxUserAccount.GetDisplayName(title, firstName, lastName));
|
||||
break;
|
||||
|
||||
//-----------------------------------------------------------
|
||||
}
|
||||
return value;
|
||||
|
||||
@@ -30,7 +30,7 @@ namespace Saxonite.Net.Standard.Base.Mgr
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Create item.
|
||||
public abstract SaxActivityIndex CreateActivityIndex(ItemId itemId, SysId sportId, SysId regionId, DateTime effectiveOn);
|
||||
public abstract SaxActivityIndex CreateActivityIndex(ItemId itemId, SysId sportId, SysId regionId);
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Retrieve individual items.
|
||||
@@ -95,7 +95,14 @@ namespace Saxonite.Net.Standard.Base.Mgr
|
||||
}
|
||||
}
|
||||
|
||||
// NB Associated data items aren't validated as these should be valid on the 'parent' object.
|
||||
// NB Associated data items shouldn't need to be validated as these should be valid on the 'parent' object.
|
||||
if (errField.OrganisationIdOwner != SacsHierarchyItem.ValidValue.Ignore && SysId.IsValid(data.OrganisationIdOwner))
|
||||
{
|
||||
}
|
||||
|
||||
if (errField.OrganisationIdOwner != SacsHierarchyItem.ValidValue.Ignore && SysId.IsValid(data.OrganisationIdOwner))
|
||||
{
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------
|
||||
return true;
|
||||
|
||||
@@ -78,29 +78,54 @@ namespace Saxonite.Net.Standard.Base.Mgr
|
||||
{
|
||||
ClearErrorState();
|
||||
|
||||
// Name.
|
||||
if (errField.Name != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Name, "name", (long)SaxDbDfn_Core.GetColTextLen(SaxDbDfn_Core.ColumnIdx.Sport_Name), true))
|
||||
// Record disposable items as they are created so all can be disposed when needed.
|
||||
using (DisposableCollection<SacsHierarchyItem> disposableItems = new DisposableCollection<SacsHierarchyItem>())
|
||||
{
|
||||
errField.Name = SacsHierarchyItem.ValidValue.Invalid;
|
||||
return false;
|
||||
}
|
||||
// Common properties.
|
||||
if (errField.Notes != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Notes, "notes", (long)SaxDbDfn_Core.GetColTextLen(SaxDbDfn_Core.ColumnIdx.Sport_Notes)))
|
||||
{
|
||||
errField.Notes = SacsHierarchyItem.ValidValue.Invalid;
|
||||
return false;
|
||||
}
|
||||
if (errField.Status != SacsHierarchyItem.ValidValue.Ignore)
|
||||
{
|
||||
if (!IsValidValue(data.StatusCode, "status", (long)SaxDbDfn_Core.GetColTextLen(SaxDbDfn_Core.ColumnIdx.Sport_Status), true, true))
|
||||
|
||||
// Name.
|
||||
if (errField.Name != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Name, "name", (long)SaxDbDfn_Core.GetColTextLen(SaxDbDfn_Core.ColumnIdx.Sport_Name), true))
|
||||
{
|
||||
errField.Status = SacsHierarchyItem.ValidValue.Invalid;
|
||||
errField.Name = SacsHierarchyItem.ValidValue.Invalid;
|
||||
return false;
|
||||
}
|
||||
if (!SaxSport.ValidStatuses.Contains(data.Status))
|
||||
// Common properties.
|
||||
if (errField.Notes != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Notes, "notes", (long)SaxDbDfn_Core.GetColTextLen(SaxDbDfn_Core.ColumnIdx.Sport_Notes)))
|
||||
{
|
||||
errField.Status = SacsHierarchyItem.ValidValue.Invalid;
|
||||
return SetErrorState(ErrorMessage.InvalidStatus);
|
||||
errField.Notes = SacsHierarchyItem.ValidValue.Invalid;
|
||||
return false;
|
||||
}
|
||||
if (errField.Status != SacsHierarchyItem.ValidValue.Ignore)
|
||||
{
|
||||
if (!IsValidValue(data.StatusCode, "status", (long)SaxDbDfn_Core.GetColTextLen(SaxDbDfn_Core.ColumnIdx.Sport_Status), true, true))
|
||||
{
|
||||
errField.Status = SacsHierarchyItem.ValidValue.Invalid;
|
||||
return false;
|
||||
}
|
||||
if (!SaxSport.ValidStatuses.Contains(data.Status))
|
||||
{
|
||||
errField.Status = SacsHierarchyItem.ValidValue.Invalid;
|
||||
return SetErrorState(ErrorMessage.InvalidStatus);
|
||||
}
|
||||
}
|
||||
|
||||
// Associated data.
|
||||
if (data.Status != SaStatus.Deleted)
|
||||
{
|
||||
if (errField.SportIdParent != SacsHierarchyItem.ValidValue.Ignore && SysId.IsValid(data.SportIdParent))
|
||||
{
|
||||
SaxSport sport = GetSportById(data.SportIdParent);
|
||||
disposableItems.Add(sport);
|
||||
if (sport == null)
|
||||
{
|
||||
errField.SportIdParent = SacsHierarchyItem.ValidValue.Invalid;
|
||||
return SetErrorState("Invalid parent");
|
||||
}
|
||||
if (SysId.IsValid(sport.SportIdParent))
|
||||
{
|
||||
errField.SportIdParent = SacsHierarchyItem.ValidValue.Invalid;
|
||||
return SetErrorState("parent already has a parent.");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user