diff --git a/server/AyaNova/models/Vendor.cs b/server/AyaNova/models/Vendor.cs index 68b77ef0..622dc337 100644 --- a/server/AyaNova/models/Vendor.cs +++ b/server/AyaNova/models/Vendor.cs @@ -23,7 +23,8 @@ namespace AyaNova.Models public string CustomFields { get; set; } public List Tags { get; set; } - + public string Contact { get; set; } + public string ContactNotes { get; set; } public string PopUpNotes { get; set; } public string WebAddress { get; set; } public string AccountNumber { get; set; } diff --git a/server/AyaNova/util/AySchema.cs b/server/AyaNova/util/AySchema.cs index a2e6a243..6e36816e 100644 --- a/server/AyaNova/util/AySchema.cs +++ b/server/AyaNova/util/AySchema.cs @@ -22,7 +22,7 @@ namespace AyaNova.Util //!!!!WARNING: BE SURE TO UPDATE THE DbUtil::EmptyBizDataFromDatabaseForSeedingOrImporting WHEN NEW TABLES ADDED!!!! private const int DESIRED_SCHEMA_LEVEL = 15; - internal const long EXPECTED_COLUMN_COUNT = 498; + internal const long EXPECTED_COLUMN_COUNT = 500; internal const long EXPECTED_INDEX_COUNT = 145; //!!!!WARNING: BE SURE TO UPDATE THE DbUtil::EmptyBizDataFromDatabaseForSeedingOrImporting WHEN NEW TABLES ADDED!!!! @@ -559,7 +559,7 @@ $BODY$; //VENDOR await ExecQueryAsync("CREATE TABLE avendor (id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY, name text not null unique, active bool, " + "notes text, wiki text, customfields text, tags varchar(255) ARRAY, webaddress text, popupnotes text, accountnumber text, " + - "phone1 text, phone2 text, phone3 text, phone4 text, phone5 text, emailaddress text, " + + "contact text, contactnotes text, phone1 text, phone2 text, phone3 text, phone4 text, phone5 text, emailaddress text, " + "postaddress text, postcity text, postregion text, postcountry text, postcode text, address text, city text, region text, country text, latitude decimal(8,6), longitude decimal(9,6))"); await ExecQueryAsync("CREATE UNIQUE INDEX avendor_name_id_idx ON avendor (id, name);"); await ExecQueryAsync("CREATE INDEX avendor_tags ON avendor using GIN(tags)"); diff --git a/server/AyaNova/util/Seeder.cs b/server/AyaNova/util/Seeder.cs index ee3c2c91..c9a96159 100644 --- a/server/AyaNova/util/Seeder.cs +++ b/server/AyaNova/util/Seeder.cs @@ -214,20 +214,22 @@ namespace AyaNova.Util //USERS //Generate owner and lead tech - await GenSeedUserAsync(log, 1, AuthorizationRoles.BizAdminFull | AuthorizationRoles.DispatchFull | AuthorizationRoles.InventoryFull | AuthorizationRoles.OpsAdminFull, UserType.Service); + await SeedUserAsync(log, 1, AuthorizationRoles.BizAdminFull | AuthorizationRoles.DispatchFull | AuthorizationRoles.InventoryFull | AuthorizationRoles.OpsAdminFull, UserType.Service); //Generate one office person / secretary - await GenSeedUserAsync(log, 1, AuthorizationRoles.DispatchFull | AuthorizationRoles.InventoryFull | AuthorizationRoles.AccountingFull, UserType.NotService); + await SeedUserAsync(log, 1, AuthorizationRoles.DispatchFull | AuthorizationRoles.InventoryFull | AuthorizationRoles.AccountingFull, UserType.NotService); //WIDGET - await GenSeedWidgetAsync(log, 100); + await SeedWidgetAsync(log, 100); //CUSTOMERS - await GenSeedCustomerAsync(log, 100); + await SeedCustomerAsync(log, 100); //HEAD-OFFICES - await GenSeedHeadOfficeAsync(log, 10); + await SeedHeadOfficeAsync(log, 10); + //VENDORS + await SeedVendorAsync(log, 25); //PERF @@ -249,44 +251,47 @@ namespace AyaNova.Util //USERS //One IT administrator, can change ops but nothing else - await GenSeedUserAsync(log, 1, AuthorizationRoles.OpsAdminFull, UserType.NotService); + await SeedUserAsync(log, 1, AuthorizationRoles.OpsAdminFull, UserType.NotService); //One business administrator, can view ops issues - await GenSeedUserAsync(log, 1, AuthorizationRoles.BizAdminFull | AuthorizationRoles.OpsAdminLimited, UserType.NotService); + await SeedUserAsync(log, 1, AuthorizationRoles.BizAdminFull | AuthorizationRoles.OpsAdminLimited, UserType.NotService); //One owner who doesn't control anything but views stuff - await GenSeedUserAsync(log, 1, AuthorizationRoles.BizAdminLimited | AuthorizationRoles.DispatchLimited | AuthorizationRoles.InventoryLimited | AuthorizationRoles.OpsAdminLimited | AuthorizationRoles.SalesLimited, UserType.NotService); + await SeedUserAsync(log, 1, AuthorizationRoles.BizAdminLimited | AuthorizationRoles.DispatchLimited | AuthorizationRoles.InventoryLimited | AuthorizationRoles.OpsAdminLimited | AuthorizationRoles.SalesLimited, UserType.NotService); //20 techs - await GenSeedUserAsync(log, 20, AuthorizationRoles.TechFull | AuthorizationRoles.DispatchLimited, UserType.Service); + await SeedUserAsync(log, 20, AuthorizationRoles.TechFull | AuthorizationRoles.DispatchLimited, UserType.Service); //2 subcontractors - await GenSeedUserAsync(log, 2, AuthorizationRoles.SubContractorFull, UserType.ServiceContractor); + await SeedUserAsync(log, 2, AuthorizationRoles.SubContractorFull, UserType.ServiceContractor); //3 generic office people people - await GenSeedUserAsync(log, 3, AuthorizationRoles.DispatchLimited | AuthorizationRoles.InventoryLimited, UserType.NotService); + await SeedUserAsync(log, 3, AuthorizationRoles.DispatchLimited | AuthorizationRoles.InventoryLimited, UserType.NotService); //2 Full sales people - await GenSeedUserAsync(log, 2, AuthorizationRoles.SalesFull, UserType.NotService); + await SeedUserAsync(log, 2, AuthorizationRoles.SalesFull, UserType.NotService); //1 dispatch manager - await GenSeedUserAsync(log, 1, AuthorizationRoles.DispatchFull | AuthorizationRoles.InventoryLimited, UserType.NotService); + await SeedUserAsync(log, 1, AuthorizationRoles.DispatchFull | AuthorizationRoles.InventoryLimited, UserType.NotService); //1 Inventory manager - await GenSeedUserAsync(log, 1, AuthorizationRoles.InventoryFull | AuthorizationRoles.DispatchLimited, UserType.NotService); + await SeedUserAsync(log, 1, AuthorizationRoles.InventoryFull | AuthorizationRoles.DispatchLimited, UserType.NotService); //1 accountant / bookkeeper - await GenSeedUserAsync(log, 1, AuthorizationRoles.AccountingFull | AuthorizationRoles.BizAdminLimited, UserType.NotService); + await SeedUserAsync(log, 1, AuthorizationRoles.AccountingFull | AuthorizationRoles.BizAdminLimited, UserType.NotService); //WIDGETS - await GenSeedWidgetAsync(log, 500); + await SeedWidgetAsync(log, 500); //CUSTOMERS - await GenSeedCustomerAsync(log, 500); + await SeedCustomerAsync(log, 500); //HEAD-OFFICES - await GenSeedHeadOfficeAsync(log, 20); + await SeedHeadOfficeAsync(log, 20); + + //VENDORS + await SeedVendorAsync(log, 50); //PERF watch.Stop(); @@ -309,58 +314,61 @@ namespace AyaNova.Util //USERS //IT administrator, can change ops but nothing else - await GenSeedUserAsync(log, 2, AuthorizationRoles.OpsAdminFull, UserType.NotService); + await SeedUserAsync(log, 2, AuthorizationRoles.OpsAdminFull, UserType.NotService); //business administrator, can view ops issues - await GenSeedUserAsync(log, 2, AuthorizationRoles.BizAdminFull | AuthorizationRoles.OpsAdminLimited, UserType.NotService); + await SeedUserAsync(log, 2, AuthorizationRoles.BizAdminFull | AuthorizationRoles.OpsAdminLimited, UserType.NotService); //owner / upper management who doesn't control anything but views stuff - await GenSeedUserAsync(log, 5, AuthorizationRoles.BizAdminLimited | AuthorizationRoles.DispatchLimited | AuthorizationRoles.InventoryLimited | AuthorizationRoles.OpsAdminLimited, UserType.NotService); + await SeedUserAsync(log, 5, AuthorizationRoles.BizAdminLimited | AuthorizationRoles.DispatchLimited | AuthorizationRoles.InventoryLimited | AuthorizationRoles.OpsAdminLimited, UserType.NotService); //100 techs - await GenSeedUserAsync(log, 100, AuthorizationRoles.TechFull | AuthorizationRoles.DispatchLimited, UserType.Service); + await SeedUserAsync(log, 100, AuthorizationRoles.TechFull | AuthorizationRoles.DispatchLimited, UserType.Service); //limited techs - await GenSeedUserAsync(log, 50, AuthorizationRoles.TechLimited | AuthorizationRoles.DispatchLimited, UserType.Service); + await SeedUserAsync(log, 50, AuthorizationRoles.TechLimited | AuthorizationRoles.DispatchLimited, UserType.Service); //20 subcontractors - await GenSeedUserAsync(log, 20, AuthorizationRoles.SubContractorFull, UserType.ServiceContractor); + await SeedUserAsync(log, 20, AuthorizationRoles.SubContractorFull, UserType.ServiceContractor); //10 limited subcontractors - await GenSeedUserAsync(log, 10, AuthorizationRoles.SubContractorLimited, UserType.ServiceContractor); + await SeedUserAsync(log, 10, AuthorizationRoles.SubContractorLimited, UserType.ServiceContractor); //30 generic office people people - await GenSeedUserAsync(log, 30, AuthorizationRoles.DispatchLimited | AuthorizationRoles.InventoryLimited, UserType.NotService); + await SeedUserAsync(log, 30, AuthorizationRoles.DispatchLimited | AuthorizationRoles.InventoryLimited, UserType.NotService); //10 Full sales people - await GenSeedUserAsync(log, 10, AuthorizationRoles.SalesFull, UserType.NotService); + await SeedUserAsync(log, 10, AuthorizationRoles.SalesFull, UserType.NotService); //5 Limited sales people - await GenSeedUserAsync(log, 5, AuthorizationRoles.SalesLimited, UserType.NotService); + await SeedUserAsync(log, 5, AuthorizationRoles.SalesLimited, UserType.NotService); //5 dispatch manager - await GenSeedUserAsync(log, 5, AuthorizationRoles.DispatchFull | AuthorizationRoles.InventoryLimited, UserType.NotService); + await SeedUserAsync(log, 5, AuthorizationRoles.DispatchFull | AuthorizationRoles.InventoryLimited, UserType.NotService); //5 Inventory manager - await GenSeedUserAsync(log, 5, AuthorizationRoles.InventoryFull | AuthorizationRoles.DispatchLimited, UserType.NotService); + await SeedUserAsync(log, 5, AuthorizationRoles.InventoryFull | AuthorizationRoles.DispatchLimited, UserType.NotService); //10 Inventory manager assistants - await GenSeedUserAsync(log, 5, AuthorizationRoles.InventoryLimited, UserType.NotService); + await SeedUserAsync(log, 5, AuthorizationRoles.InventoryLimited, UserType.NotService); //5 accountant / bookkeeper - await GenSeedUserAsync(log, 5, AuthorizationRoles.AccountingFull | AuthorizationRoles.BizAdminLimited, UserType.NotService); + await SeedUserAsync(log, 5, AuthorizationRoles.AccountingFull | AuthorizationRoles.BizAdminLimited, UserType.NotService); //WIDGETS - await GenSeedWidgetAsync(log, 5000); + await SeedWidgetAsync(log, 5000); //CUSTOMERS - await GenSeedCustomerAsync(log, 5000); + await SeedCustomerAsync(log, 5000); //HEAD-OFFICES - await GenSeedHeadOfficeAsync(log, 30); + await SeedHeadOfficeAsync(log, 30); + + //VENDORS + await SeedVendorAsync(log, 75); //PERF watch.Stop(); @@ -383,58 +391,61 @@ namespace AyaNova.Util //USERS //IT administrator, can change ops but nothing else - await GenSeedUserAsync(log, 10, AuthorizationRoles.OpsAdminFull, UserType.NotService); + await SeedUserAsync(log, 10, AuthorizationRoles.OpsAdminFull, UserType.NotService); //business administrator, can view ops issues - await GenSeedUserAsync(log, 10, AuthorizationRoles.BizAdminFull | AuthorizationRoles.OpsAdminLimited, UserType.NotService); + await SeedUserAsync(log, 10, AuthorizationRoles.BizAdminFull | AuthorizationRoles.OpsAdminLimited, UserType.NotService); //owner / upper management who doesn't control anything but views stuff - await GenSeedUserAsync(log, 20, AuthorizationRoles.BizAdminLimited | AuthorizationRoles.DispatchLimited | AuthorizationRoles.InventoryLimited | AuthorizationRoles.OpsAdminLimited, UserType.NotService); + await SeedUserAsync(log, 20, AuthorizationRoles.BizAdminLimited | AuthorizationRoles.DispatchLimited | AuthorizationRoles.InventoryLimited | AuthorizationRoles.OpsAdminLimited, UserType.NotService); //regular techs - await GenSeedUserAsync(log, 500, AuthorizationRoles.TechFull | AuthorizationRoles.DispatchLimited, UserType.Service); + await SeedUserAsync(log, 500, AuthorizationRoles.TechFull | AuthorizationRoles.DispatchLimited, UserType.Service); //limited techs - await GenSeedUserAsync(log, 200, AuthorizationRoles.TechLimited | AuthorizationRoles.DispatchLimited, UserType.Service); + await SeedUserAsync(log, 200, AuthorizationRoles.TechLimited | AuthorizationRoles.DispatchLimited, UserType.Service); //subcontractors - await GenSeedUserAsync(log, 80, AuthorizationRoles.SubContractorFull, UserType.ServiceContractor); + await SeedUserAsync(log, 80, AuthorizationRoles.SubContractorFull, UserType.ServiceContractor); //limited subcontractors - await GenSeedUserAsync(log, 40, AuthorizationRoles.SubContractorLimited, UserType.ServiceContractor); + await SeedUserAsync(log, 40, AuthorizationRoles.SubContractorLimited, UserType.ServiceContractor); //generic office people people - await GenSeedUserAsync(log, 200, AuthorizationRoles.DispatchLimited | AuthorizationRoles.InventoryLimited, UserType.NotService); + await SeedUserAsync(log, 200, AuthorizationRoles.DispatchLimited | AuthorizationRoles.InventoryLimited, UserType.NotService); //20 Full sales people - await GenSeedUserAsync(log, 20, AuthorizationRoles.SalesFull, UserType.NotService); + await SeedUserAsync(log, 20, AuthorizationRoles.SalesFull, UserType.NotService); //10 Limited sales people - await GenSeedUserAsync(log, 10, AuthorizationRoles.SalesLimited, UserType.NotService); + await SeedUserAsync(log, 10, AuthorizationRoles.SalesLimited, UserType.NotService); //dispatch manager - await GenSeedUserAsync(log, 20, AuthorizationRoles.DispatchFull | AuthorizationRoles.InventoryLimited, UserType.NotService); + await SeedUserAsync(log, 20, AuthorizationRoles.DispatchFull | AuthorizationRoles.InventoryLimited, UserType.NotService); //Inventory manager - await GenSeedUserAsync(log, 40, AuthorizationRoles.InventoryFull | AuthorizationRoles.DispatchLimited, UserType.NotService); + await SeedUserAsync(log, 40, AuthorizationRoles.InventoryFull | AuthorizationRoles.DispatchLimited, UserType.NotService); //Inventory manager assistants - await GenSeedUserAsync(log, 20, AuthorizationRoles.InventoryLimited, UserType.NotService); + await SeedUserAsync(log, 20, AuthorizationRoles.InventoryLimited, UserType.NotService); //accountant / bookkeeper - await GenSeedUserAsync(log, 20, AuthorizationRoles.AccountingFull | AuthorizationRoles.BizAdminLimited, UserType.NotService); + await SeedUserAsync(log, 20, AuthorizationRoles.AccountingFull | AuthorizationRoles.BizAdminLimited, UserType.NotService); //WIDGETS - await GenSeedWidgetAsync(log, 20000); + await SeedWidgetAsync(log, 20000); //CUSTOMERS - await GenSeedCustomerAsync(log, 20000); + await SeedCustomerAsync(log, 20000); //HEAD-OFFICES - await GenSeedHeadOfficeAsync(log, 40); + await SeedHeadOfficeAsync(log, 40); + + //VENDORS + await SeedVendorAsync(log, 100); //PERF watch.Stop(); @@ -528,35 +539,35 @@ namespace AyaNova.Util KnownUserTags.Add("test-role-user"); //TEST USERS //one of each role type - await GenSeedUserAsync(log, 1, AuthorizationRoles.BizAdminLimited, UserType.NotService, "BizAdminLimited", "BizAdminLimited", KnownUserTags); - await GenSeedUserAsync(log, 1, AuthorizationRoles.BizAdminFull, UserType.NotService, "BizAdminFull", "BizAdminFull", KnownUserTags); - await GenSeedUserAsync(log, 1, AuthorizationRoles.DispatchLimited, UserType.NotService, "DispatchLimited", "DispatchLimited", KnownUserTags); - await GenSeedUserAsync(log, 1, AuthorizationRoles.DispatchFull, UserType.NotService, "DispatchFull", "DispatchFull", KnownUserTags); - await GenSeedUserAsync(log, 1, AuthorizationRoles.InventoryLimited, UserType.NotService, "InventoryLimited", "InventoryLimited", KnownUserTags); - await GenSeedUserAsync(log, 1, AuthorizationRoles.InventoryFull, UserType.NotService, "InventoryFull", "InventoryFull", KnownUserTags); - await GenSeedUserAsync(log, 1, AuthorizationRoles.AccountingFull, UserType.NotService, "Accounting", "Accounting", KnownUserTags); - await GenSeedUserAsync(log, 1, AuthorizationRoles.TechLimited, UserType.Service, "TechLimited", "TechLimited", KnownUserTags); - await GenSeedUserAsync(log, 1, AuthorizationRoles.TechFull, UserType.Service, "TechFull", "TechFull", KnownUserTags); - await GenSeedUserAsync(log, 1, AuthorizationRoles.SalesLimited, UserType.NotService, "SalesLimited", "SalesLimited", KnownUserTags); - await GenSeedUserAsync(log, 1, AuthorizationRoles.SalesFull, UserType.NotService, "SalesFull", "SalesFull", KnownUserTags); + await SeedUserAsync(log, 1, AuthorizationRoles.BizAdminLimited, UserType.NotService, "BizAdminLimited", "BizAdminLimited", KnownUserTags); + await SeedUserAsync(log, 1, AuthorizationRoles.BizAdminFull, UserType.NotService, "BizAdminFull", "BizAdminFull", KnownUserTags); + await SeedUserAsync(log, 1, AuthorizationRoles.DispatchLimited, UserType.NotService, "DispatchLimited", "DispatchLimited", KnownUserTags); + await SeedUserAsync(log, 1, AuthorizationRoles.DispatchFull, UserType.NotService, "DispatchFull", "DispatchFull", KnownUserTags); + await SeedUserAsync(log, 1, AuthorizationRoles.InventoryLimited, UserType.NotService, "InventoryLimited", "InventoryLimited", KnownUserTags); + await SeedUserAsync(log, 1, AuthorizationRoles.InventoryFull, UserType.NotService, "InventoryFull", "InventoryFull", KnownUserTags); + await SeedUserAsync(log, 1, AuthorizationRoles.AccountingFull, UserType.NotService, "Accounting", "Accounting", KnownUserTags); + await SeedUserAsync(log, 1, AuthorizationRoles.TechLimited, UserType.Service, "TechLimited", "TechLimited", KnownUserTags); + await SeedUserAsync(log, 1, AuthorizationRoles.TechFull, UserType.Service, "TechFull", "TechFull", KnownUserTags); + await SeedUserAsync(log, 1, AuthorizationRoles.SalesLimited, UserType.NotService, "SalesLimited", "SalesLimited", KnownUserTags); + await SeedUserAsync(log, 1, AuthorizationRoles.SalesFull, UserType.NotService, "SalesFull", "SalesFull", KnownUserTags); - await GenSeedUserAsync(log, 1, AuthorizationRoles.SubContractorLimited, UserType.ServiceContractor, "SubContractorLimited", "SubContractorLimited", KnownUserTags); - await GenSeedUserAsync(log, 1, AuthorizationRoles.SubContractorFull, UserType.ServiceContractor, "SubContractorFull", "SubContractorFull", KnownUserTags); + await SeedUserAsync(log, 1, AuthorizationRoles.SubContractorLimited, UserType.ServiceContractor, "SubContractorLimited", "SubContractorLimited", KnownUserTags); + await SeedUserAsync(log, 1, AuthorizationRoles.SubContractorFull, UserType.ServiceContractor, "SubContractorFull", "SubContractorFull", KnownUserTags); - await GenSeedUserAsync(log, 1, AuthorizationRoles.OpsAdminLimited, UserType.NotService, "OpsAdminLimited", "OpsAdminLimited", KnownUserTags); - await GenSeedUserAsync(log, 1, AuthorizationRoles.OpsAdminFull, UserType.NotService, "OpsAdminFull", "OpsAdminFull", KnownUserTags); + await SeedUserAsync(log, 1, AuthorizationRoles.OpsAdminLimited, UserType.NotService, "OpsAdminLimited", "OpsAdminLimited", KnownUserTags); + await SeedUserAsync(log, 1, AuthorizationRoles.OpsAdminFull, UserType.NotService, "OpsAdminFull", "OpsAdminFull", KnownUserTags); //PRIVACY TEST USER - this is used for a test to see if user info leaks into the logs - await GenSeedUserAsync(log, 1, AuthorizationRoles.OpsAdminLimited, UserType.NotService, "TEST_PRIVACY_USER_ACCOUNT", "TEST_PRIVACY_USER_ACCOUNT", KnownUserTags); + await SeedUserAsync(log, 1, AuthorizationRoles.OpsAdminLimited, UserType.NotService, "TEST_PRIVACY_USER_ACCOUNT", "TEST_PRIVACY_USER_ACCOUNT", KnownUserTags); //TEST NOT ACTIVE - this is used for a test to see if inactive user can login - await GenSeedUserAsync(log, 1, AuthorizationRoles.OpsAdminLimited, UserType.NotService, false, "TEST_INACTIVE", "TEST_INACTIVE", 0, KnownUserTags); + await SeedUserAsync(log, 1, AuthorizationRoles.OpsAdminLimited, UserType.NotService, false, "TEST_INACTIVE", "TEST_INACTIVE", 0, KnownUserTags); //Alternate translation users for each stock translation - await GenSeedUserAsync(log, 1, AuthorizationRoles.All, UserType.NotService, true, "de", "de", await TranslationBiz.TranslationNameToIdStaticAsync("de"), KnownUserTags); - await GenSeedUserAsync(log, 1, AuthorizationRoles.All, UserType.NotService, true, "es", "es", await TranslationBiz.TranslationNameToIdStaticAsync("es"), KnownUserTags); - await GenSeedUserAsync(log, 1, AuthorizationRoles.All, UserType.NotService, true, "fr", "fr", await TranslationBiz.TranslationNameToIdStaticAsync("fr"), KnownUserTags); + await SeedUserAsync(log, 1, AuthorizationRoles.All, UserType.NotService, true, "de", "de", await TranslationBiz.TranslationNameToIdStaticAsync("de"), KnownUserTags); + await SeedUserAsync(log, 1, AuthorizationRoles.All, UserType.NotService, true, "es", "es", await TranslationBiz.TranslationNameToIdStaticAsync("es"), KnownUserTags); + await SeedUserAsync(log, 1, AuthorizationRoles.All, UserType.NotService, true, "fr", "fr", await TranslationBiz.TranslationNameToIdStaticAsync("fr"), KnownUserTags); } @@ -572,11 +583,11 @@ namespace AyaNova.Util /// Generate seed user with active=true /// (override to save typing) /// - public async Task GenSeedUserAsync(ILogger log, int count, AuthorizationRoles roles, UserType userType, string login, string password, List tags = null) + public async Task SeedUserAsync(ILogger log, int count, AuthorizationRoles roles, UserType userType, string login, string password, List tags = null) { try { - await GenSeedUserAsync(log, count, roles, userType, true, login, password, 0, tags); + await SeedUserAsync(log, count, roles, userType, true, login, password, 0, tags); } catch { @@ -586,7 +597,7 @@ namespace AyaNova.Util - public async Task GenSeedUserAsync( + public async Task SeedUserAsync( ILogger log, int count, AuthorizationRoles roles, UserType userType, bool active = true, string login = null, string password = null, long translationId = 0, List tags = null, @@ -603,9 +614,9 @@ namespace AyaNova.Util User u = new User(); u.Active = active; - var p = new Bogus.Person(); + // var BogusPerson = new Bogus.Person(); - u.Name = Uniquify(p.FullName); + u.Name = Uniquify(new Bogus.Person().FullName); var bogusEmail = u.Name.ToLowerInvariant().Replace(" ", "_") + "@example.net"; if (login != null) { @@ -655,8 +666,8 @@ namespace AyaNova.Util var NewObject = await Biz.CreateAsync(u); if (NewObject == null) { - log.LogError($"Seeder::GenSeedUser error creating {u.Name}\r\n" + Biz.GetErrorsAsString()); - throw new System.Exception("Seeder::GenSeedUser error creating user\r\n" + Biz.GetErrorsAsString()); + log.LogError($"Seeder::SeedUser error creating {u.Name}\r\n" + Biz.GetErrorsAsString()); + throw new System.Exception("Seeder::SeedUser error creating user\r\n" + Biz.GetErrorsAsString()); } } } @@ -667,7 +678,7 @@ namespace AyaNova.Util ////////////////////////////////////////////////////// //Seed widget for testing // - public async Task GenSeedWidgetAsync(ILogger log, int count) + public async Task SeedWidgetAsync(ILogger log, int count) { //this is 4 times slower than doing it inside the loop below //seems counterintuitive but maybe it's to do with the db context not being refreshed? @@ -710,8 +721,8 @@ namespace AyaNova.Util var NewObject = await biz.CreateAsync(o); if (NewObject == null) { - log.LogError($"Seeder::GenSeedWidget error creating {o.Name}\r\n" + biz.GetErrorsAsString()); - throw new System.Exception("Seeder::GenSeedWidget error creating widget\r\n" + biz.GetErrorsAsString()); + log.LogError($"Seeder::SeedWidget error creating {o.Name}\r\n" + biz.GetErrorsAsString()); + throw new System.Exception("Seeder::SeedWidget error creating widget\r\n" + biz.GetErrorsAsString()); } } } @@ -724,7 +735,7 @@ namespace AyaNova.Util ////////////////////////////////////////////////////// //CUSTOMER // - public async Task GenSeedCustomerAsync(ILogger log, int count, long? headOfficeId = null) + public async Task SeedCustomerAsync(ILogger log, int count, long? headOfficeId = null) { DateTime seedStartWindow = DateTime.Now.AddYears(-1); @@ -767,12 +778,12 @@ namespace AyaNova.Util if (NewObject == null) { - var err = $"Seeder::GenSeedCustomer error creating {o.Name}\r\n{biz.GetErrorsAsString()}"; + var err = $"Seeder::SeedCustomer error creating {o.Name}\r\n{biz.GetErrorsAsString()}"; log.LogError(err); throw new System.Exception(err); } //Customer contacts - await GenSeedUserAsync(log, 1, AuthorizationRoles.CustomerFull, UserType.Customer, true, null, null, 0, null, null, NewObject.Id, null); + await SeedUserAsync(log, 1, AuthorizationRoles.CustomerFull, UserType.Customer, true, null, null, 0, null, null, NewObject.Id, null); } @@ -783,7 +794,7 @@ namespace AyaNova.Util ////////////////////////////////////////////////////// //HEADOFFICE // - public async Task GenSeedHeadOfficeAsync(ILogger log, int count) + public async Task SeedHeadOfficeAsync(ILogger log, int count) { DateTime seedStartWindow = DateTime.Now.AddYears(-1); @@ -820,14 +831,73 @@ namespace AyaNova.Util if (NewObject == null) { - var err = $"Seeder::GenSeedHeadOffice error creating {o.Name}\r\n{biz.GetErrorsAsString()}"; + var err = $"Seeder::SeedHeadOffice error creating {o.Name}\r\n{biz.GetErrorsAsString()}"; log.LogError(err); throw new System.Exception(err); } //HeadOffice contacts - await GenSeedUserAsync(log, 1, AuthorizationRoles.CustomerFull, UserType.HeadOffice, true, null, null, 0, null, null, null, NewObject.Id); + await SeedUserAsync(log, 1, AuthorizationRoles.CustomerFull, UserType.HeadOffice, true, null, null, 0, null, null, null, NewObject.Id); //HeadOffice Customer - await GenSeedCustomerAsync(log, 2, NewObject.Id); + await SeedCustomerAsync(log, 2, NewObject.Id); + + } + } + } + + + + ////////////////////////////////////////////////////// + //VENDOR + // + public async Task SeedVendorAsync(ILogger log, int count) + { + + DateTime seedStartWindow = DateTime.Now.AddYears(-1); + DateTime seedEndWindow = DateTime.Now.AddYears(1); + for (int x = 0; x < count; x++) + { + Vendor o = new Vendor(); + + o.Name = Uniquify(Fake.Company.CompanyName()); + o.Active = true; + o.Notes = Fake.Company.CatchPhrase(); + o.Tags = RandomTags(); + + + o.Contact = Fake.Person.FullName; + o.ContactNotes = Fake.Person.FullName; + o.AccountNumber = Fake.Finance.Account(); + o.Latitude = (decimal)Fake.Address.Latitude(); + o.Longitude = (decimal)Fake.Address.Longitude(); + o.Address = Fake.Address.StreetAddress(); + o.City = Fake.Address.City(); + o.Region = Fake.Address.State(); + o.Country = Fake.Address.Country(); + + o.Phone1 = Fake.Phone.PhoneNumber(); + o.Phone2 = Fake.Phone.PhoneNumber(); + o.Phone3 = Fake.Phone.PhoneNumber(); + o.WebAddress = Fake.Internet.Url(); + o.EmailAddress = Fake.Internet.ExampleEmail(); + + + + //This seems wrong to do in a loop but is 4 times faster this way ?!? + using (AyContext ct = ServiceProviderProvider.DBContext) + { + VendorBiz biz = VendorBiz.GetBiz(ct); + var NewObject = await biz.CreateAsync(o); + + if (NewObject == null) + { + var err = $"Seeder::SeedVendor error creating {o.Name}\r\n{biz.GetErrorsAsString()}"; + log.LogError(err); + throw new System.Exception(err); + } + //HeadOffice contacts + // await SeedUserAsync(log, 1, AuthorizationRoles.CustomerFull, UserType.HeadOffice, true, null, null, 0, null, null, null, NewObject.Id); + //HeadOffice Customer + // await SeedCustomerAsync(log, 2, NewObject.Id); } }