This commit is contained in:
2021-08-07 00:31:29 +00:00
parent a7cc4ba888
commit 4d2b81d5d2
2 changed files with 42 additions and 10 deletions

2
.vscode/launch.json vendored
View File

@@ -53,7 +53,7 @@
"AYANOVA_FOLDER_USER_FILES": "c:\\temp\\RavenTestData\\userfiles", "AYANOVA_FOLDER_USER_FILES": "c:\\temp\\RavenTestData\\userfiles",
"AYANOVA_FOLDER_BACKUP_FILES": "c:\\temp\\RavenTestData\\backupfiles", "AYANOVA_FOLDER_BACKUP_FILES": "c:\\temp\\RavenTestData\\backupfiles",
"AYANOVA_FOLDER_TEMPORARY_SERVER_FILES": "c:\\temp\\RavenTestData\\tempfiles", "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_SEEDLEVEL": "small",
"AYANOVA_SERVER_TEST_MODE_TZ_OFFSET": "-7", "AYANOVA_SERVER_TEST_MODE_TZ_OFFSET": "-7",
"AYANOVA_BACKUP_PG_DUMP_PATH": "C:\\data\\code\\postgres_13\\bin\\" "AYANOVA_BACKUP_PG_DUMP_PATH": "C:\\data\\code\\postgres_13\\bin\\"

View File

@@ -136,9 +136,9 @@ namespace AyaNova.Biz
foreach (WorkOrderItem wi in newObject.Items) foreach (WorkOrderItem wi in newObject.Items)
{ {
foreach (WorkOrderItemPart wip in wi.Parts) 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) foreach (WorkOrderItemLoan wil in wi.Loans)
await LoanBizActionsAsync(AyaEvent.Created, wil, null, null); await LoanBizActionsAsync(AyaEvent.Created, wil, null);
} }
await ct.SaveChangesAsync(); await ct.SaveChangesAsync();
@@ -2788,13 +2788,19 @@ namespace AyaNova.Biz
return null; return null;
else else
{ {
await LoanBizActionsAsync(AyaEvent.Created, newObject, null, null); await LoanBizActionsAsync(AyaEvent.Created, newObject, null);
await ct.WorkOrderItemLoan.AddAsync(newObject); await ct.WorkOrderItemLoan.AddAsync(newObject);
await ct.SaveChangesAsync(); await ct.SaveChangesAsync();
await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, newObject.Id, newObject.AyaType, AyaEvent.Created), ct); await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, newObject.Id, newObject.AyaType, AyaEvent.Created), ct);
await LoanSearchIndexAsync(newObject, true); await LoanSearchIndexAsync(newObject, true);
await LoanPopulateVizFields(newObject); await LoanPopulateVizFields(newObject);
await LoanHandlePotentialNotificationEvent(AyaEvent.Created, 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; return newObject;
} }
} }
@@ -2830,8 +2836,10 @@ namespace AyaNova.Biz
} }
await LoanValidateAsync(putObject, dbObject); await LoanValidateAsync(putObject, dbObject);
if (HasErrors) return null; 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); ct.Replace(dbObject, putObject);
try try
{ {
await ct.SaveChangesAsync(); await ct.SaveChangesAsync();
@@ -2844,10 +2852,21 @@ namespace AyaNova.Biz
AddError(ApiErrorCode.CONCURRENCY_CONFLICT); AddError(ApiErrorCode.CONCURRENCY_CONFLICT);
return null; return null;
} }
await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, dbObject.Id, putObject.AyaType, AyaEvent.Modified), ct); await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, dbObject.Id, putObject.AyaType, AyaEvent.Modified), ct);
await LoanSearchIndexAsync(putObject, false); await LoanSearchIndexAsync(putObject, false);
await LoanPopulateVizFields(putObject); await LoanPopulateVizFields(putObject);
await LoanHandlePotentialNotificationEvent(AyaEvent.Modified, putObject, dbObject); 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; return putObject;
} }
@@ -2861,6 +2880,15 @@ namespace AyaNova.Biz
LoanValidateCanDelete(dbObject); LoanValidateCanDelete(dbObject);
if (HasErrors) if (HasErrors)
return false; 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); ct.WorkOrderItemLoan.Remove(dbObject);
await ct.SaveChangesAsync(); await ct.SaveChangesAsync();
@@ -2965,7 +2993,7 @@ namespace AyaNova.Biz
//BIZ ACTIONS //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 //automatic actions on record change, called AFTER validation
@@ -2976,6 +3004,8 @@ namespace AyaNova.Biz
//SNAPSHOT PRICING //SNAPSHOT PRICING
bool SnapshotPricing = true; bool SnapshotPricing = true;
//if modifed, see what has changed and should be re-applied //if modifed, see what has changed and should be re-applied
if (ayaEvent == AyaEvent.Modified) if (ayaEvent == AyaEvent.Modified)
{ {
@@ -3034,6 +3064,8 @@ namespace AyaNova.Biz
} }
} }
//////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////
//VALIDATION //VALIDATION
// //
@@ -3634,7 +3666,7 @@ namespace AyaNova.Biz
return null; return null;
else else
{ {
await PartBizActionsAsync(AyaEvent.Created, newObject, null, null); await PartBizActionsAsync(AyaEvent.Created, newObject, null);
await ct.WorkOrderItemPart.AddAsync(newObject); await ct.WorkOrderItemPart.AddAsync(newObject);
@@ -3690,7 +3722,7 @@ namespace AyaNova.Biz
await PartValidateAsync(putObject, dbObject); await PartValidateAsync(putObject, dbObject);
if (HasErrors) return null; if (HasErrors) return null;
await PartBizActionsAsync(AyaEvent.Modified, putObject, dbObject, null); await PartBizActionsAsync(AyaEvent.Modified, putObject, dbObject);
ct.Replace(dbObject, putObject); ct.Replace(dbObject, putObject);
try try
{ {
@@ -3729,7 +3761,7 @@ namespace AyaNova.Biz
PartValidateCanDelete(dbObject); PartValidateCanDelete(dbObject);
if (HasErrors) if (HasErrors)
return false; return false;
await PartBizActionsAsync(AyaEvent.Deleted, null, dbObject, transaction); await PartBizActionsAsync(AyaEvent.Deleted, null, dbObject);
ct.WorkOrderItemPart.Remove(dbObject); ct.WorkOrderItemPart.Remove(dbObject);
await ct.SaveChangesAsync(); await ct.SaveChangesAsync();
await PartInventoryAdjustmentAsync(AyaEvent.Deleted, null, dbObject, transaction); await PartInventoryAdjustmentAsync(AyaEvent.Deleted, null, dbObject, transaction);
@@ -3895,7 +3927,7 @@ namespace AyaNova.Biz
//BIZ ACTIONS //BIZ ACTIONS
// //
// //
private async Task PartBizActionsAsync(AyaEvent ayaEvent, WorkOrderItemPart newObj, WorkOrderItemPart oldObj, IDbContextTransaction transaction) private async Task PartBizActionsAsync(AyaEvent ayaEvent, WorkOrderItemPart newObj, WorkOrderItemPart oldObj)
{ {