This commit is contained in:
2021-07-20 16:07:01 +00:00
parent d3dba0fb68
commit 89e3e96320

View File

@@ -115,7 +115,7 @@ namespace AyaNova.Biz
{
await WorkOrderBizActionsAsync(AyaEvent.Created, newObject, null, null);
newObject.Tags = TagBiz.NormalizeTags(newObject.Tags);
newObject.CustomFields = JsonUtil.CompactJson(newObject.CustomFields);
newObject.CustomFields = JsonUtil.CompactJson(newObject.CustomFields);
await ct.WorkOrder.AddAsync(newObject);
await ct.SaveChangesAsync();
await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, newObject.Id, BizType, AyaEvent.Created), ct);
@@ -163,7 +163,7 @@ namespace AyaNova.Biz
await transaction.CommitAsync();
if (populateViz)
await WorkOrderPopulateVizFields(newObject, true, false);
await WorkOrderHandlePotentialNotificationEvent(AyaEvent.Created, newObject);
return newObject;
}
@@ -207,7 +207,7 @@ namespace AyaNova.Biz
////////////////////////////////////////////////////////////////////////////////////////////////
// GET
//
internal async Task<WorkOrder> WorkOrderGetAsync(long id, bool populateDisplayFields, bool logTheGetEvent = true, bool populateForReporting=false)
internal async Task<WorkOrder> WorkOrderGetAsync(long id, bool populateDisplayFields, bool logTheGetEvent = true, bool populateForReporting = false)
{
var ret = await WorkOrderGetFullAsync(id);
@@ -414,14 +414,26 @@ namespace AyaNova.Biz
if (ayaEvent != AyaEvent.Created && ayaEvent != AyaEvent.Modified)
return;
//CREATED OR MODIFIED
if(ayaEvent==AyaEvent.Created || ayaEvent==AyaEvent.Modified)
{
//Set duration to completed
//Clear it if set and not completed state
//or
//Set it if not set and completed state
todo
}
//CREATION ACTIONS
if (ayaEvent == AyaEvent.Created)
{
await AutoSetContractAsync(newObj);
if (newObj.CompleteByDate == null)//need to account for a user manually selecting a specific close by date in advance indicating to ignore any auto sets
await AutoSetCloseByDateAsync(newObj);
await AutoSetAddressAsync(newObj);
return;
await AutoSetAddressAsync(newObj);
}
//MODIFIED ACTIONS
@@ -6490,31 +6502,50 @@ namespace AyaNova.Biz
////////////////////////////////////////////////////////////////////////////////////////////////
//GET CURRENT STATUS FOR WORKORDER FROM RELATIVE
//
//cache the state to save repeatedly fetching it for this operation which could be called multiple times in a flowv
internal WorkOrderStatus mCurrentWorkOrderStatus = null;
internal async Task<WorkOrderStatus> GetCurrentWorkOrderStatusFromRelatedAsync(AyaType ayaType, long id)
{
//instantiated method to save adding the context
return await GetCurrentWorkOrderStatusFromRelatedAsync(ayaType, id, ct);
}
internal static async Task<WorkOrderStatus> GetCurrentWorkOrderStatusFromRelatedAsync(AyaType ayaType, long id, AyContext ct)
{
//static method
var wid = await GetWorkOrderIdFromRelativeAsync(ayaType, id, ct);
var stat = await ct.WorkOrderState.AsNoTracking()
.Where(z => z.WorkOrderId == wid.WorkOrderId)
.OrderByDescending(z => z.Created)
.Take(1)
.FirstOrDefaultAsync();
if (mCurrentWorkOrderStatus == null)
{
var wid = await GetWorkOrderIdFromRelativeAsync(ayaType, id, ct);
var stat = await ct.WorkOrderState.AsNoTracking()
.Where(z => z.WorkOrderId == wid.WorkOrderId)
.OrderByDescending(z => z.Created)
.Take(1)
.FirstOrDefaultAsync();
//no state set yet?
if (stat == null)
{ //default
return new WorkOrderStatus() { Id = -1, Locked = false, Completed = false };
//no state set yet?
if (stat == null)
mCurrentWorkOrderStatus = new WorkOrderStatus() { Id = -1, Locked = false, Completed = false };
else
mCurrentWorkOrderStatus = await ct.WorkOrderStatus.AsNoTracking().Where(z => z.Id == stat.WorkOrderStatusId).FirstAsync();//this should never not be null
}
return await ct.WorkOrderStatus.AsNoTracking().Where(z => z.Id == stat.WorkOrderStatusId).FirstAsync();//this should never not be null
return mCurrentWorkOrderStatus;
}
// internal static async Task<WorkOrderStatus> GetCurrentWorkOrderStatusFromRelatedAsync(AyaType ayaType, long id, AyContext ct)
// {
// //static method
// var wid = await GetWorkOrderIdFromRelativeAsync(ayaType, id, ct);
// var stat = await ct.WorkOrderState.AsNoTracking()
// .Where(z => z.WorkOrderId == wid.WorkOrderId)
// .OrderByDescending(z => z.Created)
// .Take(1)
// .FirstOrDefaultAsync();
// //no state set yet?
// if (stat == null)
// { //default
// return new WorkOrderStatus() { Id = -1, Locked = false, Completed = false };
// }
// return await ct.WorkOrderStatus.AsNoTracking().Where(z => z.Id == stat.WorkOrderStatusId).FirstAsync();//this should never not be null
// }
#endregion utility