diff --git a/server/AyaNova/util/Seeder.cs b/server/AyaNova/util/Seeder.cs index f06fc66d..ab298554 100644 --- a/server/AyaNova/util/Seeder.cs +++ b/server/AyaNova/util/Seeder.cs @@ -96,6 +96,7 @@ namespace AyaNova.Util throw new System.NotSupportedException(msg); } + TimeZoneOffset = timeZoneOffset; apiServerState.SetOpsOnly("Seeding database"); ServerBootConfig.SEEDING = true; @@ -528,6 +529,20 @@ namespace AyaNova.Util long TCSales = 0, TCGoods = 0, TCBoth = 0; + + public Decimal TimeZoneOffset = 0; + //this is supposed to output the correct UTC + //value to save to db to match the desired time input + //taking into account the timezoneoffset specified for generating data + //so for example if the tzoffset is -7 utc and a input of 9:00am + //then it should figure out what 9am in a -7 time zone is in UTC + //and return that value + public DateTime DesiredTimeInUtc(DateTime dt) + { + return dt.AddHours(0 - (double)TimeZoneOffset); + } + + ////////////////////////////////////////////////////// //Seed known / expected test data for tests/development // @@ -2421,15 +2436,19 @@ namespace AyaNova.Util // public async Task SeedWorkOrderAsync(ILogger log, int count) { - DateTime seedStartWindow = DateTime.Now.AddMonths(-9); - DateTime seedEndWindow = DateTime.Now.AddMonths(3); + DateTime seedStartWindow = DateTime.UtcNow.AddMonths(-9); + DateTime seedEndWindow = DateTime.UtcNow.AddMonths(3); for (int x = 0; x < count; x++) { WorkOrder o = new WorkOrder(); o.Notes = Fake.Lorem.Sentence(); o.Tags = RandomTags(); - var woDate = Fake.Date.Between(seedStartWindow, seedEndWindow); - o.CompleteByDate = woDate.AddDays(5).ToUniversalTime(); + var tempDate = Fake.Date.Between(seedStartWindow, seedEndWindow); + var tempHour=Fake.Random.Int(9,17);//9am to 5 pm (except some times may be in different dst state so this will be out by an hour for example depending on time of year and time zone in question) + var woDate = DesiredTimeInUtc(new DateTime(tempDate.Year, tempDate.Month, tempDate.Day, tempHour, 0, 0)); + + + o.CompleteByDate = woDate.AddDays(5); o.CustomerContactName = "contact name here"; o.CustomerId = Fake.Random.Long(1, TotalSeededCustomers); @@ -2467,7 +2486,7 @@ namespace AyaNova.Util o.CustomerReferenceNumber = "crf-" + Fake.Finance.Account(4); o.InternalReferenceNumber = "irf-" + Fake.Finance.Account(4); - o.ServiceDate = woDate.ToUniversalTime(); + o.ServiceDate = woDate; int woItemCount = Fake.Random.Int(1, 6); for (int y = 0; y < woItemCount; y++) @@ -2477,21 +2496,25 @@ namespace AyaNova.Util Sequence = y + 1, Notes = $"itemnotes - {y} ", TechNotes = $"technotes - {y}", - RequestDate = woDate.ToUniversalTime().AddMinutes(y) + RequestDate = woDate.AddMinutes(y) }; //add two users for testing var woItemScheduledUser = new WorkOrderItemScheduledUser() { UserId = RandomServiceTechUserId(), - EstimatedQuantity = 1 + EstimatedQuantity = 1, + StartDate = woDate, + StopDate = woDate.AddHours(1) }; woItem.ScheduledUsers.Add(woItemScheduledUser); woItemScheduledUser = new WorkOrderItemScheduledUser() { UserId = RandomServiceTechUserId(), - EstimatedQuantity = 2 + EstimatedQuantity = 2, + StartDate = woDate, + StopDate = woDate.AddHours(1) }; woItem.ScheduledUsers.Add(woItemScheduledUser);