From bfdf3454e6f815b4dea04cfa576baa37c344ee95 Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Tue, 9 Feb 2021 20:17:06 +0000 Subject: [PATCH] --- server/AyaNova/biz/ContractBiz.cs | 41 +++++++++++-------- server/AyaNova/biz/CustomerBiz.cs | 7 +++- server/AyaNova/biz/CustomerNoteBiz.cs | 9 +++- server/AyaNova/biz/DashboardViewBiz.cs | 1 + server/AyaNova/biz/DataListSavedFilterBiz.cs | 7 +++- server/AyaNova/biz/FormCustomBiz.cs | 8 ++-- server/AyaNova/biz/GlobalBizSettingsBiz.cs | 7 +++- .../AyaNova/biz/GlobalOpsBackupSettingsBiz.cs | 1 + .../biz/GlobalOpsNotificationSettingsBiz.cs | 1 + server/AyaNova/biz/HeadOfficeBiz.cs | 7 +++- server/AyaNova/biz/LoanUnitBiz.cs | 7 +++- server/AyaNova/biz/MemoBiz.cs | 7 +++- server/AyaNova/biz/NotifySubscriptionBiz.cs | 7 +++- server/AyaNova/biz/PartAssemblyBiz.cs | 5 +++ server/AyaNova/biz/PartBiz.cs | 7 +++- server/AyaNova/biz/PartWarehouseBiz.cs | 7 +++- server/AyaNova/biz/ProjectBiz.cs | 7 +++- server/AyaNova/biz/PurchaseOrderBiz.cs | 7 +++- server/AyaNova/biz/ReminderBiz.cs | 7 +++- server/AyaNova/biz/ReportBiz.cs | 7 +++- server/AyaNova/biz/ReviewBiz.cs | 7 +++- server/AyaNova/biz/ServiceRateBiz.cs | 7 +++- server/AyaNova/biz/TaxCodeBiz.cs | 7 +++- server/AyaNova/biz/TranslationBiz.cs | 1 + server/AyaNova/biz/TravelRateBiz.cs | 7 +++- server/AyaNova/biz/UnitBiz.cs | 7 +++- server/AyaNova/biz/UnitModelBiz.cs | 7 +++- server/AyaNova/biz/UserBiz.cs | 1 + server/AyaNova/biz/UserOptionsBiz.cs | 1 + server/AyaNova/biz/VendorBiz.cs | 7 +++- 30 files changed, 167 insertions(+), 42 deletions(-) diff --git a/server/AyaNova/biz/ContractBiz.cs b/server/AyaNova/biz/ContractBiz.cs index 6e3d1c38..b32236a6 100644 --- a/server/AyaNova/biz/ContractBiz.cs +++ b/server/AyaNova/biz/ContractBiz.cs @@ -104,17 +104,23 @@ namespace AyaNova.Biz // internal async Task PutAsync(Contract putObject) { - Contract dbObject = await GetAsync(putObject.Id,false); + Contract dbObject = await GetAsync(putObject.Id, false); if (dbObject == null) { AddError(ApiErrorCode.NOT_FOUND, "id"); return null; } - + if (dbObject.Concurrency != putObject.Concurrency) + { + AddError(ApiErrorCode.CONCURRENCY_CONFLICT); + return null; + } + + putObject.Tags = TagBiz.NormalizeTags(dbObject.Tags); putObject.CustomFields = JsonUtil.CompactJson(dbObject.CustomFields); await ValidateAsync(putObject, dbObject); - if (HasErrors) return null; + if (HasErrors) return null; ct.Replace(dbObject, putObject); try { @@ -128,11 +134,11 @@ namespace AyaNova.Biz AddError(ApiErrorCode.CONCURRENCY_CONFLICT); return null; } - await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, dbObject.Id, BizType, AyaEvent.Modified), ct); + await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, dbObject.Id, BizType, AyaEvent.Modified), ct); await SearchIndexAsync(putObject, false); await TagBiz.ProcessUpdateTagsInRepositoryAsync(ct, putObject.Tags, dbObject.Tags); await HandlePotentialNotificationEvent(AyaEvent.Modified, putObject, dbObject); - return dbObject; + return putObject; } //////////////////////////////////////////////////////////////////////////////////////////////// @@ -145,7 +151,8 @@ namespace AyaNova.Biz try { Contract dbObject = await GetAsync(id, false); - if (dbObject == null){ + if (dbObject == null) + { AddError(ApiErrorCode.NOT_FOUND); return false; } @@ -174,13 +181,13 @@ namespace AyaNova.Biz } } - //////////////////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////////////////// //SEARCH // private async Task SearchIndexAsync(Contract obj, bool isNew) { - var SearchParams = new Search.SearchIndexProcessObjectParameters(UserTranslationId, obj.Id, BizType); - DigestSearchText(obj,SearchParams); + var SearchParams = new Search.SearchIndexProcessObjectParameters(UserTranslationId, obj.Id, BizType); + DigestSearchText(obj, SearchParams); if (isNew) await Search.ProcessNewObjectKeywordsAsync(SearchParams); else @@ -189,9 +196,9 @@ namespace AyaNova.Biz public async Task GetSearchResultSummary(long id) { - var obj = await GetAsync(id, false); + var obj = await GetAsync(id, false); var SearchParams = new Search.SearchIndexProcessObjectParameters(); - DigestSearchText(obj,SearchParams); + DigestSearchText(obj, SearchParams); return SearchParams; } @@ -201,8 +208,8 @@ namespace AyaNova.Biz searchParams.AddText(obj.Notes) .AddText(obj.Name) .AddText(obj.Wiki) - .AddText(obj.Tags) - .AddCustomFields(obj.CustomFields); + .AddText(obj.Tags) + .AddCustomFields(obj.CustomFields); } @@ -220,7 +227,7 @@ namespace AyaNova.Biz if (string.IsNullOrWhiteSpace(proposedObj.Name)) AddError(ApiErrorCode.VALIDATION_REQUIRED, "Name"); - + //If name is otherwise OK, check that name is unique if (!PropertyHasErrors("Name")) @@ -254,14 +261,14 @@ namespace AyaNova.Biz } - - + + //////////////////////////////////////////////////////////////////////////////////////////////// // NOTIFICATION PROCESSING // - public async Task HandlePotentialNotificationEvent(AyaEvent ayaEvent, ICoreBizObjectModel proposedObj, ICoreBizObjectModel currentObj=null) + public async Task HandlePotentialNotificationEvent(AyaEvent ayaEvent, ICoreBizObjectModel proposedObj, ICoreBizObjectModel currentObj = null) { ILogger log = AyaNova.Util.ApplicationLogging.CreateLogger(); if (ServerBootConfig.SEEDING) return; diff --git a/server/AyaNova/biz/CustomerBiz.cs b/server/AyaNova/biz/CustomerBiz.cs index 42f79450..9459751e 100644 --- a/server/AyaNova/biz/CustomerBiz.cs +++ b/server/AyaNova/biz/CustomerBiz.cs @@ -115,6 +115,11 @@ namespace AyaNova.Biz AddError(ApiErrorCode.NOT_FOUND, "id"); return null; } + if (dbObject.Concurrency != putObject.Concurrency) + { + AddError(ApiErrorCode.CONCURRENCY_CONFLICT); + return null; + } putObject.Tags = TagBiz.NormalizeTags(putObject.Tags); putObject.CustomFields = JsonUtil.CompactJson(putObject.CustomFields); @@ -137,7 +142,7 @@ namespace AyaNova.Biz await SearchIndexAsync(putObject, false); await TagBiz.ProcessUpdateTagsInRepositoryAsync(ct, putObject.Tags, dbObject.Tags); await HandlePotentialNotificationEvent(AyaEvent.Modified, putObject, dbObject); - return dbObject; + return putObject; } //////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/server/AyaNova/biz/CustomerNoteBiz.cs b/server/AyaNova/biz/CustomerNoteBiz.cs index 714b0a85..d88058d7 100644 --- a/server/AyaNova/biz/CustomerNoteBiz.cs +++ b/server/AyaNova/biz/CustomerNoteBiz.cs @@ -74,12 +74,17 @@ namespace AyaNova.Biz // internal async Task PutAsync(CustomerNote putObject) { - CustomerNote dbObject = await GetAsync(putObject.Id,false); + CustomerNote dbObject = await GetAsync(putObject.Id, false); if (dbObject == null) { AddError(ApiErrorCode.NOT_FOUND, "id"); return null; } + if (dbObject.Concurrency != putObject.Concurrency) + { + AddError(ApiErrorCode.CONCURRENCY_CONFLICT); + return null; + } putObject.Tags = TagBiz.NormalizeTags(putObject.Tags); //no validate required @@ -100,7 +105,7 @@ namespace AyaNova.Biz await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, dbObject.Id, BizType, AyaEvent.Modified), ct); await SearchIndexAsync(putObject, false); await TagBiz.ProcessUpdateTagsInRepositoryAsync(ct, putObject.Tags, dbObject.Tags); - return dbObject; + return putObject; } //////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/server/AyaNova/biz/DashboardViewBiz.cs b/server/AyaNova/biz/DashboardViewBiz.cs index b16d6f4d..e3df2997 100644 --- a/server/AyaNova/biz/DashboardViewBiz.cs +++ b/server/AyaNova/biz/DashboardViewBiz.cs @@ -72,6 +72,7 @@ namespace AyaNova.Biz //put internal async Task PutAsync(DashboardView dbObject, string theView) { + //todo: check this, is it correct to not be using the standard PUT methodology dbObject.View = theView; Validate(dbObject, false); if (HasErrors) diff --git a/server/AyaNova/biz/DataListSavedFilterBiz.cs b/server/AyaNova/biz/DataListSavedFilterBiz.cs index 6cef9480..2899cdf6 100644 --- a/server/AyaNova/biz/DataListSavedFilterBiz.cs +++ b/server/AyaNova/biz/DataListSavedFilterBiz.cs @@ -132,6 +132,11 @@ namespace AyaNova.Biz AddError(ApiErrorCode.NOT_FOUND, "id"); return null; } + if (dbObject.Concurrency != putObject.Concurrency) + { + AddError(ApiErrorCode.CONCURRENCY_CONFLICT); + return null; + } //preserve the owner ID if none was specified if (putObject.UserId == 0) @@ -155,7 +160,7 @@ namespace AyaNova.Biz return null; } - return dbObject; + return putObject; } diff --git a/server/AyaNova/biz/FormCustomBiz.cs b/server/AyaNova/biz/FormCustomBiz.cs index 55318f7c..54140334 100644 --- a/server/AyaNova/biz/FormCustomBiz.cs +++ b/server/AyaNova/biz/FormCustomBiz.cs @@ -32,7 +32,7 @@ namespace AyaNova.Biz return new FormCustomBiz(ct, 1, ServerBootConfig.AYANOVA_DEFAULT_TRANSLATION_ID, AuthorizationRoles.BizAdminFull); } - + //////////////////////////////////////////////////////////////////////////////////////////////// //EXISTS @@ -65,7 +65,7 @@ namespace AyaNova.Biz //EVENT LOG await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, outObj.Id, BizType, AyaEvent.Created), ct); - + return outObj; } @@ -118,6 +118,8 @@ namespace AyaNova.Biz internal async Task PutAsync(FormCustom dbObject, FormCustom inObj) { + //todo: replace with new put methodology + //Replace the db object with the PUT object CopyObject.Copy(inObj, dbObject, "Id"); //Set "original" value of concurrency token to input token @@ -134,7 +136,7 @@ namespace AyaNova.Biz //Log modification and save context await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, dbObject.Id, BizType, AyaEvent.Modified), ct); - + return true; } diff --git a/server/AyaNova/biz/GlobalBizSettingsBiz.cs b/server/AyaNova/biz/GlobalBizSettingsBiz.cs index 51785a21..2984ed4f 100644 --- a/server/AyaNova/biz/GlobalBizSettingsBiz.cs +++ b/server/AyaNova/biz/GlobalBizSettingsBiz.cs @@ -63,6 +63,11 @@ namespace AyaNova.Biz if (dbObject == null) throw new System.Exception("GlobalBizSettingsBiz::PutAsync -> Global settings object not found in database. Contact support immediately!"); + if (dbObject.Concurrency != putObject.Concurrency) + { + AddError(ApiErrorCode.CONCURRENCY_CONFLICT); + return null; + } Validate(putObject, dbObject); if (HasErrors) return null; ct.Replace(dbObject, putObject); @@ -81,7 +86,7 @@ namespace AyaNova.Biz await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, 1, BizType, AyaEvent.Modified), ct); //Update the static copy for the server ServerGlobalBizSettings.Initialize(putObject); - return dbObject; + return putObject; } diff --git a/server/AyaNova/biz/GlobalOpsBackupSettingsBiz.cs b/server/AyaNova/biz/GlobalOpsBackupSettingsBiz.cs index ccb4c844..f5438300 100644 --- a/server/AyaNova/biz/GlobalOpsBackupSettingsBiz.cs +++ b/server/AyaNova/biz/GlobalOpsBackupSettingsBiz.cs @@ -57,6 +57,7 @@ namespace AyaNova.Biz //put internal async Task PutAsync(GlobalOpsBackupSettings putObject) { + //todo: replace with new put methodology? var dbObject = await ct.GlobalOpsBackupSettings.FirstOrDefaultAsync(m => m.Id == 1); if (dbObject == null) throw new System.Exception("GlobalOpsBackupSettings::PutAsync -> Global settings object not found in database!!"); diff --git a/server/AyaNova/biz/GlobalOpsNotificationSettingsBiz.cs b/server/AyaNova/biz/GlobalOpsNotificationSettingsBiz.cs index 1eb6648f..de44f3b1 100644 --- a/server/AyaNova/biz/GlobalOpsNotificationSettingsBiz.cs +++ b/server/AyaNova/biz/GlobalOpsNotificationSettingsBiz.cs @@ -57,6 +57,7 @@ namespace AyaNova.Biz //put internal async Task PutAsync(GlobalOpsNotificationSettings putObject) { + //todo: replace with new put methodology var dbObject = await ct.GlobalOpsNotificationSettings.FirstOrDefaultAsync(m => m.Id == 1); if (dbObject == null) throw new System.Exception("GlobalOpsNotificationSettings::PutAsync -> Settings object not found in database!!"); diff --git a/server/AyaNova/biz/HeadOfficeBiz.cs b/server/AyaNova/biz/HeadOfficeBiz.cs index a17c61a5..38417cdc 100644 --- a/server/AyaNova/biz/HeadOfficeBiz.cs +++ b/server/AyaNova/biz/HeadOfficeBiz.cs @@ -115,6 +115,11 @@ namespace AyaNova.Biz AddError(ApiErrorCode.NOT_FOUND, "id"); return null; } + if (dbObject.Concurrency != putObject.Concurrency) + { + AddError(ApiErrorCode.CONCURRENCY_CONFLICT); + return null; + } putObject.Tags = TagBiz.NormalizeTags(putObject.Tags); putObject.CustomFields = JsonUtil.CompactJson(putObject.CustomFields); await ValidateAsync(putObject, dbObject); @@ -136,7 +141,7 @@ namespace AyaNova.Biz await SearchIndexAsync(putObject, false); await TagBiz.ProcessUpdateTagsInRepositoryAsync(ct, putObject.Tags, dbObject.Tags); await HandlePotentialNotificationEvent(AyaEvent.Modified, putObject, dbObject); - return dbObject; + return putObject; } //////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/server/AyaNova/biz/LoanUnitBiz.cs b/server/AyaNova/biz/LoanUnitBiz.cs index 26e98010..6fd85215 100644 --- a/server/AyaNova/biz/LoanUnitBiz.cs +++ b/server/AyaNova/biz/LoanUnitBiz.cs @@ -115,6 +115,11 @@ namespace AyaNova.Biz AddError(ApiErrorCode.NOT_FOUND, "id"); return null; } + if (dbObject.Concurrency != putObject.Concurrency) + { + AddError(ApiErrorCode.CONCURRENCY_CONFLICT); + return null; + } putObject.Tags = TagBiz.NormalizeTags(putObject.Tags); putObject.CustomFields = JsonUtil.CompactJson(putObject.CustomFields); @@ -137,7 +142,7 @@ namespace AyaNova.Biz await SearchIndexAsync(putObject, false); await TagBiz.ProcessUpdateTagsInRepositoryAsync(ct, putObject.Tags, dbObject.Tags); await HandlePotentialNotificationEvent(AyaEvent.Modified, putObject, dbObject); - return dbObject; + return putObject; } //////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/server/AyaNova/biz/MemoBiz.cs b/server/AyaNova/biz/MemoBiz.cs index 6fe0092d..3fd34eed 100644 --- a/server/AyaNova/biz/MemoBiz.cs +++ b/server/AyaNova/biz/MemoBiz.cs @@ -97,6 +97,11 @@ namespace AyaNova.Biz AddError(ApiErrorCode.NOT_FOUND, "id"); return null; } + if (dbObject.Concurrency != putObject.Concurrency) + { + AddError(ApiErrorCode.CONCURRENCY_CONFLICT); + return null; + } putObject.Tags = TagBiz.NormalizeTags(putObject.Tags); putObject.CustomFields = JsonUtil.CompactJson(putObject.CustomFields); @@ -119,7 +124,7 @@ namespace AyaNova.Biz await SearchIndexAsync(putObject, false); await TagBiz.ProcessUpdateTagsInRepositoryAsync(ct, putObject.Tags, dbObject.Tags); await HandlePotentialNotificationEvent(AyaEvent.Modified, putObject, dbObject); - return dbObject; + return putObject; } //////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/server/AyaNova/biz/NotifySubscriptionBiz.cs b/server/AyaNova/biz/NotifySubscriptionBiz.cs index f24d1a67..40e7abbe 100644 --- a/server/AyaNova/biz/NotifySubscriptionBiz.cs +++ b/server/AyaNova/biz/NotifySubscriptionBiz.cs @@ -101,6 +101,11 @@ namespace AyaNova.Biz AddError(ApiErrorCode.NOT_FOUND, "id"); return null; } + if (dbObject.Concurrency != putObject.Concurrency) + { + AddError(ApiErrorCode.CONCURRENCY_CONFLICT); + return null; + } putObject.Tags = TagBiz.NormalizeTags(putObject.Tags); await ValidateAsync(putObject); if (HasErrors) return null; @@ -120,7 +125,7 @@ namespace AyaNova.Biz } await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, dbObject.Id, BizType, AyaEvent.Modified), ct); await TagBiz.ProcessUpdateTagsInRepositoryAsync(ct, putObject.Tags, dbObject.Tags); - return dbObject; + return putObject; } //////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/server/AyaNova/biz/PartAssemblyBiz.cs b/server/AyaNova/biz/PartAssemblyBiz.cs index 9307fb07..0a6215d5 100644 --- a/server/AyaNova/biz/PartAssemblyBiz.cs +++ b/server/AyaNova/biz/PartAssemblyBiz.cs @@ -135,6 +135,11 @@ namespace AyaNova.Biz AddError(ApiErrorCode.NOT_FOUND, "id"); return null; } + if (dbObject.Concurrency != putObject.Concurrency) + { + AddError(ApiErrorCode.CONCURRENCY_CONFLICT); + return null; + } putObject.Tags = TagBiz.NormalizeTags(putObject.Tags); putObject.CustomFields = JsonUtil.CompactJson(putObject.CustomFields); diff --git a/server/AyaNova/biz/PartBiz.cs b/server/AyaNova/biz/PartBiz.cs index 77cfdba3..cab8717a 100644 --- a/server/AyaNova/biz/PartBiz.cs +++ b/server/AyaNova/biz/PartBiz.cs @@ -115,6 +115,11 @@ namespace AyaNova.Biz AddError(ApiErrorCode.NOT_FOUND, "id"); return null; } + if (dbObject.Concurrency != putObject.Concurrency) + { + AddError(ApiErrorCode.CONCURRENCY_CONFLICT); + return null; + } putObject.Tags = TagBiz.NormalizeTags(putObject.Tags); putObject.CustomFields = JsonUtil.CompactJson(putObject.CustomFields); @@ -137,7 +142,7 @@ namespace AyaNova.Biz await SearchIndexAsync(putObject, false); await TagBiz.ProcessUpdateTagsInRepositoryAsync(ct, putObject.Tags, dbObject.Tags); await HandlePotentialNotificationEvent(AyaEvent.Modified, putObject, dbObject); - return dbObject; + return putObject; } //////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/server/AyaNova/biz/PartWarehouseBiz.cs b/server/AyaNova/biz/PartWarehouseBiz.cs index 69a980fd..139c3278 100644 --- a/server/AyaNova/biz/PartWarehouseBiz.cs +++ b/server/AyaNova/biz/PartWarehouseBiz.cs @@ -115,6 +115,11 @@ namespace AyaNova.Biz AddError(ApiErrorCode.NOT_FOUND, "id"); return null; } + if (dbObject.Concurrency != putObject.Concurrency) + { + AddError(ApiErrorCode.CONCURRENCY_CONFLICT); + return null; + } putObject.Tags = TagBiz.NormalizeTags(putObject.Tags); putObject.CustomFields = JsonUtil.CompactJson(putObject.CustomFields); @@ -137,7 +142,7 @@ namespace AyaNova.Biz await SearchIndexAsync(putObject, false); await TagBiz.ProcessUpdateTagsInRepositoryAsync(ct, putObject.Tags, dbObject.Tags); await HandlePotentialNotificationEvent(AyaEvent.Modified, putObject, dbObject); - return dbObject; + return putObject; } //////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/server/AyaNova/biz/ProjectBiz.cs b/server/AyaNova/biz/ProjectBiz.cs index 0b580e42..596ca142 100644 --- a/server/AyaNova/biz/ProjectBiz.cs +++ b/server/AyaNova/biz/ProjectBiz.cs @@ -115,6 +115,11 @@ namespace AyaNova.Biz AddError(ApiErrorCode.NOT_FOUND, "id"); return null; } + if (dbObject.Concurrency != putObject.Concurrency) + { + AddError(ApiErrorCode.CONCURRENCY_CONFLICT); + return null; + } putObject.Tags = TagBiz.NormalizeTags(putObject.Tags); putObject.CustomFields = JsonUtil.CompactJson(putObject.CustomFields); @@ -137,7 +142,7 @@ namespace AyaNova.Biz await SearchIndexAsync(putObject, false); await TagBiz.ProcessUpdateTagsInRepositoryAsync(ct, putObject.Tags, dbObject.Tags); await HandlePotentialNotificationEvent(AyaEvent.Modified, putObject, dbObject); - return dbObject; + return putObject; } //////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/server/AyaNova/biz/PurchaseOrderBiz.cs b/server/AyaNova/biz/PurchaseOrderBiz.cs index 241a4108..d4c52926 100644 --- a/server/AyaNova/biz/PurchaseOrderBiz.cs +++ b/server/AyaNova/biz/PurchaseOrderBiz.cs @@ -101,6 +101,11 @@ namespace AyaNova.Biz AddError(ApiErrorCode.NOT_FOUND, "id"); return null; } + if (dbObject.Concurrency != putObject.Concurrency) + { + AddError(ApiErrorCode.CONCURRENCY_CONFLICT); + return null; + } putObject.Tags = TagBiz.NormalizeTags(putObject.Tags); putObject.CustomFields = JsonUtil.CompactJson(putObject.CustomFields); @@ -123,7 +128,7 @@ namespace AyaNova.Biz await SearchIndexAsync(putObject, false); await TagBiz.ProcessUpdateTagsInRepositoryAsync(ct, putObject.Tags, dbObject.Tags); await HandlePotentialNotificationEvent(AyaEvent.Modified, putObject, dbObject); - return dbObject; + return putObject; } //////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/server/AyaNova/biz/ReminderBiz.cs b/server/AyaNova/biz/ReminderBiz.cs index e1cd3fbd..c3f80f60 100644 --- a/server/AyaNova/biz/ReminderBiz.cs +++ b/server/AyaNova/biz/ReminderBiz.cs @@ -115,6 +115,11 @@ namespace AyaNova.Biz AddError(ApiErrorCode.NOT_FOUND, "id"); return null; } + if (dbObject.Concurrency != putObject.Concurrency) + { + AddError(ApiErrorCode.CONCURRENCY_CONFLICT); + return null; + } putObject.Tags = TagBiz.NormalizeTags(putObject.Tags); putObject.CustomFields = JsonUtil.CompactJson(putObject.CustomFields); @@ -137,7 +142,7 @@ namespace AyaNova.Biz await SearchIndexAsync(putObject, false); await TagBiz.ProcessUpdateTagsInRepositoryAsync(ct, putObject.Tags, dbObject.Tags); await HandlePotentialNotificationEvent(AyaEvent.Modified, putObject, dbObject); - return dbObject; + return putObject; } //////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/server/AyaNova/biz/ReportBiz.cs b/server/AyaNova/biz/ReportBiz.cs index bd7f3474..711fdc69 100644 --- a/server/AyaNova/biz/ReportBiz.cs +++ b/server/AyaNova/biz/ReportBiz.cs @@ -174,6 +174,11 @@ namespace AyaNova.Biz AddError(ApiErrorCode.NOT_FOUND, "id"); return null; } + if (dbObject.Concurrency != putObject.Concurrency) + { + AddError(ApiErrorCode.CONCURRENCY_CONFLICT); + return null; + } await ValidateAsync(putObject, dbObject); @@ -193,7 +198,7 @@ namespace AyaNova.Biz } await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, dbObject.Id, BizType, AyaEvent.Modified), ct); await SearchIndexAsync(putObject, false); - return dbObject; + return putObject; } //////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/server/AyaNova/biz/ReviewBiz.cs b/server/AyaNova/biz/ReviewBiz.cs index a614d629..f3f078a3 100644 --- a/server/AyaNova/biz/ReviewBiz.cs +++ b/server/AyaNova/biz/ReviewBiz.cs @@ -115,6 +115,11 @@ namespace AyaNova.Biz AddError(ApiErrorCode.NOT_FOUND, "id"); return null; } + if (dbObject.Concurrency != putObject.Concurrency) + { + AddError(ApiErrorCode.CONCURRENCY_CONFLICT); + return null; + } putObject.Tags = TagBiz.NormalizeTags(putObject.Tags); putObject.CustomFields = JsonUtil.CompactJson(putObject.CustomFields); @@ -137,7 +142,7 @@ namespace AyaNova.Biz await SearchIndexAsync(putObject, false); await TagBiz.ProcessUpdateTagsInRepositoryAsync(ct, putObject.Tags, dbObject.Tags); await HandlePotentialNotificationEvent(AyaEvent.Modified, putObject, dbObject); - return dbObject; + return putObject; } //////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/server/AyaNova/biz/ServiceRateBiz.cs b/server/AyaNova/biz/ServiceRateBiz.cs index 5e184573..e702c9f8 100644 --- a/server/AyaNova/biz/ServiceRateBiz.cs +++ b/server/AyaNova/biz/ServiceRateBiz.cs @@ -115,6 +115,11 @@ namespace AyaNova.Biz AddError(ApiErrorCode.NOT_FOUND, "id"); return null; } + if (dbObject.Concurrency != putObject.Concurrency) + { + AddError(ApiErrorCode.CONCURRENCY_CONFLICT); + return null; + } putObject.Tags = TagBiz.NormalizeTags(putObject.Tags); putObject.CustomFields = JsonUtil.CompactJson(putObject.CustomFields); @@ -137,7 +142,7 @@ namespace AyaNova.Biz await SearchIndexAsync(putObject, false); await TagBiz.ProcessUpdateTagsInRepositoryAsync(ct, putObject.Tags, dbObject.Tags); await HandlePotentialNotificationEvent(AyaEvent.Modified, putObject, dbObject); - return dbObject; + return putObject; } //////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/server/AyaNova/biz/TaxCodeBiz.cs b/server/AyaNova/biz/TaxCodeBiz.cs index 5b07b3f7..25e66a96 100644 --- a/server/AyaNova/biz/TaxCodeBiz.cs +++ b/server/AyaNova/biz/TaxCodeBiz.cs @@ -115,6 +115,11 @@ namespace AyaNova.Biz AddError(ApiErrorCode.NOT_FOUND, "id"); return null; } + if (dbObject.Concurrency != putObject.Concurrency) + { + AddError(ApiErrorCode.CONCURRENCY_CONFLICT); + return null; + } putObject.Tags = TagBiz.NormalizeTags(putObject.Tags); putObject.CustomFields = JsonUtil.CompactJson(putObject.CustomFields); @@ -137,7 +142,7 @@ namespace AyaNova.Biz await SearchIndexAsync(putObject, false); await TagBiz.ProcessUpdateTagsInRepositoryAsync(ct, putObject.Tags, dbObject.Tags); await HandlePotentialNotificationEvent(AyaEvent.Modified, putObject, dbObject); - return dbObject; + return putObject; } //////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/server/AyaNova/biz/TranslationBiz.cs b/server/AyaNova/biz/TranslationBiz.cs index 5198e058..0acf5d17 100644 --- a/server/AyaNova/biz/TranslationBiz.cs +++ b/server/AyaNova/biz/TranslationBiz.cs @@ -44,6 +44,7 @@ namespace AyaNova.Biz // internal async Task PutAsync(Translation putObject) { + //todo: update to use new PUT methodology? Translation dbObject = await ct.Translation.Include(z => z.TranslationItems).SingleOrDefaultAsync(z => z.Id == putObject.Id); if (dbObject == null) { diff --git a/server/AyaNova/biz/TravelRateBiz.cs b/server/AyaNova/biz/TravelRateBiz.cs index 2b701119..2db0fe8a 100644 --- a/server/AyaNova/biz/TravelRateBiz.cs +++ b/server/AyaNova/biz/TravelRateBiz.cs @@ -115,6 +115,11 @@ namespace AyaNova.Biz AddError(ApiErrorCode.NOT_FOUND, "id"); return null; } + if (dbObject.Concurrency != putObject.Concurrency) + { + AddError(ApiErrorCode.CONCURRENCY_CONFLICT); + return null; + } putObject.Tags = TagBiz.NormalizeTags(putObject.Tags); putObject.CustomFields = JsonUtil.CompactJson(putObject.CustomFields); @@ -137,7 +142,7 @@ namespace AyaNova.Biz await SearchIndexAsync(putObject, false); await TagBiz.ProcessUpdateTagsInRepositoryAsync(ct, putObject.Tags, dbObject.Tags); await HandlePotentialNotificationEvent(AyaEvent.Modified, putObject, dbObject); - return dbObject; + return putObject; } //////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/server/AyaNova/biz/UnitBiz.cs b/server/AyaNova/biz/UnitBiz.cs index 09348fc8..040aa480 100644 --- a/server/AyaNova/biz/UnitBiz.cs +++ b/server/AyaNova/biz/UnitBiz.cs @@ -115,6 +115,11 @@ namespace AyaNova.Biz AddError(ApiErrorCode.NOT_FOUND, "id"); return null; } + if (dbObject.Concurrency != putObject.Concurrency) + { + AddError(ApiErrorCode.CONCURRENCY_CONFLICT); + return null; + } putObject.Tags = TagBiz.NormalizeTags(putObject.Tags); putObject.CustomFields = JsonUtil.CompactJson(putObject.CustomFields); @@ -137,7 +142,7 @@ namespace AyaNova.Biz await SearchIndexAsync(putObject, false); await TagBiz.ProcessUpdateTagsInRepositoryAsync(ct, putObject.Tags, dbObject.Tags); await HandlePotentialNotificationEvent(AyaEvent.Modified, putObject, dbObject); - return dbObject; + return putObject; } //////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/server/AyaNova/biz/UnitModelBiz.cs b/server/AyaNova/biz/UnitModelBiz.cs index ab0dae85..d6428d04 100644 --- a/server/AyaNova/biz/UnitModelBiz.cs +++ b/server/AyaNova/biz/UnitModelBiz.cs @@ -116,6 +116,11 @@ namespace AyaNova.Biz AddError(ApiErrorCode.NOT_FOUND, "id"); return null; } + if (dbObject.Concurrency != putObject.Concurrency) + { + AddError(ApiErrorCode.CONCURRENCY_CONFLICT); + return null; + } putObject.Tags = TagBiz.NormalizeTags(putObject.Tags); putObject.CustomFields = JsonUtil.CompactJson(putObject.CustomFields); @@ -149,7 +154,7 @@ namespace AyaNova.Biz await SearchIndexAsync(putObject, false); await TagBiz.ProcessUpdateTagsInRepositoryAsync(ct, putObject.Tags, dbObject.Tags); await HandlePotentialNotificationEvent(AyaEvent.Modified, putObject, dbObject); - return dbObject; + return putObject; } //////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/server/AyaNova/biz/UserBiz.cs b/server/AyaNova/biz/UserBiz.cs index 6363d0e2..2e429081 100644 --- a/server/AyaNova/biz/UserBiz.cs +++ b/server/AyaNova/biz/UserBiz.cs @@ -359,6 +359,7 @@ namespace AyaNova.Biz // internal async Task PutAsync(User putObject) { + //todo: update to use the new PUT methodology var dbObject = await GetAsync(putObject.Id, false); if (dbObject == null) { diff --git a/server/AyaNova/biz/UserOptionsBiz.cs b/server/AyaNova/biz/UserOptionsBiz.cs index 2a0d5366..0451bebe 100644 --- a/server/AyaNova/biz/UserOptionsBiz.cs +++ b/server/AyaNova/biz/UserOptionsBiz.cs @@ -40,6 +40,7 @@ namespace AyaNova.Biz //put internal async Task PutAsync(UserOptions dbObject, UserOptions inObj) { + //todo: update to use the new PUT methodology? //if it's not the user's own options then we need to check it just as for User / Contact objects if (dbObject.Id != UserId) { diff --git a/server/AyaNova/biz/VendorBiz.cs b/server/AyaNova/biz/VendorBiz.cs index f147f625..7b46dec2 100644 --- a/server/AyaNova/biz/VendorBiz.cs +++ b/server/AyaNova/biz/VendorBiz.cs @@ -115,6 +115,11 @@ namespace AyaNova.Biz AddError(ApiErrorCode.NOT_FOUND, "id"); return null; } + if (dbObject.Concurrency != putObject.Concurrency) + { + AddError(ApiErrorCode.CONCURRENCY_CONFLICT); + return null; + } putObject.Tags = TagBiz.NormalizeTags(putObject.Tags); putObject.CustomFields = JsonUtil.CompactJson(putObject.CustomFields); @@ -137,7 +142,7 @@ namespace AyaNova.Biz await SearchIndexAsync(putObject, false); await TagBiz.ProcessUpdateTagsInRepositoryAsync(ct, putObject.Tags, dbObject.Tags); await HandlePotentialNotificationEvent(AyaEvent.Modified, putObject, dbObject); - return dbObject; + return putObject; } ////////////////////////////////////////////////////////////////////////////////////////////////