From 68132e94268c232ff9b038d4b3b5b5ad5ebcf27b Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Wed, 28 Jul 2021 17:06:09 +0000 Subject: [PATCH] --- server/AyaNova/biz/PMBiz.cs | 85 ++++++++++++++++++++++++++++++++++- server/AyaNova/util/Seeder.cs | 7 +-- 2 files changed, 88 insertions(+), 4 deletions(-) diff --git a/server/AyaNova/biz/PMBiz.cs b/server/AyaNova/biz/PMBiz.cs index 0dbc48d4..79a02ff9 100644 --- a/server/AyaNova/biz/PMBiz.cs +++ b/server/AyaNova/biz/PMBiz.cs @@ -409,10 +409,93 @@ namespace AyaNova.Biz } + + + + /// + /// Calculate generate date based on service date and + /// threshold span and unit + /// + internal void SetGenerateDate() + { + if (this.mNextServiceDate.IsEmpty) return; + if (this.mThresholdSpan == 0) + { + this.mGenerateDate = this.mNextServiceDate; + MarkDirty(); + return; + } + mGenerateDate = new SmartDate(Workorder.GetDateFromSpanAndUnit(mNextServiceDate.Date, this.mThresholdSpanUnit, -mThresholdSpan)); + MarkDirty(); + } + + + #region Date time calcs helpers + //Takes an AyaNova day of week and returns + //a System.DayOfWeek + //Assumes that AyaDayOfWeek is NOT "AnyDay" + internal static System.DayOfWeek AyaToSystemDayOfWeek(AyaDayOfWeek day) + { + switch (day) + { + case AyaDayOfWeek.Monday: + return DayOfWeek.Monday; + case AyaDayOfWeek.Tuesday: + return DayOfWeek.Tuesday; + case AyaDayOfWeek.Wednesday: + return DayOfWeek.Wednesday; + case AyaDayOfWeek.Thursday: + return DayOfWeek.Thursday; + case AyaDayOfWeek.Friday: + return DayOfWeek.Friday; + case AyaDayOfWeek.Saturday: + return DayOfWeek.Saturday; + case AyaDayOfWeek.Sunday: + return DayOfWeek.Sunday; + + + + } + + throw new System.ArgumentOutOfRangeException("DayOfWeekConverter: AyaDayOfWeek.AnyDayOfWeek is not supported"); + } + + + internal static DateTime GetDateFromSpanAndUnit(DateTime StartDate, AyaUnitsOfTime unit, int multiple) + { + switch (unit) + { + case AyaUnitsOfTime.Seconds: + return StartDate.AddSeconds(multiple); + + case AyaUnitsOfTime.Minutes: + return StartDate.AddMinutes(multiple); + + case AyaUnitsOfTime.Hours: + return StartDate.AddHours(multiple); + + case AyaUnitsOfTime.Days: + return StartDate.AddDays(multiple); + + case AyaUnitsOfTime.Weeks: + throw new System.NotSupportedException("GetDateFromSpanAndUnit: Weeks not supported"); + + case AyaUnitsOfTime.Months: + return StartDate.AddMonths(multiple); + + case AyaUnitsOfTime.Years: + return StartDate.AddYears(multiple); + + + } + + //fail safe: + return StartDate; + } */ #endregion gen service wo from pm - + internal class PMBiz : BizObject, IJobObject, ISearchAbleObject, IReportAbleObject, IExportAbleObject { internal PMBiz(AyContext dbcontext, long currentUserId, long userTranslationId, AuthorizationRoles UserRoles, UserType currentUserType) diff --git a/server/AyaNova/util/Seeder.cs b/server/AyaNova/util/Seeder.cs index 687eb8fc..17021791 100644 --- a/server/AyaNova/util/Seeder.cs +++ b/server/AyaNova/util/Seeder.cs @@ -3702,9 +3702,10 @@ namespace AyaNova.Util o.ExcludeDaysOfWeek= new bool[]{true,true,true,true,true,false,false};//Monday to Sunday (0-6 index) o.Active=true; o.NextServiceDate=woDate.AddDays(1); - o.Repeat=new TimeSpan() - // public TimeSpan Repeat { get; set; }//was generate span - // public TimeSpan GenerateBefore { get; set; }//was threshold span + o.RepeatInterval=1; + o.RepeatUnit= PMTimeUnit.Months; + o.GenerateBeforeInterval=3; + o.GenerateBeforeUnit=PMTimeUnit.Days; // public DateTime? GenerateDate { get; set; }//Internal, not exposed to UI and is the date to do the next generate on that takes into account generatebefore and next service date and is calcd when generate happens for next time see pmbiz top with reference v7 code //------