This commit is contained in:
@@ -59,7 +59,7 @@ namespace AyaNova.Biz
|
|||||||
////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
//CREATE
|
//CREATE
|
||||||
//
|
//
|
||||||
internal async Task<WorkOrder> WorkOrderCreateAsync(WorkOrder newObject)
|
internal async Task<WorkOrder> WorkOrderCreateAsync(WorkOrder newObject, bool populateViz = true)
|
||||||
{
|
{
|
||||||
await WorkOrderValidateAsync(newObject, null);
|
await WorkOrderValidateAsync(newObject, null);
|
||||||
if (HasErrors)
|
if (HasErrors)
|
||||||
@@ -92,8 +92,8 @@ namespace AyaNova.Biz
|
|||||||
}
|
}
|
||||||
await ct.SaveChangesAsync();
|
await ct.SaveChangesAsync();
|
||||||
}
|
}
|
||||||
|
if (populateViz)
|
||||||
await WorkOrderPopulateVizFields(newObject, true);//doing this here ahead of notification because notification may require the viz field lookup anyway and afaict no harm in it
|
await WorkOrderPopulateVizFields(newObject, true);
|
||||||
await WorkOrderHandlePotentialNotificationEvent(AyaEvent.Created, newObject);
|
await WorkOrderHandlePotentialNotificationEvent(AyaEvent.Created, newObject);
|
||||||
return newObject;
|
return newObject;
|
||||||
}
|
}
|
||||||
@@ -2925,7 +2925,7 @@ namespace AyaNova.Biz
|
|||||||
if (o.VendorSentViaId != null)
|
if (o.VendorSentViaId != null)
|
||||||
o.VendorSentViaViz = await ct.Vendor.AsNoTracking().Where(x => x.Id == o.VendorSentViaId).Select(x => x.Name).FirstOrDefaultAsync();
|
o.VendorSentViaViz = await ct.Vendor.AsNoTracking().Where(x => x.Id == o.VendorSentViaId).Select(x => x.Name).FirstOrDefaultAsync();
|
||||||
|
|
||||||
TaxCode Tax = null;
|
TaxCode Tax = null;
|
||||||
if (o.TaxCodeId != null)
|
if (o.TaxCodeId != null)
|
||||||
Tax = await ct.TaxCode.AsNoTracking().FirstOrDefaultAsync(z => z.Id == o.TaxCodeId);
|
Tax = await ct.TaxCode.AsNoTracking().FirstOrDefaultAsync(z => z.Id == o.TaxCodeId);
|
||||||
if (Tax != null)
|
if (Tax != null)
|
||||||
@@ -2934,7 +2934,7 @@ namespace AyaNova.Biz
|
|||||||
|
|
||||||
o.CostViz = o.ShippingCost + o.RepairCost;
|
o.CostViz = o.ShippingCost + o.RepairCost;
|
||||||
o.PriceViz = o.ShippingPrice + o.RepairPrice;
|
o.PriceViz = o.ShippingPrice + o.RepairPrice;
|
||||||
|
|
||||||
//Currently not contract discounted so no further calcs need apply to priceViz
|
//Currently not contract discounted so no further calcs need apply to priceViz
|
||||||
|
|
||||||
//Calculate totals and taxes
|
//Calculate totals and taxes
|
||||||
|
|||||||
@@ -1,4 +1,6 @@
|
|||||||
using System;
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
|
||||||
namespace AyaNova.Util
|
namespace AyaNova.Util
|
||||||
{
|
{
|
||||||
@@ -60,10 +62,10 @@ namespace AyaNova.Util
|
|||||||
return DateToDisplay.ToLocalTime().ToString("g");
|
return DateToDisplay.ToLocalTime().ToString("g");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns current date/time in sortable format
|
/// Returns current date/time in sortable format
|
||||||
///(used for duplicate names by stringUtil and others)
|
///(used for duplicate names by stringUtil and others)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public static string SortableShortCurrentDateTimeValue
|
public static string SortableShortCurrentDateTimeValue
|
||||||
@@ -77,18 +79,49 @@ namespace AyaNova.Util
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// returns passed in date as a string format ISO8661 UTC date (no conversion of date is done, it's assumed to be in UTC already)
|
/// returns passed in date as a string format ISO8661 UTC date (no conversion of date is done, it's assumed to be in UTC already)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="DateToDisplay"></param>
|
/// <param name="DateToDisplay"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public static string UniversalISO8661Format(DateTime DateToDisplay)
|
public static string UniversalISO8661Format(DateTime DateToDisplay)
|
||||||
{
|
{
|
||||||
DateTime dtUTC=new DateTime(DateToDisplay.Ticks, DateTimeKind.Utc);
|
DateTime dtUTC = new DateTime(DateToDisplay.Ticks, DateTimeKind.Utc);
|
||||||
return dtUTC.ToString("o");
|
return dtUTC.ToString("o");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// returns passed in timespan to human readable format
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="timeSpan"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public static string FormatTimeSpan(TimeSpan timeSpan)
|
||||||
|
{
|
||||||
|
Func<Tuple<int, string>, string> tupleFormatter = t => $"{t.Item1} {t.Item2}{(t.Item1 == 1 ? string.Empty : "s")}";
|
||||||
|
var components = new List<Tuple<int, string>>
|
||||||
|
{
|
||||||
|
Tuple.Create((int) timeSpan.TotalDays, "day"),
|
||||||
|
Tuple.Create(timeSpan.Hours, "hour"),
|
||||||
|
Tuple.Create(timeSpan.Minutes, "minute"),
|
||||||
|
Tuple.Create(timeSpan.Seconds, "second"),
|
||||||
|
};
|
||||||
|
|
||||||
|
components.RemoveAll(i => i.Item1 == 0);
|
||||||
|
|
||||||
|
string extra = "";
|
||||||
|
|
||||||
|
if (components.Count > 1)
|
||||||
|
{
|
||||||
|
var finalComponent = components[components.Count - 1];
|
||||||
|
components.RemoveAt(components.Count - 1);
|
||||||
|
extra = $" and {tupleFormatter(finalComponent)}";
|
||||||
|
}
|
||||||
|
|
||||||
|
return $"{string.Join(", ", components.Select(tupleFormatter))}{extra}";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}//eoc
|
}//eoc
|
||||||
|
|
||||||
}//eons
|
}//eons
|
||||||
@@ -365,6 +365,7 @@ namespace AyaNova.Util
|
|||||||
await EraseTableAsync("aworkordertemplate", conn);
|
await EraseTableAsync("aworkordertemplate", conn);
|
||||||
//---
|
//---
|
||||||
|
|
||||||
|
|
||||||
await EraseTableAsync("afileattachment", conn);
|
await EraseTableAsync("afileattachment", conn);
|
||||||
await EraseTableAsync("acustomerservicerequest", conn);
|
await EraseTableAsync("acustomerservicerequest", conn);
|
||||||
await EraseTableAsync("awidget", conn);
|
await EraseTableAsync("awidget", conn);
|
||||||
@@ -424,6 +425,9 @@ namespace AyaNova.Util
|
|||||||
await EraseTableAsync("aservicebank", conn);
|
await EraseTableAsync("aservicebank", conn);
|
||||||
|
|
||||||
await EraseTableAsync("aworkorderstatus", conn);
|
await EraseTableAsync("aworkorderstatus", conn);
|
||||||
|
await EraseTableAsync("aworkorderitemstatus", conn);
|
||||||
|
await EraseTableAsync("aworkorderitempriority", conn);
|
||||||
|
await EraseTableAsync("ataskgroup", conn);//items cascade
|
||||||
|
|
||||||
|
|
||||||
//after cleanup
|
//after cleanup
|
||||||
|
|||||||
@@ -247,7 +247,7 @@ namespace AyaNova.Util
|
|||||||
|
|
||||||
//PERF
|
//PERF
|
||||||
watch.Stop();
|
watch.Stop();
|
||||||
await LogStatusAsync(JobId, LogJob, log, $"Small level sample data seeded in {watch.ElapsedMilliseconds} ms");
|
await LogStatusAsync(JobId, LogJob, log, "Small level sample data seeded in " + AyaNova.Util.DateUtil.FormatTimeSpan(watch.Elapsed));
|
||||||
|
|
||||||
#endregion gensmall
|
#endregion gensmall
|
||||||
}
|
}
|
||||||
@@ -302,7 +302,7 @@ namespace AyaNova.Util
|
|||||||
|
|
||||||
//PERF
|
//PERF
|
||||||
watch.Stop();
|
watch.Stop();
|
||||||
await LogStatusAsync(JobId, LogJob, log, $"MEDIUM level sample data seeded in {watch.ElapsedMilliseconds} ms");
|
await LogStatusAsync(JobId, LogJob, log, "MEDIUM level sample data seeded in " + AyaNova.Util.DateUtil.FormatTimeSpan(watch.Elapsed));
|
||||||
|
|
||||||
#endregion genmedium
|
#endregion genmedium
|
||||||
}
|
}
|
||||||
@@ -367,7 +367,7 @@ namespace AyaNova.Util
|
|||||||
|
|
||||||
//PERF
|
//PERF
|
||||||
watch.Stop();
|
watch.Stop();
|
||||||
await LogStatusAsync(JobId, LogJob, log, $"LARGE level sample data seeded in {watch.ElapsedMilliseconds} ms");
|
await LogStatusAsync(JobId, LogJob, log, "LARGE level sample data seeded in " + AyaNova.Util.DateUtil.FormatTimeSpan(watch.Elapsed));
|
||||||
#endregion genlarge
|
#endregion genlarge
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -428,12 +428,12 @@ namespace AyaNova.Util
|
|||||||
await SeedPartWarehouseAsync(log, 20);
|
await SeedPartWarehouseAsync(log, 20);
|
||||||
await SeedPartAsync(log, 500, 20);
|
await SeedPartAsync(log, 500, 20);
|
||||||
await SeedPartAssemblyAsync(log, 5);
|
await SeedPartAssemblyAsync(log, 5);
|
||||||
await SeedPurchaseOrderAsync(log, 200);
|
await SeedPurchaseOrderAsync(log, 200);
|
||||||
await SeedWorkOrderAsync(log, 200);
|
await SeedWorkOrderAsync(log, 200);
|
||||||
|
|
||||||
//PERF
|
//PERF
|
||||||
watch.Stop();
|
watch.Stop();
|
||||||
await LogStatusAsync(JobId, LogJob, log, $"HUGE level sample data seeded in {watch.ElapsedMilliseconds} ms");
|
await LogStatusAsync(JobId, LogJob, log, "HUGE level sample data seeded in " + AyaNova.Util.DateUtil.FormatTimeSpan(watch.Elapsed));
|
||||||
#endregion genhuge
|
#endregion genhuge
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -2893,7 +2893,7 @@ namespace AyaNova.Util
|
|||||||
using (AyContext ct = ServiceProviderProvider.DBContext)
|
using (AyContext ct = ServiceProviderProvider.DBContext)
|
||||||
{
|
{
|
||||||
WorkOrderBiz biz = WorkOrderBiz.GetBiz(ct);
|
WorkOrderBiz biz = WorkOrderBiz.GetBiz(ct);
|
||||||
var NewObject = await biz.WorkOrderCreateAsync(o);
|
var NewObject = await biz.WorkOrderCreateAsync(o, false);
|
||||||
TotalSeededWorkOrders++;
|
TotalSeededWorkOrders++;
|
||||||
if (NewObject == null)
|
if (NewObject == null)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user