This commit is contained in:
2021-01-01 16:50:37 +00:00
parent c3f475aadf
commit e5ddf8207d

View File

@@ -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<string> HashUserNames = new HashSet<string>();
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<string> HashCompanyNames = new HashSet<string>();
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<string> HashRateNames = new HashSet<string>();
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<string> HashUnitModelNames = new HashSet<string>();
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<string> HashUnitNames = new HashSet<string>();
//////////////////////////////////////////////////////
//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