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
+5 -2
View File
@@ -18,7 +18,7 @@ namespace Saxonite.Net.Standard.Base.App
//-------------------------------------------------------------------
public static class Version
{
private static String version { get; } = "1.2.4.4";
private static String version { get; } = "1.2.5.0";
// Retrieve version.
public static String GetFullVersion () { return version; }
public static String GetAppVersion ()
@@ -31,7 +31,7 @@ namespace Saxonite.Net.Standard.Base.App
String[] versionElements = version.Split('.');
return String.Join(".", versionElements.Take(3));
}
catch (Exception exc) { SaLogger.Warn("Sax.Version.ToString " + ExceptionUtil.GetErrorStateMessage(exc)); }
catch (Exception exc) { SaLogger.Warn("Sax.Version.GetAppVersion " + ExceptionUtil.GetErrorStateMessage(exc)); }
}
return version;
}
@@ -40,6 +40,9 @@ namespace Saxonite.Net.Standard.Base.App
//-------------------------------------------------------------------
// Version history.
//-------------------------------------------------------------------
// 1.2.5 20-Apr-2022 Article feedback
// - Online Activity/Article feedback 5 stars, summary on Article list/popup.
// - Admin - User - Sports listed.
// 1.2.4 3-Mar-2022 View own articles.
// - Online Home page lists own articlesregardless of sport/region.
// - Admin System Database Table info.
+5 -3
View File
@@ -284,9 +284,11 @@ namespace Saxonite.Net.Standard.Base.App
{
Unknown = 0,
/* Do not change the values or codes - tied to database. */
Good = 400,
VeryGood = 600,
Exceptional = 800,
OK = 1,
Good = 2,
VeryGood = 3,
Outstanding = 4,
Exceptional = 5,
}
//-------------------------------------------------------------------
+193 -175
View File
@@ -6,7 +6,7 @@ using System.Collections.Generic;
using System.Linq;
//---------------------------------------------------------------------------
// Code generated by Sarand Database Utilities Mon 7-Mar-2022 10:06:56
// Code generated by Sarand Database Utilities Mon 11-Apr-2022 17:51:44
//---------------------------------------------------------------------------
namespace Saxonite.Base.App
{
@@ -17,6 +17,7 @@ namespace Saxonite.Base.App
public enum TableIdx
{
Unknown = 0,
ActivityFeedback,
ActivityIndex,
Article,
ItemAddress,
@@ -42,6 +43,14 @@ namespace Saxonite.Base.App
public enum ColumnIdx
{
Unknown = 0,
ActivityFeedback_ItemType,
ActivityFeedback_ItemId,
ActivityFeedback_ViewCount,
ActivityFeedback_FeedbackCount,
ActivityFeedback_FeedbackTotal,
ActivityFeedback_FeedbackAverage,
ActivityFeedback_CreateOn,
ActivityFeedback_UpdateOn,
ActivityIndex_ItemType,
ActivityIndex_ItemId,
ActivityIndex_SportId,
@@ -367,8 +376,8 @@ namespace Saxonite.Base.App
//-------------------------------------------------------------------
// Data members.
private static readonly int tableCount = 18;
private static readonly int columnCount = 321;
private static readonly int tableCount = 19;
private static readonly int columnCount = 329;
private static ulong maxTextLen = 0;
//-------------------------------------------------------------------
@@ -514,6 +523,7 @@ namespace Saxonite.Base.App
// Table definitions.
private static readonly String[] tables =
{
"ActivityFeedback",
"ActivityIndex",
"Article",
"ItemAddress",
@@ -560,30 +570,20 @@ namespace Saxonite.Base.App
{
new ColumnDfn(1,"ItemType",3,5,false,5),
new ColumnDfn(1,"ItemId",5,-5,false,19),
new ColumnDfn(1,"SportId",4,4,false,10),
new ColumnDfn(1,"RegionId",4,4,false,10),
new ColumnDfn(1,"UserAccountIdOwner",4,4,false,10),
new ColumnDfn(1,"OrganisationIdOwner",4,4,false,10),
new ColumnDfn(1,"EffectiveOn",9,93,false,16),
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),
new ColumnDfn(1,"ViewCount",5,-5,false,19),
new ColumnDfn(1,"FeedbackCount",5,-5,false,19),
new ColumnDfn(1,"FeedbackTotal",5,-5,false,19),
new ColumnDfn(1,"FeedbackAverage",8,3,false,9),
new ColumnDfn(1,"CreateOn",9,93,false,23),
new ColumnDfn(1,"CreateBy",4,4,false,10),
new ColumnDfn(1,"CreateHost",0,12,false,100),
new ColumnDfn(1,"UpdateOn",9,93,false,23),
new ColumnDfn(1,"UpdateBy",4,4,false,10),
new ColumnDfn(1,"UpdateHost",0,12,false,100),
new ColumnDfn(2,"Id",4,4,true,10),
new ColumnDfn(2,"UserAccountIdAuthor",4,4,false,10),
new ColumnDfn(2,"OrganisationId",4,4,false,10),
new ColumnDfn(2,"SportIdPrimary",4,4,false,10),
new ColumnDfn(2,"RegionIdPrimary",4,4,false,10),
new ColumnDfn(2,"Headline",0,-9,false,200),
new ColumnDfn(2,"Summary",0,-9,false,2000),
new ColumnDfn(2,"BodyData",0,-9,false,0),
new ColumnDfn(2,"PublishedAt",9,93,false,16),
new ColumnDfn(2,"ItemType",3,5,false,5),
new ColumnDfn(2,"ItemId",5,-5,false,19),
new ColumnDfn(2,"SportId",4,4,false,10),
new ColumnDfn(2,"RegionId",4,4,false,10),
new ColumnDfn(2,"UserAccountIdOwner",4,4,false,10),
new ColumnDfn(2,"OrganisationIdOwner",4,4,false,10),
new ColumnDfn(2,"EffectiveOn",9,93,false,16),
new ColumnDfn(2,"ExpiresOn",9,93,false,16),
new ColumnDfn(2,"Notes",0,-9,false,2000),
new ColumnDfn(2,"Flags",3,5,false,5),
new ColumnDfn(2,"Status",0,12,false,3),
@@ -593,32 +593,18 @@ namespace Saxonite.Base.App
new ColumnDfn(2,"UpdateOn",9,93,false,23),
new ColumnDfn(2,"UpdateBy",4,4,false,10),
new ColumnDfn(2,"UpdateHost",0,12,false,100),
new ColumnDfn(3,"Id",5,-5,true,19),
new ColumnDfn(3,"ItemType",3,5,false,5),
new ColumnDfn(3,"ItemId",4,4,false,10),
new ColumnDfn(3,"AddressType",3,5,false,5),
new ColumnDfn(3,"Caption",0,-9,false,200),
new ColumnDfn(3,"Line1",0,-9,false,200),
new ColumnDfn(3,"Line2",0,-9,false,200),
new ColumnDfn(3,"Line3",0,-9,false,200),
new ColumnDfn(3,"Town",0,-9,false,100),
new ColumnDfn(3,"Province",0,-9,false,100),
new ColumnDfn(3,"RegionIdProvince",4,4,false,10),
new ColumnDfn(3,"Country",0,-9,false,100),
new ColumnDfn(3,"RegionIdCountry",4,4,false,10),
new ColumnDfn(3,"PostalCode",0,-9,false,32),
new ColumnDfn(3,"PhoneMain",0,-9,false,100),
new ColumnDfn(3,"LocationSource",0,12,false,100),
new ColumnDfn(3,"LocationStoredAt",9,93,false,16),
new ColumnDfn(3,"LocationUpdateRequired",1,-7,false,1),
new ColumnDfn(3,"LocationData",0,-9,false,4000),
new ColumnDfn(3,"LocationFormattedAddress",0,-9,false,4000),
new ColumnDfn(3,"LocationLatitude",8,3,false,9),
new ColumnDfn(3,"LocationLongitude",8,3,false,9),
new ColumnDfn(3,"LocationAltitude",8,3,false,9),
new ColumnDfn(3,"Id",4,4,true,10),
new ColumnDfn(3,"UserAccountIdAuthor",4,4,false,10),
new ColumnDfn(3,"OrganisationId",4,4,false,10),
new ColumnDfn(3,"SportIdPrimary",4,4,false,10),
new ColumnDfn(3,"RegionIdPrimary",4,4,false,10),
new ColumnDfn(3,"Headline",0,-9,false,200),
new ColumnDfn(3,"Summary",0,-9,false,2000),
new ColumnDfn(3,"BodyData",0,-9,false,0),
new ColumnDfn(3,"PublishedAt",9,93,false,16),
new ColumnDfn(3,"Notes",0,-9,false,2000),
new ColumnDfn(3,"Flags",3,5,false,5),
new ColumnDfn(3,"Status",0,1,false,3),
new ColumnDfn(3,"Status",0,12,false,3),
new ColumnDfn(3,"CreateOn",9,93,false,23),
new ColumnDfn(3,"CreateBy",4,4,false,10),
new ColumnDfn(3,"CreateHost",0,12,false,100),
@@ -628,30 +614,48 @@ namespace Saxonite.Base.App
new ColumnDfn(4,"Id",5,-5,true,19),
new ColumnDfn(4,"ItemType",3,5,false,5),
new ColumnDfn(4,"ItemId",4,4,false,10),
new ColumnDfn(4,"ImageType",3,5,false,5),
new ColumnDfn(4,"ImageSeq",2,-6,false,3),
new ColumnDfn(4,"SessionUid",5,-5,false,19),
new ColumnDfn(4,"ImageUid",4,4,false,10),
new ColumnDfn(4,"Filename",0,-9,false,1024),
new ColumnDfn(4,"Mime",0,12,false,64),
new ColumnDfn(4,"ContentType",0,12,false,128),
new ColumnDfn(4,"Width",4,4,false,10),
new ColumnDfn(4,"Height",4,4,false,10),
new ColumnDfn(4,"ImageData",10,-3,false,0),
new ColumnDfn(4,"AddressType",3,5,false,5),
new ColumnDfn(4,"Caption",0,-9,false,200),
new ColumnDfn(4,"Line1",0,-9,false,200),
new ColumnDfn(4,"Line2",0,-9,false,200),
new ColumnDfn(4,"Line3",0,-9,false,200),
new ColumnDfn(4,"Town",0,-9,false,100),
new ColumnDfn(4,"Province",0,-9,false,100),
new ColumnDfn(4,"RegionIdProvince",4,4,false,10),
new ColumnDfn(4,"Country",0,-9,false,100),
new ColumnDfn(4,"RegionIdCountry",4,4,false,10),
new ColumnDfn(4,"PostalCode",0,-9,false,32),
new ColumnDfn(4,"PhoneMain",0,-9,false,100),
new ColumnDfn(4,"LocationSource",0,12,false,100),
new ColumnDfn(4,"LocationStoredAt",9,93,false,16),
new ColumnDfn(4,"LocationUpdateRequired",1,-7,false,1),
new ColumnDfn(4,"LocationData",0,-9,false,4000),
new ColumnDfn(4,"LocationFormattedAddress",0,-9,false,4000),
new ColumnDfn(4,"LocationLatitude",8,3,false,9),
new ColumnDfn(4,"LocationLongitude",8,3,false,9),
new ColumnDfn(4,"LocationAltitude",8,3,false,9),
new ColumnDfn(4,"Notes",0,-9,false,2000),
new ColumnDfn(4,"Flags",3,5,false,5),
new ColumnDfn(4,"Status",0,12,false,3),
new ColumnDfn(4,"Status",0,1,false,3),
new ColumnDfn(4,"CreateOn",9,93,false,23),
new ColumnDfn(4,"CreateBy",4,4,false,10),
new ColumnDfn(4,"CreateHost",0,12,false,100),
new ColumnDfn(4,"UpdateOn",9,93,false,23),
new ColumnDfn(4,"UpdateBy",4,4,false,10),
new ColumnDfn(4,"UpdateHost",0,12,false,100),
new ColumnDfn(5,"Id",4,4,true,10),
new ColumnDfn(5,"Id",5,-5,true,19),
new ColumnDfn(5,"ItemType",3,5,false,5),
new ColumnDfn(5,"ItemId",4,4,false,10),
new ColumnDfn(5,"SportId",4,4,false,10),
new ColumnDfn(5,"ItemSportData",0,-9,false,0),
new ColumnDfn(5,"ImageType",3,5,false,5),
new ColumnDfn(5,"ImageSeq",2,-6,false,3),
new ColumnDfn(5,"SessionUid",5,-5,false,19),
new ColumnDfn(5,"ImageUid",4,4,false,10),
new ColumnDfn(5,"Filename",0,-9,false,1024),
new ColumnDfn(5,"Mime",0,12,false,64),
new ColumnDfn(5,"ContentType",0,12,false,128),
new ColumnDfn(5,"Width",4,4,false,10),
new ColumnDfn(5,"Height",4,4,false,10),
new ColumnDfn(5,"ImageData",10,-3,false,0),
new ColumnDfn(5,"Notes",0,-9,false,2000),
new ColumnDfn(5,"Flags",3,5,false,5),
new ColumnDfn(5,"Status",0,12,false,3),
@@ -662,14 +666,10 @@ namespace Saxonite.Base.App
new ColumnDfn(5,"UpdateBy",4,4,false,10),
new ColumnDfn(5,"UpdateHost",0,12,false,100),
new ColumnDfn(6,"Id",4,4,true,10),
new ColumnDfn(6,"Name",0,-9,false,100),
new ColumnDfn(6,"OrganisationType",0,12,false,3),
new ColumnDfn(6,"OrganisationCategory",0,12,false,3),
new ColumnDfn(6,"SportIdPrimary",4,4,false,10),
new ColumnDfn(6,"RegionIdPrimary",4,4,false,10),
new ColumnDfn(6,"CountryIso2Code",0,12,false,2),
new ColumnDfn(6,"PhoneMain",0,-9,false,50),
new ColumnDfn(6,"PhoneAlt",0,-9,false,50),
new ColumnDfn(6,"ItemType",3,5,false,5),
new ColumnDfn(6,"ItemId",4,4,false,10),
new ColumnDfn(6,"SportId",4,4,false,10),
new ColumnDfn(6,"ItemSportData",0,-9,false,0),
new ColumnDfn(6,"Notes",0,-9,false,2000),
new ColumnDfn(6,"Flags",3,5,false,5),
new ColumnDfn(6,"Status",0,12,false,3),
@@ -680,16 +680,14 @@ namespace Saxonite.Base.App
new ColumnDfn(6,"UpdateBy",4,4,false,10),
new ColumnDfn(6,"UpdateHost",0,12,false,100),
new ColumnDfn(7,"Id",4,4,true,10),
new ColumnDfn(7,"OrganisationId",4,4,false,10),
new ColumnDfn(7,"Name",0,-9,false,100),
new ColumnDfn(7,"OrganisationType",0,12,false,3),
new ColumnDfn(7,"OrganisationCategory",0,12,false,3),
new ColumnDfn(7,"SportIdPrimary",4,4,false,10),
new ColumnDfn(7,"RegionIdCountry",4,4,false,10),
new ColumnDfn(7,"EventAt",9,93,false,16),
new ColumnDfn(7,"EventTypeCode",0,12,false,3),
new ColumnDfn(7,"Summary",0,-9,false,200),
new ColumnDfn(7,"Details",0,-9,false,2000),
new ColumnDfn(7,"EventData",0,-9,false,0),
new ColumnDfn(7,"PublishedAt",9,93,false,16),
new ColumnDfn(7,"ExpiresAt",9,93,false,16),
new ColumnDfn(7,"RegionIdPrimary",4,4,false,10),
new ColumnDfn(7,"CountryIso2Code",0,12,false,2),
new ColumnDfn(7,"PhoneMain",0,-9,false,50),
new ColumnDfn(7,"PhoneAlt",0,-9,false,50),
new ColumnDfn(7,"Notes",0,-9,false,2000),
new ColumnDfn(7,"Flags",3,5,false,5),
new ColumnDfn(7,"Status",0,12,false,3),
@@ -702,11 +700,12 @@ namespace Saxonite.Base.App
new ColumnDfn(8,"Id",4,4,true,10),
new ColumnDfn(8,"OrganisationId",4,4,false,10),
new ColumnDfn(8,"SportIdPrimary",4,4,false,10),
new ColumnDfn(8,"RegionIdPrimary",4,4,false,10),
new ColumnDfn(8,"OpportunityTypeCode",0,12,false,3),
new ColumnDfn(8,"Position",0,-9,false,200),
new ColumnDfn(8,"Outline",0,-9,false,2000),
new ColumnDfn(8,"OpportunityData",0,-9,false,0),
new ColumnDfn(8,"RegionIdCountry",4,4,false,10),
new ColumnDfn(8,"EventAt",9,93,false,16),
new ColumnDfn(8,"EventTypeCode",0,12,false,3),
new ColumnDfn(8,"Summary",0,-9,false,200),
new ColumnDfn(8,"Details",0,-9,false,2000),
new ColumnDfn(8,"EventData",0,-9,false,0),
new ColumnDfn(8,"PublishedAt",9,93,false,16),
new ColumnDfn(8,"ExpiresAt",9,93,false,16),
new ColumnDfn(8,"Notes",0,-9,false,2000),
@@ -719,12 +718,15 @@ namespace Saxonite.Base.App
new ColumnDfn(8,"UpdateBy",4,4,false,10),
new ColumnDfn(8,"UpdateHost",0,12,false,100),
new ColumnDfn(9,"Id",4,4,true,10),
new ColumnDfn(9,"RegionType",3,5,false,5),
new ColumnDfn(9,"CountryIso2Code",0,12,false,2),
new ColumnDfn(9,"Name",0,-9,false,100),
new ColumnDfn(9,"Latitude",8,3,false,9),
new ColumnDfn(9,"Longitude",8,3,false,9),
new ColumnDfn(9,"RegionIdParent",4,4,false,10),
new ColumnDfn(9,"OrganisationId",4,4,false,10),
new ColumnDfn(9,"SportIdPrimary",4,4,false,10),
new ColumnDfn(9,"RegionIdPrimary",4,4,false,10),
new ColumnDfn(9,"OpportunityTypeCode",0,12,false,3),
new ColumnDfn(9,"Position",0,-9,false,200),
new ColumnDfn(9,"Outline",0,-9,false,2000),
new ColumnDfn(9,"OpportunityData",0,-9,false,0),
new ColumnDfn(9,"PublishedAt",9,93,false,16),
new ColumnDfn(9,"ExpiresAt",9,93,false,16),
new ColumnDfn(9,"Notes",0,-9,false,2000),
new ColumnDfn(9,"Flags",3,5,false,5),
new ColumnDfn(9,"Status",0,12,false,3),
@@ -735,9 +737,12 @@ 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,"RegionType",3,5,false,5),
new ColumnDfn(10,"CountryIso2Code",0,12,false,2),
new ColumnDfn(10,"Name",0,-9,false,100),
new ColumnDfn(10,"SpecialityLabel",3,5,false,5),
new ColumnDfn(10,"Latitude",8,3,false,9),
new ColumnDfn(10,"Longitude",8,3,false,9),
new ColumnDfn(10,"RegionIdParent",4,4,false,10),
new ColumnDfn(10,"Notes",0,-9,false,2000),
new ColumnDfn(10,"Flags",3,5,false,5),
new ColumnDfn(10,"Status",0,12,false,3),
@@ -748,29 +753,9 @@ namespace Saxonite.Base.App
new ColumnDfn(10,"UpdateBy",4,4,false,10),
new ColumnDfn(10,"UpdateHost",0,12,false,100),
new ColumnDfn(11,"Id",4,4,true,10),
new ColumnDfn(11,"EmailAddress",0,-9,false,200),
new ColumnDfn(11,"Title",0,-9,false,20),
new ColumnDfn(11,"FirstName",0,-9,false,100),
new ColumnDfn(11,"Initials",0,-9,false,10),
new ColumnDfn(11,"LastName",0,-9,false,100),
new ColumnDfn(11,"About",0,-9,false,2000),
new ColumnDfn(11,"PhoneMain",0,-9,false,50),
new ColumnDfn(11,"PhoneMobile",0,-9,false,50),
new ColumnDfn(11,"PhoneAlt",0,-9,false,50),
new ColumnDfn(11,"Gender",2,-6,false,3),
new ColumnDfn(11,"DateOfBirthDay",2,-6,false,3),
new ColumnDfn(11,"DateOfBirthMonth",2,-6,false,3),
new ColumnDfn(11,"DateOfBirthYear",3,5,false,5),
new ColumnDfn(11,"RegionIdCountry",4,4,false,10),
new ColumnDfn(11,"RegionIdProvince",4,4,false,10),
new ColumnDfn(11,"JournalistData",0,-9,false,0),
new ColumnDfn(11,"PasswordToken",0,12,false,32),
new ColumnDfn(11,"PasswordHashed",0,-9,false,100),
new ColumnDfn(11,"PasswordHistory",0,-9,false,0),
new ColumnDfn(11,"PasswordChangedAt",9,93,false,16),
new ColumnDfn(11,"LastLoginAt",9,93,false,16),
new ColumnDfn(11,"LastInvalidLoginAt",9,93,false,16),
new ColumnDfn(11,"InvalidLoginCount",3,5,false,5),
new ColumnDfn(11,"SportIdParent",4,4,false,10),
new ColumnDfn(11,"Name",0,-9,false,100),
new ColumnDfn(11,"SpecialityLabel",3,5,false,5),
new ColumnDfn(11,"Notes",0,-9,false,2000),
new ColumnDfn(11,"Flags",3,5,false,5),
new ColumnDfn(11,"Status",0,12,false,3),
@@ -780,19 +765,30 @@ namespace Saxonite.Base.App
new ColumnDfn(11,"UpdateOn",9,93,false,23),
new ColumnDfn(11,"UpdateBy",4,4,false,10),
new ColumnDfn(11,"UpdateHost",0,12,false,100),
new ColumnDfn(12,"Id",5,-5,true,19),
new ColumnDfn(12,"UserAccountId",4,4,false,10),
new ColumnDfn(12,"ItemType",3,5,false,5),
new ColumnDfn(12,"ItemId",5,-5,false,19),
new ColumnDfn(12,"CurrentlyListed",1,-7,false,1),
new ColumnDfn(12,"ListedAtFirst",9,93,false,16),
new ColumnDfn(12,"ListedAtLast",9,93,false,16),
new ColumnDfn(12,"ViewedAtFirst",9,93,false,16),
new ColumnDfn(12,"ViewedAtLast",9,93,false,16),
new ColumnDfn(12,"Reaction",3,5,false,5),
new ColumnDfn(12,"ReactedAtFirst",9,93,false,16),
new ColumnDfn(12,"ReactedAtLast",9,93,false,16),
new ColumnDfn(12,"UserActivityData",0,-9,false,0),
new ColumnDfn(12,"Id",4,4,true,10),
new ColumnDfn(12,"EmailAddress",0,-9,false,200),
new ColumnDfn(12,"Title",0,-9,false,20),
new ColumnDfn(12,"FirstName",0,-9,false,100),
new ColumnDfn(12,"Initials",0,-9,false,10),
new ColumnDfn(12,"LastName",0,-9,false,100),
new ColumnDfn(12,"About",0,-9,false,2000),
new ColumnDfn(12,"PhoneMain",0,-9,false,50),
new ColumnDfn(12,"PhoneMobile",0,-9,false,50),
new ColumnDfn(12,"PhoneAlt",0,-9,false,50),
new ColumnDfn(12,"Gender",2,-6,false,3),
new ColumnDfn(12,"DateOfBirthDay",2,-6,false,3),
new ColumnDfn(12,"DateOfBirthMonth",2,-6,false,3),
new ColumnDfn(12,"DateOfBirthYear",3,5,false,5),
new ColumnDfn(12,"RegionIdCountry",4,4,false,10),
new ColumnDfn(12,"RegionIdProvince",4,4,false,10),
new ColumnDfn(12,"JournalistData",0,-9,false,0),
new ColumnDfn(12,"PasswordToken",0,12,false,32),
new ColumnDfn(12,"PasswordHashed",0,-9,false,100),
new ColumnDfn(12,"PasswordHistory",0,-9,false,0),
new ColumnDfn(12,"PasswordChangedAt",9,93,false,16),
new ColumnDfn(12,"LastLoginAt",9,93,false,16),
new ColumnDfn(12,"LastInvalidLoginAt",9,93,false,16),
new ColumnDfn(12,"InvalidLoginCount",3,5,false,5),
new ColumnDfn(12,"Notes",0,-9,false,2000),
new ColumnDfn(12,"Flags",3,5,false,5),
new ColumnDfn(12,"Status",0,12,false,3),
@@ -802,29 +798,36 @@ namespace Saxonite.Base.App
new ColumnDfn(12,"UpdateOn",9,93,false,23),
new ColumnDfn(12,"UpdateBy",4,4,false,10),
new ColumnDfn(12,"UpdateHost",0,12,false,100),
new ColumnDfn(13,"Id",5,-5,true,19),
new ColumnDfn(13,"UserAccountId",4,4,false,10),
new ColumnDfn(13,"OnlineAt",9,93,false,16),
new ColumnDfn(14,"Id",5,-5,true,19),
new ColumnDfn(13,"ItemType",3,5,false,5),
new ColumnDfn(13,"ItemId",5,-5,false,19),
new ColumnDfn(13,"CurrentlyListed",1,-7,false,1),
new ColumnDfn(13,"ListedAtFirst",9,93,false,16),
new ColumnDfn(13,"ListedAtLast",9,93,false,16),
new ColumnDfn(13,"ViewedAtFirst",9,93,false,16),
new ColumnDfn(13,"ViewedAtLast",9,93,false,16),
new ColumnDfn(13,"Reaction",3,5,false,5),
new ColumnDfn(13,"ReactedAtFirst",9,93,false,16),
new ColumnDfn(13,"ReactedAtLast",9,93,false,16),
new ColumnDfn(13,"UserActivityData",0,-9,false,0),
new ColumnDfn(13,"Notes",0,-9,false,2000),
new ColumnDfn(13,"Flags",3,5,false,5),
new ColumnDfn(13,"Status",0,12,false,3),
new ColumnDfn(13,"CreateOn",9,93,false,23),
new ColumnDfn(13,"CreateBy",4,4,false,10),
new ColumnDfn(13,"CreateHost",0,12,false,100),
new ColumnDfn(13,"UpdateOn",9,93,false,23),
new ColumnDfn(13,"UpdateBy",4,4,false,10),
new ColumnDfn(13,"UpdateHost",0,12,false,100),
new ColumnDfn(14,"UserAccountId",4,4,false,10),
new ColumnDfn(14,"OrganisationId",4,4,false,10),
new ColumnDfn(14,"OrganisationRoleCodes",0,12,false,256),
new ColumnDfn(14,"OrganisationRoleCount",2,-6,false,3),
new ColumnDfn(14,"AdminComment",0,-9,false,2000),
new ColumnDfn(14,"Notes",0,-9,false,2000),
new ColumnDfn(14,"Flags",3,5,false,5),
new ColumnDfn(14,"Status",0,12,false,3),
new ColumnDfn(14,"CreateOn",9,93,false,23),
new ColumnDfn(14,"CreateBy",4,4,false,10),
new ColumnDfn(14,"CreateHost",0,12,false,100),
new ColumnDfn(14,"UpdateOn",9,93,false,23),
new ColumnDfn(14,"UpdateBy",4,4,false,10),
new ColumnDfn(14,"UpdateHost",0,12,false,100),
new ColumnDfn(14,"OnlineAt",9,93,false,16),
new ColumnDfn(15,"Id",5,-5,true,19),
new ColumnDfn(15,"UserAccountId",4,4,false,10),
new ColumnDfn(15,"UserRoleCode",0,12,false,16),
new ColumnDfn(15,"LastLoginAt",9,93,false,16),
new ColumnDfn(15,"LastInvalidLoginAt",9,93,false,16),
new ColumnDfn(15,"InvalidLoginCount",3,5,false,5),
new ColumnDfn(15,"OrganisationId",4,4,false,10),
new ColumnDfn(15,"OrganisationRoleCodes",0,12,false,256),
new ColumnDfn(15,"OrganisationRoleCount",2,-6,false,3),
new ColumnDfn(15,"AdminComment",0,-9,false,2000),
new ColumnDfn(15,"Notes",0,-9,false,2000),
new ColumnDfn(15,"Flags",3,5,false,5),
new ColumnDfn(15,"Status",0,12,false,3),
@@ -834,42 +837,34 @@ namespace Saxonite.Base.App
new ColumnDfn(15,"UpdateOn",9,93,false,23),
new ColumnDfn(15,"UpdateBy",4,4,false,10),
new ColumnDfn(15,"UpdateHost",0,12,false,100),
new ColumnDfn(16,"Id",5,-5,true,19),
new ColumnDfn(16,"UserAccountId",4,4,false,10),
new ColumnDfn(16,"ActivityIndexIds",0,-9,false,0),
new ColumnDfn(16,"UserSessionData",0,-9,false,0),
new ColumnDfn(16,"UserRoleCode",0,12,false,16),
new ColumnDfn(16,"LastLoginAt",9,93,false,16),
new ColumnDfn(16,"LastInvalidLoginAt",9,93,false,16),
new ColumnDfn(16,"InvalidLoginCount",3,5,false,5),
new ColumnDfn(16,"Notes",0,-9,false,2000),
new ColumnDfn(16,"Flags",3,5,false,5),
new ColumnDfn(16,"Status",0,12,false,3),
new ColumnDfn(16,"CreateOn",9,93,false,23),
new ColumnDfn(16,"CreateBy",4,4,false,10),
new ColumnDfn(16,"CreateHost",0,12,false,100),
new ColumnDfn(16,"UpdateOn",9,93,false,23),
new ColumnDfn(17,"Id",5,-5,true,19),
new ColumnDfn(16,"UpdateBy",4,4,false,10),
new ColumnDfn(16,"UpdateHost",0,12,false,100),
new ColumnDfn(17,"UserAccountId",4,4,false,10),
new ColumnDfn(17,"SportId",4,4,false,10),
new ColumnDfn(17,"About",0,-9,false,2000),
new ColumnDfn(17,"Participation",3,5,false,5),
new ColumnDfn(17,"Officiating",3,5,false,5),
new ColumnDfn(17,"UserSportData",0,-9,false,0),
new ColumnDfn(17,"Notes",0,-9,false,2000),
new ColumnDfn(17,"ActivityIndexIds",0,-9,false,0),
new ColumnDfn(17,"UserSessionData",0,-9,false,0),
new ColumnDfn(17,"Flags",3,5,false,5),
new ColumnDfn(17,"Status",0,12,false,3),
new ColumnDfn(17,"CreateOn",9,93,false,23),
new ColumnDfn(17,"CreateBy",4,4,false,10),
new ColumnDfn(17,"CreateHost",0,12,false,100),
new ColumnDfn(17,"UpdateOn",9,93,false,23),
new ColumnDfn(17,"UpdateBy",4,4,false,10),
new ColumnDfn(17,"UpdateHost",0,12,false,100),
new ColumnDfn(18,"Id",5,-5,true,19),
new ColumnDfn(18,"UserSportId",5,-5,false,19),
new ColumnDfn(18,"PeriodFrom",9,93,false,16),
new ColumnDfn(18,"PeriodTo",9,93,false,16),
new ColumnDfn(18,"OrganisationId",4,4,false,10),
new ColumnDfn(18,"OrganisationName",0,-9,false,200),
new ColumnDfn(18,"Summary",0,-9,false,2000),
new ColumnDfn(18,"Team",0,-9,false,64),
new ColumnDfn(18,"League",0,-9,false,64),
new ColumnDfn(18,"Speciality",0,-9,false,64),
new ColumnDfn(18,"SpecialitiesOther",0,-9,false,1000),
new ColumnDfn(18,"RegionIdNation",4,4,false,10),
new ColumnDfn(18,"RegionIdProvince",4,4,false,10),
new ColumnDfn(18,"UserSportExperienceData",0,-9,false,0),
new ColumnDfn(18,"UserAccountId",4,4,false,10),
new ColumnDfn(18,"SportId",4,4,false,10),
new ColumnDfn(18,"About",0,-9,false,2000),
new ColumnDfn(18,"Participation",3,5,false,5),
new ColumnDfn(18,"Officiating",3,5,false,5),
new ColumnDfn(18,"UserSportData",0,-9,false,0),
new ColumnDfn(18,"Notes",0,-9,false,2000),
new ColumnDfn(18,"Flags",3,5,false,5),
new ColumnDfn(18,"Status",0,12,false,3),
@@ -879,6 +874,29 @@ namespace Saxonite.Base.App
new ColumnDfn(18,"UpdateOn",9,93,false,23),
new ColumnDfn(18,"UpdateBy",4,4,false,10),
new ColumnDfn(18,"UpdateHost",0,12,false,100),
new ColumnDfn(19,"Id",5,-5,true,19),
new ColumnDfn(19,"UserSportId",5,-5,false,19),
new ColumnDfn(19,"PeriodFrom",9,93,false,16),
new ColumnDfn(19,"PeriodTo",9,93,false,16),
new ColumnDfn(19,"OrganisationId",4,4,false,10),
new ColumnDfn(19,"OrganisationName",0,-9,false,200),
new ColumnDfn(19,"Summary",0,-9,false,2000),
new ColumnDfn(19,"Team",0,-9,false,64),
new ColumnDfn(19,"League",0,-9,false,64),
new ColumnDfn(19,"Speciality",0,-9,false,64),
new ColumnDfn(19,"SpecialitiesOther",0,-9,false,1000),
new ColumnDfn(19,"RegionIdNation",4,4,false,10),
new ColumnDfn(19,"RegionIdProvince",4,4,false,10),
new ColumnDfn(19,"UserSportExperienceData",0,-9,false,0),
new ColumnDfn(19,"Notes",0,-9,false,2000),
new ColumnDfn(19,"Flags",3,5,false,5),
new ColumnDfn(19,"Status",0,12,false,3),
new ColumnDfn(19,"CreateOn",9,93,false,23),
new ColumnDfn(19,"CreateBy",4,4,false,10),
new ColumnDfn(19,"CreateHost",0,12,false,100),
new ColumnDfn(19,"UpdateOn",9,93,false,23),
new ColumnDfn(19,"UpdateBy",4,4,false,10),
new ColumnDfn(19,"UpdateHost",0,12,false,100),
};
//-------------------------------------------------------------------
@@ -0,0 +1,212 @@
using Sarand.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.Core;
using Sarand.Net.Standard.Base.Utils;
using Saxonite.Net.Standard.Base.App;
using System;
using System.Collections.Generic;
using System.Text;
namespace Saxonite.Net.Standard.Base.Bus
{
//=======================================================================
// ActivityIndex.
//=======================================================================
public abstract class SaxActivityFeedback : SacsHierarchyItem
{
//-------------------------------------------------------------------
// Columns.
public enum Column
{
Pos,
// Item.
ItemType,
ItemType_Code,
ItemType_Desc,
ItemId,
// Feedback.
ViewCount,
FeedbackCount,
FeedbackTotal,
FeedbackAverage,
// Common.
CreateOn_Date,
UpdateOn_Date,
}
//-------------------------------------------------------------------
/// <summary>Properties other than common.</summary>
public class DataProperties
{
public ItemId ItemId { get; set; } = new ItemId();
public long ViewCount { get; set; }
public long FeedbackCount { get; set; }
public long FeedbackTotal { get; set; }
public decimal FeedbackAverage { get; set; }
}
//-------------------------------------------------------------------
// Data.
public new class Data : SacsHierarchyItem.Data
{
// Data members.
private readonly DataProperties data = new DataProperties();
// Construction.
public Data() { }
// Properties.
public ItemId ItemId
{
get { return data.ItemId; }
set { CheckChanged(data.ItemId, value); data.ItemId = value; }
}
public long ViewCount
{
get { return data.ViewCount; }
set { CheckChanged(data.ViewCount, value); data.ViewCount = value; }
}
public long FeedbackCount
{
get { return data.FeedbackCount; }
set { CheckChanged(data.FeedbackCount, value); data.FeedbackCount = value; }
}
public long FeedbackTotal
{
get { return data.FeedbackTotal; }
set { CheckChanged(data.FeedbackTotal, value); data.FeedbackTotal = value; }
}
public decimal FeedbackAverage
{
get { return data.FeedbackAverage; }
set { CheckChanged(data.FeedbackAverage, value); data.FeedbackAverage = value; }
}
// Population.
internal void PopulateFrom(Data data)
{
ItemId = data.ItemId;
ViewCount = data.ViewCount;
FeedbackCount = data.FeedbackCount;
FeedbackTotal = data.FeedbackTotal;
FeedbackAverage = data.FeedbackAverage;
base.PopulateFrom(data);
}
public Data Clone()
{
Data data = new Data();
data.PopulateFrom(this);
return data;
}
}
//-------------------------------------------------------------------
// Error field - identify properties with validation error.
public new class ErrField : SacsHierarchyItem.ErrField
{
// Identifies the field that has invalid data.
public ValidValue ItemId { get; set; } = ValidValue.Valid;
public ValidValue ViewCount { get; set; } = ValidValue.Valid;
public ValidValue FeedbackCount { get; set; } = ValidValue.Valid;
public ValidValue FeedbackTotal { get; set; } = ValidValue.Valid;
public ValidValue FeedbackAverage { get; set; } = ValidValue.Valid;
}
//-------------------------------------------------------------------
// Data members.
private readonly Data data = new Data();
//-------------------------------------------------------------------
// Construction.
protected SaxActivityFeedback(ItemId itemId) : base()
{
base.SetData(data);
ItemId = itemId;
}
//-------------------------------------------------------------------
// Item Types.
private readonly static List<Sax.DataItemType> validItemTypes = new List<Sax.DataItemType>()
{ Sax.DataItemType.Article, Sax.DataItemType.OrganisationEvent, Sax.DataItemType.OrganisationOpportunity };
public static List<Sax.DataItemType> ValidItemTypes { get { return new List<Sax.DataItemType>(validItemTypes); } }
//-------------------------------------------------------------------
// Utilities.
//-------------------------------------------------------------------
// Properties.
public Data GetData() { return data.Clone(); }
public void SetData(Data data)
{
String fn = GetType().Name + ".SetData";
// Properties that cannot be changed if previously specified.
if (SysId.IsValid(Id) && SysId.ToInt(Id) != SysId.ToInt(data.Id))
throw new NotSupportedException(fn + " Id cannot be changed");
if (ItemId.IsValid(ItemId) && ItemId.Type != data.ItemId.Type && SysId.ToInt(ItemId.Id) != SysId.ToInt(data.ItemId.Id))
throw new NotSupportedException(fn + " Item Id cannot be changed");
this.data.PopulateFrom(data);
}
public ItemId ItemId
{
get { return data.ItemId; }
protected set { data.ItemId = value; }
}
public long ViewCount
{
get { return data.ViewCount; }
set { data.ViewCount = value; }
}
public long FeedbackCount
{
get { return data.FeedbackCount; }
set { data.FeedbackCount = value; }
}
public long FeedbackTotal
{
get { return data.FeedbackTotal; }
set { data.FeedbackTotal = value; }
}
public decimal FeedbackAverage
{
get { return data.FeedbackAverage; }
set { data.FeedbackAverage = value; }
}
//-------------------------------------------------------------------
// Flags - positions 1-16 available.
//-------------------------------------------------------------------
// A s s o c i a t e d D a t a
//-------------------------------------------------------------------
//-------------------------------------------------------------------
// P a r a m s
//-------------------------------------------------------------------
/// <summary>
/// Combination Sport and Region Ids to index activities.
/// </summary>
public class SportFeedbackAverages
{
public SportFeedbackAverages(SysId sportId, SysId regionId)
{
FeedbackTotal = sportId;
FeedbackAverage = regionId;
}
public SysId FeedbackTotal { get; }
public SysId FeedbackAverage { get; }
}
/// <summary>
/// Item list parameters.
/// </summary>
public new class Params : SacsHierarchyItem.Params
{
// List filtering.
public List<ItemId> ItemIdsIncluded { get; } = new List<ItemId>();
}
//-------------------------------------------------------------------
}
//=======================================================================
// Item list extension methods.
public static class SaxActivityFeedbackList
{
}
//=======================================================================
}
@@ -60,7 +60,7 @@ namespace Saxonite.Net.Standard.Base.Bus
/// <summary>Properties other than common.</summary>
public class DataProperties
{
public ItemId ItemId { get; set; }
public ItemId ItemId { get; set; } = new ItemId();
public SysId UserAccountIdOwner { get; set; }
public SysId OrganisationIdOwner { get; set; }
public SysId SportId { get; set; }
@@ -175,6 +175,12 @@ namespace Saxonite.Net.Standard.Base.Bus
Status = DefaultStatus;
}
//-------------------------------------------------------------------
// Item Types.
private readonly static List<Sax.DataItemType> validItemTypes = new List<Sax.DataItemType>()
{ Sax.DataItemType.Article, Sax.DataItemType.OrganisationEvent, Sax.DataItemType.OrganisationOpportunity };
public static List<Sax.DataItemType> ValidItemTypes { get { return new List<Sax.DataItemType>(validItemTypes); } }
//-------------------------------------------------------------------
// Status.
private static readonly List<SaStatus> validStatuses = new List<SaStatus>()
@@ -286,8 +292,6 @@ namespace Saxonite.Net.Standard.Base.Bus
public new class Params : SacsHierarchyItem.Params
{
// List filtering.
public List<SysId> IdsIncluded { get; } = new List<SysId>();
public List<SysId> IdsExcluded { get; } = new List<SysId>();
public List<ItemId> ItemIdsIncluded { get; } = new List<ItemId>();
/// <summary>Activities must match one of the sport/region combinations specified.</summary>
public List<SportRegionIds> SportRegionIdsIncluded { get; } = new List<SportRegionIds>();
@@ -38,6 +38,11 @@ namespace Saxonite.Net.Standard.Base.Bus
Summary,
PublishedAt_Date,
PublishedAt_DateTime,
// Feedback.
Feedback_ViewCount,
Feedback_FeedbackCount,
Feedback_FeedbackTotal,
Feedback_FeedbackAverage,
// Associated data.
// Common.
Notes,
@@ -58,7 +58,7 @@ namespace Saxonite.Net.Standard.Base.Bus
/// <summary>Properties other than common.</summary>
public class DataProperties
{
public ItemId ItemId { get; set; }
public ItemId ItemId { get; set; } = new ItemId();
public Sax.AddressType AddressType { get; set; }
public String Caption { get; set; }
public String Line1 { get; set; }
@@ -50,7 +50,7 @@ namespace Saxonite.Net.Standard.Base.Bus
/// <summary>Properties other than common.</summary>
public class DataProperties
{
public ItemId ItemId { get; set; }
public ItemId ItemId { get; set; } = new ItemId();
public Sax.ImageType ImageType { get; set; }
public byte ImageSeq { get; set; }
public long SessionUid { get; set; }
@@ -42,7 +42,7 @@ namespace Saxonite.Net.Standard.Base.Bus
/// <summary>Properties other than common.</summary>
public class DataProperties
{
public ItemId ItemId { get; set; }
public ItemId ItemId { get; set; } = new ItemId();
public SysId SportId { get; set; }
public String ItemSportData { get; set; }
}
+19 -9
View File
@@ -50,7 +50,7 @@ namespace Saxonite.Net.Standard.Base.Bus
// Data members.
private readonly DataProperties data = new DataProperties();
// Construction.
public Data ()
public Data()
{
Status = DefaultStatus;
}
@@ -71,14 +71,14 @@ namespace Saxonite.Net.Standard.Base.Bus
set { CheckChanged((short)data.SpecialityLabel, (short)value); data.SpecialityLabel = value; }
}
// Population.
internal void PopulateFrom (Data data)
internal void PopulateFrom(Data data)
{
SportIdParent = data.SportIdParent;
Name = data.Name;
SpecialityLabel = data.SpecialityLabel;
base.PopulateFrom(data);
}
public Data Clone ()
public Data Clone()
{
Data data = new Data();
data.PopulateFrom(this);
@@ -102,7 +102,7 @@ namespace Saxonite.Net.Standard.Base.Bus
//-------------------------------------------------------------------
// Construction.
protected SaxSport (SysId id) : base(id)
protected SaxSport(SysId id) : base(id)
{
base.SetData(data);
Status = DefaultStatus;
@@ -118,7 +118,7 @@ namespace Saxonite.Net.Standard.Base.Bus
};
public static SaStatus DefaultStatus { get { return SaStatus.Active; } }
public static List<SaStatus> ValidStatuses { get { return new List<SaStatus>(validStatuses); } }
public static DataValue.TriStateType GetStatusTriState (SaStatus status)
public static DataValue.TriStateType GetStatusTriState(SaStatus status)
{
if (status == SaStatus.Active) return DataValue.TriStateType.Green;
if (status == SaStatus.Inactive) return DataValue.TriStateType.Red;
@@ -128,15 +128,15 @@ namespace Saxonite.Net.Standard.Base.Bus
//-------------------------------------------------------------------
// Utilities.
public ItemId GetItemId ()
public ItemId GetItemId()
{
return new ItemId((short)Sax.DataItemType.Sport, Id);
}
//-------------------------------------------------------------------
// Properties.
public Data GetData () { return data.Clone(); }
public void SetData (Data data)
public Data GetData() { return data.Clone(); }
public void SetData(Data data)
{
String fn = GetType().Name + ".SetData";
// Properties that cannot be changed if previously specified.
@@ -187,7 +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; }
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; }
@@ -203,6 +203,16 @@ namespace Saxonite.Net.Standard.Base.Bus
// Item list extension methods.
public static class SaxSportList
{
//-------------------------------------------------------------------
public static SaxSport GetSportById(this IEnumerable<SaxSport> values, SysId sportId)
{
if (!SysId.IsValid(sportId)) return null;
foreach (SaxSport sport in values)
if (sport.Id.Equals(sportId)) return sport;
return null;
}
//-------------------------------------------------------------------
}
//=======================================================================
@@ -46,6 +46,8 @@ namespace Saxonite.Net.Standard.Base.Bus
LastInvalidLoginAt,
InvalidLoginCount,
// Associated data.
UserSportCount,
UserSportCount_Active,
UserRoleCount,
SystemAdminUser,
LastAdminLoginOn,
@@ -53,7 +53,7 @@ namespace Saxonite.Net.Standard.Base.Bus
public class DataProperties
{
public SysId UserAccountId { get; set; }
public ItemId ItemId { get; set; }
public ItemId ItemId { get; set; } = new ItemId();
public bool CurrentlyListed {get; set; }
public DateTime ListedAtFirst { get; set; }
public DateTime ListedAtLast { get; set; }
@@ -3,6 +3,7 @@ using Sarand.Net.Standard.Base.Core;
using Saxonite.Net.Standard.Base.App;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Saxonite.Net.Standard.Base.Bus
@@ -257,6 +258,17 @@ namespace Saxonite.Net.Standard.Base.Bus
// Item list extension methods.
public static class SaxUserSportList
{
//-------------------------------------------------------------------
// Extract Sport Ids.
public static List<SysId> GetSportIds(this IEnumerable<SaxUserSport> values)
{
List<SysId> sportIds = new List<SysId>();
foreach (SaxUserSport userSport in values)
sportIds.AddId(userSport.SportId);
return sportIds;
}
//-------------------------------------------------------------------
}
//=======================================================================
@@ -0,0 +1,191 @@
using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.Core;
using Sarand.Net.Standard.Base.Dbas;
using Sarand.Net.Standard.Base.Utils;
using Saxonite.Base.App;
using Saxonite.Net.Standard.Base.App;
using Saxonite.Net.Standard.Base.Bus;
using System;
using System.Collections.Generic;
using System.Text;
namespace Saxonite.Net.Standard.Base.Mgr
{
//=======================================================================
partial class SaxActivityMgr
{
//*******************************************************************
// Activity Mgr - Activity Index
//*******************************************************************
// Utilities.
public Boolean IsValidItemForFeedback(ItemId itemId)
{
if (!ItemId.IsValid(itemId))
return false;
if (!SaxActivityFeedback.ValidItemTypes.Contains((Sax.DataItemType)itemId.Type))
return false;
return true;
}
//-------------------------------------------------------------------
public SaxActivityFeedback GetActivityFeedbackForItem(ItemId itemId)
{
ClearErrorState();
if (!ItemId.IsValid(itemId))
return null;
SaxActivityFeedback.Params prmActivityFeedback = new SaxActivityFeedback.Params();
prmActivityFeedback.ItemIdsIncluded.Add(itemId);
return GetActivityFeedback(prmActivityFeedback);
}
//-------------------------------------------------------------------
public Boolean UpdateActivityFeedback(ItemId itemId, int viewCountIncrement, int feedbackCountIncrement, int feedbackTotalIncrement, DbUpdateInfo dbUpdateInfo)
{
String fn = "UpdateActivityFeedback";
ClearErrorState();
if (!ItemId.IsValid(itemId))
return SetErrorState("Unable to update activity feedback - Item Id must be supplied");
if (viewCountIncrement == 0 && feedbackCountIncrement == 0 && feedbackTotalIncrement == 0)
return true;
if (DebugMode)
SaLogger.Info(fn + " View count incr: " + viewCountIncrement + ". Feedback count incr: " + feedbackCountIncrement + ". Feedback total incr: " + feedbackTotalIncrement);
using (DisposableCollection<SacsDisposable> disposableItems = new DisposableCollection<SacsDisposable>())
{
bool activityFeedbackCreated = false;
SaxActivityFeedback activityFeedback = GetActivityFeedbackForItem(itemId);
if (activityFeedback == null)
{
activityFeedback = CreateActivityFeedback(itemId);
activityFeedbackCreated = true;
}
disposableItems.Add(activityFeedback);
// Update properties.
activityFeedback.ViewCount = Math.Max(0, activityFeedback.ViewCount + viewCountIncrement);
activityFeedback.FeedbackCount = Math.Max(0, activityFeedback.FeedbackCount + feedbackCountIncrement);
activityFeedback.FeedbackTotal = Math.Max(0, activityFeedback.FeedbackTotal + feedbackTotalIncrement);
activityFeedback.FeedbackAverage = activityFeedback.FeedbackCount > 0 ? (decimal)activityFeedback.FeedbackTotal / activityFeedback.FeedbackCount : 0;
// Store feedback.
if (activityFeedbackCreated)
InsertActivityFeedback(activityFeedback, dbUpdateInfo);
else
UpdateActivityFeedback(activityFeedback, dbUpdateInfo);
}
return !HasErrorState();
}
//-------------------------------------------------------------------
// Create item.
public abstract SaxActivityFeedback CreateActivityFeedback(ItemId itemId);
//-------------------------------------------------------------------
// Retrieve individual items.
public abstract SaxActivityFeedback GetActivityFeedback(SaxActivityFeedback.Params prmActivityFeedback);
//-------------------------------------------------------------------
// Validate item data.
public bool IsValidActivityFeedback(SaxActivityFeedback activityIndex)
{
ClearErrorState();
if (activityIndex == null) return SetErrorState(ErrorMessage.ItemNotSpecified);
return IsValidActivityFeedbackData(activityIndex.GetData(), new SaxActivityFeedback.ErrField());
}
public virtual bool IsValidActivityFeedbackData(SaxActivityFeedback.Data data, SaxActivityFeedback.ErrField errField)
{
ClearErrorState();
//---------------------------------------------------------------
// Item Id.
if (errField.ItemId != SacsHierarchyItem.ValidValue.Ignore)
{
if (!ItemId.IsValid(data.ItemId))
{
errField.ItemId = SacsHierarchyItem.ValidValue.Invalid;
return SetErrorState("item id must be specified");
}
if (!IsValidItemForFeedback(data.ItemId))
{
errField.ItemId = SacsHierarchyItem.ValidValue.Invalid;
return SetErrorState("invalid item type specified");
}
}
// View Count.
if (errField.ViewCount != SacsHierarchyItem.ValidValue.Ignore && data.ViewCount < 0)
{
errField.ViewCount = SacsHierarchyItem.ValidValue.Invalid;
return SetErrorState("View count must not be negative");
}
// Feedback Count.
if (errField.FeedbackCount != SacsHierarchyItem.ValidValue.Ignore && data.FeedbackCount < 0)
{
errField.FeedbackCount = SacsHierarchyItem.ValidValue.Invalid;
return SetErrorState("Feedback count must not be negative");
}
// Feedback Total.
if (errField.FeedbackTotal != SacsHierarchyItem.ValidValue.Ignore && data.FeedbackTotal < 0)
{
errField.FeedbackTotal = SacsHierarchyItem.ValidValue.Invalid;
return SetErrorState("Feedback count must not be negative");
}
// Feedback Average.
if (errField.FeedbackAverage != SacsHierarchyItem.ValidValue.Ignore && data.FeedbackAverage < 0)
{
errField.FeedbackAverage = SacsHierarchyItem.ValidValue.Invalid;
return SetErrorState("Feedback count must not be negative");
}
//---------------------------------------------------------------
return true;
}
//-------------------------------------------------------------------
// ActivityFeedback database interface.
public abstract bool InsertActivityFeedback(SaxActivityFeedback activityIndex, DbUpdateInfo dbUpdateInfo);
public abstract bool UpdateActivityFeedback(SaxActivityFeedback activityIndex, DbUpdateInfo dbUpdateInfo);
public virtual bool ActivityFeedbackCanBeDeleted(SaxActivityFeedback activityIndex)
{
ClearErrorState();
return true;
}
public abstract bool DeleteActivityFeedback(SaxActivityFeedback activityIndex, DbUpdateInfo dbUpdateInfo);
//-------------------------------------------------------------------
// ActivityFeedback list:
public abstract ColumnDfn GetActivityFeedbackColumnDfn(SaxActivityFeedback.Column columnId, String caption = "", int width = 0);
public abstract List<String> GetActivityFeedbackQueryFilter(SaxActivityFeedback.Params prmActivityFeedback);
public abstract long GetActivityFeedbackCount(SaxActivityFeedback.Params prmActivityFeedback);
public abstract List<SaxActivityFeedback> GetActivityFeedbackList(SaxActivityFeedback.Params prmActivityFeedback);
public abstract DbResultSet ExecuteActivityFeedbackQuery(List<ColumnDfn> columns, SaxActivityFeedback.Params prmActivityFeedback);
//-------------------------------------------------------------------
/// <summary>
/// Extract and format result set data value where specific handling is required.
/// <para>Where response is an invalid data value, format value using column.FormatValue(values).</para>
/// </summary>
public virtual DataValue GetActivityFeedbackDataValue(ColumnDfn column, NamedValue.Map values)
{
DataValue value = new DataValue();
switch ((SaxActivityFeedback.Column)column.Id)
{
//-----------------------------------------------------------
// Data item type.
case SaxActivityFeedback.Column.ItemType_Code:
{
value = new DataValue(DataItemTypeCodes.GetCodeForType(values.GetLong(column.DataName)));
}
break;
case SaxActivityFeedback.Column.ItemType_Desc:
{
value = new DataValue(DataItemTypeCodes.GetDescForType(values.GetLong(column.DataName)));
}
break;
//-----------------------------------------------------------
}
return value;
}
//-------------------------------------------------------------------
}
//=======================================================================
}
@@ -4,6 +4,7 @@ using Sarand.Net.Standard.Base.Core;
using Sarand.Net.Standard.Base.Dbas;
using Sarand.Net.Standard.Base.Utils;
using Saxonite.Base.App;
using Saxonite.Net.Standard.Base.App;
using Saxonite.Net.Standard.Base.Bus;
using System;
using System.Collections.Generic;
@@ -18,11 +19,21 @@ namespace Saxonite.Net.Standard.Base.Mgr
// Activity Mgr - Activity Index
//*******************************************************************
// Utilities.
public Boolean IsValidItemForIndex(ItemId itemId)
{
if (!ItemId.IsValid(itemId))
return false;
if (!SaxActivityFeedback.ValidItemTypes.Contains((Sax.DataItemType)itemId.Type))
return false;
return true;
}
//-------------------------------------------------------------------
public List<SaxActivityIndex> GetActivityIndexListForItem(ItemId itemId)
{
ClearErrorState();
List<SaxActivityIndex> activityIndexEntries = new List<SaxActivityIndex>();
if (!ItemId.IsValid(itemId)) return activityIndexEntries;
if (!IsValidItemForIndex(itemId)) return activityIndexEntries;
SaxActivityIndex.Params prmActivityIndex = new SaxActivityIndex.Params();
prmActivityIndex.ItemIdsIncluded.Add(itemId);
return GetActivityIndexList(prmActivityIndex);
@@ -50,10 +61,18 @@ namespace Saxonite.Net.Standard.Base.Mgr
//---------------------------------------------------------------
// Item Id.
if (errField.ItemId != SacsHierarchyItem.ValidValue.Ignore && !ItemId.IsValid(data.ItemId))
if (errField.ItemId != SacsHierarchyItem.ValidValue.Ignore)
{
errField.ItemId = SacsHierarchyItem.ValidValue.Invalid;
return SetErrorState("Item Id must be specified");
if (!ItemId.IsValid(data.ItemId))
{
errField.ItemId = SacsHierarchyItem.ValidValue.Invalid;
return SetErrorState("item id must be specified");
}
if (!IsValidItemForIndex(data.ItemId))
{
errField.ItemId = SacsHierarchyItem.ValidValue.Invalid;
return SetErrorState("invalid item type specified");
}
}
// Sport.
if (errField.SportId != SacsHierarchyItem.ValidValue.Ignore && !SysId.IsValid(data.SportId))
@@ -169,6 +169,14 @@ namespace Saxonite.Net.Standard.Base.Mgr
public abstract List<String> GetRegionQueryFilter(SaxRegion.Params prmRegion);
public abstract long GetRegionCount(SaxRegion.Params prmRegion);
public abstract List<SaxRegion> GetRegionList(SaxRegion.Params prmRegion);
public List<SaxRegion> GetRegionListByIds(List<SysId> regionIds)
{
if (regionIds.IsEmpty()) return new List<SaxRegion>();
SaxRegion.Params prmRegion = new SaxRegion.Params();
prmRegion.IdsIncluded.AddIds(regionIds);
prmRegion.StatusCat = SaxRegion.StatusCat.Any;
return GetRegionList(prmRegion);
}
public abstract DbResultSet ExecuteRegionQuery(List<ColumnDfn> columns, SaxRegion.Params prmRegion);
//-------------------------------------------------------------------
@@ -149,6 +149,14 @@ namespace Saxonite.Net.Standard.Base.Mgr
public abstract List<String> GetSportQueryFilter(SaxSport.Params prmSport);
public abstract long GetSportCount(SaxSport.Params prmSport);
public abstract List<SaxSport> GetSportList(SaxSport.Params prmSport);
public List<SaxSport> GetSportListByIds(List<SysId> sportIds)
{
if (sportIds.IsEmpty()) return new List<SaxSport>();
SaxSport.Params prmSport = new SaxSport.Params();
prmSport.IdsIncluded.AddIds(sportIds);
prmSport.StatusCat = SaxSport.StatusCat.Any;
return GetSportList(prmSport);
}
public abstract DbResultSet ExecuteSportQuery(List<ColumnDfn> columns, SaxSport.Params prmSport);
//-------------------------------------------------------------------