This commit is contained in:
2021-05-28 17:57:45 +00:00
parent ed4ce6ca35
commit 8010eb6833
4 changed files with 53 additions and 16 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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)
{ {