From e5ddf8207d566065eb2436ac3a1e0b5e1d47a99c Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Fri, 1 Jan 2021 16:50:37 +0000 Subject: [PATCH] --- server/AyaNova/util/Seeder.cs | 79 ++++++++++++++++++++++++++++++----- 1 file changed, 68 insertions(+), 11 deletions(-) diff --git a/server/AyaNova/util/Seeder.cs b/server/AyaNova/util/Seeder.cs index ebaafccc..08ab812d 100644 --- a/server/AyaNova/util/Seeder.cs +++ b/server/AyaNova/util/Seeder.cs @@ -15,7 +15,6 @@ namespace AyaNova.Util public class Seeder { - public int SeededUserCount = 0; public Faker Fake; //### FAKER BIG LIST OF ALL SOURCE DATA HERE: //https://github.com/bchavez/Bogus/blob/master/Source/Bogus/data/en.locale.json @@ -66,7 +65,7 @@ namespace AyaNova.Util public async Task SeedDatabaseAsync(Level.SeedLevel slevel, Guid JobId, Decimal timeZoneOffset) { bool LogJob = JobId != Guid.Empty; - SeededUserCount = 0; + // TotalSeededUserCount = 0; ILogger log = AyaNova.Util.ApplicationLogging.CreateLogger("Seeder"); ApiServerState apiServerState = (ApiServerState)ServiceProviderProvider.Provider.GetService(typeof(ApiServerState)); @@ -871,7 +870,7 @@ namespace AyaNova.Util public HashSet HashUserNames = new HashSet(); - + private int TotalSeededUserCount = 0; public async Task SeedUserAsync( ILogger log, int count, AuthorizationRoles roles, UserType userType, @@ -911,7 +910,7 @@ namespace AyaNova.Util u.Password = u.Login; u.Roles = roles; u.UserType = userType; - u.EmployeeNumber = "A-" + (454 + SeededUserCount + x).ToString() + "-Y"; + u.EmployeeNumber = "A-" + (454 + TotalSeededUserCount + x).ToString() + "-Y"; u.Notes = Fake.Lorem.Sentence(null, 5);//Fake.Lorem.Paragraph(2); //TODO: After have USER and HEADOFFICE and VENDOR, if usertype is subcontractor or client or headoffice it needs to set a corresponding user's parent org record id to go with it //use provided tags or generate them @@ -941,6 +940,7 @@ namespace AyaNova.Util { UserBiz biz = UserBiz.GetBiz(ct); var NewObject = await biz.CreateAsync(u); + TotalSeededUserCount++; if (NewObject == null) { log.LogError($"Seeder::SeedUser error creating {u.Name}\r\n" + biz.GetErrorsAsString()); @@ -949,7 +949,7 @@ namespace AyaNova.Util } } - SeededUserCount += count; + } #region WIDGET @@ -982,7 +982,7 @@ namespace AyaNova.Util o.UserType = randomUserType; o.Notes = Fake.Lorem.Sentence(null, 5); o.Tags = RandomTags(); - o.UserId = Fake.Random.Int(1, SeededUserCount); + o.UserId = Fake.Random.Int(1, TotalSeededUserCount); //RANDOM CUSTOM FIELD DATA var c1 = DateUtil.UniversalISO8661Format(Fake.Date.Between(DateTime.Now.AddYears(-1), DateTime.Now.AddYears(1))); @@ -1010,6 +1010,7 @@ namespace AyaNova.Util public HashSet HashCompanyNames = new HashSet(); +private int TotalSeededCustomers=0; ////////////////////////////////////////////////////// //CUSTOMER @@ -1059,6 +1060,7 @@ namespace AyaNova.Util CustomerBiz biz = CustomerBiz.GetBiz(ct); var NewObject = await biz.CreateAsync(o); + TotalSeededCustomers++; if (NewObject == null) { var err = $"Seeder::SeedCustomer error creating {o.Name}\r\n{biz.GetErrorsAsString()}"; @@ -1074,6 +1076,7 @@ namespace AyaNova.Util } +private int TotalSeededHeadOffices= ////////////////////////////////////////////////////// //HEADOFFICE // @@ -1233,6 +1236,7 @@ namespace AyaNova.Util public HashSet HashRateNames = new HashSet(); + private int TotalSeededServiceRates = 0; ////////////////////////////////////////////////////// //SERVICERATE // @@ -1262,7 +1266,7 @@ namespace AyaNova.Util { ServiceRateBiz biz = ServiceRateBiz.GetBiz(ct); var NewObject = await biz.CreateAsync(o); - + TotalSeededServiceRates++; if (NewObject == null) { var err = $"Seeder::SeedServiceRate error creating {o.Name}\r\n{biz.GetErrorsAsString()}"; @@ -1273,6 +1277,7 @@ namespace AyaNova.Util } } + private int TotalSeededTravelRates = 0; ////////////////////////////////////////////////////// //TRAVELRATE // @@ -1304,7 +1309,7 @@ namespace AyaNova.Util { TravelRateBiz biz = TravelRateBiz.GetBiz(ct); var NewObject = await biz.CreateAsync(o); - + TotalSeededTravelRates++; if (NewObject == null) { var err = $"Seeder::SeedTravelRate error creating {o.Name}\r\n{biz.GetErrorsAsString()}"; @@ -1318,6 +1323,7 @@ namespace AyaNova.Util public HashSet HashUnitModelNames = new HashSet(); + private int TotalSeededUnitModels = 0; ////////////////////////////////////////////////////// //UNITMODEL // @@ -1354,6 +1360,60 @@ namespace AyaNova.Util o.WarrantyLength = Fake.PickRandom(WarrantyMonths); o.WarrantyTerms = Fake.PickRandom(WarrantyTerms); + //This seems wrong to do in a loop but is 4 times faster this way ?!? + using (AyContext ct = ServiceProviderProvider.DBContext) + { + UnitModelBiz biz = UnitModelBiz.GetBiz(ct); + var NewObject = await biz.CreateAsync(o); + TotalSeededUnitModels++; + if (NewObject == null) + { + var err = $"Seeder::SeedUnitModel error creating {o.Name}\r\n{biz.GetErrorsAsString()}"; + log.LogError(err); + throw new System.Exception(err); + } + } + } + } + + + public HashSet HashUnitNames = new HashSet(); + ////////////////////////////////////////////////////// + //UNIT + // + public async Task SeedUnitAsync(ILogger log, int count) + { + DateTime seedStartWindow = DateTime.Now.AddYears(-5); + DateTime seedEndWindow = DateTime.Now.AddYears(1); + var WarrantyMonths = new[] { 1, 6, 12, 24, 36 }; + var WarrantyTerms = new[] { "Parts only", "Parts and service", "Service only", "Shipping parts and service", "First month parts and service here; after is depot only" }; + + for (int x = 0; x < count; x++) + { + Unit o = new Unit(); + + do + { + o.Name = $"{Fake.Vehicle.Model()} {Fake.Commerce.Categories(1)[0]}"; + } while (!HashUnitModelNames.Add(o.Name)); + + do + { + o.Number = Fake.Finance.Account(6); + } while (!HashUnitModelNames.Add(o.Number)); + + o.Active = true; + o.Notes = Fake.Lorem.Sentence(); + o.Tags = RandomTags(); + o.VendorId = Fake.Random.Long(1, 10); + o.UPC = Fake.Commerce.Ean13(); + o.LifeTimeWarranty = false; + o.IntroducedDate = Fake.Date.Between(seedStartWindow, DateTime.Now).ToUniversalTime(); + o.Discontinued = false; + o.DiscontinuedDate = null; + o.WarrantyLength = Fake.PickRandom(WarrantyMonths); + o.WarrantyTerms = Fake.PickRandom(WarrantyTerms); + //This seems wrong to do in a loop but is 4 times faster this way ?!? using (AyContext ct = ServiceProviderProvider.DBContext) { @@ -1371,9 +1431,6 @@ namespace AyaNova.Util } - - - ////////////////////////////////////////////////////////////////////////////////////////////////// }//eoc