diff --git a/public/assets/images/delete.svg b/public/assets/images/delete.svg new file mode 100644 index 00000000..0fb4452e --- /dev/null +++ b/public/assets/images/delete.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/components/ActionsBar/index.jsx b/src/components/ActionsBar/index.jsx index e4af8c38..5c30b175 100644 --- a/src/components/ActionsBar/index.jsx +++ b/src/components/ActionsBar/index.jsx @@ -18,11 +18,12 @@ const ActionsBar = ({ t, buttons = [] }) => { > {item.icon && ( )} - {item.title} + {item.title} ); diff --git a/src/containers/CategoriesPage/CategoryStore/CategoryStore.js b/src/containers/CategoriesPage/CategoryStore/CategoryStore.js index 65d5ef40..b3299973 100644 --- a/src/containers/CategoriesPage/CategoryStore/CategoryStore.js +++ b/src/containers/CategoriesPage/CategoryStore/CategoryStore.js @@ -144,4 +144,16 @@ export default class CategoryStore { return false; } + + async deleteCategories(arr) { + try { + const aesirxPimCategoryApiService = new AesirxPimCategoryApiService(); + const respondedData = await aesirxPimCategoryApiService.deleteCategories(arr); + return respondedData; + } catch (error) { + // no error throw + } + + return false; + } } diff --git a/src/containers/CategoriesPage/CategoryViewModel/CategoryListViewModel.js b/src/containers/CategoriesPage/CategoryViewModel/CategoryListViewModel.js index 8d081bda..9ceaabfe 100644 --- a/src/containers/CategoriesPage/CategoryViewModel/CategoryListViewModel.js +++ b/src/containers/CategoriesPage/CategoryViewModel/CategoryListViewModel.js @@ -121,6 +121,18 @@ class CategoryListViewModel { this.successResponse.state = true; }; + deleteCategories = async (arr) => { + const res = await this.categoryStore.deleteCategories(arr); + if (res) { + await this.categoryStore.getList( + this.callbackOnSuccessHandler, + this.callbackOnErrorHandler, + this.successResponse.filters + ); + } + this.successResponse.state = true; + }; + handleFilter = (filter) => { this.filter = { ...this.filter, ...filter }; }; diff --git a/src/containers/CategoriesPage/Component/ListCategories.jsx b/src/containers/CategoriesPage/Component/ListCategories.jsx index b1ac13f6..f1b531c6 100644 --- a/src/containers/CategoriesPage/Component/ListCategories.jsx +++ b/src/containers/CategoriesPage/Component/ListCategories.jsx @@ -207,12 +207,26 @@ const ListCategories = observer((props) => { viewModel.setPublished(value.id, isPublished); }; + const deleteCategories = () => { + viewModel.isLoading(); + viewModel.deleteCategories(listSelected); + }; + return ( <>

{t('txt_categories')}

{ + deleteCategories(); + }, + }, { title: t('txt_add_new'), icon: '/assets/images/plus.svg', diff --git a/src/containers/DebtorGroupPage/DebtorGroupViewModel/DebtorGroupListViewModel.js b/src/containers/DebtorGroupPage/DebtorGroupViewModel/DebtorGroupListViewModel.js index a0e970b0..0dccfef3 100644 --- a/src/containers/DebtorGroupPage/DebtorGroupViewModel/DebtorGroupListViewModel.js +++ b/src/containers/DebtorGroupPage/DebtorGroupViewModel/DebtorGroupListViewModel.js @@ -105,7 +105,6 @@ class DebtorGroupListViewModel { }; callbackOnSuccessHandler = (result) => { - console.log('result.pagination', result.pagination); if (result?.items) { this.items = result.items; this.pagination = result.pagination; diff --git a/src/containers/FieldsPage/Component/ListFields.jsx b/src/containers/FieldsPage/Component/ListFields.jsx index 9cf4f716..157e04eb 100644 --- a/src/containers/FieldsPage/Component/ListFields.jsx +++ b/src/containers/FieldsPage/Component/ListFields.jsx @@ -118,6 +118,11 @@ const ListFields = observer((props) => { viewModel.getListByFilter('limitstart', (value - 1) * viewModel.pagination.pageLimit); } }; + + const deleteFields = () => { + viewModel.isLoading(); + viewModel.deleteFields(listSelected); + }; return ( <> @@ -125,6 +130,15 @@ const ListFields = observer((props) => {

{t('txt_fields')}

{ + deleteFields(); + }, + }, { title: t('txt_add_new_fields'), icon: '/assets/images/plus.svg', diff --git a/src/containers/FieldsPage/FieldStore/FieldStore.js b/src/containers/FieldsPage/FieldStore/FieldStore.js index 28f96805..39fa4b44 100644 --- a/src/containers/FieldsPage/FieldStore/FieldStore.js +++ b/src/containers/FieldsPage/FieldStore/FieldStore.js @@ -141,4 +141,16 @@ export default class FieldStore { return false; } + + async deleteFields(arr) { + try { + const aesirxPimFieldApiService = new AesirxPimFieldApiService(); + const respondedData = await aesirxPimFieldApiService.deleteFields(arr); + return respondedData; + } catch (error) { + // no error throw + } + + return false; + } } diff --git a/src/containers/FieldsPage/FieldViewModel/FieldListViewModel.js b/src/containers/FieldsPage/FieldViewModel/FieldListViewModel.js index 7980e9ef..c278a3d1 100644 --- a/src/containers/FieldsPage/FieldViewModel/FieldListViewModel.js +++ b/src/containers/FieldsPage/FieldViewModel/FieldListViewModel.js @@ -136,6 +136,19 @@ class FieldListViewModel { this.successResponse.state = true; }; + deleteFields = async (arr) => { + const res = await this.fieldStore.deleteFields(arr); + if (res) { + await this.fieldStore.getList( + this.filter, + this.filterList, + this.callbackOnSuccessHandler, + this.callbackOnErrorHandler + ); + } + this.successResponse.state = true; + }; + callbackOnErrorHandler = (error) => { notify('Update unsuccessfully', 'error'); this.successResponse.state = false; diff --git a/src/containers/ProductPricesPage/Component/ListProductPrice.jsx b/src/containers/ProductPricesPage/Component/ListProductPrice.jsx index 3a2119fb..9469d0a3 100644 --- a/src/containers/ProductPricesPage/Component/ListProductPrice.jsx +++ b/src/containers/ProductPricesPage/Component/ListProductPrice.jsx @@ -14,35 +14,35 @@ const ListProductPrice = observer((props) => { const { t } = props; let listSelected = []; - const productPriceViewModel = props.viewModel; + const viewModel = props.viewModel; useEffect(() => { - productPriceViewModel.initializeData(); + viewModel.initializeData(); }, []); const selectTabHandler = (value) => { - productPriceViewModel.isLoading(); + viewModel.isLoading(); if (value != 'default') { - productPriceViewModel.getListByFilter('state', { + viewModel.getListByFilter('state', { value: value, type: 'filter', }); } else { - productPriceViewModel.getListByFilter('state', ''); + viewModel.getListByFilter('state', ''); } }; const selectShowItemsHandler = (value) => { - productPriceViewModel.isLoading(); - productPriceViewModel.getListByFilter('list[limit]', value.value); + viewModel.isLoading(); + viewModel.getListByFilter('list[limit]', value.value); }; const selectPageHandler = (value) => { - if (value != productPriceViewModel.successResponse.pagination.page) { - productPriceViewModel.isLoading(); - productPriceViewModel.getListByFilter( + if (value != viewModel.successResponse.pagination.page) { + viewModel.isLoading(); + viewModel.getListByFilter( 'limitstart', - (value - 1) * productPriceViewModel.successResponse.pagination.pageLimit + (value - 1) * viewModel.successResponse.pagination.pageLimit ); } }; @@ -52,8 +52,13 @@ const ListProductPrice = observer((props) => { }; const selectBulkActionsHandler = (value) => { - productPriceViewModel.isLoading(); - productPriceViewModel.updateStatus(listSelected, value.value); + viewModel.isLoading(); + viewModel.updateStatus(listSelected, value.value); + }; + + const deleteProductPrices = () => { + viewModel.isLoading(); + viewModel.deleteProductPrices(listSelected); }; const columnsTable = [ @@ -119,7 +124,7 @@ const ListProductPrice = observer((props) => {
{ - productPriceViewModel?.successResponse?.listPublishStatus.find( + viewModel?.successResponse?.listPublishStatus.find( (o) => o.value == value.status ).label } @@ -139,6 +144,15 @@ const ListProductPrice = observer((props) => {

{t('txt_left_menu_price_management')}

{ + deleteProductPrices(); + }, + }, { title: t('txt_add_new_prices'), icon: '/assets/images/plus.svg', @@ -151,7 +165,7 @@ const ListProductPrice = observer((props) => { />
- {productPriceViewModel?.successResponse?.listPublishStatus.length > 0 && ( + {viewModel?.successResponse?.listPublishStatus.length > 0 && ( <> { className="mb-3" > - {productPriceViewModel?.successResponse?.listPublishStatus.map((o) => ( + {viewModel?.successResponse?.listPublishStatus.map((o) => ( ))} @@ -168,7 +182,7 @@ const ListProductPrice = observer((props) => {
{
Showing
({ label: `${(index + 1) * 10} items`, @@ -199,13 +213,13 @@ const ListProductPrice = observer((props) => { )} - {productPriceViewModel?.successResponse?.state ? ( + {viewModel?.successResponse?.state ? (
diff --git a/src/containers/ProductPricesPage/ProductPriceEdit/Component/ProductPriceInformation.jsx b/src/containers/ProductPricesPage/ProductPriceEdit/Component/ProductPriceInformation.jsx index dd1bd6b5..5373d36c 100644 --- a/src/containers/ProductPricesPage/ProductPriceEdit/Component/ProductPriceInformation.jsx +++ b/src/containers/ProductPricesPage/ProductPriceEdit/Component/ProductPriceInformation.jsx @@ -37,8 +37,7 @@ const ProductPriceInformation = observer( } render() { - const { t, isShowValidator } = this.props; - console.log('isShowValidator', isShowValidator); + const { t } = this.props; const generateFormSetting = [ { fields: [ diff --git a/src/containers/ProductPricesPage/ProductPriceStore/ProductPriceStore.js b/src/containers/ProductPricesPage/ProductPriceStore/ProductPriceStore.js index ac366634..bc6eecdc 100644 --- a/src/containers/ProductPricesPage/ProductPriceStore/ProductPriceStore.js +++ b/src/containers/ProductPricesPage/ProductPriceStore/ProductPriceStore.js @@ -153,4 +153,16 @@ export default class ProductPriceStore { }); } } + + async deleteProductPrices(arr) { + try { + const aesirxPimProductPriceApiService = new AesirxPimProductPriceApiService(); + const respondedData = await aesirxPimProductPriceApiService.deleteProductPrices(arr); + return respondedData; + } catch (error) { + // no error throw + } + + return false; + } } diff --git a/src/containers/ProductPricesPage/ProductPriceViewModel/ProductPriceListViewModel.js b/src/containers/ProductPricesPage/ProductPriceViewModel/ProductPriceListViewModel.js index abfb90bb..78fc09dd 100644 --- a/src/containers/ProductPricesPage/ProductPriceViewModel/ProductPriceListViewModel.js +++ b/src/containers/ProductPricesPage/ProductPriceViewModel/ProductPriceListViewModel.js @@ -97,6 +97,18 @@ class ProductPriceListViewModel { this.successResponse.state = true; }; + deleteProductPrices = async (arr) => { + const res = await this.productPricesStore.deleteProductPrices(arr); + if (res) { + await this.productPricesStore.getList( + this.callbackOnSuccessHandler, + this.callbackOnErrorHandler, + this.successResponse.filters + ); + } + this.successResponse.state = true; + }; + callbackOnSuccessSetFeatured = async (result) => { this.successResponse.listProducts = this.successResponse.listProducts.map((o) => { if (o.id == result) { diff --git a/src/containers/ProductsPage/Component/ListProducts.jsx b/src/containers/ProductsPage/Component/ListProducts.jsx index d0d84465..8f794a89 100644 --- a/src/containers/ProductsPage/Component/ListProducts.jsx +++ b/src/containers/ProductsPage/Component/ListProducts.jsx @@ -70,17 +70,30 @@ const ListProducts = observer((props) => { }; const selectCategoryHandler = (value) => { - console.log(value.value); viewModel.isLoading(); viewModel.getListByFilter('filter[category]', value.value); }; + const deleteProducts = () => { + viewModel.isLoading(); + viewModel.deleteProducts(listSelected); + }; + return ( <>

{t('txt_title_product_management')}

{ + deleteProducts(); + }, + }, { title: t('txt_add_new'), icon: '/assets/images/plus.svg', diff --git a/src/containers/ProductsPage/ProductStore/ProductStore.js b/src/containers/ProductsPage/ProductStore/ProductStore.js index f14c5a61..48c418de 100644 --- a/src/containers/ProductsPage/ProductStore/ProductStore.js +++ b/src/containers/ProductsPage/ProductStore/ProductStore.js @@ -17,9 +17,9 @@ export default class ProductStore { let resultOnSave; - const createProductApiService = new AesirxPimProductApiService(); + const aesirxPimProductApiService = new AesirxPimProductApiService(); - resultOnSave = await createProductApiService.create(convertedUpdateGeneralData); + resultOnSave = await aesirxPimProductApiService.create(convertedUpdateGeneralData); if (resultOnSave) { runInAction(() => { @@ -43,9 +43,9 @@ export default class ProductStore { const convertedUpdateGeneralData = ProductItemModel.__transformItemToApiOfUpdation(updateProductData); let resultOnSave; - const updateProductApiService = new AesirxPimProductApiService(); + const aesirxPimProductApiService = new AesirxPimProductApiService(); - resultOnSave = await updateProductApiService.update(convertedUpdateGeneralData); + resultOnSave = await aesirxPimProductApiService.update(convertedUpdateGeneralData); if (resultOnSave) { runInAction(() => { callbackOnSuccess(resultOnSave); @@ -69,9 +69,9 @@ export default class ProductStore { const results = true; if (results) { - const getDetailInfoAPIService = new AesirxPimProductApiService(); + const aesirxPimProductApiService = new AesirxPimProductApiService(); - const respondedData = await getDetailInfoAPIService.getDetail(id); + const respondedData = await aesirxPimProductApiService.getDetail(id); if (respondedData) { runInAction(() => { @@ -92,8 +92,8 @@ export default class ProductStore { async getListCategories(callbackOnSuccess, callbackOnError) { try { - const getPimCategoyAPIService = new AesirxPimCategoryApiService(); - const respondedData = await getPimCategoyAPIService.getList({ 'list[limit]': 9999 }); + const aesirxPimCategoryApiService = new AesirxPimCategoryApiService(); + const respondedData = await aesirxPimCategoryApiService.getList({ 'list[limit]': 9999 }); if (respondedData) { runInAction(() => { @@ -114,8 +114,8 @@ export default class ProductStore { async getList(callbackOnSuccess, callbackOnError, filters) { try { - const getPimProductAPIService = new AesirxPimProductApiService(); - const respondedData = await getPimProductAPIService.getList(filters); + const aesirxPimProductApiService = new AesirxPimProductApiService(); + const respondedData = await aesirxPimProductApiService.getList(filters); if (respondedData) { runInAction(() => { callbackOnSuccess(respondedData); @@ -135,8 +135,8 @@ export default class ProductStore { async getListPublishStatus(callbackOnSuccess, callbackOnError) { try { - const getAesirxPimUtilApiService = new AesirxPimUtilApiService(); - const respondedData = await getAesirxPimUtilApiService.getListPublishStatus(); + const aesirxPimUtilApiService = new AesirxPimUtilApiService(); + const respondedData = await aesirxPimUtilApiService.getListPublishStatus(); if (respondedData) { runInAction(() => { callbackOnSuccess(respondedData); @@ -158,8 +158,8 @@ export default class ProductStore { if (!id) return false; try { - const getDetailInfoAPIService = new AesirxPimProductApiService(); - const respondedData = await getDetailInfoAPIService.getDetailInfo(id); + const aesirxPimProductApiService = new AesirxPimProductApiService(); + const respondedData = await aesirxPimProductApiService.getDetailInfo(id); return respondedData; } catch (error) { // no error throw @@ -170,8 +170,20 @@ export default class ProductStore { async updateStatus(arr, status) { try { - const updateStatusAPIService = new AesirxPimProductApiService(); - const respondedData = await updateStatusAPIService.updateStatus(arr, status); + const aesirxPimProductApiService = new AesirxPimProductApiService(); + const respondedData = await aesirxPimProductApiService.updateStatus(arr, status); + return respondedData; + } catch (error) { + // no error throw + } + + return false; + } + + async deleteProducts(arr) { + try { + const aesirxPimProductApiService = new AesirxPimProductApiService(); + const respondedData = await aesirxPimProductApiService.deleteProducts(arr); return respondedData; } catch (error) { // no error throw diff --git a/src/containers/ProductsPage/ProductViewModel/ProductListViewModel.js b/src/containers/ProductsPage/ProductViewModel/ProductListViewModel.js index 08c73c87..951d3cd1 100644 --- a/src/containers/ProductsPage/ProductViewModel/ProductListViewModel.js +++ b/src/containers/ProductsPage/ProductViewModel/ProductListViewModel.js @@ -105,6 +105,18 @@ class ProductListViewModel { this.successResponse.state = true; }; + deleteProducts = async (arr) => { + const res = await this.productStore.deleteProducts(arr); + if (res) { + await this.productStore.getList( + this.callbackOnSuccessHandler, + this.callbackOnErrorHandler, + this.successResponse.filters + ); + } + this.successResponse.state = true; + }; + callbackOnSuccessSetFeatured = async (result) => { this.successResponse.listProducts = this.successResponse.listProducts.map((o) => { if (o.id == result) {