This commit is contained in:
@@ -49,6 +49,9 @@ namespace AyaNova.Models
|
||||
public string WarrantyTerms { get; set; }
|
||||
public bool UsesBanking { get; set; }
|
||||
public long? ContractId { get; set; }
|
||||
[NotMapped]
|
||||
public string ContractViz { get; set; }
|
||||
public DateTime? ContractExpires { get; set; }
|
||||
public bool Metered { get; set; }
|
||||
public bool LifeTimeWarranty { get; set; }
|
||||
public string Text1 { get; set; }
|
||||
|
||||
@@ -798,7 +798,8 @@ $BODY$ LANGUAGE PLPGSQL STABLE");
|
||||
+ "serial TEXT NOT NULL, customerid BIGINT NOT NULL REFERENCES acustomer(id), parentunitid BIGINT NULL REFERENCES aunit(id), "
|
||||
+ "unitmodelid BIGINT NULL REFERENCES aunitmodel(id), unithasownaddress BOOL, boughthere BOOL, purchasedfromvendorid BIGINT NULL REFERENCES avendor(id), "
|
||||
+ "receipt TEXT NULL, purchaseddate TIMESTAMP NULL, description TEXT NULL, replacedbyunitid BIGINT NULL REFERENCES aunit(id), "
|
||||
+ "overridemodelwarranty BOOL, warrantylength INTEGER NULL, warrantyterms TEXT NULL, contractid BIGINT NULL REFERENCES acontract, usesbanking BOOL, metered BOOL, lifetimewarranty BOOL, "
|
||||
+ "overridemodelwarranty BOOL, warrantylength INTEGER NULL, warrantyterms TEXT NULL, contractid BIGINT NULL REFERENCES acontract, "
|
||||
+ "contractexpires TIMESTAMP NULL, usesbanking BOOL, metered BOOL, lifetimewarranty BOOL, "
|
||||
+ "text1 TEXT NULL, text2 TEXT NULL, text3 TEXT NULL, text4 TEXT NULL, address TEXT NULL, city TEXT NULL, region TEXT NULL, country TEXT NULL, latitude DECIMAL(8,6) NULL, longitude DECIMAL(9,6) NULL, "
|
||||
+ "CONSTRAINT unq_unitserialmodelid UNIQUE (serial, unitmodelid) "
|
||||
+ " )");
|
||||
|
||||
@@ -8,6 +8,7 @@ using Bogus;
|
||||
using AyaNova.Api.ControllerHelpers;
|
||||
using System.Diagnostics;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using System.Linq;
|
||||
|
||||
|
||||
namespace AyaNova.Util
|
||||
@@ -553,6 +554,123 @@ namespace AyaNova.Util
|
||||
await SeedUserAsync(log, 1, AuthorizationRoles.OpsAdminLimited, UserType.NotService, false, "TEST_INACTIVE", "TEST_INACTIVE", 0, KnownUserTags);
|
||||
#endif
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////
|
||||
//CONTRACTS
|
||||
{
|
||||
await SeedTravelRateAsync(log, 1, "Bronze travel rate", true);//1
|
||||
await SeedTravelRateAsync(log, 1, "Silver travel rate", true);//2
|
||||
await SeedTravelRateAsync(log, 1, "Gold travel rate", true);//3
|
||||
await SeedServiceRateAsync(log, 1, "Bronze service rate", true);//1
|
||||
await SeedServiceRateAsync(log, 1, "Silver service rate", true);//2
|
||||
await SeedServiceRateAsync(log, 1, "Gold service rate", true);//3
|
||||
|
||||
{
|
||||
Contract c = new Contract();
|
||||
c.Name = "Bronze";
|
||||
c.Active = true;
|
||||
c.Notes = "These are notes providing additional information when users view the contract";
|
||||
c.AlertNotes = "These are alert notes displayed on workorders about this contract";
|
||||
c.PartsOverride = .05m;
|
||||
c.PartsOverrideType = ContractOverrideType.PriceDiscount;
|
||||
c.ServiceRatesOverride = 0m;
|
||||
c.ServiceRatesOverrideType = ContractOverrideType.PriceDiscount;
|
||||
c.TravelRatesOverride = 0;
|
||||
c.TravelRatesOverrideType = ContractOverrideType.PriceDiscount;
|
||||
c.ResponseTime = TimeSpan.Zero;
|
||||
c.ContractServiceRatesOnly = true;
|
||||
c.ServiceRateItems.Add(new ContractServiceRate() { ServiceRateId = 1 });
|
||||
c.ContractTravelRatesOnly = true;
|
||||
c.TravelRateItems.Add(new ContractTravelRate() { TravelRateId = 1 });
|
||||
c.ContractServiceRateOverrideItems.Add(new ContractServiceRateOverride() { Tags = new string[] { "blue" }.ToList(), Override = .05m, OverrideType = ContractOverrideType.PriceDiscount });
|
||||
c.ContractTravelRateOverrideItems.Add(new ContractTravelRateOverride() { Tags = new string[] { "blue" }.ToList(), Override = .05m, OverrideType = ContractOverrideType.PriceDiscount });
|
||||
c.ContractPartOverrideItems.Add(new ContractPartOverride() { Tags = new string[] { "blue" }.ToList(), Override = .01m, OverrideType = ContractOverrideType.PriceDiscount });
|
||||
|
||||
using (AyContext ct = ServiceProviderProvider.DBContext)
|
||||
{
|
||||
ContractBiz biz = ContractBiz.GetBiz(ct);
|
||||
var NewObject = await biz.CreateAsync(c);
|
||||
|
||||
if (NewObject == null)
|
||||
{
|
||||
var err = $"Seeder::SeedKnownObjects error creating Bronze contract\r\n{biz.GetErrorsAsString()}";
|
||||
log.LogError(err);
|
||||
throw new System.Exception(err);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
Contract c = new Contract();
|
||||
c.Name = "Silver";
|
||||
c.Active = true;
|
||||
c.Notes = "These are notes providing additional information when users view the contract";
|
||||
c.AlertNotes = "These are alert notes displayed on workorders about this contract";
|
||||
c.PartsOverride = .1m;
|
||||
c.PartsOverrideType = ContractOverrideType.PriceDiscount;
|
||||
c.ServiceRatesOverride = 0m;
|
||||
c.ServiceRatesOverrideType = ContractOverrideType.PriceDiscount;
|
||||
c.TravelRatesOverride = 0;
|
||||
c.TravelRatesOverrideType = ContractOverrideType.PriceDiscount;
|
||||
c.ResponseTime = TimeSpan.Zero;
|
||||
c.ContractServiceRatesOnly = true;
|
||||
c.ServiceRateItems.Add(new ContractServiceRate() { ServiceRateId = 2 });
|
||||
c.ContractTravelRatesOnly = true;
|
||||
c.TravelRateItems.Add(new ContractTravelRate() { TravelRateId = 2 });
|
||||
c.ContractServiceRateOverrideItems.Add(new ContractServiceRateOverride() { Tags = new string[] { "red" }.ToList(), Override = .1m, OverrideType = ContractOverrideType.PriceDiscount });
|
||||
c.ContractTravelRateOverrideItems.Add(new ContractTravelRateOverride() { Tags = new string[] { "red" }.ToList(), Override = .1m, OverrideType = ContractOverrideType.PriceDiscount });
|
||||
c.ContractPartOverrideItems.Add(new ContractPartOverride() { Tags = new string[] { "red" }.ToList(), Override = .05m, OverrideType = ContractOverrideType.PriceDiscount });
|
||||
|
||||
using (AyContext ct = ServiceProviderProvider.DBContext)
|
||||
{
|
||||
ContractBiz biz = ContractBiz.GetBiz(ct);
|
||||
var NewObject = await biz.CreateAsync(c);
|
||||
|
||||
if (NewObject == null)
|
||||
{
|
||||
var err = $"Seeder::SeedKnownObjects error creating Silver contract\r\n{biz.GetErrorsAsString()}";
|
||||
log.LogError(err);
|
||||
throw new System.Exception(err);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
Contract c = new Contract();
|
||||
c.Name = "Gold";
|
||||
c.Active = true;
|
||||
c.Notes = "These are notes providing additional information when users view the contract";
|
||||
c.AlertNotes = "These are alert notes displayed on workorders about this contract";
|
||||
c.PartsOverride = .2m;
|
||||
c.PartsOverrideType = ContractOverrideType.PriceDiscount;
|
||||
c.ServiceRatesOverride = .2m;
|
||||
c.ServiceRatesOverrideType = ContractOverrideType.PriceDiscount;
|
||||
c.TravelRatesOverride = .2m;
|
||||
c.TravelRatesOverrideType = ContractOverrideType.PriceDiscount;
|
||||
c.ResponseTime = new TimeSpan(24, 0, 0);//24 hour response time
|
||||
c.ContractServiceRatesOnly = false;
|
||||
c.ServiceRateItems.Add(new ContractServiceRate() { ServiceRateId = 3 });
|
||||
c.ContractTravelRatesOnly = false;
|
||||
c.TravelRateItems.Add(new ContractTravelRate() { TravelRateId = 3 });
|
||||
c.ContractServiceRateOverrideItems.Add(new ContractServiceRateOverride() { Tags = new string[] { "green" }.ToList(), Override = .1m, OverrideType = ContractOverrideType.PriceDiscount });
|
||||
c.ContractTravelRateOverrideItems.Add(new ContractTravelRateOverride() { Tags = new string[] { "green" }.ToList(), Override = .1m, OverrideType = ContractOverrideType.PriceDiscount });
|
||||
c.ContractPartOverrideItems.Add(new ContractPartOverride() { Tags = new string[] { "green" }.ToList(), Override = .1m, OverrideType = ContractOverrideType.PriceDiscount });
|
||||
|
||||
using (AyContext ct = ServiceProviderProvider.DBContext)
|
||||
{
|
||||
ContractBiz biz = ContractBiz.GetBiz(ct);
|
||||
var NewObject = await biz.CreateAsync(c);
|
||||
|
||||
if (NewObject == null)
|
||||
{
|
||||
var err = $"Seeder::SeedKnownObjects error creating Gold contract\r\n{biz.GetErrorsAsString()}";
|
||||
log.LogError(err);
|
||||
throw new System.Exception(err);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
|
||||
long HeadOfficeIdForCustomer = 0;
|
||||
@@ -580,6 +698,9 @@ namespace AyaNova.Util
|
||||
|
||||
ho.EmailAddress = Fake.Internet.ExampleEmail();
|
||||
|
||||
ho.ContractId = 3;//gold contract
|
||||
ho.ContractExpires = DateTime.UtcNow.AddYears(1);
|
||||
|
||||
using (AyContext ct = ServiceProviderProvider.DBContext)
|
||||
{
|
||||
HeadOfficeBiz biz = HeadOfficeBiz.GetBiz(ct);
|
||||
@@ -810,6 +931,8 @@ namespace AyaNova.Util
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
///////////////////////////////////////////////
|
||||
|
||||
}
|
||||
@@ -1212,7 +1335,7 @@ namespace AyaNova.Util
|
||||
//////////////////////////////////////////////////////
|
||||
//SERVICERATE
|
||||
//
|
||||
public async Task SeedServiceRateAsync(ILogger log, int count)
|
||||
public async Task SeedServiceRateAsync(ILogger log, int count, string presetName = null, bool contractOnly = false)
|
||||
{
|
||||
|
||||
for (int x = 0; x < count; x++)
|
||||
@@ -1220,8 +1343,15 @@ namespace AyaNova.Util
|
||||
ServiceRate o = new ServiceRate();
|
||||
do
|
||||
{
|
||||
var color = Fake.Commerce.Color();
|
||||
o.Name = $"{char.ToUpper(color[0]) + color.Substring(1)} {Fake.Lorem.Word()}";
|
||||
if (!string.IsNullOrWhiteSpace(presetName))
|
||||
{
|
||||
o.Name = presetName;
|
||||
}
|
||||
else
|
||||
{
|
||||
var color = Fake.Commerce.Color();
|
||||
o.Name = $"{char.ToUpper(color[0]) + color.Substring(1)} {Fake.Lorem.Word()}";
|
||||
}
|
||||
} while (!HashRateNames.Add(o.Name));
|
||||
o.AccountNumber = Fake.Finance.Account();
|
||||
o.Active = true;
|
||||
@@ -1231,6 +1361,7 @@ namespace AyaNova.Util
|
||||
o.Cost = Fake.Random.Decimal(0.25m, 50);
|
||||
o.Charge = o.Cost * 1.55m;
|
||||
o.Unit = "hour";
|
||||
o.ContractOnly = contractOnly;
|
||||
|
||||
|
||||
//This seems wrong to do in a loop but is 4 times faster this way ?!?
|
||||
@@ -1253,7 +1384,7 @@ namespace AyaNova.Util
|
||||
//////////////////////////////////////////////////////
|
||||
//TRAVELRATE
|
||||
//
|
||||
public async Task SeedTravelRateAsync(ILogger log, int count)
|
||||
public async Task SeedTravelRateAsync(ILogger log, int count, string presetName = null, bool contractOnly = false)
|
||||
{
|
||||
var Units = new[] { "km", "miles", "hours" };
|
||||
|
||||
@@ -1262,8 +1393,15 @@ namespace AyaNova.Util
|
||||
TravelRate o = new TravelRate();
|
||||
do
|
||||
{
|
||||
var color = Fake.Commerce.Color();
|
||||
o.Name = $"{char.ToUpper(color[0]) + color.Substring(1)} {Fake.Lorem.Word()}";
|
||||
if (!string.IsNullOrWhiteSpace(presetName))
|
||||
{
|
||||
o.Name = presetName;
|
||||
}
|
||||
else
|
||||
{
|
||||
var color = Fake.Commerce.Color();
|
||||
o.Name = $"{char.ToUpper(color[0]) + color.Substring(1)} {Fake.Lorem.Word()}";
|
||||
}
|
||||
} while (!HashRateNames.Add(o.Name));
|
||||
o.AccountNumber = Fake.Finance.Account();
|
||||
o.Active = true;
|
||||
@@ -1273,7 +1411,7 @@ namespace AyaNova.Util
|
||||
o.Cost = Fake.Random.Decimal(0.25m, 10);
|
||||
o.Charge = o.Cost * 2m;
|
||||
o.Unit = Fake.PickRandom(Units);
|
||||
|
||||
o.ContractOnly = contractOnly;
|
||||
|
||||
|
||||
//This seems wrong to do in a loop but is 4 times faster this way ?!?
|
||||
@@ -1397,6 +1535,14 @@ namespace AyaNova.Util
|
||||
o.PurchasedDate = Fake.Date.Between(seedStartWindow, DateTime.Now).ToUniversalTime();
|
||||
o.Description = Fake.Commerce.ProductName();
|
||||
o.ReplacedByUnitId = null;
|
||||
|
||||
//Has unit contract 5% chance (1/20)
|
||||
if (Fake.Random.Number(1, 20) == 5)
|
||||
{
|
||||
o.ContractId = Fake.Random.Number(1, 3);
|
||||
o.ContractExpires = DateTime.UtcNow.AddYears(1);
|
||||
}
|
||||
|
||||
//for now no banked units in seeds
|
||||
o.UsesBanking = false;
|
||||
o.Metered = false;//for now no meters either
|
||||
|
||||
Reference in New Issue
Block a user