From fe7b8a080bc341d463cc50cb24ae2dd638be1ea3 Mon Sep 17 00:00:00 2001 From: gdlcf88 Date: Mon, 28 Sep 2020 16:50:24 +0800 Subject: [PATCH] Complete Coupon template scope management pages Multi-store authorization check for Coupons module --- .../Products/Localization/Products/cs.json | 4 +- .../Products/Localization/Products/en.json | 4 +- .../Products/Localization/Products/pl.json | 4 +- .../Products/Localization/Products/pt-BR.json | 4 +- .../Products/Localization/Products/sl.json | 4 +- .../Products/Localization/Products/tr.json | 4 +- .../Products/Localization/Products/vi.json | 4 +- .../EShop/Stores/Localization/Stores/cs.json | 4 +- .../EShop/Stores/Localization/Stores/en.json | 4 +- .../EShop/Stores/Localization/Stores/pl.json | 4 +- .../Stores/Localization/Stores/pt-BR.json | 4 +- .../EShop/Stores/Localization/Stores/sl.json | 4 +- .../EShop/Stores/Localization/Stores/tr.json | 4 +- .../EShop/Stores/Localization/Stores/vi.json | 4 +- .../Coupons/Dtos/GetCouponListInput.cs | 2 + .../CouponsPermissionDefinitionProvider.cs | 2 + .../Coupons/Permissions/CouponsPermissions.cs | 2 + ...p.EShop.Plugins.Coupons.Application.csproj | 1 + .../CouponTemplateAppService.cs | 34 ++++++-- .../Coupons/Coupons/CouponAppService.cs | 67 ++++++++++++--- .../EShopPluginsCouponsApplicationModule.cs | 4 +- .../Plugins/Coupons/Localization/cs.json | 12 ++- .../Plugins/Coupons/Localization/en.json | 12 ++- .../Plugins/Coupons/Localization/pl-PL.json | 12 ++- .../Plugins/Coupons/Localization/pt-BR.json | 12 ++- .../Plugins/Coupons/Localization/sl.json | 12 ++- .../Plugins/Coupons/Localization/tr.json | 12 ++- .../Plugins/Coupons/Localization/vi.json | 12 ++- .../Plugins/Coupons/Localization/zh-Hans.json | 8 ++ .../Plugins/Coupons/Localization/zh-Hant.json | 8 ++ .../CouponsWebAutoMapperProfile.cs | 5 ++ .../CouponTemplate/EditModal.cshtml.cs | 13 ++- .../CouponTemplates/CouponTemplate/index.js | 7 ++ .../CouponTemplateScope/CreateModal.cshtml | 19 +++++ .../CouponTemplateScope/CreateModal.cshtml.cs | 44 ++++++++++ .../CouponTemplateScope/EditModal.cshtml | 20 +++++ .../CouponTemplateScope/EditModal.cshtml.cs | 59 +++++++++++++ .../CouponTemplateScope/Index.cshtml | 62 ++++++++++++++ .../CouponTemplateScope/Index.cshtml.cs | 17 ++++ .../CreateEditCouponTemplateScopeViewModel.cs | 21 +++++ .../CouponTemplateScope/index.css | 0 .../CouponTemplateScope/index.js | 85 +++++++++++++++++++ 42 files changed, 560 insertions(+), 60 deletions(-) create mode 100644 plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/Pages/EShop/Plugins/Coupons/CouponTemplates/CouponTemplateScope/CreateModal.cshtml create mode 100644 plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/Pages/EShop/Plugins/Coupons/CouponTemplates/CouponTemplateScope/CreateModal.cshtml.cs create mode 100644 plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/Pages/EShop/Plugins/Coupons/CouponTemplates/CouponTemplateScope/EditModal.cshtml create mode 100644 plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/Pages/EShop/Plugins/Coupons/CouponTemplates/CouponTemplateScope/EditModal.cshtml.cs create mode 100644 plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/Pages/EShop/Plugins/Coupons/CouponTemplates/CouponTemplateScope/Index.cshtml create mode 100644 plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/Pages/EShop/Plugins/Coupons/CouponTemplates/CouponTemplateScope/Index.cshtml.cs create mode 100644 plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/Pages/EShop/Plugins/Coupons/CouponTemplates/CouponTemplateScope/ViewModels/CreateEditCouponTemplateScopeViewModel.cs create mode 100644 plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/Pages/EShop/Plugins/Coupons/CouponTemplates/CouponTemplateScope/index.css create mode 100644 plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/Pages/EShop/Plugins/Coupons/CouponTemplates/CouponTemplateScope/index.js diff --git a/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/cs.json b/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/cs.json index ef362132..2356f545 100644 --- a/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/cs.json +++ b/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/cs.json @@ -56,8 +56,8 @@ "EditProduct": "Edit", "ProductDeletionConfirmationMessage": "Are you sure to delete the product {0}?", "SuccessfullyDeleted": "Successfully deleted", - "CouponType.Normal": "X discount", - "CouponType.PerMeet": "X discount for every Y", + "CouponType.Normal": "Normal (X discount)", + "CouponType.PerMeet": "PerMeet (X discount for every Y)", "CouponType.Custom": "Custom", "Menu:Category": "Category", "Category": "Category", diff --git a/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/en.json b/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/en.json index 0fed0784..12c3c025 100644 --- a/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/en.json +++ b/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/en.json @@ -57,8 +57,8 @@ "EditProduct": "Edit", "ProductDeletionConfirmationMessage": "Are you sure to delete the product {0}?", "SuccessfullyDeleted": "Successfully deleted", - "CouponType.Normal": "X discount", - "CouponType.PerMeet": "X discount for every Y", + "CouponType.Normal": "Normal (X discount)", + "CouponType.PerMeet": "PerMeet (X discount for every Y)", "CouponType.Custom": "Custom", "Menu:Category": "Category", "Category": "Category", diff --git a/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/pl.json b/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/pl.json index 689e1db5..bd779745 100644 --- a/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/pl.json +++ b/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/pl.json @@ -56,8 +56,8 @@ "EditProduct": "Edit", "ProductDeletionConfirmationMessage": "Are you sure to delete the product {0}?", "SuccessfullyDeleted": "Successfully deleted", - "CouponType.Normal": "X discount", - "CouponType.PerMeet": "X discount for every Y", + "CouponType.Normal": "Normal (X discount)", + "CouponType.PerMeet": "PerMeet (X discount for every Y)", "CouponType.Custom": "Custom", "Menu:Category": "Category", "Category": "Category", diff --git a/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/pt-BR.json b/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/pt-BR.json index 8fe31f51..92f8d162 100644 --- a/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/pt-BR.json +++ b/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/pt-BR.json @@ -56,8 +56,8 @@ "EditProduct": "Edit", "ProductDeletionConfirmationMessage": "Are you sure to delete the product {0}?", "SuccessfullyDeleted": "Successfully deleted", - "CouponType.Normal": "X discount", - "CouponType.PerMeet": "X discount for every Y", + "CouponType.Normal": "Normal (X discount)", + "CouponType.PerMeet": "PerMeet (X discount for every Y)", "CouponType.Custom": "Custom", "Menu:Category": "Category", "Category": "Category", diff --git a/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/sl.json b/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/sl.json index 6cf4f29a..76b16483 100644 --- a/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/sl.json +++ b/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/sl.json @@ -57,8 +57,8 @@ "EditProduct": "Edit", "ProductDeletionConfirmationMessage": "Are you sure to delete the product {0}?", "SuccessfullyDeleted": "Successfully deleted", - "CouponType.Normal": "X discount", - "CouponType.PerMeet": "X discount for every Y", + "CouponType.Normal": "Normal (X discount)", + "CouponType.PerMeet": "PerMeet (X discount for every Y)", "CouponType.Custom": "Custom", "Menu:Category": "Category", "Category": "Category", diff --git a/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/tr.json b/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/tr.json index e824d6e9..4e2e98a9 100644 --- a/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/tr.json +++ b/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/tr.json @@ -57,8 +57,8 @@ "EditProduct": "Edit", "ProductDeletionConfirmationMessage": "Are you sure to delete the product {0}?", "SuccessfullyDeleted": "Successfully deleted", - "CouponType.Normal": "X discount", - "CouponType.PerMeet": "X discount for every Y", + "CouponType.Normal": "Normal (X discount)", + "CouponType.PerMeet": "PerMeet (X discount for every Y)", "CouponType.Custom": "Custom", "Menu:Category": "Category", "Category": "Category", diff --git a/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/vi.json b/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/vi.json index e0f7702c..117be7f6 100644 --- a/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/vi.json +++ b/modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/vi.json @@ -56,8 +56,8 @@ "EditProduct": "Edit", "ProductDeletionConfirmationMessage": "Are you sure to delete the product {0}?", "SuccessfullyDeleted": "Successfully deleted", - "CouponType.Normal": "X discount", - "CouponType.PerMeet": "X discount for every Y", + "CouponType.Normal": "Normal (X discount)", + "CouponType.PerMeet": "PerMeet (X discount for every Y)", "CouponType.Custom": "Custom", "Menu:Category": "Category", "Category": "Category", diff --git a/modules/EasyAbp.EShop.Stores/src/EasyAbp.EShop.Stores.Domain.Shared/EasyAbp/EShop/Stores/Localization/Stores/cs.json b/modules/EasyAbp.EShop.Stores/src/EasyAbp.EShop.Stores.Domain.Shared/EasyAbp/EShop/Stores/Localization/Stores/cs.json index f95e23b5..74ad23fe 100644 --- a/modules/EasyAbp.EShop.Stores/src/EasyAbp.EShop.Stores.Domain.Shared/EasyAbp/EShop/Stores/Localization/Stores/cs.json +++ b/modules/EasyAbp.EShop.Stores/src/EasyAbp.EShop.Stores.Domain.Shared/EasyAbp/EShop/Stores/Localization/Stores/cs.json @@ -10,8 +10,8 @@ "EditStore": "Edit", "StoreDeletionConfirmationMessage": "Are you sure to delete the store {0}?", "SuccessfullyDeleted": "Successfully deleted", - "CouponType.Normal": "X discount", - "CouponType.PerMeet": "X discount for every Y", + "CouponType.Normal": "Normal (X discount)", + "CouponType.PerMeet": "PerMeet (X discount for every Y)", "CouponType.Custom": "Custom", "StoreOwner": "Store owner", "Menu:StoreOwner": "Store owner", diff --git a/modules/EasyAbp.EShop.Stores/src/EasyAbp.EShop.Stores.Domain.Shared/EasyAbp/EShop/Stores/Localization/Stores/en.json b/modules/EasyAbp.EShop.Stores/src/EasyAbp.EShop.Stores.Domain.Shared/EasyAbp/EShop/Stores/Localization/Stores/en.json index 32ad83e4..668a23ce 100644 --- a/modules/EasyAbp.EShop.Stores/src/EasyAbp.EShop.Stores.Domain.Shared/EasyAbp/EShop/Stores/Localization/Stores/en.json +++ b/modules/EasyAbp.EShop.Stores/src/EasyAbp.EShop.Stores.Domain.Shared/EasyAbp/EShop/Stores/Localization/Stores/en.json @@ -11,8 +11,8 @@ "EditStore": "Edit", "StoreDeletionConfirmationMessage": "Are you sure to delete the store {0}?", "SuccessfullyDeleted": "Successfully deleted", - "CouponType.Normal": "X discount", - "CouponType.PerMeet": "X discount for every Y", + "CouponType.Normal": "Normal (X discount)", + "CouponType.PerMeet": "PerMeet (X discount for every Y)", "CouponType.Custom": "Custom", "StoreOwner": "Store owner", "Menu:StoreOwner": "Store owner", diff --git a/modules/EasyAbp.EShop.Stores/src/EasyAbp.EShop.Stores.Domain.Shared/EasyAbp/EShop/Stores/Localization/Stores/pl.json b/modules/EasyAbp.EShop.Stores/src/EasyAbp.EShop.Stores.Domain.Shared/EasyAbp/EShop/Stores/Localization/Stores/pl.json index d74ad4df..94ec8ed3 100644 --- a/modules/EasyAbp.EShop.Stores/src/EasyAbp.EShop.Stores.Domain.Shared/EasyAbp/EShop/Stores/Localization/Stores/pl.json +++ b/modules/EasyAbp.EShop.Stores/src/EasyAbp.EShop.Stores.Domain.Shared/EasyAbp/EShop/Stores/Localization/Stores/pl.json @@ -10,8 +10,8 @@ "EditStore": "Edit", "StoreDeletionConfirmationMessage": "Are you sure to delete the store {0}?", "SuccessfullyDeleted": "Successfully deleted", - "CouponType.Normal": "X discount", - "CouponType.PerMeet": "X discount for every Y", + "CouponType.Normal": "Normal (X discount)", + "CouponType.PerMeet": "PerMeet (X discount for every Y)", "CouponType.Custom": "Custom", "StoreOwner": "Store owner", "Menu:StoreOwner": "Store owner", diff --git a/modules/EasyAbp.EShop.Stores/src/EasyAbp.EShop.Stores.Domain.Shared/EasyAbp/EShop/Stores/Localization/Stores/pt-BR.json b/modules/EasyAbp.EShop.Stores/src/EasyAbp.EShop.Stores.Domain.Shared/EasyAbp/EShop/Stores/Localization/Stores/pt-BR.json index b9b6ce42..526a4c9b 100644 --- a/modules/EasyAbp.EShop.Stores/src/EasyAbp.EShop.Stores.Domain.Shared/EasyAbp/EShop/Stores/Localization/Stores/pt-BR.json +++ b/modules/EasyAbp.EShop.Stores/src/EasyAbp.EShop.Stores.Domain.Shared/EasyAbp/EShop/Stores/Localization/Stores/pt-BR.json @@ -10,8 +10,8 @@ "EditStore": "Edit", "StoreDeletionConfirmationMessage": "Are you sure to delete the store {0}?", "SuccessfullyDeleted": "Successfully deleted", - "CouponType.Normal": "X discount", - "CouponType.PerMeet": "X discount for every Y", + "CouponType.Normal": "Normal (X discount)", + "CouponType.PerMeet": "PerMeet (X discount for every Y)", "CouponType.Custom": "Custom", "StoreOwner": "Store owner", "Menu:StoreOwner": "Store owner", diff --git a/modules/EasyAbp.EShop.Stores/src/EasyAbp.EShop.Stores.Domain.Shared/EasyAbp/EShop/Stores/Localization/Stores/sl.json b/modules/EasyAbp.EShop.Stores/src/EasyAbp.EShop.Stores.Domain.Shared/EasyAbp/EShop/Stores/Localization/Stores/sl.json index d68b8312..d01e0aa9 100644 --- a/modules/EasyAbp.EShop.Stores/src/EasyAbp.EShop.Stores.Domain.Shared/EasyAbp/EShop/Stores/Localization/Stores/sl.json +++ b/modules/EasyAbp.EShop.Stores/src/EasyAbp.EShop.Stores.Domain.Shared/EasyAbp/EShop/Stores/Localization/Stores/sl.json @@ -11,8 +11,8 @@ "EditStore": "Edit", "StoreDeletionConfirmationMessage": "Are you sure to delete the store {0}?", "SuccessfullyDeleted": "Successfully deleted", - "CouponType.Normal": "X discount", - "CouponType.PerMeet": "X discount for every Y", + "CouponType.Normal": "Normal (X discount)", + "CouponType.PerMeet": "PerMeet (X discount for every Y)", "CouponType.Custom": "Custom", "StoreOwner": "Store owner", "Menu:StoreOwner": "Store owner", diff --git a/modules/EasyAbp.EShop.Stores/src/EasyAbp.EShop.Stores.Domain.Shared/EasyAbp/EShop/Stores/Localization/Stores/tr.json b/modules/EasyAbp.EShop.Stores/src/EasyAbp.EShop.Stores.Domain.Shared/EasyAbp/EShop/Stores/Localization/Stores/tr.json index b423993c..eb71f510 100644 --- a/modules/EasyAbp.EShop.Stores/src/EasyAbp.EShop.Stores.Domain.Shared/EasyAbp/EShop/Stores/Localization/Stores/tr.json +++ b/modules/EasyAbp.EShop.Stores/src/EasyAbp.EShop.Stores.Domain.Shared/EasyAbp/EShop/Stores/Localization/Stores/tr.json @@ -11,8 +11,8 @@ "EditStore": "Edit", "StoreDeletionConfirmationMessage": "Are you sure to delete the store {0}?", "SuccessfullyDeleted": "Successfully deleted", - "CouponType.Normal": "X discount", - "CouponType.PerMeet": "X discount for every Y", + "CouponType.Normal": "Normal (X discount)", + "CouponType.PerMeet": "PerMeet (X discount for every Y)", "CouponType.Custom": "Custom", "StoreOwner": "Store owner", "Menu:StoreOwner": "Store owner", diff --git a/modules/EasyAbp.EShop.Stores/src/EasyAbp.EShop.Stores.Domain.Shared/EasyAbp/EShop/Stores/Localization/Stores/vi.json b/modules/EasyAbp.EShop.Stores/src/EasyAbp.EShop.Stores.Domain.Shared/EasyAbp/EShop/Stores/Localization/Stores/vi.json index 2e54950b..b81dbb76 100644 --- a/modules/EasyAbp.EShop.Stores/src/EasyAbp.EShop.Stores.Domain.Shared/EasyAbp/EShop/Stores/Localization/Stores/vi.json +++ b/modules/EasyAbp.EShop.Stores/src/EasyAbp.EShop.Stores.Domain.Shared/EasyAbp/EShop/Stores/Localization/Stores/vi.json @@ -10,8 +10,8 @@ "EditStore": "Edit", "StoreDeletionConfirmationMessage": "Are you sure to delete the store {0}?", "SuccessfullyDeleted": "Successfully deleted", - "CouponType.Normal": "X discount", - "CouponType.PerMeet": "X discount for every Y", + "CouponType.Normal": "Normal (X discount)", + "CouponType.PerMeet": "PerMeet (X discount for every Y)", "CouponType.Custom": "Custom", "StoreOwner": "Store owner", "Menu:StoreOwner": "Store owner", diff --git a/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Application.Contracts/EasyAbp/EShop/Plugins/Coupons/Coupons/Dtos/GetCouponListInput.cs b/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Application.Contracts/EasyAbp/EShop/Plugins/Coupons/Coupons/Dtos/GetCouponListInput.cs index 58748592..a4235349 100644 --- a/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Application.Contracts/EasyAbp/EShop/Plugins/Coupons/Coupons/Dtos/GetCouponListInput.cs +++ b/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Application.Contracts/EasyAbp/EShop/Plugins/Coupons/Coupons/Dtos/GetCouponListInput.cs @@ -8,6 +8,8 @@ namespace EasyAbp.EShop.Plugins.Coupons.Coupons.Dtos { public bool AvailableOnly { get; set; } + public Guid? StoreId { get; set; } + public Guid? UserId { get; set; } } } \ No newline at end of file diff --git a/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Application.Contracts/EasyAbp/EShop/Plugins/Coupons/Permissions/CouponsPermissionDefinitionProvider.cs b/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Application.Contracts/EasyAbp/EShop/Plugins/Coupons/Permissions/CouponsPermissionDefinitionProvider.cs index a762b909..f63968b7 100644 --- a/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Application.Contracts/EasyAbp/EShop/Plugins/Coupons/Permissions/CouponsPermissionDefinitionProvider.cs +++ b/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Application.Contracts/EasyAbp/EShop/Plugins/Coupons/Permissions/CouponsPermissionDefinitionProvider.cs @@ -11,6 +11,7 @@ namespace EasyAbp.EShop.Plugins.Coupons.Permissions var myGroup = context.AddGroup(CouponsPermissions.GroupName, L("Permission:Coupons")); var couponTemplatePermission = myGroup.AddPermission(CouponsPermissions.CouponTemplate.Default, L("Permission:CouponTemplate")); + couponTemplatePermission.AddChild(CouponsPermissions.CouponTemplate.CrossStore, L("Permission:CrossStore")); couponTemplatePermission.AddChild(CouponsPermissions.CouponTemplate.Create, L("Permission:Create")); couponTemplatePermission.AddChild(CouponsPermissions.CouponTemplate.Update, L("Permission:Update")); couponTemplatePermission.AddChild(CouponsPermissions.CouponTemplate.Delete, L("Permission:Delete")); @@ -18,6 +19,7 @@ namespace EasyAbp.EShop.Plugins.Coupons.Permissions var couponPermission = myGroup.AddPermission(CouponsPermissions.Coupon.Default, L("Permission:Coupon")); couponPermission.AddChild(CouponsPermissions.Coupon.Use, L("Permission:Use")); couponPermission.AddChild(CouponsPermissions.Coupon.Manage, L("Permission:Manage")); + couponPermission.AddChild(CouponsPermissions.Coupon.CrossStore, L("Permission:CrossStore")); couponPermission.AddChild(CouponsPermissions.Coupon.Create, L("Permission:Create")); couponPermission.AddChild(CouponsPermissions.Coupon.Update, L("Permission:Update")); couponPermission.AddChild(CouponsPermissions.Coupon.Delete, L("Permission:Delete")); diff --git a/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Application.Contracts/EasyAbp/EShop/Plugins/Coupons/Permissions/CouponsPermissions.cs b/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Application.Contracts/EasyAbp/EShop/Plugins/Coupons/Permissions/CouponsPermissions.cs index 64f3b58f..0d5e74ff 100644 --- a/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Application.Contracts/EasyAbp/EShop/Plugins/Coupons/Permissions/CouponsPermissions.cs +++ b/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Application.Contracts/EasyAbp/EShop/Plugins/Coupons/Permissions/CouponsPermissions.cs @@ -14,6 +14,7 @@ namespace EasyAbp.EShop.Plugins.Coupons.Permissions public class CouponTemplate { public const string Default = GroupName + ".CouponTemplate"; + public const string CrossStore = Default + ".CrossStore"; public const string Update = Default + ".Update"; public const string Create = Default + ".Create"; public const string Delete = Default + ".Delete"; @@ -24,6 +25,7 @@ namespace EasyAbp.EShop.Plugins.Coupons.Permissions public const string Default = GroupName + ".Coupon"; public const string Use = Default + ".Use"; public const string Manage = Default + ".Manage"; + public const string CrossStore = Default + ".CrossStore"; public const string Update = Default + ".Update"; public const string Create = Default + ".Create"; public const string Delete = Default + ".Delete"; diff --git a/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Application/EasyAbp.EShop.Plugins.Coupons.Application.csproj b/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Application/EasyAbp.EShop.Plugins.Coupons.Application.csproj index 02cf7664..cdce45ff 100644 --- a/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Application/EasyAbp.EShop.Plugins.Coupons.Application.csproj +++ b/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Application/EasyAbp.EShop.Plugins.Coupons.Application.csproj @@ -10,6 +10,7 @@ + diff --git a/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Application/EasyAbp/EShop/Plugins/Coupons/CouponTemplates/CouponTemplateAppService.cs b/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Application/EasyAbp/EShop/Plugins/Coupons/CouponTemplates/CouponTemplateAppService.cs index 22e513a6..93d14ee7 100644 --- a/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Application/EasyAbp/EShop/Plugins/Coupons/CouponTemplates/CouponTemplateAppService.cs +++ b/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Application/EasyAbp/EShop/Plugins/Coupons/CouponTemplates/CouponTemplateAppService.cs @@ -5,6 +5,8 @@ using System.Linq; using System.Threading.Tasks; using EasyAbp.EShop.Plugins.Coupons.Permissions; using EasyAbp.EShop.Plugins.Coupons.CouponTemplates.Dtos; +using EasyAbp.EShop.Stores.Authorization; +using Microsoft.AspNetCore.Authorization; using Volo.Abp.Application.Dtos; using Volo.Abp.Application.Services; @@ -33,8 +35,14 @@ namespace EasyAbp.EShop.Plugins.Coupons.CouponTemplates public override async Task CreateAsync(CreateUpdateCouponTemplateDto input) { - await CheckCreatePolicyAsync(); - + await AuthorizationService.CheckMultiStorePolicyAsync(input.StoreId, CreatePolicyName, + CouponsPermissions.CouponTemplate.CrossStore); + + if (input.Scopes.Any(x => x.StoreId != input.StoreId)) + { + await AuthorizationService.CheckAsync(CouponsPermissions.CouponTemplate.CrossStore); + } + var entity = await MapToEntityAsync(input); TryToSetTenantId(entity); @@ -52,10 +60,16 @@ namespace EasyAbp.EShop.Plugins.Coupons.CouponTemplates public override async Task UpdateAsync(Guid id, CreateUpdateCouponTemplateDto input) { - await CheckUpdatePolicyAsync(); - var entity = await GetEntityByIdAsync(id); + await AuthorizationService.CheckMultiStorePolicyAsync(entity.StoreId, UpdatePolicyName, + CouponsPermissions.CouponTemplate.CrossStore); + + if (input.StoreId != entity.StoreId || input.Scopes.Any(x => x.StoreId != input.StoreId)) + { + await AuthorizationService.CheckAsync(CouponsPermissions.CouponTemplate.CrossStore); + } + await MapToEntityAsync(input, entity); foreach (var inputScoreDto in input.Scopes.Where(dto => !ExistScope(entity.Scopes, dto))) @@ -70,7 +84,17 @@ namespace EasyAbp.EShop.Plugins.Coupons.CouponTemplates return await MapToGetOutputDtoAsync(entity); } - + + public override async Task DeleteAsync(Guid id) + { + var couponTemplate = await GetEntityByIdAsync(id); + + await AuthorizationService.CheckMultiStorePolicyAsync(couponTemplate.StoreId, DeletePolicyName, + CouponsPermissions.CouponTemplate.CrossStore); + + await _repository.DeleteAsync(couponTemplate); + } + protected virtual bool ExistScope(IEnumerable scopes, ICouponTemplateScope need) { return scopes.Any(x => x.StoreId == need.StoreId && diff --git a/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Application/EasyAbp/EShop/Plugins/Coupons/Coupons/CouponAppService.cs b/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Application/EasyAbp/EShop/Plugins/Coupons/Coupons/CouponAppService.cs index e59a39a5..2eb1ef89 100644 --- a/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Application/EasyAbp/EShop/Plugins/Coupons/Coupons/CouponAppService.cs +++ b/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Application/EasyAbp/EShop/Plugins/Coupons/Coupons/CouponAppService.cs @@ -4,9 +4,11 @@ using System.Threading.Tasks; using EasyAbp.EShop.Plugins.Coupons.Permissions; using EasyAbp.EShop.Plugins.Coupons.Coupons.Dtos; using EasyAbp.EShop.Plugins.Coupons.CouponTemplates; +using EasyAbp.EShop.Stores.Authorization; using Microsoft.AspNetCore.Authorization; using Volo.Abp.Application.Dtos; using Volo.Abp.Application.Services; +using Volo.Abp.Authorization; using Volo.Abp.Users; namespace EasyAbp.EShop.Plugins.Coupons.Coupons @@ -41,21 +43,25 @@ namespace EasyAbp.EShop.Plugins.Coupons.Coupons { await CheckGetPolicyAsync(); - var entity = await GetEntityByIdAsync(id); + var coupon = await GetEntityByIdAsync(id); - if (entity.UserId != CurrentUser.GetId()) + if (coupon.UserId != CurrentUser.GetId()) { - await AuthorizationService.CheckAsync(CouponsPermissions.Coupon.Manage); + var couponTemplate = await _couponTemplateRepository.GetAsync(coupon.CouponTemplateId); + + await AuthorizationService.CheckMultiStorePolicyAsync(couponTemplate.StoreId, + CouponsPermissions.Coupon.Manage, CouponsPermissions.Coupon.CrossStore); } - return await MapToGetOutputDtoAsync(entity); + return await MapToGetOutputDtoAsync(coupon); } public override async Task> GetListAsync(GetCouponListInput input) { if (input.UserId != CurrentUser.GetId()) { - await AuthorizationService.CheckAsync(CouponsPermissions.Coupon.Manage); + await AuthorizationService.CheckMultiStorePolicyAsync(input.StoreId, + CouponsPermissions.Coupon.Manage, CouponsPermissions.Coupon.CrossStore); } return await base.GetListAsync(input); @@ -67,15 +73,51 @@ namespace EasyAbp.EShop.Plugins.Coupons.Coupons var couponTemplate = await _couponTemplateRepository.GetAsync(input.CouponTemplateId); - var entity = await MapToEntityAsync(input); + await AuthorizationService.CheckMultiStorePolicyAsync(couponTemplate.StoreId, + CouponsPermissions.Coupon.Manage, CouponsPermissions.Coupon.CrossStore); + + var coupon = await MapToEntityAsync(input); - TryToSetTenantId(entity); + TryToSetTenantId(coupon); - entity.SetExpirationTime(couponTemplate.GetCalculatedExpirationTime(Clock)); + coupon.SetExpirationTime(couponTemplate.GetCalculatedExpirationTime(Clock)); - await Repository.InsertAsync(entity, autoSave: true); + await Repository.InsertAsync(coupon, autoSave: true); - return await MapToGetOutputDtoAsync(entity); + return await MapToGetOutputDtoAsync(coupon); + } + + public override async Task UpdateAsync(Guid id, UpdateCouponDto input) + { + await CheckUpdatePolicyAsync(); + + var coupon = await GetEntityByIdAsync(id); + + var couponTemplate = await _couponTemplateRepository.GetAsync(coupon.CouponTemplateId); + + await AuthorizationService.CheckMultiStorePolicyAsync(couponTemplate.StoreId, + CouponsPermissions.Coupon.Manage, CouponsPermissions.Coupon.CrossStore); + + await MapToEntityAsync(input, coupon); + + await Repository.UpdateAsync(coupon, autoSave: true); + + return await MapToGetOutputDtoAsync(coupon); + + } + + public override async Task DeleteAsync(Guid id) + { + await CheckDeletePolicyAsync(); + + var coupon = await GetEntityByIdAsync(id); + + var couponTemplate = await _couponTemplateRepository.GetAsync(coupon.CouponTemplateId); + + await AuthorizationService.CheckMultiStorePolicyAsync(couponTemplate.StoreId, + CouponsPermissions.Coupon.Manage, CouponsPermissions.Coupon.CrossStore); + + await _repository.DeleteAsync(coupon, true); } [Authorize(CouponsPermissions.Coupon.Use)] @@ -83,6 +125,11 @@ namespace EasyAbp.EShop.Plugins.Coupons.Coupons { var coupon = await GetEntityByIdAsync(id); + if (coupon.UserId != CurrentUser.GetId()) + { + throw new AbpAuthorizationException(); + } + if (coupon.OrderId.HasValue) { throw new CouponHasBeenOccupiedException(); diff --git a/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Application/EasyAbp/EShop/Plugins/Coupons/EShopPluginsCouponsApplicationModule.cs b/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Application/EasyAbp/EShop/Plugins/Coupons/EShopPluginsCouponsApplicationModule.cs index 91517769..01874f21 100644 --- a/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Application/EasyAbp/EShop/Plugins/Coupons/EShopPluginsCouponsApplicationModule.cs +++ b/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Application/EasyAbp/EShop/Plugins/Coupons/EShopPluginsCouponsApplicationModule.cs @@ -1,4 +1,5 @@ -using Microsoft.Extensions.DependencyInjection; +using EasyAbp.EShop.Stores; +using Microsoft.Extensions.DependencyInjection; using Volo.Abp.AutoMapper; using Volo.Abp.Modularity; using Volo.Abp.Application; @@ -8,6 +9,7 @@ namespace EasyAbp.EShop.Plugins.Coupons [DependsOn( typeof(EShopPluginsCouponsDomainModule), typeof(EShopPluginsCouponsApplicationContractsModule), + typeof(EShopStoresApplicationSharedModule), typeof(AbpDddApplicationModule), typeof(AbpAutoMapperModule) )] diff --git a/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/Localization/cs.json b/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/Localization/cs.json index bd160d9d..3c0ad895 100644 --- a/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/Localization/cs.json +++ b/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/Localization/cs.json @@ -24,9 +24,17 @@ "CreateCouponTemplate": "New", "EditCouponTemplate": "Edit", "CouponTemplateDeletionConfirmationMessage": "Are you sure to delete the coupon template {0}?", + "CouponTemplateScope": "Coupon template scope", + "CouponTemplateScopeStoreId": "Store ID", + "CouponTemplateScopeProductGroupName": "Product group name", + "CouponTemplateScopeProductId": "Product ID", + "CouponTemplateScopeProductSkuId": "Product SKU ID", + "CreateCouponTemplateScope": "New", + "EditCouponTemplateScope": "Edit", + "CouponTemplateScopeDeletionConfirmationMessage": "Are you sure to delete the coupon template scope {0}?", "SuccessfullyDeleted": "Successfully deleted", - "CouponType.Normal": "X discount", - "CouponType.PerMeet": "X discount for every Y", + "CouponType.Normal": "Normal (X discount)", + "CouponType.PerMeet": "PerMeet (X discount for every Y)", "CouponType.Custom": "Custom", "Permission:Coupon": "Coupon", "Menu:Coupon": "Coupon", diff --git a/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/Localization/en.json b/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/Localization/en.json index c6e86914..9c7f9038 100644 --- a/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/Localization/en.json +++ b/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/Localization/en.json @@ -24,9 +24,17 @@ "CreateCouponTemplate": "New", "EditCouponTemplate": "Edit", "CouponTemplateDeletionConfirmationMessage": "Are you sure to delete the coupon template {0}?", + "CouponTemplateScope": "Coupon template scope", + "CouponTemplateScopeStoreId": "Store ID", + "CouponTemplateScopeProductGroupName": "Product group name", + "CouponTemplateScopeProductId": "Product ID", + "CouponTemplateScopeProductSkuId": "Product SKU ID", + "CreateCouponTemplateScope": "New", + "EditCouponTemplateScope": "Edit", + "CouponTemplateScopeDeletionConfirmationMessage": "Are you sure to delete the coupon template scope {0}?", "SuccessfullyDeleted": "Successfully deleted", - "CouponType.Normal": "X discount", - "CouponType.PerMeet": "X discount for every Y", + "CouponType.Normal": "Normal (X discount)", + "CouponType.PerMeet": "PerMeet (X discount for every Y)", "CouponType.Custom": "Custom", "Permission:Coupon": "Coupon", "Menu:Coupon": "Coupon", diff --git a/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/Localization/pl-PL.json b/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/Localization/pl-PL.json index 2d6952a8..f40bbb1f 100644 --- a/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/Localization/pl-PL.json +++ b/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/Localization/pl-PL.json @@ -21,9 +21,17 @@ "CreateCouponTemplate": "New", "EditCouponTemplate": "Edit", "CouponTemplateDeletionConfirmationMessage": "Are you sure to delete the coupon template {0}?", + "CouponTemplateScope": "Coupon template scope", + "CouponTemplateScopeStoreId": "Store ID", + "CouponTemplateScopeProductGroupName": "Product group name", + "CouponTemplateScopeProductId": "Product ID", + "CouponTemplateScopeProductSkuId": "Product SKU ID", + "CreateCouponTemplateScope": "New", + "EditCouponTemplateScope": "Edit", + "CouponTemplateScopeDeletionConfirmationMessage": "Are you sure to delete the coupon template scope {0}?", "SuccessfullyDeleted": "Successfully deleted", - "CouponType.Normal": "X discount", - "CouponType.PerMeet": "X discount for every Y", + "CouponType.Normal": "Normal (X discount)", + "CouponType.PerMeet": "PerMeet (X discount for every Y)", "CouponType.Custom": "Custom", "Permission:Coupon": "Coupon", "Menu:Coupon": "Coupon", diff --git a/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/Localization/pt-BR.json b/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/Localization/pt-BR.json index cf3c0c22..dd701c0d 100644 --- a/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/Localization/pt-BR.json +++ b/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/Localization/pt-BR.json @@ -21,9 +21,17 @@ "CreateCouponTemplate": "New", "EditCouponTemplate": "Edit", "CouponTemplateDeletionConfirmationMessage": "Are you sure to delete the coupon template {0}?", + "CouponTemplateScope": "Coupon template scope", + "CouponTemplateScopeStoreId": "Store ID", + "CouponTemplateScopeProductGroupName": "Product group name", + "CouponTemplateScopeProductId": "Product ID", + "CouponTemplateScopeProductSkuId": "Product SKU ID", + "CreateCouponTemplateScope": "New", + "EditCouponTemplateScope": "Edit", + "CouponTemplateScopeDeletionConfirmationMessage": "Are you sure to delete the coupon template scope {0}?", "SuccessfullyDeleted": "Successfully deleted", - "CouponType.Normal": "X discount", - "CouponType.PerMeet": "X discount for every Y", + "CouponType.Normal": "Normal (X discount)", + "CouponType.PerMeet": "PerMeet (X discount for every Y)", "CouponType.Custom": "Custom", "Permission:Coupon": "Coupon", "Menu:Coupon": "Coupon", diff --git a/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/Localization/sl.json b/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/Localization/sl.json index 7df02afc..c3bd397a 100644 --- a/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/Localization/sl.json +++ b/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/Localization/sl.json @@ -23,9 +23,17 @@ "CreateCouponTemplate": "New", "EditCouponTemplate": "Edit", "CouponTemplateDeletionConfirmationMessage": "Are you sure to delete the coupon template {0}?", + "CouponTemplateScope": "Coupon template scope", + "CouponTemplateScopeStoreId": "Store ID", + "CouponTemplateScopeProductGroupName": "Product group name", + "CouponTemplateScopeProductId": "Product ID", + "CouponTemplateScopeProductSkuId": "Product SKU ID", + "CreateCouponTemplateScope": "New", + "EditCouponTemplateScope": "Edit", + "CouponTemplateScopeDeletionConfirmationMessage": "Are you sure to delete the coupon template scope {0}?", "SuccessfullyDeleted": "Successfully deleted", - "CouponType.Normal": "X discount", - "CouponType.PerMeet": "X discount for every Y", + "CouponType.Normal": "Normal (X discount)", + "CouponType.PerMeet": "PerMeet (X discount for every Y)", "CouponType.Custom": "Custom", "Permission:Coupon": "Coupon", "Menu:Coupon": "Coupon", diff --git a/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/Localization/tr.json b/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/Localization/tr.json index a6c936ce..58429c9d 100644 --- a/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/Localization/tr.json +++ b/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/Localization/tr.json @@ -24,9 +24,17 @@ "CreateCouponTemplate": "New", "EditCouponTemplate": "Edit", "CouponTemplateDeletionConfirmationMessage": "Are you sure to delete the coupon template {0}?", + "CouponTemplateScope": "Coupon template scope", + "CouponTemplateScopeStoreId": "Store ID", + "CouponTemplateScopeProductGroupName": "Product group name", + "CouponTemplateScopeProductId": "Product ID", + "CouponTemplateScopeProductSkuId": "Product SKU ID", + "CreateCouponTemplateScope": "New", + "EditCouponTemplateScope": "Edit", + "CouponTemplateScopeDeletionConfirmationMessage": "Are you sure to delete the coupon template scope {0}?", "SuccessfullyDeleted": "Successfully deleted", - "CouponType.Normal": "X discount", - "CouponType.PerMeet": "X discount for every Y", + "CouponType.Normal": "Normal (X discount)", + "CouponType.PerMeet": "PerMeet (X discount for every Y)", "CouponType.Custom": "Custom", "Permission:Coupon": "Coupon", "Menu:Coupon": "Coupon", diff --git a/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/Localization/vi.json b/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/Localization/vi.json index aa6dd038..0f0fe697 100644 --- a/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/Localization/vi.json +++ b/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/Localization/vi.json @@ -21,9 +21,17 @@ "CreateCouponTemplate": "New", "EditCouponTemplate": "Edit", "CouponTemplateDeletionConfirmationMessage": "Are you sure to delete the coupon template {0}?", + "CouponTemplateScope": "Coupon template scope", + "CouponTemplateScopeStoreId": "Store ID", + "CouponTemplateScopeProductGroupName": "Product group name", + "CouponTemplateScopeProductId": "Product ID", + "CouponTemplateScopeProductSkuId": "Product SKU ID", + "CreateCouponTemplateScope": "New", + "EditCouponTemplateScope": "Edit", + "CouponTemplateScopeDeletionConfirmationMessage": "Are you sure to delete the coupon template scope {0}?", "SuccessfullyDeleted": "Successfully deleted", - "CouponType.Normal": "X discount", - "CouponType.PerMeet": "X discount for every Y", + "CouponType.Normal": "Normal (X discount)", + "CouponType.PerMeet": "PerMeet (X discount for every Y)", "CouponType.Custom": "Custom", "Permission:Coupon": "Coupon", "Menu:Coupon": "Coupon", diff --git a/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/Localization/zh-Hans.json b/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/Localization/zh-Hans.json index c9874dc5..9dafc79a 100644 --- a/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/Localization/zh-Hans.json +++ b/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/Localization/zh-Hans.json @@ -23,6 +23,14 @@ "CreateCouponTemplate": "新建", "EditCouponTemplate": "编辑", "CouponTemplateDeletionConfirmationMessage": "确认删除优惠券模板 {0}?", + "CouponTemplateScope": "优惠券使用范围", + "CouponTemplateScopeStoreId": "店铺 ID", + "CouponTemplateScopeProductGroupName": "商品组", + "CouponTemplateScopeProductId": "商品 ID", + "CouponTemplateScopeProductSkuId": "商品 SKU ID", + "CreateCouponTemplateScope": "新建", + "EditCouponTemplateScope": "编辑", + "CouponTemplateScopeDeletionConfirmationMessage": "确认删除优惠券模板使用范围 {0}?", "SuccessfullyDeleted": "删除成功", "CouponType.Normal": "代金券(满 X 减 Y)", "CouponType.PerMeet": "满减券(每满 X 减 Y)", diff --git a/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/Localization/zh-Hant.json b/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/Localization/zh-Hant.json index eaf96766..a2ceefda 100644 --- a/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/Localization/zh-Hant.json +++ b/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Domain.Shared/EasyAbp/EShop/Plugins/Coupons/Localization/zh-Hant.json @@ -23,6 +23,14 @@ "CreateCouponTemplate": "新建", "EditCouponTemplate": "編輯", "CouponTemplateDeletionConfirmationMessage": "確認刪除優惠券模板 {0}?", + "CouponTemplateScope": "優惠券使用範圍", + "CouponTemplateScopeStoreId": "店鋪 ID", + "CouponTemplateScopeProductGroupName": "商品組", + "CouponTemplateScopeProductId": "商品 ID", + "CouponTemplateScopeProductSkuId": "商品 SKU ID", + "CreateCouponTemplateScope": "新建", + "EditCouponTemplateScope": "編輯", + "CouponTemplateScopeDeletionConfirmationMessage": "確認刪除優惠券模板使用範圍 {0}?", "SuccessfullyDeleted": "刪除成功", "CouponType.Normal": "代金券(滿 X 減 Y)", "CouponType.PerMeet": "滿減券(每滿 X 減 Y)", diff --git a/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/CouponsWebAutoMapperProfile.cs b/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/CouponsWebAutoMapperProfile.cs index 34c88060..ef876d53 100644 --- a/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/CouponsWebAutoMapperProfile.cs +++ b/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/CouponsWebAutoMapperProfile.cs @@ -3,6 +3,7 @@ using EasyAbp.EShop.Plugins.Coupons.Web.Pages.EShop.Plugins.Coupons.CouponTempla using EasyAbp.EShop.Plugins.Coupons.Coupons.Dtos; using EasyAbp.EShop.Plugins.Coupons.Web.Pages.EShop.Plugins.Coupons.Coupons.Coupon.ViewModels; using AutoMapper; +using EasyAbp.EShop.Plugins.Coupons.Web.Pages.EShop.Plugins.Coupons.CouponTemplates.CouponTemplateScope.ViewModels; using Volo.Abp.AutoMapper; namespace EasyAbp.EShop.Plugins.Coupons.Web @@ -14,9 +15,13 @@ namespace EasyAbp.EShop.Plugins.Coupons.Web /* You can configure your AutoMapper mapping configuration here. * Alternatively, you can split your mapping configurations * into multiple profile classes for a better organization. */ + CreateMap(MemberList.Destination); CreateMap(); + CreateMap(); CreateMap() .Ignore(x => x.Scopes); + CreateMap(); + CreateMap(); CreateMap(); CreateMap(); CreateMap(); diff --git a/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/Pages/EShop/Plugins/Coupons/CouponTemplates/CouponTemplate/EditModal.cshtml.cs b/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/Pages/EShop/Plugins/Coupons/CouponTemplates/CouponTemplate/EditModal.cshtml.cs index 9deed383..1b072f5c 100644 --- a/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/Pages/EShop/Plugins/Coupons/CouponTemplates/CouponTemplate/EditModal.cshtml.cs +++ b/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/Pages/EShop/Plugins/Coupons/CouponTemplates/CouponTemplate/EditModal.cshtml.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using EasyAbp.EShop.Plugins.Coupons.CouponTemplates; @@ -31,8 +32,16 @@ namespace EasyAbp.EShop.Plugins.Coupons.Web.Pages.EShop.Plugins.Coupons.CouponTe public virtual async Task OnPostAsync() { - var dto = ObjectMapper.Map(ViewModel); - await _service.UpdateAsync(Id, dto); + var dto = await _service.GetAsync(Id); + + var updateDto = + ObjectMapper.Map(ViewModel); + + updateDto.Scopes = + ObjectMapper.Map, List>(dto.Scopes); + + await _service.UpdateAsync(Id, updateDto); + return NoContent(); } } diff --git a/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/Pages/EShop/Plugins/Coupons/CouponTemplates/CouponTemplate/index.js b/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/Pages/EShop/Plugins/Coupons/CouponTemplates/CouponTemplate/index.js index 0d24fa76..339bd5d5 100644 --- a/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/Pages/EShop/Plugins/Coupons/CouponTemplates/CouponTemplate/index.js +++ b/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/Pages/EShop/Plugins/Coupons/CouponTemplates/CouponTemplate/index.js @@ -20,6 +20,13 @@ $(function () { rowAction: { items: [ + { + text: l('CouponTemplateScope'), + visible: abp.auth.isGranted('EasyAbp.EShop.Plugins.Coupons.CouponTemplate.Update'), + action: function (data) { + document.location.href = document.location.origin + '/EShop/Plugins/Coupons/CouponTemplates/CouponTemplateScope/?CouponTemplateId=' + data.record.id; + } + }, { text: l('Edit'), visible: abp.auth.isGranted('EasyAbp.EShop.Plugins.Coupons.CouponTemplate.Update'), diff --git a/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/Pages/EShop/Plugins/Coupons/CouponTemplates/CouponTemplateScope/CreateModal.cshtml b/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/Pages/EShop/Plugins/Coupons/CouponTemplates/CouponTemplateScope/CreateModal.cshtml new file mode 100644 index 00000000..b38c5cbd --- /dev/null +++ b/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/Pages/EShop/Plugins/Coupons/CouponTemplates/CouponTemplateScope/CreateModal.cshtml @@ -0,0 +1,19 @@ +@page +@using Microsoft.AspNetCore.Mvc.Localization +@using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Modal; +@using EasyAbp.EShop.Plugins.Coupons.Localization +@inject IHtmlLocalizer L +@model EasyAbp.EShop.Plugins.Coupons.Web.Pages.EShop.Plugins.Coupons.CouponTemplates.CouponTemplateScope.CreateModalModel +@{ + Layout = null; +} + + + + + + + + + + \ No newline at end of file diff --git a/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/Pages/EShop/Plugins/Coupons/CouponTemplates/CouponTemplateScope/CreateModal.cshtml.cs b/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/Pages/EShop/Plugins/Coupons/CouponTemplates/CouponTemplateScope/CreateModal.cshtml.cs new file mode 100644 index 00000000..ed97aa4c --- /dev/null +++ b/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/Pages/EShop/Plugins/Coupons/CouponTemplates/CouponTemplateScope/CreateModal.cshtml.cs @@ -0,0 +1,44 @@ +using System; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Mvc; +using EasyAbp.EShop.Plugins.Coupons.CouponTemplates; +using EasyAbp.EShop.Plugins.Coupons.CouponTemplates.Dtos; +using EasyAbp.EShop.Plugins.Coupons.Web.Pages.EShop.Plugins.Coupons.CouponTemplates.CouponTemplate.ViewModels; +using EasyAbp.EShop.Plugins.Coupons.Web.Pages.EShop.Plugins.Coupons.CouponTemplates.CouponTemplateScope.ViewModels; + +namespace EasyAbp.EShop.Plugins.Coupons.Web.Pages.EShop.Plugins.Coupons.CouponTemplates.CouponTemplateScope +{ + public class CreateModalModel : CouponsPageModel + { + [HiddenInput] + [BindProperty(SupportsGet = true)] + public Guid CouponTemplateId { get; set; } + + [BindProperty] + public CreateEditCouponTemplateScopeViewModel ViewModel { get; set; } + + private readonly ICouponTemplateAppService _service; + + public CreateModalModel(ICouponTemplateAppService service) + { + _service = service; + } + + public virtual async Task OnPostAsync() + { + var dto = await _service.GetAsync(CouponTemplateId); + + var updateDto = + ObjectMapper.Map(dto); + + var createScopeDto = + ObjectMapper.Map(ViewModel); + + updateDto.Scopes.Add(createScopeDto); + + await _service.UpdateAsync(CouponTemplateId, updateDto); + + return NoContent(); + } + } +} \ No newline at end of file diff --git a/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/Pages/EShop/Plugins/Coupons/CouponTemplates/CouponTemplateScope/EditModal.cshtml b/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/Pages/EShop/Plugins/Coupons/CouponTemplates/CouponTemplateScope/EditModal.cshtml new file mode 100644 index 00000000..c2a5e4fe --- /dev/null +++ b/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/Pages/EShop/Plugins/Coupons/CouponTemplates/CouponTemplateScope/EditModal.cshtml @@ -0,0 +1,20 @@ +@page +@using EasyAbp.EShop.Plugins.Coupons.Localization +@using Microsoft.AspNetCore.Mvc.Localization +@using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Modal; +@inject IHtmlLocalizer L +@model EasyAbp.EShop.Plugins.Coupons.Web.Pages.EShop.Plugins.Coupons.CouponTemplates.CouponTemplateScope.EditModalModel +@{ + Layout = null; +} + + + + + + + + + + + diff --git a/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/Pages/EShop/Plugins/Coupons/CouponTemplates/CouponTemplateScope/EditModal.cshtml.cs b/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/Pages/EShop/Plugins/Coupons/CouponTemplates/CouponTemplateScope/EditModal.cshtml.cs new file mode 100644 index 00000000..827383c0 --- /dev/null +++ b/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/Pages/EShop/Plugins/Coupons/CouponTemplates/CouponTemplateScope/EditModal.cshtml.cs @@ -0,0 +1,59 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Mvc; +using EasyAbp.EShop.Plugins.Coupons.CouponTemplates; +using EasyAbp.EShop.Plugins.Coupons.CouponTemplates.Dtos; +using EasyAbp.EShop.Plugins.Coupons.Web.Pages.EShop.Plugins.Coupons.CouponTemplates.CouponTemplate.ViewModels; +using EasyAbp.EShop.Plugins.Coupons.Web.Pages.EShop.Plugins.Coupons.CouponTemplates.CouponTemplateScope.ViewModels; + +namespace EasyAbp.EShop.Plugins.Coupons.Web.Pages.EShop.Plugins.Coupons.CouponTemplates.CouponTemplateScope +{ + public class EditModalModel : CouponsPageModel + { + [HiddenInput] + [BindProperty(SupportsGet = true)] + public Guid CouponTemplateId { get; set; } + + [HiddenInput] + [BindProperty(SupportsGet = true)] + public Guid CouponTemplateScopeId { get; set; } + + [BindProperty] + public CreateEditCouponTemplateScopeViewModel ViewModel { get; set; } + + private readonly ICouponTemplateAppService _service; + + public EditModalModel(ICouponTemplateAppService service) + { + _service = service; + } + + public virtual async Task OnGetAsync() + { + var dto = await _service.GetAsync(CouponTemplateId); + + ViewModel = + ObjectMapper.Map( + dto.Scopes.First(x => x.Id == CouponTemplateScopeId)); + } + + public virtual async Task OnPostAsync() + { + var dto = await _service.GetAsync(CouponTemplateId); + + dto.Scopes.RemoveAll(x => x.Id == CouponTemplateScopeId); + + var updateDto = + ObjectMapper.Map(dto); + + updateDto.Scopes.Add(ObjectMapper + .Map(ViewModel)); + + await _service.UpdateAsync(CouponTemplateId, updateDto); + + return NoContent(); + } + } +} \ No newline at end of file diff --git a/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/Pages/EShop/Plugins/Coupons/CouponTemplates/CouponTemplateScope/Index.cshtml b/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/Pages/EShop/Plugins/Coupons/CouponTemplates/CouponTemplateScope/Index.cshtml new file mode 100644 index 00000000..4c41ee91 --- /dev/null +++ b/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/Pages/EShop/Plugins/Coupons/CouponTemplates/CouponTemplateScope/Index.cshtml @@ -0,0 +1,62 @@ +@page +@using EasyAbp.EShop.Plugins.Coupons.Permissions +@using Microsoft.AspNetCore.Authorization +@using Microsoft.AspNetCore.Mvc.Localization +@using Volo.Abp.AspNetCore.Mvc.UI.Layout +@using EasyAbp.EShop.Plugins.Coupons.Web.Pages.EShop.Plugins.Coupons.CouponTemplates.CouponTemplateScope +@using EasyAbp.EShop.Plugins.Coupons.Localization +@using EasyAbp.EShop.Plugins.Coupons.Web.Menus +@model IndexModel +@inject IPageLayout PageLayout +@inject IHtmlLocalizer L +@inject IAuthorizationService Authorization +@{ + PageLayout.Content.Title = L["CouponTemplateScope"].Value; + PageLayout.Content.BreadCrumb.Add(L["Menu:CouponTemplate"].Value); + PageLayout.Content.MenuItemName = CouponsMenus.CouponTemplate; +} + +@section scripts +{ + +} +@section styles +{ + +} + + + + + + + + @L["CouponTemplateScope"] + + + @if (await Authorization.IsGrantedAsync(CouponsPermissions.CouponTemplate.Update)) + { + + } + + + + + + + + @L["Actions"] + @L["CouponTemplateScopeStoreId"] + @L["CouponTemplateScopeProductGroupName"] + @L["CouponTemplateScopeProductId"] + @L["CouponTemplateScopeProductSkuId"] + + + + + \ No newline at end of file diff --git a/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/Pages/EShop/Plugins/Coupons/CouponTemplates/CouponTemplateScope/Index.cshtml.cs b/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/Pages/EShop/Plugins/Coupons/CouponTemplates/CouponTemplateScope/Index.cshtml.cs new file mode 100644 index 00000000..f8c0a290 --- /dev/null +++ b/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/Pages/EShop/Plugins/Coupons/CouponTemplates/CouponTemplateScope/Index.cshtml.cs @@ -0,0 +1,17 @@ +using System; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Mvc; + +namespace EasyAbp.EShop.Plugins.Coupons.Web.Pages.EShop.Plugins.Coupons.CouponTemplates.CouponTemplateScope +{ + public class IndexModel : CouponsPageModel + { + [BindProperty(SupportsGet = true)] + public Guid CouponTemplateId { get; set; } + + public virtual async Task OnGetAsync() + { + await Task.CompletedTask; + } + } +} diff --git a/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/Pages/EShop/Plugins/Coupons/CouponTemplates/CouponTemplateScope/ViewModels/CreateEditCouponTemplateScopeViewModel.cs b/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/Pages/EShop/Plugins/Coupons/CouponTemplates/CouponTemplateScope/ViewModels/CreateEditCouponTemplateScopeViewModel.cs new file mode 100644 index 00000000..c58f9021 --- /dev/null +++ b/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/Pages/EShop/Plugins/Coupons/CouponTemplates/CouponTemplateScope/ViewModels/CreateEditCouponTemplateScopeViewModel.cs @@ -0,0 +1,21 @@ +using System; +using System.ComponentModel.DataAnnotations; +using EasyAbp.EShop.Plugins.Coupons.CouponTemplates; + +namespace EasyAbp.EShop.Plugins.Coupons.Web.Pages.EShop.Plugins.Coupons.CouponTemplates.CouponTemplateScope.ViewModels +{ + public class CreateEditCouponTemplateScopeViewModel + { + [Display(Name = "CouponTemplateScopeStoreId")] + public Guid StoreId { get; set; } + + [Display(Name = "CouponTemplateScopeProductGroupName")] + public string ProductGroupName { get; set; } + + [Display(Name = "CouponTemplateScopeProductId")] + public Guid? ProductId { get; set; } + + [Display(Name = "CouponTemplateScopeProductSkuId")] + public Guid? ProductSkuId { get; set; } + } +} \ No newline at end of file diff --git a/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/Pages/EShop/Plugins/Coupons/CouponTemplates/CouponTemplateScope/index.css b/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/Pages/EShop/Plugins/Coupons/CouponTemplates/CouponTemplateScope/index.css new file mode 100644 index 00000000..e69de29b diff --git a/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/Pages/EShop/Plugins/Coupons/CouponTemplates/CouponTemplateScope/index.js b/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/Pages/EShop/Plugins/Coupons/CouponTemplates/CouponTemplateScope/index.js new file mode 100644 index 00000000..c1c07717 --- /dev/null +++ b/plugins/Coupons/src/EasyAbp.EShop.Plugins.Coupons.Web/Pages/EShop/Plugins/Coupons/CouponTemplates/CouponTemplateScope/index.js @@ -0,0 +1,85 @@ +$(function () { + + var l = abp.localization.getResource('EasyAbpEShopPluginsCoupons'); + + var service = easyAbp.eShop.plugins.coupons.couponTemplates.couponTemplate; + var createModal = new abp.ModalManager(abp.appPath + 'EShop/Plugins/Coupons/CouponTemplates/CouponTemplateScope/CreateModal'); + var editModal = new abp.ModalManager(abp.appPath + 'EShop/Plugins/Coupons/CouponTemplates/CouponTemplateScope/EditModal'); + + var dataTable = $('#CouponTemplateScopeTable').DataTable(abp.libs.datatables.normalizeConfiguration({ + processing: true, + serverSide: true, + paging: true, + searching: false, + autoWidth: false, + scrollCollapse: true, + order: [[0, "asc"]], + ajax: function (requestData, callback, settings) { + if (callback) { + service.get(couponTemplateId).then(function (result) { + callback({ + recordsTotal: result.scopes.length, + recordsFiltered: result.scopes.length, + data: result.scopes + }); + }); + } + }, + columnDefs: [ + { + rowAction: { + items: + [ + { + text: l('Edit'), + visible: abp.auth.isGranted('EasyAbp.EShop.Plugins.Coupons.CouponTemplate.Update'), + action: function (data) { + editModal.open({ couponTemplateId: couponTemplateId, couponTemplateScopeId: data.record.id }); + } + }, + { + text: l('Delete'), + visible: abp.auth.isGranted('EasyAbp.EShop.Plugins.Coupons.CouponTemplate.Update'), + confirmMessage: function (data) { + return l('CouponTemplateScopeDeletionConfirmationMessage', data.record.id); + }, + action: function (data) { + service.get(couponTemplateId).then(function (result) { + var updateDto = result; + for (var i in updateDto.scopes) { + if (updateDto.scopes[i].id === data.record.id) { + updateDto.scopes.splice(i, 1); + service.update(couponTemplateId, updateDto) + .then(function () { + abp.notify.info(l('SuccessfullyDeleted')); + dataTable.ajax.reload(); + }); + break; + } + } + }); + } + } + ] + } + }, + { data: "storeId" }, + { data: "productGroupName" }, + { data: "productId" }, + { data: "productSkuId" }, + ] + })); + + createModal.onResult(function () { + dataTable.ajax.reload(); + }); + + editModal.onResult(function () { + dataTable.ajax.reload(); + }); + + $('#NewCouponTemplateScopeButton').click(function (e) { + e.preventDefault(); + createModal.open({ couponTemplateId: couponTemplateId }); + }); +}); \ No newline at end of file