diff --git a/server/AyaNova/biz/CustomerBiz.cs b/server/AyaNova/biz/CustomerBiz.cs index dba9dc77..ec50571d 100644 --- a/server/AyaNova/biz/CustomerBiz.cs +++ b/server/AyaNova/biz/CustomerBiz.cs @@ -342,6 +342,8 @@ namespace AyaNova.Biz AddError(ApiErrorCode.VALIDATION_REFERENTIAL_INTEGRITY, "generalerror", await Translate("Unit")); if (await ct.CustomerServiceRequest.AnyAsync(m => m.CustomerId == inObj.Id)) AddError(ApiErrorCode.VALIDATION_REFERENTIAL_INTEGRITY, "generalerror", await Translate("CustomerServiceRequest")); + if (await ct.PurchaseOrder.AnyAsync(m => m.DropShipToCustomerId == inObj.Id)) + AddError(ApiErrorCode.VALIDATION_REFERENTIAL_INTEGRITY, "generalerror", await Translate("PurchaseOrder")); // await Task.CompletedTask; } diff --git a/server/AyaNova/biz/PartBiz.cs b/server/AyaNova/biz/PartBiz.cs index bb1ff032..db79907c 100644 --- a/server/AyaNova/biz/PartBiz.cs +++ b/server/AyaNova/biz/PartBiz.cs @@ -412,6 +412,8 @@ namespace AyaNova.Biz AddError(ApiErrorCode.VALIDATION_REFERENTIAL_INTEGRITY, "generalerror", await Translate("PartInventoryList"));//translates to "Part inventory" if (await ct.PartStockLevel.AnyAsync(m => m.PartId == inObj.Id)) AddError(ApiErrorCode.VALIDATION_REFERENTIAL_INTEGRITY, "generalerror", await Translate("PartStockingLevels")); + if (await ct.PurchaseOrderItem.AnyAsync(m => m.PartId == inObj.Id)) + AddError(ApiErrorCode.VALIDATION_REFERENTIAL_INTEGRITY, "generalerror", await Translate("PurchaseOrder")); } diff --git a/server/AyaNova/biz/PartWarehouseBiz.cs b/server/AyaNova/biz/PartWarehouseBiz.cs index 9c348251..7358ba58 100644 --- a/server/AyaNova/biz/PartWarehouseBiz.cs +++ b/server/AyaNova/biz/PartWarehouseBiz.cs @@ -271,6 +271,8 @@ namespace AyaNova.Biz AddError(ApiErrorCode.VALIDATION_REFERENTIAL_INTEGRITY, "generalerror", await Translate("PartInventoryTransaction")); if (await ct.PartStockLevel.AnyAsync(m => m.PartWarehouseId == inObj.Id)) AddError(ApiErrorCode.VALIDATION_REFERENTIAL_INTEGRITY, "generalerror", await Translate("PartStockingLevels")); + if (await ct.PurchaseOrderItem.AnyAsync(m => m.PartWarehouseId == inObj.Id)) + AddError(ApiErrorCode.VALIDATION_REFERENTIAL_INTEGRITY, "generalerror", await Translate("PurchaseOrder")); } diff --git a/server/AyaNova/biz/ProjectBiz.cs b/server/AyaNova/biz/ProjectBiz.cs index 596ca142..ac3b3deb 100644 --- a/server/AyaNova/biz/ProjectBiz.cs +++ b/server/AyaNova/biz/ProjectBiz.cs @@ -160,7 +160,7 @@ namespace AyaNova.Biz AddError(ApiErrorCode.NOT_FOUND); return false; } - ValidateCanDelete(dbObject); + await ValidateCanDeleteAsync(dbObject); if (HasErrors) return false; ct.Project.Remove(dbObject); @@ -244,13 +244,9 @@ namespace AyaNova.Biz } } - - //Any form customizations to validate? var FormCustomization = await ct.FormCustom.AsNoTracking().SingleOrDefaultAsync(x => x.FormKey == AyaType.Project.ToString()); if (FormCustomization != null) { - //Yeppers, do the validation, there are two, the custom fields and the regular fields that might be set to required - //validate users choices for required non custom fields RequiredFieldsValidator.Validate(this, FormCustomization, proposedObj); @@ -260,9 +256,12 @@ namespace AyaNova.Biz } - private void ValidateCanDelete(Project inObj) + private async Task ValidateCanDeleteAsync(Project inObj) { - //whatever needs to be check to delete this object + //Referential integrity + //FOREIGN KEY CHECKS + if (await ct.PurchaseOrder.AnyAsync(m => m.ProjectId == inObj.Id)) + AddError(ApiErrorCode.VALIDATION_REFERENTIAL_INTEGRITY, "generalerror", await Translate("PurchaseOrder")); } diff --git a/server/AyaNova/biz/VendorBiz.cs b/server/AyaNova/biz/VendorBiz.cs index 1ab0d885..cdd328c9 100644 --- a/server/AyaNova/biz/VendorBiz.cs +++ b/server/AyaNova/biz/VendorBiz.cs @@ -293,6 +293,8 @@ namespace AyaNova.Biz AddError(ApiErrorCode.VALIDATION_REFERENTIAL_INTEGRITY, "generalerror", await Translate("UnitModel")); if (await ct.Unit.AnyAsync(m => m.PurchasedFromVendorId == inObj.Id)) AddError(ApiErrorCode.VALIDATION_REFERENTIAL_INTEGRITY, "generalerror", await Translate("Unit")); + + //part has three potential references, if any match that's good enough since it's the same message if (await ct.Part.AnyAsync(z => z.ManufacturerId == inObj.Id) == true) AddError(ApiErrorCode.VALIDATION_REFERENTIAL_INTEGRITY, "generalerror", await Translate("Part")); @@ -300,6 +302,9 @@ namespace AyaNova.Biz AddError(ApiErrorCode.VALIDATION_REFERENTIAL_INTEGRITY, "generalerror", await Translate("Part")); else if (await ct.Part.AnyAsync(z => z.AlternativeWholeSalerId == inObj.Id) == true) AddError(ApiErrorCode.VALIDATION_REFERENTIAL_INTEGRITY, "generalerror", await Translate("Part")); + + if (await ct.PurchaseOrder.AnyAsync(m => m.VendorId == inObj.Id)) + AddError(ApiErrorCode.VALIDATION_REFERENTIAL_INTEGRITY, "generalerror", await Translate("PurchaseOrder")); } diff --git a/server/AyaNova/models/AyContext.cs b/server/AyaNova/models/AyContext.cs index 830ea67c..46c2c2b7 100644 --- a/server/AyaNova/models/AyContext.cs +++ b/server/AyaNova/models/AyContext.cs @@ -53,6 +53,7 @@ namespace AyaNova.Models public virtual DbSet PMTemplateItem { get; set; } public virtual DbSet Project { get; set; } public virtual DbSet PurchaseOrder { get; set; } + public virtual DbSet PurchaseOrderItem { get; set; } public virtual DbSet Quote { get; set; } public virtual DbSet QuoteItem { get; set; } public virtual DbSet QuoteTemplate { get; set; }