From 49bd0d2d87c24645f8feee9bce92ee10eb9c87ab Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Thu, 5 Aug 2021 23:14:12 +0000 Subject: [PATCH] Removed superfluous try catch throw pattern --- server/AyaNova/biz/ContractBiz.cs | 51 +- server/AyaNova/biz/CustomerBiz.cs | 108 +- server/AyaNova/biz/CustomerNoteBiz.cs | 46 +- .../AyaNova/biz/CustomerServiceRequestBiz.cs | 47 +- server/AyaNova/biz/HeadOfficeBiz.cs | 77 +- server/AyaNova/biz/LoanUnitBiz.cs | 49 +- server/AyaNova/biz/MemoBiz.cs | 51 +- server/AyaNova/biz/NotifySubscriptionBiz.cs | 56 +- server/AyaNova/biz/PMBiz.cs | 487 ++--- server/AyaNova/biz/PartAssemblyBiz.cs | 47 +- server/AyaNova/biz/PartBiz.cs | 47 +- server/AyaNova/biz/PartInventoryBiz.cs | 99 +- server/AyaNova/biz/PartWarehouseBiz.cs | 42 +- server/AyaNova/biz/ProjectBiz.cs | 43 +- server/AyaNova/biz/PurchaseOrderBiz.cs | 49 +- server/AyaNova/biz/QuoteBiz.cs | 517 ++--- server/AyaNova/biz/QuoteStatusBiz.cs | 40 +- server/AyaNova/biz/ReminderBiz.cs | 47 +- server/AyaNova/biz/ReportBiz.cs | 40 +- server/AyaNova/biz/ReviewBiz.cs | 46 +- server/AyaNova/biz/ServiceRateBiz.cs | 46 +- server/AyaNova/biz/TaskGroupBiz.cs | 45 +- server/AyaNova/biz/TaxCodeBiz.cs | 46 +- server/AyaNova/biz/TravelRateBiz.cs | 48 +- server/AyaNova/biz/UnitBiz.cs | 42 +- server/AyaNova/biz/UnitModelBiz.cs | 44 +- server/AyaNova/biz/UserBiz.cs | 98 +- server/AyaNova/biz/VendorBiz.cs | 38 +- server/AyaNova/biz/WidgetBiz.cs | 48 +- server/AyaNova/biz/WorkOrderBiz.cs | 419 ++-- .../AyaNova/biz/WorkOrderItemPriorityBiz.cs | 38 +- server/AyaNova/biz/WorkOrderItemStatusBiz.cs | 38 +- server/AyaNova/biz/WorkOrderStatusBiz.cs | 38 +- server/AyaNova/util/Seeder.cs | 1888 ++++++++--------- server/AyaNova/util/TaskUtil.cs | 3 +- 35 files changed, 2184 insertions(+), 2684 deletions(-) diff --git a/server/AyaNova/biz/ContractBiz.cs b/server/AyaNova/biz/ContractBiz.cs index a5c79e35..5321a6b0 100644 --- a/server/AyaNova/biz/ContractBiz.cs +++ b/server/AyaNova/biz/ContractBiz.cs @@ -224,35 +224,26 @@ MULTIPLE discount / markup ITEMS { using (var transaction = await ct.Database.BeginTransactionAsync()) { - try + Contract dbObject = await GetAsync(id, false); + if (dbObject == null) { - Contract dbObject = await GetAsync(id, false); - if (dbObject == null) - { - AddError(ApiErrorCode.NOT_FOUND); - return false; - } - await ValidateCanDeleteAsync(dbObject); - if (HasErrors) - return false; - if (HasErrors) - return false; - ct.Contract.Remove(dbObject); - await ct.SaveChangesAsync(); - - - await EventLogProcessor.DeleteObjectLogAsync(UserId, BizType, dbObject.Id, dbObject.Name, ct); - await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, BizType, ct); - await TagBiz.ProcessDeleteTagsInRepositoryAsync(ct, dbObject.Tags); - await FileUtil.DeleteAttachmentsForObjectAsync(BizType, dbObject.Id, ct); - await transaction.CommitAsync(); - await HandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); - } - catch - { - - throw; + AddError(ApiErrorCode.NOT_FOUND); + return false; } + await ValidateCanDeleteAsync(dbObject); + if (HasErrors) + return false; + if (HasErrors) + return false; + ct.Contract.Remove(dbObject); + await ct.SaveChangesAsync(); + + await EventLogProcessor.DeleteObjectLogAsync(UserId, BizType, dbObject.Id, dbObject.Name, ct); + await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, BizType, ct); + await TagBiz.ProcessDeleteTagsInRepositoryAsync(ct, dbObject.Tags); + await FileUtil.DeleteAttachmentsForObjectAsync(BizType, dbObject.Id, ct); + await transaction.CommitAsync(); + await HandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); return true; } } @@ -353,7 +344,7 @@ MULTIPLE discount / markup ITEMS //SERVICE RATES if (proposedObj.ContractServiceRateOverrideItems.Count > 0) { - // List allTags = new List(); + // List allTags = new List(); //check for overlapping dupes //[NO DON"T CHECK FOR DUPES, OR AT LEAST NOT LIKE THIS, REMOVING FOR NOW] //Not sure what the dupe intent was but it should be entirely duped, not just one tag in common as with this @@ -389,7 +380,7 @@ MULTIPLE discount / markup ITEMS //TRAVEL RATES if (proposedObj.ContractTravelRateOverrideItems.Count > 0) { - for (int i = 0; i < proposedObj.ContractTravelRateOverrideItems.Count; i++) + for (int i = 0; i < proposedObj.ContractTravelRateOverrideItems.Count; i++) { var item = proposedObj.ContractTravelRateOverrideItems[i]; if (item.Tags.Count < 1) @@ -673,7 +664,7 @@ MULTIPLE discount / markup ITEMS }//end of process notifications - + diff --git a/server/AyaNova/biz/CustomerBiz.cs b/server/AyaNova/biz/CustomerBiz.cs index f63af520..6f135174 100644 --- a/server/AyaNova/biz/CustomerBiz.cs +++ b/server/AyaNova/biz/CustomerBiz.cs @@ -152,67 +152,59 @@ namespace AyaNova.Biz { using (var transaction = await ct.Database.BeginTransactionAsync()) { - try + + Customer dbObject = await GetAsync(id, false); + if (dbObject == null) { - Customer dbObject = await GetAsync(id, false); - if (dbObject == null) - { - AddError(ApiErrorCode.NOT_FOUND); - return false; - } - await ValidateCanDeleteAsync(dbObject); - if (HasErrors) - return false; - - - //DELETE DIRECT CHILD OBJECTS - //(note: the convention is to allow deletion of children created *in* the same UI area so this will delete contacts, customer notes, but not workorders of this customer for example) - - { - var ContactIds = await ct.User.AsNoTracking().Where(z => z.CustomerId == id).Select(z => z.Id).ToListAsync(); - if (ContactIds.Count() > 0) - { - UserBiz b = new UserBiz(ct, UserId, UserTranslationId, CurrentUserRoles); - foreach (long ItemId in ContactIds) - if (!await b.DeleteAsync(ItemId, transaction)) - { - AddError(ApiErrorCode.CHILD_OBJECT_ERROR, null, $"CustomerContact [{ItemId}]: {b.GetErrorsAsString()}"); - return false; - } - } - } - { - var CustomerNoteIds = await ct.CustomerNote.AsNoTracking().Where(z => z.CustomerId == id).Select(z => z.Id).ToListAsync(); - if (CustomerNoteIds.Count() > 0) - { - CustomerNoteBiz b = new CustomerNoteBiz(ct, UserId, UserTranslationId, CurrentUserRoles); - foreach (long ItemId in CustomerNoteIds) - if (!await b.DeleteAsync(ItemId, transaction)) - { - AddError(ApiErrorCode.CHILD_OBJECT_ERROR, null, $"CustomerNote [{ItemId}]: {b.GetErrorsAsString()}"); - return false; - } - } - } - - ct.Customer.Remove(dbObject); - await ct.SaveChangesAsync(); - - //Log event - await EventLogProcessor.DeleteObjectLogAsync(UserId, BizType, dbObject.Id, dbObject.Name, ct); - await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, BizType, ct); - await TagBiz.ProcessDeleteTagsInRepositoryAsync(ct, dbObject.Tags); - await FileUtil.DeleteAttachmentsForObjectAsync(BizType, dbObject.Id, ct); - await transaction.CommitAsync(); - await HandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); + AddError(ApiErrorCode.NOT_FOUND); + return false; } - catch + await ValidateCanDeleteAsync(dbObject); + if (HasErrors) + return false; + + + //DELETE DIRECT CHILD OBJECTS + //(note: the convention is to allow deletion of children created *in* the same UI area so this will delete contacts, customer notes, but not workorders of this customer for example) + { - //NOTE: no need to rollback the transaction, it will auto-rollback if not committed and it is disposed when it goes out of scope either way - - - throw; + var ContactIds = await ct.User.AsNoTracking().Where(z => z.CustomerId == id).Select(z => z.Id).ToListAsync(); + if (ContactIds.Count() > 0) + { + UserBiz b = new UserBiz(ct, UserId, UserTranslationId, CurrentUserRoles); + foreach (long ItemId in ContactIds) + if (!await b.DeleteAsync(ItemId, transaction)) + { + AddError(ApiErrorCode.CHILD_OBJECT_ERROR, null, $"CustomerContact [{ItemId}]: {b.GetErrorsAsString()}"); + return false; + } + } } + { + var CustomerNoteIds = await ct.CustomerNote.AsNoTracking().Where(z => z.CustomerId == id).Select(z => z.Id).ToListAsync(); + if (CustomerNoteIds.Count() > 0) + { + CustomerNoteBiz b = new CustomerNoteBiz(ct, UserId, UserTranslationId, CurrentUserRoles); + foreach (long ItemId in CustomerNoteIds) + if (!await b.DeleteAsync(ItemId, transaction)) + { + AddError(ApiErrorCode.CHILD_OBJECT_ERROR, null, $"CustomerNote [{ItemId}]: {b.GetErrorsAsString()}"); + return false; + } + } + } + + ct.Customer.Remove(dbObject); + await ct.SaveChangesAsync(); + + //Log event + await EventLogProcessor.DeleteObjectLogAsync(UserId, BizType, dbObject.Id, dbObject.Name, ct); + await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, BizType, ct); + await TagBiz.ProcessDeleteTagsInRepositoryAsync(ct, dbObject.Tags); + await FileUtil.DeleteAttachmentsForObjectAsync(BizType, dbObject.Id, ct); + await transaction.CommitAsync(); + await HandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); + return true; } } @@ -377,7 +369,7 @@ namespace AyaNova.Biz var orderedList = from id in batch join z in batchResults on id equals z.Id select z; - + foreach (Customer w in orderedList) { await PopulateVizFields(w); diff --git a/server/AyaNova/biz/CustomerNoteBiz.cs b/server/AyaNova/biz/CustomerNoteBiz.cs index 7359b3a6..25fd0fba 100644 --- a/server/AyaNova/biz/CustomerNoteBiz.cs +++ b/server/AyaNova/biz/CustomerNoteBiz.cs @@ -119,35 +119,29 @@ namespace AyaNova.Biz Microsoft.EntityFrameworkCore.Storage.IDbContextTransaction transaction = null; if (parentTransaction == null) transaction = await ct.Database.BeginTransactionAsync(); - try + + CustomerNote dbObject = await GetAsync(id, false); + if (dbObject == null) { - CustomerNote dbObject = await GetAsync(id, false); - if (dbObject == null) - { - AddError(ApiErrorCode.NOT_FOUND); - return false; - } - if (HasErrors) - return false; - if (HasErrors) - return false; - ct.CustomerNote.Remove(dbObject); - await ct.SaveChangesAsync(); + AddError(ApiErrorCode.NOT_FOUND); + return false; + } + if (HasErrors) + return false; + if (HasErrors) + return false; + ct.CustomerNote.Remove(dbObject); + await ct.SaveChangesAsync(); - await EventLogProcessor.DeleteObjectLogAsync(UserId, BizType, dbObject.Id, "CustomerNote", ct); - await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, BizType, ct); - await TagBiz.ProcessDeleteTagsInRepositoryAsync(ct, dbObject.Tags); - await FileUtil.DeleteAttachmentsForObjectAsync(BizType, dbObject.Id, ct); - //all good do the commit if it's ours - if (parentTransaction == null) - await transaction.CommitAsync(); - } - catch - { - - throw; - } + await EventLogProcessor.DeleteObjectLogAsync(UserId, BizType, dbObject.Id, "CustomerNote", ct); + await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, BizType, ct); + await TagBiz.ProcessDeleteTagsInRepositoryAsync(ct, dbObject.Tags); + await FileUtil.DeleteAttachmentsForObjectAsync(BizType, dbObject.Id, ct); + //all good do the commit if it's ours + if (parentTransaction == null) + await transaction.CommitAsync(); + return true; diff --git a/server/AyaNova/biz/CustomerServiceRequestBiz.cs b/server/AyaNova/biz/CustomerServiceRequestBiz.cs index 5bd4cc5b..214758a4 100644 --- a/server/AyaNova/biz/CustomerServiceRequestBiz.cs +++ b/server/AyaNova/biz/CustomerServiceRequestBiz.cs @@ -147,35 +147,28 @@ namespace AyaNova.Biz { using (var transaction = await ct.Database.BeginTransactionAsync()) { - try + CustomerServiceRequest dbObject = await GetAsync(id, false); + if (dbObject == null) { - CustomerServiceRequest dbObject = await GetAsync(id, false); - if (dbObject == null) - { - AddError(ApiErrorCode.NOT_FOUND); - return false; - } - ValidateCanDelete(dbObject); - if (HasErrors) - return false; - if (HasErrors) - return false; - ct.CustomerServiceRequest.Remove(dbObject); - await ct.SaveChangesAsync(); + AddError(ApiErrorCode.NOT_FOUND); + return false; + } + ValidateCanDelete(dbObject); + if (HasErrors) + return false; + if (HasErrors) + return false; + ct.CustomerServiceRequest.Remove(dbObject); + await ct.SaveChangesAsync(); + + //Log event + await EventLogProcessor.DeleteObjectLogAsync(UserId, BizType, dbObject.Id, dbObject.Name, ct); + await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, BizType, ct); + await TagBiz.ProcessDeleteTagsInRepositoryAsync(ct, dbObject.Tags); + await FileUtil.DeleteAttachmentsForObjectAsync(BizType, dbObject.Id, ct); + await transaction.CommitAsync(); + await HandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); - //Log event - await EventLogProcessor.DeleteObjectLogAsync(UserId, BizType, dbObject.Id, dbObject.Name, ct); - await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, BizType, ct); - await TagBiz.ProcessDeleteTagsInRepositoryAsync(ct, dbObject.Tags); - await FileUtil.DeleteAttachmentsForObjectAsync(BizType, dbObject.Id, ct); - await transaction.CommitAsync(); - await HandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); - } - catch - { - - throw; - } return true; } } diff --git a/server/AyaNova/biz/HeadOfficeBiz.cs b/server/AyaNova/biz/HeadOfficeBiz.cs index 5a035047..0dce26a3 100644 --- a/server/AyaNova/biz/HeadOfficeBiz.cs +++ b/server/AyaNova/biz/HeadOfficeBiz.cs @@ -151,52 +151,43 @@ namespace AyaNova.Biz { using (var transaction = await ct.Database.BeginTransactionAsync()) { - try + var dbObject = await GetAsync(id, false); + if (dbObject == null) { - var dbObject = await GetAsync(id, false); - if (dbObject == null) - { - AddError(ApiErrorCode.NOT_FOUND); - return false; - } - await ValidateCanDeleteAsync(dbObject); - if (HasErrors) - return false; - - - //DELETE DIRECT CHILD OBJECTS - { - var ContactIds = await ct.User.AsNoTracking().Where(z => z.HeadOfficeId == id).Select(z => z.Id).ToListAsync(); - if (ContactIds.Count() > 0) - { - UserBiz b = new UserBiz(ct, UserId, UserTranslationId, CurrentUserRoles); - foreach (long ItemId in ContactIds) - if (!await b.DeleteAsync(ItemId, transaction)) - { - AddError(ApiErrorCode.CHILD_OBJECT_ERROR, null, $"HeadOfficeContact [{ItemId}]: {b.GetErrorsAsString()}"); - return false; - } - } - } - - ct.HeadOffice.Remove(dbObject); - await ct.SaveChangesAsync(); - - //Log event - await EventLogProcessor.DeleteObjectLogAsync(UserId, BizType, dbObject.Id, dbObject.Name, ct); - await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, BizType, ct); - await TagBiz.ProcessDeleteTagsInRepositoryAsync(ct, dbObject.Tags); - await FileUtil.DeleteAttachmentsForObjectAsync(BizType, dbObject.Id, ct); - await transaction.CommitAsync(); - await HandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); + AddError(ApiErrorCode.NOT_FOUND); + return false; } - catch + await ValidateCanDeleteAsync(dbObject); + if (HasErrors) + return false; + + + //DELETE DIRECT CHILD OBJECTS { - //NOTE: no need to rollback the transaction, it will auto-rollback if not committed and it is disposed when it goes out of scope either way - - - throw; + var ContactIds = await ct.User.AsNoTracking().Where(z => z.HeadOfficeId == id).Select(z => z.Id).ToListAsync(); + if (ContactIds.Count() > 0) + { + UserBiz b = new UserBiz(ct, UserId, UserTranslationId, CurrentUserRoles); + foreach (long ItemId in ContactIds) + if (!await b.DeleteAsync(ItemId, transaction)) + { + AddError(ApiErrorCode.CHILD_OBJECT_ERROR, null, $"HeadOfficeContact [{ItemId}]: {b.GetErrorsAsString()}"); + return false; + } + } } + + ct.HeadOffice.Remove(dbObject); + await ct.SaveChangesAsync(); + + //Log event + await EventLogProcessor.DeleteObjectLogAsync(UserId, BizType, dbObject.Id, dbObject.Name, ct); + await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, BizType, ct); + await TagBiz.ProcessDeleteTagsInRepositoryAsync(ct, dbObject.Tags); + await FileUtil.DeleteAttachmentsForObjectAsync(BizType, dbObject.Id, ct); + await transaction.CommitAsync(); + await HandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); + return true; } } @@ -503,7 +494,7 @@ namespace AyaNova.Biz //## CREATED / MODIFIED EVENTS if (ayaEvent == AyaEvent.Created || ayaEvent == AyaEvent.Modified) - { + { //# CONTRACT EXPIRY { diff --git a/server/AyaNova/biz/LoanUnitBiz.cs b/server/AyaNova/biz/LoanUnitBiz.cs index afe9662e..6afff842 100644 --- a/server/AyaNova/biz/LoanUnitBiz.cs +++ b/server/AyaNova/biz/LoanUnitBiz.cs @@ -152,35 +152,28 @@ namespace AyaNova.Biz { using (var transaction = await ct.Database.BeginTransactionAsync()) { - try + LoanUnit dbObject = await GetAsync(id, false); + if (dbObject == null) { - LoanUnit dbObject = await GetAsync(id, false); - if (dbObject == null) - { - AddError(ApiErrorCode.NOT_FOUND); - return false; - } - ValidateCanDelete(dbObject); - if (HasErrors) - return false; - if (HasErrors) - return false; - ct.LoanUnit.Remove(dbObject); - await ct.SaveChangesAsync(); + AddError(ApiErrorCode.NOT_FOUND); + return false; + } + ValidateCanDelete(dbObject); + if (HasErrors) + return false; + if (HasErrors) + return false; + ct.LoanUnit.Remove(dbObject); + await ct.SaveChangesAsync(); + + //Log event + await EventLogProcessor.DeleteObjectLogAsync(UserId, BizType, dbObject.Id, dbObject.Name, ct); + await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, BizType, ct); + await TagBiz.ProcessDeleteTagsInRepositoryAsync(ct, dbObject.Tags); + await FileUtil.DeleteAttachmentsForObjectAsync(BizType, dbObject.Id, ct); + await transaction.CommitAsync(); + await HandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); - //Log event - await EventLogProcessor.DeleteObjectLogAsync(UserId, BizType, dbObject.Id, dbObject.Name, ct); - await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, BizType, ct); - await TagBiz.ProcessDeleteTagsInRepositoryAsync(ct, dbObject.Tags); - await FileUtil.DeleteAttachmentsForObjectAsync(BizType, dbObject.Id, ct); - await transaction.CommitAsync(); - await HandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); - } - catch - { - - throw; - } return true; } } @@ -303,7 +296,7 @@ namespace AyaNova.Biz private async Task PopulateVizFields(LoanUnit o) { if (o.UnitId != null) - o.UnitViz = await ct.Unit.AsNoTracking().Where(x => x.Id == o.UnitId).Select(x => x.Serial).FirstOrDefaultAsync(); + o.UnitViz = await ct.Unit.AsNoTracking().Where(x => x.Id == o.UnitId).Select(x => x.Serial).FirstOrDefaultAsync(); } diff --git a/server/AyaNova/biz/MemoBiz.cs b/server/AyaNova/biz/MemoBiz.cs index 1d073ac7..1cabb456 100644 --- a/server/AyaNova/biz/MemoBiz.cs +++ b/server/AyaNova/biz/MemoBiz.cs @@ -44,8 +44,8 @@ namespace AyaNova.Biz internal async Task CreateAsync(Memo newObject) { - newObject.Viewed=false;//default, it's new and not viewed yet but could have been set from a prior forward / reply as it's source - newObject.Replied=false;//'' + newObject.Viewed = false;//default, it's new and not viewed yet but could have been set from a prior forward / reply as it's source + newObject.Replied = false;//'' await ValidateAsync(newObject);//a bit different, can't update a memo so only need to worry about new objects if (HasErrors) return null; @@ -138,35 +138,28 @@ namespace AyaNova.Biz { using (var transaction = await ct.Database.BeginTransactionAsync()) { - try + var dbObject = await GetAsync(id, false); + if (dbObject == null) { - var dbObject = await GetAsync(id, false); - if (dbObject == null) - { - AddError(ApiErrorCode.NOT_FOUND); - return false; - } - ValidateCanDelete(dbObject); - if (HasErrors) - return false; - if (HasErrors) - return false; - ct.Memo.Remove(dbObject); - await ct.SaveChangesAsync(); + AddError(ApiErrorCode.NOT_FOUND); + return false; + } + ValidateCanDelete(dbObject); + if (HasErrors) + return false; + if (HasErrors) + return false; + ct.Memo.Remove(dbObject); + await ct.SaveChangesAsync(); + + //Log event + await EventLogProcessor.DeleteObjectLogAsync(UserId, BizType, dbObject.Id, dbObject.Name, ct); + await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, BizType, ct); + await TagBiz.ProcessDeleteTagsInRepositoryAsync(ct, dbObject.Tags); + + await transaction.CommitAsync(); + await HandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); - //Log event - await EventLogProcessor.DeleteObjectLogAsync(UserId, BizType, dbObject.Id, dbObject.Name, ct); - await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, BizType, ct); - await TagBiz.ProcessDeleteTagsInRepositoryAsync(ct, dbObject.Tags); - - await transaction.CommitAsync(); - await HandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); - } - catch - { - - throw; - } return true; } } diff --git a/server/AyaNova/biz/NotifySubscriptionBiz.cs b/server/AyaNova/biz/NotifySubscriptionBiz.cs index 005ac765..92dfd9e7 100644 --- a/server/AyaNova/biz/NotifySubscriptionBiz.cs +++ b/server/AyaNova/biz/NotifySubscriptionBiz.cs @@ -136,37 +136,30 @@ namespace AyaNova.Biz using (var transaction = await ct.Database.BeginTransactionAsync()) { - try + var dbObject = await GetAsync(id, false); + if (dbObject == null) { - var dbObject = await GetAsync(id, false); - if (dbObject == null) - { - AddError(ApiErrorCode.NOT_FOUND); - return false; - } - //ValidateCanDelete(dbObject); - if (HasErrors) - return false; - if (HasErrors) - return false; - ct.NotifySubscription.Remove(dbObject); - await ct.SaveChangesAsync(); - - //Log event - await EventLogProcessor.DeleteObjectLogAsync(UserId, BizType, dbObject.Id, dbObject.EventType.ToString(), ct); - // await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, BizType, ct); - await TagBiz.ProcessDeleteTagsInRepositoryAsync(ct, dbObject.Tags); - - //TODO: DELETE RELATED RECORDS HERE - - //all good do the commit - await transaction.CommitAsync(); - } - catch - { - - throw; + AddError(ApiErrorCode.NOT_FOUND); + return false; } + //ValidateCanDelete(dbObject); + if (HasErrors) + return false; + if (HasErrors) + return false; + ct.NotifySubscription.Remove(dbObject); + await ct.SaveChangesAsync(); + + //Log event + await EventLogProcessor.DeleteObjectLogAsync(UserId, BizType, dbObject.Id, dbObject.EventType.ToString(), ct); + // await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, BizType, ct); + await TagBiz.ProcessDeleteTagsInRepositoryAsync(ct, dbObject.Tags); + + //TODO: DELETE RELATED RECORDS HERE + + //all good do the commit + await transaction.CommitAsync(); + return true; } } @@ -231,8 +224,9 @@ namespace AyaNova.Biz } } - if(proposedObj.DeliveryMethod==NotifyDeliveryMethod.App && !string.IsNullOrEmpty(proposedObj.DeliveryAddress)){ - AddError(ApiErrorCode.VALIDATION_INVALID_VALUE, "DeliveryAddress","In app delivery should not specify a delivery address"); + if (proposedObj.DeliveryMethod == NotifyDeliveryMethod.App && !string.IsNullOrEmpty(proposedObj.DeliveryAddress)) + { + AddError(ApiErrorCode.VALIDATION_INVALID_VALUE, "DeliveryAddress", "In app delivery should not specify a delivery address"); } diff --git a/server/AyaNova/biz/PMBiz.cs b/server/AyaNova/biz/PMBiz.cs index f06a6240..63be3a13 100644 --- a/server/AyaNova/biz/PMBiz.cs +++ b/server/AyaNova/biz/PMBiz.cs @@ -334,43 +334,34 @@ namespace AyaNova.Biz { using (var transaction = await ct.Database.BeginTransactionAsync()) { - try + PM dbObject = await ct.PM.AsNoTracking().Where(z => z.Id == id).FirstOrDefaultAsync();// PMGetAsync(id, false); + if (dbObject == null) { - PM dbObject = await ct.PM.AsNoTracking().Where(z => z.Id == id).FirstOrDefaultAsync();// PMGetAsync(id, false); - if (dbObject == null) - { - AddError(ApiErrorCode.NOT_FOUND); - return false; - } - await PMValidateCanDelete(dbObject); - if (HasErrors) + AddError(ApiErrorCode.NOT_FOUND); + return false; + } + await PMValidateCanDelete(dbObject); + if (HasErrors) + return false; + + //collect the child id's to delete + var ItemIds = await ct.PMItem.AsNoTracking().Where(z => z.PMId == id).Select(z => z.Id).ToListAsync(); + + //Delete children + foreach (long ItemId in ItemIds) + if (!await ItemDeleteAsync(ItemId, transaction)) return false; - //collect the child id's to delete - var ItemIds = await ct.PMItem.AsNoTracking().Where(z => z.PMId == id).Select(z => z.Id).ToListAsync(); + ct.PM.Remove(dbObject); + await ct.SaveChangesAsync(); - //Delete children - foreach (long ItemId in ItemIds) - if (!await ItemDeleteAsync(ItemId, transaction)) - return false; + await EventLogProcessor.DeleteObjectLogAsync(UserId, dbObject.AyaType, dbObject.Id, dbObject.Serial.ToString(), ct); + await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, dbObject.AyaType, ct); + await TagBiz.ProcessDeleteTagsInRepositoryAsync(ct, dbObject.Tags); + await FileUtil.DeleteAttachmentsForObjectAsync(dbObject.AyaType, dbObject.Id, ct); + await transaction.CommitAsync(); + await PMHandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); - ct.PM.Remove(dbObject); - await ct.SaveChangesAsync(); - - await EventLogProcessor.DeleteObjectLogAsync(UserId, dbObject.AyaType, dbObject.Id, dbObject.Serial.ToString(), ct); - await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, dbObject.AyaType, ct); - await TagBiz.ProcessDeleteTagsInRepositoryAsync(ct, dbObject.Tags); - await FileUtil.DeleteAttachmentsForObjectAsync(dbObject.AyaType, dbObject.Id, ct); - await transaction.CommitAsync(); - await PMHandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); - } - catch - { - //NOTE: no need to rollback the transaction, it will auto-rollback if not committed and it is disposed when it goes out of scope either way - - throw; - - } return true; } } @@ -1196,78 +1187,72 @@ namespace AyaNova.Biz internal async Task ItemDeleteAsync(long id, IDbContextTransaction parentTransaction = null) { var transaction = parentTransaction ?? await ct.Database.BeginTransactionAsync(); - try + + var dbObject = await ct.PMItem.AsNoTracking().SingleOrDefaultAsync(z => z.Id == id); + if (dbObject == null) { - var dbObject = await ct.PMItem.AsNoTracking().SingleOrDefaultAsync(z => z.Id == id); - if (dbObject == null) - { - AddError(ApiErrorCode.NOT_FOUND); + AddError(ApiErrorCode.NOT_FOUND); + return false; + } + ItemValidateCanDelete(dbObject); + if (HasErrors) + return false; + + //collect the child id's to delete + var ExpenseIds = await ct.PMItemExpense.Where(z => z.PMItemId == id).Select(z => z.Id).ToListAsync(); + var LaborIds = await ct.PMItemLabor.Where(z => z.PMItemId == id).Select(z => z.Id).ToListAsync(); + var LoanIds = await ct.PMItemLoan.Where(z => z.PMItemId == id).Select(z => z.Id).ToListAsync(); + var PartIds = await ct.PMItemPart.Where(z => z.PMItemId == id).Select(z => z.Id).ToListAsync(); + + var ScheduledUserIds = await ct.PMItemScheduledUser.Where(z => z.PMItemId == id).Select(z => z.Id).ToListAsync(); + var TaskIds = await ct.PMItemTask.Where(z => z.PMItemId == id).Select(z => z.Id).ToListAsync(); + var TravelIds = await ct.PMItemTravel.Where(z => z.PMItemId == id).Select(z => z.Id).ToListAsync(); + var UnitIds = await ct.PMItemUnit.Where(z => z.PMItemId == id).Select(z => z.Id).ToListAsync(); + var OutsideServiceIds = await ct.PMItemOutsideService.Where(z => z.PMItemId == id).Select(z => z.Id).ToListAsync(); + + //Delete children + foreach (long ItemId in ExpenseIds) + if (!await ExpenseDeleteAsync(ItemId, transaction)) return false; - } - ItemValidateCanDelete(dbObject); - if (HasErrors) + foreach (long ItemId in LaborIds) + if (!await LaborDeleteAsync(ItemId, transaction)) + return false; + foreach (long ItemId in LoanIds) + if (!await LoanDeleteAsync(ItemId, transaction)) + return false; + foreach (long ItemId in PartIds) + if (!await PartDeleteAsync(ItemId, transaction)) + return false; + foreach (long ItemId in ScheduledUserIds) + if (!await ScheduledUserDeleteAsync(ItemId, transaction)) + return false; + foreach (long ItemId in TaskIds) + if (!await TaskDeleteAsync(ItemId, transaction)) + return false; + foreach (long ItemId in TravelIds) + if (!await TravelDeleteAsync(ItemId, transaction)) + return false; + foreach (long ItemId in UnitIds) + if (!await UnitDeleteAsync(ItemId, transaction)) + return false; + foreach (long ItemId in OutsideServiceIds) + if (!await OutsideServiceDeleteAsync(ItemId, transaction)) return false; - //collect the child id's to delete - var ExpenseIds = await ct.PMItemExpense.Where(z => z.PMItemId == id).Select(z => z.Id).ToListAsync(); - var LaborIds = await ct.PMItemLabor.Where(z => z.PMItemId == id).Select(z => z.Id).ToListAsync(); - var LoanIds = await ct.PMItemLoan.Where(z => z.PMItemId == id).Select(z => z.Id).ToListAsync(); - var PartIds = await ct.PMItemPart.Where(z => z.PMItemId == id).Select(z => z.Id).ToListAsync(); + ct.PMItem.Remove(dbObject); + await ct.SaveChangesAsync(); - var ScheduledUserIds = await ct.PMItemScheduledUser.Where(z => z.PMItemId == id).Select(z => z.Id).ToListAsync(); - var TaskIds = await ct.PMItemTask.Where(z => z.PMItemId == id).Select(z => z.Id).ToListAsync(); - var TravelIds = await ct.PMItemTravel.Where(z => z.PMItemId == id).Select(z => z.Id).ToListAsync(); - var UnitIds = await ct.PMItemUnit.Where(z => z.PMItemId == id).Select(z => z.Id).ToListAsync(); - var OutsideServiceIds = await ct.PMItemOutsideService.Where(z => z.PMItemId == id).Select(z => z.Id).ToListAsync(); + //Log event + await EventLogProcessor.DeleteObjectLogAsync(UserId, dbObject.AyaType, dbObject.Id, "wo:" + dbObject.PMId.ToString(), ct);//FIX wo?? Not sure what is best here; revisit + await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, dbObject.AyaType, ct); + await TagBiz.ProcessDeleteTagsInRepositoryAsync(ct, dbObject.Tags); + await FileUtil.DeleteAttachmentsForObjectAsync(dbObject.AyaType, dbObject.Id, ct); - //Delete children - foreach (long ItemId in ExpenseIds) - if (!await ExpenseDeleteAsync(ItemId, transaction)) - return false; - foreach (long ItemId in LaborIds) - if (!await LaborDeleteAsync(ItemId, transaction)) - return false; - foreach (long ItemId in LoanIds) - if (!await LoanDeleteAsync(ItemId, transaction)) - return false; - foreach (long ItemId in PartIds) - if (!await PartDeleteAsync(ItemId, transaction)) - return false; - foreach (long ItemId in ScheduledUserIds) - if (!await ScheduledUserDeleteAsync(ItemId, transaction)) - return false; - foreach (long ItemId in TaskIds) - if (!await TaskDeleteAsync(ItemId, transaction)) - return false; - foreach (long ItemId in TravelIds) - if (!await TravelDeleteAsync(ItemId, transaction)) - return false; - foreach (long ItemId in UnitIds) - if (!await UnitDeleteAsync(ItemId, transaction)) - return false; - foreach (long ItemId in OutsideServiceIds) - if (!await OutsideServiceDeleteAsync(ItemId, transaction)) - return false; + //all good do the commit if it's ours + if (parentTransaction == null) + await transaction.CommitAsync(); + await ItemHandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); - ct.PMItem.Remove(dbObject); - await ct.SaveChangesAsync(); - - //Log event - await EventLogProcessor.DeleteObjectLogAsync(UserId, dbObject.AyaType, dbObject.Id, "wo:" + dbObject.PMId.ToString(), ct);//FIX wo?? Not sure what is best here; revisit - await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, dbObject.AyaType, ct); - await TagBiz.ProcessDeleteTagsInRepositoryAsync(ct, dbObject.Tags); - await FileUtil.DeleteAttachmentsForObjectAsync(dbObject.AyaType, dbObject.Id, ct); - - //all good do the commit if it's ours - if (parentTransaction == null) - await transaction.CommitAsync(); - await ItemHandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); - } - catch - { - - throw; - } return true; } @@ -1520,28 +1505,22 @@ namespace AyaNova.Biz internal async Task ExpenseDeleteAsync(long id, IDbContextTransaction parentTransaction = null) { var transaction = parentTransaction ?? await ct.Database.BeginTransactionAsync(); - try - { - var dbObject = await ExpenseGetAsync(id, false); - ExpenseValidateCanDelete(dbObject); - if (HasErrors) - return false; - ct.PMItemExpense.Remove(dbObject); - await ct.SaveChangesAsync(); - //Log event - await EventLogProcessor.DeleteObjectLogAsync(UserId, dbObject.AyaType, dbObject.Id, "pmitem:" + dbObject.PMItemId.ToString(), ct);//Fix?? - await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, dbObject.AyaType, ct); + var dbObject = await ExpenseGetAsync(id, false); + ExpenseValidateCanDelete(dbObject); + if (HasErrors) + return false; + ct.PMItemExpense.Remove(dbObject); + await ct.SaveChangesAsync(); + + //Log event + await EventLogProcessor.DeleteObjectLogAsync(UserId, dbObject.AyaType, dbObject.Id, "pmitem:" + dbObject.PMItemId.ToString(), ct);//Fix?? + await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, dbObject.AyaType, ct); + + if (parentTransaction == null) + await transaction.CommitAsync(); + await ExpenseHandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); - if (parentTransaction == null) - await transaction.CommitAsync(); - await ExpenseHandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); - } - catch - { - - throw; - } return true; } @@ -1870,28 +1849,22 @@ namespace AyaNova.Biz internal async Task LaborDeleteAsync(long id, IDbContextTransaction parentTransaction = null) { var transaction = parentTransaction ?? await ct.Database.BeginTransactionAsync(); - try - { - var dbObject = await LaborGetAsync(id, false); - LaborValidateCanDelete(dbObject); - if (HasErrors) - return false; - ct.PMItemLabor.Remove(dbObject); - await ct.SaveChangesAsync(); - //Log event - await EventLogProcessor.DeleteObjectLogAsync(UserId, dbObject.AyaType, dbObject.Id, "pmitem:" + dbObject.PMItemId.ToString(), ct);//Fix?? - await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, dbObject.AyaType, ct); + var dbObject = await LaborGetAsync(id, false); + LaborValidateCanDelete(dbObject); + if (HasErrors) + return false; + ct.PMItemLabor.Remove(dbObject); + await ct.SaveChangesAsync(); + + //Log event + await EventLogProcessor.DeleteObjectLogAsync(UserId, dbObject.AyaType, dbObject.Id, "pmitem:" + dbObject.PMItemId.ToString(), ct);//Fix?? + await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, dbObject.AyaType, ct); + + if (parentTransaction == null) + await transaction.CommitAsync(); + await LaborHandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); - if (parentTransaction == null) - await transaction.CommitAsync(); - await LaborHandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); - } - catch - { - - throw; - } return true; } @@ -2251,29 +2224,22 @@ namespace AyaNova.Biz internal async Task LoanDeleteAsync(long id, IDbContextTransaction parentTransaction = null) { var transaction = parentTransaction ?? await ct.Database.BeginTransactionAsync(); - try - { - var dbObject = await LoanGetAsync(id, false); - LoanValidateCanDelete(dbObject); - if (HasErrors) - return false; - ct.PMItemLoan.Remove(dbObject); - await ct.SaveChangesAsync(); + var dbObject = await LoanGetAsync(id, false); + LoanValidateCanDelete(dbObject); + if (HasErrors) + return false; + ct.PMItemLoan.Remove(dbObject); + await ct.SaveChangesAsync(); - //Log event - await EventLogProcessor.DeleteObjectLogAsync(UserId, dbObject.AyaType, dbObject.Id, "pmitem:" + dbObject.PMItemId.ToString(), ct);//Fix?? - await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, dbObject.AyaType, ct); + //Log event + await EventLogProcessor.DeleteObjectLogAsync(UserId, dbObject.AyaType, dbObject.Id, "pmitem:" + dbObject.PMItemId.ToString(), ct);//Fix?? + await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, dbObject.AyaType, ct); - if (parentTransaction == null) - await transaction.CommitAsync(); - await LoanHandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); - } - catch - { - - throw; - } + if (parentTransaction == null) + await transaction.CommitAsync(); + await LoanHandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); + return true; } @@ -2648,28 +2614,22 @@ namespace AyaNova.Biz internal async Task OutsideServiceDeleteAsync(long id, IDbContextTransaction parentTransaction = null) { var transaction = parentTransaction ?? await ct.Database.BeginTransactionAsync(); - try - { - var dbObject = await OutsideServiceGetAsync(id, false); - OutsideServiceValidateCanDelete(dbObject); - if (HasErrors) - return false; - ct.PMItemOutsideService.Remove(dbObject); - await ct.SaveChangesAsync(); - //Log event - await EventLogProcessor.DeleteObjectLogAsync(UserId, dbObject.AyaType, dbObject.Id, "pmitem:" + dbObject.PMItemId.ToString(), ct);//Fix?? - await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, dbObject.AyaType, ct); + var dbObject = await OutsideServiceGetAsync(id, false); + OutsideServiceValidateCanDelete(dbObject); + if (HasErrors) + return false; + ct.PMItemOutsideService.Remove(dbObject); + await ct.SaveChangesAsync(); + + //Log event + await EventLogProcessor.DeleteObjectLogAsync(UserId, dbObject.AyaType, dbObject.Id, "pmitem:" + dbObject.PMItemId.ToString(), ct);//Fix?? + await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, dbObject.AyaType, ct); + + if (parentTransaction == null) + await transaction.CommitAsync(); + await OutsideServiceHandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); - if (parentTransaction == null) - await transaction.CommitAsync(); - await OutsideServiceHandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); - } - catch - { - - throw; - } return true; } @@ -2981,32 +2941,24 @@ namespace AyaNova.Biz internal async Task PartDeleteAsync(long id, IDbContextTransaction parentTransaction = null) { var transaction = parentTransaction ?? await ct.Database.BeginTransactionAsync(); - try + var dbObject = await PartGetAsync(id, false); + PartValidateCanDelete(dbObject); + if (HasErrors) + return false; + await PartBizActionsAsync(AyaEvent.Deleted, null, dbObject, transaction); + ct.PMItemPart.Remove(dbObject); + await ct.SaveChangesAsync(); + if (HasErrors) { - var dbObject = await PartGetAsync(id, false); - PartValidateCanDelete(dbObject); - if (HasErrors) - return false; - await PartBizActionsAsync(AyaEvent.Deleted, null, dbObject, transaction); - ct.PMItemPart.Remove(dbObject); - await ct.SaveChangesAsync(); - if (HasErrors) - { - await transaction.RollbackAsync(); - return false; - } - //Log event - await EventLogProcessor.DeleteObjectLogAsync(UserId, dbObject.AyaType, dbObject.Id, "pmitem:" + dbObject.PMItemId.ToString(), ct);//Fix?? - await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, dbObject.AyaType, ct); - if (parentTransaction == null) - await transaction.CommitAsync(); - await PartHandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); - } - catch - { - - throw; + await transaction.RollbackAsync(); + return false; } + //Log event + await EventLogProcessor.DeleteObjectLogAsync(UserId, dbObject.AyaType, dbObject.Id, "pmitem:" + dbObject.PMItemId.ToString(), ct);//Fix?? + await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, dbObject.AyaType, ct); + if (parentTransaction == null) + await transaction.CommitAsync(); + await PartHandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); return true; } @@ -3399,27 +3351,19 @@ namespace AyaNova.Biz internal async Task ScheduledUserDeleteAsync(long id, IDbContextTransaction parentTransaction = null) { var transaction = parentTransaction ?? await ct.Database.BeginTransactionAsync(); - try - { - var dbObject = await ScheduledUserGetAsync(id, false); - ScheduledUserValidateCanDelete(dbObject); - if (HasErrors) - return false; - ct.PMItemScheduledUser.Remove(dbObject); - await ct.SaveChangesAsync(); + var dbObject = await ScheduledUserGetAsync(id, false); + ScheduledUserValidateCanDelete(dbObject); + if (HasErrors) + return false; + ct.PMItemScheduledUser.Remove(dbObject); + await ct.SaveChangesAsync(); - //Log event - await EventLogProcessor.DeleteObjectLogAsync(UserId, dbObject.AyaType, dbObject.Id, "pmitem:" + dbObject.PMItemId.ToString(), ct);//Fix?? - await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, dbObject.AyaType, ct); - if (parentTransaction == null) - await transaction.CommitAsync(); - await ScheduledUserHandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); - } - catch - { - - throw; - } + //Log event + await EventLogProcessor.DeleteObjectLogAsync(UserId, dbObject.AyaType, dbObject.Id, "pmitem:" + dbObject.PMItemId.ToString(), ct);//Fix?? + await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, dbObject.AyaType, ct); + if (parentTransaction == null) + await transaction.CommitAsync(); + await ScheduledUserHandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); return true; } @@ -3638,28 +3582,20 @@ namespace AyaNova.Biz internal async Task TaskDeleteAsync(long id, IDbContextTransaction parentTransaction = null) { var transaction = parentTransaction ?? await ct.Database.BeginTransactionAsync(); - try - { - var dbObject = await TaskGetAsync(id, false); - TaskValidateCanDelete(dbObject); - if (HasErrors) - return false; - ct.PMItemTask.Remove(dbObject); - await ct.SaveChangesAsync(); + var dbObject = await TaskGetAsync(id, false); + TaskValidateCanDelete(dbObject); + if (HasErrors) + return false; + ct.PMItemTask.Remove(dbObject); + await ct.SaveChangesAsync(); - //Log event - await EventLogProcessor.DeleteObjectLogAsync(UserId, dbObject.AyaType, dbObject.Id, "pmitem:" + dbObject.PMItemId.ToString(), ct);//Fix?? - await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, dbObject.AyaType, ct); + //Log event + await EventLogProcessor.DeleteObjectLogAsync(UserId, dbObject.AyaType, dbObject.Id, "pmitem:" + dbObject.PMItemId.ToString(), ct);//Fix?? + await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, dbObject.AyaType, ct); - if (parentTransaction == null) - await transaction.CommitAsync(); - await TaskHandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); - } - catch - { - - throw; - } + if (parentTransaction == null) + await transaction.CommitAsync(); + await TaskHandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); return true; } @@ -3914,29 +3850,23 @@ namespace AyaNova.Biz internal async Task TravelDeleteAsync(long id, IDbContextTransaction parentTransaction = null) { var transaction = parentTransaction ?? await ct.Database.BeginTransactionAsync(); - try - { - var dbObject = await TravelGetAsync(id, false); - TravelValidateCanDelete(dbObject); - if (HasErrors) - return false; - ct.PMItemTravel.Remove(dbObject); - await ct.SaveChangesAsync(); - //Log event - await EventLogProcessor.DeleteObjectLogAsync(UserId, dbObject.AyaType, dbObject.Id, "pmitem:" + dbObject.PMItemId.ToString(), ct); - await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, dbObject.AyaType, ct); + var dbObject = await TravelGetAsync(id, false); + TravelValidateCanDelete(dbObject); + if (HasErrors) + return false; + ct.PMItemTravel.Remove(dbObject); + await ct.SaveChangesAsync(); + + //Log event + await EventLogProcessor.DeleteObjectLogAsync(UserId, dbObject.AyaType, dbObject.Id, "pmitem:" + dbObject.PMItemId.ToString(), ct); + await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, dbObject.AyaType, ct); - if (parentTransaction == null) - await transaction.CommitAsync(); - await TravelHandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); - } - catch - { - - throw; - } + if (parentTransaction == null) + await transaction.CommitAsync(); + await TravelHandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); + return true; } @@ -4283,27 +4213,20 @@ namespace AyaNova.Biz internal async Task UnitDeleteAsync(long id, IDbContextTransaction parentTransaction = null) { var transaction = parentTransaction ?? await ct.Database.BeginTransactionAsync(); - try - { - var dbObject = await UnitGetAsync(id, false); - UnitValidateCanDelete(dbObject); - if (HasErrors) - return false; - ct.PMItemUnit.Remove(dbObject); - await ct.SaveChangesAsync(); + var dbObject = await UnitGetAsync(id, false); + UnitValidateCanDelete(dbObject); + if (HasErrors) + return false; + ct.PMItemUnit.Remove(dbObject); + await ct.SaveChangesAsync(); + + //Log event + await EventLogProcessor.DeleteObjectLogAsync(UserId, dbObject.AyaType, dbObject.Id, "pmitem:" + dbObject.PMItemId.ToString(), ct);//Fix?? + await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, dbObject.AyaType, ct); + if (parentTransaction == null) + await transaction.CommitAsync(); + await UnitHandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); - //Log event - await EventLogProcessor.DeleteObjectLogAsync(UserId, dbObject.AyaType, dbObject.Id, "pmitem:" + dbObject.PMItemId.ToString(), ct);//Fix?? - await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, dbObject.AyaType, ct); - if (parentTransaction == null) - await transaction.CommitAsync(); - await UnitHandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); - } - catch - { - - throw; - } return true; } @@ -5270,7 +5193,7 @@ namespace AyaNova.Biz } catch { - throw; + thrxxow; } finally { diff --git a/server/AyaNova/biz/PartAssemblyBiz.cs b/server/AyaNova/biz/PartAssemblyBiz.cs index 172f8c1c..4764c447 100644 --- a/server/AyaNova/biz/PartAssemblyBiz.cs +++ b/server/AyaNova/biz/PartAssemblyBiz.cs @@ -175,35 +175,28 @@ namespace AyaNova.Biz { using (var transaction = await ct.Database.BeginTransactionAsync()) { - try + PartAssembly dbObject = await GetAsync(id, false); + if (dbObject == null) { - PartAssembly dbObject = await GetAsync(id, false); - if (dbObject == null) - { - AddError(ApiErrorCode.NOT_FOUND); - return false; - } - ValidateCanDelete(dbObject); - if (HasErrors) - return false; - if (HasErrors) - return false; - ct.PartAssembly.Remove(dbObject); - await ct.SaveChangesAsync(); + AddError(ApiErrorCode.NOT_FOUND); + return false; + } + ValidateCanDelete(dbObject); + if (HasErrors) + return false; + if (HasErrors) + return false; + ct.PartAssembly.Remove(dbObject); + await ct.SaveChangesAsync(); + + //Log event + await EventLogProcessor.DeleteObjectLogAsync(UserId, BizType, dbObject.Id, dbObject.Name, ct); + await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, BizType, ct); + await TagBiz.ProcessDeleteTagsInRepositoryAsync(ct, dbObject.Tags); + await FileUtil.DeleteAttachmentsForObjectAsync(BizType, dbObject.Id, ct); + await transaction.CommitAsync(); + await HandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); - //Log event - await EventLogProcessor.DeleteObjectLogAsync(UserId, BizType, dbObject.Id, dbObject.Name, ct); - await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, BizType, ct); - await TagBiz.ProcessDeleteTagsInRepositoryAsync(ct, dbObject.Tags); - await FileUtil.DeleteAttachmentsForObjectAsync(BizType, dbObject.Id, ct); - await transaction.CommitAsync(); - await HandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); - } - catch - { - - throw; - } return true; } } diff --git a/server/AyaNova/biz/PartBiz.cs b/server/AyaNova/biz/PartBiz.cs index b7768c39..61fe2762 100644 --- a/server/AyaNova/biz/PartBiz.cs +++ b/server/AyaNova/biz/PartBiz.cs @@ -152,35 +152,28 @@ namespace AyaNova.Biz { using (var transaction = await ct.Database.BeginTransactionAsync()) { - try + Part dbObject = await GetAsync(id, false); + if (dbObject == null) { - Part dbObject = await GetAsync(id, false); - if (dbObject == null) - { - AddError(ApiErrorCode.NOT_FOUND); - return false; - } - await ValidateCanDeleteAsync(dbObject); - if (HasErrors) - return false; - if (HasErrors) - return false; - ct.Part.Remove(dbObject); - await ct.SaveChangesAsync(); + AddError(ApiErrorCode.NOT_FOUND); + return false; + } + await ValidateCanDeleteAsync(dbObject); + if (HasErrors) + return false; + if (HasErrors) + return false; + ct.Part.Remove(dbObject); + await ct.SaveChangesAsync(); + + //Log event + await EventLogProcessor.DeleteObjectLogAsync(UserId, BizType, dbObject.Id, dbObject.Name, ct); + await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, BizType, ct); + await TagBiz.ProcessDeleteTagsInRepositoryAsync(ct, dbObject.Tags); + await FileUtil.DeleteAttachmentsForObjectAsync(BizType, dbObject.Id, ct); + await transaction.CommitAsync(); + await HandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); - //Log event - await EventLogProcessor.DeleteObjectLogAsync(UserId, BizType, dbObject.Id, dbObject.Name, ct); - await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, BizType, ct); - await TagBiz.ProcessDeleteTagsInRepositoryAsync(ct, dbObject.Tags); - await FileUtil.DeleteAttachmentsForObjectAsync(BizType, dbObject.Id, ct); - await transaction.CommitAsync(); - await HandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); - } - catch - { - - throw; - } return true; } } diff --git a/server/AyaNova/biz/PartInventoryBiz.cs b/server/AyaNova/biz/PartInventoryBiz.cs index 0cf559cc..37e5638d 100644 --- a/server/AyaNova/biz/PartInventoryBiz.cs +++ b/server/AyaNova/biz/PartInventoryBiz.cs @@ -42,59 +42,6 @@ namespace AyaNova.Biz internal async Task CreateAsync(dtPartInventory newDtObject) { using (var transaction = await ct.Database.BeginTransactionAsync()) - { - try - { - //get the last record if exists (will not if opening balance) - var LastEntry = await ct.PartInventory.OrderByDescending(m => m.EntryDate).FirstOrDefaultAsync(m => m.PartId == newDtObject.PartId && m.PartWarehouseId == newDtObject.PartWarehouseId); - PartInventory newObject = new PartInventory(); - newObject.Description = newDtObject.Description; - newObject.EntryDate = DateTime.UtcNow; - newObject.PartId = newDtObject.PartId; - newObject.PartWarehouseId = newDtObject.PartWarehouseId; - newObject.SourceId = null; - newObject.SourceType = null; - newObject.Quantity = newDtObject.Quantity; - - if (LastEntry != null) - { - newObject.LastEntryDate = LastEntry.EntryDate; - newObject.LastBalance = LastEntry.Balance; - newObject.Balance = LastEntry.Balance + newObject.Quantity; - } - else - { - newObject.Balance = newObject.Quantity; - } - - await ValidateAsync(newObject); - if (HasErrors) - return null; - else - { - await ct.PartInventory.AddAsync(newObject); - await ct.SaveChangesAsync(); - await transaction.CommitAsync(); - await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, newObject.Id, BizType, AyaEvent.Created), ct); - await SearchIndexAsync(newObject, true); - return newObject; - } - } - catch - { - - throw; - } - } - } - - - //////////////////////////////////////////////////////////////////////////////////////////////// - //CREATE (internal version) - // - internal async Task CreateAsync(dtInternalPartInventory newDtObject) - { - try { //get the last record if exists (will not if opening balance) var LastEntry = await ct.PartInventory.OrderByDescending(m => m.EntryDate).FirstOrDefaultAsync(m => m.PartId == newDtObject.PartId && m.PartWarehouseId == newDtObject.PartWarehouseId); @@ -103,8 +50,8 @@ namespace AyaNova.Biz newObject.EntryDate = DateTime.UtcNow; newObject.PartId = newDtObject.PartId; newObject.PartWarehouseId = newDtObject.PartWarehouseId; - newObject.SourceId = newDtObject.SourceId; - newObject.SourceType = newDtObject.SourceType; + newObject.SourceId = null; + newObject.SourceType = null; newObject.Quantity = newDtObject.Quantity; if (LastEntry != null) @@ -125,17 +72,53 @@ namespace AyaNova.Biz { await ct.PartInventory.AddAsync(newObject); await ct.SaveChangesAsync(); + await transaction.CommitAsync(); await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, newObject.Id, BizType, AyaEvent.Created), ct); await SearchIndexAsync(newObject, true); return newObject; } } - catch + } + + + //////////////////////////////////////////////////////////////////////////////////////////////// + //CREATE (internal version) + // + internal async Task CreateAsync(dtInternalPartInventory newDtObject) + { + //get the last record if exists (will not if opening balance) + var LastEntry = await ct.PartInventory.OrderByDescending(m => m.EntryDate).FirstOrDefaultAsync(m => m.PartId == newDtObject.PartId && m.PartWarehouseId == newDtObject.PartWarehouseId); + PartInventory newObject = new PartInventory(); + newObject.Description = newDtObject.Description; + newObject.EntryDate = DateTime.UtcNow; + newObject.PartId = newDtObject.PartId; + newObject.PartWarehouseId = newDtObject.PartWarehouseId; + newObject.SourceId = newDtObject.SourceId; + newObject.SourceType = newDtObject.SourceType; + newObject.Quantity = newDtObject.Quantity; + + if (LastEntry != null) { - - throw; + newObject.LastEntryDate = LastEntry.EntryDate; + newObject.LastBalance = LastEntry.Balance; + newObject.Balance = LastEntry.Balance + newObject.Quantity; + } + else + { + newObject.Balance = newObject.Quantity; } + await ValidateAsync(newObject); + if (HasErrors) + return null; + else + { + await ct.PartInventory.AddAsync(newObject); + await ct.SaveChangesAsync(); + await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, newObject.Id, BizType, AyaEvent.Created), ct); + await SearchIndexAsync(newObject, true); + return newObject; + } } diff --git a/server/AyaNova/biz/PartWarehouseBiz.cs b/server/AyaNova/biz/PartWarehouseBiz.cs index dfae8e76..35684286 100644 --- a/server/AyaNova/biz/PartWarehouseBiz.cs +++ b/server/AyaNova/biz/PartWarehouseBiz.cs @@ -152,33 +152,25 @@ namespace AyaNova.Biz { using (var transaction = await ct.Database.BeginTransactionAsync()) { - try + var dbObject = await GetAsync(id, false); + if (dbObject == null) { - var dbObject = await GetAsync(id, false); - if (dbObject == null) - { - AddError(ApiErrorCode.NOT_FOUND); - return false; - } - await ValidateCanDeleteAsync(dbObject); - if (HasErrors) - return false; - ct.PartWarehouse.Remove(dbObject); - await ct.SaveChangesAsync(); + AddError(ApiErrorCode.NOT_FOUND); + return false; + } + await ValidateCanDeleteAsync(dbObject); + if (HasErrors) + return false; + ct.PartWarehouse.Remove(dbObject); + await ct.SaveChangesAsync(); - //Log event - await EventLogProcessor.DeleteObjectLogAsync(UserId, BizType, dbObject.Id, dbObject.Name, ct); - await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, BizType, ct); - await TagBiz.ProcessDeleteTagsInRepositoryAsync(ct, dbObject.Tags); - await FileUtil.DeleteAttachmentsForObjectAsync(BizType, dbObject.Id, ct); - await transaction.CommitAsync(); - await HandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); - } - catch - { - - throw; - } + //Log event + await EventLogProcessor.DeleteObjectLogAsync(UserId, BizType, dbObject.Id, dbObject.Name, ct); + await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, BizType, ct); + await TagBiz.ProcessDeleteTagsInRepositoryAsync(ct, dbObject.Tags); + await FileUtil.DeleteAttachmentsForObjectAsync(BizType, dbObject.Id, ct); + await transaction.CommitAsync(); + await HandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); return true; } } diff --git a/server/AyaNova/biz/ProjectBiz.cs b/server/AyaNova/biz/ProjectBiz.cs index d0a004a2..b9465b7f 100644 --- a/server/AyaNova/biz/ProjectBiz.cs +++ b/server/AyaNova/biz/ProjectBiz.cs @@ -152,33 +152,26 @@ namespace AyaNova.Biz { using (var transaction = await ct.Database.BeginTransactionAsync()) { - try + var dbObject = await GetAsync(id, false); + if (dbObject == null) { - var dbObject = await GetAsync(id, false); - if (dbObject == null) - { - AddError(ApiErrorCode.NOT_FOUND); - return false; - } - await ValidateCanDeleteAsync(dbObject); - if (HasErrors) - return false; - ct.Project.Remove(dbObject); - await ct.SaveChangesAsync(); + AddError(ApiErrorCode.NOT_FOUND); + return false; + } + await ValidateCanDeleteAsync(dbObject); + if (HasErrors) + return false; + ct.Project.Remove(dbObject); + await ct.SaveChangesAsync(); + + //Log event + await EventLogProcessor.DeleteObjectLogAsync(UserId, BizType, dbObject.Id, dbObject.Name, ct); + await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, BizType, ct); + await TagBiz.ProcessDeleteTagsInRepositoryAsync(ct, dbObject.Tags); + await FileUtil.DeleteAttachmentsForObjectAsync(BizType, dbObject.Id, ct); + await transaction.CommitAsync(); + await HandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); - //Log event - await EventLogProcessor.DeleteObjectLogAsync(UserId, BizType, dbObject.Id, dbObject.Name, ct); - await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, BizType, ct); - await TagBiz.ProcessDeleteTagsInRepositoryAsync(ct, dbObject.Tags); - await FileUtil.DeleteAttachmentsForObjectAsync(BizType, dbObject.Id, ct); - await transaction.CommitAsync(); - await HandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); - } - catch - { - - throw; - } return true; } } diff --git a/server/AyaNova/biz/PurchaseOrderBiz.cs b/server/AyaNova/biz/PurchaseOrderBiz.cs index 554dae8c..1f857728 100644 --- a/server/AyaNova/biz/PurchaseOrderBiz.cs +++ b/server/AyaNova/biz/PurchaseOrderBiz.cs @@ -121,7 +121,7 @@ namespace AyaNova.Biz { var ret = await ct.PurchaseOrder.Include(z => z.Items).AsNoTracking().SingleOrDefaultAsync(z => z.Id == id); if (populateDisplayFields) - await SetDisplayFields(ret,false); + await SetDisplayFields(ret, false); if (logTheGetEvent && ret != null) await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, id, BizType, AyaEvent.Retrieved), ct); @@ -323,37 +323,30 @@ namespace AyaNova.Biz { using (var transaction = await ct.Database.BeginTransactionAsync()) { - try + var dbObject = await GetAsync(id, false, false); + if (dbObject == null) { - var dbObject = await GetAsync(id, false, false); - if (dbObject == null) - { - AddError(ApiErrorCode.NOT_FOUND); - return false; - } - await ValidateCanDeleteAsync(dbObject); - if (HasErrors) - return false; - ct.PurchaseOrder.Remove(dbObject); - await BizActionsAsync(AyaEvent.Deleted, null, dbObject, transaction); - if (HasErrors) - { - await transaction.RollbackAsync(); - return false; - } - await ct.SaveChangesAsync(); - await transaction.CommitAsync(); - await EventLogProcessor.DeleteObjectLogAsync(UserId, BizType, dbObject.Id, dbObject.Serial.ToString(), ct); - await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, BizType, ct); - await TagBiz.ProcessDeleteTagsInRepositoryAsync(ct, dbObject.Tags); - await FileUtil.DeleteAttachmentsForObjectAsync(BizType, dbObject.Id, ct); - await HandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); + AddError(ApiErrorCode.NOT_FOUND); + return false; } - catch + await ValidateCanDeleteAsync(dbObject); + if (HasErrors) + return false; + ct.PurchaseOrder.Remove(dbObject); + await BizActionsAsync(AyaEvent.Deleted, null, dbObject, transaction); + if (HasErrors) { - - throw; + await transaction.RollbackAsync(); + return false; } + await ct.SaveChangesAsync(); + await transaction.CommitAsync(); + await EventLogProcessor.DeleteObjectLogAsync(UserId, BizType, dbObject.Id, dbObject.Serial.ToString(), ct); + await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, BizType, ct); + await TagBiz.ProcessDeleteTagsInRepositoryAsync(ct, dbObject.Tags); + await FileUtil.DeleteAttachmentsForObjectAsync(BizType, dbObject.Id, ct); + await HandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); + return true; } } diff --git a/server/AyaNova/biz/QuoteBiz.cs b/server/AyaNova/biz/QuoteBiz.cs index 7e0aad58..02001b19 100644 --- a/server/AyaNova/biz/QuoteBiz.cs +++ b/server/AyaNova/biz/QuoteBiz.cs @@ -342,47 +342,38 @@ namespace AyaNova.Biz { using (var transaction = await ct.Database.BeginTransactionAsync()) { - try + Quote dbObject = await ct.Quote.AsNoTracking().Where(z => z.Id == id).FirstOrDefaultAsync();// QuoteGetAsync(id, false); + if (dbObject == null) { - Quote dbObject = await ct.Quote.AsNoTracking().Where(z => z.Id == id).FirstOrDefaultAsync();// QuoteGetAsync(id, false); - if (dbObject == null) - { - AddError(ApiErrorCode.NOT_FOUND); - return false; - } - await QuoteValidateCanDelete(dbObject); - if (HasErrors) - return false; - - //States collection - if (!await StateDeleteAsync(id, transaction)) - return false; - - //collect the child id's to delete - var ItemIds = await ct.QuoteItem.AsNoTracking().Where(z => z.QuoteId == id).Select(z => z.Id).ToListAsync(); - - //Delete children - foreach (long ItemId in ItemIds) - if (!await ItemDeleteAsync(ItemId, transaction)) - return false; - - ct.Quote.Remove(dbObject); - await ct.SaveChangesAsync(); - - await EventLogProcessor.DeleteObjectLogAsync(UserId, dbObject.AyaType, dbObject.Id, dbObject.Serial.ToString(), ct); - await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, dbObject.AyaType, ct); - await TagBiz.ProcessDeleteTagsInRepositoryAsync(ct, dbObject.Tags); - await FileUtil.DeleteAttachmentsForObjectAsync(dbObject.AyaType, dbObject.Id, ct); - await transaction.CommitAsync(); - await QuoteHandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); + AddError(ApiErrorCode.NOT_FOUND); + return false; } - catch - { - //NOTE: no need to rollback the transaction, it will auto-rollback if not committed and it is disposed when it goes out of scope either way - - throw; + await QuoteValidateCanDelete(dbObject); + if (HasErrors) + return false; + + //States collection + if (!await StateDeleteAsync(id, transaction)) + return false; + + //collect the child id's to delete + var ItemIds = await ct.QuoteItem.AsNoTracking().Where(z => z.QuoteId == id).Select(z => z.Id).ToListAsync(); + + //Delete children + foreach (long ItemId in ItemIds) + if (!await ItemDeleteAsync(ItemId, transaction)) + return false; + + ct.Quote.Remove(dbObject); + await ct.SaveChangesAsync(); + + await EventLogProcessor.DeleteObjectLogAsync(UserId, dbObject.AyaType, dbObject.Id, dbObject.Serial.ToString(), ct); + await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, dbObject.AyaType, ct); + await TagBiz.ProcessDeleteTagsInRepositoryAsync(ct, dbObject.Tags); + await FileUtil.DeleteAttachmentsForObjectAsync(dbObject.AyaType, dbObject.Id, ct); + await transaction.CommitAsync(); + await QuoteHandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); - } return true; } } @@ -1027,24 +1018,15 @@ namespace AyaNova.Biz // (note: this would only ever be called when a quote is deleted, there is no direct delete) internal async Task StateDeleteAsync(long workOrderId, IDbContextTransaction parentTransaction) { - try + var stateList = await ct.QuoteState.AsNoTracking().Where(z => z.QuoteId == workOrderId).ToListAsync(); + foreach (var wostate in stateList) { - var stateList = await ct.QuoteState.AsNoTracking().Where(z => z.QuoteId == workOrderId).ToListAsync(); - - foreach (var wostate in stateList) - { - ct.QuoteState.Remove(wostate); - await ct.SaveChangesAsync(); - //no need to call this because it's only going to run this method if the quote is deleted and - //via process standard notifciation events for quote deletion will remove any state delayed notifications anyway so - //nothing to call or do here related to notification - // await StateHandlePotentialNotificationEvent(AyaEvent.Deleted, wostate); - } - } - catch - { - - throw; + ct.QuoteState.Remove(wostate); + await ct.SaveChangesAsync(); + //no need to call this because it's only going to run this method if the quote is deleted and + //via process standard notifciation events for quote deletion will remove any state delayed notifications anyway so + //nothing to call or do here related to notification + // await StateHandlePotentialNotificationEvent(AyaEvent.Deleted, wostate); } return true; } @@ -1409,78 +1391,71 @@ namespace AyaNova.Biz internal async Task ItemDeleteAsync(long id, IDbContextTransaction parentTransaction = null) { var transaction = parentTransaction ?? await ct.Database.BeginTransactionAsync(); - try + var dbObject = await ct.QuoteItem.AsNoTracking().SingleOrDefaultAsync(z => z.Id == id); + if (dbObject == null) { - var dbObject = await ct.QuoteItem.AsNoTracking().SingleOrDefaultAsync(z => z.Id == id); - if (dbObject == null) - { - AddError(ApiErrorCode.NOT_FOUND); + AddError(ApiErrorCode.NOT_FOUND); + return false; + } + ItemValidateCanDelete(dbObject); + if (HasErrors) + return false; + + //collect the child id's to delete + var ExpenseIds = await ct.QuoteItemExpense.Where(z => z.QuoteItemId == id).Select(z => z.Id).ToListAsync(); + var LaborIds = await ct.QuoteItemLabor.Where(z => z.QuoteItemId == id).Select(z => z.Id).ToListAsync(); + var LoanIds = await ct.QuoteItemLoan.Where(z => z.QuoteItemId == id).Select(z => z.Id).ToListAsync(); + var PartIds = await ct.QuoteItemPart.Where(z => z.QuoteItemId == id).Select(z => z.Id).ToListAsync(); + + var ScheduledUserIds = await ct.QuoteItemScheduledUser.Where(z => z.QuoteItemId == id).Select(z => z.Id).ToListAsync(); + var TaskIds = await ct.QuoteItemTask.Where(z => z.QuoteItemId == id).Select(z => z.Id).ToListAsync(); + var TravelIds = await ct.QuoteItemTravel.Where(z => z.QuoteItemId == id).Select(z => z.Id).ToListAsync(); + var UnitIds = await ct.QuoteItemUnit.Where(z => z.QuoteItemId == id).Select(z => z.Id).ToListAsync(); + var OutsideServiceIds = await ct.QuoteItemOutsideService.Where(z => z.QuoteItemId == id).Select(z => z.Id).ToListAsync(); + + //Delete children + foreach (long ItemId in ExpenseIds) + if (!await ExpenseDeleteAsync(ItemId, transaction)) return false; - } - ItemValidateCanDelete(dbObject); - if (HasErrors) + foreach (long ItemId in LaborIds) + if (!await LaborDeleteAsync(ItemId, transaction)) + return false; + foreach (long ItemId in LoanIds) + if (!await LoanDeleteAsync(ItemId, transaction)) + return false; + foreach (long ItemId in PartIds) + if (!await PartDeleteAsync(ItemId, transaction)) + return false; + foreach (long ItemId in ScheduledUserIds) + if (!await ScheduledUserDeleteAsync(ItemId, transaction)) + return false; + foreach (long ItemId in TaskIds) + if (!await TaskDeleteAsync(ItemId, transaction)) + return false; + foreach (long ItemId in TravelIds) + if (!await TravelDeleteAsync(ItemId, transaction)) + return false; + foreach (long ItemId in UnitIds) + if (!await UnitDeleteAsync(ItemId, transaction)) + return false; + foreach (long ItemId in OutsideServiceIds) + if (!await OutsideServiceDeleteAsync(ItemId, transaction)) return false; - //collect the child id's to delete - var ExpenseIds = await ct.QuoteItemExpense.Where(z => z.QuoteItemId == id).Select(z => z.Id).ToListAsync(); - var LaborIds = await ct.QuoteItemLabor.Where(z => z.QuoteItemId == id).Select(z => z.Id).ToListAsync(); - var LoanIds = await ct.QuoteItemLoan.Where(z => z.QuoteItemId == id).Select(z => z.Id).ToListAsync(); - var PartIds = await ct.QuoteItemPart.Where(z => z.QuoteItemId == id).Select(z => z.Id).ToListAsync(); + ct.QuoteItem.Remove(dbObject); + await ct.SaveChangesAsync(); - var ScheduledUserIds = await ct.QuoteItemScheduledUser.Where(z => z.QuoteItemId == id).Select(z => z.Id).ToListAsync(); - var TaskIds = await ct.QuoteItemTask.Where(z => z.QuoteItemId == id).Select(z => z.Id).ToListAsync(); - var TravelIds = await ct.QuoteItemTravel.Where(z => z.QuoteItemId == id).Select(z => z.Id).ToListAsync(); - var UnitIds = await ct.QuoteItemUnit.Where(z => z.QuoteItemId == id).Select(z => z.Id).ToListAsync(); - var OutsideServiceIds = await ct.QuoteItemOutsideService.Where(z => z.QuoteItemId == id).Select(z => z.Id).ToListAsync(); + //Log event + await EventLogProcessor.DeleteObjectLogAsync(UserId, dbObject.AyaType, dbObject.Id, "wo:" + dbObject.QuoteId.ToString(), ct);//FIX wo?? Not sure what is best here; revisit + await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, dbObject.AyaType, ct); + await TagBiz.ProcessDeleteTagsInRepositoryAsync(ct, dbObject.Tags); + await FileUtil.DeleteAttachmentsForObjectAsync(dbObject.AyaType, dbObject.Id, ct); - //Delete children - foreach (long ItemId in ExpenseIds) - if (!await ExpenseDeleteAsync(ItemId, transaction)) - return false; - foreach (long ItemId in LaborIds) - if (!await LaborDeleteAsync(ItemId, transaction)) - return false; - foreach (long ItemId in LoanIds) - if (!await LoanDeleteAsync(ItemId, transaction)) - return false; - foreach (long ItemId in PartIds) - if (!await PartDeleteAsync(ItemId, transaction)) - return false; - foreach (long ItemId in ScheduledUserIds) - if (!await ScheduledUserDeleteAsync(ItemId, transaction)) - return false; - foreach (long ItemId in TaskIds) - if (!await TaskDeleteAsync(ItemId, transaction)) - return false; - foreach (long ItemId in TravelIds) - if (!await TravelDeleteAsync(ItemId, transaction)) - return false; - foreach (long ItemId in UnitIds) - if (!await UnitDeleteAsync(ItemId, transaction)) - return false; - foreach (long ItemId in OutsideServiceIds) - if (!await OutsideServiceDeleteAsync(ItemId, transaction)) - return false; + //all good do the commit if it's ours + if (parentTransaction == null) + await transaction.CommitAsync(); + await ItemHandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); - ct.QuoteItem.Remove(dbObject); - await ct.SaveChangesAsync(); - - //Log event - await EventLogProcessor.DeleteObjectLogAsync(UserId, dbObject.AyaType, dbObject.Id, "wo:" + dbObject.QuoteId.ToString(), ct);//FIX wo?? Not sure what is best here; revisit - await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, dbObject.AyaType, ct); - await TagBiz.ProcessDeleteTagsInRepositoryAsync(ct, dbObject.Tags); - await FileUtil.DeleteAttachmentsForObjectAsync(dbObject.AyaType, dbObject.Id, ct); - - //all good do the commit if it's ours - if (parentTransaction == null) - await transaction.CommitAsync(); - await ItemHandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); - } - catch - { - - throw; - } return true; } @@ -1742,29 +1717,23 @@ namespace AyaNova.Biz internal async Task ExpenseDeleteAsync(long id, IDbContextTransaction parentTransaction = null) { var transaction = parentTransaction ?? await ct.Database.BeginTransactionAsync(); - try - { - var dbObject = await ExpenseGetAsync(id, false); - ExpenseValidateCanDelete(dbObject); - if (HasErrors) - return false; - ct.QuoteItemExpense.Remove(dbObject); - await ct.SaveChangesAsync(); - //Log event - await EventLogProcessor.DeleteObjectLogAsync(UserId, dbObject.AyaType, dbObject.Id, "quoteitem:" + dbObject.QuoteItemId.ToString(), ct);//Fix?? - await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, dbObject.AyaType, ct); + var dbObject = await ExpenseGetAsync(id, false); + ExpenseValidateCanDelete(dbObject); + if (HasErrors) + return false; + ct.QuoteItemExpense.Remove(dbObject); + await ct.SaveChangesAsync(); + + //Log event + await EventLogProcessor.DeleteObjectLogAsync(UserId, dbObject.AyaType, dbObject.Id, "quoteitem:" + dbObject.QuoteItemId.ToString(), ct);//Fix?? + await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, dbObject.AyaType, ct); - if (parentTransaction == null) - await transaction.CommitAsync(); - await ExpenseHandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); - } - catch - { - - throw; - } + if (parentTransaction == null) + await transaction.CommitAsync(); + await ExpenseHandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); + return true; } @@ -2112,29 +2081,23 @@ namespace AyaNova.Biz internal async Task LaborDeleteAsync(long id, IDbContextTransaction parentTransaction = null) { var transaction = parentTransaction ?? await ct.Database.BeginTransactionAsync(); - try - { - var dbObject = await LaborGetAsync(id, false); - LaborValidateCanDelete(dbObject); - if (HasErrors) - return false; - ct.QuoteItemLabor.Remove(dbObject); - await ct.SaveChangesAsync(); - //Log event - await EventLogProcessor.DeleteObjectLogAsync(UserId, dbObject.AyaType, dbObject.Id, "quoteitem:" + dbObject.QuoteItemId.ToString(), ct);//Fix?? - await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, dbObject.AyaType, ct); + var dbObject = await LaborGetAsync(id, false); + LaborValidateCanDelete(dbObject); + if (HasErrors) + return false; + ct.QuoteItemLabor.Remove(dbObject); + await ct.SaveChangesAsync(); + + //Log event + await EventLogProcessor.DeleteObjectLogAsync(UserId, dbObject.AyaType, dbObject.Id, "quoteitem:" + dbObject.QuoteItemId.ToString(), ct);//Fix?? + await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, dbObject.AyaType, ct); - if (parentTransaction == null) - await transaction.CommitAsync(); - await LaborHandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); - } - catch - { - - throw; - } + if (parentTransaction == null) + await transaction.CommitAsync(); + await LaborHandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); + return true; } @@ -2508,29 +2471,22 @@ namespace AyaNova.Biz internal async Task LoanDeleteAsync(long id, IDbContextTransaction parentTransaction = null) { var transaction = parentTransaction ?? await ct.Database.BeginTransactionAsync(); - try - { - var dbObject = await LoanGetAsync(id, false); - LoanValidateCanDelete(dbObject); - if (HasErrors) - return false; - ct.QuoteItemLoan.Remove(dbObject); - await ct.SaveChangesAsync(); + var dbObject = await LoanGetAsync(id, false); + LoanValidateCanDelete(dbObject); + if (HasErrors) + return false; + ct.QuoteItemLoan.Remove(dbObject); + await ct.SaveChangesAsync(); - //Log event - await EventLogProcessor.DeleteObjectLogAsync(UserId, dbObject.AyaType, dbObject.Id, "quoteitem:" + dbObject.QuoteItemId.ToString(), ct);//Fix?? - await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, dbObject.AyaType, ct); + //Log event + await EventLogProcessor.DeleteObjectLogAsync(UserId, dbObject.AyaType, dbObject.Id, "quoteitem:" + dbObject.QuoteItemId.ToString(), ct);//Fix?? + await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, dbObject.AyaType, ct); - if (parentTransaction == null) - await transaction.CommitAsync(); - await LoanHandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); - } - catch - { - - throw; - } + if (parentTransaction == null) + await transaction.CommitAsync(); + await LoanHandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); + return true; } @@ -2914,28 +2870,20 @@ namespace AyaNova.Biz internal async Task OutsideServiceDeleteAsync(long id, IDbContextTransaction parentTransaction = null) { var transaction = parentTransaction ?? await ct.Database.BeginTransactionAsync(); - try - { - var dbObject = await OutsideServiceGetAsync(id, false); - OutsideServiceValidateCanDelete(dbObject); - if (HasErrors) - return false; - ct.QuoteItemOutsideService.Remove(dbObject); - await ct.SaveChangesAsync(); + var dbObject = await OutsideServiceGetAsync(id, false); + OutsideServiceValidateCanDelete(dbObject); + if (HasErrors) + return false; + ct.QuoteItemOutsideService.Remove(dbObject); + await ct.SaveChangesAsync(); - //Log event - await EventLogProcessor.DeleteObjectLogAsync(UserId, dbObject.AyaType, dbObject.Id, "quoteitem:" + dbObject.QuoteItemId.ToString(), ct);//Fix?? - await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, dbObject.AyaType, ct); + //Log event + await EventLogProcessor.DeleteObjectLogAsync(UserId, dbObject.AyaType, dbObject.Id, "quoteitem:" + dbObject.QuoteItemId.ToString(), ct);//Fix?? + await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, dbObject.AyaType, ct); - if (parentTransaction == null) - await transaction.CommitAsync(); - await OutsideServiceHandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); - } - catch - { - - throw; - } + if (parentTransaction == null) + await transaction.CommitAsync(); + await OutsideServiceHandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); return true; } @@ -3254,33 +3202,24 @@ namespace AyaNova.Biz internal async Task PartDeleteAsync(long id, IDbContextTransaction parentTransaction = null) { var transaction = parentTransaction ?? await ct.Database.BeginTransactionAsync(); - - try + var dbObject = await PartGetAsync(id, false); + PartValidateCanDelete(dbObject); + if (HasErrors) + return false; + await PartBizActionsAsync(AyaEvent.Deleted, null, dbObject, transaction); + ct.QuoteItemPart.Remove(dbObject); + await ct.SaveChangesAsync(); + if (HasErrors) { - var dbObject = await PartGetAsync(id, false); - PartValidateCanDelete(dbObject); - if (HasErrors) - return false; - await PartBizActionsAsync(AyaEvent.Deleted, null, dbObject, transaction); - ct.QuoteItemPart.Remove(dbObject); - await ct.SaveChangesAsync(); - if (HasErrors) - { - await transaction.RollbackAsync(); - return false; - } - //Log event - await EventLogProcessor.DeleteObjectLogAsync(UserId, dbObject.AyaType, dbObject.Id, "quoteitem:" + dbObject.QuoteItemId.ToString(), ct);//Fix?? - await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, dbObject.AyaType, ct); - if (parentTransaction == null) - await transaction.CommitAsync(); - await PartHandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); - } - catch - { - - throw; + await transaction.RollbackAsync(); + return false; } + //Log event + await EventLogProcessor.DeleteObjectLogAsync(UserId, dbObject.AyaType, dbObject.Id, "quoteitem:" + dbObject.QuoteItemId.ToString(), ct);//Fix?? + await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, dbObject.AyaType, ct); + if (parentTransaction == null) + await transaction.CommitAsync(); + await PartHandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); return true; } @@ -3690,27 +3629,19 @@ namespace AyaNova.Biz internal async Task ScheduledUserDeleteAsync(long id, IDbContextTransaction parentTransaction = null) { var transaction = parentTransaction ?? await ct.Database.BeginTransactionAsync(); - try - { - var dbObject = await ScheduledUserGetAsync(id, false); - ScheduledUserValidateCanDelete(dbObject); - if (HasErrors) - return false; - ct.QuoteItemScheduledUser.Remove(dbObject); - await ct.SaveChangesAsync(); + var dbObject = await ScheduledUserGetAsync(id, false); + ScheduledUserValidateCanDelete(dbObject); + if (HasErrors) + return false; + ct.QuoteItemScheduledUser.Remove(dbObject); + await ct.SaveChangesAsync(); - //Log event - await EventLogProcessor.DeleteObjectLogAsync(UserId, dbObject.AyaType, dbObject.Id, "quoteitem:" + dbObject.QuoteItemId.ToString(), ct);//Fix?? - await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, dbObject.AyaType, ct); - if (parentTransaction == null) - await transaction.CommitAsync(); - await ScheduledUserHandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); - } - catch - { - - throw; - } + //Log event + await EventLogProcessor.DeleteObjectLogAsync(UserId, dbObject.AyaType, dbObject.Id, "quoteitem:" + dbObject.QuoteItemId.ToString(), ct);//Fix?? + await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, dbObject.AyaType, ct); + if (parentTransaction == null) + await transaction.CommitAsync(); + await ScheduledUserHandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); return true; } @@ -3943,27 +3874,19 @@ namespace AyaNova.Biz internal async Task TaskDeleteAsync(long id, IDbContextTransaction parentTransaction = null) { var transaction = parentTransaction ?? await ct.Database.BeginTransactionAsync(); - try - { - var dbObject = await TaskGetAsync(id, false); - TaskValidateCanDelete(dbObject); - if (HasErrors) - return false; - ct.QuoteItemTask.Remove(dbObject); - await ct.SaveChangesAsync(); + var dbObject = await TaskGetAsync(id, false); + TaskValidateCanDelete(dbObject); + if (HasErrors) + return false; + ct.QuoteItemTask.Remove(dbObject); + await ct.SaveChangesAsync(); - //Log event - await EventLogProcessor.DeleteObjectLogAsync(UserId, dbObject.AyaType, dbObject.Id, "quoteitem:" + dbObject.QuoteItemId.ToString(), ct);//Fix?? - await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, dbObject.AyaType, ct); - if (parentTransaction == null) - await transaction.CommitAsync(); - await TaskHandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); - } - catch - { - - throw; - } + //Log event + await EventLogProcessor.DeleteObjectLogAsync(UserId, dbObject.AyaType, dbObject.Id, "quoteitem:" + dbObject.QuoteItemId.ToString(), ct);//Fix?? + await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, dbObject.AyaType, ct); + if (parentTransaction == null) + await transaction.CommitAsync(); + await TaskHandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); return true; } @@ -4227,28 +4150,20 @@ namespace AyaNova.Biz internal async Task TravelDeleteAsync(long id, IDbContextTransaction parentTransaction = null) { var transaction = parentTransaction ?? await ct.Database.BeginTransactionAsync(); - try - { - var dbObject = await TravelGetAsync(id, false); - TravelValidateCanDelete(dbObject); - if (HasErrors) - return false; - ct.QuoteItemTravel.Remove(dbObject); - await ct.SaveChangesAsync(); + var dbObject = await TravelGetAsync(id, false); + TravelValidateCanDelete(dbObject); + if (HasErrors) + return false; + ct.QuoteItemTravel.Remove(dbObject); + await ct.SaveChangesAsync(); - //Log event - await EventLogProcessor.DeleteObjectLogAsync(UserId, dbObject.AyaType, dbObject.Id, "quoteitem:" + dbObject.QuoteItemId.ToString(), ct); - await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, dbObject.AyaType, ct); + //Log event + await EventLogProcessor.DeleteObjectLogAsync(UserId, dbObject.AyaType, dbObject.Id, "quoteitem:" + dbObject.QuoteItemId.ToString(), ct); + await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, dbObject.AyaType, ct); - if (parentTransaction == null) - await transaction.CommitAsync(); - await TravelHandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); - } - catch - { - - throw; - } + if (parentTransaction == null) + await transaction.CommitAsync(); + await TravelHandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); return true; } @@ -4614,27 +4529,19 @@ namespace AyaNova.Biz internal async Task UnitDeleteAsync(long id, IDbContextTransaction parentTransaction = null) { var transaction = parentTransaction ?? await ct.Database.BeginTransactionAsync(); - try - { - var dbObject = await UnitGetAsync(id, false); - UnitValidateCanDelete(dbObject); - if (HasErrors) - return false; - ct.QuoteItemUnit.Remove(dbObject); - await ct.SaveChangesAsync(); + var dbObject = await UnitGetAsync(id, false); + UnitValidateCanDelete(dbObject); + if (HasErrors) + return false; + ct.QuoteItemUnit.Remove(dbObject); + await ct.SaveChangesAsync(); - //Log event - await EventLogProcessor.DeleteObjectLogAsync(UserId, dbObject.AyaType, dbObject.Id, "quoteitem:" + dbObject.QuoteItemId.ToString(), ct);//Fix?? - await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, dbObject.AyaType, ct); - if (parentTransaction == null) - await transaction.CommitAsync(); - await UnitHandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); - } - catch - { - - throw; - } + //Log event + await EventLogProcessor.DeleteObjectLogAsync(UserId, dbObject.AyaType, dbObject.Id, "quoteitem:" + dbObject.QuoteItemId.ToString(), ct);//Fix?? + await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, dbObject.AyaType, ct); + if (parentTransaction == null) + await transaction.CommitAsync(); + await UnitHandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); return true; } diff --git a/server/AyaNova/biz/QuoteStatusBiz.cs b/server/AyaNova/biz/QuoteStatusBiz.cs index 629c6635..8a7ea347 100644 --- a/server/AyaNova/biz/QuoteStatusBiz.cs +++ b/server/AyaNova/biz/QuoteStatusBiz.cs @@ -50,7 +50,7 @@ namespace AyaNova.Biz } } - + //////////////////////////////////////////////////////////////////////////////////////////////// //GET // @@ -107,31 +107,23 @@ namespace AyaNova.Biz { using (var transaction = await ct.Database.BeginTransactionAsync()) { - try + var dbObject = await GetAsync(id, false); + if (dbObject == null) { - var dbObject = await GetAsync(id, false); - if (dbObject == null) - { - AddError(ApiErrorCode.NOT_FOUND); - return false; - } - await ValidateCanDeleteAsync(dbObject); - if (HasErrors) - return false; - ct.QuoteStatus.Remove(dbObject); - await ct.SaveChangesAsync(); + AddError(ApiErrorCode.NOT_FOUND); + return false; + } + await ValidateCanDeleteAsync(dbObject); + if (HasErrors) + return false; + ct.QuoteStatus.Remove(dbObject); + await ct.SaveChangesAsync(); - //Log event - await EventLogProcessor.DeleteObjectLogAsync(UserId, BizType, dbObject.Id, dbObject.Name, ct); - await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, BizType, ct); - await FileUtil.DeleteAttachmentsForObjectAsync(BizType, dbObject.Id, ct); - await transaction.CommitAsync(); - } - catch - { - - throw; - } + //Log event + await EventLogProcessor.DeleteObjectLogAsync(UserId, BizType, dbObject.Id, dbObject.Name, ct); + await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, BizType, ct); + await FileUtil.DeleteAttachmentsForObjectAsync(BizType, dbObject.Id, ct); + await transaction.CommitAsync(); return true; } } diff --git a/server/AyaNova/biz/ReminderBiz.cs b/server/AyaNova/biz/ReminderBiz.cs index 32a742df..864cb0c2 100644 --- a/server/AyaNova/biz/ReminderBiz.cs +++ b/server/AyaNova/biz/ReminderBiz.cs @@ -152,35 +152,28 @@ namespace AyaNova.Biz { using (var transaction = await ct.Database.BeginTransactionAsync()) { - try + Reminder dbObject = await ct.Reminder.SingleOrDefaultAsync(m => m.Id == id); + if (dbObject == null) { - Reminder dbObject = await ct.Reminder.SingleOrDefaultAsync(m => m.Id == id); - if (dbObject == null) - { - AddError(ApiErrorCode.NOT_FOUND); - return false; - } - ValidateCanDelete(dbObject); - if (HasErrors) - return false; - if (HasErrors) - return false; - ct.Reminder.Remove(dbObject); - await ct.SaveChangesAsync(); + AddError(ApiErrorCode.NOT_FOUND); + return false; + } + ValidateCanDelete(dbObject); + if (HasErrors) + return false; + if (HasErrors) + return false; + ct.Reminder.Remove(dbObject); + await ct.SaveChangesAsync(); + + //Log event + await EventLogProcessor.DeleteObjectLogAsync(UserId, BizType, dbObject.Id, dbObject.Name, ct); + await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, BizType, ct); + await TagBiz.ProcessDeleteTagsInRepositoryAsync(ct, dbObject.Tags); + await FileUtil.DeleteAttachmentsForObjectAsync(BizType, dbObject.Id, ct); + await transaction.CommitAsync(); + await HandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); - //Log event - await EventLogProcessor.DeleteObjectLogAsync(UserId, BizType, dbObject.Id, dbObject.Name, ct); - await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, BizType, ct); - await TagBiz.ProcessDeleteTagsInRepositoryAsync(ct, dbObject.Tags); - await FileUtil.DeleteAttachmentsForObjectAsync(BizType, dbObject.Id, ct); - await transaction.CommitAsync(); - await HandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); - } - catch - { - - throw; - } return true; } } diff --git a/server/AyaNova/biz/ReportBiz.cs b/server/AyaNova/biz/ReportBiz.cs index 6e0ec21a..3b596c58 100644 --- a/server/AyaNova/biz/ReportBiz.cs +++ b/server/AyaNova/biz/ReportBiz.cs @@ -208,29 +208,21 @@ namespace AyaNova.Biz { using (var transaction = await ct.Database.BeginTransactionAsync()) { - try + var dbObject = await GetAsync(id, false); + if (dbObject == null) { - var dbObject = await GetAsync(id, false); - if (dbObject == null) - { - AddError(ApiErrorCode.NOT_FOUND); - return false; - } - await ValidateCanDelete(dbObject); - if (HasErrors) - return false; - ct.Report.Remove(dbObject); - await ct.SaveChangesAsync(); - await EventLogProcessor.DeleteObjectLogAsync(UserId, BizType, dbObject.Id, dbObject.Name, ct); - await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, BizType, ct); - await FileUtil.DeleteAttachmentsForObjectAsync(BizType, dbObject.Id, ct); - await transaction.CommitAsync(); - } - catch - { - - throw; + AddError(ApiErrorCode.NOT_FOUND); + return false; } + await ValidateCanDelete(dbObject); + if (HasErrors) + return false; + ct.Report.Remove(dbObject); + await ct.SaveChangesAsync(); + await EventLogProcessor.DeleteObjectLogAsync(UserId, BizType, dbObject.Id, dbObject.Name, ct); + await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, BizType, ct); + await FileUtil.DeleteAttachmentsForObjectAsync(BizType, dbObject.Id, ct); + await transaction.CommitAsync(); return true; } } @@ -714,11 +706,7 @@ namespace AyaNova.Biz log.LogInformation(PageLog.ToString()); } - - - - - // var v=await page.GetContentAsync(); + // var v=await page.GetContentAsync();//for debugging purposes throw; } finally diff --git a/server/AyaNova/biz/ReviewBiz.cs b/server/AyaNova/biz/ReviewBiz.cs index f258e3ce..022cc4cb 100644 --- a/server/AyaNova/biz/ReviewBiz.cs +++ b/server/AyaNova/biz/ReviewBiz.cs @@ -152,35 +152,27 @@ namespace AyaNova.Biz { using (var transaction = await ct.Database.BeginTransactionAsync()) { - try + var dbObject = await GetAsync(id, false); + if (dbObject == null) { - var dbObject = await GetAsync(id, false); - if (dbObject == null) - { - AddError(ApiErrorCode.NOT_FOUND); - return false; - } - ValidateCanDelete(dbObject); - if (HasErrors) - return false; - if (HasErrors) - return false; - ct.Review.Remove(dbObject); - await ct.SaveChangesAsync(); + AddError(ApiErrorCode.NOT_FOUND); + return false; + } + ValidateCanDelete(dbObject); + if (HasErrors) + return false; + if (HasErrors) + return false; + ct.Review.Remove(dbObject); + await ct.SaveChangesAsync(); - //Log event - await EventLogProcessor.DeleteObjectLogAsync(UserId, BizType, dbObject.Id, dbObject.Name, ct); - await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, BizType, ct); - await TagBiz.ProcessDeleteTagsInRepositoryAsync(ct, dbObject.Tags); - await FileUtil.DeleteAttachmentsForObjectAsync(BizType, dbObject.Id, ct); - await transaction.CommitAsync(); - await HandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); - } - catch - { - - throw; - } + //Log event + await EventLogProcessor.DeleteObjectLogAsync(UserId, BizType, dbObject.Id, dbObject.Name, ct); + await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, BizType, ct); + await TagBiz.ProcessDeleteTagsInRepositoryAsync(ct, dbObject.Tags); + await FileUtil.DeleteAttachmentsForObjectAsync(BizType, dbObject.Id, ct); + await transaction.CommitAsync(); + await HandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); return true; } } diff --git a/server/AyaNova/biz/ServiceRateBiz.cs b/server/AyaNova/biz/ServiceRateBiz.cs index 399a74dd..c35f6b2b 100644 --- a/server/AyaNova/biz/ServiceRateBiz.cs +++ b/server/AyaNova/biz/ServiceRateBiz.cs @@ -152,35 +152,27 @@ namespace AyaNova.Biz { using (var transaction = await ct.Database.BeginTransactionAsync()) { - try + var dbObject = await GetAsync(id, false); + if (dbObject == null) { - var dbObject = await GetAsync(id, false); - if (dbObject == null) - { - AddError(ApiErrorCode.NOT_FOUND); - return false; - } - await ValidateCanDeleteAsync(dbObject); - if (HasErrors) - return false; - if (HasErrors) - return false; - ct.ServiceRate.Remove(dbObject); - await ct.SaveChangesAsync(); + AddError(ApiErrorCode.NOT_FOUND); + return false; + } + await ValidateCanDeleteAsync(dbObject); + if (HasErrors) + return false; + if (HasErrors) + return false; + ct.ServiceRate.Remove(dbObject); + await ct.SaveChangesAsync(); - //Log event - await EventLogProcessor.DeleteObjectLogAsync(UserId, BizType, dbObject.Id, dbObject.Name, ct); - await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, BizType, ct); - await TagBiz.ProcessDeleteTagsInRepositoryAsync(ct, dbObject.Tags); - await FileUtil.DeleteAttachmentsForObjectAsync(BizType, dbObject.Id, ct); - await transaction.CommitAsync(); - await HandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); - } - catch - { - - throw; - } + //Log event + await EventLogProcessor.DeleteObjectLogAsync(UserId, BizType, dbObject.Id, dbObject.Name, ct); + await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, BizType, ct); + await TagBiz.ProcessDeleteTagsInRepositoryAsync(ct, dbObject.Tags); + await FileUtil.DeleteAttachmentsForObjectAsync(BizType, dbObject.Id, ct); + await transaction.CommitAsync(); + await HandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); return true; } } diff --git a/server/AyaNova/biz/TaskGroupBiz.cs b/server/AyaNova/biz/TaskGroupBiz.cs index 827f53fa..d4ae3ac4 100644 --- a/server/AyaNova/biz/TaskGroupBiz.cs +++ b/server/AyaNova/biz/TaskGroupBiz.cs @@ -159,35 +159,26 @@ namespace AyaNova.Biz { using (var transaction = await ct.Database.BeginTransactionAsync()) { - try + TaskGroup dbObject = await GetAsync(id, false); + if (dbObject == null) { - TaskGroup dbObject = await GetAsync(id, false); - if (dbObject == null) - { - AddError(ApiErrorCode.NOT_FOUND); - return false; - } - ValidateCanDelete(dbObject); - if (HasErrors) - return false; - if (HasErrors) - return false; - ct.TaskGroup.Remove(dbObject); - await ct.SaveChangesAsync(); - - //Log event - await EventLogProcessor.DeleteObjectLogAsync(UserId, BizType, dbObject.Id, dbObject.Name, ct); - await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, BizType, ct); - - await FileUtil.DeleteAttachmentsForObjectAsync(BizType, dbObject.Id, ct); - await transaction.CommitAsync(); - - } - catch - { - - throw; + AddError(ApiErrorCode.NOT_FOUND); + return false; } + ValidateCanDelete(dbObject); + if (HasErrors) + return false; + if (HasErrors) + return false; + ct.TaskGroup.Remove(dbObject); + await ct.SaveChangesAsync(); + + //Log event + await EventLogProcessor.DeleteObjectLogAsync(UserId, BizType, dbObject.Id, dbObject.Name, ct); + await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, BizType, ct); + + await FileUtil.DeleteAttachmentsForObjectAsync(BizType, dbObject.Id, ct); + await transaction.CommitAsync(); return true; } } diff --git a/server/AyaNova/biz/TaxCodeBiz.cs b/server/AyaNova/biz/TaxCodeBiz.cs index 3579f6c6..b460f213 100644 --- a/server/AyaNova/biz/TaxCodeBiz.cs +++ b/server/AyaNova/biz/TaxCodeBiz.cs @@ -152,35 +152,27 @@ namespace AyaNova.Biz { using (var transaction = await ct.Database.BeginTransactionAsync()) { - try + var dbObject = await GetAsync(id, false); + if (dbObject == null) { - var dbObject = await GetAsync(id, false); - if (dbObject == null) - { - AddError(ApiErrorCode.NOT_FOUND); - return false; - } - await ValidateCanDeleteAsync(dbObject); - if (HasErrors) - return false; - if (HasErrors) - return false; - ct.TaxCode.Remove(dbObject); - await ct.SaveChangesAsync(); + AddError(ApiErrorCode.NOT_FOUND); + return false; + } + await ValidateCanDeleteAsync(dbObject); + if (HasErrors) + return false; + if (HasErrors) + return false; + ct.TaxCode.Remove(dbObject); + await ct.SaveChangesAsync(); - //Log event - await EventLogProcessor.DeleteObjectLogAsync(UserId, BizType, dbObject.Id, dbObject.Name, ct); - await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, BizType, ct); - await TagBiz.ProcessDeleteTagsInRepositoryAsync(ct, dbObject.Tags); - await FileUtil.DeleteAttachmentsForObjectAsync(BizType, dbObject.Id, ct); - await transaction.CommitAsync(); - await HandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); - } - catch - { - - throw; - } + //Log event + await EventLogProcessor.DeleteObjectLogAsync(UserId, BizType, dbObject.Id, dbObject.Name, ct); + await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, BizType, ct); + await TagBiz.ProcessDeleteTagsInRepositoryAsync(ct, dbObject.Tags); + await FileUtil.DeleteAttachmentsForObjectAsync(BizType, dbObject.Id, ct); + await transaction.CommitAsync(); + await HandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); return true; } } diff --git a/server/AyaNova/biz/TravelRateBiz.cs b/server/AyaNova/biz/TravelRateBiz.cs index 6c8e1961..5b1af5df 100644 --- a/server/AyaNova/biz/TravelRateBiz.cs +++ b/server/AyaNova/biz/TravelRateBiz.cs @@ -152,35 +152,27 @@ namespace AyaNova.Biz { using (var transaction = await ct.Database.BeginTransactionAsync()) { - try + var dbObject = await GetAsync(id, false); + if (dbObject == null) { - var dbObject = await GetAsync(id, false); - if (dbObject == null) - { - AddError(ApiErrorCode.NOT_FOUND); - return false; - } - await ValidateCanDeleteAsync(dbObject); - if (HasErrors) - return false; - if (HasErrors) - return false; - ct.TravelRate.Remove(dbObject); - await ct.SaveChangesAsync(); + AddError(ApiErrorCode.NOT_FOUND); + return false; + } + await ValidateCanDeleteAsync(dbObject); + if (HasErrors) + return false; + if (HasErrors) + return false; + ct.TravelRate.Remove(dbObject); + await ct.SaveChangesAsync(); - //Log event - await EventLogProcessor.DeleteObjectLogAsync(UserId, BizType, dbObject.Id, dbObject.Name, ct); - await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, BizType, ct); - await TagBiz.ProcessDeleteTagsInRepositoryAsync(ct, dbObject.Tags); - await FileUtil.DeleteAttachmentsForObjectAsync(BizType, dbObject.Id, ct); - await transaction.CommitAsync(); - await HandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); - } - catch - { - - throw; - } + //Log event + await EventLogProcessor.DeleteObjectLogAsync(UserId, BizType, dbObject.Id, dbObject.Name, ct); + await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, BizType, ct); + await TagBiz.ProcessDeleteTagsInRepositoryAsync(ct, dbObject.Tags); + await FileUtil.DeleteAttachmentsForObjectAsync(BizType, dbObject.Id, ct); + await transaction.CommitAsync(); + await HandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); return true; } } @@ -253,7 +245,7 @@ namespace AyaNova.Biz } } - + if (!isNew && (proposedObj.Cost != currentObj.Cost || proposedObj.Charge != currentObj.Charge)) { diff --git a/server/AyaNova/biz/UnitBiz.cs b/server/AyaNova/biz/UnitBiz.cs index 1ace56a3..bdc3e45a 100644 --- a/server/AyaNova/biz/UnitBiz.cs +++ b/server/AyaNova/biz/UnitBiz.cs @@ -152,33 +152,25 @@ namespace AyaNova.Biz { using (var transaction = await ct.Database.BeginTransactionAsync()) { - try + Unit dbObject = await GetAsync(id, false); + if (dbObject == null) { - Unit dbObject = await GetAsync(id, false); - if (dbObject == null) - { - AddError(ApiErrorCode.NOT_FOUND); - return false; - } - await ValidateCanDeleteAsync(dbObject); - if (HasErrors) - return false; - if (HasErrors) - return false; - ct.Unit.Remove(dbObject); - await ct.SaveChangesAsync(); - await EventLogProcessor.DeleteObjectLogAsync(UserId, BizType, dbObject.Id, dbObject.Serial, ct); - await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, BizType, ct); - await TagBiz.ProcessDeleteTagsInRepositoryAsync(ct, dbObject.Tags); - await FileUtil.DeleteAttachmentsForObjectAsync(BizType, dbObject.Id, ct); - await transaction.CommitAsync(); - await HandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); - } - catch - { - - throw; + AddError(ApiErrorCode.NOT_FOUND); + return false; } + await ValidateCanDeleteAsync(dbObject); + if (HasErrors) + return false; + if (HasErrors) + return false; + ct.Unit.Remove(dbObject); + await ct.SaveChangesAsync(); + await EventLogProcessor.DeleteObjectLogAsync(UserId, BizType, dbObject.Id, dbObject.Serial, ct); + await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, BizType, ct); + await TagBiz.ProcessDeleteTagsInRepositoryAsync(ct, dbObject.Tags); + await FileUtil.DeleteAttachmentsForObjectAsync(BizType, dbObject.Id, ct); + await transaction.CommitAsync(); + await HandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); return true; } } diff --git a/server/AyaNova/biz/UnitModelBiz.cs b/server/AyaNova/biz/UnitModelBiz.cs index dd08a3db..c3e14f84 100644 --- a/server/AyaNova/biz/UnitModelBiz.cs +++ b/server/AyaNova/biz/UnitModelBiz.cs @@ -138,7 +138,7 @@ namespace AyaNova.Biz else AddError(ApiErrorCode.CONCURRENCY_CONFLICT); return null; - } + } await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, dbObject.Id, BizType, AyaEvent.Modified), ct); await SearchIndexAsync(putObject, false); await TagBiz.ProcessUpdateTagsInRepositoryAsync(ct, putObject.Tags, dbObject.Tags); @@ -153,33 +153,25 @@ namespace AyaNova.Biz { using (var transaction = await ct.Database.BeginTransactionAsync()) { - try + var dbObject = await GetAsync(id, false); + if (dbObject == null) { - var dbObject = await GetAsync(id, false); - if (dbObject == null) - { - AddError(ApiErrorCode.NOT_FOUND); - return false; - } - await ValidateCanDeleteAsync(dbObject); - if (HasErrors) - return false; - if (HasErrors) - return false; - ct.UnitModel.Remove(dbObject); - await ct.SaveChangesAsync(); - await EventLogProcessor.DeleteObjectLogAsync(UserId, BizType, dbObject.Id, dbObject.Name, ct); - await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, BizType, ct); - await TagBiz.ProcessDeleteTagsInRepositoryAsync(ct, dbObject.Tags); - await FileUtil.DeleteAttachmentsForObjectAsync(BizType, dbObject.Id, ct); - await transaction.CommitAsync(); - await HandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); - } - catch - { - - throw; + AddError(ApiErrorCode.NOT_FOUND); + return false; } + await ValidateCanDeleteAsync(dbObject); + if (HasErrors) + return false; + if (HasErrors) + return false; + ct.UnitModel.Remove(dbObject); + await ct.SaveChangesAsync(); + await EventLogProcessor.DeleteObjectLogAsync(UserId, BizType, dbObject.Id, dbObject.Name, ct); + await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, BizType, ct); + await TagBiz.ProcessDeleteTagsInRepositoryAsync(ct, dbObject.Tags); + await FileUtil.DeleteAttachmentsForObjectAsync(BizType, dbObject.Id, ct); + await transaction.CommitAsync(); + await HandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); return true; } } diff --git a/server/AyaNova/biz/UserBiz.cs b/server/AyaNova/biz/UserBiz.cs index 4f8cf734..18a35ed4 100644 --- a/server/AyaNova/biz/UserBiz.cs +++ b/server/AyaNova/biz/UserBiz.cs @@ -676,64 +676,54 @@ namespace AyaNova.Biz Microsoft.EntityFrameworkCore.Storage.IDbContextTransaction transaction = null; if (parentTransaction == null) transaction = await ct.Database.BeginTransactionAsync(); - try + User dbObject = await ct.User.SingleOrDefaultAsync(z => z.Id == id); + if (dbObject == null) { - User dbObject = await ct.User.SingleOrDefaultAsync(z => z.Id == id); - if (dbObject == null) - { - AddError(ApiErrorCode.NOT_FOUND); - return false; - } - - - //Also used for Contacts (customer type user or ho type user) - //by users with no User right but with Customer rights so need to double check here - if ( - (dbObject.IsOutsideUser && !Authorized.HasDeleteRole(CurrentUserRoles, AyaType.Customer)) || - (!dbObject.IsOutsideUser && !Authorized.HasDeleteRole(CurrentUserRoles, AyaType.User)) - ) - { - AddError(ApiErrorCode.NOT_AUTHORIZED); - return false; - } - - await ValidateCanDelete(dbObject); - if (HasErrors) - return false; - - //Delete sibling objects - //USEROPTIONS - await ct.Database.ExecuteSqlInterpolatedAsync($"delete from auseroptions where userid = {dbObject.Id}"); - //NOTIFY SUBSCRIPTIONS - //Note: will cascade delete notifyevent, and notification automatically - await ct.Database.ExecuteSqlInterpolatedAsync($"delete from anotifysubscription where userid = {dbObject.Id}"); - //personal datalist options - await ct.Database.ExecuteSqlInterpolatedAsync($"delete from adatalistsavedfilter where public = {false} and userid = {dbObject.Id}"); - await ct.Database.ExecuteSqlInterpolatedAsync($"delete from adatalistcolumnview where userid = {dbObject.Id}"); - //Dashboard view - await ct.Database.ExecuteSqlInterpolatedAsync($"delete from adashboardview where userid = {dbObject.Id}"); - - //Remove the object - ct.User.Remove(dbObject); - await ct.SaveChangesAsync(); - - await EventLogProcessor.DeleteObjectLogAsync(UserId, BizType, dbObject.Id, dbObject.Name, ct); - await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, BizType, ct); - await TagBiz.ProcessDeleteTagsInRepositoryAsync(ct, dbObject.Tags); - await FileUtil.DeleteAttachmentsForObjectAsync(BizType, dbObject.Id, ct); - - //all good do the commit if it's ours - if (parentTransaction == null) - await transaction.CommitAsync(); - await HandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); + AddError(ApiErrorCode.NOT_FOUND); + return false; } - catch + + + //Also used for Contacts (customer type user or ho type user) + //by users with no User right but with Customer rights so need to double check here + if ( + (dbObject.IsOutsideUser && !Authorized.HasDeleteRole(CurrentUserRoles, AyaType.Customer)) || + (!dbObject.IsOutsideUser && !Authorized.HasDeleteRole(CurrentUserRoles, AyaType.User)) + ) { - - //no need to rollback, the transaction will rollback automatically if it's disposed without committing - throw; + AddError(ApiErrorCode.NOT_AUTHORIZED); + return false; } - //Note: Transaction does not need to be disposed it will automatically when it goes out of scope due to Using statement + + await ValidateCanDelete(dbObject); + if (HasErrors) + return false; + + //Delete sibling objects + //USEROPTIONS + await ct.Database.ExecuteSqlInterpolatedAsync($"delete from auseroptions where userid = {dbObject.Id}"); + //NOTIFY SUBSCRIPTIONS + //Note: will cascade delete notifyevent, and notification automatically + await ct.Database.ExecuteSqlInterpolatedAsync($"delete from anotifysubscription where userid = {dbObject.Id}"); + //personal datalist options + await ct.Database.ExecuteSqlInterpolatedAsync($"delete from adatalistsavedfilter where public = {false} and userid = {dbObject.Id}"); + await ct.Database.ExecuteSqlInterpolatedAsync($"delete from adatalistcolumnview where userid = {dbObject.Id}"); + //Dashboard view + await ct.Database.ExecuteSqlInterpolatedAsync($"delete from adashboardview where userid = {dbObject.Id}"); + + //Remove the object + ct.User.Remove(dbObject); + await ct.SaveChangesAsync(); + + await EventLogProcessor.DeleteObjectLogAsync(UserId, BizType, dbObject.Id, dbObject.Name, ct); + await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, BizType, ct); + await TagBiz.ProcessDeleteTagsInRepositoryAsync(ct, dbObject.Tags); + await FileUtil.DeleteAttachmentsForObjectAsync(BizType, dbObject.Id, ct); + + //all good do the commit if it's ours + if (parentTransaction == null) + await transaction.CommitAsync(); + await HandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); return true; } diff --git a/server/AyaNova/biz/VendorBiz.cs b/server/AyaNova/biz/VendorBiz.cs index 5f4e3587..cab943c5 100644 --- a/server/AyaNova/biz/VendorBiz.cs +++ b/server/AyaNova/biz/VendorBiz.cs @@ -152,31 +152,23 @@ namespace AyaNova.Biz { using (var transaction = await ct.Database.BeginTransactionAsync()) { - try + Vendor dbObject = await GetAsync(id, false); + if (dbObject == null) { - Vendor dbObject = await GetAsync(id, false); - if (dbObject == null) - { - AddError(ApiErrorCode.NOT_FOUND); - return false; - } - await ValidateCanDeleteAsync(dbObject); - if (HasErrors) - return false; - ct.Vendor.Remove(dbObject); - await ct.SaveChangesAsync(); - await EventLogProcessor.DeleteObjectLogAsync(UserId, BizType, dbObject.Id, dbObject.Name, ct); - await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, BizType, ct); - await TagBiz.ProcessDeleteTagsInRepositoryAsync(ct, dbObject.Tags); - await FileUtil.DeleteAttachmentsForObjectAsync(BizType, dbObject.Id, ct); - await transaction.CommitAsync(); - await HandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); - } - catch - { - - throw; + AddError(ApiErrorCode.NOT_FOUND); + return false; } + await ValidateCanDeleteAsync(dbObject); + if (HasErrors) + return false; + ct.Vendor.Remove(dbObject); + await ct.SaveChangesAsync(); + await EventLogProcessor.DeleteObjectLogAsync(UserId, BizType, dbObject.Id, dbObject.Name, ct); + await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, BizType, ct); + await TagBiz.ProcessDeleteTagsInRepositoryAsync(ct, dbObject.Tags); + await FileUtil.DeleteAttachmentsForObjectAsync(BizType, dbObject.Id, ct); + await transaction.CommitAsync(); + await HandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); return true; } } diff --git a/server/AyaNova/biz/WidgetBiz.cs b/server/AyaNova/biz/WidgetBiz.cs index ea47ce4c..8447e504 100644 --- a/server/AyaNova/biz/WidgetBiz.cs +++ b/server/AyaNova/biz/WidgetBiz.cs @@ -195,36 +195,28 @@ namespace AyaNova.Biz { using (var transaction = await ct.Database.BeginTransactionAsync()) { - try + var dbObject = await GetAsync(id, false); + if (dbObject == null) { - var dbObject = await GetAsync(id, false); - if (dbObject == null) - { - AddError(ApiErrorCode.NOT_FOUND); - return false; - } - ValidateCanDelete(dbObject); - if (HasErrors) - return false; - if (HasErrors) - return false; - ct.Widget.Remove(dbObject); - await ct.SaveChangesAsync(); + AddError(ApiErrorCode.NOT_FOUND); + return false; + } + ValidateCanDelete(dbObject); + if (HasErrors) + return false; + if (HasErrors) + return false; + ct.Widget.Remove(dbObject); + await ct.SaveChangesAsync(); - //Log event - await EventLogProcessor.DeleteObjectLogAsync(UserId, BizType, dbObject.Id, dbObject.Name, ct); - await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, BizType, ct); - await TagBiz.ProcessDeleteTagsInRepositoryAsync(ct, dbObject.Tags); - await FileUtil.DeleteAttachmentsForObjectAsync(BizType, dbObject.Id, ct); - //all good do the commit - await transaction.CommitAsync(); - await HandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); - } - catch - { - - throw; - } + //Log event + await EventLogProcessor.DeleteObjectLogAsync(UserId, BizType, dbObject.Id, dbObject.Name, ct); + await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, BizType, ct); + await TagBiz.ProcessDeleteTagsInRepositoryAsync(ct, dbObject.Tags); + await FileUtil.DeleteAttachmentsForObjectAsync(BizType, dbObject.Id, ct); + //all good do the commit + await transaction.CommitAsync(); + await HandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); return true; } } diff --git a/server/AyaNova/biz/WorkOrderBiz.cs b/server/AyaNova/biz/WorkOrderBiz.cs index c0b4b2c1..84606b1b 100644 --- a/server/AyaNova/biz/WorkOrderBiz.cs +++ b/server/AyaNova/biz/WorkOrderBiz.cs @@ -361,47 +361,37 @@ namespace AyaNova.Biz { using (var transaction = await ct.Database.BeginTransactionAsync()) { - try + WorkOrder dbObject = await ct.WorkOrder.AsNoTracking().Where(z => z.Id == id).FirstOrDefaultAsync();// WorkOrderGetAsync(id, false); + if (dbObject == null) { - WorkOrder dbObject = await ct.WorkOrder.AsNoTracking().Where(z => z.Id == id).FirstOrDefaultAsync();// WorkOrderGetAsync(id, false); - if (dbObject == null) - { - AddError(ApiErrorCode.NOT_FOUND); - return false; - } - WorkOrderValidateCanDelete(dbObject); - if (HasErrors) - return false; - - //States collection - if (!await StateDeleteAsync(id, transaction)) - return false; - - //collect the child id's to delete - var ItemIds = await ct.WorkOrderItem.AsNoTracking().Where(z => z.WorkOrderId == id).Select(z => z.Id).ToListAsync(); - - //Delete children - foreach (long ItemId in ItemIds) - if (!await ItemDeleteAsync(ItemId, transaction)) - return false; - - ct.WorkOrder.Remove(dbObject); - await ct.SaveChangesAsync(); - - await EventLogProcessor.DeleteObjectLogAsync(UserId, dbObject.AyaType, dbObject.Id, dbObject.Serial.ToString(), ct); - await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, dbObject.AyaType, ct); - await TagBiz.ProcessDeleteTagsInRepositoryAsync(ct, dbObject.Tags); - await FileUtil.DeleteAttachmentsForObjectAsync(dbObject.AyaType, dbObject.Id, ct); - await transaction.CommitAsync(); - await WorkOrderHandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); + AddError(ApiErrorCode.NOT_FOUND); + return false; } - catch - { - //NOTE: no need to rollback the transaction, it will auto-rollback if not committed and it is disposed when it goes out of scope either way + WorkOrderValidateCanDelete(dbObject); + if (HasErrors) + return false; - throw; + //States collection + if (!await StateDeleteAsync(id, transaction)) + return false; - } + //collect the child id's to delete + var ItemIds = await ct.WorkOrderItem.AsNoTracking().Where(z => z.WorkOrderId == id).Select(z => z.Id).ToListAsync(); + + //Delete children + foreach (long ItemId in ItemIds) + if (!await ItemDeleteAsync(ItemId, transaction)) + return false; + + ct.WorkOrder.Remove(dbObject); + await ct.SaveChangesAsync(); + + await EventLogProcessor.DeleteObjectLogAsync(UserId, dbObject.AyaType, dbObject.Id, dbObject.Serial.ToString(), ct); + await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, dbObject.AyaType, ct); + await TagBiz.ProcessDeleteTagsInRepositoryAsync(ct, dbObject.Tags); + await FileUtil.DeleteAttachmentsForObjectAsync(dbObject.AyaType, dbObject.Id, ct); + await transaction.CommitAsync(); + await WorkOrderHandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); return true; } } @@ -1405,24 +1395,16 @@ namespace AyaNova.Biz // (note: this would only ever be called when a workorder is deleted, there is no direct delete) internal async Task StateDeleteAsync(long workOrderId, IDbContextTransaction parentTransaction) { - try - { - var stateList = await ct.WorkOrderState.AsNoTracking().Where(z => z.WorkOrderId == workOrderId).ToListAsync(); + var stateList = await ct.WorkOrderState.AsNoTracking().Where(z => z.WorkOrderId == workOrderId).ToListAsync(); - foreach (var wostate in stateList) - { - ct.WorkOrderState.Remove(wostate); - await ct.SaveChangesAsync(); - //no need to call this because it's only going to run this method if the workorder is deleted and - //via process standard notifciation events for workorder deletion will remove any state delayed notifications anyway so - //nothing to call or do here related to notification - // await StateHandlePotentialNotificationEvent(AyaEvent.Deleted, wostate); - } - } - catch + foreach (var wostate in stateList) { - - throw; + ct.WorkOrderState.Remove(wostate); + await ct.SaveChangesAsync(); + //no need to call this because it's only going to run this method if the workorder is deleted and + //via process standard notifciation events for workorder deletion will remove any state delayed notifications anyway so + //nothing to call or do here related to notification + // await StateHandlePotentialNotificationEvent(AyaEvent.Deleted, wostate); } return true; } @@ -1827,81 +1809,73 @@ namespace AyaNova.Biz internal async Task ItemDeleteAsync(long id, IDbContextTransaction parentTransaction = null) { var transaction = parentTransaction ?? await ct.Database.BeginTransactionAsync(); - try + var dbObject = await ct.WorkOrderItem.AsNoTracking().SingleOrDefaultAsync(z => z.Id == id); + if (dbObject == null) { - var dbObject = await ct.WorkOrderItem.AsNoTracking().SingleOrDefaultAsync(z => z.Id == id); - if (dbObject == null) - { - AddError(ApiErrorCode.NOT_FOUND); + AddError(ApiErrorCode.NOT_FOUND); + return false; + } + ItemValidateCanDelete(dbObject); + if (HasErrors) + return false; + + //collect the child id's to delete + var ExpenseIds = await ct.WorkOrderItemExpense.Where(z => z.WorkOrderItemId == id).Select(z => z.Id).ToListAsync(); + var LaborIds = await ct.WorkOrderItemLabor.Where(z => z.WorkOrderItemId == id).Select(z => z.Id).ToListAsync(); + var LoanIds = await ct.WorkOrderItemLoan.Where(z => z.WorkOrderItemId == id).Select(z => z.Id).ToListAsync(); + var PartIds = await ct.WorkOrderItemPart.Where(z => z.WorkOrderItemId == id).Select(z => z.Id).ToListAsync(); + var PartRequestIds = await ct.WorkOrderItemPartRequest.Where(z => z.WorkOrderItemId == id).Select(z => z.Id).ToListAsync(); + var ScheduledUserIds = await ct.WorkOrderItemScheduledUser.Where(z => z.WorkOrderItemId == id).Select(z => z.Id).ToListAsync(); + var TaskIds = await ct.WorkOrderItemTask.Where(z => z.WorkOrderItemId == id).Select(z => z.Id).ToListAsync(); + var TravelIds = await ct.WorkOrderItemTravel.Where(z => z.WorkOrderItemId == id).Select(z => z.Id).ToListAsync(); + var UnitIds = await ct.WorkOrderItemUnit.Where(z => z.WorkOrderItemId == id).Select(z => z.Id).ToListAsync(); + var OutsideServiceIds = await ct.WorkOrderItemOutsideService.Where(z => z.WorkOrderItemId == id).Select(z => z.Id).ToListAsync(); + + //Delete children + foreach (long ItemId in ExpenseIds) + if (!await ExpenseDeleteAsync(ItemId, transaction)) return false; - } - ItemValidateCanDelete(dbObject); - if (HasErrors) + foreach (long ItemId in LaborIds) + if (!await LaborDeleteAsync(ItemId, transaction)) + return false; + foreach (long ItemId in LoanIds) + if (!await LoanDeleteAsync(ItemId, transaction)) + return false; + foreach (long ItemId in PartIds) + if (!await PartDeleteAsync(ItemId, transaction)) + return false; + foreach (long ItemId in PartRequestIds) + if (!await PartRequestDeleteAsync(ItemId, transaction)) + return false; + foreach (long ItemId in ScheduledUserIds) + if (!await ScheduledUserDeleteAsync(ItemId, transaction)) + return false; + foreach (long ItemId in TaskIds) + if (!await TaskDeleteAsync(ItemId, transaction)) + return false; + foreach (long ItemId in TravelIds) + if (!await TravelDeleteAsync(ItemId, transaction)) + return false; + foreach (long ItemId in UnitIds) + if (!await UnitDeleteAsync(ItemId, transaction)) + return false; + foreach (long ItemId in OutsideServiceIds) + if (!await OutsideServiceDeleteAsync(ItemId, transaction)) return false; - //collect the child id's to delete - var ExpenseIds = await ct.WorkOrderItemExpense.Where(z => z.WorkOrderItemId == id).Select(z => z.Id).ToListAsync(); - var LaborIds = await ct.WorkOrderItemLabor.Where(z => z.WorkOrderItemId == id).Select(z => z.Id).ToListAsync(); - var LoanIds = await ct.WorkOrderItemLoan.Where(z => z.WorkOrderItemId == id).Select(z => z.Id).ToListAsync(); - var PartIds = await ct.WorkOrderItemPart.Where(z => z.WorkOrderItemId == id).Select(z => z.Id).ToListAsync(); - var PartRequestIds = await ct.WorkOrderItemPartRequest.Where(z => z.WorkOrderItemId == id).Select(z => z.Id).ToListAsync(); - var ScheduledUserIds = await ct.WorkOrderItemScheduledUser.Where(z => z.WorkOrderItemId == id).Select(z => z.Id).ToListAsync(); - var TaskIds = await ct.WorkOrderItemTask.Where(z => z.WorkOrderItemId == id).Select(z => z.Id).ToListAsync(); - var TravelIds = await ct.WorkOrderItemTravel.Where(z => z.WorkOrderItemId == id).Select(z => z.Id).ToListAsync(); - var UnitIds = await ct.WorkOrderItemUnit.Where(z => z.WorkOrderItemId == id).Select(z => z.Id).ToListAsync(); - var OutsideServiceIds = await ct.WorkOrderItemOutsideService.Where(z => z.WorkOrderItemId == id).Select(z => z.Id).ToListAsync(); + ct.WorkOrderItem.Remove(dbObject); + await ct.SaveChangesAsync(); - //Delete children - foreach (long ItemId in ExpenseIds) - if (!await ExpenseDeleteAsync(ItemId, transaction)) - return false; - foreach (long ItemId in LaborIds) - if (!await LaborDeleteAsync(ItemId, transaction)) - return false; - foreach (long ItemId in LoanIds) - if (!await LoanDeleteAsync(ItemId, transaction)) - return false; - foreach (long ItemId in PartIds) - if (!await PartDeleteAsync(ItemId, transaction)) - return false; - foreach (long ItemId in PartRequestIds) - if (!await PartRequestDeleteAsync(ItemId, transaction)) - return false; - foreach (long ItemId in ScheduledUserIds) - if (!await ScheduledUserDeleteAsync(ItemId, transaction)) - return false; - foreach (long ItemId in TaskIds) - if (!await TaskDeleteAsync(ItemId, transaction)) - return false; - foreach (long ItemId in TravelIds) - if (!await TravelDeleteAsync(ItemId, transaction)) - return false; - foreach (long ItemId in UnitIds) - if (!await UnitDeleteAsync(ItemId, transaction)) - return false; - foreach (long ItemId in OutsideServiceIds) - if (!await OutsideServiceDeleteAsync(ItemId, transaction)) - return false; + //Log event + await EventLogProcessor.DeleteObjectLogAsync(UserId, dbObject.AyaType, dbObject.Id, "wo:" + dbObject.WorkOrderId.ToString(), ct);//FIX wo?? Not sure what is best here; revisit + await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, dbObject.AyaType, ct); + await TagBiz.ProcessDeleteTagsInRepositoryAsync(ct, dbObject.Tags); + await FileUtil.DeleteAttachmentsForObjectAsync(dbObject.AyaType, dbObject.Id, ct); - ct.WorkOrderItem.Remove(dbObject); - await ct.SaveChangesAsync(); - - //Log event - await EventLogProcessor.DeleteObjectLogAsync(UserId, dbObject.AyaType, dbObject.Id, "wo:" + dbObject.WorkOrderId.ToString(), ct);//FIX wo?? Not sure what is best here; revisit - await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, dbObject.AyaType, ct); - await TagBiz.ProcessDeleteTagsInRepositoryAsync(ct, dbObject.Tags); - await FileUtil.DeleteAttachmentsForObjectAsync(dbObject.AyaType, dbObject.Id, ct); - - //all good do the commit if it's ours - if (parentTransaction == null) - await transaction.CommitAsync(); - await ItemHandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); - } - catch - { - - throw; - } + //all good do the commit if it's ours + if (parentTransaction == null) + await transaction.CommitAsync(); + await ItemHandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); return true; } @@ -2162,26 +2136,18 @@ namespace AyaNova.Biz internal async Task ExpenseDeleteAsync(long id, IDbContextTransaction parentTransaction = null) { var transaction = parentTransaction ?? await ct.Database.BeginTransactionAsync(); - try - { - var dbObject = await ExpenseGetAsync(id, false); - ExpenseValidateCanDelete(dbObject); - if (HasErrors) - return false; - ct.WorkOrderItemExpense.Remove(dbObject); - await ct.SaveChangesAsync(); - //Log event - await EventLogProcessor.DeleteObjectLogAsync(UserId, dbObject.AyaType, dbObject.Id, "woitem:" + dbObject.WorkOrderItemId.ToString(), ct);//Fix?? - await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, dbObject.AyaType, ct); - if (parentTransaction == null) - await transaction.CommitAsync(); - await ExpenseHandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); - } - catch - { - - throw; - } + var dbObject = await ExpenseGetAsync(id, false); + ExpenseValidateCanDelete(dbObject); + if (HasErrors) + return false; + ct.WorkOrderItemExpense.Remove(dbObject); + await ct.SaveChangesAsync(); + //Log event + await EventLogProcessor.DeleteObjectLogAsync(UserId, dbObject.AyaType, dbObject.Id, "woitem:" + dbObject.WorkOrderItemId.ToString(), ct);//Fix?? + await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, dbObject.AyaType, ct); + if (parentTransaction == null) + await transaction.CommitAsync(); + await ExpenseHandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); return true; } @@ -2518,27 +2484,19 @@ namespace AyaNova.Biz internal async Task LaborDeleteAsync(long id, IDbContextTransaction parentTransaction = null) { var transaction = parentTransaction ?? await ct.Database.BeginTransactionAsync(); - try - { - var dbObject = await LaborGetAsync(id, false); - LaborValidateCanDelete(dbObject); - if (HasErrors) - return false; - ct.WorkOrderItemLabor.Remove(dbObject); - await ct.SaveChangesAsync(); + var dbObject = await LaborGetAsync(id, false); + LaborValidateCanDelete(dbObject); + if (HasErrors) + return false; + ct.WorkOrderItemLabor.Remove(dbObject); + await ct.SaveChangesAsync(); - //Log event - await EventLogProcessor.DeleteObjectLogAsync(UserId, dbObject.AyaType, dbObject.Id, "woitem:" + dbObject.WorkOrderItemId.ToString(), ct);//Fix?? - await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, dbObject.AyaType, ct); - if (parentTransaction == null) - await transaction.CommitAsync(); - await LaborHandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); - } - catch - { - - throw; - } + //Log event + await EventLogProcessor.DeleteObjectLogAsync(UserId, dbObject.AyaType, dbObject.Id, "woitem:" + dbObject.WorkOrderItemId.ToString(), ct);//Fix?? + await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, dbObject.AyaType, ct); + if (parentTransaction == null) + await transaction.CommitAsync(); + await LaborHandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); return true; } @@ -2899,26 +2857,19 @@ namespace AyaNova.Biz internal async Task LoanDeleteAsync(long id, IDbContextTransaction parentTransaction = null) { var transaction = parentTransaction ?? await ct.Database.BeginTransactionAsync(); - try - { - var dbObject = await LoanGetAsync(id, false); - LoanValidateCanDelete(dbObject); - if (HasErrors) - return false; - ct.WorkOrderItemLoan.Remove(dbObject); - await ct.SaveChangesAsync(); + var dbObject = await LoanGetAsync(id, false); + LoanValidateCanDelete(dbObject); + if (HasErrors) + return false; + ct.WorkOrderItemLoan.Remove(dbObject); + await ct.SaveChangesAsync(); - //Log event - await EventLogProcessor.DeleteObjectLogAsync(UserId, dbObject.AyaType, dbObject.Id, "woitem:" + dbObject.WorkOrderItemId.ToString(), ct);//Fix?? - await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, dbObject.AyaType, ct); - if (parentTransaction == null) - await transaction.CommitAsync(); - await LoanHandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); - } - catch - { - throw; - } + //Log event + await EventLogProcessor.DeleteObjectLogAsync(UserId, dbObject.AyaType, dbObject.Id, "woitem:" + dbObject.WorkOrderItemId.ToString(), ct);//Fix?? + await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, dbObject.AyaType, ct); + if (parentTransaction == null) + await transaction.CommitAsync(); + await LoanHandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); return true; } @@ -3295,26 +3246,19 @@ namespace AyaNova.Biz internal async Task OutsideServiceDeleteAsync(long id, IDbContextTransaction parentTransaction = null) { var transaction = parentTransaction ?? await ct.Database.BeginTransactionAsync(); - try - { - var dbObject = await OutsideServiceGetAsync(id, false); - OutsideServiceValidateCanDelete(dbObject); - if (HasErrors) - return false; - ct.WorkOrderItemOutsideService.Remove(dbObject); - await ct.SaveChangesAsync(); + var dbObject = await OutsideServiceGetAsync(id, false); + OutsideServiceValidateCanDelete(dbObject); + if (HasErrors) + return false; + ct.WorkOrderItemOutsideService.Remove(dbObject); + await ct.SaveChangesAsync(); - //Log event - await EventLogProcessor.DeleteObjectLogAsync(UserId, dbObject.AyaType, dbObject.Id, "woitem:" + dbObject.WorkOrderItemId.ToString(), ct);//Fix?? - await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, dbObject.AyaType, ct); - if (parentTransaction == null) - await transaction.CommitAsync(); - await OutsideServiceHandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); - } - catch - { - throw; - } + //Log event + await EventLogProcessor.DeleteObjectLogAsync(UserId, dbObject.AyaType, dbObject.Id, "woitem:" + dbObject.WorkOrderItemId.ToString(), ct);//Fix?? + await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, dbObject.AyaType, ct); + if (parentTransaction == null) + await transaction.CommitAsync(); + await OutsideServiceHandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); return true; } @@ -3781,34 +3725,26 @@ namespace AyaNova.Biz internal async Task PartDeleteAsync(long id, IDbContextTransaction parentTransaction = null) { var transaction = parentTransaction ?? await ct.Database.BeginTransactionAsync(); - - try + var dbObject = await PartGetAsync(id, false); + PartValidateCanDelete(dbObject); + if (HasErrors) + return false; + await PartBizActionsAsync(AyaEvent.Deleted, null, dbObject, transaction); + ct.WorkOrderItemPart.Remove(dbObject); + await ct.SaveChangesAsync(); + await PartInventoryAdjustmentAsync(AyaEvent.Deleted, null, dbObject, transaction); + if (HasErrors) { - var dbObject = await PartGetAsync(id, false); - PartValidateCanDelete(dbObject); - if (HasErrors) - return false; - await PartBizActionsAsync(AyaEvent.Deleted, null, dbObject, transaction); - ct.WorkOrderItemPart.Remove(dbObject); - await ct.SaveChangesAsync(); - await PartInventoryAdjustmentAsync(AyaEvent.Deleted, null, dbObject, transaction); - if (HasErrors) - { - await transaction.RollbackAsync(); - return false; - } - //Log event - await EventLogProcessor.DeleteObjectLogAsync(UserId, dbObject.AyaType, dbObject.Id, "woitem:" + dbObject.WorkOrderItemId.ToString(), ct);//Fix?? - await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, dbObject.AyaType, ct); + await transaction.RollbackAsync(); + return false; + } + //Log event + await EventLogProcessor.DeleteObjectLogAsync(UserId, dbObject.AyaType, dbObject.Id, "woitem:" + dbObject.WorkOrderItemId.ToString(), ct);//Fix?? + await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, dbObject.AyaType, ct); - if (parentTransaction == null) - await transaction.CommitAsync(); - await PartHandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); - } - catch - { - throw; - } + if (parentTransaction == null) + await transaction.CommitAsync(); + await PartHandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); return true; } @@ -4352,25 +4288,18 @@ namespace AyaNova.Biz internal async Task PartRequestDeleteAsync(long id, IDbContextTransaction parentTransaction = null) { var transaction = parentTransaction ?? await ct.Database.BeginTransactionAsync(); - try - { - var dbObject = await PartRequestGetAsync(id, false); - PartRequestValidateCanDelete(dbObject); - if (HasErrors) - return false; - ct.WorkOrderItemPartRequest.Remove(dbObject); - await ct.SaveChangesAsync(); - //Log event - await EventLogProcessor.DeleteObjectLogAsync(UserId, dbObject.AyaType, dbObject.Id, "woitem:" + dbObject.WorkOrderItemId.ToString(), ct);//Fix?? - await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, dbObject.AyaType, ct); - if (parentTransaction == null) - await transaction.CommitAsync(); - await PartRequestHandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); - } - catch - { - throw; - } + var dbObject = await PartRequestGetAsync(id, false); + PartRequestValidateCanDelete(dbObject); + if (HasErrors) + return false; + ct.WorkOrderItemPartRequest.Remove(dbObject); + await ct.SaveChangesAsync(); + //Log event + await EventLogProcessor.DeleteObjectLogAsync(UserId, dbObject.AyaType, dbObject.Id, "woitem:" + dbObject.WorkOrderItemId.ToString(), ct);//Fix?? + await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, dbObject.AyaType, ct); + if (parentTransaction == null) + await transaction.CommitAsync(); + await PartRequestHandlePotentialNotificationEvent(AyaEvent.Deleted, dbObject); return true; } diff --git a/server/AyaNova/biz/WorkOrderItemPriorityBiz.cs b/server/AyaNova/biz/WorkOrderItemPriorityBiz.cs index 425dbb17..0ab97bd2 100644 --- a/server/AyaNova/biz/WorkOrderItemPriorityBiz.cs +++ b/server/AyaNova/biz/WorkOrderItemPriorityBiz.cs @@ -137,31 +137,23 @@ namespace AyaNova.Biz { using (var transaction = await ct.Database.BeginTransactionAsync()) { - try + var dbObject = await GetAsync(id, false); + if (dbObject == null) { - var dbObject = await GetAsync(id, false); - if (dbObject == null) - { - AddError(ApiErrorCode.NOT_FOUND); - return false; - } - await ValidateCanDeleteAsync(dbObject); - if (HasErrors) - return false; - ct.WorkOrderItemPriority.Remove(dbObject); - await ct.SaveChangesAsync(); + AddError(ApiErrorCode.NOT_FOUND); + return false; + } + await ValidateCanDeleteAsync(dbObject); + if (HasErrors) + return false; + ct.WorkOrderItemPriority.Remove(dbObject); + await ct.SaveChangesAsync(); - //Log event - await EventLogProcessor.DeleteObjectLogAsync(UserId, BizType, dbObject.Id, dbObject.Name, ct); - await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, BizType, ct); - await FileUtil.DeleteAttachmentsForObjectAsync(BizType, dbObject.Id, ct); - await transaction.CommitAsync(); - } - catch - { - - throw; - } + //Log event + await EventLogProcessor.DeleteObjectLogAsync(UserId, BizType, dbObject.Id, dbObject.Name, ct); + await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, BizType, ct); + await FileUtil.DeleteAttachmentsForObjectAsync(BizType, dbObject.Id, ct); + await transaction.CommitAsync(); return true; } } diff --git a/server/AyaNova/biz/WorkOrderItemStatusBiz.cs b/server/AyaNova/biz/WorkOrderItemStatusBiz.cs index b34f2e17..5b82c239 100644 --- a/server/AyaNova/biz/WorkOrderItemStatusBiz.cs +++ b/server/AyaNova/biz/WorkOrderItemStatusBiz.cs @@ -137,31 +137,23 @@ namespace AyaNova.Biz { using (var transaction = await ct.Database.BeginTransactionAsync()) { - try + var dbObject = await GetAsync(id, false); + if (dbObject == null) { - var dbObject = await GetAsync(id, false); - if (dbObject == null) - { - AddError(ApiErrorCode.NOT_FOUND); - return false; - } - await ValidateCanDeleteAsync(dbObject); - if (HasErrors) - return false; - ct.WorkOrderItemStatus.Remove(dbObject); - await ct.SaveChangesAsync(); + AddError(ApiErrorCode.NOT_FOUND); + return false; + } + await ValidateCanDeleteAsync(dbObject); + if (HasErrors) + return false; + ct.WorkOrderItemStatus.Remove(dbObject); + await ct.SaveChangesAsync(); - //Log event - await EventLogProcessor.DeleteObjectLogAsync(UserId, BizType, dbObject.Id, dbObject.Name, ct); - await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, BizType, ct); - await FileUtil.DeleteAttachmentsForObjectAsync(BizType, dbObject.Id, ct); - await transaction.CommitAsync(); - } - catch - { - - throw; - } + //Log event + await EventLogProcessor.DeleteObjectLogAsync(UserId, BizType, dbObject.Id, dbObject.Name, ct); + await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, BizType, ct); + await FileUtil.DeleteAttachmentsForObjectAsync(BizType, dbObject.Id, ct); + await transaction.CommitAsync(); return true; } } diff --git a/server/AyaNova/biz/WorkOrderStatusBiz.cs b/server/AyaNova/biz/WorkOrderStatusBiz.cs index 5752dd12..f991d2c4 100644 --- a/server/AyaNova/biz/WorkOrderStatusBiz.cs +++ b/server/AyaNova/biz/WorkOrderStatusBiz.cs @@ -137,31 +137,23 @@ namespace AyaNova.Biz { using (var transaction = await ct.Database.BeginTransactionAsync()) { - try + var dbObject = await GetAsync(id, false); + if (dbObject == null) { - var dbObject = await GetAsync(id, false); - if (dbObject == null) - { - AddError(ApiErrorCode.NOT_FOUND); - return false; - } - await ValidateCanDeleteAsync(dbObject); - if (HasErrors) - return false; - ct.WorkOrderStatus.Remove(dbObject); - await ct.SaveChangesAsync(); + AddError(ApiErrorCode.NOT_FOUND); + return false; + } + await ValidateCanDeleteAsync(dbObject); + if (HasErrors) + return false; + ct.WorkOrderStatus.Remove(dbObject); + await ct.SaveChangesAsync(); - //Log event - await EventLogProcessor.DeleteObjectLogAsync(UserId, BizType, dbObject.Id, dbObject.Name, ct); - await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, BizType, ct); - await FileUtil.DeleteAttachmentsForObjectAsync(BizType, dbObject.Id, ct); - await transaction.CommitAsync(); - } - catch - { - - throw; - } + //Log event + await EventLogProcessor.DeleteObjectLogAsync(UserId, BizType, dbObject.Id, dbObject.Name, ct); + await Search.ProcessDeletedObjectKeywordsAsync(dbObject.Id, BizType, ct); + await FileUtil.DeleteAttachmentsForObjectAsync(BizType, dbObject.Id, ct); + await transaction.CommitAsync(); return true; } } diff --git a/server/AyaNova/util/Seeder.cs b/server/AyaNova/util/Seeder.cs index e075f664..f7e21a18 100644 --- a/server/AyaNova/util/Seeder.cs +++ b/server/AyaNova/util/Seeder.cs @@ -566,394 +566,608 @@ namespace AyaNova.Util // public async Task SeedKnownObjectsAsync(ILogger log) { - try - { - var KnownUserTags = new List(); - KnownUserTags.Add("known-user"); - KnownUserTags.Add("test-role-user"); - //TEST USERS - //one of each role type - await SeedUserAsync(log, 1, AuthorizationRoles.BizAdminRestricted, UserType.NotService, "BizAdminRestricted", "BizAdminRestricted", KnownUserTags); - await SeedUserAsync(log, 1, AuthorizationRoles.BizAdmin, UserType.NotService, "BizAdmin", "BizAdmin", KnownUserTags); - await SeedUserAsync(log, 1, AuthorizationRoles.ServiceRestricted, UserType.NotService, "ServiceRestricted", "ServiceRestricted", KnownUserTags); - await SeedUserAsync(log, 1, AuthorizationRoles.Service, UserType.NotService, "Service", "Service", KnownUserTags); - await SeedUserAsync(log, 1, AuthorizationRoles.InventoryRestricted, UserType.NotService, "InventoryRestricted", "InventoryRestricted", KnownUserTags); - await SeedUserAsync(log, 1, AuthorizationRoles.Inventory, UserType.NotService, "Inventory", "Inventory", KnownUserTags); - await SeedUserAsync(log, 1, AuthorizationRoles.Accounting, UserType.NotService, "Accounting", "Accounting", KnownUserTags); - KnownUserTechRestrictedId = await SeedUserAsync(log, 1, AuthorizationRoles.TechRestricted, UserType.Service, "TechRestricted", "TechRestricted", KnownUserTags); - KnownUserTechId = await SeedUserAsync(log, 1, AuthorizationRoles.Tech, UserType.Service, "Tech", "Tech", KnownUserTags); - await SeedUserAsync(log, 1, AuthorizationRoles.SalesRestricted, UserType.NotService, "SalesRestricted", "SalesRestricted", KnownUserTags); - KnownUserSalesId = await SeedUserAsync(log, 1, AuthorizationRoles.Sales, UserType.NotService, "Sales", "Sales", KnownUserTags); + var KnownUserTags = new List(); + KnownUserTags.Add("known-user"); + KnownUserTags.Add("test-role-user"); + //TEST USERS + //one of each role type + await SeedUserAsync(log, 1, AuthorizationRoles.BizAdminRestricted, UserType.NotService, "BizAdminRestricted", "BizAdminRestricted", KnownUserTags); + await SeedUserAsync(log, 1, AuthorizationRoles.BizAdmin, UserType.NotService, "BizAdmin", "BizAdmin", KnownUserTags); + await SeedUserAsync(log, 1, AuthorizationRoles.ServiceRestricted, UserType.NotService, "ServiceRestricted", "ServiceRestricted", KnownUserTags); + await SeedUserAsync(log, 1, AuthorizationRoles.Service, UserType.NotService, "Service", "Service", KnownUserTags); + await SeedUserAsync(log, 1, AuthorizationRoles.InventoryRestricted, UserType.NotService, "InventoryRestricted", "InventoryRestricted", KnownUserTags); + await SeedUserAsync(log, 1, AuthorizationRoles.Inventory, UserType.NotService, "Inventory", "Inventory", KnownUserTags); + await SeedUserAsync(log, 1, AuthorizationRoles.Accounting, UserType.NotService, "Accounting", "Accounting", KnownUserTags); + KnownUserTechRestrictedId = await SeedUserAsync(log, 1, AuthorizationRoles.TechRestricted, UserType.Service, "TechRestricted", "TechRestricted", KnownUserTags); + KnownUserTechId = await SeedUserAsync(log, 1, AuthorizationRoles.Tech, UserType.Service, "Tech", "Tech", KnownUserTags); + await SeedUserAsync(log, 1, AuthorizationRoles.SalesRestricted, UserType.NotService, "SalesRestricted", "SalesRestricted", KnownUserTags); + KnownUserSalesId = await SeedUserAsync(log, 1, AuthorizationRoles.Sales, UserType.NotService, "Sales", "Sales", KnownUserTags); - await SeedUserAsync(log, 1, AuthorizationRoles.OpsAdminRestricted, UserType.NotService, "OpsAdminRestricted", "OpsAdminRestricted", KnownUserTags); - await SeedUserAsync(log, 1, AuthorizationRoles.OpsAdmin, UserType.NotService, "OpsAdmin", "OpsAdmin", KnownUserTags); + await SeedUserAsync(log, 1, AuthorizationRoles.OpsAdminRestricted, UserType.NotService, "OpsAdminRestricted", "OpsAdminRestricted", KnownUserTags); + await SeedUserAsync(log, 1, AuthorizationRoles.OpsAdmin, UserType.NotService, "OpsAdmin", "OpsAdmin", KnownUserTags); - //Alternate translation users for each stock translation - await SeedUserAsync(log, 1, AuthorizationRoles.BizAdmin | AuthorizationRoles.OpsAdmin, UserType.NotService, true, "de", "de", await TranslationBiz.TranslationNameToIdStaticAsync("de"), KnownUserTags); - await SeedUserAsync(log, 1, AuthorizationRoles.BizAdmin | AuthorizationRoles.OpsAdmin, UserType.NotService, true, "es", "es", await TranslationBiz.TranslationNameToIdStaticAsync("es"), KnownUserTags); - await SeedUserAsync(log, 1, AuthorizationRoles.BizAdmin | AuthorizationRoles.OpsAdmin, UserType.NotService, true, "fr", "fr", await TranslationBiz.TranslationNameToIdStaticAsync("fr"), KnownUserTags); + //Alternate translation users for each stock translation + await SeedUserAsync(log, 1, AuthorizationRoles.BizAdmin | AuthorizationRoles.OpsAdmin, UserType.NotService, true, "de", "de", await TranslationBiz.TranslationNameToIdStaticAsync("de"), KnownUserTags); + await SeedUserAsync(log, 1, AuthorizationRoles.BizAdmin | AuthorizationRoles.OpsAdmin, UserType.NotService, true, "es", "es", await TranslationBiz.TranslationNameToIdStaticAsync("es"), KnownUserTags); + await SeedUserAsync(log, 1, AuthorizationRoles.BizAdmin | AuthorizationRoles.OpsAdmin, UserType.NotService, true, "fr", "fr", await TranslationBiz.TranslationNameToIdStaticAsync("fr"), KnownUserTags); -#if(DEBUG) - //PRIVACY TEST USER - this is used for a test to see if user info leaks into the logs - await SeedUserAsync(log, 1, AuthorizationRoles.OpsAdminRestricted, UserType.NotService, "TEST_PRIVACY_USER_ACCOUNT", "TEST_PRIVACY_USER_ACCOUNT", KnownUserTags); +#if (DEBUG) + //PRIVACY TEST USER - this is used for a test to see if user info leaks into the logs + await SeedUserAsync(log, 1, AuthorizationRoles.OpsAdminRestricted, UserType.NotService, "TEST_PRIVACY_USER_ACCOUNT", "TEST_PRIVACY_USER_ACCOUNT", KnownUserTags); - //TEST NOT ACTIVE - this is used for a test to see if inactive user can login - await SeedUserAsync(log, 1, AuthorizationRoles.OpsAdminRestricted, UserType.NotService, false, "TEST_INACTIVE", "TEST_INACTIVE", 0, KnownUserTags); + //TEST NOT ACTIVE - this is used for a test to see if inactive user can login + await SeedUserAsync(log, 1, AuthorizationRoles.OpsAdminRestricted, UserType.NotService, false, "TEST_INACTIVE", "TEST_INACTIVE", 0, KnownUserTags); #endif - ///////////////////////////////////////////////////// - //CONTRACTS + ///////////////////////////////////////////////////// + //CONTRACTS + { + await SeedTravelRateAsync(log, 1, "Bronze travel rate", true);//1 + await SeedTravelRateAsync(log, 1, "Silver travel rate", true);//2 + await SeedTravelRateAsync(log, 1, "Gold travel rate", true);//3 + await SeedServiceRateAsync(log, 1, "Bronze service rate", true);//1 + await SeedServiceRateAsync(log, 1, "Silver service rate", true);//2 + await SeedServiceRateAsync(log, 1, "Gold service rate", true);//3 + { - await SeedTravelRateAsync(log, 1, "Bronze travel rate", true);//1 - await SeedTravelRateAsync(log, 1, "Silver travel rate", true);//2 - await SeedTravelRateAsync(log, 1, "Gold travel rate", true);//3 - await SeedServiceRateAsync(log, 1, "Bronze service rate", true);//1 - await SeedServiceRateAsync(log, 1, "Silver service rate", true);//2 - await SeedServiceRateAsync(log, 1, "Gold service rate", true);//3 + Contract c = new Contract(); + c.Name = "Bronze"; + c.Active = true; + c.Notes = "These are notes providing additional information when users view the contract"; + c.AlertNotes = "These are alert notes displayed on workorders about this BRONZE contract"; + c.PartsOverridePct = 5m; + c.PartsOverrideType = ContractOverrideType.PriceDiscount; + c.ServiceRatesOverridePct = 5m; + c.ServiceRatesOverrideType = ContractOverrideType.PriceDiscount; + c.TravelRatesOverridePct = 5m; + c.TravelRatesOverrideType = ContractOverrideType.PriceDiscount; + c.ResponseTime = TimeSpan.Zero; + c.ContractServiceRatesOnly = true; + c.ServiceRateItems.Add(new ContractServiceRate() { ServiceRateId = 1 }); + c.ContractTravelRatesOnly = true; + c.TravelRateItems.Add(new ContractTravelRate() { TravelRateId = 1 }); + c.ContractServiceRateOverrideItems.Add(new ContractServiceRateOverride() { Tags = new string[] { "blue" }.ToList(), OverridePct = 5m, OverrideType = ContractOverrideType.PriceDiscount }); + c.ContractTravelRateOverrideItems.Add(new ContractTravelRateOverride() { Tags = new string[] { "blue" }.ToList(), OverridePct = 5m, OverrideType = ContractOverrideType.PriceDiscount }); + c.ContractPartOverrideItems.Add(new ContractPartOverride() { Tags = new string[] { "blue" }.ToList(), OverridePct = 10m, OverrideType = ContractOverrideType.PriceDiscount }); + using (AyContext ct = ServiceProviderProvider.DBContext) { - Contract c = new Contract(); - c.Name = "Bronze"; - c.Active = true; - c.Notes = "These are notes providing additional information when users view the contract"; - c.AlertNotes = "These are alert notes displayed on workorders about this BRONZE contract"; - c.PartsOverridePct = 5m; - c.PartsOverrideType = ContractOverrideType.PriceDiscount; - c.ServiceRatesOverridePct = 5m; - c.ServiceRatesOverrideType = ContractOverrideType.PriceDiscount; - c.TravelRatesOverridePct = 5m; - c.TravelRatesOverrideType = ContractOverrideType.PriceDiscount; - c.ResponseTime = TimeSpan.Zero; - c.ContractServiceRatesOnly = true; - c.ServiceRateItems.Add(new ContractServiceRate() { ServiceRateId = 1 }); - c.ContractTravelRatesOnly = true; - c.TravelRateItems.Add(new ContractTravelRate() { TravelRateId = 1 }); - c.ContractServiceRateOverrideItems.Add(new ContractServiceRateOverride() { Tags = new string[] { "blue" }.ToList(), OverridePct = 5m, OverrideType = ContractOverrideType.PriceDiscount }); - c.ContractTravelRateOverrideItems.Add(new ContractTravelRateOverride() { Tags = new string[] { "blue" }.ToList(), OverridePct = 5m, OverrideType = ContractOverrideType.PriceDiscount }); - c.ContractPartOverrideItems.Add(new ContractPartOverride() { Tags = new string[] { "blue" }.ToList(), OverridePct = 10m, OverrideType = ContractOverrideType.PriceDiscount }); + ContractBiz biz = ContractBiz.GetBiz(ct); + var NewObject = await biz.CreateAsync(c); - using (AyContext ct = ServiceProviderProvider.DBContext) + if (NewObject == null) { - ContractBiz biz = ContractBiz.GetBiz(ct); - var NewObject = await biz.CreateAsync(c); - - if (NewObject == null) - { - var err = $"Seeder::SeedKnownObjects error creating Bronze contract\r\n{biz.GetErrorsAsString()}"; - log.LogError(err); - throw new System.Exception(err); - } + var err = $"Seeder::SeedKnownObjects error creating Bronze contract\r\n{biz.GetErrorsAsString()}"; + log.LogError(err); + throw new System.Exception(err); } } + } + { + Contract c = new Contract(); + c.Name = "Silver"; + c.Active = true; + c.Notes = "These are notes providing additional information when users view the contract"; + c.AlertNotes = "These are alert notes displayed on workorders about this SILVER contract"; + c.PartsOverridePct = 10m; + c.PartsOverrideType = ContractOverrideType.PriceDiscount; + c.ServiceRatesOverridePct = 10m; + c.ServiceRatesOverrideType = ContractOverrideType.PriceDiscount; + c.TravelRatesOverridePct = 10; + c.TravelRatesOverrideType = ContractOverrideType.PriceDiscount; + c.ResponseTime = new TimeSpan(48, 0, 0);//48 hour response time + c.ContractServiceRatesOnly = true; + c.ServiceRateItems.Add(new ContractServiceRate() { ServiceRateId = 2 }); + c.ContractTravelRatesOnly = true; + c.TravelRateItems.Add(new ContractTravelRate() { TravelRateId = 2 }); + c.ContractServiceRateOverrideItems.Add(new ContractServiceRateOverride() { Tags = new string[] { "red" }.ToList(), OverridePct = 10m, OverrideType = ContractOverrideType.PriceDiscount }); + c.ContractTravelRateOverrideItems.Add(new ContractTravelRateOverride() { Tags = new string[] { "red" }.ToList(), OverridePct = 10m, OverrideType = ContractOverrideType.PriceDiscount }); + c.ContractPartOverrideItems.Add(new ContractPartOverride() { Tags = new string[] { "red" }.ToList(), OverridePct = 5m, OverrideType = ContractOverrideType.PriceDiscount }); + + using (AyContext ct = ServiceProviderProvider.DBContext) { - Contract c = new Contract(); - c.Name = "Silver"; - c.Active = true; - c.Notes = "These are notes providing additional information when users view the contract"; - c.AlertNotes = "These are alert notes displayed on workorders about this SILVER contract"; - c.PartsOverridePct = 10m; - c.PartsOverrideType = ContractOverrideType.PriceDiscount; - c.ServiceRatesOverridePct = 10m; - c.ServiceRatesOverrideType = ContractOverrideType.PriceDiscount; - c.TravelRatesOverridePct = 10; - c.TravelRatesOverrideType = ContractOverrideType.PriceDiscount; - c.ResponseTime = new TimeSpan(48, 0, 0);//48 hour response time - c.ContractServiceRatesOnly = true; - c.ServiceRateItems.Add(new ContractServiceRate() { ServiceRateId = 2 }); - c.ContractTravelRatesOnly = true; - c.TravelRateItems.Add(new ContractTravelRate() { TravelRateId = 2 }); - c.ContractServiceRateOverrideItems.Add(new ContractServiceRateOverride() { Tags = new string[] { "red" }.ToList(), OverridePct = 10m, OverrideType = ContractOverrideType.PriceDiscount }); - c.ContractTravelRateOverrideItems.Add(new ContractTravelRateOverride() { Tags = new string[] { "red" }.ToList(), OverridePct = 10m, OverrideType = ContractOverrideType.PriceDiscount }); - c.ContractPartOverrideItems.Add(new ContractPartOverride() { Tags = new string[] { "red" }.ToList(), OverridePct = 5m, OverrideType = ContractOverrideType.PriceDiscount }); + ContractBiz biz = ContractBiz.GetBiz(ct); + var NewObject = await biz.CreateAsync(c); - using (AyContext ct = ServiceProviderProvider.DBContext) + if (NewObject == null) { - ContractBiz biz = ContractBiz.GetBiz(ct); - var NewObject = await biz.CreateAsync(c); - - if (NewObject == null) - { - var err = $"Seeder::SeedKnownObjects error creating Silver contract\r\n{biz.GetErrorsAsString()}"; - log.LogError(err); - throw new System.Exception(err); - } + var err = $"Seeder::SeedKnownObjects error creating Silver contract\r\n{biz.GetErrorsAsString()}"; + log.LogError(err); + throw new System.Exception(err); } } + } + { + Contract c = new Contract(); + c.Name = "Gold"; + c.Active = true; + c.Notes = "These are notes providing additional information when users view the contract"; + c.AlertNotes = "These are alert notes displayed on workorders about this GOLD contract"; + c.PartsOverridePct = 15m; + c.PartsOverrideType = ContractOverrideType.PriceDiscount; + c.ServiceRatesOverridePct = 15m; + c.ServiceRatesOverrideType = ContractOverrideType.PriceDiscount; + c.TravelRatesOverridePct = 15m; + c.TravelRatesOverrideType = ContractOverrideType.PriceDiscount; + c.ResponseTime = new TimeSpan(24, 0, 0);//24 hour response time + c.ContractServiceRatesOnly = false; + c.ServiceRateItems.Add(new ContractServiceRate() { ServiceRateId = 3 }); + c.ContractTravelRatesOnly = false; + c.TravelRateItems.Add(new ContractTravelRate() { TravelRateId = 3 }); + c.ContractServiceRateOverrideItems.Add(new ContractServiceRateOverride() { Tags = new string[] { "green" }.ToList(), OverridePct = 20m, OverrideType = ContractOverrideType.PriceDiscount }); + c.ContractTravelRateOverrideItems.Add(new ContractTravelRateOverride() { Tags = new string[] { "green" }.ToList(), OverridePct = 20m, OverrideType = ContractOverrideType.PriceDiscount }); + c.ContractPartOverrideItems.Add(new ContractPartOverride() { Tags = new string[] { "green" }.ToList(), OverridePct = 20m, OverrideType = ContractOverrideType.PriceDiscount }); + + using (AyContext ct = ServiceProviderProvider.DBContext) { - Contract c = new Contract(); - c.Name = "Gold"; - c.Active = true; - c.Notes = "These are notes providing additional information when users view the contract"; - c.AlertNotes = "These are alert notes displayed on workorders about this GOLD contract"; - c.PartsOverridePct = 15m; - c.PartsOverrideType = ContractOverrideType.PriceDiscount; - c.ServiceRatesOverridePct = 15m; - c.ServiceRatesOverrideType = ContractOverrideType.PriceDiscount; - c.TravelRatesOverridePct = 15m; - c.TravelRatesOverrideType = ContractOverrideType.PriceDiscount; - c.ResponseTime = new TimeSpan(24, 0, 0);//24 hour response time - c.ContractServiceRatesOnly = false; - c.ServiceRateItems.Add(new ContractServiceRate() { ServiceRateId = 3 }); - c.ContractTravelRatesOnly = false; - c.TravelRateItems.Add(new ContractTravelRate() { TravelRateId = 3 }); - c.ContractServiceRateOverrideItems.Add(new ContractServiceRateOverride() { Tags = new string[] { "green" }.ToList(), OverridePct = 20m, OverrideType = ContractOverrideType.PriceDiscount }); - c.ContractTravelRateOverrideItems.Add(new ContractTravelRateOverride() { Tags = new string[] { "green" }.ToList(), OverridePct = 20m, OverrideType = ContractOverrideType.PriceDiscount }); - c.ContractPartOverrideItems.Add(new ContractPartOverride() { Tags = new string[] { "green" }.ToList(), OverridePct = 20m, OverrideType = ContractOverrideType.PriceDiscount }); + ContractBiz biz = ContractBiz.GetBiz(ct); + var NewObject = await biz.CreateAsync(c); - using (AyContext ct = ServiceProviderProvider.DBContext) + if (NewObject == null) { - ContractBiz biz = ContractBiz.GetBiz(ct); - var NewObject = await biz.CreateAsync(c); + var err = $"Seeder::SeedKnownObjects error creating Gold contract\r\n{biz.GetErrorsAsString()}"; + log.LogError(err); + throw new System.Exception(err); + } + } + } + } - if (NewObject == null) - { - var err = $"Seeder::SeedKnownObjects error creating Gold contract\r\n{biz.GetErrorsAsString()}"; - log.LogError(err); - throw new System.Exception(err); - } + + //////////////////////////////// + //HEADOFFICE + // + { + + long HeadOfficeIdForCustomer = 0; + //seed a HO + HeadOffice ho = new HeadOffice(); + ho.Name = "XYZ Head Office"; + + + ho.Active = true; + ho.Notes = Fake.Company.CatchPhrase(); + ho.Tags = RandomTags(); + + ho.AccountNumber = Fake.Finance.Account(); + ho.Latitude = (decimal)Fake.Address.Latitude(); + ho.Longitude = (decimal)Fake.Address.Longitude(); + ho.Address = Fake.Address.StreetAddress(); + ho.City = Fake.Address.City(); + ho.Region = Fake.Address.State(); + ho.Country = Fake.Address.Country(); + + ho.Phone1 = Fake.Phone.PhoneNumber(); + ho.Phone2 = Fake.Phone.PhoneNumber(); + ho.Phone3 = Fake.Phone.PhoneNumber(); + ho.WebAddress = Fake.Internet.Protocol() + "://example." + Fake.Internet.DomainSuffix(); + + ho.EmailAddress = Fake.Internet.ExampleEmail(); + + ho.ContractId = 3;//gold contract + ho.ContractExpires = DateTime.UtcNow.AddYears(1); + + using (AyContext ct = ServiceProviderProvider.DBContext) + { + HeadOfficeBiz biz = HeadOfficeBiz.GetBiz(ct); + var NewObject = await biz.CreateAsync(ho); + + if (NewObject == null) + { + var err = $"Seeder::SeedKnownHeadOffice error creating {ho.Name}\r\n{biz.GetErrorsAsString()}"; + log.LogError(err); + throw new System.Exception(err); + } + //Known HO type user + await SeedUserAsync(log, 1, AuthorizationRoles.Customer, UserType.HeadOffice, true, "HeadOffice", "HeadOffice", 0, KnownUserTags, null, null, NewObject.Id); + HeadOfficeIdForCustomer = NewObject.Id; + } + + + //CUSTOMER / HO Users + //seed a customer + Customer o = new Customer(); + o.Name = "XYZ Accounting"; + + o.HeadOfficeId = HeadOfficeIdForCustomer; + o.BillHeadOffice = true; + o.Active = true; + o.Notes = Fake.Company.CatchPhrase(); + o.Tags = RandomTags(); + + o.AccountNumber = Fake.Finance.Account(); + o.Latitude = (decimal)Fake.Address.Latitude(); + o.Longitude = (decimal)Fake.Address.Longitude(); + o.Address = Fake.Address.StreetAddress(); + o.City = Fake.Address.City(); + o.Region = Fake.Address.State(); + o.Country = Fake.Address.Country(); + + o.Phone1 = Fake.Phone.PhoneNumber(); + o.Phone2 = Fake.Phone.PhoneNumber(); + o.Phone3 = Fake.Phone.PhoneNumber(); + o.WebAddress = Fake.Internet.Protocol() + "://example." + Fake.Internet.DomainSuffix(); + o.EmailAddress = Fake.Internet.ExampleEmail(); + + + using (AyContext ct = ServiceProviderProvider.DBContext) + { + CustomerBiz biz = CustomerBiz.GetBiz(ct); + var NewObject = await biz.CreateAsync(o); + + if (NewObject == null) + { + var err = $"Seeder::SeedKnownCustomer error creating {o.Name}\r\n{biz.GetErrorsAsString()}"; + log.LogError(err); + throw new System.Exception(err); + } + //Known customer type users + KnownUserCustomerId = await SeedUserAsync(log, 1, AuthorizationRoles.Customer, UserType.Customer, true, "Customer", "Customer", 0, KnownUserTags, null, NewObject.Id, null); + KnownUserCustomerRestrictedId = await SeedUserAsync(log, 1, AuthorizationRoles.Customer, UserType.Customer, true, "CustomerRestricted", "CustomerRestricted", 0, KnownUserTags, null, NewObject.Id, null); + //5 units per customer + await SeedUnitAsync(log, 20, NewObject.Id);//5 times the customers or 5 units per customer + } + } + + + + //////////////////////////////// + //SHADOW UNITS "CUSTOMER" + // + { + + + //CUSTOMER / HO Users + //seed a customer + Customer o = new Customer(); + o.Name = "SHADOW_UNITS_CUSTOMER"; + + + o.Active = true; + o.Notes = "Customer to group our own Loan unit 'Shadow Units' under for tracking any required internal service to Loan Units"; + + + + using (AyContext ct = ServiceProviderProvider.DBContext) + { + CustomerBiz biz = CustomerBiz.GetBiz(ct); + var NewObject = await biz.CreateAsync(o); + + if (NewObject == null) + { + var err = $"Seeder::SeedKnownCustomer error creating {o.Name}\r\n{biz.GetErrorsAsString()}"; + log.LogError(err); + throw new System.Exception(err); + } + KnownCustomerForShadownUnitsId = NewObject.Id; + } + } + + + + //VENDOR AND SUBCONTRACTORS + { + + //Yellow Cedar Consulting + long VendorIdForSubContractorUser = 0; + Vendor o = new Vendor(); + o.Name = "Yellow Cedar Consulting"; + + + o.Active = true; + o.Notes = Fake.Company.CatchPhrase(); + o.Tags = RandomTags(); + + o.Contact = Fake.Name.FullName(); + o.ContactNotes = Fake.Name.FullName(); + o.AccountNumber = Fake.Finance.Account(); + o.Latitude = (decimal)Fake.Address.Latitude(); + o.Longitude = (decimal)Fake.Address.Longitude(); + o.Address = Fake.Address.StreetAddress(); + o.City = Fake.Address.City(); + o.Region = Fake.Address.State(); + o.Country = Fake.Address.Country(); + + o.Phone1 = Fake.Phone.PhoneNumber(); + o.Phone2 = Fake.Phone.PhoneNumber(); + o.Phone3 = Fake.Phone.PhoneNumber(); + o.WebAddress = Fake.Internet.Protocol() + "://example." + Fake.Internet.DomainSuffix(); + o.EmailAddress = Fake.Internet.ExampleEmail(); + + //This seems wrong to do in a loop but is 4 times faster this way ?!? + using (AyContext ct = ServiceProviderProvider.DBContext) + { + VendorBiz biz = VendorBiz.GetBiz(ct); + var NewObject = await biz.CreateAsync(o); + + if (NewObject == null) + { + var err = $"Seeder::SeedKnownVendor error creating {o.Name}\r\n{biz.GetErrorsAsString()}"; + log.LogError(err); + throw new System.Exception(err); + } + VendorIdForSubContractorUser = NewObject.Id; + + } + KnownUserSubContractorRestrictedId = await SeedUserAsync(log, 1, AuthorizationRoles.SubContractorRestricted, UserType.ServiceContractor, true, "SubContractorRestricted", "SubContractorRestricted", 0, KnownUserTags, VendorIdForSubContractorUser, null, null); + KnownUserSubContractorId = await SeedUserAsync(log, 1, AuthorizationRoles.SubContractor, UserType.ServiceContractor, true, "SubContractor", "SubContractor", 0, KnownUserTags, VendorIdForSubContractorUser, null, null); + } + + + ///////////////////////////////////////////////////// + //Seed some test memos + { + for (int x = 0; x < 200; x++) + { + Memo memo = new Memo(); + memo.Name = Fake.Lorem.Sentence(); + memo.Notes = Fake.Lorem.Paragraphs(); + memo.ToId = Fake.Random.Long(1, 17); + memo.FromId = Fake.Random.Long(1, 17); + memo.Tags = RandomTags(); + using (AyContext ct = ServiceProviderProvider.DBContext) + { + MemoBiz biz = MemoBiz.GetBiz(ct); + var NewObject = await biz.CreateAsync(memo); + + if (NewObject == null) + { + var err = $"Seeder::SeedKnownObjects error creating memo\r\n{biz.GetErrorsAsString()}"; + log.LogError(err); + throw new System.Exception(err); + } + } + } + } + + + + ///////////////////////////////////////////////////// + //WorkorderStatus + { + + { + WorkOrderStatus stat = new WorkOrderStatus(); + stat.Name = "Manager approval required"; + stat.Active = true; + stat.Color = "#c00000"; + stat.Completed = false; + stat.Locked = true; + stat.SelectRoles = AuthorizationRoles.Tech | AuthorizationRoles.TechRestricted; + stat.RemoveRoles = AuthorizationRoles.Service | AuthorizationRoles.BizAdmin; + stat.Notes = "Use to lock workorder and wait for approval from manager"; + using (AyContext ct = ServiceProviderProvider.DBContext) + { + WorkOrderStatusBiz biz = WorkOrderStatusBiz.GetBiz(ct); + var NewObject = await biz.CreateAsync(stat); + + if (NewObject == null) + { + var err = $"Seeder::SeedKnownObjects error creating workorder status\r\n{biz.GetErrorsAsString()}"; + log.LogError(err); + throw new System.Exception(err); + } + } + } + + { + WorkOrderStatus stat = new WorkOrderStatus(); + stat.Name = "Needs to be assigned"; + stat.Active = true; + stat.Color = "#80ffff"; + stat.Completed = false; + stat.Locked = false; + stat.SelectRoles = AuthorizationRoles.Service | AuthorizationRoles.BizAdmin | AuthorizationRoles.Tech; + stat.RemoveRoles = AuthorizationRoles.Service | AuthorizationRoles.BizAdmin | AuthorizationRoles.Tech; + stat.Notes = "Waiting for technicians to be assigned to this work"; + using (AyContext ct = ServiceProviderProvider.DBContext) + { + WorkOrderStatusBiz biz = WorkOrderStatusBiz.GetBiz(ct); + var NewObject = await biz.CreateAsync(stat); + + if (NewObject == null) + { + var err = $"Seeder::SeedKnownObjects error creating workorder status\r\n{biz.GetErrorsAsString()}"; + log.LogError(err); + throw new System.Exception(err); + } + } + } + + { + WorkOrderStatus stat = new WorkOrderStatus(); + stat.Name = "Scheduled"; + stat.Active = true; + stat.Color = "#00ff00"; + stat.Completed = false; + stat.Locked = false; + stat.SelectRoles = AuthorizationRoles.Tech | AuthorizationRoles.Service | AuthorizationRoles.BizAdmin; + stat.RemoveRoles = AuthorizationRoles.Service | AuthorizationRoles.BizAdmin | AuthorizationRoles.Tech | AuthorizationRoles.TechRestricted; + stat.Notes = "Scheduled / ready for service"; + using (AyContext ct = ServiceProviderProvider.DBContext) + { + WorkOrderStatusBiz biz = WorkOrderStatusBiz.GetBiz(ct); + var NewObject = await biz.CreateAsync(stat); + + if (NewObject == null) + { + var err = $"Seeder::SeedKnownObjects error creating workorder status\r\n{biz.GetErrorsAsString()}"; + log.LogError(err); + throw new System.Exception(err); + } + } + } + + { + WorkOrderStatus stat = new WorkOrderStatus(); + stat.Name = "Service completed"; + stat.Active = true; + stat.Color = "#ff0000"; + stat.Completed = true; + stat.Locked = true; + stat.SelectRoles = AuthorizationRoles.Tech | AuthorizationRoles.TechRestricted | AuthorizationRoles.Service | AuthorizationRoles.BizAdmin; + stat.RemoveRoles = AuthorizationRoles.Service | AuthorizationRoles.BizAdmin; + + using (AyContext ct = ServiceProviderProvider.DBContext) + { + WorkOrderStatusBiz biz = WorkOrderStatusBiz.GetBiz(ct); + var NewObject = await biz.CreateAsync(stat); + + if (NewObject == null) + { + var err = $"Seeder::SeedKnownObjects error creating workorder status\r\n{biz.GetErrorsAsString()}"; + log.LogError(err); + throw new System.Exception(err); + } + } + } + + { + WorkOrderStatus stat = new WorkOrderStatus(); + stat.Name = "Waiting on customer approval"; + stat.Active = true; + stat.Color = "#8080ff"; + stat.Completed = false; + stat.Locked = true; + stat.SelectRoles = AuthorizationRoles.Tech | AuthorizationRoles.TechRestricted | AuthorizationRoles.Service | AuthorizationRoles.BizAdmin; + stat.RemoveRoles = AuthorizationRoles.Service | AuthorizationRoles.BizAdmin | AuthorizationRoles.Tech; + using (AyContext ct = ServiceProviderProvider.DBContext) + { + WorkOrderStatusBiz biz = WorkOrderStatusBiz.GetBiz(ct); + var NewObject = await biz.CreateAsync(stat); + + if (NewObject == null) + { + var err = $"Seeder::SeedKnownObjects error creating workorder status\r\n{biz.GetErrorsAsString()}"; + log.LogError(err); + throw new System.Exception(err); + } + } + } + + { + WorkOrderStatus stat = new WorkOrderStatus(); + stat.Name = "Waiting on parts"; + stat.Active = true; + stat.Color = "#c0c000"; + stat.Completed = false; + stat.Locked = false; + stat.SelectRoles = AuthorizationRoles.Tech | AuthorizationRoles.TechRestricted | AuthorizationRoles.Service | AuthorizationRoles.BizAdmin; + stat.RemoveRoles = AuthorizationRoles.Service | AuthorizationRoles.BizAdmin | AuthorizationRoles.Tech | AuthorizationRoles.Inventory; + using (AyContext ct = ServiceProviderProvider.DBContext) + { + WorkOrderStatusBiz biz = WorkOrderStatusBiz.GetBiz(ct); + var NewObject = await biz.CreateAsync(stat); + + if (NewObject == null) + { + var err = $"Seeder::SeedKnownObjects error creating workorder status\r\n{biz.GetErrorsAsString()}"; + log.LogError(err); + throw new System.Exception(err); + } + } + } + + { + WorkOrderStatus stat = new WorkOrderStatus(); + stat.Name = "Waiting on warranty return"; + stat.Active = true; + stat.Color = "#ff00ff"; + stat.Completed = false; + stat.Locked = false; + stat.SelectRoles = AuthorizationRoles.Tech | AuthorizationRoles.TechRestricted | AuthorizationRoles.Service | AuthorizationRoles.BizAdmin; + stat.RemoveRoles = AuthorizationRoles.Service | AuthorizationRoles.BizAdmin | AuthorizationRoles.Tech | AuthorizationRoles.Inventory; + using (AyContext ct = ServiceProviderProvider.DBContext) + { + WorkOrderStatusBiz biz = WorkOrderStatusBiz.GetBiz(ct); + var NewObject = await biz.CreateAsync(stat); + + if (NewObject == null) + { + var err = $"Seeder::SeedKnownObjects error creating workorder status\r\n{biz.GetErrorsAsString()}"; + log.LogError(err); + throw new System.Exception(err); + } + } + } + + { + WorkOrderStatus stat = new WorkOrderStatus(); + stat.Name = "Waiting to be invoiced"; + stat.Active = true; + stat.Color = "#ffc0c0"; + stat.Completed = false; + stat.Locked = true; + stat.SelectRoles = AuthorizationRoles.Tech | AuthorizationRoles.TechRestricted | AuthorizationRoles.Service | AuthorizationRoles.BizAdmin; + stat.RemoveRoles = AuthorizationRoles.Tech | AuthorizationRoles.Accounting | AuthorizationRoles.Service | AuthorizationRoles.BizAdmin; + using (AyContext ct = ServiceProviderProvider.DBContext) + { + WorkOrderStatusBiz biz = WorkOrderStatusBiz.GetBiz(ct); + var NewObject = await biz.CreateAsync(stat); + + if (NewObject == null) + { + var err = $"Seeder::SeedKnownObjects error creating workorder status\r\n{biz.GetErrorsAsString()}"; + log.LogError(err); + throw new System.Exception(err); + } + } + } + + { + WorkOrderStatus stat = new WorkOrderStatus(); + stat.Name = "Closed"; + stat.Active = true; + stat.Color = "#f2f2f2"; + stat.Completed = true; + stat.Locked = true; + stat.SelectRoles = AuthorizationRoles.Service | AuthorizationRoles.BizAdmin; + stat.RemoveRoles = AuthorizationRoles.Service | AuthorizationRoles.BizAdmin; + + using (AyContext ct = ServiceProviderProvider.DBContext) + { + WorkOrderStatusBiz biz = WorkOrderStatusBiz.GetBiz(ct); + var NewObject = await biz.CreateAsync(stat); + + if (NewObject == null) + { + var err = $"Seeder::SeedKnownObjects error creating workorder status\r\n{biz.GetErrorsAsString()}"; + log.LogError(err); + throw new System.Exception(err); } } } - //////////////////////////////// - //HEADOFFICE + + ///////////////////////////////////////////////////// + //WORKORDERITEMSTATUS // { - long HeadOfficeIdForCustomer = 0; - //seed a HO - HeadOffice ho = new HeadOffice(); - ho.Name = "XYZ Head Office"; - - - ho.Active = true; - ho.Notes = Fake.Company.CatchPhrase(); - ho.Tags = RandomTags(); - - ho.AccountNumber = Fake.Finance.Account(); - ho.Latitude = (decimal)Fake.Address.Latitude(); - ho.Longitude = (decimal)Fake.Address.Longitude(); - ho.Address = Fake.Address.StreetAddress(); - ho.City = Fake.Address.City(); - ho.Region = Fake.Address.State(); - ho.Country = Fake.Address.Country(); - - ho.Phone1 = Fake.Phone.PhoneNumber(); - ho.Phone2 = Fake.Phone.PhoneNumber(); - ho.Phone3 = Fake.Phone.PhoneNumber(); - ho.WebAddress = Fake.Internet.Protocol() + "://example." + Fake.Internet.DomainSuffix(); - - ho.EmailAddress = Fake.Internet.ExampleEmail(); - - ho.ContractId = 3;//gold contract - ho.ContractExpires = DateTime.UtcNow.AddYears(1); - - using (AyContext ct = ServiceProviderProvider.DBContext) { - HeadOfficeBiz biz = HeadOfficeBiz.GetBiz(ct); - var NewObject = await biz.CreateAsync(ho); - - if (NewObject == null) - { - var err = $"Seeder::SeedKnownHeadOffice error creating {ho.Name}\r\n{biz.GetErrorsAsString()}"; - log.LogError(err); - throw new System.Exception(err); - } - //Known HO type user - await SeedUserAsync(log, 1, AuthorizationRoles.Customer, UserType.HeadOffice, true, "HeadOffice", "HeadOffice", 0, KnownUserTags, null, null, NewObject.Id); - HeadOfficeIdForCustomer = NewObject.Id; - } - - - //CUSTOMER / HO Users - //seed a customer - Customer o = new Customer(); - o.Name = "XYZ Accounting"; - - o.HeadOfficeId = HeadOfficeIdForCustomer; - o.BillHeadOffice = true; - o.Active = true; - o.Notes = Fake.Company.CatchPhrase(); - o.Tags = RandomTags(); - - o.AccountNumber = Fake.Finance.Account(); - o.Latitude = (decimal)Fake.Address.Latitude(); - o.Longitude = (decimal)Fake.Address.Longitude(); - o.Address = Fake.Address.StreetAddress(); - o.City = Fake.Address.City(); - o.Region = Fake.Address.State(); - o.Country = Fake.Address.Country(); - - o.Phone1 = Fake.Phone.PhoneNumber(); - o.Phone2 = Fake.Phone.PhoneNumber(); - o.Phone3 = Fake.Phone.PhoneNumber(); - o.WebAddress = Fake.Internet.Protocol() + "://example." + Fake.Internet.DomainSuffix(); - o.EmailAddress = Fake.Internet.ExampleEmail(); - - - using (AyContext ct = ServiceProviderProvider.DBContext) - { - CustomerBiz biz = CustomerBiz.GetBiz(ct); - var NewObject = await biz.CreateAsync(o); - - if (NewObject == null) - { - var err = $"Seeder::SeedKnownCustomer error creating {o.Name}\r\n{biz.GetErrorsAsString()}"; - log.LogError(err); - throw new System.Exception(err); - } - //Known customer type users - KnownUserCustomerId = await SeedUserAsync(log, 1, AuthorizationRoles.Customer, UserType.Customer, true, "Customer", "Customer", 0, KnownUserTags, null, NewObject.Id, null); - KnownUserCustomerRestrictedId = await SeedUserAsync(log, 1, AuthorizationRoles.Customer, UserType.Customer, true, "CustomerRestricted", "CustomerRestricted", 0, KnownUserTags, null, NewObject.Id, null); - //5 units per customer - await SeedUnitAsync(log, 20, NewObject.Id);//5 times the customers or 5 units per customer - } - } - - - - //////////////////////////////// - //SHADOW UNITS "CUSTOMER" - // - { - - - //CUSTOMER / HO Users - //seed a customer - Customer o = new Customer(); - o.Name = "SHADOW_UNITS_CUSTOMER"; - - - o.Active = true; - o.Notes = "Customer to group our own Loan unit 'Shadow Units' under for tracking any required internal service to Loan Units"; - - - - using (AyContext ct = ServiceProviderProvider.DBContext) - { - CustomerBiz biz = CustomerBiz.GetBiz(ct); - var NewObject = await biz.CreateAsync(o); - - if (NewObject == null) - { - var err = $"Seeder::SeedKnownCustomer error creating {o.Name}\r\n{biz.GetErrorsAsString()}"; - log.LogError(err); - throw new System.Exception(err); - } - KnownCustomerForShadownUnitsId = NewObject.Id; - } - } - - - - //VENDOR AND SUBCONTRACTORS - { - - //Yellow Cedar Consulting - long VendorIdForSubContractorUser = 0; - Vendor o = new Vendor(); - o.Name = "Yellow Cedar Consulting"; - - - o.Active = true; - o.Notes = Fake.Company.CatchPhrase(); - o.Tags = RandomTags(); - - o.Contact = Fake.Name.FullName(); - o.ContactNotes = Fake.Name.FullName(); - o.AccountNumber = Fake.Finance.Account(); - o.Latitude = (decimal)Fake.Address.Latitude(); - o.Longitude = (decimal)Fake.Address.Longitude(); - o.Address = Fake.Address.StreetAddress(); - o.City = Fake.Address.City(); - o.Region = Fake.Address.State(); - o.Country = Fake.Address.Country(); - - o.Phone1 = Fake.Phone.PhoneNumber(); - o.Phone2 = Fake.Phone.PhoneNumber(); - o.Phone3 = Fake.Phone.PhoneNumber(); - o.WebAddress = Fake.Internet.Protocol() + "://example." + Fake.Internet.DomainSuffix(); - o.EmailAddress = Fake.Internet.ExampleEmail(); - - //This seems wrong to do in a loop but is 4 times faster this way ?!? - using (AyContext ct = ServiceProviderProvider.DBContext) - { - VendorBiz biz = VendorBiz.GetBiz(ct); - var NewObject = await biz.CreateAsync(o); - - if (NewObject == null) - { - var err = $"Seeder::SeedKnownVendor error creating {o.Name}\r\n{biz.GetErrorsAsString()}"; - log.LogError(err); - throw new System.Exception(err); - } - VendorIdForSubContractorUser = NewObject.Id; - - } - KnownUserSubContractorRestrictedId = await SeedUserAsync(log, 1, AuthorizationRoles.SubContractorRestricted, UserType.ServiceContractor, true, "SubContractorRestricted", "SubContractorRestricted", 0, KnownUserTags, VendorIdForSubContractorUser, null, null); - KnownUserSubContractorId = await SeedUserAsync(log, 1, AuthorizationRoles.SubContractor, UserType.ServiceContractor, true, "SubContractor", "SubContractor", 0, KnownUserTags, VendorIdForSubContractorUser, null, null); - } - - - ///////////////////////////////////////////////////// - //Seed some test memos - { - for (int x = 0; x < 200; x++) - { - Memo memo = new Memo(); - memo.Name = Fake.Lorem.Sentence(); - memo.Notes = Fake.Lorem.Paragraphs(); - memo.ToId = Fake.Random.Long(1, 17); - memo.FromId = Fake.Random.Long(1, 17); - memo.Tags = RandomTags(); - using (AyContext ct = ServiceProviderProvider.DBContext) - { - MemoBiz biz = MemoBiz.GetBiz(ct); - var NewObject = await biz.CreateAsync(memo); - - if (NewObject == null) - { - var err = $"Seeder::SeedKnownObjects error creating memo\r\n{biz.GetErrorsAsString()}"; - log.LogError(err); - throw new System.Exception(err); - } - } - } - } - - - - ///////////////////////////////////////////////////// - //WorkorderStatus - { - - { - WorkOrderStatus stat = new WorkOrderStatus(); - stat.Name = "Manager approval required"; + WorkOrderItemStatus stat = new WorkOrderItemStatus(); + stat.Name = "Item is completed"; stat.Active = true; stat.Color = "#c00000"; - stat.Completed = false; - stat.Locked = true; - stat.SelectRoles = AuthorizationRoles.Tech | AuthorizationRoles.TechRestricted; - stat.RemoveRoles = AuthorizationRoles.Service | AuthorizationRoles.BizAdmin; - stat.Notes = "Use to lock workorder and wait for approval from manager"; + + stat.Notes = "Indicates this item has been completed"; using (AyContext ct = ServiceProviderProvider.DBContext) { - WorkOrderStatusBiz biz = WorkOrderStatusBiz.GetBiz(ct); + WorkOrderItemStatusBiz biz = WorkOrderItemStatusBiz.GetBiz(ct); var NewObject = await biz.CreateAsync(stat); if (NewObject == null) { - var err = $"Seeder::SeedKnownObjects error creating workorder status\r\n{biz.GetErrorsAsString()}"; + var err = $"Seeder::SeedKnownObjects error creating workorder item status\r\n{biz.GetErrorsAsString()}"; log.LogError(err); throw new System.Exception(err); } @@ -961,47 +1175,20 @@ namespace AyaNova.Util } { - WorkOrderStatus stat = new WorkOrderStatus(); - stat.Name = "Needs to be assigned"; - stat.Active = true; - stat.Color = "#80ffff"; - stat.Completed = false; - stat.Locked = false; - stat.SelectRoles = AuthorizationRoles.Service | AuthorizationRoles.BizAdmin | AuthorizationRoles.Tech; - stat.RemoveRoles = AuthorizationRoles.Service | AuthorizationRoles.BizAdmin | AuthorizationRoles.Tech; - stat.Notes = "Waiting for technicians to be assigned to this work"; - using (AyContext ct = ServiceProviderProvider.DBContext) - { - WorkOrderStatusBiz biz = WorkOrderStatusBiz.GetBiz(ct); - var NewObject = await biz.CreateAsync(stat); - - if (NewObject == null) - { - var err = $"Seeder::SeedKnownObjects error creating workorder status\r\n{biz.GetErrorsAsString()}"; - log.LogError(err); - throw new System.Exception(err); - } - } - } - - { - WorkOrderStatus stat = new WorkOrderStatus(); - stat.Name = "Scheduled"; + WorkOrderItemStatus stat = new WorkOrderItemStatus(); + stat.Name = "Item scheduled"; stat.Active = true; stat.Color = "#00ff00"; - stat.Completed = false; - stat.Locked = false; - stat.SelectRoles = AuthorizationRoles.Tech | AuthorizationRoles.Service | AuthorizationRoles.BizAdmin; - stat.RemoveRoles = AuthorizationRoles.Service | AuthorizationRoles.BizAdmin | AuthorizationRoles.Tech | AuthorizationRoles.TechRestricted; - stat.Notes = "Scheduled / ready for service"; + + stat.Notes = "Indicates this item has been scheduled"; using (AyContext ct = ServiceProviderProvider.DBContext) { - WorkOrderStatusBiz biz = WorkOrderStatusBiz.GetBiz(ct); + WorkOrderItemStatusBiz biz = WorkOrderItemStatusBiz.GetBiz(ct); var NewObject = await biz.CreateAsync(stat); if (NewObject == null) { - var err = $"Seeder::SeedKnownObjects error creating workorder status\r\n{biz.GetErrorsAsString()}"; + var err = $"Seeder::SeedKnownObjects error creating workorder item status\r\n{biz.GetErrorsAsString()}"; log.LogError(err); throw new System.Exception(err); } @@ -1009,360 +1196,49 @@ namespace AyaNova.Util } { - WorkOrderStatus stat = new WorkOrderStatus(); - stat.Name = "Service completed"; + WorkOrderItemStatus stat = new WorkOrderItemStatus(); + stat.Name = "Item on hold"; stat.Active = true; - stat.Color = "#ff0000"; - stat.Completed = true; - stat.Locked = true; - stat.SelectRoles = AuthorizationRoles.Tech | AuthorizationRoles.TechRestricted | AuthorizationRoles.Service | AuthorizationRoles.BizAdmin; - stat.RemoveRoles = AuthorizationRoles.Service | AuthorizationRoles.BizAdmin; + stat.Color = "#0000ff"; + stat.Notes = "Indicates this item is on hold"; using (AyContext ct = ServiceProviderProvider.DBContext) { - WorkOrderStatusBiz biz = WorkOrderStatusBiz.GetBiz(ct); + WorkOrderItemStatusBiz biz = WorkOrderItemStatusBiz.GetBiz(ct); var NewObject = await biz.CreateAsync(stat); if (NewObject == null) { - var err = $"Seeder::SeedKnownObjects error creating workorder status\r\n{biz.GetErrorsAsString()}"; + var err = $"Seeder::SeedKnownObjects error creating workorder item status\r\n{biz.GetErrorsAsString()}"; log.LogError(err); throw new System.Exception(err); } } } - - { - WorkOrderStatus stat = new WorkOrderStatus(); - stat.Name = "Waiting on customer approval"; - stat.Active = true; - stat.Color = "#8080ff"; - stat.Completed = false; - stat.Locked = true; - stat.SelectRoles = AuthorizationRoles.Tech | AuthorizationRoles.TechRestricted | AuthorizationRoles.Service | AuthorizationRoles.BizAdmin; - stat.RemoveRoles = AuthorizationRoles.Service | AuthorizationRoles.BizAdmin | AuthorizationRoles.Tech; - using (AyContext ct = ServiceProviderProvider.DBContext) - { - WorkOrderStatusBiz biz = WorkOrderStatusBiz.GetBiz(ct); - var NewObject = await biz.CreateAsync(stat); - - if (NewObject == null) - { - var err = $"Seeder::SeedKnownObjects error creating workorder status\r\n{biz.GetErrorsAsString()}"; - log.LogError(err); - throw new System.Exception(err); - } - } - } - - { - WorkOrderStatus stat = new WorkOrderStatus(); - stat.Name = "Waiting on parts"; - stat.Active = true; - stat.Color = "#c0c000"; - stat.Completed = false; - stat.Locked = false; - stat.SelectRoles = AuthorizationRoles.Tech | AuthorizationRoles.TechRestricted | AuthorizationRoles.Service | AuthorizationRoles.BizAdmin; - stat.RemoveRoles = AuthorizationRoles.Service | AuthorizationRoles.BizAdmin | AuthorizationRoles.Tech | AuthorizationRoles.Inventory; - using (AyContext ct = ServiceProviderProvider.DBContext) - { - WorkOrderStatusBiz biz = WorkOrderStatusBiz.GetBiz(ct); - var NewObject = await biz.CreateAsync(stat); - - if (NewObject == null) - { - var err = $"Seeder::SeedKnownObjects error creating workorder status\r\n{biz.GetErrorsAsString()}"; - log.LogError(err); - throw new System.Exception(err); - } - } - } - - { - WorkOrderStatus stat = new WorkOrderStatus(); - stat.Name = "Waiting on warranty return"; - stat.Active = true; - stat.Color = "#ff00ff"; - stat.Completed = false; - stat.Locked = false; - stat.SelectRoles = AuthorizationRoles.Tech | AuthorizationRoles.TechRestricted | AuthorizationRoles.Service | AuthorizationRoles.BizAdmin; - stat.RemoveRoles = AuthorizationRoles.Service | AuthorizationRoles.BizAdmin | AuthorizationRoles.Tech | AuthorizationRoles.Inventory; - using (AyContext ct = ServiceProviderProvider.DBContext) - { - WorkOrderStatusBiz biz = WorkOrderStatusBiz.GetBiz(ct); - var NewObject = await biz.CreateAsync(stat); - - if (NewObject == null) - { - var err = $"Seeder::SeedKnownObjects error creating workorder status\r\n{biz.GetErrorsAsString()}"; - log.LogError(err); - throw new System.Exception(err); - } - } - } - - { - WorkOrderStatus stat = new WorkOrderStatus(); - stat.Name = "Waiting to be invoiced"; - stat.Active = true; - stat.Color = "#ffc0c0"; - stat.Completed = false; - stat.Locked = true; - stat.SelectRoles = AuthorizationRoles.Tech | AuthorizationRoles.TechRestricted | AuthorizationRoles.Service | AuthorizationRoles.BizAdmin; - stat.RemoveRoles = AuthorizationRoles.Tech | AuthorizationRoles.Accounting | AuthorizationRoles.Service | AuthorizationRoles.BizAdmin; - using (AyContext ct = ServiceProviderProvider.DBContext) - { - WorkOrderStatusBiz biz = WorkOrderStatusBiz.GetBiz(ct); - var NewObject = await biz.CreateAsync(stat); - - if (NewObject == null) - { - var err = $"Seeder::SeedKnownObjects error creating workorder status\r\n{biz.GetErrorsAsString()}"; - log.LogError(err); - throw new System.Exception(err); - } - } - } - - { - WorkOrderStatus stat = new WorkOrderStatus(); - stat.Name = "Closed"; - stat.Active = true; - stat.Color = "#f2f2f2"; - stat.Completed = true; - stat.Locked = true; - stat.SelectRoles = AuthorizationRoles.Service | AuthorizationRoles.BizAdmin; - stat.RemoveRoles = AuthorizationRoles.Service | AuthorizationRoles.BizAdmin; - - using (AyContext ct = ServiceProviderProvider.DBContext) - { - WorkOrderStatusBiz biz = WorkOrderStatusBiz.GetBiz(ct); - var NewObject = await biz.CreateAsync(stat); - - if (NewObject == null) - { - var err = $"Seeder::SeedKnownObjects error creating workorder status\r\n{biz.GetErrorsAsString()}"; - log.LogError(err); - throw new System.Exception(err); - } - } - } - - - - ///////////////////////////////////////////////////// - //WORKORDERITEMSTATUS - // - { - - { - WorkOrderItemStatus stat = new WorkOrderItemStatus(); - stat.Name = "Item is completed"; - stat.Active = true; - stat.Color = "#c00000"; - - stat.Notes = "Indicates this item has been completed"; - using (AyContext ct = ServiceProviderProvider.DBContext) - { - WorkOrderItemStatusBiz biz = WorkOrderItemStatusBiz.GetBiz(ct); - var NewObject = await biz.CreateAsync(stat); - - if (NewObject == null) - { - var err = $"Seeder::SeedKnownObjects error creating workorder item status\r\n{biz.GetErrorsAsString()}"; - log.LogError(err); - throw new System.Exception(err); - } - } - } - - { - WorkOrderItemStatus stat = new WorkOrderItemStatus(); - stat.Name = "Item scheduled"; - stat.Active = true; - stat.Color = "#00ff00"; - - stat.Notes = "Indicates this item has been scheduled"; - using (AyContext ct = ServiceProviderProvider.DBContext) - { - WorkOrderItemStatusBiz biz = WorkOrderItemStatusBiz.GetBiz(ct); - var NewObject = await biz.CreateAsync(stat); - - if (NewObject == null) - { - var err = $"Seeder::SeedKnownObjects error creating workorder item status\r\n{biz.GetErrorsAsString()}"; - log.LogError(err); - throw new System.Exception(err); - } - } - } - - { - WorkOrderItemStatus stat = new WorkOrderItemStatus(); - stat.Name = "Item on hold"; - stat.Active = true; - stat.Color = "#0000ff"; - - stat.Notes = "Indicates this item is on hold"; - using (AyContext ct = ServiceProviderProvider.DBContext) - { - WorkOrderItemStatusBiz biz = WorkOrderItemStatusBiz.GetBiz(ct); - var NewObject = await biz.CreateAsync(stat); - - if (NewObject == null) - { - var err = $"Seeder::SeedKnownObjects error creating workorder item status\r\n{biz.GetErrorsAsString()}"; - log.LogError(err); - throw new System.Exception(err); - } - } - } - } - - - - ///////////////////////////////////////////////////// - //WORKORDERITEMPRIORITY - // - { - - { - WorkOrderItemPriority stat = new WorkOrderItemPriority(); - stat.Name = "Immediately"; - stat.Active = true; - stat.Color = "#c00000"; - - - using (AyContext ct = ServiceProviderProvider.DBContext) - { - WorkOrderItemPriorityBiz biz = WorkOrderItemPriorityBiz.GetBiz(ct); - var NewObject = await biz.CreateAsync(stat); - - if (NewObject == null) - { - var err = $"Seeder::SeedKnownObjects error creating workorder item status\r\n{biz.GetErrorsAsString()}"; - log.LogError(err); - throw new System.Exception(err); - } - } - } - - { - WorkOrderItemPriority stat = new WorkOrderItemPriority(); - stat.Name = "24 hours"; - stat.Active = true; - stat.Color = "#ff9900"; - - - using (AyContext ct = ServiceProviderProvider.DBContext) - { - WorkOrderItemPriorityBiz biz = WorkOrderItemPriorityBiz.GetBiz(ct); - var NewObject = await biz.CreateAsync(stat); - - if (NewObject == null) - { - var err = $"Seeder::SeedKnownObjects error creating workorder item status\r\n{biz.GetErrorsAsString()}"; - log.LogError(err); - throw new System.Exception(err); - } - } - } - - { - WorkOrderItemPriority stat = new WorkOrderItemPriority(); - stat.Name = "6 hours"; - stat.Active = true; - stat.Color = "#ffff00"; - - - using (AyContext ct = ServiceProviderProvider.DBContext) - { - WorkOrderItemPriorityBiz biz = WorkOrderItemPriorityBiz.GetBiz(ct); - var NewObject = await biz.CreateAsync(stat); - - if (NewObject == null) - { - var err = $"Seeder::SeedKnownObjects error creating workorder item status\r\n{biz.GetErrorsAsString()}"; - log.LogError(err); - throw new System.Exception(err); - } - } - } - - { - WorkOrderItemPriority stat = new WorkOrderItemPriority(); - stat.Name = "One week"; - stat.Active = true; - stat.Color = "#00ccff"; - - - using (AyContext ct = ServiceProviderProvider.DBContext) - { - WorkOrderItemPriorityBiz biz = WorkOrderItemPriorityBiz.GetBiz(ct); - var NewObject = await biz.CreateAsync(stat); - - if (NewObject == null) - { - var err = $"Seeder::SeedKnownObjects error creating workorder item status\r\n{biz.GetErrorsAsString()}"; - log.LogError(err); - throw new System.Exception(err); - } - } - } - - { - WorkOrderItemPriority stat = new WorkOrderItemPriority(); - stat.Name = "30 days"; - stat.Active = true; - stat.Color = "#00ff00"; - - - using (AyContext ct = ServiceProviderProvider.DBContext) - { - WorkOrderItemPriorityBiz biz = WorkOrderItemPriorityBiz.GetBiz(ct); - var NewObject = await biz.CreateAsync(stat); - - if (NewObject == null) - { - var err = $"Seeder::SeedKnownObjects error creating workorder item status\r\n{biz.GetErrorsAsString()}"; - log.LogError(err); - throw new System.Exception(err); - } - } - } - - - } - - - //========================= } - //--------- QUOTE STATUS ///////////////////////////////////////////////////// - //QuoteStatus + //WORKORDERITEMPRIORITY + // { { - QuoteStatus stat = new QuoteStatus(); - stat.Name = "Submitted"; + WorkOrderItemPriority stat = new WorkOrderItemPriority(); + stat.Name = "Immediately"; stat.Active = true; stat.Color = "#c00000"; - stat.Completed = true; - stat.Locked = true; - stat.SelectRoles = AuthorizationRoles.BizAdmin | AuthorizationRoles.Sales | AuthorizationRoles.Accounting; - stat.RemoveRoles = AuthorizationRoles.BizAdmin | AuthorizationRoles.Sales | AuthorizationRoles.Accounting; - stat.Notes = "Use to lock quote after given to customer and wait for approval"; + + using (AyContext ct = ServiceProviderProvider.DBContext) { - QuoteStatusBiz biz = QuoteStatusBiz.GetBiz(ct); + WorkOrderItemPriorityBiz biz = WorkOrderItemPriorityBiz.GetBiz(ct); var NewObject = await biz.CreateAsync(stat); if (NewObject == null) { - var err = $"Seeder::SeedKnownObjects error creating quote status\r\n{biz.GetErrorsAsString()}"; + var err = $"Seeder::SeedKnownObjects error creating workorder item status\r\n{biz.GetErrorsAsString()}"; log.LogError(err); throw new System.Exception(err); } @@ -1370,23 +1246,20 @@ namespace AyaNova.Util } { - QuoteStatus stat = new QuoteStatus(); - stat.Name = "Awarded"; + WorkOrderItemPriority stat = new WorkOrderItemPriority(); + stat.Name = "24 hours"; stat.Active = true; - stat.Color = "#80ffff"; - stat.Completed = true; - stat.Locked = true; - stat.SelectRoles = AuthorizationRoles.BizAdmin | AuthorizationRoles.Sales | AuthorizationRoles.Accounting; - stat.RemoveRoles = AuthorizationRoles.BizAdmin | AuthorizationRoles.Sales | AuthorizationRoles.Accounting | AuthorizationRoles.Service; - stat.Notes = "Waiting for work order to be generated"; + stat.Color = "#ff9900"; + + using (AyContext ct = ServiceProviderProvider.DBContext) { - QuoteStatusBiz biz = QuoteStatusBiz.GetBiz(ct); + WorkOrderItemPriorityBiz biz = WorkOrderItemPriorityBiz.GetBiz(ct); var NewObject = await biz.CreateAsync(stat); if (NewObject == null) { - var err = $"Seeder::SeedKnownObjects error creating quote status\r\n{biz.GetErrorsAsString()}"; + var err = $"Seeder::SeedKnownObjects error creating workorder item status\r\n{biz.GetErrorsAsString()}"; log.LogError(err); throw new System.Exception(err); } @@ -1394,274 +1267,389 @@ namespace AyaNova.Util } { - QuoteStatus stat = new QuoteStatus(); - stat.Name = "In progress"; + WorkOrderItemPriority stat = new WorkOrderItemPriority(); + stat.Name = "6 hours"; + stat.Active = true; + stat.Color = "#ffff00"; + + + using (AyContext ct = ServiceProviderProvider.DBContext) + { + WorkOrderItemPriorityBiz biz = WorkOrderItemPriorityBiz.GetBiz(ct); + var NewObject = await biz.CreateAsync(stat); + + if (NewObject == null) + { + var err = $"Seeder::SeedKnownObjects error creating workorder item status\r\n{biz.GetErrorsAsString()}"; + log.LogError(err); + throw new System.Exception(err); + } + } + } + + { + WorkOrderItemPriority stat = new WorkOrderItemPriority(); + stat.Name = "One week"; + stat.Active = true; + stat.Color = "#00ccff"; + + + using (AyContext ct = ServiceProviderProvider.DBContext) + { + WorkOrderItemPriorityBiz biz = WorkOrderItemPriorityBiz.GetBiz(ct); + var NewObject = await biz.CreateAsync(stat); + + if (NewObject == null) + { + var err = $"Seeder::SeedKnownObjects error creating workorder item status\r\n{biz.GetErrorsAsString()}"; + log.LogError(err); + throw new System.Exception(err); + } + } + } + + { + WorkOrderItemPriority stat = new WorkOrderItemPriority(); + stat.Name = "30 days"; stat.Active = true; stat.Color = "#00ff00"; - stat.Completed = false; - stat.Locked = false; - stat.SelectRoles = AuthorizationRoles.BizAdmin | AuthorizationRoles.Sales | AuthorizationRoles.Accounting; - stat.RemoveRoles = AuthorizationRoles.BizAdmin | AuthorizationRoles.Sales | AuthorizationRoles.Accounting; - stat.Notes = "In process of completing this quote"; + + using (AyContext ct = ServiceProviderProvider.DBContext) { - QuoteStatusBiz biz = QuoteStatusBiz.GetBiz(ct); + WorkOrderItemPriorityBiz biz = WorkOrderItemPriorityBiz.GetBiz(ct); var NewObject = await biz.CreateAsync(stat); if (NewObject == null) { - var err = $"Seeder::SeedKnownObjects error creating quote status\r\n{biz.GetErrorsAsString()}"; + var err = $"Seeder::SeedKnownObjects error creating workorder item status\r\n{biz.GetErrorsAsString()}"; log.LogError(err); throw new System.Exception(err); } } } - { - QuoteStatus stat = new QuoteStatus(); - stat.Name = "Not repairable"; - stat.Active = true; - stat.Color = "#ff0000"; - stat.Completed = true; - stat.Locked = true; - stat.SelectRoles = AuthorizationRoles.BizAdmin | AuthorizationRoles.Sales | AuthorizationRoles.Accounting; - stat.RemoveRoles = AuthorizationRoles.BizAdmin | AuthorizationRoles.Sales | AuthorizationRoles.Accounting; - stat.Notes = "Beyond economical repair"; - using (AyContext ct = ServiceProviderProvider.DBContext) - { - QuoteStatusBiz biz = QuoteStatusBiz.GetBiz(ct); - var NewObject = await biz.CreateAsync(stat); - - if (NewObject == null) - { - var err = $"Seeder::SeedKnownObjects error creating quote status\r\n{biz.GetErrorsAsString()}"; - log.LogError(err); - throw new System.Exception(err); - } - } - } - - { - QuoteStatus stat = new QuoteStatus(); - stat.Name = "New"; - stat.Active = true; - stat.Color = "#8080ff"; - stat.Completed = false; - stat.Locked = false; - stat.SelectRoles = AuthorizationRoles.BizAdmin | AuthorizationRoles.Sales | AuthorizationRoles.Accounting; - stat.RemoveRoles = AuthorizationRoles.BizAdmin | AuthorizationRoles.Sales | AuthorizationRoles.Accounting; - stat.Notes = "New quote required; Sales to complete this Quote for submission"; - using (AyContext ct = ServiceProviderProvider.DBContext) - { - QuoteStatusBiz biz = QuoteStatusBiz.GetBiz(ct); - var NewObject = await biz.CreateAsync(stat); - - if (NewObject == null) - { - var err = $"Seeder::SeedKnownObjects error creating quote status\r\n{biz.GetErrorsAsString()}"; - log.LogError(err); - throw new System.Exception(err); - } - } - } - - - - - { - QuoteStatus stat = new QuoteStatus(); - stat.Name = "Not awarded"; - stat.Active = true; - stat.Color = "#f2f2f2"; - stat.Completed = true; - stat.Locked = true; - stat.SelectRoles = AuthorizationRoles.BizAdmin | AuthorizationRoles.Sales | AuthorizationRoles.Accounting; - stat.RemoveRoles = AuthorizationRoles.BizAdmin | AuthorizationRoles.Sales | AuthorizationRoles.Accounting; - - using (AyContext ct = ServiceProviderProvider.DBContext) - { - QuoteStatusBiz biz = QuoteStatusBiz.GetBiz(ct); - var NewObject = await biz.CreateAsync(stat); - - if (NewObject == null) - { - var err = $"Seeder::SeedKnownObjects error creating quote status\r\n{biz.GetErrorsAsString()}"; - log.LogError(err); - throw new System.Exception(err); - } - } - } - } - //--------- /quote status - - - - - - ///////////////////////////////////////////////////// - //TASKGROUP - // - { - - { - TaskGroup t = new TaskGroup(); - t.Name = "Clean and inspect Class 7C"; - t.Active = true; - t.Notes = Fake.Lorem.Sentence(); - t.Items.Add(new TaskGroupItem() { Sequence = 1, Task = "Open unit" }); - t.Items.Add(new TaskGroupItem() { Sequence = 2, Task = "Test tinclavic seals" }); - t.Items.Add(new TaskGroupItem() { Sequence = 3, Task = "Inspect triple-bonded polysium for cracks" }); - t.Items.Add(new TaskGroupItem() { Sequence = 4, Task = "Verify thickness of zybanium shield" }); - t.Items.Add(new TaskGroupItem() { Sequence = 5, Task = "Close unit" }); - t.Items.Add(new TaskGroupItem() { Sequence = 6, Task = "Clean unit and confirm power up" }); - - - using (AyContext ct = ServiceProviderProvider.DBContext) - { - TaskGroupBiz biz = TaskGroupBiz.GetBiz(ct); - var NewObject = await biz.CreateAsync(t); - - if (NewObject == null) - { - var err = $"Seeder::SeedKnownObjects error creating TaskGroup\r\n{biz.GetErrorsAsString()}"; - log.LogError(err); - throw new System.Exception(err); - } - } - } - - { - TaskGroup t = new TaskGroup(); - t.Name = "Aerostat monitor standard refurb"; - t.Active = true; - t.Notes = Fake.Lorem.Sentence(); - t.Items.Add(new TaskGroupItem() { Sequence = 1, Task = "Power down unit" }); - t.Items.Add(new TaskGroupItem() { Sequence = 2, Task = "Open seals" }); - t.Items.Add(new TaskGroupItem() { Sequence = 3, Task = "Replace central core" }); - t.Items.Add(new TaskGroupItem() { Sequence = 4, Task = "Test point B, verify +.25" }); - t.Items.Add(new TaskGroupItem() { Sequence = 5, Task = "Replace seals" }); - t.Items.Add(new TaskGroupItem() { Sequence = 6, Task = "Confirm power up" }); - - - using (AyContext ct = ServiceProviderProvider.DBContext) - { - TaskGroupBiz biz = TaskGroupBiz.GetBiz(ct); - var NewObject = await biz.CreateAsync(t); - - if (NewObject == null) - { - var err = $"Seeder::SeedKnownObjects error creating TaskGroup\r\n{biz.GetErrorsAsString()}"; - log.LogError(err); - throw new System.Exception(err); - } - } - } } - ///////////////////////////////////////////////////// - //TAX CODES - // + //========================= + } + + + //--------- QUOTE STATUS + + ///////////////////////////////////////////////////// + //QuoteStatus + { { - { - TaxCode tc = new TaxCode(); - tc.Name = "Services only"; - tc.Notes = "Example service only tax"; - tc.Active = true; - tc.Tags = RandomTags(); - tc.TaxAPct = 5m; - tc.TaxBPct = 0m; - tc.TaxOnTax = false; - using (AyContext ct = ServiceProviderProvider.DBContext) - { - TaxCodeBiz biz = TaxCodeBiz.GetBiz(ct); - var NewObject = await biz.CreateAsync(tc); - - if (NewObject == null) - { - var err = $"Seeder::SeedKnownObjects error creating TaxCode\r\n{biz.GetErrorsAsString()}"; - log.LogError(err); - throw new System.Exception(err); - } - TCServices = NewObject.Id; - } - } - { - TaxCode tc = new TaxCode(); - tc.Name = "Goods only"; - tc.Active = true; - tc.Notes = "Example goods only tax"; - tc.Tags = RandomTags(); - tc.TaxAPct = 7m; - tc.TaxBPct = 0; - - tc.TaxOnTax = false; - using (AyContext ct = ServiceProviderProvider.DBContext) - { - TaxCodeBiz biz = TaxCodeBiz.GetBiz(ct); - var NewObject = await biz.CreateAsync(tc); - - if (NewObject == null) - { - var err = $"Seeder::SeedKnownObjects error creating TaxCode\r\n{biz.GetErrorsAsString()}"; - log.LogError(err); - throw new System.Exception(err); - } - TCGoods = NewObject.Id; - } - } - { - TaxCode tc = new TaxCode(); - tc.Name = "Services & Goods"; - tc.Active = true; - tc.Notes = "Example services and goods tax"; - tc.Tags = RandomTags(); - tc.TaxAPct = 5m; - tc.TaxBPct = 7m; - tc.TaxOnTax = false; - using (AyContext ct = ServiceProviderProvider.DBContext) - { - TaxCodeBiz biz = TaxCodeBiz.GetBiz(ct); - var NewObject = await biz.CreateAsync(tc); - - if (NewObject == null) - { - var err = $"Seeder::SeedKnownObjects error creating TaxCode\r\n{biz.GetErrorsAsString()}"; - log.LogError(err); - throw new System.Exception(err); - } - TCBoth = NewObject.Id; - - - } - } - } - - - ///////////////////////////////////////////////////// - //GLOBAL SETTINGS - { + QuoteStatus stat = new QuoteStatus(); + stat.Name = "Submitted"; + stat.Active = true; + stat.Color = "#c00000"; + stat.Completed = true; + stat.Locked = true; + stat.SelectRoles = AuthorizationRoles.BizAdmin | AuthorizationRoles.Sales | AuthorizationRoles.Accounting; + stat.RemoveRoles = AuthorizationRoles.BizAdmin | AuthorizationRoles.Sales | AuthorizationRoles.Accounting; + stat.Notes = "Use to lock quote after given to customer and wait for approval"; using (AyContext ct = ServiceProviderProvider.DBContext) { - GlobalBizSettingsBiz biz = GlobalBizSettingsBiz.GetBiz(ct); - var gbiz = await biz.GetAsync(false); - gbiz.TaxPartPurchaseId = TCGoods; - gbiz.TaxPartSaleId = TCGoods; - gbiz.TaxRateSaleId = TCServices; - await biz.PutAsync(gbiz); + QuoteStatusBiz biz = QuoteStatusBiz.GetBiz(ct); + var NewObject = await biz.CreateAsync(stat); + + if (NewObject == null) + { + var err = $"Seeder::SeedKnownObjects error creating quote status\r\n{biz.GetErrorsAsString()}"; + log.LogError(err); + throw new System.Exception(err); + } + } + } + + { + QuoteStatus stat = new QuoteStatus(); + stat.Name = "Awarded"; + stat.Active = true; + stat.Color = "#80ffff"; + stat.Completed = true; + stat.Locked = true; + stat.SelectRoles = AuthorizationRoles.BizAdmin | AuthorizationRoles.Sales | AuthorizationRoles.Accounting; + stat.RemoveRoles = AuthorizationRoles.BizAdmin | AuthorizationRoles.Sales | AuthorizationRoles.Accounting | AuthorizationRoles.Service; + stat.Notes = "Waiting for work order to be generated"; + using (AyContext ct = ServiceProviderProvider.DBContext) + { + QuoteStatusBiz biz = QuoteStatusBiz.GetBiz(ct); + var NewObject = await biz.CreateAsync(stat); + + if (NewObject == null) + { + var err = $"Seeder::SeedKnownObjects error creating quote status\r\n{biz.GetErrorsAsString()}"; + log.LogError(err); + throw new System.Exception(err); + } + } + } + + { + QuoteStatus stat = new QuoteStatus(); + stat.Name = "In progress"; + stat.Active = true; + stat.Color = "#00ff00"; + stat.Completed = false; + stat.Locked = false; + stat.SelectRoles = AuthorizationRoles.BizAdmin | AuthorizationRoles.Sales | AuthorizationRoles.Accounting; + stat.RemoveRoles = AuthorizationRoles.BizAdmin | AuthorizationRoles.Sales | AuthorizationRoles.Accounting; + stat.Notes = "In process of completing this quote"; + using (AyContext ct = ServiceProviderProvider.DBContext) + { + QuoteStatusBiz biz = QuoteStatusBiz.GetBiz(ct); + var NewObject = await biz.CreateAsync(stat); + + if (NewObject == null) + { + var err = $"Seeder::SeedKnownObjects error creating quote status\r\n{biz.GetErrorsAsString()}"; + log.LogError(err); + throw new System.Exception(err); + } + } + } + + { + QuoteStatus stat = new QuoteStatus(); + stat.Name = "Not repairable"; + stat.Active = true; + stat.Color = "#ff0000"; + stat.Completed = true; + stat.Locked = true; + stat.SelectRoles = AuthorizationRoles.BizAdmin | AuthorizationRoles.Sales | AuthorizationRoles.Accounting; + stat.RemoveRoles = AuthorizationRoles.BizAdmin | AuthorizationRoles.Sales | AuthorizationRoles.Accounting; + stat.Notes = "Beyond economical repair"; + using (AyContext ct = ServiceProviderProvider.DBContext) + { + QuoteStatusBiz biz = QuoteStatusBiz.GetBiz(ct); + var NewObject = await biz.CreateAsync(stat); + + if (NewObject == null) + { + var err = $"Seeder::SeedKnownObjects error creating quote status\r\n{biz.GetErrorsAsString()}"; + log.LogError(err); + throw new System.Exception(err); + } + } + } + + { + QuoteStatus stat = new QuoteStatus(); + stat.Name = "New"; + stat.Active = true; + stat.Color = "#8080ff"; + stat.Completed = false; + stat.Locked = false; + stat.SelectRoles = AuthorizationRoles.BizAdmin | AuthorizationRoles.Sales | AuthorizationRoles.Accounting; + stat.RemoveRoles = AuthorizationRoles.BizAdmin | AuthorizationRoles.Sales | AuthorizationRoles.Accounting; + stat.Notes = "New quote required; Sales to complete this Quote for submission"; + using (AyContext ct = ServiceProviderProvider.DBContext) + { + QuoteStatusBiz biz = QuoteStatusBiz.GetBiz(ct); + var NewObject = await biz.CreateAsync(stat); + + if (NewObject == null) + { + var err = $"Seeder::SeedKnownObjects error creating quote status\r\n{biz.GetErrorsAsString()}"; + log.LogError(err); + throw new System.Exception(err); + } } } - /////////////////////////////////////////////// + + { + QuoteStatus stat = new QuoteStatus(); + stat.Name = "Not awarded"; + stat.Active = true; + stat.Color = "#f2f2f2"; + stat.Completed = true; + stat.Locked = true; + stat.SelectRoles = AuthorizationRoles.BizAdmin | AuthorizationRoles.Sales | AuthorizationRoles.Accounting; + stat.RemoveRoles = AuthorizationRoles.BizAdmin | AuthorizationRoles.Sales | AuthorizationRoles.Accounting; + + using (AyContext ct = ServiceProviderProvider.DBContext) + { + QuoteStatusBiz biz = QuoteStatusBiz.GetBiz(ct); + var NewObject = await biz.CreateAsync(stat); + + if (NewObject == null) + { + var err = $"Seeder::SeedKnownObjects error creating quote status\r\n{biz.GetErrorsAsString()}"; + log.LogError(err); + throw new System.Exception(err); + } + } + } + } + //--------- /quote status + + + + + + ///////////////////////////////////////////////////// + //TASKGROUP + // + { + + { + TaskGroup t = new TaskGroup(); + t.Name = "Clean and inspect Class 7C"; + t.Active = true; + t.Notes = Fake.Lorem.Sentence(); + t.Items.Add(new TaskGroupItem() { Sequence = 1, Task = "Open unit" }); + t.Items.Add(new TaskGroupItem() { Sequence = 2, Task = "Test tinclavic seals" }); + t.Items.Add(new TaskGroupItem() { Sequence = 3, Task = "Inspect triple-bonded polysium for cracks" }); + t.Items.Add(new TaskGroupItem() { Sequence = 4, Task = "Verify thickness of zybanium shield" }); + t.Items.Add(new TaskGroupItem() { Sequence = 5, Task = "Close unit" }); + t.Items.Add(new TaskGroupItem() { Sequence = 6, Task = "Clean unit and confirm power up" }); + + + using (AyContext ct = ServiceProviderProvider.DBContext) + { + TaskGroupBiz biz = TaskGroupBiz.GetBiz(ct); + var NewObject = await biz.CreateAsync(t); + + if (NewObject == null) + { + var err = $"Seeder::SeedKnownObjects error creating TaskGroup\r\n{biz.GetErrorsAsString()}"; + log.LogError(err); + throw new System.Exception(err); + } + } + } + + { + TaskGroup t = new TaskGroup(); + t.Name = "Aerostat monitor standard refurb"; + t.Active = true; + t.Notes = Fake.Lorem.Sentence(); + t.Items.Add(new TaskGroupItem() { Sequence = 1, Task = "Power down unit" }); + t.Items.Add(new TaskGroupItem() { Sequence = 2, Task = "Open seals" }); + t.Items.Add(new TaskGroupItem() { Sequence = 3, Task = "Replace central core" }); + t.Items.Add(new TaskGroupItem() { Sequence = 4, Task = "Test point B, verify +.25" }); + t.Items.Add(new TaskGroupItem() { Sequence = 5, Task = "Replace seals" }); + t.Items.Add(new TaskGroupItem() { Sequence = 6, Task = "Confirm power up" }); + + + using (AyContext ct = ServiceProviderProvider.DBContext) + { + TaskGroupBiz biz = TaskGroupBiz.GetBiz(ct); + var NewObject = await biz.CreateAsync(t); + + if (NewObject == null) + { + var err = $"Seeder::SeedKnownObjects error creating TaskGroup\r\n{biz.GetErrorsAsString()}"; + log.LogError(err); + throw new System.Exception(err); + } + } + } } - catch + + + ///////////////////////////////////////////////////// + //TAX CODES + // + { - throw; + { + TaxCode tc = new TaxCode(); + tc.Name = "Services only"; + tc.Notes = "Example service only tax"; + tc.Active = true; + tc.Tags = RandomTags(); + tc.TaxAPct = 5m; + tc.TaxBPct = 0m; + tc.TaxOnTax = false; + using (AyContext ct = ServiceProviderProvider.DBContext) + { + TaxCodeBiz biz = TaxCodeBiz.GetBiz(ct); + var NewObject = await biz.CreateAsync(tc); + + if (NewObject == null) + { + var err = $"Seeder::SeedKnownObjects error creating TaxCode\r\n{biz.GetErrorsAsString()}"; + log.LogError(err); + throw new System.Exception(err); + } + TCServices = NewObject.Id; + } + } + { + TaxCode tc = new TaxCode(); + tc.Name = "Goods only"; + tc.Active = true; + tc.Notes = "Example goods only tax"; + tc.Tags = RandomTags(); + tc.TaxAPct = 7m; + tc.TaxBPct = 0; + + tc.TaxOnTax = false; + using (AyContext ct = ServiceProviderProvider.DBContext) + { + TaxCodeBiz biz = TaxCodeBiz.GetBiz(ct); + var NewObject = await biz.CreateAsync(tc); + + if (NewObject == null) + { + var err = $"Seeder::SeedKnownObjects error creating TaxCode\r\n{biz.GetErrorsAsString()}"; + log.LogError(err); + throw new System.Exception(err); + } + TCGoods = NewObject.Id; + } + } + { + TaxCode tc = new TaxCode(); + tc.Name = "Services & Goods"; + tc.Active = true; + tc.Notes = "Example services and goods tax"; + tc.Tags = RandomTags(); + tc.TaxAPct = 5m; + tc.TaxBPct = 7m; + tc.TaxOnTax = false; + using (AyContext ct = ServiceProviderProvider.DBContext) + { + TaxCodeBiz biz = TaxCodeBiz.GetBiz(ct); + var NewObject = await biz.CreateAsync(tc); + + if (NewObject == null) + { + var err = $"Seeder::SeedKnownObjects error creating TaxCode\r\n{biz.GetErrorsAsString()}"; + log.LogError(err); + throw new System.Exception(err); + } + TCBoth = NewObject.Id; + + + } + } + } + + + ///////////////////////////////////////////////////// + //GLOBAL SETTINGS + { + using (AyContext ct = ServiceProviderProvider.DBContext) + { + GlobalBizSettingsBiz biz = GlobalBizSettingsBiz.GetBiz(ct); + var gbiz = await biz.GetAsync(false); + gbiz.TaxPartPurchaseId = TCGoods; + gbiz.TaxPartSaleId = TCGoods; + gbiz.TaxRateSaleId = TCServices; + await biz.PutAsync(gbiz); + } } } @@ -3701,10 +3689,10 @@ namespace AyaNova.Util o.CustomerId = GetRandomCustomerId();//Fake.Random.Long(1, TotalSeededCustomers); //------ - o.CopyAttachments=true; - o.CopyWiki=true; + o.CopyAttachments = true; + o.CopyWiki = true; o.StopGeneratingDate = woDate.AddYears(1); - o.ExcludeDaysOfWeek = AyaDaysOfWeek.Saturday | AyaDaysOfWeek.Sunday; + o.ExcludeDaysOfWeek = AyaDaysOfWeek.Saturday | AyaDaysOfWeek.Sunday; o.Active = true; o.NextServiceDate = woDate.AddDays(1); o.RepeatInterval = 1; diff --git a/server/AyaNova/util/TaskUtil.cs b/server/AyaNova/util/TaskUtil.cs index d148b87a..2a1bb870 100644 --- a/server/AyaNova/util/TaskUtil.cs +++ b/server/AyaNova/util/TaskUtil.cs @@ -34,8 +34,7 @@ namespace AyaNova.Util await task.ConfigureAwait(false); } catch (Exception ex) - { - // TODO: consider whether derived types are also acceptable. + { if (!acceptableExceptions.Contains(ex.GetType())) throw; }