From c6879571aac927dc63251694f5c2d65815348e99 Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Fri, 15 Jan 2021 00:46:30 +0000 Subject: [PATCH] --- .../AyaNova/biz/CustomerServiceRequestBiz.cs | 26 +-------------- server/AyaNova/biz/HeadOfficeBiz.cs | 33 +++++++++---------- 2 files changed, 16 insertions(+), 43 deletions(-) diff --git a/server/AyaNova/biz/CustomerServiceRequestBiz.cs b/server/AyaNova/biz/CustomerServiceRequestBiz.cs index 4ebf8324..fc2b8b0b 100644 --- a/server/AyaNova/biz/CustomerServiceRequestBiz.cs +++ b/server/AyaNova/biz/CustomerServiceRequestBiz.cs @@ -199,31 +199,7 @@ namespace AyaNova.Biz //if (workorderId==0){WorkOrderBiz.GenerateWorkOrder()} //this is how it would work in theory - // CustomerServiceRequest SnapshotOfOriginalDBObj = new CustomerServiceRequest(); - // CopyObject.Copy(dbObject, SnapshotOfOriginalDBObj); - // CopyObject.Copy(putObject, dbObject, "Id"); - // dbObject.Tags = TagBiz.NormalizeTags(dbObject.Tags); - // dbObject.CustomFields = JsonUtil.CompactJson(dbObject.CustomFields); - // ct.Entry(dbObject).OriginalValues["Concurrency"] = putObject.Concurrency; - // await ValidateAsync(dbObject, SnapshotOfOriginalDBObj); - // if (HasErrors) return null; - // try - // { - // await ct.SaveChangesAsync(); - // } - // catch (DbUpdateConcurrencyException) - // { - // if (!await ExistsAsync(putObject.Id)) - // AddError(ApiErrorCode.NOT_FOUND); - // else - // AddError(ApiErrorCode.CONCURRENCY_CONFLICT); - // return null; - // } - // await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, dbObject.Id, BizType, AyaEvent.Modified), ct); - // await SearchIndexAsync(dbObject, false); - // await TagBiz.ProcessUpdateTagsInRepositoryAsync(ct, dbObject.Tags, SnapshotOfOriginalDBObj.Tags); - // await HandlePotentialNotificationEvent(AyaEvent.Modified, dbObject, SnapshotOfOriginalDBObj); - //return dbObject; + } //////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/server/AyaNova/biz/HeadOfficeBiz.cs b/server/AyaNova/biz/HeadOfficeBiz.cs index d8865fff..e98d567f 100644 --- a/server/AyaNova/biz/HeadOfficeBiz.cs +++ b/server/AyaNova/biz/HeadOfficeBiz.cs @@ -65,13 +65,13 @@ namespace AyaNova.Biz // internal async Task DuplicateAsync(long id) { - HeadOffice dbObject = await GetAsync(id, false); + var dbObject = await GetAsync(id, false); if (dbObject == null) { AddError(ApiErrorCode.NOT_FOUND, "id"); return null; } - HeadOffice newObject = new HeadOffice(); + var newObject = new HeadOffice(); CopyObject.Copy(dbObject, newObject, "Wiki"); string newUniqueName = string.Empty; bool NotUnique = true; @@ -98,7 +98,7 @@ namespace AyaNova.Biz // internal async Task GetAsync(long id, bool logTheGetEvent = true) { - var ret = await ct.HeadOffice.SingleOrDefaultAsync(z => z.Id == id); + var ret = await ct.HeadOffice.AsNoTracking().SingleOrDefaultAsync(z => z.Id == id); if (logTheGetEvent && ret != null) await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, id, BizType, AyaEvent.Retrieved), ct); return ret; @@ -109,20 +109,17 @@ namespace AyaNova.Biz // internal async Task PutAsync(HeadOffice putObject) { - HeadOffice dbObject = await ct.HeadOffice.SingleOrDefaultAsync(z => z.Id == putObject.Id); + var dbObject = await GetAsync(putObject.Id, false); if (dbObject == null) { AddError(ApiErrorCode.NOT_FOUND, "id"); return null; } - HeadOffice SnapshotOfOriginalDBObj = new HeadOffice(); - CopyObject.Copy(dbObject, SnapshotOfOriginalDBObj); - CopyObject.Copy(putObject, dbObject, "Id"); - dbObject.Tags = TagBiz.NormalizeTags(dbObject.Tags); - dbObject.CustomFields = JsonUtil.CompactJson(dbObject.CustomFields); - ct.Entry(dbObject).OriginalValues["Concurrency"] = putObject.Concurrency; - await ValidateAsync(dbObject, SnapshotOfOriginalDBObj); + putObject.Tags = TagBiz.NormalizeTags(putObject.Tags); + putObject.CustomFields = JsonUtil.CompactJson(putObject.CustomFields); + await ValidateAsync(putObject, dbObject); if (HasErrors) return null; + ct.Replace(dbObject, putObject); try { await ct.SaveChangesAsync(); @@ -136,9 +133,9 @@ namespace AyaNova.Biz return null; } await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, dbObject.Id, BizType, AyaEvent.Modified), ct); - await SearchIndexAsync(dbObject, false); - await TagBiz.ProcessUpdateTagsInRepositoryAsync(ct, dbObject.Tags, SnapshotOfOriginalDBObj.Tags); - await HandlePotentialNotificationEvent(AyaEvent.Modified, dbObject, SnapshotOfOriginalDBObj); + await SearchIndexAsync(putObject, false); + await TagBiz.ProcessUpdateTagsInRepositoryAsync(ct, putObject.Tags, dbObject.Tags); + await HandlePotentialNotificationEvent(AyaEvent.Modified, putObject, dbObject); return dbObject; } @@ -151,7 +148,7 @@ namespace AyaNova.Biz { try { - HeadOffice dbObject = await ct.HeadOffice.SingleOrDefaultAsync(z => z.Id == id); + var dbObject = await GetAsync(id, false); if (dbObject == null) { AddError(ApiErrorCode.NOT_FOUND); @@ -214,7 +211,7 @@ namespace AyaNova.Biz public async Task GetSearchResultSummary(long id) { - var obj = await ct.HeadOffice.SingleOrDefaultAsync(z => z.Id == id); + var obj = await GetAsync(id, false); var SearchParams = new Search.SearchIndexProcessObjectParameters(); DigestSearchText(obj, SearchParams); return SearchParams; @@ -319,7 +316,7 @@ namespace AyaNova.Biz var batch = idList.Take(IReportAbleObject.REPORT_DATA_BATCH_SIZE); idList = idList.Skip(IReportAbleObject.REPORT_DATA_BATCH_SIZE).ToArray(); //query for this batch, comes back in db natural order unfortunately - var batchResults = await ct.HeadOffice.Where(z => batch.Contains(z.Id)).ToArrayAsync(); + var batchResults = await ct.HeadOffice.AsNoTracking().Where(z => batch.Contains(z.Id)).ToArrayAsync(); //order the results back into original var orderedList = from id in batch join z in batchResults on id equals z.Id select z; foreach (HeadOffice w in orderedList) @@ -406,7 +403,7 @@ namespace AyaNova.Biz if (jobData.ContainsKey("idList")) idList = ((JArray)jobData["idList"]).ToObject>(); else - idList = await ct.HeadOffice.Select(z => z.Id).ToListAsync(); + idList = await ct.HeadOffice.AsNoTracking().Select(z => z.Id).ToListAsync(); bool SaveIt = false; foreach (long id in idList) {