From f240b2030ec716a7bd789832c96aa762527841ba Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Wed, 28 Jul 2021 20:18:45 +0000 Subject: [PATCH] --- server/AyaNova/biz/DaysOfWeek.cs | 25 +++++++++++++++++++++++++ server/AyaNova/models/PM.cs | 2 +- server/AyaNova/util/AySchema.cs | 2 +- server/AyaNova/util/Seeder.cs | 2 +- 4 files changed, 28 insertions(+), 3 deletions(-) create mode 100644 server/AyaNova/biz/DaysOfWeek.cs diff --git a/server/AyaNova/biz/DaysOfWeek.cs b/server/AyaNova/biz/DaysOfWeek.cs new file mode 100644 index 00000000..5d4a20c9 --- /dev/null +++ b/server/AyaNova/biz/DaysOfWeek.cs @@ -0,0 +1,25 @@ +using System; +namespace AyaNova.Biz +{ + /// + /// Days of week + /// + [Flags] + public enum DaysOfWeek : int + { + //https://stackoverflow.com/questions/8447/what-does-the-flags-enum-attribute-mean-in-c + //MAX 31 (2147483647)!!! or will overflow int and needs to be turned into a long + //Must be a power of two: https://en.wikipedia.org/wiki/Power_of_two + //bitwise selection of days of week + //https://stackoverflow.com/a/24174625/8939 + + Monday = 1, + Tuesday = 2, + Wednesday = 4, + Thursday = 8, + Friday = 16, + Saturday = 32, + Sunday = 64 + } +} + diff --git a/server/AyaNova/models/PM.cs b/server/AyaNova/models/PM.cs index 692e759f..bef21126 100644 --- a/server/AyaNova/models/PM.cs +++ b/server/AyaNova/models/PM.cs @@ -23,7 +23,7 @@ namespace AyaNova.Models //---- public DateTime? StopGeneratingDate { get; set; } - public bool[] ExcludeDaysOfWeek { get; set; }//Monday to Sunday (0-6 index) + public DaysOfWeek ExcludeDaysOfWeek { get; set; }//bit field flags set public bool Active { get; set; } public DateTime NextServiceDate { get; set; } public PMTimeUnit RepeatUnit { get; set; } diff --git a/server/AyaNova/util/AySchema.cs b/server/AyaNova/util/AySchema.cs index d6c76ae6..adfca1f6 100644 --- a/server/AyaNova/util/AySchema.cs +++ b/server/AyaNova/util/AySchema.cs @@ -1016,7 +1016,7 @@ $BODY$ LANGUAGE PLPGSQL STABLE"); + "notes TEXT, wiki TEXT, customfields TEXT, tags VARCHAR(255) ARRAY, customerid BIGINT NOT NULL REFERENCES acustomer (id), " + "projectid BIGINT REFERENCES aproject, contractid BIGINT NULL, internalreferencenumber text, " + "customerreferencenumber text, customercontactname text, createddate TIMESTAMP NOT NULL, onsite BOOL NOT NULL, " - + "stopgeneratingdate TIMESTAMP, nextservicedate TIMESTAMP NOT NULL, generatedate TIMESTAMP, excludedaysofweek BOOL ARRAY NOT NULL, active BOOL NOT NULL, " + + "stopgeneratingdate TIMESTAMP, nextservicedate TIMESTAMP NOT NULL, generatedate TIMESTAMP, excludedaysofweek INTEGER NOT NULL, active BOOL NOT NULL, " + "repeatunit INTEGER NOT NULL, generatebeforeunit INTEGER NOT NULL, repeatinterval INTEGER NOT NULL, generatebeforeinterval INTEGER NOT NULL, " + "postaddress TEXT, postcity TEXT, postregion TEXT, postcountry TEXT, postcode TEXT, address TEXT, city TEXT, region TEXT, country TEXT, latitude DECIMAL(9,6), longitude DECIMAL(9,6) " + ")"); diff --git a/server/AyaNova/util/Seeder.cs b/server/AyaNova/util/Seeder.cs index ab62bd89..0448cc39 100644 --- a/server/AyaNova/util/Seeder.cs +++ b/server/AyaNova/util/Seeder.cs @@ -3703,7 +3703,7 @@ namespace AyaNova.Util //------ o.StopGeneratingDate = woDate.AddYears(1); - o.ExcludeDaysOfWeek = new bool[] { true, true, true, true, true, false, false };//Monday to Sunday (0-6 index) + o.ExcludeDaysOfWeek = DaysOfWeek.Saturday | DaysOfWeek.Sunday; o.Active = true; o.NextServiceDate = woDate.AddDays(1); o.RepeatInterval = 1;