From 4d2b81d5d20dd4b2f78a82010292d550c973b677 Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Sat, 7 Aug 2021 00:31:29 +0000 Subject: [PATCH] --- .vscode/launch.json | 2 +- server/AyaNova/biz/WorkOrderBiz.cs | 50 ++++++++++++++++++++++++------ 2 files changed, 42 insertions(+), 10 deletions(-) diff --git a/.vscode/launch.json b/.vscode/launch.json index fcc80a75..b77f3b95 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -53,7 +53,7 @@ "AYANOVA_FOLDER_USER_FILES": "c:\\temp\\RavenTestData\\userfiles", "AYANOVA_FOLDER_BACKUP_FILES": "c:\\temp\\RavenTestData\\backupfiles", "AYANOVA_FOLDER_TEMPORARY_SERVER_FILES": "c:\\temp\\RavenTestData\\tempfiles", - "AYANOVA_SERVER_TEST_MODE": "true", + "AYANOVA_SERVER_TEST_MODE": "false", "AYANOVA_SERVER_TEST_MODE_SEEDLEVEL": "small", "AYANOVA_SERVER_TEST_MODE_TZ_OFFSET": "-7", "AYANOVA_BACKUP_PG_DUMP_PATH": "C:\\data\\code\\postgres_13\\bin\\" diff --git a/server/AyaNova/biz/WorkOrderBiz.cs b/server/AyaNova/biz/WorkOrderBiz.cs index 84606b1b..328ec0c5 100644 --- a/server/AyaNova/biz/WorkOrderBiz.cs +++ b/server/AyaNova/biz/WorkOrderBiz.cs @@ -136,9 +136,9 @@ namespace AyaNova.Biz foreach (WorkOrderItem wi in newObject.Items) { foreach (WorkOrderItemPart wip in wi.Parts) - await PartBizActionsAsync(AyaEvent.Created, wip, null, null); + await PartBizActionsAsync(AyaEvent.Created, wip, null); foreach (WorkOrderItemLoan wil in wi.Loans) - await LoanBizActionsAsync(AyaEvent.Created, wil, null, null); + await LoanBizActionsAsync(AyaEvent.Created, wil, null); } await ct.SaveChangesAsync(); @@ -2788,13 +2788,19 @@ namespace AyaNova.Biz return null; else { - await LoanBizActionsAsync(AyaEvent.Created, newObject, null, null); + await LoanBizActionsAsync(AyaEvent.Created, newObject, null); await ct.WorkOrderItemLoan.AddAsync(newObject); await ct.SaveChangesAsync(); await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, newObject.Id, newObject.AyaType, AyaEvent.Created), ct); await LoanSearchIndexAsync(newObject, true); await LoanPopulateVizFields(newObject); await LoanHandlePotentialNotificationEvent(AyaEvent.Created, newObject); + var u = await ct.LoanUnit.FirstOrDefaultAsync(x => x.Id == newObject.LoanUnitId); + if (u != null) + { + u.WorkOrderItemLoanId = newObject.Id; + await ct.SaveChangesAsync(); + } return newObject; } } @@ -2830,8 +2836,10 @@ namespace AyaNova.Biz } await LoanValidateAsync(putObject, dbObject); if (HasErrors) return null; - await LoanBizActionsAsync(AyaEvent.Modified, putObject, dbObject, null); + await LoanBizActionsAsync(AyaEvent.Modified, putObject, dbObject); + bool changeOfUnit = dbObject.LoanUnitId != putObject.LoanUnitId; ct.Replace(dbObject, putObject); + try { await ct.SaveChangesAsync(); @@ -2844,10 +2852,21 @@ namespace AyaNova.Biz AddError(ApiErrorCode.CONCURRENCY_CONFLICT); return null; } + await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, dbObject.Id, putObject.AyaType, AyaEvent.Modified), ct); await LoanSearchIndexAsync(putObject, false); await LoanPopulateVizFields(putObject); await LoanHandlePotentialNotificationEvent(AyaEvent.Modified, putObject, dbObject); + //update loan unit + if (changeOfUnit) + { + var u = await ct.LoanUnit.FirstOrDefaultAsync(x => x.Id == dbObject.LoanUnitId); + if (u != null) + { + u.WorkOrderItemLoanId = putObject.Id; + await ct.SaveChangesAsync(); + } + } return putObject; } @@ -2861,6 +2880,15 @@ namespace AyaNova.Biz LoanValidateCanDelete(dbObject); if (HasErrors) return false; + //note:deliberately doing collection here in case of weird issues + var ul = await ct.LoanUnit.Where(x => x.WorkOrderItemLoanId == dbObject.Id).ToListAsync(); + foreach (var u in ul) + { + if (u.WorkOrderItemLoanId == dbObject.Id)//only do this if it's flagged on *this* workorderitemloan + u.WorkOrderItemLoanId = null; + } + await ct.SaveChangesAsync(); + ct.WorkOrderItemLoan.Remove(dbObject); await ct.SaveChangesAsync(); @@ -2965,7 +2993,7 @@ namespace AyaNova.Biz //BIZ ACTIONS // // - private async Task LoanBizActionsAsync(AyaEvent ayaEvent, WorkOrderItemLoan newObj, WorkOrderItemLoan oldObj, IDbContextTransaction transaction) + private async Task LoanBizActionsAsync(AyaEvent ayaEvent, WorkOrderItemLoan newObj, WorkOrderItemLoan oldObj) { //automatic actions on record change, called AFTER validation @@ -2976,6 +3004,8 @@ namespace AyaNova.Biz //SNAPSHOT PRICING bool SnapshotPricing = true; + + //if modifed, see what has changed and should be re-applied if (ayaEvent == AyaEvent.Modified) { @@ -3034,6 +3064,8 @@ namespace AyaNova.Biz } } + + //////////////////////////////////////////////////////////////////////////////////////////////// //VALIDATION // @@ -3634,7 +3666,7 @@ namespace AyaNova.Biz return null; else { - await PartBizActionsAsync(AyaEvent.Created, newObject, null, null); + await PartBizActionsAsync(AyaEvent.Created, newObject, null); await ct.WorkOrderItemPart.AddAsync(newObject); @@ -3690,7 +3722,7 @@ namespace AyaNova.Biz await PartValidateAsync(putObject, dbObject); if (HasErrors) return null; - await PartBizActionsAsync(AyaEvent.Modified, putObject, dbObject, null); + await PartBizActionsAsync(AyaEvent.Modified, putObject, dbObject); ct.Replace(dbObject, putObject); try { @@ -3729,7 +3761,7 @@ namespace AyaNova.Biz PartValidateCanDelete(dbObject); if (HasErrors) return false; - await PartBizActionsAsync(AyaEvent.Deleted, null, dbObject, transaction); + await PartBizActionsAsync(AyaEvent.Deleted, null, dbObject); ct.WorkOrderItemPart.Remove(dbObject); await ct.SaveChangesAsync(); await PartInventoryAdjustmentAsync(AyaEvent.Deleted, null, dbObject, transaction); @@ -3895,7 +3927,7 @@ namespace AyaNova.Biz //BIZ ACTIONS // // - private async Task PartBizActionsAsync(AyaEvent ayaEvent, WorkOrderItemPart newObj, WorkOrderItemPart oldObj, IDbContextTransaction transaction) + private async Task PartBizActionsAsync(AyaEvent ayaEvent, WorkOrderItemPart newObj, WorkOrderItemPart oldObj) {