{"version":3,"sources":["states/app-setting/app-setting.models.ts","states/app-setting/app-setting.reducer.ts","shared/constants/api-endpoint.ts","shared/plugins/string-helper.ts","shared/plugins/localization.ts","shared/constants/routes.ts","shared/plugins/history.ts","states/staff/staff.api.ts","states/account/account.api.ts","states/account/account.slice.ts","shared/plugins/http-service.ts","states/system-setting/system-setting.api.ts","states/global-value/global-value.slice.ts","states/localization/localization.slice.ts","states/branch/branch.api.ts","states/branch/branch.slice.ts","states/ware-house/ware-house.api.ts","states/ware-house/ware-house.slice.ts","states/tag/tag.api.ts","states/tag/tag.slice.ts","states/product-attribute/product-attribute.api.ts","states/product-attribute/product-attribute.slice.ts","states/unit/unit.api.ts","states/unit/unit.slice.ts","states/transportation/transportation.api.ts","states/transportation/transportation.slice.ts","states/staff/staff.slice.ts","states/modifier-group/modifier-group.api.ts","states/modifier-group/modifier-group.slice.ts","app.store.ts","modules/core/empty.tsx","modules/account/login-page.tsx","shared/hooks/use-callback-url.ts","modules/account/components/change-password-modal.tsx","shared/constants/define-localization.ts","shared/layout/header-app.tsx","shared/components/empty-branch/empty-branch.tsx","states/account/account.models.ts","states/role-management/role-management.models.ts","shared/layout/layout-app.tsx","shared/components/loading/loading.tsx","modules/account/components/send-mail-form.tsx","modules/account/components/reset-password-form.tsx","modules/account/forgot-password-page.tsx","states/role-management/role-management.api.ts","shared/plugins/list-helper.ts","modules/role-management/components/role-form-modal.tsx","modules/role-management/role-management-page.tsx","states/theme-template/theme-template.models.ts","states/static-page/static-page.api.ts","modules/static-page/static-page.tsx","states/theme-setting/theme-setting.api.ts","states/theme-setting/theme-setting.services.ts","states/theme-template/theme-template.api.ts","shared/constants/google-drive.ts","shared/components/upload-file/upload-file.tsx","shared/components/custom-theme/theme-setting-image.tsx","shared/components/custom-theme/theme-setting-image-list.tsx","shared/components/custom-theme/theme-setting-text-html.tsx","shared/components/custom-theme/theme-setting-text-link.tsx","shared/components/custom-theme/theme-setting-text-normal.tsx","shared/components/custom-theme/theme-setting-group.tsx","shared/components/custom-theme/custom-theme.tsx","themes/icons/box.svg","themes/icons/location.svg","themes/icons/vi.svg","themes/icons/us.svg","shared/components/icons.tsx","shared/components/language-selector.tsx","shared/components/seo/seo.tsx","shared/hooks/use-refresh.ts","shared/components/tinymce/mce-editor.tsx","modules/static-page/components/staticpage-information-tab.tsx","modules/static-page/add-update-static-page.tsx","states/contact/contact.models.ts","states/contact/contact.api.ts","modules/contact/contact.tsx","states/blog-category/blog-category.api.ts","modules/blog-category/components/blog-category-information-tab.tsx","modules/blog-category/blog-category-modal.tsx","modules/blog-category/blog-category.tsx","states/blog/blog.api.ts","shared/components/tag/tag-modal.tsx","shared/components/tag/tag-selector.tsx","modules/blog/components/blog-information-tab.tsx","modules/blog/add-update-blog.tsx","shared/components/sortable/sortable.tsx","modules/blog/blog.tsx","shared/components/branch/branch-selector.tsx","modules/staff/staff-modal.tsx","shared/components/qr-code/qr-code.tsx","states/user-management/user-management.api.ts","modules/staff/staff-qr-modal.tsx","modules/staff/staff.tsx","modules/theme-config/theme-setting-page.tsx","modules/theme-config/add-update-theme-setting.tsx","states/menu-setting/menu-setting.api.ts","modules/menu-setting/components/menu-modal-chilren.tsx","modules/menu-setting/components/menu-item-list.tsx","modules/menu-setting/components/menu-item.tsx","modules/menu-setting/components/menu-modal.tsx","modules/menu-setting/menu-page.tsx","states/product-category/product-category.api.ts","modules/product-category/product-category.tsx","states/product/product.api.ts","modules/product/components/variation-modal.tsx","modules/product/product.tsx","shared/constants/app-enums.ts","states/customer/customer.api.ts","shared/components/customer/customer-modal.tsx","modules/customer/customer.tsx","states/product/product.models.ts","shared/components/product-attribute/product-attribute-group-modal.tsx","shared/components/product-attribute/product-attr-group-selector.tsx","shared/components/product-attribute/product-attribute-modal.tsx","shared/components/product-attribute/product-attr-selector.tsx","shared/components/product-attribute/product-attribute-value-modal.tsx","shared/components/product-attribute/product-attr-value-selector.tsx","modules/product/components/product-attribute-tab.tsx","shared/components/custom-input/custom-number-input.tsx","shared/components/custom-input/money-input.tsx","shared/components/unit/unit-modal.tsx","shared/components/unit/unit-selector.tsx","modules/product/components/product-information-tab.tsx","shared/components/product/product-name.tsx","modules/product/components/product-unit-product.tsx","modules/product/add-update-product.tsx","states/shipping-fee/shipping-fee.api.ts","modules/shipping-fee/components/shipping-fee-menu.tsx","modules/shipping-fee/default-shipping-fee.tsx","states/address/address.api.ts","modules/shipping-fee/components/shipping-fee-address-modal.tsx","modules/shipping-fee/shipping-fee-address.tsx","modules/shipping-fee/components/shipping-fee-order-amount-modal.tsx","modules/shipping-fee/shipping-fee-order-amount.tsx","states/product-comment/product-comment.models.ts","states/product-comment/product-comment.api.ts","modules/product-comment/components/product-comment-item.tsx","modules/product-comment/product-comment.tsx","modules/product-attribute/product-attribute-group.tsx","states/product-category/product-category.models.ts","modules/product-attribute/product-attribute.tsx","modules/product-attribute/product-attribute-value.tsx","modules/tag/tag.tsx","modules/product-category/components/product-category-attribute-tab.tsx","modules/product-category/components/product-category-filter-setting.tsx","modules/product-category/add-update-product-category.tsx","states/customer-group/customer-group.api.ts","modules/customer-group/customer-group-modal.tsx","modules/customer-group/customer-group.tsx","modules/branch/components/branch-information-tab.tsx","states/payment-gateway/payment-gateway.api.ts","states/payment-gateway/payment-gateway.models.ts","modules/branch/components/mxmerchant-setting-form.tsx","modules/branch/components/branch-payment-api-modal.tsx","modules/branch/components/branch-payment-setting-tab.tsx","states/branch-order-pickup-setting/branch-order-pickup-setting.api.ts","modules/branch/components/branch-order-pickup-tab.tsx","states/branch-schedule-setting/branch-schedule-setting.api.ts","modules/branch/components/branch-schedule-tab.tsx","modules/branch/add-update-branch.tsx","modules/branch/branch.tsx","states/website-config/website-config.api.ts","modules/website-config/website-config.tsx","modules/unit/unit-page.tsx","modules/theme-template/components/theme-template-basic.tsx","modules/theme-template/components/theme-template-group.tsx","modules/theme-template/add-update-theme-template.tsx","modules/theme-template/theme-template-page.tsx","shared/components/tinymce/mce-editor-modal.tsx","states/system-setting/system-setting.models.ts","modules/system-config/system-config.tsx","modules/product-stock/product-stock-page.tsx","modules/ware-house/ware-house-page.tsx","modules/ware-house/add-update-ware-house.tsx","shared/components/product/product-stock-modal.tsx","states/order/order.models.ts","states/order/order.api.ts","modules/order/components/order-status-tag.tsx","modules/order/components/order-status-selector.tsx","shared/components/staff/staff-selector.tsx","modules/order/components/order-payment-status-tag.tsx","modules/order/components/order-payment-method-tag.tsx","modules/order/components/order-payment-info-modal.tsx","modules/order/components/order-processing-modal.tsx","modules/order/components/order-cancel-button.tsx","states/order-packing-list/order-packing-list.api.ts","modules/order/components/order-received-button.tsx","modules/order/components/order-shipping-button.tsx","modules/order/components/order-returned-button.tsx","modules/order/components/order-returning-button.tsx","modules/order/components/order-verify-button.tsx","modules/order/components/order-actions.tsx","modules/order/components/order-detail-info.tsx","modules/order/components/order-payment-info.tsx","modules/order/components/order-shipping-status-tag.tsx","modules/order/components/order-packing-list-info.tsx","modules/order/components/order-packing-list-modal.tsx","modules/order/order-page.tsx","shared/components/modals/global-message-modal.tsx","states/order-report/order-report.models.ts","states/order-report/order-report.api.ts","modules/order-report/order-report.tsx","shared/components/modifier-group/modifier-group-modal.tsx","modules/modifier-group/modifier-group-page.tsx","shared/hooks/use-printer.tsx","shared/hooks/use-fetch-app-data.ts","states/transportation/transportation.models.ts","shared/components/transportation/ghtk-api-setting-form.tsx","shared/components/transportation/transportation-api-modal.tsx","shared/components/transportation/transportation-setting.tsx","modules/system-config/transportation-page.tsx","states/google-setting/google-setting.api.ts","modules/google-setting/firebase-setting.tsx","states/comment/comment.models.ts","states/comment/comment.api.ts","modules/comment/components/comment-item.tsx","modules/comment/components/comment-tab.tsx","modules/comment/comment.tsx","states/promotion-code/promotion-code.api.ts","shared/models/promotion.model.ts","modules/promotion-code/promotion-code-page.tsx","modules/promotion-code/components/promotion-code-information-tab.tsx","modules/promotion-code/components/promotion-products-transfer-component.tsx","modules/promotion-code/components/promotion-code-condition-tab.tsx","modules/promotion-code/components/promotion-code-value-tab.tsx","modules/promotion-code/promotion-code-add-update.tsx","states/payment-setting/payment-setting.api.ts","modules/payment-setting/components/payment-cod-setting.tsx","modules/payment-setting/components/payment-transfer-setting.tsx","modules/payment-setting/payment-setting-page.tsx","app.tsx","shared/hooks/use-notify-order-printer.ts","serviceWorker.ts","index.tsx"],"names":["LanguageType","CurrencyType","SET_DEFAULT_SETTING","SET_ACTIVE_SIDEBAR","initialState","currencyType","VND","language","English","logoUrl","activatedMenu","ACCOUNT_API_REFRESH_TOKEN","API_V1_URI","ROLE_MANAGEMENT_API","UPLOAD_FILE_API","STATIC_PAGE_API","CONTACT_API","BLOG_API","BLOG_CATEGORY_API","STAFF_API","THEME_SETTING_API","MENU_SETTING_API","CUSTOMER_API","PRODUCT_CATEGORY_API","PRODUCT_API","SHIPPING_FEE_API","SHIPPING_FEE_API_DEFAULT","SHIPPING_FEE_API_BY_ADDRESS","SHIPPING_FEE_API_BY_ORDER_AMOUNT","PRODUCT_COMMENT_API","COMMENT_API","ORDER_API","PRODUCT_ATTRIBUTE_GROUP_API","PRODUCT_ATTRIBUTE_API","PRODUCT_ATTRIBUTE_VALUE_API","TAG_API","CUSTOMER_GROUP_API","WEBSITE_CONFIGURATION_API","BRANCH_API","SYSTEM_API","GOOGLE_FIREBASE_API","GOOGLE_API","UNIT_API","THEME_TEMPLATE_API","WARE_HOUSE_API","ORDER_PACKING_LIST_API","TRANSPORTATION_API","MODIFIER_GROUP_API","PROMOTION_CODE_API","ORDER_PAYMENT_SETTING_API","ORDER_PAYMENT_SETTING_API_COD","ORDER_PAYMENT_SETTING_API_TRANSFER","cleanUnicode","str","toLowerCase","replace","formatMoney","n","c","d","t","f","j","Math","abs","s","i","parseInt","toFixed","length","substr","slice","redirectFileLocalUrl","filePath","process","formatString","index","formatPhoneNumber","phoneNumberString","match","formatPersonName","firstName","lastName","toUpperCase","currentCultureName","CoreResource","momentDateTimeFormat","getCurrentCulture","momentDateFormat","localStorage","getItem","resourceName","resource","store","getState","localization","params","resourceKey","toString","splice","ROUTE_PREFIX","LOGIN_ROUTE","FORGOT_PASSWORD_ROUTE","UNIT_ROUTE","PRODUCT_ATTRIBUTE_GROUP_ROUTE","PRODUCT_ATTRIBUTE_ROUTE","PRODUCT_ATTRIBUTE_VALUE_ROUTE","TAG_ROUTE","THEME_TEMPLATE_ROUTE","ADD_THEME_TEMPLATE_ROUTE","UPDATE_THEME_TEMPLATE_ROUTE","THEME_SETTING_ROUTE","ADD_THEME_SETTING_ROUTE","UPDATE_THEME_SETTING_ROUTE","PRODUCT_CATEGORY_ROUTE","ADD_PRODUCT_CATEGORY_ROUTE","UPDATE_PRODUCT_CATEGORY_ROUTE","PRODUCT_ROUTE","ADD_PRODUCT_ROUTE","UPDATE_PRODUCT_ROUTE","WEBSITE_CONFIG_ROUTE","SYSTEM_CONFIG_ROUTE","FIREBASE_CONFIG_ROUTE","TRANSPORTATION_ROUTE","COMMENT_ROUTE","BRANCH_ROUTE","ADD_BRANCH_ROUTE","UPDATE_BRANCH_ROUTE","STAFF_ROUTE","WARE_HOUSE_ROUTE","ADD_WARE_HOUSE_ROUTE","UPDATE_WARE_HOUSE_ROUTE","SHIPPING_FEE_DEFAULT_ROUTE","SHIPPING_FEE_BY_ADDRESS_ROUTE","SHIPPING_FEE_BY_ORDER_AMOUNT_ROUTE","PAYMENT_SETTING_ROUTE","ORDER_ROUTE","ORDER_REPORT_ROUTE","PROMOTION_CODE_ROUTE","ADD_PROMOTION_CODE_ROUTE","UPDATE_PROMOTION_CODE_ROUTE","UN_AUTH_PATH","history","createBrowserHistory","searchStaff","searchStaffRequestModel","apiClient","postHttp","createResponse","getAllStaff","getHttp","addStaff","model","response","updateStaff","putHttp","getCurrentStaff","staff","data","changePasswordApi","changePasswordModel","forgotPasswordApi","forgotPasswordModel","appPath","resetPasswordApi","resetPasswordModel","login","loginModel","loginResponse","loginByCode","passCode","getProfile","profileResponse","tokenName","fetchProfile","createAsyncThunk","_","thunkApi","profile","rejectWithValue","token","setItem","JSON","stringify","dispatch","accountSlice","actions","setLoginUser","Error","logout","any","removeItem","setLogoutUser","push","fetchCurrentStaff","createSlice","name","currentUser","undefined","currentStaff","storageValue","parse","getToken","isAuthentication","reducers","state","action","payload","extraReducers","builder","addCase","fulfilled","ApiClient","instance","failedQueue","isRefreshing","this","axios","create","baseURL","requestInterceptor","reponseInterceptor","error","forEach","prom","reject","resolve","interceptors","request","use","config","headers","protected","account","accessToken","Authorization","Promise","that","originalRequest","status","url","endsWith","_retry","then","catch","err","refreshToken","res","processQueue","withCredentials","get","post","put","delete","getTimeZones","getSystemConfig","updateSystemConfig","isAutoPrintOrderOnline","isLoading","isLoadingApp","mceModal","show","productStockModal","productStocks","notificationEmails","globalMessage","separateProductEachBranch","autoPrintOrderOnline","fetchSystemConfig","globalValueSlice","setLoading","setLoadingApp","setMceModal","setProductStockModal","setGlobalMessage","setIsAutoPrintOrderOnline","value","ianaTimeZone","hostUrl","timeZone","fetchLocalization","values","supporLanguages","languages","fetchClientLanguages","localizationSlice","clientLanguages","getBranchList","removeBranch","removedModel","updateSortBranch","updatedSortModel","getBranchById","id","addBranch","updateBranch","copyMenuFromOtherBranch","currentBranchStorageName","fetchBranchList","branchId","isEmpty","setCurrentBranch","branch","find","m","Number","branchSlice","currentBranch","branchList","selectCurrentBranch","getWareHouseList","removeWareHouse","getWareHouseById","addWareHouse","updateWareHouse","fetchWareHouseList","wareHouseSlice","wareHouseList","getTagList","langCode","removeTag","getTagByIdApi","addTag","updateTag","fetchTagList","tagSlice","tags","tagListSelector","tag","getProductAttributeGroupListApi","removeProductAttributeGroupApi","getProductAttributeGroupByIdApi","addProductAttributeGroupApi","updateProductAttributeGroupApi","getProductAttributeListApi","removeProductAttributeApi","getProductAttributeByIdApi","addProductAttributeApi","updateProductAttributeApi","getProductAttributeValueListApi","removeProductAttributeValueApi","getProductAttributeValueByIdApi","addProductAttributeValueApi","updateProductAttributeValueApi","fetchProductAttributeList","fetchProductAttributeGroupList","fetchProductAttributeValueList","productAttributeSlice","attributeGroups","attributes","attributeValues","productAttributeGroupsSelector","productAttribute","productAttributesSelector","productAttributeValuesSelector","getUnitList","removeUnit","addUnit","updateUnit","fetchUnitList","unitSlice","units","unitListSelector","unit","getTransportationList","getTransportationSettingAPI","transportationCode","updateTransportationSettingAPI","fetchTransportationList","transportationSlice","transportationList","fetchStaffList","staffSlice","staffs","staffListSelector","getModifierGroupList","removeModifierGroup","addModifierGroup","updateModifierGroup","fetchModifierGroupList","modifierGroupSlice","modifierGroups","modifierGroupListSelector","modifierGroup","configureStore","reducer","combineReducers","appSetting","type","USD","activeValue","globalValue","wareHouse","transportation","devTools","EmptyPage","props","LoginPage","document","title","useDispatch","useHistory","useForm","form","React","loading","param","queryParams","URLSearchParams","location","search","useCallBackUrl","passCodeQuery","passCodeValue","useSelector","shallowEqual","onLoginSubmit","loginAction","message","onAutoLogin","trim","replaceAll","checkAutoLogin","moment","refreshTokenExpires","isAfter","useEffect","className","src","alt","onFinish","Item","rules","required","size","prefix","UserOutlined","placeholder","Password","LockOutlined","htmlType","block","to","ChangePasswordModal","visible","onCancel","useState","addBtnLoading","setAddBtnLoading","success","onSave","submit","setFieldsValue","currentPassword","newPassword","confirmPassword","onOk","confirmLoading","width","footer","onClick","layout","DefaultErrorMessage","TheFieldIsRequired","Name","Slug","Information","MenuText","Avatar","Sort","Classify","Permission","IsActive","SessionLength","Header","Layout","HeaderApp","visibleModal","setVisibleModal","setCultureLocal","_handleChangeBranch","style","onChange","item","showSearch","filterOption","input","option","children","indexOf","filter","isAccessAllBranch","roles","r","branchIds","b","map","Option","overlay","placement","trigger","EmptyBranch","description","level","isAdmin","isHavePermission","permissionName","permissions","includes","PermissionNameEnum","PermissionConst","WEBSITE_CONTENT","BRANCH","COMMENT","CUSTOMER","PRODUCT","ORDER","STAFF","Content","Sider","SiderMenu","isMobile","menuCollapse","setMenuCollapse","collapsible","collapsed","onCollapse","mode","OrderManage","icon","HomeOutlined","DollarOutlined","ProductManage","BarcodeOutlined","CustomerManage","ContactsOutlined","CommentManage","CommentOutlined","WebsiteContentManage","FileTextOutlined","Divider","CarOutlined","SettingOutlined","StaffManage","LayoutApp","setVisible","useLocation","isLogin","hasSider","isDesktop","forceRender","closable","closeIcon","MenuOutlined","pathname","startsWith","Loading","spinning","SendEmailPasswordForm","onSendEmail","onFinishFailed","errorInfo","console","log","ResetPasswordForm","userId","onSendResetPassword","ForgotPasswordPage","actionResetPassword","setActionResetPassword","setToken","setUserId","decodeURI","substring","code","createRole","createUserManagementModel","getRoles","getRoleById","updateRole","updateModel","removeRole","getAppPermissions","groupBy","list","keyGetter","Map","key","collection","set","Array","from","RoleFormModal","isUpdate","onClose","onModifier","activePermission","setActivePermission","permissionGroups","setPermissionGroups","roleModel","setRoleModel","initUpdateRoleModel","initCreateRoleModel","appPermissions","group","concat","actived","onChangePermissionItem","event","target","checked","newPermissionGroup","p","groupName","permission","gutter","justify","span","selectedKeys","onSelect","selectable","ThemeType","RoleManagementPage","isModal","setIsModal","idList","selectedRowsKeys","setSelectedRowsKeys","isUpdateRole","setIsUpdateRole","isLoadingList","setIsLoadingList","rolePagedResults","setRolePagedResults","setModel","setPermissions","rowSelection","selectedRowKeys","onUpdateRoleBtn","roleModelResponse","getAppRoles","result","columns","dataIndex","render","Fragment","permissionList","per","PlusCircleOutlined","dataSource","height","mask","danger","Date","now","btn","notification","close","open","DeleteOutlined","searchStaticPage","searchStaticPageRequestModel","removeStaticPage","getStaticPageById","addStaticPage","updateStaticPage","StaticPage","pagedResults","setpagedResults","page","pageSize","filterModel","setFilterModel","handleSearch","gotoPage","results","useDebouncedCallback","Search","e","pagination","total","totalItemCount","current","currentPage","searchThemeSettingApi","searchThemeSettingPageRequestModel","removeThemeSettingApi","getThemeSettingByIdApi","getThemeSettingListApi","addThemeSettingApi","updateThemeSettingApi","getGlobalThemeSettingApi","ThemeTypeText","setValueFromTemplate","template","valueModel","GroupList","ImageList","Group","propName","convertToThemeTemplateItem","templateModel","searchThemeTemplate","searchThemeTemplateRequestModel","removeThemeTemplate","getThemeTemplateById","getThemeTemplateList","addThemeTemplate","updateThemeTemplate","IMAGES_FOLDER_ID","UploadFileLocal","album","isUploadImage","maxFileSize","multiple","maxFileCount","isUploadModal","folderId","fileList","setFileList","uploadModal","setUpLoadModal","previewModal","setPreviewModal","handlePreview","file","previewVisible","previewImage","beforeUpload","onUpdateFileList","temp","uid","nanoid","okText","cancelText","customRequest","onSuccess","onError","formData","FormData","append","onPreview","maxCount","listType","onRemove","fileListTemp","CloudUploadOutlined","marginTop","ThemeSettingImage","newFileList","ThemeSettingImageList","ThemeSettingTextHtml","ThemeSettingTextLink","text","link","ThemeSettingTextNormal","rows","ev","preventDefault","ThemeSettingGroup","itemKey","customHeader","onDelete","themeSettingList","themeSettingId","onChangeThemeSettingId","expandIconPosition","Panel","header","onConfirm","stopPropagation","align","theme","modelValue","groupItem","changedItem","listItem","themeItem","Image","TextNormal","TextHtml","TextLink","renderThemeTemplateItems","CustomTheme","themeTemplateList","setThemeTemplateList","setThemeSettingList","currentTemplate","setCurrentTemplate","slug","templateItem","themeId","customValue","templateId","nodeList","setting","themeTemplateId","changedModel","_handleRenderCustomTheme","_path","_excluded","_extends","Object","assign","bind","arguments","source","prototype","hasOwnProperty","call","apply","_objectWithoutProperties","excluded","sourceKeys","keys","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","SvgBox","_ref","svgRef","titleId","xmlns","viewBox","ref","transform","ForwardRef","_g","_g2","_g3","_g4","_g5","_g6","_g7","_g8","_g9","_g10","_g11","_g12","_g13","_g14","_g15","SvgVi","xmlnsXlink","x","y","enableBackground","xmlSpace","fill","SvgUs","BoxOutlined","Icon","component","Box","LanguageIcons","Us","vi","Vi","LanguageSelector","selectedCode","Seo","Text","metaTitle","showIcon","metaDescription","TextArea","metaKeyword","excludeFromSitemap","schema","useRefresh","handler","clearTimeout","setTimeout","MceEditor","pageContent","editorRef","useRef","outputFormat","plugins","apiKey","textareaName","init","menu","items","edit","insert","view","format","table","tools","tinydrive_token_provider","failure","statusbar","toolbar","a11y_advanced_options","file_picker_types","image_caption","image_advtab","icons","resize","target_list","file_picker_callback","callback","meta","createElement","setAttribute","filetype","click","onchange","files","images_upload_handler","blobInfo","progress","blob","filename","convert_urls","images_upload_url","image_title","images_upload_credentials","paste_data_images","typeahead_urls","content_css","templates","content","onEditorChange","StaticPageInformationTab","isUpdateMode","defaultActiveKey","seoFields","isCustomizePage","AddUpdateStaticPage","refresh","staticPageId","useParams","setIsUpdateMode","currentLanguage","setCurrentLanguage","getStaticPage","onSaved","customizeTheme","isDefault","href","flex","Modal","confirm","RollbackOutlined","SaveOutlined","TabPane","tab","ContactStatus","searchContact","searchContactRequestModel","removeContact","updateContact","Select","Contact","currentTimeZone","setPagedResults","handleChangeStatus","phone","email","creationTime","momentTz","tz","optionFilterProp","modal","ExclamationCircleOutlined","valueOf","destroy","New","color","Seen","Done","allowClear","expandable","expandedRowRender","record","dangerouslySetInnerHTML","__html","searchBlogCategory","searchBlogCategoryRequestModel","removeBlogCategory","getBlogCategoryByIdApi","addBlogCategory","updateBlogCategory","BlogCategoryInformationTab","avatar","BlogCategoryModalComponent","onModal","closeModal","blogCateModel","setBlogCateModel","handleCloseModal","onSubmit","cursor","centered","BlogCategory","setModal","setUpdate","searchBlog","searchBLOGRequestModel","removeBlog","getBlogByIdApi","addBlog","updateBlog","updateSortListBlogApi","updateSortBlogApi","TagModalComponent","Form","tagName","resetFields","label","hidden","TagSelector","isMultiple","bordered","textAlign","tagList","handleOnModal","ids","options","notFoundContent","dropdownRender","margin","PlusOutlined","BlogInformationTab","blogCategories","blogContent","mainCategoryId","cate","relatedCategoryIds","AddUpdateBlog","blogId","setBlogCategories","getBlog","getBlogCategoryies","customizeField","sort","tagIds","Sortable","setIsLoading","modelLocalState","setModelLocalState","handleSubmitSort","DragHandle","SortableHandle","SortableItem","SortableElement","SortableContainerElement","SortableContainer","onSortEnd","oldIndex","newIndex","newData","arrayMove","rowKey","components","body","wrapper","useDragHandle","helperClass","row","restProps","findIndex","Blog","isUpdateSort","setIsUpdateSort","handleSortListBlog","sortList","handleSortBlog","getBlogCategories","viewCount","momentTZ","lastModificationTime","blogCategoryId","blogCate","OrderedListOutlined","extra","BranchSelector","branchs","StaffModalComponent","roleDropdown","setRoleDropdown","setBranchIds","active","roleIds","onBlur","labelCol","initialValues","isActive","wrapperCol","disabled","defaultValue","appRole","valuePropName","selected","QRCodeComponent","dataUrl","setDataUrl","generateQR","QRCode","toDataURL","errorCorrectionLevel","getQrCode","StaffQrModalComponent","setPassCode","window","protocol","hostname","Staff","qrModal","setQrModal","userProfileId","toggleModal","keyword","ThemeSettingPage","AddUpdateThemeSetting","setAction","_handleGetUpdate","go","newModel","searchMenuSetting","searchMenuSettingPageRequestModel","removeMenuSetting","deleteHttp","getMenuSettingById","addMenuSetting","updateMenuSetting","MenuSettingChildrenModal","onUpdate","images","setImages","extensionFields","menuType","onFill","Collapse","MenuSettingItemList","menuItems","onAdd","menuItemsMemo","useMemo","indexChildren","setIndexChildren","handleToggleModal","onAddMenuChildren","menuModel","modelTemp","removeItemChildren","onUpdateItemChildren","menuObj","menuItem","showArrow","some","a","MenuSettingItem","isRootMenu","currentModel","setCurrentModel","onRemoveBtn","resovledCode","AddMenuSettingModal","MenuSetting","tip","removeProductCategory","updateSortProductCategory","getProductCategoryByIdApi","getProductCategoryListApi","addProductCategoryApi","updateProductCategoryApi","ProductCategory","loadCategoryList","handleSortCategory","searchProductApi","searchProductRequestModel","searchListProductApi","updateSortProductApi","getProductByIdApi","getAllVariationsApi","updateProductApi","addProductApi","removeProduct","getProductHasNewCommentApi","VariationModal","skuCode","websiteName","shape","variationAttributes","variationValue","join","mainVariationProductId","CheckCircleTwoTone","twoToneColor","price","DataTypeEnum","Product","products","setProducts","includeAccessory","includeChildrenUnitProduct","includeChildrenVariationProduct","productCategories","setProductCategories","setVariationModal","variationModal","handleSortProduct","getProductCategories","handleGetListProduct","_handleClickVariationModal","product","isVariation","categoryIds","productCate","onReloadModel","searchCustomer","searchCustomerRequestModel","addCustomer","updateCustomer","CustomerModalComponent","customerId","phoneNumber","dayOfBirth","monthOfBirth","yearOfBirth","Customer","WholesalePriceType","DataTypeText","ProductProductAttributeModel","attributeId","attributeName","dataType","valueNumber","valueString","valueBoolean","valueDate","ProductAttributeGroupModalComponent","ProductAttributeGroupSelector","productAttributeGroupList","productAttributeGroup","productAttributeGroups","ProductAttributeModalComponent","ProductAttributeSelector","productAttributeList","productAttributes","ProductAttributeValueModalComponent","ProductAttributeValueSelector","productAttributeValueList","productAttributeValue","productAttributeValues","ProductAttributeTab","onUpdated","setSortableModel","sortableModel","_renderAttributeValue","attribute","ValueSelect","valuesTemp","valueId","Boolean","DateTime","dateString","toDate","showTime","showSecond","valueAsNumber","String","attributeGroupId","attributeGroupName","newList","attributegroup","groupIndex","valueTemp","newAttribute","attributeGroup","attributeIndex","resetValue","isNaN","CustomNumberInput","MoneyInput","hideUpDownBtn","formatter","parser","UnitModalComponent","unitName","UnitSelector","unitList","ProductInformationTab","isUnitProduct","wholesaleColumns","quantityFrom","quantityTo","sellingPrice","priceType","Unit","Total","wholesale","priceBySubTotalColumns","subTotalFrom","subTotalTo","priceBySubTotal","variationColumns","variationAttributeId","variationAttributeValueId","barCode","isModifier","promotionPrice","promotionFromDate","promotionToDate","unitRate","weight","ProductName","ProductUnitProducts","mainProduct","unitProducts","setUnitProducts","openModal","setUnitProductModal","unitProductModal","handleAddUnit","isInventory","accessoryIds","costPrice","isAccessory","mainUnitProductId","unitId","handleEditUnit","editedProduct","productIds","_record","AddUpdateProduct","productId","mainVariationProduct","setMainVariationProduct","getProduct","loadMainVariationProduct","att","getDefaultShippingFee","updateDefaultShippingFee","shippingFee","getShippingFeeAddresses","updateShippingFeeAddresses","createShippingFeeAddresses","removeShippingFeeAddresses","createShippingFeeOrderAmount","getShippingFeeOrderAmountList","updateShippingFeeOrderAmount","removeShippingFeeOrderAmount","ShippingFeeMenu","activeKey","MailOutlined","AppstoreOutlined","DefaultShippingFee","defaultFee","setDefaultFee","xxl","getProvinceList","ADDRESS_API","getDistrictList","provinceCode","getWardList","districtCode","getCountryList","ShippingFeeAddressModal","provinces","shippingFeeAddresses","shippingFeeAddressesModel","setShippingFeeAddressesModel","currentProvinceCode","setCurrentProvinceCode","handleChangeProvince","provincecode","district","districtName","provinceName","districtColumn","ShippingFeeAddress","shippingFeeAddress","setShippingFeeAddress","setIsUpdate","setProvinces","isActiveModel","setIsActiveModel","shippingFeeAddressList","setShippingFeeAddressList","shippingFeeAddressColumns","handleClickUpdateAreaBtn","getShippingAddress","ShippingFeeOrderAmountModal","shippingFeeOrderAmountModel","setShippingFeeOrderAmountModel","amountFrom","amountTo","ShippingFeeOrderAmount","shippingFeeOrderAmountList","setShippingFeeOrderAmountList","shippingFeeModel","setShippingFeeModel","getShippingOrderAmounts","handleClickUpdateBtn","shippingFeeOrderAmountColumns","ProductCommentStatusEnum","getProductCommentList","addProductComment","toggleProductCommentIsActive","commentId","changeProductCommentStatus","commentStatus","ProductCommentItem","onReplyBtnClicked","handleToggleIsActive","handleToggleStatus","newStatus","parentId","EnterOutlined","EyeInvisibleOutlined","EyeOutlined","staffId","CheckOutlined","author","lineHeight","datetime","rating","allowHalf","childrenComments","child","ProductComment","isLoadingProducts","setIsLoadingProducts","isLoadingComments","setIsLoadingComments","selectedProduct","setSelectedProduct","replyCommentModel","setReplyCommentModel","productComments","setProductComments","isReply","setIsReply","isAddingComment","setIsAddingComment","handleGetComment","onUpdatedCommentItem","renderItem","background","Meta","count","numberOfNewComments","comment","SelectTypeEnum","ProductAttributeGroup","onRefreshData","ProductAttribute","ProductAttributeValue","Tag","LogicalTermEnum","ProductCategoryProductAttributeModel","ProductCategoryAttributeTab","ProductCategoryFilterSetting","memorizedFilterSetting","priceFilters","attributeFilters","logicalTerm","productAttributeId","productAttributeValueIds","attValue","getAttributeTemp","getPriceFilterTemp","priceFilterColumns","displayedText","priceFiltersTemp","priceFrom","priceTo","handleDeletePriceFilter","attributeColumns","attributeTemp","And","Or","handleAddAttributeValue","handleDeleteAttribute","models","attrIndex","getAttributeValueTemp","attributeValueColumns","attributeValueTemp","expandedRowAttributeValue","AddUpdateProductCategory","filterSetting","separateProduct","productCategoryModifierGroups","modifierGroupId","selectType","isRequired","productCategoryModifiers","afterClose","filterSettingTemp","searchCustomerGroup","searchCustomerGroupRequestModel","removeCustomerGroup","addCustomerGroup","updateCustomerGroup","CustomerGroupModalComponent","customerGroupModel","setCustomerGroupModel","onEmptySelection","customers","setCustomer","hideDefaultSelections","selections","onSearch","findCustomer","customerTemps","customer","customerResult","CustomerGroup","BranchInformationTab","wareHouses","countries","setCountries","states","setStates","timeZones","setTimeZones","branches","cloneMenuInfo","setCloneMenuInfo","_handleCloneMenu","fromBranchId","CopyOutlined","taxRate","address","countryCode","country","countryName","stateCode","stateName","street","postalCode","defaultPrinterIp","w","displayName","isUpComing","getPaymentGatewayList","getBranchPaymentSetting","paymentGatewayCode","updateBranchPaymentSetting","PaymentGatewayCodeConst","MxmerchantSettingForm","merchantId","consumerKey","consumerSecret","isSandbox","BranchPaymentApiModal","paymentGateway","apiSetting","setApiSetting","_handleCloseModal","_handleSaveApiSetting","paymentGatewayName","MxMerchant","newSetting","BranchPaymentSettingTab","paymentGateways","setPaymentGateways","apiModalProps","setApiModalProps","gatewayName","getBranchOrderPickupSetting","updateBranchOrderPickupSetting","BranchOrderPickupTab","_handleSaveSetting","sessionLength","maxOrderPerSession","getBranchScheduleSetting","updateBranchScheduleSetting","BranchScheduleTab","timeTable","day","use12Hours","AddUpdateBranch","getBranch","wareHouseIds","Branch","loadBranchList","handleSortBranch","getWebsiteConfig","updateWebsiteConfig","Input","WebsiteConfig","getConfig","privateGoogleCaptcha","publicGoogleCaptcha","customCodeBeginBodyTag","customCodeInHeadTag","customCodeEndBodyTag","robotTxt","googleAuthClientId","googleAuthClientSecret","googleAuthRedirectUrl","facebookAuthClientId","facebookAuthClientSecret","facebookAuthRedirectUrl","autoSize","minRows","UnitPage","ThemeTemplateBasic","ThemeTemplateGroup","addItemModel","setAddItemModel","entries","WarningOutlined","AddUpdateThemeTemplate","_handleOnSave","checkEmptyValue","ThemeTemplatePage","MceEditorModal","setContent","LoginTypeTextList","SystemConfig","timeZoneList","setTimeZoneList","loginType","ProductStockPage","setWareHouses","getProductCategoryies","allstock","inventories","totalStockQuantity","reduce","SearchOutlined","stock","onHandQuantity","WareHousePage","loadWareHouseList","AddUpdateWareHouse","districts","setDistricts","wards","setWards","getProvinces","getDistricts","getWards","getWareHouse","province","wardCode","wardName","pr","dt","ward","wd","ProductStockModal","ShopOutlined","ordered","totalReadyForSaleQuantity","upcoming","upComingQuantity","getOrderItemPriceWithModifierTotal","priceTotal","modifiers","mod","OrderConst","pending","onOrder","shipping","received","completed","cancel","returning","returned","orderType","online","directSales","OrderShippingConst","shippingType","delivery","pickup","ShippingCompany","ghtk","viettelPost","ghn","other","OrderPaymentConst","method","cod","card","cash","transfer","done","searchOrder","searchOrderRequestModel","getOrderById","updateOrderCancelAPI","verifyOrderAPI","completeOrderPaymentAPI","orderPaymentId","OrderStatusTag","marginRight","OrderStatusSelector","orderStatus","_handleOnChange","useCallback","StaffSelector","staffList","OrderPaymentStatusTag","OrderPaymentMethodTag","OrderPaymentInfoModal","payments","handleCompletePayment","orderId","amount","paymentMethod","ip","ipAddress","paymentStatus","paymentNote","_action","OrderProcessingModal","processings","creator","OrderCancelButton","CloseOutlined","createOrderPackingListApi","receivedPackingListApi","orderShippingId","returningPackingListApi","returnedPackingListApi","OrderReceivedButton","orderPackingListId","handleChangeStatusOrderReceived","OrderShippingButton","order","handleCreatePackingList","handleChangeStatusOrderReadyForPickup","packingListItems","orderItems","orderItem","orderItemId","modifier","orderPackingListItems","orderPackingLists","collectionAmount","customerPayFee","fee","shippingCompanyCode","shippedQuantity","quantity","billOfLadingCode","confirmedPickupTime","requestedPickupTime","shippingAddress","OrderReturnedButton","handleChangeStatusOrderShippingReturned","OrderReturningButton","handleChangeStatusOrderShippingReturning","OrderVerifyButton","OrderActions","loadOrder","OrderDetailInfo","onViewOrAdd","InfoCircleOutlined","orderNumber","couponCode","cartPromotionName","OrderPaymentInfo","subTotal","tipAmount","taxes","discountAmount","totalAmount","paidAmount","OrderShippingStatusTag","OrderPackingListInfo","orderPackingList","onOpenReturnedModal","ghost","wrap","OrderPackingListModal","orderPackingListInfo","updateMode","onChangeModal","handleCreatedPackingList","pickUpAddressId","shippingOptionId","orderItemColumns","stt","readOnly","strong","scroll","OrderPage","expandedRowsKeys","setExpandedRowsKeys","setLogoPrint","setPaymentInfoModal","paymentInfoModal","paymentInfos","setProcessingModal","processingModal","processing","orderList","orderIndex","setShippingModal","shippingModal","newModal","invoiceNumber","note","supplier","printBill","MoreOutlined","logoPrint","fromDate","startOf","endOf","backgroundColor","xl","lg","md","sm","xs","orderProcessings","packingList","orderPayments","expandedRowKeys","onExpandedRowsChange","ex","GlobalMessageModal","warning","OrderReportType","orderReportType","getOrderReportChartModel","ORDER_REPORT_API","getStatisticalOverview","OrderReport","selectOrderType","setOrderType","orderReport","setOrderReport","reportChartOrder","setReportChartOrder","loadingTotalOrder","loadingReportChartOrder","renderProduct","charAt","totalOrder","totals","orderTotal","xField","yField","xLabel","xAxis","autoRotate","scrollbar","seriesField","isGroup","alias","sales","Today","today","Yesterday","yesterday","Week","week","Month","month","LastMonth","lastMonth","itemLayout","html","bestSellerProduct","ModifierGroupModalComponent","ModifierGroupPage","modifierGroupList","printTheOrder","logo","ePosDev","printer","printData","requestPickupTime","split","nameArray","formatNamePrint","modi","formatOrderToPrint","onPrinterCreated","devObj","retcode","alert","timeout","onreceive","printjobid","onerror","ononline","onoffline","onpoweroff","oncoverok","oncoveropen","onpaperok","onpapernearend","onpaperend","ondrawerclosed","ondraweropen","onbatterylow","onbatteryok","onbatterystatuschange","setXmlString","send","deleteDevice","disconnect","onConnected","connectResult","createDevice","DEVICE_TYPE_PRINTER","crypto","buffer","rel","epson","ePOSDevice","ondisconnect","connect","useFetchAppData","testedPrinter","setTestedPrinter","fetchAdminPageData","all","testPrinterConnection","TransportationCodeConst","GhtkApiSettingForm","TransportationApiModal","transportationName","Ghtk","TransportationSetting","transportations","setTransportations","Customize","TransportationPage","ViettelPost","Ghn","getFirebaseConfig","updateFirebaseConfig","FirebaseConfig","projectId","privateKey","clientEmail","authDomain","storageBucket","messagingSenderId","appId","measurementId","CommentStatusConst","CommentTypeConst","ProductDetail","ProductCate","BlogDetail","searchCommentList","addComment","toggleCommentIsActive","changeCommentStatus","getReferenceHasNewComment","commentType","CommentItem","CommentTab","selectedReference","onChangeSelectReference","referenceCommentCounts","setReferenceCommentCounts","commentModel","isSubmitted","replyModal","setReplyModal","comments","setComments","referenceId","reference","CommentPage","setSelectedReference","searchPromotionCode","getPromotionCodeById","addPromotionCode","updatePromotionCode","PromotionConst","promotionConditionType","startDate","endDate","numberOfUses","forNewCustomer","buyAtLeastXProductInListProduct","subtotalAtLeastX","promotionValueType","discount","gift","discountType","percent","PromotionCode","handleDate","date","promotion","conditions","dateAndTime","PromotionCodeInformationTab","PromotionProductTransferComponent","categories","setProductList","targetKeys","setTargetKeys","setSelectedKeys","mapFromProductToTarget","initProduct","mapFromTargetToProduct","sourceProducts","newProducts","titles","nextTargetKeys","direction","moveKeys","onSelectChange","sourceSelectedKeys","targetSelectedKeys","onScroll","oneWay","PromotionCodeConditionTab","getModelTemp","getIndexCondition","getCondition","conditionIndex","valStr","logicType","numberOfProduct","handleChange","PromotionCodeValueTab","getValue","discountValue","maximumAmountValue","numberOfGifts","AddUpdatePromotionCode","setUpdateMode","getCategories","handleGetCurrentPromotion","promotionCode","getOrderCodPaymentSettingAPI","updateOrderCodPaymentSettingAPI","getOrderTransferPaymentSettingAPI","updateOrderTransferPaymentSettingAPI","PaymentCodSetting","PaymentTransferSetting","bankAccounts","bankAccountColumns","bankName","accountName","accountNumber","PaymentSettingPage","App","connection","setConnection","newconnection","signalR","withUrl","accessTokenFactory","accessTokenExpires","transport","LongPolling","withAutomaticReconnect","nextRetryDelayInMilliseconds","retryContext","build","stop","start","info","on","useNotifyOrderPrinter","path","exact","ThemeSetting","AddUpdateThemeConfig","ReactDOM","StrictMode","locale","viVN","getElementById","navigator","serviceWorker","ready","registration","unregister"],"mappings":"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","file":"static/js/main.d104f0a4.chunk.js","sourcesContent":["export interface AppSettingState {\n language: LanguageType;\n currencyType: CurrencyType;\n logoUrl: string;\n activatedMenu: string;\n}\n\nexport enum LanguageType {\n English,\n VietNamese,\n}\n\nexport enum CurrencyType {\n USD,\n VND,\n}\n\nexport const SET_DEFAULT_SETTING = \"SET_DEFAULT_SETTING\";\ninterface SetDefaultSetting {\n type: typeof SET_DEFAULT_SETTING;\n}\n\nexport const SET_ACTIVE_SIDEBAR = \"SET_ACTIVE_SIDEBAR\";\ninterface SetActiveSidebar {\n type: typeof SET_ACTIVE_SIDEBAR;\n activeValue: string;\n}\n\nexport type AppSettingActionType = SetDefaultSetting | SetActiveSidebar;\n","import {\n AppSettingState,\n CurrencyType,\n LanguageType,\n AppSettingActionType,\n SET_DEFAULT_SETTING,\n SET_ACTIVE_SIDEBAR,\n} from \"./app-setting.models\";\n\nconst initialState: AppSettingState = {\n currencyType: CurrencyType.VND,\n language: LanguageType.English,\n logoUrl: \"/cms-app/images/logo.png\",\n activatedMenu: \"\",\n};\n\nexport function appSettingReducer(\n state = initialState,\n action: AppSettingActionType\n): AppSettingState {\n switch (action.type) {\n case SET_DEFAULT_SETTING:\n return {\n ...state,\n currencyType: CurrencyType.USD,\n };\n case SET_ACTIVE_SIDEBAR:\n return {\n ...state,\n activatedMenu: action.activeValue,\n };\n default:\n return state;\n }\n}\n","export const API_V1_URI = \"/api/v1\";\n\nexport const ACCOUNT_API_LOGIN = API_V1_URI + \"/accounts/login\";\nexport const ACCOUNT_API_LOGIN_BY_QR = API_V1_URI + \"/accounts/login_by_qr\";\nexport const ACCOUNT_API_PROFILE = API_V1_URI + \"/accounts/profile\";\nexport const ACCOUNT_API_PASSWORD = API_V1_URI + \"/accounts/update-password\";\nexport const ACCOUNT_API_FORGOT_PASSWORD =\n API_V1_URI + \"/accounts/forgot-password\";\nexport const ACCOUNT_API_RESET_PASSWORD =\n API_V1_URI + \"/accounts/reset-password\";\nexport const ACCOUNT_API_REFRESH_TOKEN = API_V1_URI + \"/accounts/refresh-token\";\nexport const ACCOUNT_API_PERMISSION = API_V1_URI + \"/accounts/permissions\";\n\nexport const CURRENT_STAFF_API = API_V1_URI + \"/current_staff\";\n\nexport const USER_MANAGEMENT_API = API_V1_URI + \"/user_managements\";\n\nexport const ROLE_MANAGEMENT_API = API_V1_URI + \"/role_managements\";\nexport const ROLE_MANAGEMENT_API_PERMISSION =\n API_V1_URI + \"/role_managements/permissions\";\n\nexport const FILE_API = API_V1_URI + \"/files\";\nexport const UPLOAD_FILE_API = API_V1_URI + \"/uploads\";\nexport const UPLOAD_FILE_PDF_API = API_V1_URI + \"/uploads/pdf\";\n\nexport const SEARCH_USER_API = API_V1_URI + \"/search_engine/identity/users\";\n\nexport const STATIC_PAGE_API = API_V1_URI + \"/static_pages\";\nexport const STATIC_PAGE_API_SEARCH = STATIC_PAGE_API + \"/search\";\n\nexport const CONTACT_API = API_V1_URI + \"/contacts\";\nexport const CONTACT_API_SEARCH = CONTACT_API + \"/search\";\nexport const CONTACT_API_REMOVE = CONTACT_API + \"/remove_list\";\n\nexport const COUPON_API = API_V1_URI + \"/coupons\";\nexport const COUPON_API_SEARCH = COUPON_API + \"/search\";\nexport const COUPON_API_REMOVE = COUPON_API + \"/remove_list\";\n\nexport const BLOG_API = API_V1_URI + \"/blogs\";\nexport const BLOG_API_SEARCH = BLOG_API + \"/search\";\nexport const BLOG_API_REMOVE = BLOG_API + \"/remove_list\";\nexport const BLOG_API_SORT_LIST = BLOG_API + \"/sort_list\";\nexport const BLOG_API_SORT = BLOG_API + \"/sort\";\n\nexport const BLOG_CATEGORY_API = API_V1_URI + \"/blog_categories\";\nexport const BLOG_CATEGORY_API_SEARCH = BLOG_CATEGORY_API + \"/search\";\nexport const BLOG_CATEGORY_API_REMOVE = BLOG_CATEGORY_API + \"/remove_list\";\n\nexport const STAFF_API = API_V1_URI + \"/staffs\";\nexport const STAFF_API_SEARCH = STAFF_API + \"/search\";\nexport const STAFF_API_LIST = STAFF_API + \"/list\";\n\nexport const THEME_SETTING_API = API_V1_URI + \"/theme_settings\";\nexport const THEME_SETTING_API_SEARCH = THEME_SETTING_API + \"/search\";\nexport const THEME_SETTING_API_REMOVE = THEME_SETTING_API + \"/remove_list\";\n\nexport const MENU_SETTING_API = API_V1_URI + \"/menu_settings\";\nexport const MENU_SETTING_API_SEARCH = MENU_SETTING_API + \"/search\";\nexport const MENU_SETTING_API_REMOVE = MENU_SETTING_API + \"/remove_list\";\n\nexport const CUSTOMER_API = API_V1_URI + \"/customers\";\nexport const CUSTOMER_API_SEARCH = CUSTOMER_API + \"/search\";\nexport const CUSTOMER_API_REMOVE = CUSTOMER_API + \"/remove_list\";\n\nexport const NOTIFICATION_MANAGER_API = API_V1_URI + \"/notification_managers\";\nexport const NOTIFICATION_MANAGER_API_SEARCH =\n NOTIFICATION_MANAGER_API + \"/search\";\nexport const SEND_CG_NOTIFICATION_API =\n NOTIFICATION_MANAGER_API + \"/customer_group/send_notification\";\nexport const NOTIFICATION_MANAGER_API_REMOVE =\n NOTIFICATION_MANAGER_API + \"/remove_list\";\n\nexport const PRODUCT_CATEGORY_API = API_V1_URI + \"/product_categories\";\nexport const PRODUCT_CATEGORY_API_SEARCH = PRODUCT_CATEGORY_API + \"/search\";\nexport const PRODUCT_CATEGORY_API_REMOVE =\n PRODUCT_CATEGORY_API + \"/remove_list\";\nexport const PRODUCT_CATEGORY_API_SORT = PRODUCT_CATEGORY_API + \"/sort_list\";\n\nexport const PRODUCT_API = API_V1_URI + \"/products\";\nexport const PRODUCT_API_SEARCH = PRODUCT_API + \"/search\";\nexport const PRODUCT_API_SEARCH_LIST = PRODUCT_API + \"/search_list\";\nexport const PRODUCT_API_REMOVE = PRODUCT_API + \"/remove_list\";\nexport const PRODUCT_API_SORT = PRODUCT_API + \"/sort_list\";\n\nexport const SHIPPING_FEE_API = API_V1_URI + \"/shipping_fee\";\nexport const SHIPPING_FEE_API_DEFAULT = SHIPPING_FEE_API + \"/default\";\nexport const SHIPPING_FEE_API_BY_ADDRESS = SHIPPING_FEE_API + \"/by_address\";\nexport const SHIPPING_FEE_API_BY_ORDER_AMOUNT =\n SHIPPING_FEE_API + \"/by_order_amount\";\n\nexport const ADDRESS_API = API_V1_URI + \"/addresses\";\nexport const ADDRESS_API_COUNTRY = ADDRESS_API + \"/countries\";\nexport const ADDRESS_API_PROVINCE = ADDRESS_API + \"/provinces\";\nexport const ADDRESS_API_DISTRICT = ADDRESS_API + \"/districts\";\nexport const ADDRESS_API_WARD = ADDRESS_API + \"/wards\";\n\nexport const PRODUCT_COMMENT_API = API_V1_URI + \"/product_comments\";\nexport const COMMENT_API = API_V1_URI + \"/comments\";\n\nexport const ORDER_API = API_V1_URI + \"/orders\";\nexport const ORDER_API_SEARCH = ORDER_API + \"/search\";\nexport const ORDER_API_SEARCH_MY_ORDER = ORDER_API + \"/search_my_order\";\nexport const ORDER_API_EXPORT = ORDER_API + \"/export_order\";\nexport const ORDER_REPORT_API = API_V1_URI + \"/order_reports\";\nexport const ORDER_REPORT_API_TYPE = ORDER_REPORT_API + \"/report_type\";\nexport const ORDER_REPORT_API_STATISTICAL = ORDER_REPORT_API + \"/statistical\";\nexport const ORDER_API_CALCULATE_SHIPPING_FEE =\n ORDER_API + \"/calculate_shipping_fee\";\nexport const ORDER_API_APPLY_COUPON = ORDER_API + \"/apply_coupon\";\n\nexport const ORDER_PAYMENT_API = API_V1_URI + \"/order_payments\";\n\nexport const PRODUCT_ATTRIBUTE_GROUP_API =\n API_V1_URI + \"/product_attribute_groups\";\nexport const PRODUCT_ATTRIBUTE_GROUP_API_REMOVE =\n PRODUCT_ATTRIBUTE_GROUP_API + \"/remove_list\";\nexport const PRODUCT_ATTRIBUTE_API = API_V1_URI + \"/product_attributes\";\nexport const PRODUCT_ATTRIBUTE_API_REMOVE =\n PRODUCT_ATTRIBUTE_API + \"/remove_list\";\nexport const PRODUCT_ATTRIBUTE_VALUE_API =\n API_V1_URI + \"/product_attribute_values\";\nexport const PRODUCT_ATTRIBUTE_VALUE_API_REMOVE =\n PRODUCT_ATTRIBUTE_VALUE_API + \"/remove_list\";\n\nexport const TAG_API = API_V1_URI + \"/tags\";\nexport const TAG_API_REMOVE = TAG_API + \"/remove_list\";\n\nexport const CUSTOMER_GROUP_API = API_V1_URI + \"/customer_groups\";\nexport const CUSTOMER_GROUP_API_SEARCH = CUSTOMER_GROUP_API + \"/search\";\nexport const CUSTOMER_GROUP_API_REMOVE = CUSTOMER_GROUP_API + \"/remove_list\";\n\nexport const WEBSITE_CONFIGURATION_API = API_V1_URI + \"/website_config\";\n\nexport const APPLICATION_CONFIGURATION_API =\n API_V1_URI + \"/application-configurations\";\nexport const LANGUAGE_API = API_V1_URI + \"/languages\";\n\nexport const BRANCH_API = API_V1_URI + \"/branches\";\nexport const BRANCH_API_REMOVE = BRANCH_API + \"/remove_list\";\nexport const BRANCH_API_SORT = BRANCH_API + \"/sort_list\";\nexport const BRANCH_API_COPY_MENU = BRANCH_API + \"/copy_menu\";\n\nexport const SYSTEM_API = API_V1_URI + \"/system_settings\";\nexport const TIMEZONE_API = SYSTEM_API + \"/time_zones\";\nexport const GOOGLE_API = API_V1_URI + \"/google_settings\";\nexport const GOOGLE_FIREBASE_API = GOOGLE_API + \"/firebase\";\n\nexport const SALON_SERVICE_CATEGORY_API =\n API_V1_URI + \"/salon_service_categories\";\nexport const SALON_SERVICE_CATEGORY_API_REMOVE =\n SALON_SERVICE_CATEGORY_API + \"/remove_list\";\nexport const SALON_SERVICE_CATEGORY_API_SORT =\n SALON_SERVICE_CATEGORY_API + \"/sort\";\n\nexport const GALLERY_API = API_V1_URI + \"/galleries\";\nexport const GALLERY_API_SEARCH = GALLERY_API + \"/search\";\nexport const GALLERY_API_SORT = GALLERY_API + \"/update_sort\";\nexport const GALLERY_API_SORT_LIST = GALLERY_API + \"/sorts\";\n\nexport const SALON_SERVICE_API = API_V1_URI + \"/salon_services\";\nexport const SALON_SERVICE_API_SEARCH = SALON_SERVICE_API + \"/search\";\nexport const SALON_SERVICE_API_REMOVE = SALON_SERVICE_API + \"/remove_list\";\nexport const SALON_SERVICE_API_SORT = SALON_SERVICE_API + \"/sort\";\n\nexport const SALON_STAFF_API = API_V1_URI + \"/salon_staffs\";\nexport const SALON_STAFF_API_INIT_STAFF = SALON_STAFF_API + \"/init_staff\";\nexport const SALON_STAFF_API_SEARCH = SALON_STAFF_API + \"/search\";\nexport const SALON_STAFF_API_REMOVE = SALON_STAFF_API + \"/remove_list\";\n\nexport const APPOINTMENT_SETTING_API = API_V1_URI + \"/appointment_settings\";\n\nexport const BRANCH_GIFT_CARD_API = API_V1_URI + \"/branch_giftcards\";\nexport const BRANCH_GIFT_CARD_SEARCH_API = BRANCH_GIFT_CARD_API + \"/search\";\n\nexport const BRANCH_WEB_GIFT_CARD_API = API_V1_URI + \"/branch_web_giftcards\";\nexport const BRANCH_WEB_GIFT_CARD_SEARCH_API =\n BRANCH_WEB_GIFT_CARD_API + \"/search\";\nexport const BRANCH_WEB_GIFT_CARD_SEARCH_BY_ID_API =\n BRANCH_WEB_GIFT_CARD_API + \"/search_by_id\";\nexport const BRANCH_WEB_GIFT_CARD_STATUS_API =\n BRANCH_WEB_GIFT_CARD_API + \"/update_status\";\nexport const BRANCH_WEB_GIFT_CARD_USE_SERVICE_API =\n BRANCH_WEB_GIFT_CARD_API + \"/update_use_service\";\nexport const BRANCH_GIFT_CARD_SETTING_API =\n API_V1_URI + \"/branch_giftcard_settings\";\n\nexport const GIFT_CARD_COUPON_API = API_V1_URI + \"/giftcard_coupons\";\nexport const GIFT_CARD_COUPON_API_SEARCH = GIFT_CARD_COUPON_API + \"/search\";\nexport const GIFT_CARD_COUPON_API_REMOVE =\n GIFT_CARD_COUPON_API + \"/remove_list\";\n\nexport const BRANCH_GIFT_CARD_TEMPLATE_API =\n API_V1_URI + \"/branch_giftcard_templates\";\nexport const BRANCH_GIFT_CARD_TEMPLATE_API_SORT =\n BRANCH_GIFT_CARD_TEMPLATE_API + \"/update_sort\";\nexport const BRANCH_GIFT_CARD_TEMPLATE_API_SEARCH =\n BRANCH_GIFT_CARD_TEMPLATE_API + \"/search\";\nexport const BRANCH_GIFT_CARD_TEMPLATE_API_REMOVE =\n BRANCH_GIFT_CARD_TEMPLATE_API + \"/remove_list\";\n\nexport const BRANCH_GIFT_CARD_TEMPLATE_CATEGORY_API =\n API_V1_URI + \"/branch_giftcard_template_categories\";\nexport const BRANCH_GIFT_CARD_TEMPLATE_CATEGORY_API_SEARCH =\n BRANCH_GIFT_CARD_TEMPLATE_CATEGORY_API + \"/search\";\nexport const BRANCH_GIFT_CARD_TEMPLATE_CATEGORY_API_REMOVE =\n BRANCH_GIFT_CARD_TEMPLATE_CATEGORY_API + \"/remove_list\";\n\nexport const APPOINTMENT_API = API_V1_URI + \"/appointments\";\nexport const APPOINTMENT_API_SEARCH = APPOINTMENT_API + \"/search\";\n\nexport const UNIT_API = API_V1_URI + \"/units\";\nexport const UNIT_API_REMOVE = UNIT_API + \"/remove_list\";\n\nexport const THEME_TEMPLATE_API = API_V1_URI + \"/theme_templates\";\nexport const THEME_TEMPLATE_API_SEARCH = THEME_TEMPLATE_API + \"/search\";\nexport const THEME_TEMPLATE_API_REMOVE = THEME_TEMPLATE_API + \"/remove_list\";\n\nexport const SUPPLIER_API = API_V1_URI + \"/suppliers\";\nexport const SUPPLIER_API_REMOVE = SUPPLIER_API + \"/remove_list\";\n\nexport const PURCHASE_API = API_V1_URI + \"/purchases\";\nexport const PURCHASE_API_SEARCH = PURCHASE_API + \"/search\";\n\nexport const WARE_HOUSE_API = API_V1_URI + \"/ware_houses\";\nexport const WARE_HOUSE_API_REMOVE = WARE_HOUSE_API + \"/remove_list\";\n\nexport const ORDER_PACKING_LIST_API = API_V1_URI + \"/order_packing_lists\";\n\nexport const BILL_OF_LADING_API = ORDER_PACKING_LIST_API + \"/bill_of_ladings\";\nexport const BILL_OF_LADING_API_PICK_UP_ADDRESS =\n BILL_OF_LADING_API + \"/pick_up_addresses\";\nexport const BILL_OF_LADING_API_FEE = BILL_OF_LADING_API + \"/fees\";\n\nexport const TRANSPORTATION_API = API_V1_URI + \"/transportations\";\n\nexport const PAYMENT_GATEWAY_API = API_V1_URI + \"/payment_gateways\";\nexport const MODIFIER_GROUP_API = API_V1_URI + \"/modifier_groups\";\n\nexport const PROMOTION_CODE_API = API_V1_URI + \"/promotion_codes\";\nexport const PROMOTION_CODE_API_SEARCH = PROMOTION_CODE_API + \"/search\";\n\nexport const ORDER_PAYMENT_SETTING_API = API_V1_URI + \"/order_payment_settings\";\nexport const ORDER_PAYMENT_SETTING_API_COD = ORDER_PAYMENT_SETTING_API + \"/cod\";\nexport const ORDER_PAYMENT_SETTING_API_TRANSFER =\n ORDER_PAYMENT_SETTING_API + \"/transfer\";\n","export const IsDuplicateObject = (arr: [], name: string) => {\n let valueArr = arr.map(function (item: any) {\n return item[name];\n });\n let isDuplicate = valueArr.some(function (item: any, index: number) {\n return valueArr.indexOf(item) != index;\n });\n return isDuplicate;\n};\nexport const makeId = (length: number) => {\n let result = \"\";\n let characters =\n \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n let charactersLength = characters.length;\n for (var i = 0; i < length; i++) {\n result += characters.charAt(Math.floor(Math.random() * charactersLength));\n }\n return result;\n};\nexport const limitStringLength = (\n str: string,\n length: number,\n lengthLimit: number\n) => {\n if (lengthLimit <= 0) lengthLimit = 100;\n if (str.length > lengthLimit) {\n str = str.substring(0, length) + \"...\";\n }\n return str;\n};\nexport const priceWithCommas = (price: string) => {\n return \"$\" + price.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\n};\n/** Chuyển thành dạng URL string*/\nexport const cleanUnicode = (str: string) => {\n var str = str.toLowerCase();\n str = str.replace(/à|á|ạ|ả|ã|â|ầ|ấ|ậ|ẩ|ẫ|ă|ằ|ắ|ặ|ẳ|ẵ/g, \"a\");\n str = str.replace(/è|é|ẹ|ẻ|ẽ|ê|ề|ế|ệ|ể|ễ/g, \"e\");\n str = str.replace(/ì|í|ị|ỉ|ĩ/g, \"i\");\n str = str.replace(/ò|ó|ọ|ỏ|õ|ô|ồ|ố|ộ|ổ|ỗ|ơ|ờ|ớ|ợ|ở|ỡ/g, \"o\");\n str = str.replace(/ù|ú|ụ|ủ|ũ|ư|ừ|ứ|ự|ử|ữ/g, \"u\");\n str = str.replace(/ỳ|ý|ỵ|ỷ|ỹ/g, \"y\");\n str = str.replace(/đ/g, \"d\");\n str = str.replace(\n /!|@@|\\$|%|\\^|\\*|\\(|\\)|\\+|\\=|\\<|\\>|\\?|\\/|,|\\.|\\:|\\'| |\\\"|\\&|\\#|\\[|\\]|\\;|\\||\\{|\\}|\\~|\\“|\\”|\\™|\\–|\\-/g,\n \"-\"\n );\n str = str.replace(/^\\-+|\\-+$/g, \"\");\n str = str.replace(/\\\\/g, \"\");\n str = str.replace(/-+-/g, \"-\");\n return str;\n};\n\n/**Kiểm tra 1 chuỗi có phải email hay không */\nexport const isEmail = (email: string) => {\n var str = email.toLowerCase();\n var pattern =\n /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n return pattern.test(str);\n};\n\n/**Tạo random string bất kì */\nexport const randomString = () => {\n return (\n Math.random().toString(36).substring(2, 15) +\n Math.random().toString(36).substring(2, 15)\n );\n};\n\n/**Format kiểu tiền tệ\n * @param {Number} c - Con số làm tròn mặc là 0\n * @param {String} d - Ký tự phân cách thập phân\n * @param {String} t - Ký tự phân cách hàng nghìn\n * @param {String} f - Ký tự đơn vị tiền tệ\n */\nexport const formatMoney = (\n n: any,\n c: number = 0,\n d: string = \",\",\n t: string = \".\",\n f: string = \"₫\"\n) => {\n let j = 0;\n c = Math.abs(c);\n let s = n < 0 ? \"-\" : \"\";\n let i: any = parseInt((n = Math.abs(+n || 0).toFixed(c))) + \"\";\n j = (j = i.length) > 3 ? j % 3 : 0;\n return (\n s +\n (f !== \"₫\" ? f : \"\") +\n (j ? i.substr(0, j) + t : \"\") +\n i.substr(j).replace(/(\\d{3})(?=\\d)/g, \"$1\" + t) +\n (c\n ? d +\n Math.abs(n - i)\n .toFixed(c)\n .slice(2)\n : \"\") +\n (f === \"₫\" ? \" \" + f : \"\")\n );\n};\n\nexport function vnMoneyToNumber(money: any) {\n return money.replace(/\\D/g, \"\");\n}\n\nexport function redirectFileUrl(fileId: string) {\n return `${process.env.REACT_APP_API_URI}/api/v1/files/directs/${fileId}`;\n}\n\nexport function redirectFileLocalUrl(filePath: string) {\n return `${process.env.REACT_APP_API_URI}${filePath}`;\n}\n\nexport function formatString(str: string, ...params: string[]): string {\n for (let index = 0; index < params.length; index++) {\n str = str.replace(\"{\" + index + \"}\", params[index]);\n }\n return str;\n}\n\nexport function formatPhoneNumber(phoneNumberString: string): string {\n var cleaned = (\"\" + phoneNumberString).replace(\"+1\", \"\").replace(/\\D/g, \"\");\n var match = cleaned.match(/^(\\d{3})(\\d{3})(\\d{4})$/);\n if (!match) return phoneNumberString;\n return match[1] + \"-\" + match[2] + \"-\" + match[3];\n}\nexport function formatMinute(minutes?: number): string {\n if (!minutes) return \"\";\n if (minutes <= 0) return \"0 min\";\n if (minutes === 1) return `${minutes} min`;\n if (minutes < 60) return `${minutes} mins`;\n const hour = Math.floor(minutes / 60);\n const min = formatMinute(minutes % 60);\n return `${hour} hour${hour > 1 ? \"s\" : \"\"} ${min}`;\n}\n\nexport function formatPersonName(\n firstName?: string,\n lastName?: string\n): string {\n return (lastName + \" \" + firstName).toUpperCase();\n}\n","import { store } from \"app.store\";\nimport { formatString } from \"./string-helper\";\n\nconst currentCultureName = \"CurrentCulture\";\nexport const CoreResource = \"Core\";\n\nexport function momentDateTimeFormat() {\n const currentCultureName = getCurrentCulture();\n switch (currentCultureName) {\n case \"en\":\n return \"MM/DD/YYYY hh:mm A\";\n case \"vi\":\n return \"DD/MM/YYYY hh:mm A\";\n default:\n return \"MM/DD/YYYY hh:mm A\";\n }\n}\n\nexport function momentDateFormat() {\n const currentCultureName = getCurrentCulture();\n switch (currentCultureName) {\n case \"en\":\n return \"MM/DD/YYYY\";\n case \"vi\":\n return \"DD/MM/YYYY\";\n default:\n return \"MM/DD/YYYY\";\n }\n}\n\nexport function getCurrentCulture() {\n return localStorage.getItem(currentCultureName) ?? \"vi\";\n}\nexport function setCurrentCulture(cultureName: string) {\n localStorage.setItem(currentCultureName, cultureName);\n}\n\nexport function t(resourceName: string, ...params: string[]) {\n const resource = store.getState().localization.resource;\n if (params.length === 0) {\n return \"\";\n }\n const resourceKey = params[0].toString();\n params.splice(0, 1);\n return formatString(resource[resourceName][resourceKey] as string, ...params);\n}\n","export const ROUTE_PREFIX = \"/admin\";\n\nexport const LOGIN_ROUTE = ROUTE_PREFIX + \"/login\";\n\nexport const FORGOT_PASSWORD_ROUTE = ROUTE_PREFIX + \"/forgot-password\";\n\nexport const EMPTY_ROUTE = ROUTE_PREFIX + \"/empty\";\n\nexport const USER_MANAGEMENT_ROUTE = ROUTE_PREFIX + \"/user-management\";\n\nexport const CUSTOMER_ROUTE = ROUTE_PREFIX + \"/customers\";\n\nexport const UNIT_ROUTE = ROUTE_PREFIX + \"/unit\";\n\nexport const PRODUCT_ATTRIBUTE_GROUP_ROUTE =\n ROUTE_PREFIX + \"/product-attribute-group\";\n\nexport const PRODUCT_ATTRIBUTE_ROUTE = ROUTE_PREFIX + \"/product-attribute\";\n\nexport const PRODUCT_ATTRIBUTE_VALUE_ROUTE =\n ROUTE_PREFIX + \"/product-attribute-value\";\n\nexport const TAG_ROUTE = ROUTE_PREFIX + \"/tag\";\n\nexport const THEME_TEMPLATE_ROUTE = ROUTE_PREFIX + \"/theme-template\";\nexport const ADD_THEME_TEMPLATE_ROUTE = THEME_TEMPLATE_ROUTE + \"/add\";\nexport const UPDATE_THEME_TEMPLATE_ROUTE = THEME_TEMPLATE_ROUTE + \"/update\";\n\nexport const THEME_SETTING_ROUTE = ROUTE_PREFIX + \"/theme-setting\";\nexport const ADD_THEME_SETTING_ROUTE = THEME_SETTING_ROUTE + \"/add\";\nexport const UPDATE_THEME_SETTING_ROUTE = THEME_SETTING_ROUTE + \"/update\";\n\nexport const PRODUCT_CATEGORY_ROUTE = ROUTE_PREFIX + \"/product-category\";\nexport const ADD_PRODUCT_CATEGORY_ROUTE = PRODUCT_CATEGORY_ROUTE + \"/add\";\nexport const UPDATE_PRODUCT_CATEGORY_ROUTE = PRODUCT_CATEGORY_ROUTE + \"/update\";\n\nexport const PRODUCT_COMMENT_ROUTE = ROUTE_PREFIX + \"/product-comment\";\n\nexport const PRODUCT_ROUTE = ROUTE_PREFIX + \"/product\";\nexport const ADD_PRODUCT_ROUTE = PRODUCT_ROUTE + \"/add\";\nexport const UPDATE_PRODUCT_ROUTE = PRODUCT_ROUTE + \"/update\";\n\nexport const WEBSITE_CONFIG_ROUTE = ROUTE_PREFIX + \"/website-config\";\nexport const SYSTEM_CONFIG_ROUTE = ROUTE_PREFIX + \"/system-config\";\nexport const FIREBASE_CONFIG_ROUTE = ROUTE_PREFIX + \"/firebase-config\";\nexport const TRANSPORTATION_ROUTE = ROUTE_PREFIX + \"/transportation\";\nexport const COMMENT_ROUTE = ROUTE_PREFIX + \"/comment\";\n\nexport const BRANCH_ROUTE = ROUTE_PREFIX + \"/branch\";\nexport const ADD_BRANCH_ROUTE = BRANCH_ROUTE + \"/add\";\nexport const UPDATE_BRANCH_ROUTE = BRANCH_ROUTE + \"/update\";\n\nexport const STAFF_ROUTE = ROUTE_PREFIX + \"/staff\";\n\nexport const PRODUCT_STOCK_ROUTE = ROUTE_PREFIX + \"/product-stock\";\n\nexport const WARE_HOUSE_ROUTE = ROUTE_PREFIX + \"/ware-house\";\nexport const ADD_WARE_HOUSE_ROUTE = WARE_HOUSE_ROUTE + \"/add\";\nexport const UPDATE_WARE_HOUSE_ROUTE = WARE_HOUSE_ROUTE + \"/update\";\n\nexport const SHIPPING_FEE_DEFAULT_ROUTE =\n ROUTE_PREFIX + \"/shipping-fee/default\";\nexport const SHIPPING_FEE_BY_ADDRESS_ROUTE =\n ROUTE_PREFIX + \"/shipping-fee/by-address\";\nexport const SHIPPING_FEE_BY_ORDER_AMOUNT_ROUTE =\n ROUTE_PREFIX + \"/shipping-fee/by-order-amount\";\n\nexport const PAYMENT_SETTING_ROUTE = ROUTE_PREFIX + \"/payment-setting\";\n\nexport const ORDER_ROUTE = ROUTE_PREFIX + \"/order\";\nexport const ORDER_REPORT_ROUTE = ROUTE_PREFIX + \"/order-report\";\n\nexport const MODIFIER_GROUP_ROUTE = ROUTE_PREFIX + \"/modifier_group\";\n\nexport const PROMOTION_CODE_ROUTE = ROUTE_PREFIX + \"/promotion_code\";\nexport const ADD_PROMOTION_CODE_ROUTE = PROMOTION_CODE_ROUTE + \"/add\";\nexport const UPDATE_PROMOTION_CODE_ROUTE = PROMOTION_CODE_ROUTE + \"/update\";\n\nexport const UN_AUTH_PATH = [LOGIN_ROUTE, FORGOT_PASSWORD_ROUTE];\n","import { createBrowserHistory } from \"history\";\nconst history = createBrowserHistory();\nexport default history;\n","import {\n CURRENT_STAFF_API,\n STAFF_API,\n STAFF_API_LIST,\n STAFF_API_SEARCH,\n} from \"shared/constants/api-endpoint\";\nimport { apiClient } from \"shared/plugins/http-service\";\nimport { PagedResult } from \"states/paged-result-model\";\nimport {\n CreateStaffModel,\n SearchStaffRequestModel,\n StaffModel,\n UpdatedStaffModel,\n} from \"./staff.models\";\n\nexport const searchStaff = async (\n searchStaffRequestModel: SearchStaffRequestModel\n) => {\n const createResponse = await apiClient.postHttp>(\n `${STAFF_API_SEARCH}`,\n searchStaffRequestModel\n );\n return createResponse;\n};\n\nexport const getAllStaff = async () => {\n const createResponse = await apiClient.getHttp(\n `${STAFF_API_LIST}`\n );\n return createResponse;\n};\n\nexport const getStaffById = async (id: number) => {\n return await apiClient.getHttp(`${STAFF_API}/${id}`);\n};\n\nexport const addStaff = async (model: CreateStaffModel) => {\n const response = await apiClient.postHttp(`${STAFF_API}`, model);\n return response;\n};\n\nexport const updateStaff = async (model: UpdatedStaffModel) => {\n const response = await apiClient.putHttp(`${STAFF_API}`, model);\n return response;\n};\n\nexport const getCurrentStaff = async () => {\n const staff = await apiClient.getHttp(`${CURRENT_STAFF_API}`);\n return staff.data;\n};\n","import { apiClient } from \"shared/plugins/http-service\";\nimport {\n ACCOUNT_API_PASSWORD,\n ACCOUNT_API_FORGOT_PASSWORD,\n ACCOUNT_API_RESET_PASSWORD,\n ACCOUNT_API_PROFILE,\n ACCOUNT_API_LOGIN,\n ACCOUNT_API_PERMISSION,\n ACCOUNT_API_LOGIN_BY_QR,\n} from \"shared/constants/api-endpoint\";\nimport {\n ChangePasswordModel,\n CurrentUser,\n ForgotPasswordModel,\n LoginResponse,\n LoginUserModel,\n ResetPasswordModel,\n} from \"./account.models\";\nimport { FORGOT_PASSWORD_ROUTE, ROUTE_PREFIX } from \"shared/constants/routes\";\nimport { AppPermissionModel } from \"states/role-management/role-management.models\";\n\nexport const changePasswordApi = async (\n changePasswordModel: ChangePasswordModel\n) => {\n const response = await apiClient.putHttp(\n `${ACCOUNT_API_PASSWORD}`,\n changePasswordModel\n );\n return response;\n};\nexport const forgotPasswordApi = async (\n forgotPasswordModel: ForgotPasswordModel\n) => {\n const response = await apiClient.postHttp(`${ACCOUNT_API_FORGOT_PASSWORD}`, {\n ...forgotPasswordModel,\n appPath: FORGOT_PASSWORD_ROUTE,\n });\n return response;\n};\nexport const resetPasswordApi = async (\n resetPasswordModel: ResetPasswordModel\n) => {\n const response = await apiClient.postHttp(\n `${ACCOUNT_API_RESET_PASSWORD}`,\n resetPasswordModel\n );\n return response;\n};\n\nexport const login = async (loginModel: LoginUserModel) => {\n const loginResponse = await apiClient.postHttp(\n `${ACCOUNT_API_LOGIN}`,\n loginModel\n );\n return loginResponse.data;\n};\nexport const loginByCode = async (passCode: string) => {\n const loginResponse = await apiClient.postHttp(\n `${ACCOUNT_API_LOGIN_BY_QR}`,\n {\n passCode: passCode\n }\n );\n return loginResponse.data;\n};\n\nexport const getProfile = async () => {\n const profileResponse = await apiClient.getHttp(\n `${ACCOUNT_API_PROFILE}`\n );\n return profileResponse.data;\n};\n\nexport const getAccountPermissionsAPI = async () => {\n const res = await apiClient.getHttp(\n `${ACCOUNT_API_PERMISSION}`\n );\n return res;\n};\n","import { createAsyncThunk, createSlice, PayloadAction } from \"@reduxjs/toolkit\";\nimport { LOGIN_ROUTE } from \"shared/constants/routes\";\nimport history from \"shared/plugins/history\";\nimport { getCurrentStaff } from \"states/staff/staff.api\";\nimport { getProfile } from \"./account.api\";\nimport { AccountState, LoginResponse } from \"./account.models\";\n\nconst tokenName = \"appToken\";\n\nconst getToken = () => {\n const storageValue = localStorage.getItem(tokenName);\n return storageValue && storageValue !== \"\"\n ? (JSON.parse(storageValue) as LoginResponse)\n : ({} as LoginResponse);\n};\nconst removeToken = () => localStorage.removeItem(tokenName);\nconst setToken = (token?: LoginResponse) => {\n localStorage.setItem(tokenName, token ? JSON.stringify(token) : \"\");\n};\n\nexport const fetchProfile = createAsyncThunk(\n \"account/fetchUser\",\n async (_, thunkApi) => {\n try {\n const profile = await getProfile();\n return profile;\n } catch (error) {\n thunkApi.rejectWithValue(error);\n throw error;\n }\n }\n);\n\nexport const login = createAsyncThunk(\n \"account/login\",\n async (model, thunkApi) => {\n try {\n setToken(model);\n thunkApi.dispatch(accountSlice.actions.setLoginUser(model));\n } catch (error) {\n throw new Error();\n }\n }\n);\n\nexport const logout = createAsyncThunk(\n \"account/logout\",\n async (any, thunkApi) => {\n try {\n removeToken();\n thunkApi.dispatch(accountSlice.actions.setLogoutUser());\n history.push(LOGIN_ROUTE);\n } catch (error) {\n throw new Error();\n }\n }\n);\n\nexport const fetchCurrentStaff = createAsyncThunk(\n \"account/fetchCurrentStaff\",\n async () => {\n try {\n const staff = await getCurrentStaff();\n return staff;\n } catch (error) {\n throw new Error();\n }\n }\n);\n\nexport const accountSlice = createSlice({\n name: \"account\",\n initialState: {\n currentUser: undefined,\n currentStaff: undefined,\n token: getToken(),\n isAuthentication: false,\n } as AccountState,\n reducers: {\n setLogoutUser(state) {\n state.isAuthentication = false;\n state.currentUser = undefined;\n state.currentStaff = undefined;\n state.token = {};\n },\n setLoginUser(state: AccountState, action: PayloadAction) {\n state.token = action.payload;\n state.isAuthentication = true;\n },\n },\n extraReducers: (builder) => {\n builder.addCase(fetchProfile.fulfilled, (state, action) => {\n state.currentUser = action.payload;\n state.isAuthentication = true;\n });\n builder.addCase(fetchCurrentStaff.fulfilled, (state, action) => {\n state.currentStaff = action.payload;\n });\n },\n});\n","import { AxiosRequestConfig, AxiosResponse } from \"axios\";\nimport axios, { AxiosInstance } from \"axios\";\nimport { ACCOUNT_API_REFRESH_TOKEN } from \"shared/constants/api-endpoint\";\nimport { getCurrentCulture } from \"./localization\";\nimport { store } from \"app.store\";\nimport { login, logout } from \"states/account/account.slice\";\n\nclass ApiClient {\n constructor() {\n this.instance = axios.create({\n baseURL: process.env.REACT_APP_API_URI,\n });\n this.requestInterceptor();\n this.reponseInterceptor();\n }\n\n instance: AxiosInstance;\n failedQueue: any[] = [];\n isRefreshing = false;\n\n processQueue(error: any) {\n this.failedQueue.forEach((prom) => {\n if (error) {\n prom.reject(error);\n } else {\n prom.resolve();\n }\n });\n this.failedQueue = [];\n }\n\n private requestInterceptor() {\n this.instance.interceptors.request.use(\n (config) => {\n if (config.headers.protected) {\n const token = store.getState().account.token.accessToken;\n config = {\n ...config,\n headers: { ...config?.headers, Authorization: \"Bearer \" + token },\n };\n }\n return {\n ...config,\n headers: {\n ...config.headers,\n \"Accept-Language\": getCurrentCulture(),\n },\n };\n },\n (error) => {\n Promise.reject(error);\n }\n );\n }\n\n private reponseInterceptor() {\n const that = this;\n this.instance.interceptors.response.use(\n (response) => {\n return response;\n },\n async function (error) {\n const originalRequest = error.config;\n if (\n error.response &&\n error.response.status === 401 &&\n !originalRequest.url.endsWith(ACCOUNT_API_REFRESH_TOKEN) &&\n originalRequest.headers.protected &&\n !originalRequest.headers._retry\n ) {\n if (that.isRefreshing) {\n return new Promise((resolve, reject) => {\n that.failedQueue.push({ resolve, reject });\n })\n .then(() => {\n originalRequest.headers = {\n ...originalRequest.headers,\n _retry: true,\n };\n return that.instance.request(originalRequest);\n })\n .catch((err) => {\n return Promise.reject(err);\n });\n }\n\n originalRequest.headers = {\n ...originalRequest.headers,\n _retry: true,\n };\n that.isRefreshing = true;\n\n const refreshToken = store.getState().account.token.refreshToken;\n if (refreshToken) {\n try {\n const res = await that.postHttp(\n ACCOUNT_API_REFRESH_TOKEN,\n {\n token: refreshToken,\n },\n undefined,\n false\n );\n store.dispatch(login(res.data));\n that.isRefreshing = false;\n that.processQueue(null);\n return await that.instance.request(originalRequest);\n } catch (e) {\n that.processQueue(e);\n that.isRefreshing = false;\n store.dispatch(logout());\n return Promise.reject(error);\n }\n }\n that.isRefreshing = false;\n store.dispatch(logout());\n return Promise.reject(error);\n }\n return Promise.reject(error);\n }\n );\n }\n\n getHttp>(\n url: string,\n config?: AxiosRequestConfig,\n withCredentials = true\n ): Promise {\n return this.instance.get(url, {\n ...config,\n headers: { protected: withCredentials },\n });\n }\n\n postHttp>(\n url: string,\n data?: any,\n config?: AxiosRequestConfig,\n withCredentials = true\n ): Promise {\n return this.instance.post(url, data, {\n ...config,\n headers: { protected: withCredentials },\n });\n }\n\n putHttp>(\n url: string,\n data?: any,\n config?: AxiosRequestConfig,\n withCredentials = true\n ): Promise {\n return this.instance.put(url, data, {\n ...config,\n headers: { protected: withCredentials },\n });\n }\n\n deleteHttp>(\n url: string,\n config?: AxiosRequestConfig,\n withCredentials = true\n ): Promise {\n return this.instance.delete(url, {\n ...config,\n headers: { protected: withCredentials },\n });\n }\n}\n\nexport const apiClient = new ApiClient();\n","import { SYSTEM_API, TIMEZONE_API } from \"shared/constants/api-endpoint\";\nimport { apiClient } from \"shared/plugins/http-service\";\nimport { SystemConfigModel, TimezoneModel } from \"./system-setting.models\";\nexport const getTimeZones = async () => {\n return await apiClient.getHttp(`${TIMEZONE_API}`);\n};\n\nexport const getSystemConfig = async () => {\n return await apiClient.getHttp(`${SYSTEM_API}`);\n};\nexport const updateSystemConfig = async (model: SystemConfigModel) => {\n const response = await apiClient.putHttp(`${SYSTEM_API}`, model);\n return response;\n};\n","import { createAsyncThunk, createSlice, PayloadAction } from \"@reduxjs/toolkit\";\nimport { InventoryModel } from \"states/product/product.models\";\nimport { getSystemConfig } from \"states/system-setting/system-setting.api\";\nimport { GlobalValueState } from \"./global-value.models\";\n\nconst isAutoPrintOrderOnline = \"IsAutoPrintOrderOnline\";\nconst getIsAutoPrintOrderOnlineLocalStorage = (): boolean => {\n const value = localStorage.getItem(isAutoPrintOrderOnline);\n return value === \"true\" ? true : false;\n};\n\nexport const setIsAutoPrintOrderOnlineLocalStorage = (value: boolean) =>\n localStorage.setItem(isAutoPrintOrderOnline, value.toString());\n\nconst initialState = {\n isLoading: false,\n isLoadingApp: true,\n mceModal: {\n show: false,\n },\n productStockModal: {\n show: false,\n productStocks: [] as InventoryModel[],\n },\n notificationEmails: [] as string[],\n globalMessage: undefined,\n separateProductEachBranch: false,\n autoPrintOrderOnline: getIsAutoPrintOrderOnlineLocalStorage(),\n} as GlobalValueState;\n\nexport const fetchSystemConfig = createAsyncThunk(\n \"globalValue/fetchSystemConfig\",\n async () => {\n try {\n const res = await getSystemConfig();\n return res.data;\n } catch (error) {\n throw new Error(error);\n }\n }\n);\n\nexport const globalValueSlice = createSlice({\n name: \"globalValue\",\n initialState: initialState,\n reducers: {\n setLoading(\n state,\n action: {\n payload: boolean;\n }\n ) {\n state.isLoading = action.payload;\n },\n setLoadingApp(state, action: PayloadAction) {\n state.isLoadingApp = action.payload;\n },\n setMceModal(\n state,\n action: PayloadAction<{\n show: boolean;\n value?: string;\n onChange?: (value?: string) => void;\n }>\n ) {\n state.mceModal = action.payload;\n },\n setProductStockModal(\n state,\n action: PayloadAction<{\n show: boolean;\n productStocks: InventoryModel[];\n }>\n ) {\n state.productStockModal = action.payload;\n },\n setGlobalMessage(state, action: PayloadAction) {\n state.globalMessage = action.payload;\n },\n setIsAutoPrintOrderOnline(state, action: PayloadAction) {\n setIsAutoPrintOrderOnlineLocalStorage(action.payload);\n state.autoPrintOrderOnline = action.payload;\n },\n },\n extraReducers: (builder) => {\n builder.addCase(fetchSystemConfig.fulfilled, (state, action) => {\n return {\n ...state,\n ianaTimeZone: action.payload.ianaTimeZone,\n hostUrl: action.payload.hostUrl,\n name: action.payload.name,\n notificationEmails: action.payload.notificationEmails,\n timeZone: action.payload.timeZone,\n separateProductEachBranch: action.payload.separateProductEachBranch,\n };\n });\n },\n});\n\nexport const {\n setLoading,\n setLoadingApp,\n setMceModal,\n setProductStockModal,\n setGlobalMessage,\n setIsAutoPrintOrderOnline,\n} = globalValueSlice.actions;\n","import { createAsyncThunk, createSlice } from \"@reduxjs/toolkit\";\nimport {\n APPLICATION_CONFIGURATION_API,\n LANGUAGE_API,\n} from \"shared/constants/api-endpoint\";\nimport { apiClient } from \"shared/plugins/http-service\";\nimport { LanguageClientModel, LocalizationState } from \"./localization.models\";\n\nexport const fetchLocalization = createAsyncThunk(\n \"localization/fetchLocalization\",\n async () => {\n const res = await apiClient.getHttp(\n APPLICATION_CONFIGURATION_API,\n undefined,\n false\n );\n return {\n resource: res.data.localization.values,\n supporLanguages: res.data.localization.languages,\n } as LocalizationState;\n }\n);\n\nexport const fetchClientLanguages = createAsyncThunk(\n \"localization/fetchClientLanguages\",\n async () => {\n const res = await apiClient.getHttp(\n LANGUAGE_API,\n undefined,\n false\n );\n return res.data;\n }\n);\n\nconst initialState: LocalizationState = {\n resource: {},\n supporLanguages: [],\n clientLanguages: [],\n};\n\nexport const localizationSlice = createSlice({\n name: \"localization\",\n initialState: initialState,\n reducers: {},\n extraReducers: (builder) => {\n builder.addCase(fetchLocalization.fulfilled, (state, action) => {\n state.resource = action.payload.resource;\n state.supporLanguages = action.payload.supporLanguages;\n });\n builder.addCase(fetchClientLanguages.fulfilled, (state, action) => {\n state.clientLanguages = action.payload;\n });\n },\n});\n","import {\n BRANCH_API,\n BRANCH_API_COPY_MENU,\n BRANCH_API_REMOVE,\n BRANCH_API_SORT,\n} from \"shared/constants/api-endpoint\";\nimport { UpdatedSortEntityModel } from \"shared/models/updated-sort-entity-model\";\nimport { apiClient } from \"shared/plugins/http-service\";\nimport {\n CreateBranchModel,\n RemovedBranchModel,\n BranchModel,\n UpdatedBranchModel,\n} from \"./branch.models\";\n\nexport const getBranchList = async () => {\n return await apiClient.getHttp(`${BRANCH_API}`);\n};\n\nexport const removeBranch = async (removedModel: RemovedBranchModel) => {\n const response = await apiClient.postHttp(\n `${BRANCH_API_REMOVE}`,\n removedModel\n );\n return response;\n};\nexport const updateSortBranch = async (\n updatedSortModel: UpdatedSortEntityModel[]\n) => {\n const response = await apiClient.postHttp(\n `${BRANCH_API_SORT}`,\n updatedSortModel\n );\n return response;\n};\nexport const getBranchById = async (id: number) => {\n return await apiClient.getHttp(`${BRANCH_API}/${id}`);\n};\n\nexport const addBranch = async (model: CreateBranchModel) => {\n const response = await apiClient.postHttp(`${BRANCH_API}`, model);\n return response;\n};\n\nexport const updateBranch = async (model: UpdatedBranchModel) => {\n const response = await apiClient.putHttp(`${BRANCH_API}`, model);\n return response;\n};\n\nexport const copyMenuFromOtherBranch = async (model: {\n branchId: number;\n fromBranchId: number;\n}) => {\n const response = await apiClient.postHttp(`${BRANCH_API_COPY_MENU}`, model);\n return response;\n};\n","import { createAsyncThunk, createSlice, PayloadAction } from \"@reduxjs/toolkit\";\nimport { RootState } from \"app.store\";\nimport _ from \"lodash\";\nimport { getBranchList } from \"./branch.api\";\nimport { BranchModel, BranchState } from \"./branch.models\";\n\nconst currentBranchStorageName = \"CurrentBranch\";\n\nconst getCurrentBranchLocalStorage = () => {\n return localStorage.getItem(currentBranchStorageName);\n};\n\nconst setCurrentBranchLocalStorage = (branchId: string) => {\n localStorage.setItem(currentBranchStorageName, branchId);\n};\n\nconst removeCurrentBranchLocalStorage = () => {\n localStorage.removeItem(currentBranchStorageName);\n};\n\nexport const fetchBranchList = createAsyncThunk(\n \"branch/fetchBranchList\",\n async (any, thunkApi) => {\n try {\n const res = await getBranchList();\n const branchId = getCurrentBranchLocalStorage();\n if (!_.isEmpty(branchId)) {\n const branch = res.data.find((m) => m.id === Number(branchId));\n if (branch) {\n thunkApi.dispatch(setCurrentBranch(branch));\n }\n } else if (res.data.length === 1) {\n thunkApi.dispatch(setCurrentBranch(res.data[0]));\n }\n return res.data;\n } catch (error) {\n throw new Error(error);\n }\n }\n);\n\nexport const branchSlice = createSlice({\n name: \"branch\",\n initialState: {\n currentBranch: {},\n branchList: [] as BranchModel[],\n } as BranchState,\n reducers: {\n setCurrentBranch: (state, action: PayloadAction) => {\n setCurrentBranchLocalStorage(action.payload.id.toString());\n state.currentBranch = action.payload;\n },\n },\n extraReducers: (builder) => {\n builder.addCase(fetchBranchList.fulfilled, (state, action) => {\n state.branchList = action.payload;\n });\n },\n});\nexport const selectCurrentBranch = (state: RootState) => state.branch.currentBranch;\nexport const { setCurrentBranch } = branchSlice.actions;\n","import {\n WARE_HOUSE_API,\n WARE_HOUSE_API_REMOVE,\n} from \"shared/constants/api-endpoint\";\nimport { RemovedEntityModel } from \"shared/models/removed-entity-model\";\nimport { apiClient } from \"shared/plugins/http-service\";\nimport { WareHouseModel } from \"./ware-house.models\";\n\nexport const getWareHouseList = async () => {\n return await apiClient.getHttp(`${WARE_HOUSE_API}`);\n};\n\nexport const removeWareHouse = async (\n removedModel: RemovedEntityModel\n) => {\n const response = await apiClient.postHttp(\n `${WARE_HOUSE_API_REMOVE}`,\n removedModel\n );\n return response;\n};\n\nexport const getWareHouseById = async (id: number) => {\n return await apiClient.getHttp(`${WARE_HOUSE_API}/${id}`);\n};\n\nexport const addWareHouse = async (model: WareHouseModel) => {\n const response = await apiClient.postHttp(`${WARE_HOUSE_API}`, model);\n return response;\n};\n\nexport const updateWareHouse = async (model: WareHouseModel) => {\n const response = await apiClient.putHttp(`${WARE_HOUSE_API}`, model);\n return response;\n};\n","import { createAsyncThunk, createSlice } from \"@reduxjs/toolkit\";\nimport { getWareHouseList } from \"./ware-house.api\";\nimport { WareHouseModel, WareHouseState } from \"./ware-house.models\";\n\nexport const fetchWareHouseList = createAsyncThunk(\n \"wareHouse/fetchWareHouseList\",\n async (any, thunkApi) => {\n try {\n const res = await getWareHouseList();\n return res.data;\n } catch (error) {\n throw new Error(error);\n }\n }\n);\n\nexport const wareHouseSlice = createSlice({\n name: \"wareHouse\",\n initialState: {\n wareHouseList: [] as WareHouseModel[],\n } as WareHouseState,\n reducers: {},\n extraReducers: (builder) => {\n builder.addCase(fetchWareHouseList.fulfilled, (state, action) => {\n state.wareHouseList = action.payload;\n });\n },\n});\n","import { TAG_API } from \"shared/constants/api-endpoint\";\nimport { apiClient } from \"shared/plugins/http-service\";\nimport { RemovedTagModel, TagModel } from \"./tag.models\";\n\nexport const getTagList = async (langCode?: string) => {\n const createResponse = await apiClient.getHttp(`${TAG_API}`, {\n params: { langCode },\n });\n return createResponse;\n};\n\nexport const removeTag = async (removedModel: RemovedTagModel) => {\n const response = await apiClient.postHttp(\n `${TAG_API}/remove_list`,\n removedModel\n );\n return response;\n};\n\nexport const getTagByIdApi = async (id: number, langCode?: string) => {\n return await apiClient.getHttp(`${TAG_API}/${id}`, {\n params: { langCode },\n });\n};\n\nexport const addTag = async (model: TagModel, langCode?: string) => {\n const response = await apiClient.postHttp(`${TAG_API}`, model, {\n params: { langCode },\n });\n return response;\n};\n\nexport const updateTag = async (model: TagModel, langCode?: string) => {\n const response = await apiClient.putHttp(`${TAG_API}`, model, {\n params: { langCode },\n });\n return response;\n};\n","import { createAsyncThunk, createSlice } from \"@reduxjs/toolkit\";\nimport { RootState } from \"app.store\";\nimport { getTagList } from \"./tag.api\";\nimport { TagModel, TagState } from \"./tag.models\";\n\nexport const fetchTagList = createAsyncThunk(\n \"tag/fetchTagList\",\n async (any, thunkApi) => {\n try {\n const res = await getTagList();\n return res.data;\n } catch (error) {\n throw new Error(error);\n }\n }\n);\n\nexport const tagSlice = createSlice({\n name: \"tag\",\n initialState: {\n tags: [] as TagModel[],\n } as TagState,\n reducers: {\n \n },\n extraReducers: (builder) => {\n builder.addCase(fetchTagList.fulfilled, (state, action) => {\n state.tags = action.payload;\n });\n },\n});\n\nexport const tagListSelector = (state: RootState) => state.tag.tags;\n","import {\n PRODUCT_ATTRIBUTE_API,\n PRODUCT_ATTRIBUTE_GROUP_API,\n PRODUCT_ATTRIBUTE_VALUE_API,\n} from \"shared/constants/api-endpoint\";\nimport { apiClient } from \"shared/plugins/http-service\";\nimport {\n RemovedProductAttributeGroupModel,\n ProductAttributeGroupModel,\n ProductAttributeModel,\n RemovedProductAttributeModel,\n ProductAttributeValueModel,\n RemovedProductAttributeValueModel,\n} from \"./product-attribute.models\";\n\nexport const getProductAttributeGroupListApi = async (langCode?: string) => {\n const createResponse = await apiClient.getHttp(\n `${PRODUCT_ATTRIBUTE_GROUP_API}`,\n { params: { langCode } }\n );\n return createResponse;\n};\n\nexport const removeProductAttributeGroupApi = async (\n removedModel: RemovedProductAttributeGroupModel\n) => {\n const response = await apiClient.postHttp(\n `${PRODUCT_ATTRIBUTE_GROUP_API}/remove_list`,\n removedModel\n );\n return response;\n};\n\nexport const getProductAttributeGroupByIdApi = async (\n id: number,\n langCode?: string\n) => {\n return await apiClient.getHttp(\n `${PRODUCT_ATTRIBUTE_GROUP_API}/${id}`,\n { params: { langCode } }\n );\n};\n\nexport const addProductAttributeGroupApi = async (\n model: ProductAttributeGroupModel,\n langCode?: string\n) => {\n const response = await apiClient.postHttp(\n `${PRODUCT_ATTRIBUTE_GROUP_API}`,\n model,\n { params: { langCode } }\n );\n return response;\n};\n\nexport const updateProductAttributeGroupApi = async (\n model: ProductAttributeGroupModel,\n langCode?: string\n) => {\n const response = await apiClient.putHttp(\n `${PRODUCT_ATTRIBUTE_GROUP_API}`,\n model,\n { params: { langCode } }\n );\n return response;\n};\n\nexport const getProductAttributeListApi = async (langCode?: string) => {\n const createResponse = await apiClient.getHttp(\n `${PRODUCT_ATTRIBUTE_API}`,\n { params: { langCode } }\n );\n return createResponse;\n};\n\nexport const removeProductAttributeApi = async (\n removedModel: RemovedProductAttributeModel\n) => {\n const response = await apiClient.postHttp(\n `${PRODUCT_ATTRIBUTE_API}/remove_list`,\n removedModel\n );\n return response;\n};\n\nexport const getProductAttributeByIdApi = async (\n id: number,\n langCode?: string\n) => {\n return await apiClient.getHttp(\n `${PRODUCT_ATTRIBUTE_API}/${id}`,\n { params: { langCode } }\n );\n};\n\nexport const addProductAttributeApi = async (\n model: ProductAttributeModel,\n langCode?: string\n) => {\n const response = await apiClient.postHttp(\n `${PRODUCT_ATTRIBUTE_API}`,\n model,\n { params: { langCode } }\n );\n return response;\n};\n\nexport const updateProductAttributeApi = async (\n model: ProductAttributeModel,\n langCode?: string\n) => {\n const response = await apiClient.putHttp(\n `${PRODUCT_ATTRIBUTE_API}`,\n model,\n { params: { langCode } }\n );\n return response;\n};\n\nexport const getProductAttributeValueListApi = async (langCode?: string) => {\n const createResponse = await apiClient.getHttp(\n `${PRODUCT_ATTRIBUTE_VALUE_API}`,\n { params: { langCode } }\n );\n return createResponse;\n};\n\nexport const removeProductAttributeValueApi = async (\n removedModel: RemovedProductAttributeValueModel\n) => {\n const response = await apiClient.postHttp(\n `${PRODUCT_ATTRIBUTE_VALUE_API}/remove_list`,\n removedModel\n );\n return response;\n};\n\nexport const getProductAttributeValueByIdApi = async (\n id: number,\n langCode?: string\n) => {\n return await apiClient.getHttp(\n `${PRODUCT_ATTRIBUTE_VALUE_API}/${id}`,\n { params: { langCode } }\n );\n};\n\nexport const addProductAttributeValueApi = async (\n model: ProductAttributeValueModel,\n langCode?: string\n) => {\n const response = await apiClient.postHttp(\n `${PRODUCT_ATTRIBUTE_VALUE_API}`,\n model,\n { params: { langCode } }\n );\n return response;\n};\n\nexport const updateProductAttributeValueApi = async (\n model: ProductAttributeValueModel,\n langCode?: string\n) => {\n const response = await apiClient.putHttp(\n `${PRODUCT_ATTRIBUTE_VALUE_API}`,\n model,\n { params: { langCode } }\n );\n return response;\n};\n","import { createAsyncThunk, createSlice } from \"@reduxjs/toolkit\";\nimport { RootState } from \"app.store\";\nimport {\n getProductAttributeGroupListApi,\n getProductAttributeListApi,\n getProductAttributeValueListApi,\n} from \"./product-attribute.api\";\nimport {\n ProductAttributeGroupModel,\n ProductAttributeModel,\n ProductAttributeState,\n ProductAttributeValueModel,\n} from \"./product-attribute.models\";\n\nexport const fetchProductAttributeList = createAsyncThunk(\n \"product-attribute/fetchProductAttributeList\",\n async (any, thunkApi) => {\n try {\n const res = await getProductAttributeListApi();\n return res.data;\n } catch (error) {\n throw new Error(error);\n }\n }\n);\nexport const fetchProductAttributeGroupList = createAsyncThunk(\n \"product-attribute/fetchProductAttributeGroupList\",\n async (any, thunkApi) => {\n try {\n const res = await getProductAttributeGroupListApi();\n return res.data;\n } catch (error) {\n throw new Error(error);\n }\n }\n);\nexport const fetchProductAttributeValueList = createAsyncThunk(\n \"product-attribute/fetchProductAttributeValueList\",\n async (any, thunkApi) => {\n try {\n const res = await getProductAttributeValueListApi();\n return res.data;\n } catch (error) {\n throw new Error(error);\n }\n }\n);\nexport const productAttributeSlice = createSlice({\n name: \"productAttribute\",\n initialState: {\n attributeGroups: [] as ProductAttributeGroupModel[],\n attributes: [] as ProductAttributeModel[],\n attributeValues: [] as ProductAttributeValueModel[],\n } as ProductAttributeState,\n reducers: {},\n extraReducers: (builder) => {\n builder.addCase(\n fetchProductAttributeGroupList.fulfilled,\n (state, action) => {\n state.attributeGroups = action.payload;\n }\n );\n builder.addCase(fetchProductAttributeList.fulfilled, (state, action) => {\n state.attributes = action.payload;\n });\n builder.addCase(\n fetchProductAttributeValueList.fulfilled,\n (state, action) => {\n state.attributeValues = action.payload;\n }\n );\n },\n});\n\nexport const productAttributeGroupsSelector = (state: RootState) =>\n state.productAttribute.attributeGroups;\nexport const productAttributesSelector = (state: RootState) =>\n state.productAttribute.attributes;\nexport const productAttributeValuesSelector = (state: RootState) =>\n state.productAttribute.attributeValues;\n","import { UNIT_API } from \"shared/constants/api-endpoint\";\nimport { RemovedEntityModel } from \"shared/models/removed-entity-model\";\nimport { apiClient } from \"shared/plugins/http-service\";\nimport { UnitModel } from \"./unit.models\";\n\nexport const getUnitList = async () => {\n return await apiClient.getHttp(`${UNIT_API}`);\n};\n\nexport const removeUnit = async (removedModel: RemovedEntityModel) => {\n const response = await apiClient.postHttp(\n `${UNIT_API}/remove_list`,\n removedModel\n );\n return response;\n};\n\nexport const getUnitById = async (id: number) => {\n return await apiClient.getHttp(`${UNIT_API}/${id}`);\n};\n\nexport const addUnit = async (model: UnitModel) => {\n const response = await apiClient.postHttp(`${UNIT_API}`, model);\n return response;\n};\n\nexport const updateUnit = async (model: UnitModel) => {\n const response = await apiClient.putHttp(`${UNIT_API}`, model);\n return response;\n};\n","import { createAsyncThunk, createSlice } from \"@reduxjs/toolkit\";\nimport { RootState } from \"app.store\";\nimport { getUnitList } from \"./unit.api\";\nimport { UnitModel, UnitState } from \"./unit.models\";\n\nexport const fetchUnitList = createAsyncThunk(\n \"unit/fetchUnitList\",\n async (any, thunkApi) => {\n try {\n const res = await getUnitList();\n return res.data;\n } catch (error) {\n throw new Error(error);\n }\n }\n);\n\nexport const unitSlice = createSlice({\n name: \"unit\",\n initialState: {\n units: [] as UnitModel[],\n } as UnitState,\n reducers: {\n \n },\n extraReducers: (builder) => {\n builder.addCase(fetchUnitList.fulfilled, (state, action) => {\n state.units = action.payload;\n });\n },\n});\n\nexport const unitListSelector = (state: RootState) => state.unit.units;\n","import { TRANSPORTATION_API } from \"shared/constants/api-endpoint\";\nimport { apiClient } from \"shared/plugins/http-service\";\nimport { TransportationModel } from \"./transportation.models\";\n\nexport const getTransportationList = async () => {\n const createResponse = await apiClient.getHttp(\n `${TRANSPORTATION_API}`\n );\n return createResponse;\n};\n\nexport const getTransportationSettingAPI = async (\n transportationCode: string\n) => {\n const createResponse = await apiClient.getHttp(\n `${TRANSPORTATION_API}/api_settings/${transportationCode}`\n );\n return createResponse;\n};\n\nexport const updateTransportationSettingAPI = async (\n transportationCode: string,\n model: any\n) => {\n const createResponse = await apiClient.putHttp(\n `${TRANSPORTATION_API}/api_settings/${transportationCode}`,\n model\n );\n return createResponse;\n};\n","import { createAsyncThunk, createSlice } from \"@reduxjs/toolkit\";\nimport { RootState } from \"app.store\";\nimport { getTransportationList } from \"./transportation.api\";\nimport { TransportationModel, TransportationState } from \"./Transportation.models\";\n\nexport const fetchTransportationList = createAsyncThunk(\n \"transportation/fetchTransportationList\",\n async (any, thunkApi) => {\n try {\n const res = await getTransportationList();\n return res.data;\n } catch (error) {\n throw new Error(error);\n }\n }\n);\n\nexport const transportationSlice = createSlice({\n name: \"transportation\",\n initialState: {\n transportationList: [] as TransportationModel[],\n } as TransportationState,\n reducers: {\n \n },\n extraReducers: (builder) => {\n builder.addCase(fetchTransportationList.fulfilled, (state, action) => {\n state.transportationList = action.payload;\n });\n },\n});\n\nexport const transportationListSelector = (state: RootState) => state.transportation.transportationList;\n","import { createAsyncThunk, createSlice } from \"@reduxjs/toolkit\";\nimport { RootState } from \"app.store\";\nimport { getAllStaff } from \"./staff.api\";\nimport { StaffModel, StaffState } from \"./staff.models\";\n\nexport const fetchStaffList = createAsyncThunk(\n \"staff/fetchStaffList\",\n async (any, thunkApi) => {\n try {\n const res = await getAllStaff();\n return res.data;\n } catch (error) {\n throw new Error(error);\n }\n }\n);\n\nexport const staffSlice = createSlice({\n name: \"staff\",\n initialState: {\n staffs: [] as StaffModel[],\n } as StaffState,\n reducers: {\n \n },\n extraReducers: (builder) => {\n builder.addCase(fetchStaffList.fulfilled, (state, action) => {\n state.staffs = action.payload;\n });\n },\n});\n\nexport const staffListSelector = (state: RootState) => state.staff.staffs;\n","import { MODIFIER_GROUP_API } from \"shared/constants/api-endpoint\";\nimport { RemovedEntityModel } from \"shared/models/removed-entity-model\";\nimport { apiClient } from \"shared/plugins/http-service\";\nimport { ModifierGroupModel } from \"./modifier-group.models\";\nexport const getModifierGroupList = async () => {\n return await apiClient.getHttp(`${MODIFIER_GROUP_API}`);\n};\n\nexport const removeModifierGroup = async (removedModel: RemovedEntityModel) => {\n const response = await apiClient.postHttp(\n `${MODIFIER_GROUP_API}/remove_list`,\n removedModel\n );\n return response;\n};\n\nexport const getModifierGroupById = async (id: number) => {\n return await apiClient.getHttp(`${MODIFIER_GROUP_API}/${id}`);\n};\n\nexport const addModifierGroup = async (model: ModifierGroupModel) => {\n const response = await apiClient.postHttp(`${MODIFIER_GROUP_API}`, model);\n return response;\n};\n\nexport const updateModifierGroup = async (model: ModifierGroupModel) => {\n const response = await apiClient.putHttp(`${MODIFIER_GROUP_API}`, model);\n return response;\n};\n","import { createAsyncThunk, createSlice } from \"@reduxjs/toolkit\";\nimport { RootState } from \"app.store\";\nimport { getModifierGroupList } from \"./modifier-group.api\";\nimport { ModifierGroupModel, ModifierGroupState } from \"./modifier-group.models\";\nexport const fetchModifierGroupList = createAsyncThunk(\n \"modifierGroup/fetchModifierGroupList\",\n async (any, thunkApi) => {\n try {\n const res = await getModifierGroupList();\n return res.data;\n } catch (error: any) {\n throw new Error(error);\n }\n }\n);\n\nexport const modifierGroupSlice = createSlice({\n name: \"modifierGroup\",\n initialState: {\n modifierGroups: [] as ModifierGroupModel[],\n } as ModifierGroupState,\n reducers: {\n \n },\n extraReducers: (builder) => {\n builder.addCase(fetchModifierGroupList.fulfilled, (state, action) => {\n state.modifierGroups = action.payload;\n });\n },\n});\n\nexport const modifierGroupListSelector = (state: RootState) => state.modifierGroup.modifierGroups;\n","import { appSettingReducer } from \"./states/app-setting/app-setting.reducer\";\nimport { globalValueSlice } from \"./states/global-value/global-value.slice\";\nimport { accountSlice } from \"states/account/account.slice\";\nimport { localizationSlice } from \"states/localization/localization.slice\";\nimport { combineReducers, configureStore } from \"@reduxjs/toolkit\";\nimport { branchSlice } from \"states/branch/branch.slice\";\nimport { wareHouseSlice } from \"states/ware-house/ware-house.slice\";\nimport { tagSlice } from \"states/tag/tag.slice\";\nimport { productAttributeSlice } from \"states/product-attribute/product-attribute.slice\";\nimport { unitSlice } from \"states/unit/unit.slice\";\nimport { transportationSlice } from \"states/transportation/transportation.slice\";\nimport { staffSlice } from \"states/staff/staff.slice\";\nimport { modifierGroupSlice } from \"states/modifier-group/modifier-group.slice\";\nexport const store = configureStore({\n reducer: combineReducers({\n appSetting: appSettingReducer,\n globalValue: globalValueSlice.reducer,\n account: accountSlice.reducer,\n localization: localizationSlice.reducer,\n branch: branchSlice.reducer,\n wareHouse: wareHouseSlice.reducer,\n tag: tagSlice.reducer,\n productAttribute: productAttributeSlice.reducer,\n unit: unitSlice.reducer,\n transportation: transportationSlice.reducer,\n staff: staffSlice.reducer,\n modifierGroup: modifierGroupSlice.reducer\n }),\n devTools: process.env.NODE_ENV === \"development\",\n});\n\nexport type RootState = ReturnType;\n","import { Empty } from \"antd\";\nimport { FC } from \"react\";\n\nconst EmptyPage: FC = (props) => {\n return ;\n};\n\nexport default EmptyPage;\n","import * as React from \"react\";\nimport { FC, useEffect } from \"react\";\nimport { Button, Form, Input, message } from \"antd\";\nimport { shallowEqual, useDispatch, useSelector } from \"react-redux\";\nimport \"./login-page.less\";\nimport { Link, useHistory } from \"react-router-dom\";\nimport { useForm } from \"antd/lib/form/Form\";\nimport { UserOutlined, LockOutlined } from \"@ant-design/icons\";\nimport { login, loginByCode } from \"states/account/account.api\";\nimport {\n login as loginAction,\n fetchProfile,\n} from \"states/account/account.slice\";\nimport { CoreResource, t } from \"shared/plugins/localization\";\nimport { DefaultErrorMessage } from \"shared/constants/define-localization\";\nimport { ROUTE_PREFIX } from \"shared/constants/routes\";\nimport useCallBackUrl from \"shared/hooks/use-callback-url\";\nimport { LoginResponse } from \"states/account/account.models\";\nimport { RootState } from \"app.store\";\nimport moment from \"moment\";\n\nconst LoginPage = () => {\n document.title = \"Đăng Nhập Trang Quản Trị\";\n const dispatch = useDispatch();\n const history = useHistory();\n const [form] = useForm();\n const [loading, setLoading] = React.useState(false);\n const [passCodeQuery, passCodeValue] = useCallBackUrl(\"passCode\");\n const token = useSelector(\n (state: RootState) => state.account.token,\n shallowEqual\n );\n\n const onLoginSubmit = async (values: any) => {\n try {\n if (loading) {\n return;\n }\n setLoading(true);\n let loginResponse = {} as LoginResponse;\n if (passCodeQuery) {\n loginResponse = await loginByCode(passCodeQuery);\n } else {\n loginResponse = await login(values);\n }\n await dispatch(loginAction(loginResponse));\n history.push(ROUTE_PREFIX);\n setLoading(false);\n } catch (error) {\n setLoading(false);\n message.error(\n error?.response?.data?.error?.message ??\n \"Lỗi hệ thống\"\n );\n }\n };\n const onAutoLogin = async () => {\n try {\n if (loading) {\n return;\n }\n\n setLoading(true);\n let loginResponse = {} as LoginResponse;\n if (passCodeValue) {\n loginResponse = await loginByCode(\n passCodeValue.trim().replaceAll(\" \", \"+\")\n );\n }\n dispatch(loginAction(loginResponse));\n history.push(ROUTE_PREFIX);\n setLoading(false);\n } catch (error) {\n setLoading(false);\n message.error(\n error?.response?.data?.error?.message ??\n \"Lỗi hệ thống\"\n );\n }\n };\n\n const checkAutoLogin = async () => {\n if (\n token &&\n token.refreshToken &&\n moment(token.refreshTokenExpires).isAfter(moment())\n ) {\n await dispatch(fetchProfile());\n history.push(ROUTE_PREFIX);\n return;\n }\n if (passCodeQuery) {\n await onAutoLogin();\n }\n };\n\n useEffect(() => {\n checkAutoLogin();\n }, []);\n return (\n
\n
\n
\n \"\"\n
\n
\n
\n
\n

Đăng Nhập

\n \n }\n placeholder=\"Tên đăng nhập hoặc email\"\n />\n \n \n }\n placeholder=\"Mật khẩu\"\n />\n \n \n \n Đăng Nhập\n \n \n Quên mật khẩu\n \n \n \n
\n
\n );\n};\n\nexport default LoginPage;\n","import { useHistory } from \"react-router-dom\";\n\n\nexport default function useCallBackUrl(param: string) {\n const history = useHistory();\n const queryParams = new URLSearchParams(history.location.search);\n const callbackQuery = queryParams.get(param)?.toString() !== undefined ? `?${param}=${queryParams.get(param)?.toString()}`:``;\n const callbackValue = queryParams.get(param)?.toString() !== undefined ? `${queryParams.get(param)?.toString()}`:``;\n return [callbackQuery, callbackValue];\n}\n","import { useEffect, useState } from \"react\";\nimport { Button, Form, Input, message, Modal } from \"antd\";\nimport { useForm } from \"antd/lib/form/Form\";\nimport { changePasswordApi } from \"states/account/account.api\";\nimport { ChangePasswordModel } from \"states/account/account.models\";\nimport { CoreResource, t } from \"shared/plugins/localization\";\n\ninterface ChangePasswordModalProps {\n visible?: boolean;\n onCancel?: () => void;\n}\nexport const ChangePasswordModal = (props: ChangePasswordModalProps) => {\n const { visible, onCancel } = props;\n const [form] = useForm();\n const [addBtnLoading, setAddBtnLoading] = useState(false);\n const onFinish = async (value: any) => {\n setAddBtnLoading(true);\n let payload: ChangePasswordModel = { ...value };\n try {\n await changePasswordApi(payload);\n setAddBtnLoading(false);\n onCancel && onCancel();\n message.success(\"Cập nhật mật khẩu thành công\");\n } catch (error) {\n setAddBtnLoading(false);\n message.error(\n error?.response?.data?.error?.message ??\n t(CoreResource, \"DefaultErrorMessage\")\n );\n }\n };\n const onSave = async () => {\n form.submit();\n };\n useEffect(() => {\n form.setFieldsValue({\n currentPassword: \"\",\n newPassword: \"\",\n confirmPassword: \"\",\n });\n }, [visible]);\n return (\n
\n \n Cancel\n ,\n \n Save\n ,\n ]}\n >\n \n \n \n \n \n \n \n \n \n \n \n \n
\n );\n};\n","export const QuestionRemove = \"QuestionRemove\";\nexport const UpdateDataSuccessfully = \"UpdateDataSuccessfully\";\nexport const DefaultErrorMessage = \"DefaultErrorMessage\";\nexport const TheFieldIsRequired = \"TheFieldIsRequired\";\nexport const TheFieldIsExisted = \"TheFieldIsExisted\";\nexport const TheFieldIsNotFound = \"TheFieldIsNotFound\";\nexport const SelectTheField = \"SelectTheField\";\nexport const SearchByTheField = \"SearchByTheField\";\nexport const PleaseDeleteBlogInCategory = \"PleaseDeleteBlogInCategory\";\nexport const DeleteNumber = \"DeleteNumber\";\nexport const Name = \"Name\";\nexport const Title = \"Title\";\nexport const Slug = \"Slug\";\nexport const Category = \"Category\";\nexport const UpdateTheField = \"UpdateTheField\";\nexport const AddTheField = \"AddTheField\";\nexport const Successfully = \"Successfully\";\nexport const NotificationText = \"NotificationText\";\nexport const Save = \"Save\";\nexport const Cancel = \"Cancel\";\nexport const Delete = \"Delete\";\nexport const Add = \"Add\";\nexport const Update = \"Update\";\nexport const Back = \"Back\";\nexport const ImageText = \"ImageText\";\nexport const Description = \"Description\";\nexport const MetaTitle = \"MetaTitle\";\nexport const MetaDescription = \"MetaDescription\";\nexport const MetaKeyword = \"MetaKeyword\";\nexport const Theme = \"Theme\";\nexport const Blog = \"Blog\";\nexport const MainCategory = \"MainCategory\";\nexport const Information = \"Information\";\nexport const ContentText = \"ContentText\";\nexport const RelatedCategory = \"RelatedCategory\";\nexport const CreationTime = \"CreationTime\";\nexport const LastModificationTime = \"LastModificationTime\";\nexport const Page = \"Page\";\nexport const MenuText = \"MenuText\";\nexport const StaticPage = \"StaticPage\";\nexport const StaticPageCustom = \"StaticPageCustom\";\nexport const Keyword = \"Keyword\";\nexport const OkText = \"OkText\";\nexport const Avatar = \"Avatar\";\nexport const Sort = \"Sort\";\nexport const Classify = \"Classify\";\nexport const ElementText = \"ElementText\";\nexport const ListText = \"ListText\";\nexport const ThemeManagerText = \"ThemeManagerText\";\nexport const ThemeListText = \"ThemeListText\";\nexport const NameField = \"NameField\";\nexport const GroupText = \"GroupText\";\nexport const TextStyle = \"TextStyle\";\nexport const Email = \"Email\";\nexport const Phone = \"Phone\";\nexport const Birthday = \"Birthday\";\nexport const GoogleMap = \"GoogleMap\";\nexport const Street = \"Street\";\nexport const City = \"City\";\nexport const State = \"State\";\nexport const ZipCode = \"ZipCode\";\nexport const Facebook = \"Facebook\";\nexport const Instagram = \"Instagram\";\nexport const Youtube = \"Youtube\";\nexport const MapText = \"MapText\";\nexport const Address = \"Address\";\nexport const Attribute = \"Attribute\";\nexport const GroupFieldText = \"GroupFieldText\";\nexport const AttributeValue = \"AttributeValue\";\nexport const CommentsReviews = \"CommentsReviews\";\nexport const ContactText = \"ContactText\";\nexport const CouponText = \"CouponText\";\nexport const CustomerText = \"CustomerText\";\nexport const CustomizeCss = \"CustomizeCss\";\nexport const CustomizeJs = \"CustomizeJs\";\nexport const DateFormat = \"DateFormat\";\nexport const DateTimeFormat = \"DateTimeFormat\";\nexport const ManagerText = \"ManagerText\";\nexport const OrderText = \"OrderText\";\nexport const Permission = \"Permission\";\nexport const PriceRangeText = \"PriceRangeText\";\nexport const ProductLabel = \"ProductLabel\";\nexport const ProductText = \"ProductText\";\nexport const ShippingFee = \"ShippingFee\";\nexport const StaffText = \"StaffText\";\nexport const StaffField = \"StaffField\";\nexport const Url = \"Url\";\nexport const WebsiteConfigText = \"WebsiteConfigText\";\nexport const WebsiteInfoText = \"WebsiteInfoText\";\nexport const NotificationEmailList = \"NotificationEmailList\";\nexport const TimeZone = \"TimeZone\";\nexport const IsActive = \"IsActive\";\nexport const GPosSetting = \"GPosSetting\";\nexport const MxMerchantSetting = \"MxMerchantSetting\";\nexport const DefaultPrinterIp = \"DefaultPrinterIp\";\nexport const UserPosPrinter = \"UserPosPrinter\";\nexport const ShopCode = \"ShopCode\";\nexport const DeviceCode = \"DeviceCode\";\nexport const MerchantId = \"MerchantId\";\nexport const UserName = \"UserName\";\nexport const Password = \"Password\";\nexport const IsSandbox = \"IsSandbox\";\nexport const BranchText = \"BranchText\";\nexport const SalonServiceCategoryText = \"SalonServiceCategoryText\";\nexport const GalleryText = \"GalleryText\";\nexport const StatusText = \"StatusText\";\nexport const ConfirmText = \"ConfirmText\";\nexport const QuestionUpdate = \"QuestionUpdate\";\nexport const NeverSeenText = \"NeverSeenText\";\nexport const SeenText = \"SeenText\";\nexport const CompleteText = \"CompleteText\";\nexport const SalonService = \"SalonService\";\nexport const Price = \"Price\";\nexport const Duration = \"Duration\";\nexport const ShowPlusAfterPrice = \"ShowPlusAfterPrice\";\nexport const DefaultText = \"DefaultText\";\nexport const SalonStaff = \"SalonStaff\";\nexport const AppointmentSettingText = \"AppointmentSettingText\";\nexport const SessionLength = \"SessionLength\";\nexport const TimeTable = \"TimeTable\";\nexport const PleaseSelectTheField = \"PleaseSelectTheField\";\nexport const AppointmentHistoryText = \"AppointmentHistoryText\";\nexport const AppointmentText = \"AppointmentText\";\nexport const Major = \"Major\";\nexport const BranchInfoText = \"BranchInfoText\";\nexport const CategoryGposText = \"CategoryGposText\";\nexport const ProductGposText = \"ProductGposText\";\nexport const ModifierGposText = \"ModifierGposText\";\nexport const OrderPickupSettingText = \"OrderPickupSettingText\";\nexport const OrderPickupHistoryText = \"OrderPickupHistoryText\";\nexport const SyncGposText = \"SyncGposText\";\nexport const CustomNameText = \"CustomNameText\";\nexport const UpdateSkuText = \"UpdateSkuText\";\nexport const IsShowAllSku = \"IsShowAllSku\";\nexport const IsSoldOut = \"IsSoldOut\";\nexport const UpdateMoreInfoText = \"UpdateMoreInfoText\";\nexport const MaxOrdersPerSessionText = \"MaxOrdersPerSessionText\";\nexport const OffDateText = \"OffDateText\";\nexport const SelectOffDateText = \"SelectOffDateText\";\nexport const SpecialDateText = \"SpecialDateText\";\nexport const SelectSpecialDateText = \"SelectSpecialDateText\";\nexport const OpenTimeText = \"OpenTimeText\";\nexport const CloseTimeText = \"CloseTimeText\";\nexport const SelectAnotherDateText = \"SelectAnotherDateText\";\nexport const OrderNumberText = \"OrderNumberText\";\nexport const DateFromText = \"DateFromText\";\nexport const DateToText = \"DateToText\";\nexport const PaymentStatusText = \"PaymentStatusText\";\nexport const SpendingText = \"SpendingText\";\nexport const PaidText = \"PaidText\";\nexport const TimeBeforeAppointment = \"TimeBeforeAppointment\";\nexport const OrderDateTime = \"OrderDateTime\";\nexport const SubtotalAmountText = \"SubtotalAmountText\";\nexport const TotalAmountText = \"TotalAmountText\";\nexport const TipAmountText = \"TipAmountText\";\nexport const TaxAmountText = \"TaxAmountText\";\nexport const DiscountAmountText = \"DiscountAmountText\";\nexport const ExportExcelText = \"ExportExcelText\";\nexport const PleaseWaitUpdateText = \"PleaseWaitUpdateText\";\nexport const StatisticalText = \"StatisticalText\";\nexport const GiftCardCouponText = \"GiftCardCouponText\";\nexport const CouponTypeText = \"CouponTypeText\";\nexport const StartDateText = \"StartDateText\";\nexport const EndDateText = \"EndDateText\";\nexport const IsOneTimeUsed = \"IsOneTimeUsed\";\nexport const AmountMin = \"AmountMin\";\nexport const AmountMax = \"AmountMax\";\nexport const LessMoreType = \"LessMoreType\";\nexport const InActive = \"InActive\";\nexport const ValueText = \"ValueText\";\nexport const AmountLess = \"AmountLess\";\nexport const AmountMore = \"AmountMore\";\nexport const AmountText = \"AmountText\";\nexport const PercentText = \"PercentText\";\nexport const MinimumAmount = \"MinimumAmount\";\nexport const GiftCardSettingText = \"GiftCardSettingText\";\nexport const GiftCardText = \"GiftCardText\";\nexport const GiftCardCodeText = \"GiftCardCodeText\";\nexport const RecipientText = \"RecipientText\";\nexport const EmailField = \"EmailField\";\nexport const PhoneField = \"PhoneField\";\nexport const GiftCardHistoryText = \"GiftCardHistoryText\";\nexport const TheFieldInformation = \"TheFieldInformation\";\nexport const GiftCardWeb = \"GiftCardWeb\";\nexport const UseService = \"UseService\";\nexport const FirstName = \"FirstName\";\nexport const LastName = \"LastName\";\nexport const GiftCardTemplateText = \"GiftCardTemplateText\";\nexport const RequestDateTime =\"RequestDateTime\";\nexport const BookingType = \"BookingType\";\nexport const NumberOfPeople = \"NumberOfPeople\";\nexport const TotalText = \"TotalText\";\nexport const GiftCardHistoryWebText = \"GiftCardHistoryWebText\";\nexport const BlockTimeWithOneLineAppointment =\"BlockTimeWithOneLineAppointment\";\nexport const ExtensionField = \"ExtensionField\";","import { useEffect, useState } from \"react\";\nimport {\n Layout,\n Menu,\n Avatar,\n Dropdown,\n Button,\n Select,\n Row,\n Col,\n Checkbox,\n Popconfirm,\n} from \"antd\";\nimport \"./layout-app.less\";\nimport { shallowEqual, useDispatch, useSelector } from \"react-redux\";\nimport { ChangePasswordModal } from \"modules/account/components/change-password-modal\";\nimport {\n CoreResource,\n getCurrentCulture,\n setCurrentCulture,\n t,\n} from \"shared/plugins/localization\";\nimport {\n BranchText,\n SelectTheField,\n} from \"shared/constants/define-localization\";\nimport _ from \"lodash\";\nimport { setCurrentBranch } from \"states/branch/branch.slice\";\nimport { RootState } from \"app.store\";\nimport { logout } from \"states/account/account.slice\";\nimport { setIsAutoPrintOrderOnline } from \"states/global-value/global-value.slice\";\nconst { Header } = Layout;\n\nconst HeaderApp = () => {\n const dispatch = useDispatch();\n const branchList = useSelector(\n (state: RootState) => state.branch.branchList,\n shallowEqual\n );\n const [visibleModal, setVisibleModal] = useState(false);\n const [cultureLocal, setCultureLocal] = useState(\"\");\n const currentBranch = useSelector(\n (state: RootState) => state.branch.currentBranch,\n shallowEqual\n );\n const onToggleModal = () => {\n setVisibleModal(false);\n };\n const currentStaff = useSelector(\n (state: RootState) => state.account.currentStaff,\n shallowEqual\n );\n const currentUser = useSelector(\n (state: RootState) => state.account.currentUser,\n shallowEqual\n );\n const autoPrintOrderOnline = useSelector(\n (state: RootState) => state.globalValue.autoPrintOrderOnline,\n shallowEqual\n );\n\n const accountMenu = () => {\n return (\n \n \n setVisibleModal(true)}\n >\n Change password\n \n \n \n {\n dispatch(logout());\n }}\n >\n Log out\n \n \n \n );\n };\n const _handleChangeLanguage = async (culture: string) => {\n if (cultureLocal === culture) {\n return false;\n }\n setCurrentCulture(culture);\n setCultureLocal(culture);\n window.location.reload();\n };\n\n const _handleChangeBranch = async (branchId?: number) => {\n if (currentBranch.id === branchId) {\n return;\n }\n const branch = branchList.find((m) => m.id === branchId);\n if (branch) {\n dispatch(setCurrentBranch(branch));\n }\n };\n\n // const languageMenu = (\n // {\n // _handleChangeLanguage(value.key.toString());\n // }}\n // >\n // \n // }\n // >\n // Vietnamese\n // \n // \n // }\n // >\n // English\n // \n // \n // );\n useEffect(() => {\n setCultureLocal(getCurrentCulture());\n }, []);\n return (\n
\n
\n
\n {/* {\n dispatch(setIsAutoPrintOrderOnline(!autoPrintOrderOnline));\n }}\n >\n \n Auto Print Order Online\n \n */}\n
\n
\n {\n _handleChangeBranch(item);\n }}\n value={currentBranch?.id}\n showSearch\n filterOption={(input, option: any) =>\n option.children.toLowerCase().indexOf(input.toLowerCase()) >= 0\n }\n >\n {branchList &&\n branchList\n .filter(\n (m) =>\n currentUser &&\n currentStaff &&\n (currentStaff.isAccessAllBranch ||\n currentUser.roles.filter((r) => r.name === \"Admin\")\n .length > 0 ||\n currentStaff.branchIds.filter((b) => b === m.id).length >\n 0)\n )\n .map((t) => (\n \n {t.name}\n \n ))}\n \n
\n {/*
\n \n \n \n
*/}\n
\n \n {currentStaff?.firstName[0]}\n \n onToggleModal()}\n />\n
\n
\n
\n );\n};\n\nexport default HeaderApp;\n","import { Empty } from \"antd\";\nimport Title from \"antd/lib/typography/Title\";\n\nconst EmptyBranch = () => {\n return Select Location} />;\n};\n\nexport default EmptyBranch;\n","import { StaffModel } from \"states/staff/staff.models\";\n\nexport interface ChangePasswordModel {\n currentPassword: string;\n newPassword: string;\n confirmPassword: string;\n}\n\nexport interface ForgotPasswordModel {\n email: string;\n appPath: string;\n}\nexport interface ResetPasswordModel {\n userId: string;\n token: string;\n newPassword: string;\n confirmPassword: string;\n}\n\nexport interface AccountState {\n currentUser?: CurrentUser;\n isAuthentication?: boolean;\n token: LoginResponse;\n currentStaff?: StaffModel;\n}\n\nexport interface LoginResponse {\n accessToken?: string;\n refreshToken?: string;\n accessTokenExpires?: Date;\n refreshTokenExpires?: Date;\n}\n\nexport interface CurrentUser {\n lockoutEnd?: string;\n phoneNumberConfirmed?: boolean;\n phoneNumber?: string;\n emailConfirmed?: false;\n normalizedEmail?: string;\n email?: string;\n normalizedUserName?: string;\n userName?: string;\n id: string;\n accessFailedCount?: number;\n roles: { id: string; name: string }[];\n permissions: { id: string; name: string; groupName: string }[];\n}\nexport function isAdmin(currentUser: CurrentUser): boolean {\n return currentUser.roles.filter((m) => m.name === \"Admin\").length > 0;\n}\nexport function isHavePermission(\n currentUser: CurrentUser,\n ...permissionName: string[]\n): boolean {\n return (\n currentUser.permissions.filter((m) => permissionName.includes(m.name))\n .length > 0\n );\n}\n\nexport interface LoginUserModel {\n userName: string;\n password: string;\n}\n","export interface RemovedRoleManagementModel {\n idList: string[];\n}\n\nexport interface RoleManagementModel {\n key: string;\n id: string;\n name: string;\n normalizedName: string;\n appPermissions: AppPermissionModel[];\n}\n\nexport interface CreateRoleManagementModel {\n name: string;\n appPermissions: string[];\n}\n\nexport interface UpdateRoleManagementModel {\n id: string;\n name: string;\n appPermissions: string[];\n}\n\nexport interface AppPermissionModel {\n id: string;\n name: string;\n groupName: string;\n}\n\nexport const PermissionConst: { [key: string]: string } = {\n WEBSITE_CONTENT: \"Quản lý nội dung\",\n \"WEBSITE_CONTENT:MANAGE\": \"Quản lý\",\n\n BRANCH: \"Quản lý chi nhánh\",\n \"BRANCH:MANAGE\": \"Quản lý\",\n\n COMMENT: \"Quản lý bình luận\",\n \"COMMENT:MANAGE\": \"Quản lý\",\n\n CUSTOMER: \"Quản lý khách hàng\",\n \"CUSTOMER:MANAGE\": \"Quản lý\",\n\n PRODUCT: \"Quản lý sản phẩm\",\n \"PRODUCT:MANAGE\": \"Quản lý\",\n\n ORDER: \"Quản lý bán hàng\",\n \"ORDER:MANAGE\": \"Quản lý\",\n\n STAFF: \"Quản lý nhân viên\",\n \"STAFF:MANAGE\": \"Quản lý\",\n};\n\nexport enum PermissionNameEnum {\n BranchManage = \"BRANCH:MANAGE\",\n OrderManage = \"ORDER:MANAGE\",\n CustomerManage = \"CUSTOMER:MANAGE\",\n ProductManage = \"PRODUCT:MANAGE\",\n StaffManage = \"STAFF:MANAGE\",\n WebsiteContentManage = \"WEBSITE_CONTENT:MANAGE\",\n CommentManage = \"COMMENT:MANAGE\",\n}\n","import { FC, useState } from \"react\";\nimport { Drawer, Layout, Menu } from \"antd\";\nimport {\n BarcodeOutlined,\n CarOutlined,\n CommentOutlined,\n ContactsOutlined,\n DollarOutlined,\n FileImageOutlined,\n FileTextOutlined,\n HomeOutlined,\n MenuOutlined,\n SettingOutlined,\n UserOutlined,\n} from \"@ant-design/icons\";\nimport \"./layout-app.less\";\nimport { Link, useLocation } from \"react-router-dom\";\nimport HeaderApp from \"./header-app\";\nimport { shallowEqual, useSelector } from \"react-redux\";\nimport { RootState } from \"app.store\";\nimport SubMenu from \"antd/lib/menu/SubMenu\";\nimport EmptyBranch from \"shared/components/empty-branch/empty-branch\";\nimport {\n COMMENT_ROUTE,\n FIREBASE_CONFIG_ROUTE,\n ORDER_REPORT_ROUTE,\n ORDER_ROUTE,\n PAYMENT_SETTING_ROUTE,\n PRODUCT_ATTRIBUTE_GROUP_ROUTE,\n PRODUCT_ATTRIBUTE_ROUTE,\n PRODUCT_ATTRIBUTE_VALUE_ROUTE,\n PRODUCT_CATEGORY_ROUTE,\n PRODUCT_COMMENT_ROUTE,\n PRODUCT_ROUTE,\n PROMOTION_CODE_ROUTE,\n SHIPPING_FEE_DEFAULT_ROUTE,\n STAFF_ROUTE,\n SYSTEM_CONFIG_ROUTE,\n TAG_ROUTE,\n THEME_SETTING_ROUTE,\n THEME_TEMPLATE_ROUTE,\n TRANSPORTATION_ROUTE,\n UNIT_ROUTE,\n WEBSITE_CONFIG_ROUTE,\n} from \"shared/constants/routes\";\nimport {\n CurrentUser,\n isAdmin,\n isHavePermission,\n} from \"states/account/account.models\";\nimport { PermissionNameEnum } from \"states/role-management/role-management.models\";\nimport { isDesktop } from \"react-device-detect\";\n\nconst { Content, Sider } = Layout;\n\ntype LayoutAppProps = any;\n\nconst LayoutApp: FC = (props) => {\n const unSelectBranchPath = [\"/admin/branch\"];\n\n const [visible, setVisible] = useState(false);\n const onToggleDrawer = () => {\n setVisible(!visible);\n };\n const location = useLocation();\n const isLogin = useSelector(\n (state: RootState) => state.account.isAuthentication,\n shallowEqual\n );\n const currentUser = useSelector(\n (state: RootState) => state.account.currentUser,\n shallowEqual\n );\n const currentBranch = useSelector(\n (state: RootState) => state.branch.currentBranch,\n shallowEqual\n );\n\n return isLogin ? (\n \n {!isDesktop ? (\n \n
\n \n
\n
\n
\n \n
\n
\n \n ) : (\n \n )}\n\n \n \n \n {currentBranch.id ||\n unSelectBranchPath.filter(\n (m) =>\n location.pathname === m ||\n location.pathname.startsWith(m + \"/add\") ||\n location.pathname.startsWith(m + \"/update\")\n ).length > 0 ? (\n props.children\n ) : (\n \n )}\n \n \n
\n ) : null;\n};\ninterface ISiderMenu {\n currentUser?: CurrentUser;\n isMobile?: boolean;\n}\nconst SiderMenu: FC = (props) => {\n const { currentUser, isMobile } = props;\n const [menuCollapse, setMenuCollapse] = useState(false);\n return (\n {\n setMenuCollapse(collapsed);\n }}\n >\n
\n \"\"\n
\n \n {currentUser &&\n (isAdmin(currentUser) ||\n isHavePermission(currentUser, PermissionNameEnum.OrderManage)) && (\n }>\n Bảng điều khiển\n \n )}\n } title=\"Bán hàng\">\n {currentUser && (\n <>\n \n Đơn hàng\n \n \n Mã khuyến mãi\n \n \n )}\n \n\n {currentUser &&\n (isAdmin(currentUser) ||\n isHavePermission(\n currentUser,\n PermissionNameEnum.ProductManage\n )) && (\n } title=\"Sản phẩm\">\n \n Sản phẩm\n \n \n Danh mục sản phẩm\n \n {/* \n Modifier groups\n */}\n \n Đơn vị\n \n \n Nhóm thuộc tính\n \n \n Thuộc tính\n \n \n \n Giá trị thuộc tính\n \n \n \n Tags\n \n \n )}\n\n {/* } title=\"Inventories\">\n \n Danh sách tồn kho\n \n \n Nhập hàng\n \n \n Nhà cung cấp\n \n \n Warehouses\n \n */}\n\n {currentUser &&\n (isAdmin(currentUser) ||\n isHavePermission(\n currentUser,\n PermissionNameEnum.CustomerManage\n )) && (\n }\n title=\"Khách hàng\"\n >\n \n Danh sách khách hàng\n \n \n Liên hệ\n \n \n )}\n {currentUser &&\n (isAdmin(currentUser) ||\n isHavePermission(\n currentUser,\n PermissionNameEnum.CommentManage\n )) && (\n <>\n }>\n Bình luận\n \n \n )}\n {currentUser &&\n (isAdmin(currentUser) ||\n isHavePermission(\n currentUser,\n PermissionNameEnum.WebsiteContentManage\n )) && (\n <>\n }\n key=\"blogsub\"\n title={`Bài viết`}\n >\n \n Danh sách bài viết\n \n \n Danh mục bài viết\n \n \n }>\n Trang tĩnh\n \n \n )}\n {/* {currentUser &&\n (isAdmin(currentUser) ||\n isHavePermission(\n currentUser,\n PermissionNameEnum.BranchManage\n )) && (\n }>\n Chi nhánh\n \n )} */}\n \n {currentUser &&\n (isAdmin(currentUser) ||\n isHavePermission(currentUser, PermissionNameEnum.OrderManage)) && (\n }>\n \n Cấu hình phí ship\n \n \n Nhà vận chuyển\n \n \n )}\n {currentUser &&\n (isAdmin(currentUser) ||\n isHavePermission(currentUser, PermissionNameEnum.OrderManage)) && (\n }\n >\n Cấu hình thanh toán\n \n )}\n } title=\"Cấu hình\">\n {currentUser &&\n (isAdmin(currentUser) ||\n isHavePermission(\n currentUser,\n PermissionNameEnum.WebsiteContentManage\n )) && (\n <>\n \n Giao diện\n \n \n Menu\n \n \n )}\n {currentUser && isAdmin(currentUser) && (\n <>\n \n Cấu hình website\n \n \n Mẫu giao diện\n \n\n \n Hệ thống\n \n \n Cấu hình firebase\n \n \n )}\n \n\n {currentUser &&\n (isAdmin(currentUser) ||\n isHavePermission(currentUser, PermissionNameEnum.StaffManage)) && (\n } title=\"Nhân viên\">\n \n Nhân viên\n \n \n Phân quyền\n \n \n )}\n \n \n );\n};\nexport default LayoutApp;\n","import { Spin } from \"antd\";\nimport { RootState } from \"app.store\";\nimport { shallowEqual, useSelector } from \"react-redux\";\n\nexport function Loading(props: any) {\n const isLoading = useSelector(\n (state: RootState) => state.globalValue.isLoading,\n shallowEqual\n );\n const isLoadingApp = useSelector(\n (state: RootState) => state.globalValue.isLoadingApp,\n shallowEqual\n );\n return isLoadingApp ? (\n \n ) : (\n {props.children}\n );\n}\n","import React, { FC, useEffect, useState } from \"react\";\nimport { Button, Form, Input, message } from \"antd\";\nimport { Link } from \"react-router-dom\";\nimport { useForm } from \"antd/lib/form/Form\";\nimport { UserOutlined } from \"@ant-design/icons\";\nimport { ForgotPasswordModel } from \"states/account/account.models\";\nimport { forgotPasswordApi } from \"states/account/account.api\";\nimport { CoreResource, t } from \"shared/plugins/localization\";\nimport { LOGIN_ROUTE } from \"shared/constants/routes\";\n\ntype SendMailPasswordProps = any;\n\nexport const SendEmailPasswordForm: FC = (props) => {\n const [form] = useForm();\n const [loading, setLoading] = useState(false);\n const onSendEmail = async (values: any) => {\n setLoading(true);\n let payload: ForgotPasswordModel = { ...values };\n try {\n if (loading) {\n return;\n }\n await forgotPasswordApi(payload);\n message.success(\n \"Reset password request has been sent successfully to your email.\"\n );\n setLoading(false);\n } catch (error) {\n setLoading(false);\n message.error(\n error?.response?.data?.error?.message ??\n t(CoreResource, \"DefaultErrorMessage\")\n );\n }\n };\n\n const onFinishFailed = (errorInfo: any) => {\n console.log(\"Failed:\", errorInfo);\n };\n useEffect(() => {}, []);\n return (\n \n \n } placeholder=\"Email\" />\n \n \n \n Reset password\n \n \n Back\n \n \n \n );\n};\n","import React, { FC, useEffect, useState } from \"react\";\nimport { Button, Form, Input, message } from \"antd\";\nimport { Link, useHistory } from \"react-router-dom\";\nimport { useForm } from \"antd/lib/form/Form\";\nimport { LockOutlined } from \"@ant-design/icons\";\nimport { ResetPasswordModel } from \"states/account/account.models\";\nimport { resetPasswordApi } from \"states/account/account.api\";\nimport { CoreResource, t } from \"shared/plugins/localization\";\n\ninterface ResetPasswordProps {\n userId: string;\n token: string;\n}\n\nexport const ResetPasswordForm: FC = (props) => {\n const { userId, token } = props;\n const [form] = useForm();\n const history = useHistory();\n const [loading, setLoading] = useState(false);\n const onSendResetPassword = async (values: any) => {\n setLoading(true);\n let payload: ResetPasswordModel = {\n ...values,\n userId: userId,\n token: token,\n };\n try {\n if (loading) {\n return;\n }\n await resetPasswordApi(payload);\n message.success(\"Reset mật khẩu thành công\");\n setLoading(false);\n history.replace(\"/admin/login\");\n } catch (error) {\n setLoading(false);\n message.error(\n error?.response?.data?.error?.message ??\n t(CoreResource, \"DefaultErrorMessage\")\n );\n }\n };\n\n const onFinishFailed = (errorInfo: any) => {\n console.log(\"Failed:\", errorInfo);\n };\n useEffect(() => {}, []);\n return (\n \n \n }\n placeholder=\"Mật khẩu mới\"\n />\n \n \n }\n placeholder=\"Nhập lại mật khẩu\"\n />\n \n \n \n Xác nhận\n \n \n Quay lại\n \n \n \n );\n};\n","import { FC, useEffect, useState } from \"react\";\nimport \"./login-page.less\";\nimport { useLocation } from \"react-router-dom\";\nimport { SendEmailPasswordForm } from \"./components/send-mail-form\";\nimport { ResetPasswordForm } from \"./components/reset-password-form\";\ntype ForgotPasswordProps = any;\n\nconst ForgotPasswordPage: FC = () => {\n document.title = \"Forgot password\";\n let location = useLocation();\n const [actionResetPassword, setActionResetPassword] = useState(false);\n const [token, setToken] = useState(\"\");\n const [userId, setUserId] = useState(\"\");\n useEffect(() => {\n if (location.search !== null && location.search !== \"\") {\n let url = JSON.parse(\n '{\"' +\n decodeURI(location.search.substring(1))\n .replace(/\"/g, '\\\\\"')\n .replace(/&/g, '\",\"')\n .replace(/=/g, '\":\"') +\n '\"}'\n );\n setActionResetPassword(true);\n setToken(url.code);\n setUserId(url.userId);\n }\n }, []);\n return (\n
\n
\n
\n \"\"\n
\n
\n
\n {actionResetPassword ? (\n \n ) : (\n \n )}\n
\n
\n );\n};\n\nexport default ForgotPasswordPage;\n","import {\n ROLE_MANAGEMENT_API,\n ROLE_MANAGEMENT_API_PERMISSION,\n} from \"shared/constants/api-endpoint\";\nimport { apiClient } from \"shared/plugins/http-service\";\n\nimport {\n AppPermissionModel,\n CreateRoleManagementModel,\n RemovedRoleManagementModel,\n RoleManagementModel,\n UpdateRoleManagementModel,\n} from \"./role-management.models\";\n\nexport const createRole = async (\n createUserManagementModel: CreateRoleManagementModel\n) => {\n const createResponse = await apiClient.postHttp(\n `${ROLE_MANAGEMENT_API}`,\n createUserManagementModel\n );\n return createResponse;\n};\n\nexport const getRoles = async () => {\n const createResponse = await apiClient.getHttp(\n `${ROLE_MANAGEMENT_API}`\n );\n return createResponse;\n};\n\nexport const getRoleById = async (id: string) => {\n return await apiClient.getHttp(\n `${ROLE_MANAGEMENT_API}/${id}`\n );\n};\n\nexport const updateRole = async (updateModel: UpdateRoleManagementModel) => {\n const response = await apiClient.putHttp(\n `${ROLE_MANAGEMENT_API}`,\n updateModel\n );\n return response;\n};\nexport const removeRole = async (removedModel: RemovedRoleManagementModel) => {\n const response = await apiClient.postHttp(\n `${ROLE_MANAGEMENT_API}/remove_list`,\n removedModel\n );\n return response;\n};\n\nexport const getAppPermissions = async () => {\n return await apiClient.getHttp(\n `${ROLE_MANAGEMENT_API_PERMISSION}`\n );\n};\n","export function groupBy(\n list: T[],\n keyGetter: (i: T) => string\n): GroupByModel[] {\n const map = new Map();\n list.forEach((item) => {\n const key = keyGetter(item);\n const collection = map.get(key);\n if (!collection) {\n map.set(key, [item]);\n } else {\n collection.push(item);\n }\n });\n return Array.from(map, ([name, value]) => ({ name, value }));\n}\n\nexport interface GroupByModel {\n name: any;\n value: T[];\n}\n","import { Modal, Input, message, Button, Row, Col, Menu, Checkbox } from \"antd\";\nimport { useEffect, useRef, useState } from \"react\";\n\nimport { groupBy } from \"shared/plugins/list-helper\";\nimport {\n AppPermissionModel,\n CreateRoleManagementModel,\n PermissionConst,\n RoleManagementModel,\n UpdateRoleManagementModel,\n} from \"states/role-management/role-management.models\";\nimport {\n createRole,\n updateRole,\n} from \"states/role-management/role-management.api\";\nimport { t, CoreResource } from \"shared/plugins/localization\";\n\nexport interface IRoleFormModalProps {\n visible?: boolean;\n isUpdate?: boolean;\n onCancel?: () => void;\n onClose?: () => void;\n onModifier?: () => void;\n model: RoleManagementModel;\n permissions: AppPermissionModel[];\n}\n\nexport function RoleFormModal(props: IRoleFormModalProps) {\n const { visible, isUpdate, onCancel, onClose, onModifier, permissions } =\n props;\n const [activePermission, setActivePermission] = useState(0);\n const [addBtnLoading, setAddBtnLoading] = useState(false);\n const [permissionGroups, setPermissionGroups] = useState<\n {\n name: string;\n value: {\n id: string;\n name: string;\n groupName: string;\n actived: boolean;\n }[];\n }[]\n >([]);\n const [roleModel, setRoleModel] = useState(props.model);\n\n const onSave = async () => {\n try {\n setAddBtnLoading(true);\n if (isUpdate) {\n const payload = initUpdateRoleModel();\n await updateRole(payload);\n message.success(\"Successfully\");\n } else {\n const payload = initCreateRoleModel();\n await createRole(payload);\n message.success(\"Successfully\");\n }\n onModifier && onModifier();\n setAddBtnLoading(false);\n onClose && onClose();\n } catch (error) {\n setAddBtnLoading(false);\n message.error(\n error?.response?.data?.error?.message ??\n t(CoreResource, \"DefaultErrorMessage\")\n );\n }\n };\n\n const initCreateRoleModel = () => {\n const payload: CreateRoleManagementModel = {\n ...roleModel,\n appPermissions: [],\n };\n permissionGroups.forEach((group) => {\n payload.appPermissions = payload.appPermissions.concat(\n group.value.filter((m) => m.actived).map((m) => m.id)\n );\n });\n return payload;\n };\n\n const initUpdateRoleModel = () => {\n const payload: UpdateRoleManagementModel = {\n ...roleModel,\n appPermissions: [],\n };\n permissionGroups.forEach((group) => {\n payload.appPermissions = payload.appPermissions.concat(\n group.value.filter((m) => m.actived).map((m) => m.id)\n );\n });\n return payload;\n };\n\n const onSelectedPermissionGroup = ({ key }: any) => {\n setActivePermission(key);\n };\n\n const onChangeSelectAll = (event: any) => {\n permissionGroups[activePermission].value = permissionGroups[\n activePermission\n ].value.map((permission) => ({\n ...permission,\n actived: event.target.checked,\n }));\n\n setPermissionGroups([...permissionGroups]);\n };\n\n const onChangePermissionItem = (event: any) => {\n const index = event.target.value as number;\n permissionGroups[activePermission].value[index].actived =\n event.target.checked;\n\n setPermissionGroups([...permissionGroups]);\n };\n\n useEffect(() => {\n setRoleModel({ ...props.model });\n }, [props.model]);\n\n useEffect(() => {\n const permissionGroupTemp = groupBy(permissions, (p) => p.groupName);\n const newPermissionGroup = permissionGroupTemp.map((group) => ({\n ...group,\n value: group.value.map((permission) => ({\n ...permission,\n actived:\n roleModel.appPermissions.filter((p) => p.id === permission.id)\n .length > 0,\n })),\n }));\n setPermissionGroups(newPermissionGroup);\n }, [permissions, roleModel]);\n return (\n
\n \n Bỏ qua\n ,\n \n Lưu lại\n ,\n ]}\n >\n
\n {\n roleModel.name = event.target.value;\n setRoleModel({ ...roleModel });\n }}\n >\n
\n \n \n \n {permissionGroups.map((group, index) => (\n {PermissionConst[group.name]}\n ))}\n \n \n \n \n \n 0 &&\n permissionGroups[activePermission].value.filter(\n (m) => m.actived\n ).length === permissionGroups[activePermission].value.length\n }\n >\n Chọn tất cả\n \n \n {permissionGroups.length > 0 &&\n permissionGroups[activePermission].value.map((item, index) => (\n \n \n {PermissionConst[item.name]}\n \n \n ))}\n \n \n \n \n
\n );\n}\n","import React, { FC, useState, useEffect } from \"react\";\nimport { useDispatch } from \"react-redux\";\n\nimport { Table, Row, Col, Button, message, Drawer, notification } from \"antd\";\n\nimport { PlusCircleOutlined, DeleteOutlined } from \"@ant-design/icons\";\nimport { ColumnsType } from \"antd/lib/table\";\nimport {\n getAppPermissions,\n getRoleById,\n getRoles,\n removeRole,\n} from \"states/role-management/role-management.api\";\nimport { RoleFormModal } from \"./components/role-form-modal\";\nimport {\n AppPermissionModel,\n PermissionConst,\n RemovedRoleManagementModel,\n RoleManagementModel,\n} from \"states/role-management/role-management.models\";\nimport { t, CoreResource } from \"shared/plugins/localization\";\n\ninterface IRoleManagementProps {}\n\nconst RoleManagementPage: FC = () => {\n const [isModal, setIsModal] = useState(false);\n const [selectedRowsKeys, setSelectedRowsKeys] =\n useState({\n idList: [],\n });\n const [isUpdateRole, setIsUpdateRole] = useState(false);\n const [isLoadingList, setIsLoadingList] = useState(false);\n const [rolePagedResults, setRolePagedResults] = useState(\n [] as RoleManagementModel[]\n );\n const [model, setModel] = useState({\n appPermissions: [] as AppPermissionModel[],\n } as RoleManagementModel);\n\n const [permissions, setPermissions] = useState([]);\n\n const rowSelection = {\n selectedRowsKeys,\n onChange: (selectedRowKeys: any) => {\n setSelectedRowsKeys({ ...selectedRowsKeys, idList: selectedRowKeys });\n },\n };\n const onEmptySelection = () => {\n setSelectedRowsKeys({ ...selectedRowsKeys, idList: [] });\n };\n const dispatch = useDispatch();\n\n const onUpdateRoleBtn = async (id: string) => {\n try {\n const roleModelResponse = await getRoleById(id);\n setIsModal(true);\n setIsUpdateRole(true);\n setModel(roleModelResponse?.data);\n } catch (error) {\n message.error(\n error?.response?.message ?? \"Lỗi hệ thống\"\n );\n }\n };\n const onAddBtnClicked = () => {\n setIsModal(true);\n setIsUpdateRole(false);\n setModel({\n appPermissions: [] as AppPermissionModel[],\n } as RoleManagementModel);\n };\n\n const getAppRoles = async () => {\n setIsLoadingList(true);\n const result = await getRoles();\n result.data.forEach((m) => (m.key = m.id));\n setRolePagedResults(result.data);\n setIsLoadingList(false);\n };\n\n const onCancelModal = () => {\n setIsModal(false);\n };\n const onCloseModal = () => {\n setIsModal(false);\n };\n\n const onModifier = () => getAppRoles();\n\n const onRemoveBtn = () => {\n const key = `open${Date.now()}`;\n const btn = (\n {\n removeRole(selectedRowsKeys)\n .then(() => {\n notification.close(key);\n setSelectedRowsKeys({ ...selectedRowsKeys, idList: [] });\n getAppRoles();\n message.success(\"Cập nhật thành công\");\n })\n .catch((error) => {\n message.error(\n error?.response?.data?.error?.message ??\n \"Lỗi hệ thống\"\n );\n });\n }}\n >\n Xóa\n \n );\n notification.open({\n message: \"Bạn có muốn xóa không ?\",\n key,\n btn,\n placement: \"bottomLeft\",\n });\n };\n const columns: ColumnsType = [\n {\n title: \"Tên\",\n dataIndex: \"name\",\n key: \"name\",\n render: (name: string, item: RoleManagementModel) => (\n \n {\n onUpdateRoleBtn(item.id);\n }}\n >\n {name}\n \n \n ),\n },\n ];\n\n useEffect(() => {\n getAppPermissions().then((res) => {\n const permissionList: AppPermissionModel[] = [];\n res.data.forEach((per) => {\n if (PermissionConst[per.groupName] && PermissionConst[per.name]) {\n permissionList.push(per);\n }\n });\n setPermissions(permissionList);\n });\n getAppRoles();\n }, []);\n\n return (\n
\n \n \n \n }\n >\n Thêm phân quyền\n \n \n \n \n \n 0\n ? true\n : false\n }\n >\n }\n >\n Xóa {selectedRowsKeys.idList.length.toString()} dòng\n \n \n
\n );\n};\n\nexport default RoleManagementPage;\n","export interface ThemeTemplateModel {\n id?: string;\n name: string;\n slug: string;\n key?: string;\n value: any;\n}\n\nexport interface ThemeTemplateItem {\n name: string;\n type: ThemeType;\n value: any;\n}\n\nexport interface SearchThemeTemplateRequestModel {\n slug?: string;\n page: number;\n pageSize: number;\n}\n\nexport enum ThemeType {\n Group,\n GroupList,\n Image,\n ImageList,\n TextNormal,\n TextHtml,\n TextLink,\n}\n\nexport const ThemeTypeText = [\n \"Nhóm phần tử\",\n \"Danh sách nhóm phần tử\",\n \"Hình ảnh\",\n \"Danh sách hình ảnh\",\n \"Chữ bình thường\",\n \"Chữ HTML\",\n \"Đường dẫn\",\n];\n","import {\n STATIC_PAGE_API,\n STATIC_PAGE_API_SEARCH,\n} from \"shared/constants/api-endpoint\";\nimport { apiClient } from \"shared/plugins/http-service\";\nimport { PagedResult } from \"states/paged-result-model\";\nimport {\n CreateStaticPageModel,\n RemovedStaticPageModel,\n SearchStaticPageRequestModel,\n StaticPageModel,\n UpdatedStaticPageModel,\n} from \"./static-page.models\";\n\nexport const searchStaticPage = async (\n searchStaticPageRequestModel: SearchStaticPageRequestModel\n) => {\n const createResponse = await apiClient.postHttp>(\n `${STATIC_PAGE_API_SEARCH}`,\n searchStaticPageRequestModel\n );\n return createResponse;\n};\n\nexport const removeStaticPage = async (\n removedModel: RemovedStaticPageModel\n) => {\n const response = await apiClient.postHttp(\n `${STATIC_PAGE_API}/remove_list`,\n removedModel\n );\n return response;\n};\n\nexport const getStaticPageById = async (id: number, langCode?: string) => {\n return await apiClient.getHttp(`${STATIC_PAGE_API}/${id}`, {\n params: { langCode: langCode },\n });\n};\n\nexport const addStaticPage = async (\n model: CreateStaticPageModel,\n langCode?: string\n) => {\n const response = await apiClient.postHttp(\n `${STATIC_PAGE_API}`,\n model,\n {\n params: { langCode: langCode },\n }\n );\n return response;\n};\n\nexport const updateStaticPage = async (\n model: UpdatedStaticPageModel,\n langCode?: string\n) => {\n const response = await apiClient.putHttp(\n `${STATIC_PAGE_API}`,\n model,\n {\n params: { langCode: langCode },\n }\n );\n return response;\n};\n","import React, { FC, useState, useEffect } from \"react\";\n\nimport {\n Table,\n Row,\n Col,\n Button,\n Input,\n message,\n Drawer,\n notification,\n} from \"antd\";\n\nimport { PlusCircleOutlined, DeleteOutlined } from \"@ant-design/icons\";\nimport { ColumnsType } from \"antd/lib/table\";\nimport { PagedResult } from \"states/paged-result-model\";\n\nimport { useDebouncedCallback } from \"use-debounce/lib\";\nimport {\n RemovedStaticPageModel,\n SearchStaticPageRequestModel,\n StaticPageModel,\n} from \"states/static-page/static-page.models\";\nimport {\n removeStaticPage,\n searchStaticPage,\n} from \"states/static-page/static-page.api\";\nimport { Link } from \"react-router-dom\";\nimport { t, CoreResource } from \"shared/plugins/localization\";\ninterface IStaticPageProps {}\n\nconst StaticPage: FC = () => {\n const [selectedRowsKeys, setSelectedRowsKeys] =\n useState({\n idList: [],\n });\n const [isLoadingList, setIsLoadingList] = useState(false);\n const [pagedResults, setpagedResults] = useState(\n {} as PagedResult\n );\n const [filterModel, setFilterModel] = useState({\n page: 1,\n pageSize: 20,\n });\n\n const rowSelection = {\n selectedRowsKeys,\n onChange: (selectedRowKeys: any) => {\n setSelectedRowsKeys({ ...selectedRowsKeys, idList: selectedRowKeys });\n },\n };\n const onEmptySelection = () => {\n setSelectedRowsKeys({ ...selectedRowsKeys, idList: [] });\n };\n\n useEffect(() => {\n handleSearch();\n }, [filterModel]);\n useEffect(() => {\n document.title = \"Trang tĩnh\"\n }, []);\n\n const gotoPage = async (page: number, pageSize:number) => {\n setIsLoadingList(true);\n const result = await searchStaticPage({ ...filterModel, page,pageSize });\n result.data.results.forEach((m) => (m.key = m.id.toString()));\n setpagedResults(result.data);\n setIsLoadingList(false);\n };\n const handleSearch = useDebouncedCallback(() => {\n gotoPage(1,20);\n }, 500);\n\n const onRemoveBtn = () => {\n const key = `open${Date.now()}`;\n const btn = (\n {\n removeStaticPage(selectedRowsKeys)\n .then(() => {\n notification.close(key);\n setSelectedRowsKeys({ ...selectedRowsKeys, idList: [] });\n handleSearch();\n message.success(\"Cập nhật thành công\");\n })\n .catch(() => {\n message.error(\"Lỗi hệ thống\");\n });\n }}\n >\n Xóa\n \n );\n notification.open({\n message: \"Bạn có muốn xóa không ?\",\n key,\n btn,\n placement: \"bottomLeft\",\n });\n };\n const columns: ColumnsType = [\n {\n title: \"Id\",\n dataIndex: \"id\",\n key:\"id\",\n width:\"40px\",\n render: (id: string, item) => (\n \n {id}\n \n ),\n },\n {\n title: \"Tên trang\",\n dataIndex: \"title\",\n key: \"title\",\n render: (title: string, item) => (\n \n {title}\n \n ),\n },\n ];\n\n return (\n
\n \n \n {\n setFilterModel({ ...filterModel, title: e.target.value });\n }}\n >\n \n \n \n \n \n \n \n \n 0\n ? true\n : false\n }\n >\n }\n >\n Xóa {selectedRowsKeys.idList.length.toString()} dòng\n \n \n
\n );\n};\n\nexport default StaticPage;\n","import {\n THEME_SETTING_API,\n THEME_SETTING_API_SEARCH,\n} from \"shared/constants/api-endpoint\";\nimport { RemovedEntityModel } from \"shared/models/removed-entity-model\";\nimport { apiClient } from \"shared/plugins/http-service\";\nimport { PagedResult } from \"states/paged-result-model\";\nimport {\n SearchThemeSettingRequestModel,\n ThemeSettingModel,\n} from \"./theme-setting.models\";\n\nexport const searchThemeSettingApi = async (\n searchThemeSettingPageRequestModel: SearchThemeSettingRequestModel,\n langCode?: string\n) => {\n const createResponse = await apiClient.postHttp<\n PagedResult\n >(`${THEME_SETTING_API_SEARCH}`, searchThemeSettingPageRequestModel, {\n params: { langCode },\n });\n return createResponse;\n};\n\nexport const removeThemeSettingApi = async (\n removedModel: RemovedEntityModel\n) => {\n const response = await apiClient.postHttp(\n `${THEME_SETTING_API}/remove_list`,\n removedModel\n );\n return response;\n};\n\nexport const getThemeSettingByIdApi = async (id: string, langCode?: string) => {\n return await apiClient.getHttp(\n `${THEME_SETTING_API}/${id}`,\n { params: { langCode } }\n );\n};\n\nexport const getThemeSettingListApi = async (langCode?: string) => {\n return await apiClient.getHttp(`${THEME_SETTING_API}`, {\n params: { langCode },\n });\n};\n\nexport const addThemeSettingApi = async (\n model: ThemeSettingModel,\n langCode?: string\n) => {\n const response = await apiClient.postHttp(\n `${THEME_SETTING_API}`,\n model,\n { params: { langCode } }\n );\n return response;\n};\n\nexport const updateThemeSettingApi = async (\n model: ThemeSettingModel,\n langCode?: string\n) => {\n const response = await apiClient.putHttp(`${THEME_SETTING_API}`, model, {\n params: { langCode },\n });\n return response;\n};\n\nexport const getGlobalThemeSettingApi = async () => {\n const response = await apiClient.getHttp(\n `/api/v1/client/themes/global`,\n undefined,\n false\n );\n return response;\n};\n","import {\n ThemeTemplateItem,\n ThemeTemplateModel,\n ThemeType,\n} from \"states/theme-template/theme-template.models\";\n\nexport const setValueFromTemplate = (template: ThemeTemplateItem) => {\n let valueModel: any = {};\n if (\n template.type === ThemeType.GroupList ||\n template.type === ThemeType.ImageList\n ) {\n valueModel = [];\n }\n if (template.type === ThemeType.Group) {\n for (let propName in template.value) {\n valueModel[propName] = setValueFromTemplate(\n template.value[propName] as ThemeTemplateItem\n );\n }\n }\n return valueModel;\n};\n\nexport const convertToThemeTemplateItem = (\n templateModel: ThemeTemplateModel\n): ThemeTemplateItem => {\n return {\n name: templateModel.name,\n type: ThemeType.Group,\n value: templateModel.value,\n };\n};\n","import {\n THEME_TEMPLATE_API,\n THEME_TEMPLATE_API_SEARCH,\n THEME_TEMPLATE_API_REMOVE,\n} from \"shared/constants/api-endpoint\";\nimport { RemovedEntityModel } from \"shared/models/removed-entity-model\";\nimport { apiClient } from \"shared/plugins/http-service\";\nimport { PagedResult } from \"states/paged-result-model\";\nimport {\n SearchThemeTemplateRequestModel,\n ThemeTemplateModel,\n} from \"./theme-template.models\";\n\nexport const searchThemeTemplate = async (\n searchThemeTemplateRequestModel: SearchThemeTemplateRequestModel\n) => {\n const createResponse = await apiClient.postHttp<\n PagedResult\n >(`${THEME_TEMPLATE_API_SEARCH}`, searchThemeTemplateRequestModel);\n return createResponse;\n};\n\nexport const removeThemeTemplate = async (\n removedModel: RemovedEntityModel\n) => {\n const response = await apiClient.postHttp(\n `${THEME_TEMPLATE_API_REMOVE}`,\n removedModel\n );\n return response;\n};\n\nexport const getThemeTemplateById = async (id: string) => {\n return await apiClient.getHttp(\n `${THEME_TEMPLATE_API}/${id}`\n );\n};\n\nexport const getThemeTemplateList = async () => {\n return await apiClient.getHttp(`${THEME_TEMPLATE_API}`);\n};\n\nexport const addThemeTemplate = async (model: ThemeTemplateModel) => {\n const response = await apiClient.postHttp(\n `${THEME_TEMPLATE_API}`,\n model\n );\n return response;\n};\n\nexport const updateThemeTemplate = async (model: ThemeTemplateModel) => {\n const response = await apiClient.putHttp(`${THEME_TEMPLATE_API}`, model);\n return response;\n};\n","export const IMAGES_FOLDER_ID = \"1Ezwq60I36GyHJv02pgK2TmFi5O3Yxc63\";\n","import { CloudUploadOutlined, PlusOutlined } from \"@ant-design/icons\";\nimport { nanoid } from \"@reduxjs/toolkit\";\nimport { Button, message, Modal, Upload } from \"antd\";\nimport { RcFile } from \"antd/es/upload/interface\";\nimport React, { useEffect, useState } from \"react\";\nimport { shallowEqual } from \"react-redux\";\nimport { FILE_API, UPLOAD_FILE_API } from \"shared/constants/api-endpoint\";\nimport { IMAGES_FOLDER_ID } from \"shared/constants/google-drive\";\nimport { apiClient } from \"shared/plugins/http-service\";\nimport {\n redirectFileLocalUrl,\n redirectFileUrl,\n} from \"shared/plugins/string-helper\";\n\ninterface UploadFileProps {\n isUploadImage?: boolean;\n maxFileSize?: number; //MB\n album: string[];\n multiple?: boolean;\n maxFileCount?: number;\n folderId?: string;\n isUploadModal?: boolean,\n onChange: (newFileList: string[]) => void;\n}\nexport function UploadFile(props: UploadFileProps) {\n const {\n album,\n isUploadImage,\n maxFileSize,\n multiple,\n maxFileCount,\n folderId,\n onChange,\n } = props;\n\n const [fileList, setFileList] = useState([]);\n\n const beforeUpload = (file: RcFile) => {\n if (isUploadImage) {\n const isJpgOrPng =\n file.type === \"image/jpeg\" || file.type === \"image/png\";\n if (!isJpgOrPng) {\n message.error(\"You can only upload JPG/PNG file\");\n return false;\n }\n }\n if (maxFileSize) {\n const isLt2M = file.size / 1024 / 1024 < maxFileSize;\n if (!isLt2M) {\n message.error(\"Image size must be less than 2MB\");\n return false;\n }\n }\n\n return true;\n };\n\n useEffect(() => {\n if (album) {\n setFileList(\n album.map((m, index) => ({\n uid: index,\n name: m,\n status: \"done\",\n url: redirectFileUrl(m),\n response: redirectFileUrl(m),\n }))\n );\n }\n }, [album]);\n\n return (\n {\n const formData = new FormData();\n formData.append(\"uploadedFiles\", file);\n\n formData.append(\"folderId\", folderId ?? IMAGES_FOLDER_ID);\n\n apiClient\n .postHttp(`${FILE_API}`, formData, {\n headers: {\n \"content-type\": \"multipart/form-data\",\n },\n })\n .then((result) => {\n onSuccess && onSuccess(result.data[0], result.request);\n });\n }}\n beforeUpload={beforeUpload}\n multiple={multiple}\n listType=\"picture-card\"\n onRemove={(file) => {\n onChange(\n fileList\n .filter((m) => m.response !== file.response)\n .map((m) => m.response)\n );\n }}\n fileList={fileList}\n onChange={({ fileList }) => {\n setFileList(fileList.filter((m) => !!m.status));\n if (\n fileList.length === fileList.filter((m) => m.status === \"done\").length\n ) {\n onChange(fileList.map((m) => m.response));\n }\n }}\n >\n {(fileList.length === 0 ||\n !maxFileCount ||\n (maxFileCount && fileList.length < maxFileCount)) && (\n
\n \n
Upload
\n
\n )}\n \n );\n}\ninterface IPreviewImage {\n previewVisible: boolean;\n previewImage: string\n}\nexport const UploadFileLocal = (props: UploadFileProps) => {\n const {\n album,\n isUploadImage,\n maxFileSize,\n multiple,\n maxFileCount,\n isUploadModal,\n folderId,\n onChange,\n } = props;\n\n const [fileList, setFileList] = useState([]);\n const [uploadModal, setUpLoadModal] = useState(false);\n const [previewModal, setPreviewModal] = useState({} as IPreviewImage);\n const handlePreview = async (file: any) => {\n setPreviewModal({ ...previewModal, previewVisible: true, previewImage: file.url });\n };\n const beforeUpload = (file: RcFile) => {\n if (isUploadImage) {\n const isJpgOrPng =\n file.type === \"image/jpeg\" || file.type === \"image/png\";\n if (!isJpgOrPng) {\n message.error(\"You can only upload JPG/PNG file\");\n return false;\n }\n }\n if (maxFileSize) {\n const isLt2M = file.size / 1024 / 1024 < maxFileSize;\n if (!isLt2M) {\n message.error(\"Image size must be less than 2MB\");\n return false;\n }\n }\n\n return true;\n };\n const onUpdateFileList = () =>{\n let temp = album.map((m, index) => {\n let file = fileList.filter(f => f.response === m);\n return {\n uid: file.length > 0 ? file[0].uid : nanoid(),\n name: m,\n status: \"done\",\n url: redirectFileLocalUrl(m),\n response: m,\n }\n });\n setFileList(temp);\n }\n useEffect(() => {\n onUpdateFileList();\n }, [album]);\n\n return (\n <>\n {isUploadModal ? (<>\n \n {\n setUpLoadModal(false);\n }}\n okText={\"Save\"}\n cancelText={\"Close\"}\n onOk={() => {\n let temp = [...fileList];\n if (\n temp.length === temp.filter((m) => m.status === \"done\").length\n ) {\n onChange(temp.map((m) => m.response));\n }\n setUpLoadModal(false);\n }}\n >\n {\n const formData = new FormData();\n formData.append(\"uploadedFiles\", file);\n formData.append(\"folderId\", folderId ?? IMAGES_FOLDER_ID);\n apiClient\n .postHttp(`${UPLOAD_FILE_API}`, formData, {\n headers: {\n \"content-type\": \"multipart/form-data\",\n },\n })\n .then((result) => {\n onSuccess && onSuccess(result.data[0], result.request);\n });\n }}\n beforeUpload={beforeUpload}\n multiple={multiple}\n onPreview={handlePreview}\n maxCount={maxFileCount}\n listType=\"picture-card\"\n onRemove={(file) => {\n setFileList(fileList.filter((m) => m.response !== file.response));\n }}\n fileList={fileList}\n onChange={({ fileList }) => {\n let fileListTemp = [...fileList];\n setFileList(fileListTemp.filter((m) => !!m.status));\n }}\n >\n
\n \n
Upload
\n
\n \n \n ) : ( {\n const formData = new FormData();\n formData.append(\"uploadedFiles\", file);\n formData.append(\"folderId\", folderId ?? IMAGES_FOLDER_ID);\n apiClient\n .postHttp(`${UPLOAD_FILE_API}`, formData, {\n headers: {\n \"content-type\": \"multipart/form-data\",\n },\n })\n .then((result) => {\n onSuccess && onSuccess(result.data[0], result.request);\n });\n }}\n beforeUpload={beforeUpload}\n multiple={multiple}\n onPreview={handlePreview}\n maxCount={maxFileCount}\n listType=\"picture-card\"\n onRemove={(file) => {\n onChange(\n fileList\n .filter((m) => m.response !== file.response)\n .map((m) => m.response)\n );\n }}\n fileList={fileList}\n onChange={({ fileList }) => {\n let fileListTemp = [...fileList];\n setFileList(fileListTemp.filter((m) => !!m.status));\n if (\n fileListTemp.length === fileListTemp.filter((m) => m.status === \"done\").length\n ) {\n onChange(fileListTemp.map((m) => m.response));\n }\n }}\n >\n
\n \n
Upload
\n
\n )}\n {\n setPreviewModal({ ...previewModal, previewVisible: false });\n }}\n >\n \"example\"\n \n \n );\n};\n","import { UploadFileLocal } from \"shared/components/upload-file/upload-file\";\nimport { ThemeTemplateItem } from \"states/theme-template/theme-template.models\";\n\nexport interface IThemeSettingImageProps {\n model: any;\n template: ThemeTemplateItem;\n onChange: (changedModel: any) => void;\n}\n\nexport function ThemeSettingImage(props: IThemeSettingImageProps) {\n const { model, template, onChange } = props;\n return (\n
\n
\n {template.name}\n
\n {\n onChange({...model,src: newFileList[0]});\n }}\n />\n
\n );\n}\n","import { UploadFileLocal } from \"shared/components/upload-file/upload-file\";\nimport { ThemeTemplateItem } from \"states/theme-template/theme-template.models\";\n\nexport interface IThemeSettingImageListProps {\n model: any;\n template: ThemeTemplateItem;\n onChange: (changedModel: any) => void;\n}\n\nexport function ThemeSettingImageList(props: IThemeSettingImageListProps) {\n const { model, template, onChange } = props;\n return (\n
\n
\n {template.name}\n
\n {\n onChange([...newFileList]);\n }}\n />\n
\n );\n}\n","import { Button } from \"antd\";\nimport { useDispatch } from \"react-redux\";\nimport { setMceModal } from \"states/global-value/global-value.slice\";\nimport { ThemeTemplateItem } from \"states/theme-template/theme-template.models\";\n\nexport interface IThemeSettingTextHtmlProps {\n model: any;\n template: ThemeTemplateItem;\n onChange: (changedModel: any) => void;\n}\n\nexport function ThemeSettingTextHtml(props: IThemeSettingTextHtmlProps) {\n const dispatch = useDispatch();\n const { model, template, onChange } = props;\n\n return (\n
\n
\n {template.name}\n
\n {/*
*/}\n {\n dispatch(\n setMceModal({\n show: true,\n value: model?.value ?? \"\",\n onChange: (value) => {\n onChange({ ...model, value: value });\n },\n })\n );\n }}\n type=\"primary\"\n >\n Update content\n \n
\n );\n}\n","import { Input } from \"antd\";\nimport { ThemeTemplateItem } from \"states/theme-template/theme-template.models\";\n\nexport interface IThemeSettingTextLinkProps {\n model: any;\n template: ThemeTemplateItem;\n onChange: (changedModel: any) => void;\n}\n\nexport function ThemeSettingTextLink(props: IThemeSettingTextLinkProps) {\n const { model, template, onChange } = props;\n return (\n
\n
\n {template.name}\n
\n
\n {\n onChange({ ...model, text: e.target.value });\n }}\n />\n
\n
\n {\n onChange({ ...model, link: e.target.value });\n }}\n />\n
\n
\n );\n}\n","import TextArea from \"antd/lib/input/TextArea\";\nimport { ContentText } from \"shared/constants/define-localization\";\nimport { CoreResource, t } from \"shared/plugins/localization\";\nimport { ThemeTemplateItem } from \"states/theme-template/theme-template.models\";\n\nexport interface IThemeSettingTextNormalProps {\n model: any;\n template: ThemeTemplateItem;\n onChange: (changedModel: any) => void;\n}\n\nexport function ThemeSettingTextNormal(props: IThemeSettingTextNormalProps) {\n const { model, template, onChange } = props;\n return (\n
\n
\n {template.name}\n
\n {\n ev.preventDefault();\n onChange({ ...model, value: ev.target.value });\n }}\n />\n
\n );\n}\n","import { DeleteOutlined, SortAscendingOutlined } from \"@ant-design/icons\";\nimport {\n Button,\n Checkbox,\n Col,\n Collapse,\n Divider,\n Popconfirm,\n Row,\n Select,\n Space,\n} from \"antd\";\nimport { ReactNode, useEffect } from \"react\";\nimport {\n Cancel,\n Delete,\n QuestionRemove,\n} from \"shared/constants/define-localization\";\nimport { CoreResource, t } from \"shared/plugins/localization\";\nimport { ThemeSettingModel } from \"states/theme-setting/theme-setting.models\";\nimport { setValueFromTemplate } from \"states/theme-setting/theme-setting.services\";\nimport {\n ThemeTemplateItem,\n ThemeType,\n} from \"states/theme-template/theme-template.models\";\nimport { ThemeSettingImage } from \"./theme-setting-image\";\nimport { ThemeSettingImageList } from \"./theme-setting-image-list\";\nimport { ThemeSettingTextHtml } from \"./theme-setting-text-html\";\nimport { ThemeSettingTextLink } from \"./theme-setting-text-link\";\nimport { ThemeSettingTextNormal } from \"./theme-setting-text-normal\";\n\nexport interface IThemeSettingGroupProps {\n itemKey: string;\n model: any;\n template: ThemeTemplateItem;\n customHeader?: string;\n onChange: (changedModel: any) => void;\n onDelete?: () => void;\n themeSettingList?: ThemeSettingModel[];\n themeSettingId?: string;\n onChangeThemeSettingId?: (themeSettingId?: string) => void;\n className?: string;\n}\n\nexport function ThemeSettingGroup(props: IThemeSettingGroupProps) {\n const {\n itemKey,\n model,\n onChange,\n template,\n customHeader,\n onDelete,\n themeSettingList,\n themeSettingId,\n onChangeThemeSettingId,\n className,\n } = props;\n\n const renderThemeTemplateItems = () => {\n const listItem: ReactNode[] = [];\n\n for (let propName in template.value) {\n let themeItem: ReactNode;\n\n switch (template.value[propName].type as ThemeType) {\n case ThemeType.Group:\n case ThemeType.GroupList: {\n themeItem = (\n <>\n {\n model[propName] = changedItem;\n onChange(model);\n }}\n template={template.value[propName]}\n />\n \n \n );\n break;\n }\n case ThemeType.Image: {\n themeItem = (\n <>\n {\n model[propName] = changedItem;\n onChange(model);\n }}\n template={template.value[propName]}\n />\n \n \n );\n break;\n }\n case ThemeType.ImageList: {\n themeItem = (\n <>\n {\n model[propName] = changedItem;\n onChange(model);\n }}\n template={template.value[propName]}\n />\n \n \n );\n break;\n }\n case ThemeType.TextNormal: {\n themeItem = (\n <>\n {\n model[propName] = changedItem;\n onChange(model);\n }}\n template={template.value[propName]}\n />\n \n \n );\n break;\n }\n case ThemeType.TextHtml: {\n themeItem = (\n <>\n {\n model[propName] = changedItem;\n onChange(model);\n }}\n template={template.value[propName]}\n />\n \n \n );\n break;\n }\n case ThemeType.TextLink: {\n themeItem = (\n <>\n {\n model[propName] = changedItem;\n onChange(model);\n }}\n template={template.value[propName]}\n />\n \n \n );\n break;\n }\n }\n if (themeItem) {\n listItem.push(themeItem);\n }\n }\n return listItem;\n };\n\n const _handleAddGroup = () => {\n const modelValue = setValueFromTemplate({\n name: model.name,\n type: ThemeType.Group,\n value: template.value,\n });\n model.push(modelValue);\n onChange(model);\n };\n\n return (\n \n \n {customHeader ? customHeader : template.name}\n {onDelete && (\n {\n onDelete && onDelete();\n }}\n title={\"Bạn có muốn xóa không ?\"}\n okText=\"Đồng ý\"\n cancelText={\"Hủy\"}\n >\n {\n e.stopPropagation();\n }}\n type=\"text\"\n danger\n icon={}\n >\n \n )}\n \n }\n >\n {themeSettingList && onChangeThemeSettingId && (\n \n \n {\n onChangeThemeSettingId(value);\n }}\n >\n {themeSettingList.map((theme) => (\n \n {theme.name}\n \n ))}\n \n \n \n {\n if (e.target.checked) {\n onChangeThemeSettingId();\n }\n }}\n checked={!themeSettingId}\n >\n Customize\n \n \n \n )}\n {template.type === ThemeType.GroupList && (\n \n \n \n )}\n
\n {template.type === ThemeType.GroupList\n ? model.map((groupItem: ThemeTemplateItem, index: number) => (\n <>\n {\n groupItem = changedItem;\n onChange(model);\n }}\n customHeader={(index + 1).toString()}\n template={{ ...template, type: ThemeType.Group }}\n onDelete={() => {\n model.splice(index, 1);\n onChange(model);\n }}\n />\n \n \n ))\n : !themeSettingId\n ? renderThemeTemplateItems()\n : null}\n
\n \n
\n );\n}\n","import { Button, Col, message, Row, Select } from \"antd\";\nimport { ReactNode, useEffect, useState } from \"react\";\nimport { getThemeSettingListApi } from \"states/theme-setting/theme-setting.api\";\nimport {\n CustomThemeModel,\n ThemeSettingModel,\n} from \"states/theme-setting/theme-setting.models\";\nimport {\n convertToThemeTemplateItem,\n setValueFromTemplate,\n} from \"states/theme-setting/theme-setting.services\";\nimport { getThemeTemplateList } from \"states/theme-template/theme-template.api\";\nimport { ThemeTemplateModel } from \"states/theme-template/theme-template.models\";\nimport { ThemeSettingGroup } from \"./theme-setting-group\";\n\nexport interface ICustomThemeProps {\n model: any;\n onChange: (changedModel: any) => void;\n}\n\nexport function CustomTheme(props: ICustomThemeProps) {\n const { model, onChange } = props;\n const [themeTemplateList, setThemeTemplateList] = useState<\n ThemeTemplateModel[]\n >([]);\n const [themeSettingList, setThemeSettingList] = useState(\n []\n );\n const [currentTemplate, setCurrentTemplate] = useState();\n\n const _handleChangeTemplate = (value: string) => {\n const template = themeTemplateList.find((m) => m.id === value);\n if (!template) return;\n setCurrentTemplate({ ...template });\n };\n\n const _handleAddTemplate = () => {\n if (!currentTemplate) {\n message.error(\"Please select tempalte\");\n return;\n }\n if (model[currentTemplate.slug]) {\n message.error(\"Element already exists\");\n return;\n }\n\n const templateItem = convertToThemeTemplateItem(currentTemplate);\n model[currentTemplate.slug] = {\n themeId: undefined,\n customValue: setValueFromTemplate(templateItem),\n templateId: currentTemplate.id,\n } as CustomThemeModel;\n onChange(model);\n };\n\n const _handleRenderCustomTheme = () => {\n const nodeList: ReactNode[] = [];\n for (let propName in model) {\n const template = themeTemplateList.find(\n (m) => m.id === model[propName].templateId\n );\n if (!template) {\n continue;\n }\n nodeList.push(\n setting.themeTemplateId === template.id\n )}\n itemKey={template.slug}\n model={model[propName].customValue}\n onChange={(changedModel) => {\n model[propName].customValue = changedModel;\n onChange(model);\n }}\n onChangeThemeSettingId={(themeId) => {\n model[propName].themeId = themeId;\n onChange(model);\n }}\n themeSettingId={model[propName].themeId}\n className=\"mb-4\"\n onDelete={() => {\n delete model[propName];\n onChange(model);\n }}\n >\n );\n }\n return nodeList;\n };\n\n useEffect(() => {\n getThemeTemplateList().then((res) => {\n setThemeTemplateList(res.data);\n });\n\n getThemeSettingListApi().then((res) => {\n setThemeSettingList(res.data);\n });\n }, []);\n\n return themeTemplateList.length > 0 ? (\n \n \n \n option.children.toLowerCase().indexOf(input.toLowerCase()) >= 0\n }\n >\n {themeTemplateList.map((template) => (\n \n {template.name}\n \n ))}\n \n \n \n \n \n {_handleRenderCustomTheme()}\n \n ) : null;\n}\n","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgBox(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"Layer_1\",\n \"data-name\": \"Layer 1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 511 423.05\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M51,576c5-13.84,14.84-20.34,29.59-19.43,3.49.21,7,0,10.5,0,2.53,0,3.68-1.1,3.57-3.62-.06-1.5,0-3,0-4.5q0-73.25,0-146.48c0-19.36,11.7-31.08,31.12-31.13,19.67-.05,39.33-.13,59,.07,4.58.05,6-1.35,6-6-.15-49.66.28-99.32-.29-149-.2-17,13-30.73,30.74-30.54,53.33.58,106.66.2,160,.21,18.6,0,30.13,11.6,30.15,30.27q0,29.51,0,59a27.53,27.53,0,0,1-.18,5,7.37,7.37,0,0,1-7.11,6.56c-4,.37-6.76-1.49-8.18-5.18a20.53,20.53,0,0,1-.86-7.41c0-19.16,0-38.33,0-57.49,0-10.69-3.75-14.36-14.51-14.42-9.16-.06-18.33.18-27.49-.09-4.66-.14-6.18,1.65-6,6.14.28,6,.13,12,.05,18-.18,13.45-7.08,20.35-20.35,20.38q-27,0-54,0c-13.6,0-20-6.58-20.05-20.36,0-6.16-.24-12.34.08-18.49.23-4.51-1.6-5.77-5.84-5.66-8.83.23-17.67,0-26.5.1-9.45.11-13.4,4-13.44,13.44-.1,21.83,0,43.66-.05,65.49,0,27.83.11,55.67-.09,83.5,0,5,1.56,6.59,6.59,6.55,23.33-.23,46.66,0,70-.13,8.09,0,15.57,1.58,21.9,6.88,1.58,1.32,2.69,1.36,4.29,0,6.31-5.31,13.8-6.93,21.89-6.89,19.16.09,38.33-.08,57.49.11,4.51,0,6.18-1.33,6.11-6-.21-15.16-.09-30.33,0-45.5a33.89,33.89,0,0,1,.5-6.45c.89-4.47,4.48-7.28,8.43-6.89,4.21.42,7.17,3.47,7.28,8.12.18,7.66.07,15.33.08,23,0,9.34.2,18.67-.09,28-.14,4.43,1.39,5.73,5.73,5.7q36.75-.26,73.49,0c14.83.07,25.94,8.82,29.22,22.53a37.85,37.85,0,0,1,.61,8.94q0,73.5,0,147c0,7.23,0,7.24,7.46,7.24,1.83,0,3.67.12,5.5,0,13.27-1,22.91,4.38,28.73,16.42v19c-5.86,12-15.47,16.5-28.74,16.49q-226.32-.33-452.65,0c-14.76,0-24.54-5.71-29.61-19.49Zm255.65,16.06h225c2.17,0,4.34.06,6.5-.12,5.22-.42,8.43-3.55,8.81-8.45.42-5.32-2.16-9-7.28-10.42-2.78-.8-5.61-.65-8.44-.66h-308a61.21,61.21,0,0,1-6.5-.13,7.57,7.57,0,0,1-7-9.11c.66-4.37,3.73-6.53,9.66-6.54q36.5,0,73,0c6.6,0,6.63,0,6.64-6.73q0-51.74,0-103.48c0-15.33.08-30.66-.06-46-.07-8-4.55-12.89-12-13-10.5-.2-21,0-31.5-.11-3.27,0-4.42,1.32-4.37,4.47.1,7.16.19,14.34,0,21.5-.37,11.77-7.69,18.94-19.36,19q-28.25.14-56.49,0c-11.11-.07-18.38-7.51-18.51-18.64-.08-7-.23-14,.06-21,.17-4.25-1.47-5.48-5.51-5.35-8,.24-16,.06-24,.07-12.66,0-16.26,3.62-16.27,16.4q0,72.74,0,145.47c0,1,.06,2,0,3-.19,3.15,1.14,4.62,4.4,4.46,3-.14,6,0,9,0,19.33,0,38.66,0,58,.06,5.13,0,8.61,3.38,8.63,7.8s-3.45,7.66-8.54,7.9c-1.66.08-3.33,0-5,0H82a26.48,26.48,0,0,0-7.93.74c-5,1.53-7.5,5.3-7,10.64.49,4.68,3.59,7.7,8.59,8.13,2.31.2,4.66.14,7,.14ZM409.4,556.6c29.66,0,59.32-.06,89,.07,4,0,5.62-1.06,5.61-5.32-.11-50.32-.05-100.64-.11-151,0-8.39-4.69-13-13-13.07-9.83-.1-19.66.14-29.49-.11-4.26-.11-5.41,1.59-5.42,5.58,0,8,.76,16-.5,23.95-1.46,9.2-8.17,15.33-17.48,15.42-19.66.19-39.32.23-59,0-10-.12-17.14-7.68-17.29-17.65-.11-7-.29-14,.05-21,.22-4.68-1.09-6.55-6.08-6.32-8,.39-16,.1-24,.11-11.93,0-16.29,4.33-16.29,16.24,0,49,.05,98-.11,147,0,4.8,1.34,6.25,6.18,6.21C350.75,556.5,380.08,556.6,409.4,556.6ZM409,387.29c-9,0-18,.1-26.94-.05-3.42-.06-4.8,1.1-4.69,4.61.19,6.31.14,12.64,0,18.95-.06,3.6,1.43,5,5.06,5q26.19-.13,52.39,0c3.74,0,4.95-1.55,4.86-5.11-.17-6.15-.27-12.32,0-18.46.2-4.14-1.56-5.11-5.3-5C426,387.42,417.48,387.29,409,387.29Zm-204.59,0c-8.83,0-17.66.09-26.49,0-3.29-.05-5,.91-4.87,4.51.16,6.49.15,13,0,19.49-.07,3.55,1.54,4.59,4.86,4.57q26-.13,52,0c3.77,0,5-1.59,4.86-5.14-.16-6.16-.19-12.33,0-18.49.12-3.64-1.11-5.06-4.86-5C221.41,387.43,212.91,387.29,204.41,387.29ZM300,202c-8.66,0-17.31.09-26,0-3.57,0-5.17,1.29-5.08,5,.15,6.49.07,13,.06,19.48,0,2.87,1.29,4.24,4.24,4.24q26.46-.06,52.93,0c3.11,0,4.55-1.33,4.5-4.52-.09-6.33-.2-12.66,0-19,.16-4-1.44-5.28-5.26-5.2C317,202.07,308.52,202,300,202Z\",\n transform: \"translate(-51 -185.44)\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgBox);\nexport default __webpack_public_path__ + \"static/media/box.4fd5bba4.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgLocation(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"Layer_1\",\n \"data-name\": \"Layer 1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 25 25\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n id: \"Location_Pin\",\n \"data-name\": \"Location Pin\",\n d: \"M12.5,0A9.24,9.24,0,0,0,3,9.41c0,7.88,8.8,15.17,9.17,15.47a.5.5,0,0,0,.65,0C13.21,24.53,22,16.51,22,9.41A9.24,9.24,0,0,0,12.5,0Zm0,14A4.5,4.5,0,1,1,17,9.5,4.5,4.5,0,0,1,12.5,14Z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgLocation);\nexport default __webpack_public_path__ + \"static/media/location.6563ddf8.svg\";\nexport { ForwardRef as ReactComponent };","var _g, _g2, _g3, _g4, _g5, _g6, _g7, _g8, _g9, _g10, _g11, _g12, _g13, _g14, _g15;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgVi(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"Layer_1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n x: \"0px\",\n y: \"0px\",\n viewBox: \"0 0 512 512\",\n style: {\n enableBackground: \"new 0 0 512 512\"\n },\n xmlSpace: \"preserve\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"rect\", {\n style: {\n fill: \"#FF4B55\"\n },\n width: 512,\n height: 512\n }), /*#__PURE__*/React.createElement(\"path\", {\n style: {\n fill: \"#FFE15A\"\n },\n d: \"M260.565,146.63l26.164,78.449l82.695,0.641c4.624,0.036,6.541,5.937,2.822,8.684l-66.525,49.125 l24.944,78.845c1.395,4.409-3.625,8.056-7.387,5.367L256,319.654l-67.278,48.088c-3.762,2.689-8.782-0.958-7.387-5.367 l24.944-78.845l-66.525-49.125c-3.72-2.747-1.802-8.648,2.822-8.684l82.695-0.641l26.164-78.449 C252.898,142.243,259.102,142.243,260.565,146.63z\"\n }), _g || (_g = /*#__PURE__*/React.createElement(\"g\", null)), _g2 || (_g2 = /*#__PURE__*/React.createElement(\"g\", null)), _g3 || (_g3 = /*#__PURE__*/React.createElement(\"g\", null)), _g4 || (_g4 = /*#__PURE__*/React.createElement(\"g\", null)), _g5 || (_g5 = /*#__PURE__*/React.createElement(\"g\", null)), _g6 || (_g6 = /*#__PURE__*/React.createElement(\"g\", null)), _g7 || (_g7 = /*#__PURE__*/React.createElement(\"g\", null)), _g8 || (_g8 = /*#__PURE__*/React.createElement(\"g\", null)), _g9 || (_g9 = /*#__PURE__*/React.createElement(\"g\", null)), _g10 || (_g10 = /*#__PURE__*/React.createElement(\"g\", null)), _g11 || (_g11 = /*#__PURE__*/React.createElement(\"g\", null)), _g12 || (_g12 = /*#__PURE__*/React.createElement(\"g\", null)), _g13 || (_g13 = /*#__PURE__*/React.createElement(\"g\", null)), _g14 || (_g14 = /*#__PURE__*/React.createElement(\"g\", null)), _g15 || (_g15 = /*#__PURE__*/React.createElement(\"g\", null)));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgVi);\nexport default __webpack_public_path__ + \"static/media/vi.e67280c9.svg\";\nexport { ForwardRef as ReactComponent };","var _g, _g2, _g3, _g4, _g5, _g6, _g7, _g8, _g9, _g10, _g11, _g12, _g13, _g14, _g15;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgUs(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"Layer_1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n x: \"0px\",\n y: \"0px\",\n viewBox: \"0 0 512 512\",\n style: {\n enableBackground: \"new 0 0 512 512\"\n },\n xmlSpace: \"preserve\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"rect\", {\n y: 0.235,\n style: {\n fill: \"#F5F5F5\"\n },\n width: 511.53,\n height: 511.53\n }), /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"rect\", {\n y: 0.235,\n style: {\n fill: \"#FF4B55\"\n },\n width: 512,\n height: 39.34\n }), /*#__PURE__*/React.createElement(\"rect\", {\n y: 157.63,\n style: {\n fill: \"#FF4B55\"\n },\n width: 512,\n height: 39.34\n }), /*#__PURE__*/React.createElement(\"rect\", {\n y: 78.935,\n style: {\n fill: \"#FF4B55\"\n },\n width: 512,\n height: 39.34\n }), /*#__PURE__*/React.createElement(\"rect\", {\n y: 236.32,\n style: {\n fill: \"#FF4B55\"\n },\n width: 512,\n height: 39.34\n }), /*#__PURE__*/React.createElement(\"rect\", {\n y: 393.71,\n style: {\n fill: \"#FF4B55\"\n },\n width: 512,\n height: 39.34\n }), /*#__PURE__*/React.createElement(\"rect\", {\n y: 472.41,\n style: {\n fill: \"#FF4B55\"\n },\n width: 512,\n height: 39.34\n }), /*#__PURE__*/React.createElement(\"rect\", {\n y: 315.02,\n style: {\n fill: \"#FF4B55\"\n },\n width: 512,\n height: 39.34\n })), /*#__PURE__*/React.createElement(\"rect\", {\n y: 0.235,\n style: {\n fill: \"#41479B\"\n },\n width: 275.44,\n height: 275.44\n }), /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", {\n style: {\n fill: \"#F5F5F5\"\n },\n d: \"M35.219,20.814l2.122,6.364l6.708,0.052c0.868,0.007,1.229,1.115,0.53,1.631l-5.396,3.985 l2.023,6.396c0.262,0.828-0.68,1.513-1.388,1.008l-5.458-3.901l-5.458,3.901c-0.706,0.506-1.649-0.18-1.388-1.008l2.023-6.396 l-5.396-3.985c-0.698-0.516-0.339-1.624,0.53-1.631l6.708-0.052l2.122-6.364C33.779,19.99,34.945,19.99,35.219,20.814z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n style: {\n fill: \"#F5F5F5\"\n },\n d: \"M35.219,73.902l2.122,6.364l6.708,0.052c0.868,0.007,1.229,1.115,0.53,1.631l-5.396,3.985 l2.023,6.396c0.262,0.828-0.68,1.513-1.388,1.008l-5.458-3.901l-5.458,3.901c-0.706,0.506-1.649-0.18-1.388-1.008l2.023-6.396 l-5.396-3.985c-0.698-0.516-0.339-1.624,0.53-1.631l6.708-0.052l2.122-6.364C33.779,73.077,34.945,73.077,35.219,73.902z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n style: {\n fill: \"#F5F5F5\"\n },\n d: \"M35.219,132.78l2.122,6.364l6.708,0.052c0.868,0.007,1.229,1.115,0.53,1.632l-5.396,3.985 l2.023,6.396c0.262,0.828-0.68,1.513-1.388,1.008l-5.458-3.901l-5.458,3.901c-0.706,0.506-1.649-0.18-1.388-1.008l2.023-6.396 l-5.396-3.985c-0.698-0.516-0.339-1.625,0.53-1.632l6.708-0.052l2.122-6.364C33.779,131.956,34.945,131.956,35.219,132.78z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n style: {\n fill: \"#F5F5F5\"\n },\n d: \"M35.219,186.876l2.122,6.364l6.708,0.052c0.868,0.007,1.229,1.115,0.53,1.631l-5.396,3.985 l2.023,6.396c0.262,0.828-0.68,1.513-1.388,1.008l-5.458-3.901l-5.458,3.901c-0.706,0.506-1.649-0.18-1.388-1.008l2.023-6.396 l-5.396-3.985c-0.698-0.516-0.339-1.624,0.53-1.631l6.708-0.052l2.122-6.364C33.779,186.052,34.945,186.052,35.219,186.876z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n style: {\n fill: \"#F5F5F5\"\n },\n d: \"M35.219,236.102l2.122,6.364l6.708,0.052c0.868,0.007,1.229,1.115,0.53,1.631l-5.396,3.985 l2.023,6.396c0.262,0.828-0.68,1.513-1.388,1.008l-5.458-3.901l-5.458,3.901c-0.706,0.506-1.649-0.18-1.388-1.008l2.023-6.396 l-5.396-3.985c-0.698-0.516-0.339-1.625,0.53-1.631l6.708-0.052l2.122-6.364C33.779,235.278,34.945,235.278,35.219,236.102z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n style: {\n fill: \"#F5F5F5\"\n },\n d: \"M61.058,45.953l2.122,6.364l6.708,0.052c0.868,0.007,1.229,1.115,0.53,1.631l-5.396,3.985 l2.023,6.396c0.262,0.828-0.68,1.513-1.388,1.008l-5.458-3.901l-5.458,3.901c-0.706,0.506-1.649-0.18-1.388-1.008l2.023-6.396 L49.98,54c-0.698-0.516-0.339-1.624,0.53-1.631l6.708-0.052l2.122-6.364C59.618,45.129,60.784,45.129,61.058,45.953z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n style: {\n fill: \"#F5F5F5\"\n },\n d: \"M61.058,104.832l2.122,6.364l6.708,0.052c0.868,0.007,1.229,1.115,0.53,1.631l-5.396,3.985 l2.023,6.396c0.262,0.828-0.68,1.513-1.388,1.008l-5.458-3.901l-5.458,3.901c-0.706,0.506-1.649-0.18-1.388-1.008l2.023-6.396 l-5.396-3.985c-0.698-0.516-0.339-1.624,0.53-1.631l6.708-0.052l2.122-6.364C59.618,104.008,60.784,104.008,61.058,104.832z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n style: {\n fill: \"#F5F5F5\"\n },\n d: \"M61.058,160.771l2.122,6.364l6.708,0.052c0.868,0.007,1.229,1.115,0.53,1.631l-5.396,3.985 l2.023,6.396c0.262,0.828-0.68,1.513-1.388,1.008l-5.458-3.901l-5.458,3.901c-0.706,0.506-1.649-0.18-1.388-1.008l2.023-6.396 l-5.396-3.985c-0.698-0.516-0.339-1.624,0.53-1.631l6.708-0.052l2.122-6.364C59.618,159.948,60.784,159.948,61.058,160.771z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n style: {\n fill: \"#F5F5F5\"\n },\n d: \"M61.058,211.007l2.122,6.364l6.708,0.052c0.868,0.007,1.229,1.115,0.53,1.631l-5.396,3.985 l2.023,6.396c0.262,0.828-0.68,1.513-1.388,1.008l-5.458-3.901l-5.458,3.901c-0.706,0.506-1.649-0.18-1.388-1.008l2.023-6.396 l-5.396-3.985c-0.698-0.516-0.339-1.624,0.53-1.631l6.708-0.052l2.122-6.364C59.618,210.182,60.784,210.182,61.058,211.007z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n style: {\n fill: \"#F5F5F5\"\n },\n d: \"M86.898,20.814l2.122,6.364l6.708,0.052c0.868,0.007,1.229,1.115,0.53,1.631l-5.396,3.985 l2.023,6.396c0.262,0.828-0.68,1.513-1.388,1.008l-5.458-3.901l-5.458,3.901c-0.706,0.506-1.649-0.18-1.388-1.008l2.023-6.396 l-5.396-3.985c-0.698-0.516-0.339-1.624,0.53-1.631l6.708-0.052l2.122-6.364C85.458,19.99,86.623,19.99,86.898,20.814z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n style: {\n fill: \"#F5F5F5\"\n },\n d: \"M86.898,73.902l2.122,6.364l6.708,0.052c0.868,0.007,1.229,1.115,0.53,1.631l-5.396,3.985 l2.023,6.396c0.262,0.828-0.68,1.513-1.388,1.008l-5.458-3.901l-5.458,3.901c-0.706,0.506-1.649-0.18-1.388-1.008l2.023-6.396 l-5.396-3.985c-0.698-0.516-0.339-1.624,0.53-1.631l6.708-0.052l2.122-6.364C85.458,73.077,86.623,73.077,86.898,73.902z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n style: {\n fill: \"#F5F5F5\"\n },\n d: \"M86.898,132.78l2.122,6.364l6.708,0.052c0.868,0.007,1.229,1.115,0.53,1.632l-5.396,3.985 l2.023,6.396c0.262,0.828-0.68,1.513-1.388,1.008l-5.458-3.901l-5.458,3.901c-0.706,0.506-1.649-0.18-1.388-1.008l2.023-6.396 l-5.396-3.985c-0.698-0.516-0.339-1.625,0.53-1.632l6.708-0.052l2.122-6.364C85.458,131.956,86.623,131.956,86.898,132.78z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n style: {\n fill: \"#F5F5F5\"\n },\n d: \"M86.898,186.876l2.122,6.364l6.708,0.052c0.868,0.007,1.229,1.115,0.53,1.631l-5.396,3.985 l2.023,6.396c0.262,0.828-0.68,1.513-1.388,1.008l-5.456-3.902l-5.458,3.901c-0.706,0.506-1.649-0.18-1.388-1.008l2.023-6.396 l-5.396-3.985c-0.698-0.516-0.339-1.624,0.53-1.631l6.708-0.052l2.122-6.364C85.458,186.052,86.623,186.052,86.898,186.876z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n style: {\n fill: \"#F5F5F5\"\n },\n d: \"M86.898,236.102l2.122,6.364l6.708,0.052c0.868,0.007,1.229,1.115,0.53,1.631l-5.396,3.985 l2.023,6.396c0.262,0.828-0.68,1.513-1.388,1.008l-5.458-3.901l-5.458,3.901c-0.706,0.506-1.649-0.18-1.388-1.008l2.023-6.396 l-5.396-3.985c-0.698-0.516-0.339-1.625,0.53-1.631l6.708-0.052l2.122-6.364C85.458,235.278,86.623,235.278,86.898,236.102z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n style: {\n fill: \"#F5F5F5\"\n },\n d: \"M112.737,45.953l2.122,6.364l6.708,0.052c0.868,0.007,1.229,1.115,0.53,1.631l-5.396,3.985 l2.023,6.396c0.262,0.828-0.68,1.513-1.388,1.008l-5.458-3.901l-5.458,3.901c-0.706,0.506-1.649-0.18-1.388-1.008l2.023-6.396 L101.659,54c-0.698-0.516-0.339-1.624,0.53-1.631l6.711-0.052l2.122-6.364C111.297,45.129,112.462,45.129,112.737,45.953z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n style: {\n fill: \"#F5F5F5\"\n },\n d: \"M112.737,104.832l2.122,6.364l6.708,0.052c0.868,0.007,1.229,1.115,0.53,1.631l-5.396,3.985 l2.023,6.396c0.262,0.828-0.68,1.513-1.388,1.008l-5.458-3.901l-5.458,3.901c-0.706,0.506-1.649-0.18-1.388-1.008l2.023-6.396 l-5.396-3.985c-0.698-0.516-0.339-1.624,0.53-1.631l6.708-0.052l2.122-6.364C111.297,104.008,112.462,104.008,112.737,104.832z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n style: {\n fill: \"#F5F5F5\"\n },\n d: \"M112.737,160.771l2.122,6.364l6.708,0.052c0.868,0.007,1.229,1.115,0.53,1.631l-5.396,3.985 l2.023,6.396c0.262,0.828-0.68,1.513-1.388,1.008l-5.458-3.901l-5.458,3.901c-0.706,0.506-1.649-0.18-1.388-1.008l2.023-6.396 l-5.396-3.985c-0.698-0.516-0.339-1.624,0.53-1.631l6.708-0.052l2.122-6.364C111.297,159.948,112.462,159.948,112.737,160.771z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n style: {\n fill: \"#F5F5F5\"\n },\n d: \"M112.737,211.007l2.122,6.364l6.708,0.052c0.868,0.007,1.229,1.115,0.53,1.631l-5.396,3.985 l2.023,6.396c0.262,0.828-0.68,1.513-1.388,1.008l-5.458-3.901l-5.458,3.901c-0.706,0.506-1.649-0.18-1.388-1.008l2.023-6.396 l-5.396-3.985c-0.698-0.516-0.339-1.624,0.53-1.631l6.708-0.052l2.122-6.364C111.297,210.182,112.462,210.182,112.737,211.007z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n style: {\n fill: \"#F5F5F5\"\n },\n d: \"M138.576,20.814l2.122,6.364l6.708,0.052c0.868,0.007,1.229,1.115,0.53,1.631l-5.396,3.985 l2.023,6.396c0.262,0.828-0.68,1.513-1.388,1.008l-5.458-3.901l-5.458,3.901c-0.706,0.506-1.649-0.18-1.388-1.008l2.023-6.396 l-5.396-3.985c-0.698-0.516-0.339-1.624,0.53-1.631l6.708-0.052l2.122-6.364C137.136,19.99,138.301,19.99,138.576,20.814z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n style: {\n fill: \"#F5F5F5\"\n },\n d: \"M138.576,73.902l2.122,6.364l6.708,0.052c0.868,0.007,1.229,1.115,0.53,1.631l-5.396,3.985 l2.023,6.396c0.262,0.828-0.68,1.513-1.388,1.008l-5.458-3.901l-5.458,3.901c-0.706,0.506-1.649-0.18-1.388-1.008l2.023-6.396 l-5.396-3.985c-0.698-0.516-0.339-1.624,0.53-1.631l6.708-0.052l2.122-6.364C137.136,73.077,138.301,73.077,138.576,73.902z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n style: {\n fill: \"#F5F5F5\"\n },\n d: \"M138.576,132.78l2.122,6.364l6.708,0.052c0.868,0.007,1.229,1.115,0.53,1.632l-5.396,3.985 l2.023,6.396c0.262,0.828-0.68,1.513-1.388,1.008l-5.458-3.901l-5.458,3.901c-0.706,0.506-1.649-0.18-1.388-1.008l2.023-6.396 l-5.396-3.985c-0.698-0.516-0.339-1.625,0.53-1.632l6.708-0.052l2.122-6.364C137.136,131.956,138.301,131.956,138.576,132.78z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n style: {\n fill: \"#F5F5F5\"\n },\n d: \"M138.576,186.876l2.122,6.364l6.708,0.052c0.868,0.007,1.229,1.115,0.53,1.631l-5.396,3.985 l2.023,6.396c0.262,0.828-0.68,1.513-1.388,1.008l-5.458-3.901l-5.458,3.901c-0.706,0.506-1.649-0.18-1.388-1.008l2.023-6.396 l-5.396-3.985c-0.698-0.516-0.339-1.624,0.53-1.631l6.708-0.052l2.122-6.364C137.136,186.052,138.301,186.052,138.576,186.876z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n style: {\n fill: \"#F5F5F5\"\n },\n d: \"M138.576,236.102l2.122,6.364l6.708,0.052c0.868,0.007,1.229,1.115,0.53,1.631l-5.396,3.985 l2.023,6.396c0.262,0.828-0.68,1.513-1.388,1.008l-5.458-3.901l-5.458,3.901c-0.706,0.506-1.649-0.18-1.388-1.008l2.023-6.396 l-5.396-3.985c-0.698-0.516-0.339-1.625,0.53-1.631l6.708-0.052l2.122-6.364C137.136,235.278,138.301,235.278,138.576,236.102z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n style: {\n fill: \"#F5F5F5\"\n },\n d: \"M164.415,45.953l2.122,6.364l6.708,0.052c0.868,0.007,1.229,1.115,0.53,1.631l-5.396,3.985 l2.023,6.396c0.262,0.828-0.68,1.513-1.388,1.008l-5.458-3.901l-5.458,3.901c-0.706,0.506-1.649-0.18-1.388-1.008l2.023-6.396 L153.337,54c-0.698-0.516-0.339-1.624,0.529-1.631l6.708-0.052l2.122-6.364C162.975,45.129,164.14,45.129,164.415,45.953z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n style: {\n fill: \"#F5F5F5\"\n },\n d: \"M164.415,104.832l2.122,6.364l6.708,0.052c0.868,0.007,1.229,1.115,0.53,1.631l-5.396,3.985 l2.023,6.396c0.262,0.828-0.68,1.513-1.388,1.008l-5.458-3.901l-5.458,3.901c-0.706,0.506-1.649-0.18-1.388-1.008l2.023-6.396 l-5.396-3.985c-0.698-0.516-0.339-1.624,0.529-1.631l6.708-0.052l2.122-6.364C162.975,104.008,164.14,104.008,164.415,104.832z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n style: {\n fill: \"#F5F5F5\"\n },\n d: \"M164.415,160.771l2.122,6.364l6.708,0.052c0.868,0.007,1.229,1.115,0.53,1.631l-5.396,3.985 l2.023,6.396c0.262,0.828-0.68,1.513-1.388,1.008l-5.458-3.901l-5.458,3.901c-0.706,0.506-1.649-0.18-1.388-1.008l2.023-6.396 l-5.396-3.985c-0.698-0.516-0.339-1.624,0.529-1.631l6.708-0.052l2.122-6.364C162.975,159.948,164.14,159.948,164.415,160.771z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n style: {\n fill: \"#F5F5F5\"\n },\n d: \"M164.415,211.007l2.122,6.364l6.708,0.052c0.868,0.007,1.229,1.115,0.53,1.631l-5.396,3.985 l2.023,6.396c0.262,0.828-0.68,1.513-1.388,1.008l-5.458-3.901l-5.458,3.901c-0.706,0.506-1.649-0.18-1.388-1.008l2.023-6.396 l-5.396-3.985c-0.698-0.516-0.339-1.624,0.529-1.631l6.708-0.052l2.122-6.364C162.975,210.182,164.14,210.182,164.415,211.007z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n style: {\n fill: \"#F5F5F5\"\n },\n d: \"M190.254,20.814l2.122,6.364l6.708,0.052c0.868,0.007,1.229,1.115,0.53,1.631l-5.396,3.985 l2.023,6.396c0.262,0.828-0.68,1.513-1.388,1.008l-5.458-3.901l-5.458,3.901c-0.706,0.506-1.649-0.18-1.388-1.008l2.023-6.396 l-5.396-3.985c-0.698-0.516-0.339-1.624,0.53-1.631l6.708-0.052l2.122-6.364C188.814,19.99,189.979,19.99,190.254,20.814z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n style: {\n fill: \"#F5F5F5\"\n },\n d: \"M190.254,73.902l2.122,6.364l6.708,0.052c0.868,0.007,1.229,1.115,0.53,1.631l-5.396,3.985 l2.023,6.396c0.262,0.828-0.68,1.513-1.388,1.008l-5.458-3.901l-5.458,3.901c-0.706,0.506-1.649-0.18-1.388-1.008l2.023-6.396 l-5.396-3.985c-0.698-0.516-0.339-1.624,0.53-1.631l6.708-0.052l2.122-6.364C188.814,73.077,189.979,73.077,190.254,73.902z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n style: {\n fill: \"#F5F5F5\"\n },\n d: \"M190.254,132.78l2.122,6.364l6.708,0.052c0.868,0.007,1.229,1.115,0.53,1.632l-5.396,3.985 l2.023,6.396c0.262,0.828-0.68,1.513-1.388,1.008l-5.458-3.901l-5.458,3.901c-0.706,0.506-1.649-0.18-1.388-1.008l2.023-6.396 l-5.396-3.985c-0.698-0.516-0.339-1.625,0.53-1.632l6.708-0.052l2.122-6.364C188.814,131.956,189.979,131.956,190.254,132.78z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n style: {\n fill: \"#F5F5F5\"\n },\n d: \"M190.254,186.876l2.122,6.364l6.708,0.052c0.868,0.007,1.229,1.115,0.53,1.631l-5.396,3.985 l2.023,6.396c0.262,0.828-0.68,1.513-1.388,1.008l-5.458-3.901l-5.458,3.901c-0.706,0.506-1.649-0.18-1.388-1.008l2.023-6.396 l-5.396-3.985c-0.698-0.516-0.339-1.624,0.53-1.631l6.708-0.052l2.122-6.364C188.814,186.052,189.979,186.052,190.254,186.876z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n style: {\n fill: \"#F5F5F5\"\n },\n d: \"M190.254,236.102l2.122,6.364l6.708,0.052c0.868,0.007,1.229,1.115,0.53,1.631l-5.396,3.985 l2.023,6.396c0.262,0.828-0.68,1.513-1.388,1.008l-5.458-3.901l-5.458,3.901c-0.706,0.506-1.649-0.18-1.388-1.008l2.023-6.396 l-5.396-3.985c-0.698-0.516-0.339-1.625,0.53-1.631l6.708-0.052l2.122-6.364C188.814,235.278,189.979,235.278,190.254,236.102z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n style: {\n fill: \"#F5F5F5\"\n },\n d: \"M216.094,45.953l2.122,6.364l6.708,0.052c0.868,0.007,1.229,1.115,0.53,1.631l-5.396,3.985 l2.023,6.396c0.262,0.828-0.68,1.513-1.388,1.008l-5.458-3.901l-5.458,3.901c-0.706,0.506-1.649-0.18-1.388-1.008l2.023-6.396 L205.016,54c-0.698-0.516-0.339-1.624,0.53-1.631l6.708-0.052l2.122-6.364C214.653,45.129,215.819,45.129,216.094,45.953z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n style: {\n fill: \"#F5F5F5\"\n },\n d: \"M216.094,104.832l2.122,6.364l6.708,0.052c0.868,0.007,1.229,1.115,0.53,1.631l-5.396,3.985 l2.023,6.396c0.262,0.828-0.68,1.513-1.388,1.008l-5.458-3.901l-5.458,3.901c-0.706,0.506-1.649-0.18-1.388-1.008l2.023-6.396 l-5.396-3.985c-0.698-0.516-0.339-1.624,0.53-1.631l6.708-0.052l2.122-6.364C214.653,104.008,215.819,104.008,216.094,104.832z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n style: {\n fill: \"#F5F5F5\"\n },\n d: \"M216.094,160.771l2.122,6.364l6.708,0.052c0.868,0.007,1.229,1.115,0.53,1.631l-5.396,3.985 l2.023,6.396c0.262,0.828-0.68,1.513-1.388,1.008l-5.458-3.901l-5.458,3.901c-0.706,0.506-1.649-0.18-1.388-1.008l2.023-6.396 l-5.396-3.985c-0.698-0.516-0.339-1.624,0.53-1.631l6.708-0.052l2.122-6.364C214.653,159.948,215.819,159.948,216.094,160.771z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n style: {\n fill: \"#F5F5F5\"\n },\n d: \"M216.094,211.007l2.122,6.364l6.708,0.052c0.868,0.007,1.229,1.115,0.53,1.631l-5.396,3.985 l2.023,6.396c0.262,0.828-0.68,1.513-1.388,1.008l-5.458-3.901l-5.458,3.901c-0.706,0.506-1.649-0.18-1.388-1.008l2.023-6.396 l-5.396-3.985c-0.698-0.516-0.339-1.624,0.53-1.631l6.708-0.052l2.122-6.364C214.653,210.182,215.819,210.182,216.094,211.007z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n style: {\n fill: \"#F5F5F5\"\n },\n d: \"M241.933,20.814l2.122,6.364l6.708,0.052c0.868,0.007,1.229,1.115,0.53,1.631l-5.396,3.985 l2.023,6.396c0.262,0.828-0.68,1.513-1.388,1.008l-5.458-3.901l-5.458,3.901c-0.706,0.506-1.649-0.18-1.388-1.008l2.023-6.396 l-5.396-3.985c-0.698-0.516-0.339-1.624,0.53-1.631l6.708-0.052l2.122-6.364C240.492,19.99,241.658,19.99,241.933,20.814z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n style: {\n fill: \"#F5F5F5\"\n },\n d: \"M241.933,73.902l2.122,6.364l6.708,0.052c0.868,0.007,1.229,1.115,0.53,1.631l-5.396,3.985 l2.023,6.396c0.262,0.828-0.68,1.513-1.388,1.008l-5.458-3.901l-5.458,3.901c-0.706,0.506-1.649-0.18-1.388-1.008l2.023-6.396 l-5.396-3.985c-0.698-0.516-0.339-1.624,0.53-1.631l6.708-0.052l2.122-6.364C240.492,73.077,241.658,73.077,241.933,73.902z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n style: {\n fill: \"#F5F5F5\"\n },\n d: \"M241.933,132.78l2.122,6.364l6.708,0.052c0.868,0.007,1.229,1.115,0.53,1.632l-5.396,3.985 l2.023,6.396c0.262,0.828-0.68,1.513-1.388,1.008l-5.458-3.901l-5.458,3.901c-0.706,0.506-1.649-0.18-1.388-1.008l2.023-6.396 l-5.396-3.985c-0.698-0.516-0.339-1.625,0.53-1.632l6.708-0.052l2.122-6.364C240.492,131.956,241.658,131.956,241.933,132.78z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n style: {\n fill: \"#F5F5F5\"\n },\n d: \"M241.933,186.876l2.122,6.364l6.708,0.052c0.868,0.007,1.229,1.115,0.53,1.631l-5.396,3.985 l2.023,6.396c0.262,0.828-0.68,1.513-1.388,1.008l-5.458-3.901l-5.458,3.901c-0.706,0.506-1.649-0.18-1.388-1.008l2.023-6.396 l-5.396-3.985c-0.698-0.516-0.339-1.624,0.53-1.631l6.708-0.052l2.122-6.364C240.492,186.052,241.658,186.052,241.933,186.876z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n style: {\n fill: \"#F5F5F5\"\n },\n d: \"M241.933,236.102l2.122,6.364l6.708,0.052c0.868,0.007,1.229,1.115,0.53,1.631l-5.396,3.985 l2.023,6.396c0.262,0.828-0.68,1.513-1.388,1.008l-5.458-3.901l-5.458,3.901c-0.706,0.506-1.649-0.18-1.388-1.008l2.023-6.396 l-5.396-3.985c-0.698-0.516-0.339-1.625,0.53-1.631l6.708-0.052l2.122-6.364C240.492,235.278,241.658,235.278,241.933,236.102z\"\n })), _g || (_g = /*#__PURE__*/React.createElement(\"g\", null)), _g2 || (_g2 = /*#__PURE__*/React.createElement(\"g\", null)), _g3 || (_g3 = /*#__PURE__*/React.createElement(\"g\", null)), _g4 || (_g4 = /*#__PURE__*/React.createElement(\"g\", null)), _g5 || (_g5 = /*#__PURE__*/React.createElement(\"g\", null)), _g6 || (_g6 = /*#__PURE__*/React.createElement(\"g\", null)), _g7 || (_g7 = /*#__PURE__*/React.createElement(\"g\", null)), _g8 || (_g8 = /*#__PURE__*/React.createElement(\"g\", null)), _g9 || (_g9 = /*#__PURE__*/React.createElement(\"g\", null)), _g10 || (_g10 = /*#__PURE__*/React.createElement(\"g\", null)), _g11 || (_g11 = /*#__PURE__*/React.createElement(\"g\", null)), _g12 || (_g12 = /*#__PURE__*/React.createElement(\"g\", null)), _g13 || (_g13 = /*#__PURE__*/React.createElement(\"g\", null)), _g14 || (_g14 = /*#__PURE__*/React.createElement(\"g\", null)), _g15 || (_g15 = /*#__PURE__*/React.createElement(\"g\", null)));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgUs);\nexport default __webpack_public_path__ + \"static/media/us.32c036a7.svg\";\nexport { ForwardRef as ReactComponent };","import Icon from \"@ant-design/icons\";\nimport { ReactComponent as Box } from \"themes/icons/box.svg\";\nimport { ReactComponent as Location } from \"themes/icons/location.svg\";\nimport { ReactComponent as Vi } from \"themes/icons/vi.svg\";\nimport { ReactComponent as Us } from \"themes/icons/us.svg\";\n\nexport function LocationOutlined() {\n return ;\n}\n\nexport function BoxOutlined() {\n return ;\n}\n\nexport function ViIcon() {\n return ;\n}\n\nexport function EnIcon() {\n return ;\n}\n\nexport const LanguageIcons: { [key: string]: JSX.Element } = {\n \"en-us\": EnIcon(),\n vi: ViIcon(),\n};\n","import { Select } from \"antd\";\nimport { RootState } from \"app.store\";\nimport * as React from \"react\";\nimport { shallowEqual, useSelector } from \"react-redux\";\nimport { LanguageIcons } from \"./icons\";\n\nexport interface ILanguageSelectorProps {\n selectedCode?: string;\n onChange: (value: string) => Promise;\n onClick?: (ev: React.MouseEvent) => void;\n width?: number;\n}\n\nexport function LanguageSelector(props: ILanguageSelectorProps) {\n const { width, selectedCode, onChange,onClick } = props;\n const clientLanguages = useSelector(\n (state: RootState) => state.localization.clientLanguages,\n shallowEqual\n );\n return (\n \n );\n}\n","import { Card, Col, Input, Row, Typography, Alert, Checkbox } from \"antd\";\nimport { SeoModel } from \"shared/models/seo-model\";\n\nexport interface ISeoProps {\n model: SeoModel;\n slug: string;\n onChange: (changedModel: SeoModel, newSlug: string) => void;\n}\n\nexport function Seo(props: ISeoProps) {\n const { model, onChange, slug } = props;\n\n return (\n \n \n \n \n Title: \n {model?.metaTitle?.length > 55 && (\n \n )}\n {\n onChange({ ...model, metaTitle: e.target.value }, slug);\n }}\n placeholder=\"Title\"\n >\n \n \n Description: \n {model?.metaDescription?.length > 155 && (\n \n )}\n {\n onChange({ ...model, metaDescription: e.target.value }, slug);\n }}\n rows={5}\n placeholder=\"meta description\"\n >\n \n \n Keyword: \n {\n onChange({ ...model, metaKeyword: e.target.value }, slug);\n }}\n placeholder=\"Keyword\"\n >\n \n \n Slug: \n {\n onChange(model, e.target.value);\n }}\n >\n \n \n {\n onChange({ ...model, excludeFromSitemap: e.target.checked }, slug);\n }}\n >\n Exclude FromSitemap\n \n \n \n \n \n \n \n Schema: \n {\n onChange({ ...model, schema: e.target.value }, slug);\n }}\n rows={19}\n placeholder=\"Schema\"\n >\n \n \n \n \n );\n}\n","import { useEffect } from \"react\";\nimport { useHistory, useLocation } from \"react-router-dom\";\nimport { EMPTY_ROUTE } from \"shared/constants/routes\";\n\nexport default function useRefresh() {\n const history = useHistory();\n const location = useLocation();\n let handler: any;\n const refresh = () => {\n history.push(EMPTY_ROUTE);\n handler = setTimeout(() => history.push(location), 10);\n };\n\n useEffect(() => {\n return () => handler && clearTimeout(handler);\n }, [handler]);\n\n return refresh;\n}\n","import React, { useRef } from \"react\";\nimport { Editor } from \"@tinymce/tinymce-react\";\nimport { apiClient } from \"shared/plugins/http-service\";\nimport { UPLOAD_FILE_API } from \"shared/constants/api-endpoint\";\nimport { redirectFileLocalUrl } from \"shared/plugins/string-helper\";\nimport { IMAGES_FOLDER_ID } from \"shared/constants/google-drive\";\nimport { shallowEqual, useSelector } from \"react-redux\";\nimport { RootState } from \"app.store\";\n\ninterface TinyMCEProps {\n pageContent?: string;\n height?: number;\n onChange?: (e: any) => void;\n}\nexport const MceEditor = (props: TinyMCEProps) => {\n const token = useSelector(\n (state: RootState) => state.account.token,\n shallowEqual\n );\n const { pageContent, height, onChange } = props;\n const editorRef = useRef();\n const handleEditorChange = (content: string) => {\n onChange && onChange(content);\n };\n\n return (\n \n {\n // Provide file and text for the link dialog\n // Provide image and alt text for the image dialog\n var input = document.createElement(\"input\");\n input.setAttribute(\"type\", \"file\");\n input.setAttribute(\"accept\", \"image/*\");\n if (meta.filetype === \"image\") {\n input.click();\n input.onchange = () => {\n const formData = new FormData();\n const files = input.files;\n if (files && files.length > 0) {\n for (var i = 0; i < files.length; i++) {\n formData.append(\"uploadedFiles\", files[i]);\n }\n }\n apiClient\n .postHttp(`${UPLOAD_FILE_API}`, formData, {\n headers: {\n \"content-type\": \"multipart/form-data\",\n },\n })\n .then((response: any) => {\n callback(`${response.data[0]}`, {\n alt: files && files.item.name,\n });\n });\n };\n }\n // Provide alternative source and posted for the media dialog\n // if (meta.filetype == 'media') {\n // callback('movie.mp4', {source2: 'alt.ogg', poster: 'image.jpg'});\n // }\n },\n images_upload_handler: function (\n blobInfo: any,\n success: any,\n failure: any,\n progress: any\n ) {\n let formData: any;\n formData = new FormData();\n formData.append(\n \"uploadedFiles\",\n blobInfo.blob(),\n blobInfo.filename()\n );\n formData.append(\"folderId\", IMAGES_FOLDER_ID);\n apiClient\n .postHttp(`${UPLOAD_FILE_API}`, formData, {\n headers: {\n \"content-type\": \"multipart/form-data\",\n },\n })\n .then((response: any) => {\n success(redirectFileLocalUrl(response.data[0]));\n });\n },\n convert_urls : false,\n images_upload_url: \"\",\n image_title: true,\n images_upload_credentials: true,\n paste_data_images: true,\n typeahead_urls: true,\n content_css: \"/src/shared/components/tinymce/style_custom.css\",\n templates: [\n {\n title: \"Khung đỏ\",\n description: \"Khung đỏ với chữ bên trong.\",\n content: '

Khung đỏ

',\n },\n {\n title: \"Khung tím\",\n description: \"Khung tím với chữ bên trong.\",\n content: '

Khung tím

',\n },\n {\n title: \"Khung xanh\",\n description: \"Khung xanh với chữ bên trong.\",\n content: '

Khung xanh

',\n },\n {\n title: \"Khung vàng\",\n description: \"Khung vàng với chữ bên trong.\",\n content: '

Khung vàng

',\n },\n {\n title: \"Nền vàng\",\n description: \"Nền vàng với chữ bên trong.\",\n content: '

Nền vàng

',\n },\n {\n title: \"Nền xám\",\n description: \"Nền xám với chữ bên trong.\",\n content: '

Nền xám

',\n },\n // {title: 'Nút xanh', description: 'Nút xanh.', content: 'Tra cứu forex broker'},\n // {title: 'Khung vàng 2 màu', description: 'Khung vàng 2 màu với chữ bên trong.', content: '

Khung vàng 2 màu

'},\n // {title: 'Nút vàng', description: 'Nút vàng.', content: 'Đặt mua ngayĐể được tặng quà'}\n ],\n }}\n onEditorChange={handleEditorChange}\n />\n
\n );\n};\n","import { Checkbox, Collapse, Input, Row, Typography } from \"antd\";\nimport { MceEditor } from \"shared/components/tinymce/mce-editor\";\nimport { ContentText, Title } from \"shared/constants/define-localization\";\nimport { CoreResource, t } from \"shared/plugins/localization\";\nimport { cleanUnicode } from \"shared/plugins/string-helper\";\n\nimport { StaticPageModel } from \"states/static-page/static-page.models\";\n\nexport interface IStaticPageInformationTabProps {\n model: StaticPageModel;\n onChange: (newModel: StaticPageModel) => void;\n isUpdateMode: boolean;\n}\nexport function StaticPageInformationTab(\n props: IStaticPageInformationTabProps\n) {\n const { model, onChange, isUpdateMode } = props;\n return (\n
\n \n \n \n \n Tên trang: \n {\n onChange({\n ...model,\n title: e.target.value,\n seoFields: {\n ...model.seoFields,\n metaTitle: e.target.value,\n },\n slug: cleanUnicode(e.target.value),\n });\n }}\n placeholder={t(CoreResource, Title)}\n >\n \n \n \n Nội dung:\n \n {\n onChange({ ...model, pageContent: e });\n }}\n >\n \n \n {\n onChange({ ...model, isCustomizePage: e.target.checked });\n }}\n >\n Trang tùy chỉnh\n \n \n \n \n \n
\n );\n}\n","import { RollbackOutlined, SaveOutlined } from \"@ant-design/icons\";\nimport {\n Breadcrumb,\n Button,\n Col,\n message,\n Modal,\n Row,\n Space,\n Tabs,\n} from \"antd\";\nimport { RootState } from \"app.store\";\nimport { useEffect, useState } from \"react\";\nimport { shallowEqual, useDispatch, useSelector } from \"react-redux\";\nimport { Link, useParams } from \"react-router-dom\";\nimport { CustomTheme } from \"shared/components/custom-theme/custom-theme\";\nimport { LanguageSelector } from \"shared/components/language-selector\";\nimport { Seo } from \"shared/components/seo/seo\";\nimport {\n DefaultErrorMessage,\n UpdateDataSuccessfully,\n} from \"shared/constants/define-localization\";\nimport useRefresh from \"shared/hooks/use-refresh\";\nimport { SeoModel } from \"shared/models/seo-model\";\nimport { t, CoreResource } from \"shared/plugins/localization\";\nimport { setLoading } from \"states/global-value/global-value.slice\";\nimport {\n addStaticPage,\n getStaticPageById,\n updateStaticPage,\n} from \"states/static-page/static-page.api\";\nimport {\n CreateStaticPageModel,\n StaticPageModel,\n UpdatedStaticPageModel,\n} from \"states/static-page/static-page.models\";\nimport { StaticPageInformationTab } from \"./components/staticpage-information-tab\";\n\ninterface RouteParams {\n staticPageId: string;\n}\ninterface IAddUpdateStaticPageProps {}\n\nexport function AddUpdateStaticPage(props: IAddUpdateStaticPageProps) {\n const refresh = useRefresh();\n const { staticPageId } = useParams();\n const [model, setModel] = useState({} as StaticPageModel);\n const [isUpdateMode, setIsUpdateMode] = useState(false);\n const clientLanguages = useSelector(\n (state: RootState) => state.localization.clientLanguages,\n shallowEqual\n );\n const [currentLanguage, setCurrentLanguage] = useState();\n\n const dispatch = useDispatch();\n const getStaticPage = async () => {\n try {\n const res = await getStaticPageById(Number(staticPageId));\n\n setModel(res.data);\n } catch (error) {\n message.error(\n error?.response?.data?.error?.message ??\n t(CoreResource, DefaultErrorMessage)\n );\n }\n };\n\n const onSaved = async () => {\n dispatch(setLoading(true));\n try {\n if (isUpdateMode) {\n const payload = {\n id: model.id,\n isCustomizePage: model.isCustomizePage,\n pageContent: model.pageContent,\n seoFields: model.seoFields,\n customizeTheme: model?.customizeTheme,\n title: model.title,\n slug: model.slug,\n } as UpdatedStaticPageModel;\n await updateStaticPage(payload, currentLanguage);\n } else {\n const payload = {\n isCustomizePage: model.isCustomizePage,\n pageContent: model.pageContent,\n seoFields: model.seoFields,\n title: model.title,\n slug: model.slug,\n customizeTheme: model?.customizeTheme,\n } as CreateStaticPageModel;\n await addStaticPage(payload, currentLanguage);\n }\n message.success(t(CoreResource, UpdateDataSuccessfully));\n refresh();\n } catch (error) {\n message.error(\n error?.response?.data?.error?.message ??\n t(CoreResource, DefaultErrorMessage)\n );\n }\n dispatch(setLoading(false));\n };\n\n useEffect(() => {\n if (clientLanguages.length > 0 && !currentLanguage) {\n setCurrentLanguage(clientLanguages.find((m) => m.isDefault)?.langCode);\n }\n }, [clientLanguages]);\n\n useEffect(() => {\n if (document.location.href.indexOf(\"/add\") > -1) {\n setIsUpdateMode(false);\n } else {\n setIsUpdateMode(true);\n getStaticPage();\n }\n }, []);\n\n return (\n
\n \n \n \n \n Trang tĩnh \n \n \n {isUpdateMode\n ? \"Cập nhật trang \" + model.title\n : \"Thêm trang tĩnh\"}\n \n \n \n \n \n {isUpdateMode && (\n {\n const res = await getStaticPageById(model.id, value);\n if (!res.data.title) {\n Modal.confirm({\n title: \"Thông báo\",\n content:\n \"Nội dung chưa được khởi tạo cho ngôn ngữ này, bạn có muốn khởi tạo?\",\n onOk: () => {\n setCurrentLanguage(value);\n },\n });\n return;\n } else {\n setCurrentLanguage(value);\n setModel(res.data);\n }\n }}\n selectedCode={currentLanguage}\n />\n )}\n \n \n \n \n \n \n \n \n \n \n \n \n {\n setModel({ ...model, customizeTheme: changedModel });\n }}\n model={model.customizeTheme ?? {}}\n />\n \n \n {\n setModel({ ...model, slug, seoFields });\n }}\n />\n \n \n
\n );\n}\n","export interface ContactModel {\n key: string;\n id: number;\n title: string;\n message: string;\n name: string;\n phoneNumber: string;\n email: string;\n creationTime: Date;\n status: ContactStatus;\n lastModificationTime: Date;\n}\n\nexport interface UpdatedContactModel {\n id: number;\n status: ContactStatus;\n}\n\nexport interface SearchContactRequestModel {\n name?: string;\n phone?: string;\n email?: string;\n status?: ContactStatus;\n page: number;\n pageSize: number;\n}\n\nexport interface RemovedContactModel {\n idList: number[];\n}\n\nexport enum ContactStatus {\n New,\n Seen,\n Done,\n}\n","import { CONTACT_API, CONTACT_API_SEARCH } from \"shared/constants/api-endpoint\";\nimport { apiClient } from \"shared/plugins/http-service\";\nimport { PagedResult } from \"states/paged-result-model\";\nimport {\n RemovedContactModel,\n SearchContactRequestModel,\n ContactModel,\n UpdatedContactModel,\n} from \"./contact.models\";\n\nexport const searchContact = async (\n searchContactRequestModel: SearchContactRequestModel\n) => {\n const createResponse = await apiClient.postHttp>(\n `${CONTACT_API_SEARCH}`,\n searchContactRequestModel\n );\n return createResponse;\n};\n\nexport const removeContact = async (removedModel: RemovedContactModel) => {\n const response = await apiClient.postHttp(\n `${CONTACT_API}/remove_list`,\n removedModel\n );\n return response;\n};\n\nexport const getContactById = async (id: number) => {\n return await apiClient.getHttp(`${CONTACT_API}/${id}`);\n};\n\nexport const updateContact = async (model: UpdatedContactModel) => {\n const response = await apiClient.putHttp(`${CONTACT_API}`, model);\n return response;\n};\n","import React, { FC, useState, useEffect } from \"react\";\n\nimport {\n Table,\n Row,\n Col,\n Button,\n Input,\n message,\n Drawer,\n notification,\n Select,\n Tag,\n Typography,\n Modal,\n} from \"antd\";\n\nimport { DeleteOutlined, ExclamationCircleOutlined } from \"@ant-design/icons\";\nimport { ColumnsType } from \"antd/lib/table\";\nimport { PagedResult } from \"states/paged-result-model\";\nimport { useDebouncedCallback } from \"use-debounce/lib\";\n\nimport {\n RemovedContactModel,\n SearchContactRequestModel,\n ContactModel,\n ContactStatus,\n} from \"states/contact/contact.models\";\nimport {\n removeContact,\n searchContact,\n updateContact,\n} from \"states/contact/contact.api\";\nimport momentTz from \"moment-timezone\";\nimport {\n t,\n CoreResource,\n momentDateTimeFormat,\n} from \"shared/plugins/localization\";\n\nimport { shallowEqual, useSelector } from \"react-redux\";\nimport { RootState } from \"app.store\";\n\ninterface IContactProps {}\nconst { Option } = Select;\nconst Contact: FC = () => {\n const currentTimeZone = useSelector(\n (state: RootState) => state.globalValue.ianaTimeZone,\n shallowEqual\n );\n const [selectedRowsKeys, setSelectedRowsKeys] = useState(\n {\n idList: [],\n }\n );\n const [isLoadingList, setIsLoadingList] = useState(false);\n const [pagedResults, setPagedResults] = useState(\n {} as PagedResult\n );\n const [filterModel, setFilterModel] = useState({\n page: 1,\n pageSize: 20,\n });\n\n const rowSelection = {\n selectedRowsKeys,\n onChange: (selectedRowKeys: any) => {\n setSelectedRowsKeys({ ...selectedRowsKeys, idList: selectedRowKeys });\n },\n };\n const onEmptySelection = () => {\n setSelectedRowsKeys({ ...selectedRowsKeys, idList: [] });\n };\n\n useEffect(() => {\n handleSearch();\n }, [filterModel]);\n\n useEffect(() => {\n document.title = \"Liên hệ\";\n }, []);\n const gotoPage = async (page: number,pageSize:number) => {\n setIsLoadingList(true);\n const result = await searchContact({ ...filterModel, page,pageSize });\n result.data.results.forEach((m) => (m.key = m.id.toString()));\n setPagedResults(result.data);\n setIsLoadingList(false);\n };\n const handleChangeStatus = async (id: number, status: ContactStatus) => {\n setIsLoadingList(true);\n try {\n await updateContact({ id: id, status: status });\n setIsLoadingList(false);\n Modal.success({\n title: \"Thành công\",\n content: \"Cập nhật thành công\",\n onOk: () => {\n handleSearch();\n },\n });\n } catch (e) {\n setIsLoadingList(false);\n Modal.error({\n title: \"Thông báo\",\n content:\n e?.response?.data?.error?.message ??\n \"Lỗi hệ thống\",\n onOk: () => {\n handleSearch();\n },\n });\n }\n };\n const handleSearch = useDebouncedCallback(() => {\n gotoPage(1,20);\n }, 500);\n\n const onRemoveBtn = () => {\n const key = `open${Date.now()}`;\n const btn = (\n {\n try {\n await removeContact(selectedRowsKeys);\n notification.close(key);\n setSelectedRowsKeys({ ...selectedRowsKeys, idList: [] });\n handleSearch();\n message.success(\"Cập nhật thành công\");\n } catch (error) {\n message.error(\n error?.response?.data?.error?.message ??\n \"Lỗi hệ thống\"\n );\n }\n }}\n >\n Xóa\n \n );\n notification.open({\n message: \"Bạn có muốn xóa không ?\",\n key,\n btn,\n placement: \"bottomLeft\",\n });\n };\n\n const expandedRowRender = (data: ContactModel) => {\n return (\n \n
\n \n );\n };\n const columns: ColumnsType = [\n {\n title:\"Tiêu đề\",\n dataIndex: \"title\",\n key: \"title\",\n render: (title: string) => {title},\n },\n {\n title: \"Tên khách hàng\",\n dataIndex: \"name\",\n key: \"name\",\n render: (name: string) => {name},\n },\n {\n title: \"Số điện thoại\",\n dataIndex: \"phoneNumber\",\n key: \"phoneNumber\",\n render: (phone: string) => {phone},\n },\n {\n title: \"Địa chỉ email\",\n dataIndex: \"email\",\n key: \"email\",\n render: (email: string) => {email},\n },\n {\n title: \"Ngày tạo\",\n dataIndex: \"creationTime\",\n key: \"creationTime\",\n render: (creationTime: Date) => (\n \n {momentTz(creationTime)\n .tz(currentTimeZone)\n .format(momentDateTimeFormat())}\n \n ),\n },\n {\n title: \"Trang thái\",\n dataIndex: \"status\",\n key: \"status\",\n render: (status: ContactStatus, item) => (\n \n {\n let modal = Modal.confirm({\n title: \"Xác nhận\",\n icon: ,\n content: \"Bạn có muốn cập nhật trạng thái không ?\",\n okText:\"Đồng ý\",\n visible: false,\n onOk: (ev) => {\n handleChangeStatus(item.id, e.valueOf());\n modal.destroy();\n },\n cancelText: \"Hủy\",\n });\n }}\n >\n \n \n \n \n \n ),\n },\n ];\n return (\n
\n \n \n {\n setFilterModel({ ...filterModel, name: e.target.value });\n }}\n >\n \n \n {\n setFilterModel({ ...filterModel, email: e.target.value });\n }}\n >\n \n \n {\n setFilterModel({ ...filterModel, phone: e.target.value });\n }}\n >\n \n \n {\n setFilterModel({\n ...filterModel,\n status: e?.valueOf() ?? undefined,\n });\n }}\n >\n \n \n \n \n \n \n expandedRowRender(record),\n }}\n rowSelection={rowSelection}\n columns={columns}\n dataSource={pagedResults.results}\n size=\"small\"\n pagination={{\n total: pagedResults.totalItemCount,\n pageSize: pagedResults.pageSize,\n current: pagedResults.currentPage,\n onChange: gotoPage,\n }}\n loading={isLoadingList}\n >\n 0\n ? true\n : false\n }\n >\n }\n >\n Xóa {selectedRowsKeys.idList.length.toString()} dòng\n \n \n
\n );\n};\n\nexport default Contact;\n","import {\n BLOG_CATEGORY_API,\n BLOG_CATEGORY_API_SEARCH,\n} from \"shared/constants/api-endpoint\";\nimport { apiClient } from \"shared/plugins/http-service\";\nimport { PagedResult } from \"states/paged-result-model\";\nimport {\n CreateBlogCategoryModel,\n RemovedBlogCategoryModel,\n SearchBlogCategoryRequestModel,\n BlogCategoryModel,\n UpdatedBlogCategoryModel,\n} from \"./blog-category.models\";\n\nexport const searchBlogCategory = async (\n searchBlogCategoryRequestModel: SearchBlogCategoryRequestModel,\n langCode?: string\n) => {\n return await apiClient.postHttp>(\n `${BLOG_CATEGORY_API_SEARCH}`,\n searchBlogCategoryRequestModel,\n {\n params: { langCode },\n }\n );\n};\n\nexport const removeBlogCategory = async (\n removedModel: RemovedBlogCategoryModel\n) => {\n const response = await apiClient.postHttp(\n `${BLOG_CATEGORY_API}/remove_list`,\n removedModel\n );\n return response;\n};\n\nexport const getBlogCategoryByIdApi = async (id: number, langCode?: string) => {\n return await apiClient.getHttp(\n `${BLOG_CATEGORY_API}/${id}`,\n {\n params: { langCode },\n }\n );\n};\n\nexport const addBlogCategory = async (\n model: CreateBlogCategoryModel,\n langCode?: string\n) => {\n const response = await apiClient.postHttp(\n `${BLOG_CATEGORY_API}`,\n model,\n {\n params: { langCode },\n }\n );\n return response;\n};\n\nexport const updateBlogCategory = async (\n model: UpdatedBlogCategoryModel,\n langCode?: string\n) => {\n const response = await apiClient.putHttp(\n `${BLOG_CATEGORY_API}`,\n model,\n {\n params: { langCode },\n }\n );\n return response;\n};\n","import { Checkbox, Collapse, FormInstance, Input, Row, Typography } from \"antd\";\nimport { MceEditor } from \"shared/components/tinymce/mce-editor\";\nimport { UploadFileLocal } from \"shared/components/upload-file/upload-file\";\nimport { CoreResource, t } from \"shared/plugins/localization\";\nimport { cleanUnicode } from \"shared/plugins/string-helper\";\nimport { BlogCategoryModel } from \"states/blog-category/blog-category.models\";\n\nexport interface IBlogCategoryInformationTabProps {\n model: BlogCategoryModel;\n onChange: (newModel: BlogCategoryModel) => void;\n isUpdateMode: boolean;\n}\nexport function BlogCategoryInformationTab(\n props: IBlogCategoryInformationTabProps\n) {\n const { model, onChange, isUpdateMode } = props;\n return (\n
\n \n \n \n Tên danh mục: \n {\n onChange({\n ...model,\n name: e.target.value,\n slug: cleanUnicode(e.target.value),\n seoFields: {\n ...model.seoFields,\n metaTitle: e.target.value,\n },\n });\n }}\n placeholder={`Tên danh mục`}\n >\n \n \n Hình đại diện: \n {\n onChange({\n ...model,\n avatar: newFileList[0],\n });\n }}\n />\n \n \n Mô tả: \n {\n onChange({ ...model, description: value });\n }}\n >\n \n \n \n
\n );\n}\n","import { FC, useState, useEffect } from \"react\";\nimport { Modal, message, Tabs } from \"antd\";\nimport {\n BlogCategoryModel,\n CreateBlogCategoryModel,\n UpdatedBlogCategoryModel,\n} from \"states/blog-category/blog-category.models\";\nimport {\n addBlogCategory,\n getBlogCategoryByIdApi,\n updateBlogCategory,\n} from \"states/blog-category/blog-category.api\";\nimport { BlogCategoryInformationTab } from \"./components/blog-category-information-tab\";\nimport { CustomTheme } from \"shared/components/custom-theme/custom-theme\";\nimport { Seo } from \"shared/components/seo/seo\";\nimport { SeoModel } from \"shared/models/seo-model\";\nimport { RootState } from \"app.store\";\nimport { shallowEqual, useSelector } from \"react-redux\";\nimport { LanguageSelector } from \"shared/components/language-selector\";\n\ninterface IBlogCategoryModalProps {\n model: BlogCategoryModel;\n onModal: boolean;\n closeModal: () => void;\n onSuccess: () => void;\n isUpdate: boolean;\n}\nexport const BlogCategoryModalComponent: FC = (\n props\n) => {\n const { model, onModal, closeModal, onSuccess, isUpdate } = props;\n const clientLanguages = useSelector(\n (state: RootState) => state.localization.clientLanguages,\n shallowEqual\n );\n const [currentLanguage, setCurrentLanguage] = useState();\n\n const [blogCateModel, setBlogCateModel] = useState(\n {} as BlogCategoryModel\n );\n const [isLoading, setLoading] = useState(false);\n const handleCloseModal = () => closeModal();\n const onSubmit = async () => {\n setLoading(true);\n try {\n if (isUpdate) {\n let payload: UpdatedBlogCategoryModel = {\n ...blogCateModel,\n id: blogCateModel.id,\n name: blogCateModel.name,\n slug: blogCateModel.slug,\n avatar: blogCateModel.avatar,\n description: blogCateModel.description,\n seoFields: blogCateModel.seoFields,\n customizeTheme: blogCateModel.customizeTheme,\n };\n await updateBlogCategory(payload, currentLanguage);\n } else {\n let payload: CreateBlogCategoryModel = {\n ...blogCateModel,\n name: blogCateModel.name,\n slug: blogCateModel.slug,\n avatar: blogCateModel.avatar,\n seoFields: blogCateModel.seoFields,\n customizeTheme: blogCateModel.customizeTheme,\n description: blogCateModel.description,\n };\n await addBlogCategory(payload, currentLanguage);\n }\n handleCloseModal();\n setLoading(false);\n onSuccess();\n message.success(\"Cập nhật thành công\");\n } catch (error) {\n message.error(error?.response?.data?.error?.message ?? \"Lỗi hệ thống\");\n setLoading(false);\n }\n };\n const onReset = () => {\n setBlogCateModel({} as BlogCategoryModel);\n };\n const onFill = () => {\n setBlogCateModel(model);\n };\n\n useEffect(() => {\n if (!isUpdate) {\n onReset();\n } else {\n onFill();\n }\n //Lúc mở modal lên thì trả về ngôn ngữ mặc định\n if (onModal && clientLanguages.length > 0 && currentLanguage) {\n setCurrentLanguage(clientLanguages.find((m) => m.isDefault)?.langCode);\n }\n }, [onModal]);\n\n useEffect(() => {\n if (clientLanguages.length > 0 && !currentLanguage) {\n setCurrentLanguage(clientLanguages.find((m) => m.isDefault)?.langCode);\n }\n }, [clientLanguages]);\n\n return (\n \n {isUpdate ? \"Cập nhật thông tin\" : \"Thêm danh mục\"}\n
\n }\n confirmLoading={isLoading}\n centered={true}\n visible={onModal}\n onOk={onSubmit}\n onCancel={handleCloseModal}\n okText={\"Lưu\"}\n cancelText={\"Hủy\"}\n >\n {isUpdate && (\n
\n {\n const res = await getBlogCategoryByIdApi(blogCateModel.id, value);\n if (!res.data.name) {\n Modal.confirm({\n title: \"Thông báo\",\n content:\n \"Nội dung chưa được khởi tạo cho ngôn ngữ này, bạn có muốn khởi tạo?\",\n onOk: () => {\n setCurrentLanguage(value);\n },\n });\n return;\n } else {\n setCurrentLanguage(value);\n setBlogCateModel(res.data);\n }\n }}\n selectedCode={currentLanguage}\n />\n
\n )}\n \n \n \n \n \n {\n setBlogCateModel({\n ...blogCateModel,\n customizeTheme: changedModel,\n });\n }}\n model={model.customizeTheme ?? {}}\n />\n \n \n {\n setBlogCateModel({ ...blogCateModel, slug, seoFields });\n }}\n />\n \n \n \n );\n};\n","import React, { FC, useState, useEffect } from \"react\";\n\nimport {\n Table,\n Row,\n Col,\n Button,\n Input,\n message,\n Drawer,\n notification,\n} from \"antd\";\n\nimport { DeleteOutlined, PlusCircleOutlined } from \"@ant-design/icons\";\nimport { ColumnsType } from \"antd/lib/table\";\nimport { PagedResult } from \"states/paged-result-model\";\nimport { useDebouncedCallback } from \"use-debounce/lib\";\n\nimport {\n RemovedBlogCategoryModel,\n SearchBlogCategoryRequestModel,\n BlogCategoryModel,\n} from \"states/blog-category/blog-category.models\";\nimport {\n removeBlogCategory,\n searchBlogCategory,\n} from \"states/blog-category/blog-category.api\";\nimport { BlogCategoryModalComponent } from \"./blog-category-modal\";\nimport { Link } from \"react-router-dom\";\n\ninterface IBlogCategoryProps {}\nconst BlogCategory: FC = () => {\n const [selectedRowsKeys, setSelectedRowsKeys] =\n useState({\n idList: [],\n });\n const [isLoadingList, setIsLoadingList] = useState(false);\n const [pagedResults, setPagedResults] = useState(\n {} as PagedResult\n );\n const [isModal, setModal] = useState(false);\n const [isUpdate, setUpdate] = useState(false);\n const [model, setModel] = useState(\n {} as BlogCategoryModel\n );\n\n const [filterModel, setFilterModel] =\n useState({\n page: 1,\n pageSize: 20,\n });\n\n const rowSelection = {\n selectedRowsKeys,\n onChange: (selectedRowKeys: any) => {\n setSelectedRowsKeys({ ...selectedRowsKeys, idList: selectedRowKeys });\n },\n };\n const onEmptySelection = () => {\n setSelectedRowsKeys({ ...selectedRowsKeys, idList: [] });\n };\n\n const handleCloseModal = () => {\n setModal(false);\n };\n const handleAddBlogCategory = () => {\n setModel({} as BlogCategoryModel);\n setModal(true);\n setUpdate(false);\n };\n const gotoPage = async (page: number) => {\n setIsLoadingList(true);\n const result = await searchBlogCategory({ ...filterModel, page });\n result.data.results.forEach((m) => (m.key = m.id.toString()));\n setPagedResults(result.data);\n setIsLoadingList(false);\n };\n const handleSearch = useDebouncedCallback(() => {\n gotoPage(1);\n }, 500);\n\n const onRemoveBtn = () => {\n const key = `open${Date.now()}`;\n const btn = (\n {\n try {\n await removeBlogCategory(selectedRowsKeys);\n notification.close(key);\n setSelectedRowsKeys({ ...selectedRowsKeys, idList: [] });\n handleSearch();\n message.success(\"Cập nhật thành công\");\n } catch (error) {\n message.error(\n error?.response?.data?.error?.message ?? \"Lỗi hệ thống\"\n );\n }\n }}\n >\n Xóa\n \n );\n notification.open({\n message: \"Bạn có muốn xóa không ?\",\n key,\n btn,\n placement: \"bottomLeft\",\n });\n };\n\n const columns: ColumnsType = [\n {\n title: \"Id\",\n dataIndex: \"id\",\n key:\"id\",\n width:\"40px\",\n render: (id: string, item) => (\n \n {id}\n \n ),\n },\n {\n title: \"Tên danh mục\",\n dataIndex: \"name\",\n key: \"name\",\n render: (name: string, item) => (\n \n {\n setModel(item);\n setModal(true);\n setUpdate(true);\n }}\n >\n {name}\n \n \n ),\n },\n {\n title: \"Đường dẫn\",\n dataIndex: \"slug\",\n key: \"slug\",\n render: (slug: string) => {slug},\n },\n ];\n\n useEffect(() => {\n handleSearch();\n }, [filterModel]);\n\n return (\n
\n \n \n {\n setFilterModel({ ...filterModel, name: e.target.value });\n }}\n >\n \n \n }\n >\n Thêm danh mục\n \n \n \n \n 0\n ? true\n : false\n }\n >\n }\n >\n Xóa {selectedRowsKeys.idList.length.toString()} dòng\n \n \n \n
\n );\n};\n\nexport default BlogCategory;\n","import { BLOG_API, BLOG_API_SEARCH, BLOG_API_SORT, BLOG_API_SORT_LIST } from \"shared/constants/api-endpoint\";\nimport { UpdatedSortEntityModel } from \"shared/models/updated-sort-entity-model\";\nimport { apiClient } from \"shared/plugins/http-service\";\nimport { PagedResult } from \"states/paged-result-model\";\nimport {\n CreateBlogModel,\n RemovedBlogModel,\n SearchBlogRequestModel,\n BlogModel,\n UpdatedBlogModel,\n} from \"./blog.models\";\n\nexport const searchBlog = async (\n searchBLOGRequestModel: SearchBlogRequestModel,\n langCode?: string\n) => {\n const createResponse = await apiClient.postHttp>(\n `${BLOG_API_SEARCH}`,\n searchBLOGRequestModel,\n { params: { langCode } }\n );\n return createResponse;\n};\n\nexport const removeBlog = async (removedModel: RemovedBlogModel) => {\n const response = await apiClient.postHttp(\n `${BLOG_API}/remove_list`,\n removedModel\n );\n return response;\n};\n\nexport const getBlogByIdApi = async (id: number, langCode?: string) => {\n return await apiClient.getHttp(`${BLOG_API}/${id}`, {\n params: { langCode },\n });\n};\n\nexport const addBlog = async (model: CreateBlogModel, langCode?: string) => {\n const response = await apiClient.postHttp(`${BLOG_API}`, model, {\n params: { langCode },\n });\n return response;\n};\n\nexport const updateBlog = async (\n model: UpdatedBlogModel,\n langCode?: string\n) => {\n const response = await apiClient.putHttp(`${BLOG_API}`, model, {\n params: { langCode },\n });\n return response;\n};\n\nexport const updateSortListBlogApi = async (\n updatedSortModel: UpdatedSortEntityModel[]\n) => {\n const response = await apiClient.putHttp(\n `${BLOG_API_SORT_LIST}`,\n updatedSortModel\n );\n return response;\n};\nexport const updateSortBlogApi = async (\n updatedSortModel: UpdatedSortEntityModel\n) => {\n const response = await apiClient.putHttp(\n `${BLOG_API_SORT}`,\n updatedSortModel\n );\n return response;\n};","import { FC, useState, useEffect } from \"react\";\nimport { Input, Modal, Form } from \"antd\";\nimport { Store } from \"antd/lib/form/interface\";\nimport { TagModel } from \"states/tag/tag.models\";\nimport { addTag, getTagByIdApi, updateTag } from \"states/tag/tag.api\";\nimport { LanguageSelector } from \"../language-selector\";\nimport { shallowEqual, useSelector } from \"react-redux\";\nimport { RootState } from \"app.store\";\n\ninterface ITagModalProps {\n model: TagModel;\n onModal: boolean;\n closeModal: () => void;\n onSuccess: () => void;\n isUpdate: boolean;\n}\nexport const TagModalComponent: FC = (props) => {\n const { model, onModal, closeModal, onSuccess, isUpdate } = props;\n const clientLanguages = useSelector(\n (state: RootState) => state.localization.clientLanguages,\n shallowEqual\n );\n const [currentLanguage, setCurrentLanguage] = useState();\n const [form] = Form.useForm();\n const [isLoading, setLoading] = useState(false);\n const handleCloseModal = () => closeModal();\n const onFinish = async (values: Store) => {\n setLoading(true);\n try {\n if (isUpdate) {\n let payload: TagModel = {\n ...values,\n key: model.id.toString(),\n id: values.id,\n tagName: values.tagName,\n };\n await updateTag(payload,currentLanguage);\n } else {\n let payload: TagModel = {\n ...values,\n key: \"0\",\n id: 0,\n tagName: values.tagName,\n };\n await addTag(payload);\n }\n handleCloseModal();\n setLoading(false);\n onSuccess();\n Modal.success({\n title: \"Thành công\",\n content: \"Cập nhật thành công\",\n });\n } catch (error) {\n Modal.error({\n title: \"Thông báo\",\n content: error?.response?.data?.error?.message ?? \"Lỗi hệ thống\",\n });\n setLoading(false);\n }\n };\n\n const onSubmit = () => {\n form.submit();\n };\n const onReset = () => {\n form.resetFields();\n };\n const onFill = () => {\n form.setFieldsValue({\n id: model?.id,\n tagName: model?.tagName,\n });\n };\n\n useEffect(() => {\n if (!isUpdate) {\n onReset();\n } else {\n onFill();\n }\n //Lúc mở modal lên thì trả về ngôn ngữ mặc định\n if (onModal && clientLanguages.length > 0 && currentLanguage) {\n setCurrentLanguage(clientLanguages.find((m) => m.isDefault)?.langCode);\n }\n }, [onModal]);\n\n useEffect(() => {\n if (clientLanguages.length > 0 && !currentLanguage) {\n setCurrentLanguage(clientLanguages.find((m) => m.isDefault)?.langCode);\n }\n }, [clientLanguages]);\n\n return (\n \n {isUpdate ? `Cập nhật tag` : `Thêm tag`}\n \n }\n confirmLoading={isLoading}\n centered={true}\n visible={onModal}\n onOk={onSubmit}\n onCancel={handleCloseModal}\n okText=\"Lưu\"\n cancelText=\"Hủy\"\n >\n {isUpdate && (\n
\n {\n const res = await getTagByIdApi(model.id, value);\n if (!res.data.tagName) {\n Modal.confirm({\n title: \"Thông báo\",\n content:\n \"Nội dung chưa được khởi tạo cho ngôn ngữ này, bạn có muốn khởi tạo?\",\n onOk: () => {\n setCurrentLanguage(value);\n },\n });\n return;\n } else {\n setCurrentLanguage(value);\n form.setFieldsValue({\n id: model?.id,\n tagName: res?.data.tagName,\n });\n }\n }}\n selectedCode={currentLanguage}\n />\n
\n )}\n
\n \n \n \n \n \n \n );\n};\n","import { PlusOutlined } from \"@ant-design/icons\";\nimport { Button, Col, Divider, Empty, Row, Select, Spin } from \"antd\";\nimport { DefaultOptionType } from \"antd/lib/select\";\nimport React, { useEffect, useState } from \"react\";\nimport { shallowEqual, useDispatch, useSelector } from \"react-redux\";\nimport { TagModel } from \"states/tag/tag.models\";\nimport { fetchTagList, tagListSelector } from \"states/tag/tag.slice\";\nimport { TagModalComponent } from \"./tag-modal\";\nexport interface ITagSelectorProps {\n value?: number | number[];\n isMultiple?: boolean;\n onChange?: (values?: TagModel | TagModel[]) => void;\n bordered?: boolean;\n textAlign?: \"right\";\n}\n\nexport function TagSelector(props: ITagSelectorProps) {\n const { value, isMultiple, onChange, bordered, textAlign } = props;\n const tagList = useSelector(tagListSelector, shallowEqual);\n const dispatch = useDispatch();\n const [isModal, setModal] = useState(false);\n const handleCloseModal = () => {\n setModal(false);\n };\n const handleOnModal = () => {\n setModal(true);\n };\n useEffect(() => {\n if (!value && tagList.length === 1 && onChange) {\n if (isMultiple) {\n onChange(tagList);\n } else {\n onChange(tagList[0]);\n }\n }\n }, [tagList]);\n\n return (\n \n {\n if (onChange) {\n if (!isMultiple) {\n const tag = tagList.find((m) => m.id === e);\n onChange(tag);\n return;\n }\n if (!e) {\n onChange([]);\n return;\n }\n const ids = e as number[];\n let tags = [...tagList].filter((tag) => ids.includes(tag.id));\n onChange(tags);\n }\n }}\n showSearch\n filterOption={(input, option: any) => option.label.props.children.props.children?.toLowerCase().indexOf(input?.toLowerCase()) >= 0\n }\n mode={isMultiple ? \"multiple\" : undefined}\n allowClear\n bordered={bordered}\n options={tagList.map(\n (tag) =>\n ({\n key: tag.id,\n value: tag.id,\n label: (\n \n {tag.tagName}\n \n ),\n } as DefaultOptionType)\n )}\n notFoundContent={}\n dropdownRender={(menu) => (\n
\n {menu}\n \n
\n }\n >\n Thêm mới\n \n
\n
\n )}\n >\n {\n dispatch(fetchTagList());\n }}\n isUpdate={false}\n />\n
\n );\n}\n","import { Card, Col, Input, Row, Select, Typography } from \"antd\";\nimport { TagSelector } from \"shared/components/tag/tag-selector\";\nimport { MceEditor } from \"shared/components/tinymce/mce-editor\";\nimport { UploadFileLocal } from \"shared/components/upload-file/upload-file\";\nimport { CoreResource, t } from \"shared/plugins/localization\";\nimport { cleanUnicode } from \"shared/plugins/string-helper\";\nimport { BlogCategoryModel } from \"states/blog-category/blog-category.models\";\nimport { BlogModel } from \"states/blog/blog.models\";\nimport { TagModel } from \"states/tag/tag.models\";\nconst { Option } = Select;\nexport interface IBlogInformationTabProps {\n model: BlogModel;\n onChange: (newModel: BlogModel) => void;\n blogCategories: BlogCategoryModel[];\n}\nexport function BlogInformationTab(props: IBlogInformationTabProps) {\n const { model, onChange, blogCategories } = props;\n return (\n \n \n \n \n Tiêu đề \n {\n onChange({\n ...model,\n title: e.target.value,\n slug: cleanUnicode(e.target.value),\n seoFields: {\n ...model.seoFields,\n metaTitle: e.target.value,\n },\n });\n }}\n placeholder={`Tiêu đề`}\n >\n \n \n Mô tả\n {\n onChange({ ...model, description: e });\n }}\n >\n \n \n Nội dung\n {\n onChange({ ...model, blogContent: e });\n }}\n >\n \n \n \n \n \n {\n onChange({ ...model, avatar: newFileList[0] });\n }}\n />\n \n \n \n Danh mục chính\n {\n onChange({ ...model, mainCategoryId: item });\n }}\n allowClear\n value={model?.mainCategoryId}\n showSearch\n filterOption={(input, option: any) =>\n option.children.toLowerCase().indexOf(input.toLowerCase()) >= 0\n }\n >\n {blogCategories &&\n blogCategories.map((cate) => (\n \n ))}\n \n \n \n \n Danh mục phụ\n \n {\n onChange({ ...model, relatedCategoryIds: item });\n }}\n allowClear\n value={model?.relatedCategoryIds ?? []}\n showSearch\n mode=\"multiple\"\n filterOption={(input, option: any) =>\n option.children.toLowerCase().indexOf(input.toLowerCase()) >= 0\n }\n >\n {blogCategories &&\n blogCategories.map((cate) => (\n \n ))}\n \n \n \n Tags: \n {\n values = values as TagModel[];\n onChange({\n ...model,\n tags: values,\n });\n }}\n isMultiple={true}\n value={model.tags ? model.tags.map((m) => m.id) : []}\n />\n \n \n \n \n );\n}\n","import { RollbackOutlined, SaveOutlined } from \"@ant-design/icons\";\nimport {\n Breadcrumb,\n Button,\n Col,\n message,\n Modal,\n Row,\n Select,\n Space,\n Tabs,\n} from \"antd\";\nimport { useEffect, useState } from \"react\";\nimport { shallowEqual, useDispatch, useSelector } from \"react-redux\";\nimport { Link, useHistory, useParams } from \"react-router-dom\";\nimport { setLoading } from \"states/global-value/global-value.slice\";\nimport { addBlog, getBlogByIdApi, updateBlog } from \"states/blog/blog.api\";\nimport {\n CreateBlogModel,\n BlogModel,\n UpdatedBlogModel,\n} from \"states/blog/blog.models\";\nimport { BlogCategoryModel } from \"states/blog-category/blog-category.models\";\nimport { searchBlogCategory } from \"states/blog-category/blog-category.api\";\nimport { t, CoreResource } from \"shared/plugins/localization\";\nimport { BlogInformationTab } from \"./components/blog-information-tab\";\nimport { CustomTheme } from \"shared/components/custom-theme/custom-theme\";\nimport { Seo } from \"shared/components/seo/seo\";\nimport { SeoModel } from \"shared/models/seo-model\";\nimport { fetchTagList } from \"states/tag/tag.slice\";\nimport { RootState } from \"app.store\";\nimport { LanguageSelector } from \"shared/components/language-selector\";\nimport useRefresh from \"shared/hooks/use-refresh\";\ninterface RouteParams {\n blogId: string;\n}\ninterface IAddUpdateBlogProps {}\n\nexport function AddUpdateBlog(props: IAddUpdateBlogProps) {\n const refresh = useRefresh();\n const clientLanguages = useSelector(\n (state: RootState) => state.localization.clientLanguages,\n shallowEqual\n );\n const [currentLanguage, setCurrentLanguage] = useState();\n const { blogId } = useParams();\n const [model, setModel] = useState({\n } as BlogModel);\n const [isUpdateMode, setIsUpdateMode] = useState(false);\n const [blogCategories, setBlogCategories] = useState([]);\n const dispatch = useDispatch();\n const getBlog = async () => {\n try {\n const res = await getBlogByIdApi(Number(blogId));\n setModel(res.data);\n } catch (error) {\n message.error(error?.response?.data?.error?.message ?? \"Lỗi hệ thôngs\");\n }\n };\n\n const getBlogCategoryies = async () => {\n try {\n const res = await searchBlogCategory({\n name: \"\",\n page: 1,\n pageSize: 1000,\n });\n setBlogCategories(res.data.results);\n } catch (error) {\n message.error(error?.response?.data?.error?.message ?? \"Lỗi hệ thống\");\n }\n };\n\n const onSaved = async () => {\n dispatch(setLoading(true));\n try {\n if (isUpdateMode) {\n const payload = {\n id: model?.id,\n title: model?.title,\n description: model?.description,\n blogContent: model?.blogContent,\n slug: model?.slug,\n seoFields: model?.seoFields,\n customizeTheme: model?.customizeTheme,\n customizeField: model?.customizeField,\n avatar: model?.avatar,\n mainCategoryId: model?.mainCategoryId,\n relatedCategoryIds: model?.relatedCategoryIds,\n sort: model?.sort,\n tagIds: model?.tags.map((x) => x.id),\n } as UpdatedBlogModel;\n await updateBlog(payload, currentLanguage);\n message.success(\"Cập nhật thành công\");\n } else {\n const payload = {\n title: model?.title,\n description: model?.description,\n blogContent: model?.blogContent,\n slug: model?.slug,\n seoFields: model?.seoFields,\n customizeTheme: model?.customizeTheme,\n avatar: model?.avatar,\n customizeField: model?.customizeField,\n mainCategoryId: model?.mainCategoryId,\n relatedCategoryIds: model?.relatedCategoryIds,\n tagIds: model?.tags?.map((x) => x.id),\n } as CreateBlogModel;\n await addBlog(payload, currentLanguage);\n message.success(\"Cập nhật thành công\");\n }\n dispatch(setLoading(false));\n refresh();\n } catch (error) {\n console.log(error);\n message.error(error?.response?.data?.error?.message ?? \"Lỗi hệ thống\");\n }\n dispatch(setLoading(false));\n };\n\n useEffect(() => {\n if (clientLanguages.length > 0 && !currentLanguage) {\n setCurrentLanguage(clientLanguages.find((m) => m.isDefault)?.langCode);\n }\n }, [clientLanguages]);\n\n useEffect(() => {\n if (document.location.href.indexOf(\"/add\") > -1) {\n setIsUpdateMode(false);\n } else {\n setIsUpdateMode(true);\n getBlog();\n }\n dispatch(fetchTagList());\n getBlogCategoryies();\n }, []);\n\n return (\n
\n \n \n \n \n Bài viết\n \n \n {(isUpdateMode ? \"Cập nhật \" : \"Thêm\") + \" bài viết\"}\n \n \n \n \n \n {isUpdateMode && (\n {\n const res = await getBlogByIdApi(model.id, value);\n if (!res.data.title) {\n Modal.confirm({\n title: \"Thông báo\",\n content:\n \"Nội dung chưa được khởi tạo cho ngôn ngữ này, bạn có muốn khởi tạo?\",\n onOk: () => {\n setCurrentLanguage(value);\n },\n });\n return;\n } else {\n setCurrentLanguage(value);\n setModel(res.data);\n }\n }}\n selectedCode={currentLanguage}\n />\n )}\n \n \n \n \n \n \n \n \n \n \n \n \n {\n setModel({ ...model, customizeTheme: changedModel });\n }}\n model={model.customizeTheme ?? {}}\n />\n \n \n {\n setModel({ ...model, slug, seoFields });\n }}\n />\n \n \n
\n );\n}\n","import { MenuOutlined } from \"@ant-design/icons\";\nimport { Modal } from \"antd\";\nimport Table, { ColumnsType } from \"antd/lib/table\";\nimport { useEffect, useState } from \"react\";\nimport {\n arrayMove,\n SortableContainer,\n SortableElement,\n SortableHandle,\n} from \"react-sortable-hoc\";\nimport {\n Cancel,\n Save,\n Sort,\n Title,\n} from \"shared/constants/define-localization\";\nimport { CoreResource, t } from \"shared/plugins/localization\";\n\nexport interface ISortableProps {\n title?: string;\n onOk: (result: SortItemModel[]) => Promise;\n onCancel: () => Promise;\n visible: boolean;\n model: SortItemModel[];\n}\n\nexport interface SortItemModel {\n key: string;\n title: string | Element | JSX.Element;\n sort: number;\n}\n\nexport function Sortable(props: ISortableProps) {\n const { title, onOk, visible, onCancel, model } = props;\n const [isLoading, setIsLoading] = useState(false);\n const [modelLocalState, setModelLocalState] = useState([]);\n \n const handleCloseModal = () => {\n onCancel();\n };\n\n const handleSubmitSort = async () => {\n setIsLoading(true);\n const payload = modelLocalState.map((item, index) => ({\n ...item,\n sort: index,\n }));\n await onOk(payload);\n setIsLoading(false);\n };\n\n const DragHandle = SortableHandle(() => (\n \n ));\n const columns: ColumnsType = [\n {\n title: \"Thứ tự\",\n dataIndex: \"sort\",\n width: \"100px\",\n className: \"drag-visible\",\n render: () => ,\n },\n {\n title:\"Tên\",\n dataIndex: \"title\",\n className: \"drag-visible\",\n render: (title: string | JSX.Element) => title,\n },\n ];\n const SortableItem = SortableElement((props: any) => );\n const SortableContainerElement = SortableContainer((props: any) => (\n \n ));\n const onSortEnd = ({\n oldIndex,\n newIndex,\n }: {\n oldIndex: number;\n newIndex: number;\n }) => {\n if (oldIndex !== newIndex) {\n const newData = arrayMove([...modelLocalState], oldIndex, newIndex);\n setModelLocalState(newData);\n }\n };\n\n const DraggableBodyRow = ({ ...restProps }) => {\n // function findIndex base on Table rowKey props and should always be a right array index\n const index =\n modelLocalState &&\n [...modelLocalState].findIndex(\n (s) => s.key === restProps[\"data-row-key\"]\n );\n return ;\n };\n const DraggableContainer = (props: any) => (\n \n );\n\n useEffect(() => {\n setModelLocalState([...model]);\n }, [model]);\n\n return (\n \n {title}\n \n }\n confirmLoading={isLoading}\n centered={true}\n visible={visible}\n onOk={handleSubmitSort}\n onCancel={handleCloseModal}\n okText={\"Lưu\"}\n cancelText={\"Hủy\"}\n >\n record.key}\n components={{\n body: {\n wrapper: DraggableContainer,\n row: DraggableBodyRow,\n },\n }}\n />\n \n );\n}\n\n\n","import React, { FC, useState, useEffect } from \"react\";\n\nimport {\n Table,\n Row,\n Col,\n Button,\n Input,\n message,\n Drawer,\n notification,\n Select,\n Space,\n Modal,\n} from \"antd\";\n\nimport { DeleteOutlined, ExclamationCircleOutlined, OrderedListOutlined, PlusCircleOutlined } from \"@ant-design/icons\";\nimport { ColumnsType } from \"antd/lib/table\";\nimport { PagedResult } from \"states/paged-result-model\";\nimport { useDebouncedCallback } from \"use-debounce/lib\";\n\nimport {\n RemovedBlogModel,\n SearchBlogRequestModel,\n BlogModel,\n} from \"states/blog/blog.models\";\nimport { removeBlog, searchBlog, updateSortBlogApi, updateSortListBlogApi } from \"states/blog/blog.api\";\nimport { Link } from \"react-router-dom\";\nimport { BlogCategoryModel } from \"states/blog-category/blog-category.models\";\nimport { searchBlogCategory } from \"states/blog-category/blog-category.api\";\nimport {\n CoreResource,\n momentDateTimeFormat,\n t,\n} from \"shared/plugins/localization\";\n\nimport { shallowEqual, useSelector } from \"react-redux\";\nimport { RootState } from \"app.store\";\nimport momentTZ from \"moment-timezone\";\nimport { Sortable, SortItemModel } from \"shared/components/sortable/sortable\";\nimport { UpdatedSortEntityModel } from \"shared/models/updated-sort-entity-model\";\ninterface IBlogProps { }\nconst { Option } = Select;\nconst Blog: FC = () => {\n const [selectedRowsKeys, setSelectedRowsKeys] = useState({\n idList: [],\n });\n const [isLoadingList, setIsLoadingList] = useState(false);\n const [isUpdateSort, setIsUpdateSort] = useState(false);\n const [pagedResults, setPagedResults] = useState(\n {} as PagedResult\n );\n\n const currentTimeZone = useSelector(\n (state: RootState) => state.globalValue.ianaTimeZone,\n shallowEqual\n );\n\n const [filterModel, setFilterModel] = useState({\n page: 1,\n pageSize: 20,\n });\n const [blogCategories, setBlogCategories] = useState([]);\n const rowSelection = {\n selectedRowsKeys,\n onChange: (selectedRowKeys: any) => {\n setSelectedRowsKeys({ ...selectedRowsKeys, idList: selectedRowKeys });\n },\n };\n const handleSortListBlog = async (sortList: SortItemModel[]) => {\n try {\n let payload = sortList.map(\n (item) =>\n ({\n id: Number(item.key),\n sort: item.sort,\n } as UpdatedSortEntityModel)\n );\n await updateSortListBlogApi(payload);\n setIsUpdateSort(false);\n handleSearch();\n } catch {\n message.error(\"Lỗi hệ thống\");\n }\n };\n const handleSortBlog = async (sort: SortItemModel) => {\n try {\n let payload = {\n id: Number(sort.key),\n sort: sort.sort,\n } as UpdatedSortEntityModel;\n await updateSortBlogApi(payload);\n } catch {\n message.error(\"Lỗi hệ thống\");\n }\n };\n const getBlogCategories = async () => {\n try {\n const res = await searchBlogCategory({\n name: \"\",\n page: 1,\n pageSize: 1000,\n });\n setBlogCategories(res.data.results);\n } catch (error) {\n message.error(\n error?.response?.data?.error?.message ??\n \"Lỗi hệ thống\"\n );\n }\n };\n const onEmptySelection = () => {\n setSelectedRowsKeys({ ...selectedRowsKeys, idList: [] });\n };\n\n const gotoPage = async (page: number,pageSize:number) => {\n setIsLoadingList(true);\n const result = await searchBlog({ ...filterModel, page,pageSize });\n result.data.results.forEach((m) => (m.key = m.id.toString()));\n setPagedResults(result.data);\n setIsLoadingList(false);\n };\n const handleSearch = useDebouncedCallback(() => {\n gotoPage(1,20);\n }, 500);\n const handleUpdateSort = useDebouncedCallback((sort: SortItemModel) => {\n handleSortBlog(sort);\n }, 500);\n\n const onRemoveBtn = () => {\n Modal.confirm({\n title: 'Thông báo',\n icon: ,\n content: 'Bạn có muốn xóa bài viết này không?',\n okText: 'Đồng ý',\n cancelText: 'Hủy bỏ',\n onOk: async () => {\n try {\n await removeBlog(selectedRowsKeys);\n setSelectedRowsKeys({ ...selectedRowsKeys, idList: [] });\n handleSearch();\n message.success(\"Cập nhật thành công\");\n } catch (error) {\n message.error(\n error?.response?.data?.error?.message ??\n \"Lỗi hệ thống\"\n );\n }\n }\n });\n };\n\n const columns: ColumnsType = [\n {\n title: \"Id\",\n dataIndex: \"id\",\n key:\"id\",\n width:\"40px\",\n render: (id: string, item) => (\n \n {id}\n \n ),\n },\n {\n title: \"Tiêu đề\",\n dataIndex: \"title\",\n key: \"title\",\n render: (title: string, item) => (\n \n {title}\n \n ),\n },\n {\n title: \"Đường dẫn\",\n dataIndex: \"slug\",\n key: \"slug\",\n render: (slug: string) => {slug},\n },\n {\n title: \"Lượt xem\",\n dataIndex: \"viewCount\",\n key: \"viewCount\",\n render: (viewCount: number) => {viewCount},\n },\n {\n title: \"Ngày tạo\",\n dataIndex: \"creationTime\",\n key: \"creationTime\",\n render: (creationTime: Date) => (\n \n {currentTimeZone && creationTime && momentTZ(creationTime)\n .tz(currentTimeZone)\n .format(momentDateTimeFormat())}\n \n ),\n },\n {\n title: \"Lần cập nhật cuối\",\n dataIndex: \"lastModificationTime\",\n key: \"lastModificationTime\",\n render: (lastModificationTime: Date) => (\n \n {lastModificationTime && currentTimeZone && momentTZ(lastModificationTime ?? new Date())\n .tz(currentTimeZone)\n .format(momentDateTimeFormat())}\n \n ),\n },\n {\n title: \"Sắp xếp\",\n dataIndex: \"sort\",\n key: \"sort\",\n render: (sort: number, item) => \n {\n handleSortBlog({\n key: item.id.toString(),\n sort: Number(e.target.value)\n } as SortItemModel)\n item.sort = Number(e.target.value);\n setPagedResults({ ...pagedResults })\n }}\n >\n ,\n },\n ];\n\n useEffect(() => {\n handleSearch();\n }, [filterModel]);\n useEffect(() => {\n getBlogCategories();\n }, []);\n return (\n
\n \n \n {\n setFilterModel({ ...filterModel, title: e.target.value });\n }}\n >\n \n \n {\n setFilterModel({ ...filterModel, blogCategoryId: value });\n }}\n allowClear\n value={filterModel?.blogCategoryId}\n showSearch\n filterOption={(input, option: any) =>\n option.children.toLowerCase().indexOf(input.toLowerCase()) >= 0\n }\n >\n {blogCategories &&\n blogCategories.map((blogCate) => (\n \n ))}\n \n \n \n {\n setFilterModel({ ...filterModel, sort: value });\n }}\n allowClear\n value={filterModel?.sort}\n showSearch\n filterOption={(input, option: any) =>\n option.children.toLowerCase().indexOf(input.toLowerCase()) >= 0\n }\n >\n \n \n \n \n \n \n \n \n \n {\n setIsUpdateSort(true);\n }}\n type=\"default\"\n icon={}\n >\n {\"Sắp xếp\"}\n \n \n \n \n \n 0\n ? true\n : false\n }\n extra={}\n >\n Xóa {selectedRowsKeys.idList.length.toString()} dòng\n }\n >\n\n \n 0\n ? pagedResults?.results?.map((item) => ({\n key: item.id.toString(),\n title: item.title,\n sort: item.sort ?? 0,\n }))\n : []\n }\n onCancel={async () => {\n setIsUpdateSort(false);\n }}\n onOk={handleSortListBlog}\n title={`Sắp xếp thứ tự sản phẩm`}\n visible={isUpdateSort}\n >\n
\n );\n};\n\nexport default Blog;\n","import { Select } from \"antd\";\nimport { RootState } from \"app.store\";\nimport { useEffect } from \"react\";\nimport { shallowEqual, useSelector } from \"react-redux\";\nimport { BranchModel } from \"states/branch/branch.models\";\n\nexport interface IBranchSelectorProps {\n value?: number | number[];\n isMultiple?: boolean;\n onChange?: (branch?: BranchModel | BranchModel[]) => void;\n bordered?: boolean;\n textAlign?: \"right\";\n}\n\nexport function BranchSelector(props: IBranchSelectorProps) {\n const { value, isMultiple, onChange, bordered, textAlign } = props;\n const branchList = useSelector(\n (state: RootState) => state.branch.branchList,\n shallowEqual\n );\n\n useEffect(() => {\n if (!value && branchList.length === 1 && onChange) {\n if (isMultiple) {\n onChange(branchList);\n } else {\n onChange(branchList[0]);\n }\n }\n }, [branchList]);\n\n return (\n {\n if (onChange) {\n if (!isMultiple) {\n const branch = branchList.find((m) => m.id === e);\n onChange(branch);\n return;\n }\n if (!e) {\n onChange([]);\n return;\n }\n const ids = e as number[];\n const branchs = [] as BranchModel[];\n ids.forEach((id) => {\n const branch = branchList.find((m) => m.id === id);\n if (branch) {\n branchs.push(branch);\n }\n });\n onChange(branchs);\n }\n }}\n showSearch\n filterOption={(input, option: any) =>\n option.children.toLowerCase().indexOf(input.toLowerCase()) >= 0\n }\n mode={isMultiple ? \"multiple\" : undefined}\n allowClear\n bordered={bordered}\n >\n {branchList.map((branch) => (\n {branch.name}\n ))}\n \n );\n}\n","import { FC, useState, useEffect } from \"react\";\nimport { Input, Select, Modal, Form, Switch } from \"antd\";\n\nimport {\n CreateStaffModel,\n StaffModel,\n UpdatedStaffModel,\n} from \"states/staff/staff.models\";\nimport { addStaff, getStaffById, updateStaff } from \"states/staff/staff.api\";\nimport { Store } from \"antd/lib/form/interface\";\nimport { useForm } from \"antd/lib/form/Form\";\nimport { t, CoreResource } from \"shared/plugins/localization\";\nimport {\n Cancel,\n DefaultErrorMessage,\n Email,\n FirstName,\n IsActive,\n LastName,\n NotificationText,\n Permission,\n Phone,\n Save,\n TheFieldIsRequired,\n} from \"shared/constants/define-localization\";\nimport { getRoles } from \"states/role-management/role-management.api\";\nimport { RoleManagementModel } from \"states/role-management/role-management.models\";\nimport { BranchSelector } from \"shared/components/branch/branch-selector\";\nimport { BranchModel } from \"states/branch/branch.models\";\n\ninterface IStaffModalProps {\n model: StaffModel;\n onModal: boolean;\n closeModal: () => void;\n onSuccess: () => void;\n isUpdate: boolean;\n}\nexport const StaffModalComponent: FC = (props) => {\n const { model, onModal, closeModal, onSuccess, isUpdate } = props;\n const [form] = useForm();\n const [isLoading, setLoading] = useState(false);\n const [roleDropdown, setRoleDropdown] = useState([]);\n const [branchIds, setBranchIds] = useState([]);\n\n const handleCloseModal = () => closeModal();\n const onFinish = async (values: Store) => {\n setLoading(true);\n try {\n if (isUpdate) {\n let payload: UpdatedStaffModel = {\n ...values,\n id: values.id,\n firstName: values.firstName,\n lastName: values.lastName,\n active: values.active,\n roleIds: values.roleIds,\n branchIds: branchIds,\n isAccessAllBranch: values.isAccessAllBranch,\n };\n await updateStaff(payload);\n } else {\n let payload: CreateStaffModel = {\n ...values,\n firstName: values.firstName,\n lastName: values.lastName,\n phone: values.phone,\n email: values.email,\n active: values.active,\n roleIds: values.roleIds,\n branchIds: branchIds,\n isAccessAllBranch: values.isAccessAllBranch,\n };\n await addStaff(payload);\n }\n handleCloseModal();\n setLoading(false);\n Modal.success({\n title: \"Successfully\",\n content: t(CoreResource, \"UpdateDataSuccessfully\"),\n });\n onSuccess();\n } catch (error) {\n Modal.error({\n title: \"Thông báo\",\n content:\n error?.response?.data?.error?.message ??\n \"Lỗi hệ thống\",\n });\n setLoading(false);\n }\n };\n\n const onFinishFailed = (errorInfo: any) => {\n console.log(\"Failed:\", errorInfo);\n };\n\n const onSubmit = () => {\n form.submit();\n };\n const onReset = () => {\n form.resetFields();\n };\n const onFill = () => {\n form.setFieldsValue({\n id: model?.id,\n email: model?.email,\n phone: model?.phone,\n firstName: model?.firstName,\n lastName: model?.lastName,\n active: model?.active,\n roleIds: model?.roleIds,\n isAccessAllBranch: model?.isAccessAllBranch,\n });\n setBranchIds(model.branchIds);\n };\n\n useEffect(() => {\n if (!isUpdate) {\n onReset();\n } else {\n onFill();\n }\n }, [onModal]);\n\n useEffect(() => {\n getRoles().then((res) => {\n setRoleDropdown(res.data);\n });\n }, []);\n\n return (\n {}}\n // end\n >\n {isUpdate ? \"Cập nhật nhân viên\" : \"Thêm nhân viên\"}\n \n }\n confirmLoading={isLoading}\n centered={true}\n visible={onModal}\n onOk={onSubmit}\n onCancel={handleCloseModal}\n okText={\"Lưu\"}\n cancelText={\"Hủy\"}\n >\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n !!option?.label &&\n option?.label\n .toString()\n .toLowerCase()\n .indexOf(input.toLowerCase()) >= 0\n }\n >\n {roleDropdown.map((appRole) => (\n \n {appRole.name}\n \n ))}\n \n \n \n \n \n \n \n \n \n {\n const branches = selected as BranchModel[];\n setBranchIds(branches.map((m) => m.id));\n }}\n />\n \n \n \n \n );\n};\n","import QRCode from \"qrcode\";\nimport React, { useEffect, useState } from \"react\";\ninterface IQRCodeProps{\n value: string;\n}\nexport function QRCodeComponent(props: IQRCodeProps) {\n const {value} = props;\n const [dataUrl,setDataUrl] = useState(\"\");\n const generateQR = async () => {\n try {\n setDataUrl(await QRCode.toDataURL(value,{ errorCorrectionLevel: \"H\"}));\n } catch (err) {\n console.error(err)\n }\n }\n useEffect(() => {\n generateQR();\n },[value])\n \n return (
\n {dataUrl}\n
);\n}\n","import { USER_MANAGEMENT_API } from './../../shared/constants/api-endpoint';\nimport { apiClient } from \"shared/plugins/http-service\";\n\nexport const getQrCode = async (userId:string) => {\n const createResponse = await apiClient.getHttp(\n `${USER_MANAGEMENT_API}/${userId}/get_qr_code`,\n );\n return createResponse;\n};\n\n","import { FC, useState, useEffect } from \"react\";\nimport { Input, Select, Modal, Form, Switch } from \"antd\";\n\nimport { t, CoreResource } from \"shared/plugins/localization\";\nimport { Cancel, Save } from \"shared/constants/define-localization\";\n\nimport { QRCodeComponent } from \"shared/components/qr-code/qr-code\";\nimport { getQrCode } from \"states/user-management/user-management.api\";\n\ninterface IStaffModalProps {\n userId: string;\n onModal: boolean;\n closeModal: () => void;\n}\nexport const StaffQrModalComponent: FC = (props) => {\n const { userId, onModal, closeModal } = props;\n const [passCode, setPassCode] = useState(\"\");\n const [loading, setLoading] = useState(false);\n const handleCloseModal = () => closeModal();\n useEffect(() => {\n if (userId) {\n setLoading(true);\n getQrCode(userId)\n .then((result) => {\n setLoading(false);\n setPassCode(result.data);\n })\n .catch((error) => {\n setLoading(false);\n });\n }\n }, [onModal]);\n const getCurrentHost = () => {\n return `${window.location.protocol === \"http:\" ? \"http://\" : \"https://\"}${\n window.location.hostname\n }/admin/login`;\n };\n return (\n {}}\n // end\n >\n Qr code đăng nhập cho nhân viên\n \n }\n confirmLoading={loading}\n centered={true}\n visible={onModal}\n onCancel={() => {\n handleCloseModal();\n setPassCode(\"\");\n }}\n cancelText={\"Hủy\"}\n >\n {passCode && (\n \n )}\n \n );\n};\n","import React, { FC, useState, useEffect } from \"react\";\n\nimport { Table, Row, Col, Button, Input, Typography, Tag } from \"antd\";\n\nimport { PlusCircleOutlined } from \"@ant-design/icons\";\nimport { ColumnsType } from \"antd/lib/table\";\nimport { PagedResult } from \"states/paged-result-model\";\nimport { useDebouncedCallback } from \"use-debounce/lib\";\n\nimport {\n RemovedStaffModel,\n SearchStaffRequestModel,\n StaffModel,\n} from \"states/staff/staff.models\";\nimport { searchStaff } from \"states/staff/staff.api\";\nimport { StaffModalComponent } from \"./staff-modal\";\nimport { t, CoreResource } from \"shared/plugins/localization\";\nimport {\n Email,\n IsActive,\n Name,\n Phone,\n StaffText,\n} from \"shared/constants/define-localization\";\nimport { useDispatch } from \"react-redux\";\nimport { fetchBranchList } from \"states/branch/branch.slice\";\nimport { StaffQrModalComponent } from \"./staff-qr-modal\";\ninterface IGetQrModal {\n userId: string;\n toggleModal: boolean;\n}\ninterface IStaffProps {}\nconst Staff: FC = () => {\n const dispatch = useDispatch();\n const [selectedRowsKeys, setSelectedRowsKeys] = useState({\n idList: [],\n });\n const [isLoadingList, setIsLoadingList] = useState(false);\n const [pagedResults, setPagedResults] = useState(\n {} as PagedResult\n );\n const [isModal, setModal] = useState(false);\n const [isUpdate, setUpdate] = useState(false);\n const [model, setModel] = useState({} as StaffModel);\n const [qrModal, setQrModal] = useState({} as IGetQrModal);\n const [filterModel, setFilterModel] = useState({\n page: 1,\n pageSize: 20,\n });\n\n const rowSelection = {\n selectedRowsKeys,\n onChange: (selectedRowKeys: any) => {\n setSelectedRowsKeys({ ...selectedRowsKeys, idList: selectedRowKeys });\n },\n };\n\n const onEmptySelection = () => {\n setSelectedRowsKeys({ ...selectedRowsKeys, idList: [] });\n };\n\n const handleCloseModal = () => {\n setModal(false);\n };\n const handleAddStaff = () => {\n setModel({} as StaffModel);\n setModal(true);\n setUpdate(false);\n };\n const gotoPage = async (page: number) => {\n setIsLoadingList(true);\n const result = await searchStaff({ ...filterModel, page });\n result.data.results.forEach((m) => (m.key = m.id.toString()));\n setPagedResults(result.data);\n setIsLoadingList(false);\n };\n const handleSearch = useDebouncedCallback(() => {\n gotoPage(1);\n }, 500);\n\n const columns: ColumnsType = [\n {\n title: \"Tên\",\n dataIndex: \"firstName\",\n key: \"firstName\",\n render: (firstName: string, item) => (\n \n {\n setModel(item);\n setModal(true);\n setUpdate(true);\n }}\n >\n {item.lastName} {firstName}\n \n \n ),\n },\n {\n title: \"Địa chỉ email\",\n dataIndex: \"email\",\n key: \"email\",\n render: (email: string) => {email},\n },\n {\n title: \"Số điện thoại\",\n dataIndex: \"phone\",\n key: \"phone\",\n render: (phone: string) => {phone},\n },\n {\n title: t(CoreResource, IsActive),\n dataIndex: \"active\",\n key: \"active\",\n render: (active: boolean) => (\n <>\n {active ? (\n Active\n ) : (\n InActive\n )}\n \n ),\n },\n {\n title: \"QR Code\",\n dataIndex: \"userProfileId\",\n key: \"userProfileId\",\n render: (userProfileId: string, item: StaffModel) => (\n <>\n {\n {\n setQrModal({\n ...qrModal,\n toggleModal: true,\n userId: userProfileId,\n });\n }}\n >\n Get QR Code\n \n }\n \n ),\n },\n ];\n\n useEffect(() => {\n handleSearch();\n }, [filterModel]);\n\n useEffect(() => {\n document.title = t(CoreResource, StaffText);\n dispatch(fetchBranchList());\n }, []);\n\n return (\n
\n \n \n {\n setFilterModel({ ...filterModel, keyword: e.target.value });\n }}\n >\n \n\n \n }\n >\n Thêm nhân viên\n \n \n \n \n\n \n {\n setQrModal({ ...qrModal, userId: \"\", toggleModal: false });\n }}\n />\n
\n );\n};\n\nexport default Staff;\n","import React, { FC, useState, useEffect } from \"react\";\n\nimport {\n Table,\n Row,\n Col,\n Button,\n Input,\n message,\n Drawer,\n notification,\n} from \"antd\";\n\nimport { DeleteOutlined, PlusCircleOutlined } from \"@ant-design/icons\";\nimport { ColumnsType } from \"antd/lib/table\";\nimport { PagedResult } from \"states/paged-result-model\";\nimport { useDebouncedCallback } from \"use-debounce/lib\";\nimport {\n SearchThemeSettingRequestModel,\n ThemeSettingModel,\n} from \"states/theme-setting/theme-setting.models\";\nimport {\n removeThemeSettingApi,\n searchThemeSettingApi,\n} from \"states/theme-setting/theme-setting.api\";\nimport { Link } from \"react-router-dom\";\nimport { t, CoreResource } from \"shared/plugins/localization\";\nimport { ThemeListText } from \"shared/constants/define-localization\";\nimport {\n ADD_THEME_SETTING_ROUTE,\n UPDATE_THEME_SETTING_ROUTE,\n} from \"shared/constants/routes\";\nimport { RemovedEntityModel } from \"shared/models/removed-entity-model\";\nconst ThemeSettingPage: FC = () => {\n const [selectedRowsKeys, setSelectedRowsKeys] = useState<\n RemovedEntityModel\n >({\n idList: [],\n });\n const [isLoadingList, setIsLoadingList] = useState(false);\n const [pagedResults, setPagedResults] = useState(\n {} as PagedResult\n );\n const [filterModel, setFilterModel] =\n useState({\n page: 1,\n pageSize: 20,\n });\n\n const rowSelection = {\n selectedRowsKeys,\n onChange: (selectedRowKeys: any) => {\n setSelectedRowsKeys({ ...selectedRowsKeys, idList: selectedRowKeys });\n },\n };\n const onEmptySelection = () => {\n setSelectedRowsKeys({ ...selectedRowsKeys, idList: [] });\n };\n useEffect(() => {\n handleSearch();\n }, [filterModel]);\n useEffect(() => {\n document.title = t(CoreResource, ThemeListText);\n }, []);\n const gotoPage = async (page: number) => {\n setIsLoadingList(true);\n const result = await searchThemeSettingApi({ ...filterModel, page });\n result.data.results.forEach((e) => {\n e.key = e.id;\n });\n setPagedResults(result.data);\n setIsLoadingList(false);\n };\n const handleSearch = useDebouncedCallback(() => {\n gotoPage(1);\n }, 500);\n\n const onRemoveBtn = () => {\n const key = `open${Date.now()}`;\n const btn = (\n {\n try {\n await removeThemeSettingApi(selectedRowsKeys);\n notification.close(key);\n setSelectedRowsKeys({ ...selectedRowsKeys, idList: [] });\n handleSearch();\n message.success(\"Cập nhật thành công\");\n } catch (error) {\n message.error(\n error?.response?.data?.error?.message ?? \"Lỗi hệ thống\"\n );\n }\n }}\n >\n Xóa\n \n );\n notification.open({\n message: \"Bạn có muốn xóa không ?\",\n key,\n btn,\n placement: \"bottomLeft\",\n });\n };\n\n const columns: ColumnsType = [\n {\n title: \"Tên giao diện\",\n key: \"abc1\",\n render: (item: ThemeSettingModel) => (\n \n \n {item.name}\n \n \n ),\n },\n {\n title: \"THEME_KEY\",\n key: \"abc\",\n render: (item: ThemeSettingModel) => (\n \n \n {item.slug}\n \n \n ),\n },\n ];\n return (\n
\n \n \n {\n setFilterModel({ ...filterModel, key: e.target.value });\n }}\n >\n \n \n \n \n \n \n \n \n 0\n ? true\n : false\n }\n >\n }\n >\n Xóa {selectedRowsKeys.idList.length.toString()} dòng\n \n \n
\n );\n};\n\nexport default ThemeSettingPage;\n","import { useEffect, useState } from \"react\";\nimport { ThemeSettingModel } from \"states/theme-setting/theme-setting.models\";\nimport {\n Breadcrumb,\n Button,\n Col,\n Input,\n message,\n Modal,\n Row,\n Select,\n Space,\n} from \"antd\";\nimport { Link, useHistory, useParams } from \"react-router-dom\";\nimport { RollbackOutlined, SaveOutlined } from \"@ant-design/icons\";\nimport _ from \"lodash\";\nimport { t, CoreResource } from \"shared/plugins/localization\";\nimport {\n TheFieldIsRequired,\n Theme,\n ThemeManagerText,\n} from \"shared/constants/define-localization\";\nimport {\n ThemeTemplateItem,\n ThemeTemplateModel,\n} from \"states/theme-template/theme-template.models\";\nimport { getThemeTemplateList } from \"states/theme-template/theme-template.api\";\nimport {\n convertToThemeTemplateItem,\n setValueFromTemplate,\n} from \"states/theme-setting/theme-setting.services\";\nimport {\n addThemeSettingApi,\n getThemeSettingByIdApi,\n updateThemeSettingApi,\n} from \"states/theme-setting/theme-setting.api\";\nimport { shallowEqual, useDispatch, useSelector } from \"react-redux\";\nimport { setLoading } from \"states/global-value/global-value.slice\";\nimport {\n ADD_THEME_SETTING_ROUTE,\n THEME_SETTING_ROUTE,\n} from \"shared/constants/routes\";\nimport { ThemeSettingGroup } from \"shared/components/custom-theme/theme-setting-group\";\nimport { RootState } from \"app.store\";\nimport { LanguageSelector } from \"shared/components/language-selector\";\n\ntype TParams = { id: string };\n\nconst AddUpdateThemeSetting = () => {\n const { id } = useParams();\n const dispatch = useDispatch();\n const clientLanguages = useSelector(\n (state: RootState) => state.localization.clientLanguages,\n shallowEqual\n );\n const [currentLanguage, setCurrentLanguage] = useState();\n const history = useHistory();\n const [model, setModel] = useState({\n value: {},\n } as ThemeSettingModel);\n const [themeTemplateList, setThemeTemplateList] = useState<\n ThemeTemplateModel[]\n >([]);\n const [currentTemplate, setCurrentTemplate] = useState();\n const [action, setAction] = useState(\"\");\n\n const _handleGetUpdate = async () => {\n try {\n const response = await getThemeSettingByIdApi(id);\n setModel(response.data);\n } catch (error) {\n message.error(error?.response?.data?.error?.message ?? \"Lỗi hệ thống\");\n }\n };\n const onSaved = async () => {\n if (model.name === null || model.name === \"\") {\n message.error(t(CoreResource, TheFieldIsRequired, \"Tên\"));\n return false;\n }\n if (model.slug === null || model.slug === \"\") {\n message.error(\n t(CoreResource, TheFieldIsRequired, \"key\", t(CoreResource, Theme))\n );\n return false;\n }\n dispatch(setLoading(true));\n try {\n if (action === \"add\") {\n await addThemeSettingApi(model, currentLanguage);\n } else {\n await updateThemeSettingApi(model, currentLanguage);\n }\n message.success(\"Cập nhật thành công\");\n history.go(0);\n } catch (error) {\n message.error(error?.response?.data?.error?.message);\n }\n dispatch(setLoading(false));\n };\n\n const _handleChangeTemplate = (templateId: string) => {\n model.themeTemplateId = templateId;\n const template = themeTemplateList.find((m) => m.id === templateId);\n if (!template) return;\n const templateItem = convertToThemeTemplateItem(template);\n model.value = setValueFromTemplate(templateItem);\n setModel({ ...model });\n };\n\n const _handleOnChangeModelValue = (newModel: any) => {\n setModel({ ...model, value: newModel });\n };\n\n useEffect(() => {\n getThemeTemplateList().then((res) => {\n setThemeTemplateList(res.data);\n });\n if (document.location.href.indexOf(ADD_THEME_SETTING_ROUTE) > 0) {\n setAction(\"add\");\n } else {\n setAction(\"edit\");\n _handleGetUpdate();\n }\n document.title = t(CoreResource, ThemeManagerText);\n }, []);\n\n useEffect(() => {\n if (themeTemplateList.length > 0 && model.themeTemplateId) {\n const template = themeTemplateList.find(\n (m) => m.id === model.themeTemplateId\n );\n if (template) {\n const templateItem = convertToThemeTemplateItem(template);\n setCurrentTemplate(templateItem);\n }\n }\n }, [themeTemplateList, model.themeTemplateId]);\n\n useEffect(() => {\n if (clientLanguages.length > 0 && !currentLanguage) {\n setCurrentLanguage(clientLanguages.find((m) => m.isDefault)?.langCode);\n }\n }, [clientLanguages]);\n\n return (\n
\n \n \n {\" \"}\n \n \n Quản lí giao diện\n \n \n {action === \"add\" ? \"Thêm \" : \"Cập nhật \"} giao diện\n \n \n \n \n \n {action === \"edit\" && (\n {\n const res = await getThemeSettingByIdApi(\n model.id ?? \"\",\n value\n );\n if (!res.data.value) {\n Modal.confirm({\n title: \"Thông báo\",\n content:\n \"Nội dung chưa được khởi tạo cho ngôn ngữ này, bạn có muốn khởi tạo?\",\n onOk: () => {\n setCurrentLanguage(value);\n },\n });\n return;\n } else {\n setCurrentLanguage(value);\n setModel(res.data);\n }\n }}\n selectedCode={currentLanguage}\n />\n )}\n \n \n \n \n \n \n \n\n \n \n {\n setModel({ ...model, name: ev.target.value });\n }}\n />\n \n \n {\n setModel({ ...model, slug: ev.target.value });\n }}\n />\n \n \n \n option.children.toLowerCase().indexOf(input.toLowerCase()) >= 0\n }\n >\n {themeTemplateList.map((template) => (\n \n {template.name}\n \n ))}\n \n \n \n {currentTemplate && (\n \n )}\n
\n );\n};\n\nexport default AddUpdateThemeSetting;\n","import {\n MENU_SETTING_API,\n MENU_SETTING_API_SEARCH,\n} from \"shared/constants/api-endpoint\";\nimport { apiClient } from \"shared/plugins/http-service\";\nimport { PagedResult } from \"states/paged-result-model\";\nimport {\n ICreateMenuSettingModel,\n IRemovedMenuSettingModel,\n ISearchMenuSettingRequestModel,\n IMenuSettingModel,\n IUpdatedMenuSettingModel,\n} from \"./menu-setting.models\";\n\nexport const searchMenuSetting = async (\n searchMenuSettingPageRequestModel: ISearchMenuSettingRequestModel,\n langCode?: string\n) => {\n const createResponse = await apiClient.postHttp<\n PagedResult\n >(`${MENU_SETTING_API_SEARCH}`, searchMenuSettingPageRequestModel,\n { params: { langCode } });\n return createResponse;\n};\n\nexport const removeMenuSettings = async (\n removedModel: IRemovedMenuSettingModel\n) => {\n const response = await apiClient.postHttp(\n `${MENU_SETTING_API}/remove_list`,\n removedModel\n );\n return response;\n};\n\nexport const removeMenuSetting = async (id: number) => {\n const response = await apiClient.deleteHttp(`${MENU_SETTING_API}/${id}`);\n return response;\n};\n\nexport const getMenuSettingById = async (id: number, langCode?: string) => {\n return await apiClient.getHttp(\n `${MENU_SETTING_API}/${id}`,\n {\n params: { langCode },\n }\n );\n};\n\nexport const addMenuSetting = async (model: ICreateMenuSettingModel, langCode?: string) => {\n const response = await apiClient.postHttp(\n `${MENU_SETTING_API}`,\n model,\n {\n params: { langCode },\n }\n );\n return response;\n};\n\nexport const updateMenuSetting = async (model: IUpdatedMenuSettingModel, langCode?: string) => {\n const response = await apiClient.putHttp(\n `${MENU_SETTING_API}`,\n model,\n {\n params: { langCode },\n }\n );\n return response;\n};\n","import React, { FC, useEffect, useState } from \"react\";\nimport { Input, Modal, Form } from \"antd\";\n\nimport { IMenuSettingModel } from \"states/menu-setting/menu-setting.models\";\nimport { useForm } from \"antd/lib/form/Form\";\nimport { Store } from \"antd/lib/form/interface\";\nimport { UploadFileLocal } from \"shared/components/upload-file/upload-file\";\nimport { CoreResource, t } from \"shared/plugins/localization\";\nimport { AddTheField, Avatar, Cancel, Classify, ExtensionField, Name, Save, Slug, Sort, TheFieldIsRequired, UpdateTheField } from \"shared/constants/define-localization\";\n\ninterface IMenuSettingChildrenModalProps {\n model: IMenuSettingModel;\n onUpdate: boolean;\n onModal: boolean;\n index?: number;\n onSave: (model: IMenuSettingModel) => void;\n closeModal: () => void;\n}\nexport const MenuSettingChildrenModal: FC = (\n props\n) => {\n const { model, onUpdate, onModal, index, closeModal, onSave } = props;\n const [isLoading, setLoading] = useState(false);\n const [images, setImages] = useState([]);\n const [form] = useForm();\n const handleCloseModal = () => closeModal();\n const onFinish = async (values: Store) => {\n setLoading(true);\n let payload: IMenuSettingModel = {\n ...values,\n id: values.id,\n name: values.name,\n slug: values.slug,\n images: images,\n extensionFields:values.extensionFields,\n sort: values.sort,\n menuType: values.menuType,\n data: values.data??[],\n };\n onSave(payload);\n handleCloseModal();\n setLoading(false);\n };\n const onFinishFailed = (errorInfo: any) => {\n console.log(\"Failed:\", errorInfo);\n };\n const onSubmit = () => {\n form.submit();\n };\n const onReset = () => {\n form.resetFields();\n setImages([]);\n };\n const onFill = () => {\n form.setFieldsValue(model);\n setImages(model?.images??[]);\n };\n useEffect(() => {\n if (!onUpdate) {\n onReset();\n } else {\n onFill();\n }\n }, [onModal]);\n\n return (\n
\n {}}\n // end\n >\n {onUpdate ? t(CoreResource,UpdateTheField, \"menu\") : t(CoreResource,AddTheField, \"menu\")}\n
\n }\n confirmLoading={isLoading}\n centered={true}\n visible={onModal}\n onOk={onSubmit}\n onCancel={handleCloseModal}\n okText={\"Lưu\"}\n cancelText={\"Hủy\"}\n >\n \n \n \n \n \n \n \n \n {\n setImages(newFileList);\n }}\n />\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n","import React, { FC, useState, useEffect, useMemo } from \"react\";\nimport { Button, Collapse, Popconfirm, Space } from \"antd\";\n\nimport {\n PlusCircleOutlined,\n DeleteOutlined,\n SettingOutlined,\n OrderedListOutlined,\n} from \"@ant-design/icons\";\nimport {\n IMenuSettingChildren,\n IMenuSettingModel,\n} from \"states/menu-setting/menu-setting.models\";\nimport { MenuSettingChildrenModal } from \"./menu-modal-chilren\";\nimport { t, CoreResource } from \"shared/plugins/localization\";\nimport {\n Cancel,\n MenuText,\n OkText,\n QuestionRemove,\n Sort,\n} from \"shared/constants/define-localization\";\nimport { Sortable, SortItemModel } from \"shared/components/sortable/sortable\";\nimport { nanoid } from \"@reduxjs/toolkit\";\n\ninterface IMenuSettingItemProps {\n menuItems: IMenuSettingChildren[];\n onRemove: (id: number) => void;\n onAdd: (model: IMenuSettingModel) => void;\n onUpdate: (id: number, model: IMenuSettingModel) => void;\n onChange?: () => void;\n}\nconst { Panel } = Collapse;\nexport const MenuSettingItemList: FC = (props) => {\n const { menuItems, onRemove, onAdd, onUpdate, onChange } = props;\n const menuItemsMemo = useMemo(()=>{\n menuItems?.forEach((item,index) => {\n item.key = nanoid();\n });\n return menuItems;\n },[menuItems])\n const [model, setModel] = useState(\n {} as IMenuSettingModel\n );\n const [isUpdateSort, setIsUpdateSort] = useState(false);\n const [isModal, setModal] = useState(false);\n const [isUpdate, setUpdate] = useState(false);\n const [indexChildren, setIndexChildren] = useState(0);\n const handleToggleModal = () => {\n setModel({} as IMenuSettingModel);\n setModal(!isModal);\n };\n const genExtra = (id: number) => (\n \n {\n // If you don't want click extra trigger collapse, you can prevent this:\n event.stopPropagation();\n handleToggleModal();\n setIndexChildren(id);\n setUpdate(false);\n }}\n icon={}\n >\n {\n // If you don't want click extra trigger collapse, you can prevent this:\n event.stopPropagation();\n }}\n onConfirm={() => removeItemChildren(id)}\n okText={\"Đồng ý\"}\n cancelText={\"Hủy\"}\n >\n {\n // If you don't want click extra trigger collapse, you can prevent this:\n event.stopPropagation();\n setIndexChildren(id);\n }}\n icon={}\n >\n \n {\n // If you don't want click extra trigger collapse, you can prevent this:\n event.stopPropagation();\n if(menuItemsMemo[id]?.data?.length > 0){\n setIsUpdateSort(true);\n }\n }}\n icon={}\n >\n {\n // If you don't want click extra trigger collapse, you can prevent this:\n event.stopPropagation();\n handleToggleModal();\n setIndexChildren(id);\n setUpdate(true);\n setModel({ ...menuItems[id] });\n }}\n icon={}\n >\n \n );\n const onAddMenuChildren = (menuModel: IMenuSettingModel) => {\n let modelTemp = { ...menuItems[indexChildren] };\n menuModel.id = Date.now();\n modelTemp.data.push(menuModel);\n onChange && onChange();\n };\n const removeItemChildren = (i: number) => {\n menuItems.splice(i, 1);\n onChange && onChange();\n };\n const onUpdateItemChildren = (i: number, menuObj: IMenuSettingModel) => {\n menuItems[i] = menuObj;\n onChange && onChange();\n };\n \n return (\n
\n {menuItemsMemo?.map((menuItem, index) => (\n
\n 0 ? [menuItem?.name] : []}\n expandIconPosition={`right`}\n bordered={menuItem.data.length > 0 ? true : false}\n >\n 0 ? true : false}\n header={menuItem?.name}\n key={menuItem?.name}\n extra={genExtra(index)}\n >\n \n ({\n key: item?.key,\n title: item.name,\n sort: item.sort ?? 0,\n })) as SortItemModel[]\n }\n onCancel={async () => {\n setIsUpdateSort(false);\n }}\n onOk={async (results) => {\n menuItem?.data.forEach((m) => {\n let old = results.some((r) => r.key === m.key);\n if (old) {\n m.sort =\n results.find((r) => r.key === m.key)?.sort ??\n 0;\n }\n });\n menuItem?.data.sort((a, b) => a.sort - b.sort);\n onChange && onChange();\n setIsUpdateSort(false);\n }}\n title={`${\"Sắp xếp\"} ${t(CoreResource, MenuText)}`}\n visible={isUpdateSort}\n >\n \n \n
\n ))}\n {\n isUpdate\n ? onUpdateItemChildren(indexChildren, model)\n : onAddMenuChildren(model);\n }}\n closeModal={handleToggleModal}\n onUpdate={isUpdate}\n />\n
\n );\n};\n","import React, { FC, useState, useEffect, useMemo } from \"react\";\nimport { Button, Collapse, message, Modal, Popconfirm, Space } from \"antd\";\n\nimport {\n PlusCircleOutlined,\n DeleteOutlined,\n SettingOutlined,\n OrderedListOutlined,\n} from \"@ant-design/icons\";\nimport {\n IMenuSettingModel,\n IUpdatedMenuSettingModel,\n} from \"states/menu-setting/menu-setting.models\";\nimport { MenuSettingChildrenModal } from \"./menu-modal-chilren\";\nimport { MenuSettingItemList } from \"./menu-item-list\";\nimport {\n getMenuSettingById,\n removeMenuSetting,\n updateMenuSetting,\n} from \"states/menu-setting/menu-setting.api\";\nimport { t, CoreResource } from \"shared/plugins/localization\";\nimport { Cancel, DefaultErrorMessage, MenuText, OkText, QuestionRemove, Sort, UpdateDataSuccessfully } from \"shared/constants/define-localization\";\nimport { Sortable, SortItemModel } from \"shared/components/sortable/sortable\";\nimport { nanoid } from \"@reduxjs/toolkit\";\nimport { LanguageSelector } from \"shared/components/language-selector\";\nimport { shallowEqual, useSelector } from \"react-redux\";\nimport { RootState } from \"app.store\";\n\ninterface IMenuSettingItemProps {\n isRootMenu: boolean;\n menuItem: IMenuSettingModel;\n onSuccess: () => void;\n}\nconst { Panel } = Collapse;\nexport const MenuSettingItem: FC = (props) => {\n const { isRootMenu, menuItem, onSuccess } = props;\n const clientLanguages = useSelector(\n (state: RootState) => state.localization.clientLanguages,\n shallowEqual\n );\n const [currentLanguage, setCurrentLanguage] = useState();\n const [model, setModel] = useState(\n {} as IMenuSettingModel\n );\n const [currentModel, setCurrentModel] = useState(\n {} as IMenuSettingModel\n );\n const [isModal, setModal] = useState(false);\n const [isUpdate, setUpdate] = useState(false);\n const [isUpdateSort, setIsUpdateSort] = useState(false);\n const onRemoveBtn = async (id: number) => {\n try {\n removeMenuSetting(id);\n onSuccess();\n message.success(\"Cập nhật thành công\");\n } catch (error) {\n message.error(\n error?.response?.data?.error?.message ??\n \"Lỗi hệ thống\"\n );\n }\n };\n const genExtra = (id: number) => (\n \n {isRootMenu && (\n {\n event.stopPropagation();\n }}\n onChange={async (value) => {\n const res = await getMenuSettingById(menuItem.id ?? 0, value);\n if (!res.data.name) {\n Modal.confirm({\n title: \"Thông báo\",\n content:\n \"Nội dung chưa được khởi tạo cho ngôn ngữ này, bạn có muốn khởi tạo?\",\n onOk: () => {\n setCurrentLanguage(value);\n onUpdate(model,value);\n },\n });\n return;\n } else {\n setCurrentLanguage(value);\n setCurrentModel(res.data);\n }\n }}\n selectedCode={currentLanguage}\n />\n )}\n {\n // If you don't want click extra trigger collapse, you can prevent this:\n event.stopPropagation();\n setModal(true);\n setUpdate(false);\n setModel({} as IMenuSettingModel);\n }}\n icon={}\n >\n {\n // If you don't want click extra trigger collapse, you can prevent this:\n event.stopPropagation();\n }}\n onConfirm={() => onRemoveBtn(id)}\n okText={\"Đồng ý\"}\n cancelText={\"Hủy\"}\n >\n {\n // If you don't want click extra trigger collapse, you can prevent this:\n event.stopPropagation();\n }}\n icon={}\n >\n \n {\n // If you don't want click extra trigger collapse, you can prevent this:\n event.stopPropagation();\n if (model?.data?.length > 0) {\n setIsUpdateSort(true);\n }\n }}\n icon={}\n >\n {\n // If you don't want click extra trigger collapse, you can prevent this:\n event.stopPropagation();\n //handleToggleModal();\n setModal(true);\n setModel({ ...currentModel });\n setUpdate(true);\n }}\n icon={}\n >\n \n );\n const onUpdate = async (model: IMenuSettingModel, langCode?: string) => {\n try {\n var resovledCode = (langCode !== undefined ? langCode+\"-\": \"\");\n let payload: IUpdatedMenuSettingModel = {\n ...model,\n id: model.id ?? 0,\n name: resovledCode + model.name,\n slug: model.slug,\n images: model.images,\n sort: model.sort,\n data: model.data,\n extensionFields: model.extensionFields,\n menuType: model.menuType,\n };\n await updateMenuSetting(payload, langCode??currentLanguage);\n setCurrentModel({...payload});\n message.success(\"Cập nhật thành công\");\n } catch (error) {\n message.error(\n error?.response?.data?.error?.message ??\n \"Lỗi hệ thống\"\n );\n }\n };\n const onAddMenuChildren = (menuModel: IMenuSettingModel) => {\n let modelTemp = { ...currentModel };\n menuModel.id = Date.now();\n modelTemp.data.push(menuModel);\n onUpdate(modelTemp);\n };\n const removeItemChildren = (i: number) => {\n let modelTemp = { ...currentModel };\n modelTemp.data.splice(i, 1);\n onUpdate(modelTemp);\n };\n const onUpdateItemChildren = (i: number, menuObj: IMenuSettingModel) => {\n let modelTemp = { ...currentModel };\n modelTemp.data[i] = menuObj;\n onUpdate(modelTemp);\n };\n const onUpdateItem = (menuObj: IMenuSettingModel) => {\n let modelTemp = { ...currentModel };\n modelTemp = menuObj;\n onUpdate(modelTemp);\n };\n useEffect(() => {\n if (clientLanguages.length > 0 && !currentLanguage) {\n setCurrentLanguage(clientLanguages.find((m) => m.isDefault)?.langCode);\n }\n }, [clientLanguages]);\n\n useEffect(() => {\n menuItem?.data?.forEach((item, index) => {\n item.key = nanoid();\n })\n setModel({ ...menuItem });\n setCurrentModel({ ...menuItem });\n }, [menuItem]);\n return (\n
\n \n \n onUpdate(currentModel)}\n onRemove={removeItemChildren}\n onUpdate={onUpdateItemChildren}\n />\n {\n isUpdate ? onUpdateItem(model) : onAddMenuChildren(model);\n }}\n closeModal={()=> setModal(false)}\n onUpdate={isUpdate}\n />\n {currentModel && currentModel.data && (\n ({\n key: item.key,\n title: item.name,\n sort: item.sort ?? 0,\n })) as SortItemModel[]}\n onCancel={async () => {\n setIsUpdateSort(false);\n }}\n onOk={async (results) => {\n model?.data?.forEach((m, index) => {\n let old = results.some(r => r.key === m.key);\n if (old) {\n m.sort = results.find(r => r.key === m.key)?.sort ?? 0;\n }\n })\n model?.data.sort((a, b) => a.sort - b.sort);\n onUpdate({ ...model });\n setIsUpdateSort(false);\n }}\n title={`${\"Sắp xếp\"} ${t(CoreResource, MenuText)}`}\n visible={isUpdateSort && menuItem?.data?.length > 0}\n >\n )}\n\n \n \n
\n );\n};\n","import React, { FC, useEffect, useState } from \"react\";\nimport { Input, Modal, Form } from \"antd\";\n\nimport { ICreateMenuSettingModel } from \"states/menu-setting/menu-setting.models\";\nimport { useForm } from \"antd/lib/form/Form\";\nimport { Store } from \"antd/lib/form/interface\";\nimport { addMenuSetting } from \"states/menu-setting/menu-setting.api\";\nimport { UploadFileLocal } from \"shared/components/upload-file/upload-file\";\nimport { t, CoreResource } from \"shared/plugins/localization\";\nimport { Successfully, UpdateDataSuccessfully,NotificationText, DefaultErrorMessage, Add, Save, Cancel, Name, TheFieldIsRequired, Avatar, Slug, Sort, Classify, ExtensionField } from \"shared/constants/define-localization\";\n\ninterface IMenuSettingModalProps {\n onModal: boolean;\n closeModal: () => void;\n onSuccess: () => void;\n}\nexport const AddMenuSettingModal: FC = (props) => {\n const { onModal, closeModal, onSuccess } = props;\n const [isLoading, setLoading] = useState(false);\n const [form] = useForm();\n const [images, setImages] = useState([]);\n const handleCloseModal = () => closeModal();\n const onFinish = async (values: Store) => {\n setLoading(true);\n try {\n let payload: ICreateMenuSettingModel = {\n ...values,\n name: values.name,\n slug: values.slug,\n images: images,\n extensionFields: values.extensionFields,\n sort: values.sort,\n menuType: values.menuType,\n data: [],\n };\n onSuccess();\n await addMenuSetting(payload);\n handleCloseModal();\n setLoading(false);\n Modal.success({\n title:t(CoreResource,Successfully),\n content: \"Cập nhật thành công\",\n });\n } catch (error) {\n Modal.error({\n title: t(CoreResource,NotificationText),\n content:\n error?.response?.data?.error?.message ??\n \"Lỗi hệ thống\",\n });\n setLoading(false);\n }\n };\n const onFinishFailed = (errorInfo: any) => {\n console.log(\"Failed:\", errorInfo);\n };\n const onSubmit = () => {\n form.submit();\n };\n const onReset = () => {\n form.resetFields();\n setImages([]);\n };\n useEffect(() => {\n onReset();\n }, [onModal]);\n\n return (\n
\n {}}\n // end\n >\n {t(CoreResource, Add, \"menu\")}\n
\n }\n confirmLoading={isLoading}\n centered={true}\n visible={onModal}\n onOk={onSubmit}\n onCancel={handleCloseModal}\n okText={\"Lưu\"}\n cancelText={\"Hủy\"}\n >\n \n \n \n \n \n \n \n \n {\n setImages(newFileList);\n }}\n />\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n","import React, { FC, useState, useEffect } from \"react\";\nimport { Row, Col, Button, Input, Spin } from \"antd\";\n\nimport { PlusCircleOutlined } from \"@ant-design/icons\";\nimport { PagedResult } from \"states/paged-result-model\";\nimport { useDebouncedCallback } from \"use-debounce/lib\";\nimport \"./styles/menu-page.less\";\nimport {\n ISearchMenuSettingRequestModel,\n IMenuSettingModel,\n} from \"states/menu-setting/menu-setting.models\";\nimport { searchMenuSetting } from \"states/menu-setting/menu-setting.api\";\nimport { MenuSettingItem } from \"./components/menu-item\";\nimport { AddMenuSettingModal } from \"./components/menu-modal\";\ninterface IMenuSettingProps {}\n\nconst MenuSetting: FC = () => {\n const [loading, setLoading] = useState(false);\n const [isModal, setModal] = useState(false);\n const [pagedResults, setPagedResults] = useState(\n {} as PagedResult\n );\n const [filterModel, setFilterModel] =\n useState({\n page: 1,\n pageSize: 20,\n });\n\n useEffect(() => {\n handleSearch();\n }, [filterModel]);\n const handleToggleModal = () => {\n setModal(!isModal);\n };\n const gotoPage = async (page: number) => {\n setLoading(true);\n const result = await searchMenuSetting({ ...filterModel, page });\n setPagedResults(result.data);\n setLoading(false);\n };\n const handleSearch = useDebouncedCallback(() => {\n gotoPage(1);\n }, 500);\n return (\n \n
\n \n \n {\n setFilterModel({ ...filterModel, name: e.target.value });\n }}\n >\n \n \n }\n >\n Thêm menu\n \n \n \n \n {pagedResults?.results?.map((model, index: number) => (\n \n \n \n ))}\n \n \n
\n
\n );\n};\n\nexport default MenuSetting;\n","import { store } from \"app.store\";\nimport {\n PRODUCT_CATEGORY_API,\n PRODUCT_CATEGORY_API_SORT,\n} from \"shared/constants/api-endpoint\";\nimport { RemovedEntityModel } from \"shared/models/removed-entity-model\";\nimport { UpdatedSortEntityModel } from \"shared/models/updated-sort-entity-model\";\nimport { apiClient } from \"shared/plugins/http-service\";\nimport {\n CreateProductCategoryModel,\n ProductCategoryModel,\n UpdatedProductCategoryModel,\n} from \"./product-category.models\";\n\nexport const removeProductCategory = async (\n removedModel: RemovedEntityModel\n) => {\n const response = await apiClient.postHttp(\n `${PRODUCT_CATEGORY_API}/remove_list`,\n removedModel\n );\n return response;\n};\n\nexport const updateSortProductCategory = async (\n updatedSortModel: UpdatedSortEntityModel[]\n) => {\n const response = await apiClient.postHttp(\n `${PRODUCT_CATEGORY_API_SORT}`,\n updatedSortModel\n );\n return response;\n};\n\nexport const getProductCategoryByIdApi = async (\n id: number,\n langCode?: string\n) => {\n return await apiClient.getHttp(\n `${PRODUCT_CATEGORY_API}/${id}`,\n { params: { langCode } }\n );\n};\n\nexport const getProductCategoryListApi = async (langCode?: string) => {\n return await apiClient.getHttp(\n `${PRODUCT_CATEGORY_API}`,\n { params: { langCode } }\n );\n};\n\nexport const addProductCategoryApi = async (\n model: CreateProductCategoryModel,\n langCode?: string\n) => {\n const response = await apiClient.postHttp(\n `${PRODUCT_CATEGORY_API}`,\n model,\n { params: { langCode } }\n );\n return response;\n};\n\nexport const updateProductCategoryApi = async (\n model: UpdatedProductCategoryModel,\n langCode?: string\n) => {\n const response = await apiClient.putHttp(\n `${PRODUCT_CATEGORY_API}`,\n model,\n { params: { langCode } }\n );\n return response;\n};\n","import React, { FC, useState, useEffect } from \"react\";\n\nimport {\n Table,\n Row,\n Col,\n Button,\n message,\n Drawer,\n notification,\n Space,\n} from \"antd\";\n\nimport {\n DeleteOutlined,\n OrderedListOutlined,\n PlusCircleOutlined,\n} from \"@ant-design/icons\";\nimport { ColumnsType } from \"antd/lib/table\";\n\nimport { ProductCategoryModel } from \"states/product-category/product-category.models\";\nimport {\n getProductCategoryListApi,\n removeProductCategory,\n updateSortProductCategory,\n} from \"states/product-category/product-category.api\";\nimport { Link } from \"react-router-dom\";\nimport { t, CoreResource } from \"shared/plugins/localization\";\nimport {\n ADD_PRODUCT_CATEGORY_ROUTE,\n UPDATE_PRODUCT_CATEGORY_ROUTE,\n} from \"shared/constants/routes\";\nimport { RemovedEntityModel } from \"shared/models/removed-entity-model\";\nimport { Sortable, SortItemModel } from \"shared/components/sortable/sortable\";\nimport { UpdatedSortEntityModel } from \"shared/models/updated-sort-entity-model\";\n\ninterface IProductCategoryProps {}\nconst ProductCategory: FC = () => {\n const [selectedRowsKeys, setSelectedRowsKeys] = useState<\n RemovedEntityModel\n >({\n idList: [],\n });\n const [isUpdateSort, setIsUpdateSort] = useState(false);\n const [isLoadingList, setIsLoadingList] = useState(false);\n const [pagedResults, setPagedResults] = useState(\n [] as ProductCategoryModel[]\n );\n\n const rowSelection = {\n selectedRowsKeys,\n onChange: (selectedRowKeys: any) => {\n setSelectedRowsKeys({ ...selectedRowsKeys, idList: selectedRowKeys });\n },\n };\n const onEmptySelection = () => {\n setSelectedRowsKeys({ ...selectedRowsKeys, idList: [] });\n };\n\n const loadCategoryList = async () => {\n setIsLoadingList(true);\n const result = await getProductCategoryListApi();\n result.data.forEach((m) => (m.key = m.id.toString()));\n setPagedResults(result.data);\n setIsLoadingList(false);\n };\n const handleSortCategory = async (sortList: SortItemModel[]) => {\n try {\n let payload = sortList.map(\n (item) =>\n ({\n id: Number(item.key),\n sort: item.sort,\n } as UpdatedSortEntityModel)\n );\n await updateSortProductCategory(payload);\n setIsUpdateSort(false);\n loadCategoryList();\n } catch {\n message.error(\"Lỗi hệ thống\");\n }\n };\n const onRemoveBtn = () => {\n const key = `open${Date.now()}`;\n const btn = (\n {\n try {\n await removeProductCategory(selectedRowsKeys);\n notification.close(key);\n setSelectedRowsKeys({ ...selectedRowsKeys, idList: [] });\n loadCategoryList();\n message.success(\"Cập nhật thành công\");\n } catch (error: any) {\n message.error(\n error?.response?.data?.error?.message ?? \"Lỗi hệ thống\"\n );\n }\n }}\n >\n Xóa\n \n );\n notification.open({\n message: \"Bạn có muốn xóa không\",\n key,\n btn,\n placement: \"bottomLeft\",\n });\n };\n\n const columns: ColumnsType = [\n {\n title: \"Id\",\n dataIndex: \"id\",\n key:\"id\",\n width:\"40px\",\n render: (id: string, item) => (\n \n {id}\n \n ),\n },\n {\n title: \"Tên\",\n dataIndex: \"name\",\n key: \"name\",\n render: (name: string, item) => (\n \n {name}\n \n ),\n },\n {\n title: \"Url\",\n dataIndex: \"slug\",\n key: \"slug\",\n render: (slug: string) => {slug},\n },\n ];\n\n useEffect(() => {\n loadCategoryList();\n }, []);\n return (\n
\n \n \n \n \n \n \n \n {\n setIsUpdateSort(true);\n }}\n type=\"default\"\n icon={}\n >\n {\"Sắp xếp\"}\n \n \n \n \n \n ({\n key: item.id.toString(),\n title: item.name,\n sort: item.sort ?? 0,\n }))}\n onCancel={async () => {\n setIsUpdateSort(false);\n }}\n onOk={handleSortCategory}\n title={`Sắp xếp thứ tự danh mục`}\n visible={isUpdateSort}\n >\n 0\n ? true\n : false\n }\n >\n }\n >\n Xóa {selectedRowsKeys.idList.length}\n \n \n
\n );\n};\n\nexport default ProductCategory;\n","import {\n PRODUCT_API,\n PRODUCT_API_SEARCH,\n PRODUCT_API_SEARCH_LIST,\n PRODUCT_API_SORT,\n} from \"shared/constants/api-endpoint\";\nimport { RemovedEntityModel } from \"shared/models/removed-entity-model\";\nimport { UpdatedSortEntityModel } from \"shared/models/updated-sort-entity-model\";\nimport { apiClient } from \"shared/plugins/http-service\";\nimport { PagedResult } from \"states/paged-result-model\";\nimport {\n SearchProductRequestModel,\n ProductModel,\n ProductAndCommentModel,\n AddUpdateProductModel,\n} from \"./product.models\";\n\nexport const searchProductApi = async (\n searchProductRequestModel: SearchProductRequestModel,\n langCode?: string\n) => {\n const createResponse = await apiClient.postHttp>(\n `${PRODUCT_API_SEARCH}`,\n searchProductRequestModel,\n { params: { langCode } }\n );\n return createResponse;\n};\n\nexport const searchListProductApi = async (\n searchProductRequestModel: SearchProductRequestModel,\n langCode?: string\n) => {\n const createResponse = await apiClient.postHttp(\n `${PRODUCT_API_SEARCH_LIST}`,\n searchProductRequestModel,\n { params: { langCode } }\n );\n return createResponse;\n};\n\nexport const updateSortProductApi = async (\n updatedSortModel: UpdatedSortEntityModel[]\n) => {\n const response = await apiClient.postHttp(\n `${PRODUCT_API_SORT}`,\n updatedSortModel\n );\n return response;\n};\n\nexport const getProductByIdApi = async (id: number, langCode?: string) => {\n return await apiClient.getHttp(`${PRODUCT_API}/${id}`, {\n params: { langCode },\n });\n};\n\nexport const getAllVariationsApi = async (id: number, langCode?: string) => {\n return await apiClient.getHttp(\n `${PRODUCT_API}/${id}/variations`,\n { params: { langCode } }\n );\n};\n\nexport const updateProductApi = async (\n model: AddUpdateProductModel,\n langCode?: string\n) => {\n const response = await apiClient.putHttp(`${PRODUCT_API}`, model, {\n params: { langCode },\n });\n return response;\n};\n\nexport const addProductApi = async (\n model: AddUpdateProductModel,\n langCode?: string\n) => {\n const response = await apiClient.postHttp(`${PRODUCT_API}`, model, {\n params: { langCode },\n });\n return response;\n};\n\n\nexport const removeProduct = async (removedModel: RemovedEntityModel) => {\n const response = await apiClient.postHttp(\n `${PRODUCT_API}/remove_list`,\n removedModel\n );\n return response;\n};\n\n\nexport const getProductHasNewCommentApi = async (\n page: number = 1,\n pageSize: number = 50\n) => {\n return await apiClient.getHttp>(\n `${PRODUCT_API}/has_new_comments?page=${page}&pageSize=${pageSize}`\n );\n};\n","import {\n CheckCircleTwoTone,\n DeleteOutlined,\n PlusCircleOutlined,\n} from \"@ant-design/icons\";\nimport {\n Avatar,\n Button,\n Col,\n message,\n Modal,\n Popconfirm,\n Row,\n Table,\n} from \"antd\";\nimport { ColumnsType } from \"antd/lib/table\";\nimport React from \"react\";\nimport { useDispatch } from \"react-redux\";\nimport { Link } from \"react-router-dom\";\nimport {\n DefaultErrorMessage,\n UpdateDataSuccessfully,\n} from \"shared/constants/define-localization\";\nimport {\n ADD_PRODUCT_ROUTE,\n UPDATE_PRODUCT_ROUTE,\n} from \"shared/constants/routes\";\nimport { CoreResource, t } from \"shared/plugins/localization\";\nimport {\n redirectFileLocalUrl,\n formatMoney,\n} from \"shared/plugins/string-helper\";\nimport { setLoading } from \"states/global-value/global-value.slice\";\nimport { ProductModel } from \"states/product/product.models\";\n\nexport interface IVariationModalProps {\n model: ProductModel[];\n visible: boolean;\n onClose: (isReloadList?: boolean) => void;\n onReloadModel: (mainProduct: ProductModel) => void;\n}\n\nexport function VariationModal(props: IVariationModalProps) {\n const { model, visible, onClose } = props;\n\n const columns: ColumnsType = [\n {\n title: \"Mã hàng\",\n dataIndex: \"skuCode\",\n key: \"skuCode\",\n width: \"150px\",\n render: (skuCode: string, item) => skuCode,\n },\n {\n title: \"Tên sản phẩm\",\n dataIndex: \"websiteName\",\n key: \"websiteName\",\n render: (websiteName: string, item) => (\n \n \n 0 ? item.images[0] : \"\"\n )}\n shape=\"square\"\n />{\" \"}\n {item.name} (\n {item.variationAttributes.map((m) => m.variationValue).join(\", \")})\n {\" \"}\n {!item.mainVariationProductId && (\n \n )}\n \n ),\n },\n {\n title: \"Giá bán\",\n dataIndex: \"websiteName\",\n key: \"websiteName\",\n render: (websiteName: string, item) => formatMoney(item.price),\n },\n ];\n\n return (\n {\n onClose();\n }}\n onOk={() => {\n onClose();\n }}\n width={1000}\n >\n \n \n !m.mainVariationProductId)?.id\n }`}\n >\n \n \n \n \n \n \n );\n}\n","import React, { FC, useEffect, useState } from \"react\";\n\nimport {\n Table,\n Row,\n Col,\n Button,\n Input,\n message,\n Select,\n Avatar,\n Space,\n Modal,\n Drawer,\n} from \"antd\";\n\nimport { DeleteOutlined, ExclamationCircleOutlined, OrderedListOutlined, PlusCircleOutlined } from \"@ant-design/icons\";\nimport { ColumnsType } from \"antd/lib/table\";\nimport { PagedResult } from \"states/paged-result-model\";\nimport { useDebouncedCallback } from \"use-debounce/lib\";\n\nimport {\n SearchProductRequestModel,\n ProductModel,\n} from \"states/product/product.models\";\nimport {\n getAllVariationsApi,\n removeProduct,\n searchListProductApi,\n searchProductApi,\n updateSortProductApi,\n} from \"states/product/product.api\";\nimport { Link } from \"react-router-dom\";\nimport { ProductCategoryModel } from \"states/product-category/product-category.models\";\nimport { getProductCategoryListApi } from \"states/product-category/product-category.api\";\nimport { t, CoreResource } from \"shared/plugins/localization\";\nimport {\n DefaultErrorMessage,\n ListText,\n ProductText,\n Sort,\n} from \"shared/constants/define-localization\";\nimport { RemovedEntityModel } from \"shared/models/removed-entity-model\";\nimport {\n formatMoney,\n redirectFileLocalUrl,\n} from \"shared/plugins/string-helper\";\nimport {\n ADD_PRODUCT_ROUTE,\n UPDATE_PRODUCT_ROUTE,\n} from \"shared/constants/routes\";\nimport { VariationModal } from \"./components/variation-modal\";\nimport { Sortable, SortItemModel } from \"shared/components/sortable/sortable\";\nimport { UpdatedSortEntityModel } from \"shared/models/updated-sort-entity-model\";\n\ninterface IProductProps {}\nconst { Option } = Select;\nconst Product: FC = () => {\n const [selectedRowsKeys, setSelectedRowsKeys] = useState<\n RemovedEntityModel\n >({\n idList: [],\n });\n const [isLoadingList, setIsLoadingList] = useState(false);\n const [pagedResults, setPagedResults] = useState(\n {} as PagedResult\n );\n const [products, setProducts] = useState([]);\n const [isUpdateSort, setIsUpdateSort] = useState(false);\n const [filterModel, setFilterModel] = useState({\n includeAccessory: true,\n includeChildrenUnitProduct: false,\n includeChildrenVariationProduct: false,\n page: 1,\n pageSize: 20,\n });\n const [productCategories, setProductCategories] = useState<\n ProductCategoryModel[]\n >([]);\n\n const [variationModal, setVariationModal] = useState<{\n model: ProductModel[];\n visible: boolean;\n onClose: (isLoadingList?: boolean) => void;\n }>({\n model: [] as ProductModel[],\n visible: false,\n onClose: (isLoadingList?: boolean) => {\n setVariationModal({ ...variationModal, visible: false });\n if (isLoadingList) {\n gotoPage(1,20);\n }\n },\n });\n\n const rowSelection = {\n selectedRowsKeys,\n onChange: (selectedRowKeys: any) => {\n setSelectedRowsKeys({ ...selectedRowsKeys, idList: selectedRowKeys });\n },\n };\n const handleSortProduct = async (sortList: SortItemModel[]) => {\n try {\n let payload = sortList.map(\n (item) =>\n ({\n id: Number(item.key),\n sort: item.sort,\n } as UpdatedSortEntityModel)\n );\n await updateSortProductApi(payload);\n message.success(\"Sắp xếp thành công\");\n handleSearch();\n } catch {\n message.error(\"Lỗi hệ thống\");\n }\n };\n const getProductCategories = async () => {\n try {\n const res = await getProductCategoryListApi();\n setProductCategories(res.data);\n } catch (error) {\n message.error(error?.response?.data?.error?.message ?? \"Lỗi hệ thống\");\n }\n };\n const onEmptySelection = () => {\n setSelectedRowsKeys({ ...selectedRowsKeys, idList: [] });\n };\n const onRemoveBtn = () => {\n Modal.confirm({\n title: 'Thông báo',\n icon: ,\n content: 'Bạn có muốn xóa sản phẩm này không?',\n okText: 'Đồng ý',\n cancelText: 'Hủy bỏ',\n onOk: async () => {\n try {\n await removeProduct(selectedRowsKeys);\n setSelectedRowsKeys({ ...selectedRowsKeys, idList: [] });\n handleSearch();\n message.success(\"Cập nhật thành công\");\n } catch (error) {\n message.error(\n error?.response?.data?.error?.message ??\n \"Lỗi hệ thống\"\n );\n }\n }\n });\n };\n const handleGetListProduct = async () =>{\n setIsLoadingList(true);\n const results = await searchListProductApi({\n ...filterModel,\n page: 1,\n pageSize:10,\n });\n setProducts(results.data);\n setIsUpdateSort(true);\n setIsLoadingList(false);\n }\n const gotoPage = async (page: number, pageSize:number) => {\n setIsLoadingList(true);\n const result = await searchProductApi({\n ...filterModel,\n page,\n pageSize,\n });\n result.data.results.forEach((m) => (m.key = m.id.toString()));\n setPagedResults(result.data);\n setIsLoadingList(false);\n };\n const handleSearch = useDebouncedCallback(() => {\n gotoPage(1,20);\n }, 500);\n\n const _handleClickVariationModal = async (product: ProductModel) => {\n const res = await getAllVariationsApi(product.id);\n setVariationModal({ ...variationModal, model: res.data, visible: true });\n };\n\n const columns: ColumnsType = [\n {\n title: \"Id\",\n dataIndex: \"id\",\n key:\"id\",\n width:\"40px\",\n render: (id: string, item) => (\n \n {id}\n \n ),\n },\n {\n title: \"Mã hàng\",\n dataIndex: \"skuCode\",\n key: \"skuCode\",\n width: \"150px\",\n render: (skuCode: string, item) => skuCode,\n },\n {\n title: \"Tên sản phẩm\",\n dataIndex: \"websiteName\",\n key: \"websiteName\",\n render: (websiteName: string, item) => (\n \n {item.isVariation ? (\n {\n _handleClickVariationModal(item);\n }}\n to=\"#\"\n >\n 0 ? item.images[0] : \"\"\n )}\n shape=\"square\"\n />{\" \"}\n {item.name}\n \n ) : (\n \n 0 ? item.images[0] : \"\"\n )}\n shape=\"square\"\n />{\" \"}\n {item.name}\n \n )}\n \n ),\n },\n {\n title: \"Giá bán\",\n dataIndex: \"websiteName\",\n key: \"websiteName\",\n render: (websiteName: string, item) => formatMoney(item.price),\n },\n ];\n\n useEffect(() => {\n handleSearch();\n }, [filterModel]);\n\n useEffect(() => {\n getProductCategories();\n document.title = \"Danh sách sản phẩm\";\n }, []);\n\n return (\n
\n \n \n {\n setFilterModel({ ...filterModel, keyword: e.target.value });\n }}\n >\n \n \n {\n setFilterModel({\n ...filterModel,\n categoryIds: value ? [value] : [],\n });\n }}\n allowClear\n value={\n filterModel?.categoryIds && filterModel?.categoryIds.length > 0\n ? filterModel?.categoryIds[0]\n : undefined\n }\n showSearch\n filterOption={(input, option: any) =>\n option.children.toLowerCase().indexOf(input.toLowerCase()) >= 0\n }\n >\n {productCategories &&\n productCategories.map((productCate) => (\n \n ))}\n \n \n \n \n \n \n \n \n {\n handleGetListProduct();\n \n }}\n type=\"default\"\n icon={}\n >\n {\"Sắp xếp\"}\n \n \n \n \n \n \n 0\n ? products.map((item) => ({\n key: item.id.toString(),\n title: item.name,\n sort: item.sort ?? 0,\n }))\n : []\n }\n onCancel={async () => {\n setIsUpdateSort(false);\n }}\n onOk={handleSortProduct}\n title={`Sắp xếp thứ tự sản phẩm`}\n visible={isUpdateSort}\n >\n 0\n ? true\n : false\n }\n extra={}\n >\n Xóa {selectedRowsKeys.idList.length.toString()} dòng\n }\n >\n\n \n
\n );\n};\n\nexport default Product;\n","export enum DataTypeEnum {\n ValueSelect,\n String,\n DateTime,\n Boolean,\n Number,\n}\n\nexport const DataTypeText = [\n \"Available value\",\n \"String\",\n \"Date time\",\n \"Boolean\",\n \"Number\",\n];\n","import {\n CUSTOMER_API,\n CUSTOMER_API_REMOVE,\n CUSTOMER_API_SEARCH,\n} from \"shared/constants/api-endpoint\";\nimport { RemovedEntityModel } from \"shared/models/removed-entity-model\";\nimport { apiClient } from \"shared/plugins/http-service\";\nimport { PagedResult } from \"states/paged-result-model\";\nimport {\n CreateCustomerModel,\n SearchCustomerRequestModel,\n CustomerModel,\n UpdatedCustomerModel,\n CustomerAddressModel,\n} from \"./customer.models\";\n\nexport const searchCustomer = async (\n searchCustomerRequestModel: SearchCustomerRequestModel\n) => {\n const createResponse = await apiClient.postHttp>(\n `${CUSTOMER_API_SEARCH}`,\n searchCustomerRequestModel\n );\n return createResponse;\n};\n\nexport const removeCustomer = async (\n removedModel: RemovedEntityModel\n) => {\n const response = await apiClient.postHttp(\n `${CUSTOMER_API_REMOVE}`,\n removedModel\n );\n return response;\n};\n\nexport const getCustomerById = async (id: number) => {\n return await apiClient.getHttp(`${CUSTOMER_API}/${id}`);\n};\n\nexport const addCustomer = async (model: CreateCustomerModel) => {\n const response = await apiClient.postHttp(`${CUSTOMER_API}`, model);\n return response;\n};\n\nexport const updateCustomer = async (model: UpdatedCustomerModel) => {\n const response = await apiClient.putHttp(`${CUSTOMER_API}`, model);\n return response;\n};\n\nexport const addCustomerAddressAPI = async (\n customerId: number,\n model: CustomerAddressModel\n) => {\n const response = await apiClient.postHttp(\n `${CUSTOMER_API}/${customerId}/addresses`,\n model\n );\n return response;\n};\n\nexport const updateCustomerAddressAPI = async (\n customerId: number,\n model: CustomerAddressModel\n) => {\n const response = await apiClient.putHttp(\n `${CUSTOMER_API}/${customerId}/addresses`,\n model\n );\n return response;\n};\n\nexport const removeCustomerAddressAPI = async (\n customerId: number,\n customerAddressId: number\n) => {\n const response = await apiClient.deleteHttp(\n `${CUSTOMER_API}/${customerId}/addresses?addressId=${customerAddressId}`\n );\n return response;\n};\n","import { FC, useState, useEffect } from \"react\";\nimport { Input, Modal, Form, InputNumber } from \"antd\";\n\nimport {\n CreateCustomerModel,\n CustomerModel,\n UpdatedCustomerModel,\n} from \"states/customer/customer.models\";\nimport { addCustomer, updateCustomer } from \"states/customer/customer.api\";\nimport { Store } from \"antd/lib/form/interface\";\nimport { useForm } from \"antd/lib/form/Form\";\nimport { t, CoreResource } from \"shared/plugins/localization\";\ninterface ICustomerModalProps {\n model: CustomerModel;\n onModal: boolean;\n closeModal: () => void;\n onSuccess: (customerId?: number) => void;\n isUpdate: boolean;\n}\nexport const CustomerModalComponent: FC = (props) => {\n const { model, onModal, closeModal, onSuccess, isUpdate } = props;\n const [form] = useForm();\n const [isLoading, setLoading] = useState(false);\n const handleCloseModal = () => closeModal();\n const onFinish = async (values: Store) => {\n setLoading(true);\n try {\n let customerId = 0;\n if (isUpdate) {\n customerId = model.id;\n let payload: UpdatedCustomerModel = {\n ...values,\n id: values.id,\n firstName: values.firstName.toUpperCase(),\n lastName: values.lastName.toUpperCase(),\n phoneNumber: values.phoneNumber,\n email: values.email,\n dayOfBirth: values.dayOfBirth ? Number(values.dayOfBirth) : undefined,\n monthOfBirth: values.dayOfBirth\n ? Number(values.monthOfBirth)\n : undefined,\n yearOfBirth: values.dayOfBirth\n ? Number(values.yearOfBirth)\n : undefined,\n };\n await updateCustomer(payload);\n } else {\n let payload: CreateCustomerModel = {\n ...values,\n firstName: values.firstName.toUpperCase(),\n lastName: values.lastName.toUpperCase(),\n phoneNumber: values.phoneNumber,\n email: values.email,\n dayOfBirth: values.dayOfBirth ? Number(values.dayOfBirth) : undefined,\n monthOfBirth: values.dayOfBirth\n ? Number(values.monthOfBirth)\n : undefined,\n yearOfBirth: values.dayOfBirth\n ? Number(values.yearOfBirth)\n : undefined,\n };\n const res = await addCustomer(payload);\n customerId = res.data;\n }\n handleCloseModal();\n setLoading(false);\n Modal.success({\n title: \"Thành công\",\n content: \"Cập nhật thành công\",\n });\n onSuccess(customerId);\n } catch (error) {\n Modal.error({\n title: \"Thông báo\",\n content:\n error?.response?.data?.error?.message ??\n \"Lỗi hệ thống\",\n });\n setLoading(false);\n }\n };\n const onFinishFailed = (errorInfo: any) => {\n console.log(\"Failed:\", errorInfo);\n };\n const onSubmit = () => {\n form.submit();\n };\n const onReset = () => {\n form.resetFields();\n };\n const onFill = () => {\n form.setFieldsValue({\n id: model?.id,\n email: model?.email,\n phoneNumber: model?.phoneNumber,\n firstName: model?.firstName,\n lastName: model?.lastName,\n dayOfBirth: model?.dayOfBirth,\n monthOfBirth: model?.monthOfBirth,\n yearOfBirth: model?.yearOfBirth,\n });\n };\n\n useEffect(() => {\n if (!isUpdate) {\n onReset();\n } else {\n onFill();\n }\n }, [onModal]);\n\n return (\n {}}\n // end\n >\n {isUpdate\n ? \"Thêm khách hàng\"\n : \"Cập nhật thông tin\"}\n \n }\n confirmLoading={isLoading}\n centered={true}\n visible={onModal}\n onOk={onSubmit}\n onCancel={handleCloseModal}\n okText={\"Lưu\"}\n cancelText={\"Hủy\"}\n >\n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n","import React, { FC, useState, useEffect } from \"react\";\n\nimport { Table, Row, Col, Button, Input, Typography } from \"antd\";\n\nimport { PlusCircleOutlined } from \"@ant-design/icons\";\nimport { ColumnsType } from \"antd/lib/table\";\nimport { PagedResult } from \"states/paged-result-model\";\nimport { useDebouncedCallback } from \"use-debounce/lib\";\n\nimport {\n SearchCustomerRequestModel,\n CustomerModel,\n} from \"states/customer/customer.models\";\nimport { searchCustomer } from \"states/customer/customer.api\";\nimport { CoreResource, t } from \"shared/plugins/localization\";\nimport { formatPhoneNumber } from \"shared/plugins/string-helper\";\nimport { CustomerModalComponent } from \"shared/components/customer/customer-modal\";\n\ninterface ICustomerProps {}\nconst Customer: FC = () => {\n const [isLoadingList, setIsLoadingList] = useState(false);\n\n const [pagedResults, setPagedResults] = useState(\n {} as PagedResult\n );\n const [isModal, setModal] = useState(false);\n const [isUpdate, setUpdate] = useState(false);\n const [model, setModel] = useState({} as CustomerModel);\n\n const [filterModel, setFilterModel] = useState({\n page: 1,\n pageSize: 20,\n } as SearchCustomerRequestModel);\n\n const handleCloseModal = () => {\n setModal(false);\n };\n const handleAddCustomer = () => {\n setModel({} as CustomerModel);\n setModal(true);\n setUpdate(false);\n };\n const gotoPage = async (page: number,pageSize:number) => {\n setIsLoadingList(true);\n const result = await searchCustomer({ ...filterModel, page,pageSize });\n setPagedResults(result.data);\n setIsLoadingList(false);\n };\n const handleSearch = useDebouncedCallback(() => {\n gotoPage(1,20);\n }, 500);\n\n const columns: ColumnsType = [\n {\n title: \"Tên khách hàng\",\n dataIndex: \"firstName\",\n key: \"firstName\",\n render: (firstName: string, item) => (\n \n {\n setUpdate(true);\n setModel(item);\n setModal(true);\n }}\n >\n {item.lastName} {firstName}\n \n \n ),\n },\n {\n title: \"Địa chỉ email\",\n dataIndex: \"email\",\n key: \"email\",\n render: (email: string, item) => (\n <>\n {\n setUpdate(true);\n setModel(item);\n setModal(true);\n }}\n >\n {email}\n \n \n ),\n },\n {\n title: \"Số điện thoại\",\n dataIndex: \"phoneNumber\",\n key: \"phoneNumber\",\n render: (phoneNumber: string) => (\n {formatPhoneNumber(phoneNumber)}\n ),\n },\n ];\n\n useEffect(() => {\n handleSearch();\n }, [filterModel]);\n\n useEffect(() => {\n document.title = \"Khách hàng\";\n }, []);\n\n return (\n
\n \n \n {\n setFilterModel({ ...filterModel, keyword: e.target.value });\n }}\n >\n \n \n }\n >\n Thêm khách hàng\n \n \n \n \n \n
\n );\n};\n\nexport default Customer;\n","import { DataTypeEnum } from \"shared/constants/app-enums\";\nimport { SeoModel } from \"shared/models/seo-model\";\nimport { TagModel } from \"states/tag/tag.models\";\nimport { UnitModel } from \"states/unit/unit.models\";\nimport { WareHouseModel } from \"states/ware-house/ware-house.models\";\n\nexport interface ProductModel {\n key: string;\n id: number;\n mainCategoryId: number;\n mainCategoryName?: string;\n relatedCategoryIds: number[];\n skuCode: string;\n images: string[];\n price?: number;\n promotionPrice?: number;\n promotionFromDate?: Date;\n promotionToDate?: Date;\n costPrice?: number;\n barCode?: string;\n name: string;\n mainVariationProductId?: number;\n accessoryIds: number[];\n isActive?: boolean;\n isVariation?: boolean;\n isAccessory?: boolean;\n isModifier: boolean;\n unitProducts: ProductModel[];\n unit?: UnitModel;\n unitRate?: number;\n isInventory?: boolean;\n slug: string;\n seoFields?: SeoModel;\n customizeTheme?: any;\n tags: TagModel[];\n variationAttributes: ProductVariationAttributeModel[];\n attributeGroups: ProductProductAttributeGroupModel[];\n inventories: InventoryModel[];\n sellingPrice: number;\n size: ProductSizeModel;\n sort: number;\n branchId?: number;\n wholesale?: WholesaleModel;\n priceBySubTotal?: PriceBySubTotalModel;\n mainUnitProductId?: number;\n}\n\nexport interface AddUpdateProductModel {\n id?: number;\n mainCategoryId?: number;\n relatedCategoryIds?: number[];\n skuCode: string;\n images: string[];\n price?: number;\n promotionPrice?: number;\n promotionFromDate?: Date;\n promotionToDate?: Date;\n costPrice?: number;\n barCode?: string;\n name: string;\n mainVariationProductId?: number;\n accessoryIds?: number[];\n isActive?: boolean;\n isAccessory?: boolean;\n unitProducts?: AddUpdateProductModel[];\n unitId?: number;\n unitRate?: number;\n isInventory?: boolean;\n isModifier: boolean;\n slug: string;\n seoFields?: SeoModel;\n customizeTheme?: any;\n tagIds?: number[];\n variationAttributes: ProductVariationAttributeModel[];\n attributeGroups: ProductProductAttributeGroupModel[];\n size: ProductSizeModel;\n branchId?: number;\n wholesale?: WholesaleModel;\n priceBySubTotal?: PriceBySubTotalModel;\n mainUnitProductId?: number;\n}\n\nexport interface SearchProductRequestModel {\n keyword?: string;\n categoryIds?: number[];\n productIds?: number[];\n page: number;\n pageSize: number;\n includeAccessory: boolean;\n includeChildrenUnitProduct: boolean;\n includeChildrenVariationProduct: boolean;\n wareHouseId?: number;\n isModifier?: boolean;\n branchId?: number;\n}\n\nexport interface SearchProductModel {\n id: number;\n images: string[];\n websiteName: string;\n}\n\nexport interface ProductAndCommentModel {\n id: number;\n websiteName?: string;\n slug: string;\n images: string[];\n numberOfNewComments: number;\n latestCommentTime: Date;\n}\n\nexport interface ProductProductAttributeGroupModel {\n attributeGroupId: number;\n attributeGroupName: string;\n sort: number;\n attributes: ProductProductAttributeModel[];\n}\n\nexport class ProductProductAttributeModel {\n constructor() {\n this.attributeName = \"\";\n this.sort = 0;\n this.values = [];\n }\n\n attributeId?: number;\n attributeName: string;\n sort: number;\n dataType?: DataTypeEnum;\n valueNumber?: number;\n valueString?: string;\n valueBoolean?: boolean;\n valueDate?: Date;\n values: ProductProductAttributeValueModel[];\n\n resetValue() {\n this.values = [];\n this.valueNumber = undefined;\n this.valueString = undefined;\n this.valueBoolean = undefined;\n this.valueDate = undefined;\n }\n}\nexport interface ProductProductAttributeValueModel {\n valueId: number;\n value: string;\n sort: number;\n}\n\nexport interface ProductVariationAttributeModel {\n variationAttributeId: number;\n variationName: string;\n variationAttributeValueId: number;\n variationValue: string;\n attributeSort?: number;\n attributeValueSort?: number;\n}\n\nexport interface InventoryModel {\n id: string;\n wareHouse: WareHouseModel;\n onHandQuantity: number;\n orderedQuantity: number;\n upComingQuantity: number;\n totalStockQuantity: number;\n totalReadyForSaleQuantity: number;\n readyForSaleQuantity: number;\n}\n\nexport interface ProductSizeModel {\n height: number;\n width: number;\n length: number;\n weight: number;\n}\n\nexport interface WholesaleModel {\n items: WholesaleItemModel[];\n}\nexport interface WholesaleItemModel {\n sellingPrice: number;\n quantityFrom: number;\n quantityTo: number;\n priceType: WholesalePriceType;\n}\n\nexport enum WholesalePriceType {\n Unit,\n Total,\n}\n\nexport interface PriceBySubTotalModel {\n items: PriceBySubTotalItemModel[];\n}\nexport interface PriceBySubTotalItemModel {\n sellingPrice: number;\n subTotalFrom: number;\n subTotalTo: number;\n}\n","import { FC, useState, useEffect } from \"react\";\nimport { Input, Modal, Form } from \"antd\";\nimport { Store } from \"antd/lib/form/interface\";\nimport { ProductAttributeGroupModel } from \"states/product-attribute/product-attribute.models\";\nimport {\n addProductAttributeGroupApi,\n getProductAttributeGroupByIdApi,\n updateProductAttributeGroupApi,\n} from \"states/product-attribute/product-attribute.api\";\nimport { RootState } from \"app.store\";\nimport { useSelector, shallowEqual } from \"react-redux\";\nimport { LanguageSelector } from \"../language-selector\";\n\ninterface IProductAttributeGroupModalProps {\n model: ProductAttributeGroupModel;\n onModal: boolean;\n closeModal: () => void;\n onSuccess: () => void;\n isUpdate: boolean;\n}\nexport const ProductAttributeGroupModalComponent: FC<\n IProductAttributeGroupModalProps\n> = (props) => {\n const { model, onModal, closeModal, onSuccess, isUpdate } = props;\n const clientLanguages = useSelector(\n (state: RootState) => state.localization.clientLanguages,\n shallowEqual\n );\n const [currentLanguage, setCurrentLanguage] = useState();\n const [form] = Form.useForm();\n const [isLoading, setLoading] = useState(false);\n const handleCloseModal = () => closeModal();\n const onFinish = async (values: Store) => {\n setLoading(true);\n try {\n if (isUpdate) {\n let payload: ProductAttributeGroupModel = {\n ...values,\n key: model.id.toString(),\n id: values.id,\n name: values.name,\n };\n await updateProductAttributeGroupApi(payload, currentLanguage);\n } else {\n let payload: ProductAttributeGroupModel = {\n ...values,\n key: \"0\",\n id: 0,\n name: values.name,\n };\n await addProductAttributeGroupApi(payload, currentLanguage);\n }\n handleCloseModal();\n setLoading(false);\n onSuccess();\n Modal.success({\n title: \"Thành công\",\n content: \"Cập nhật thành công\",\n });\n } catch (error) {\n Modal.error({\n title: \"Thông báo\",\n content: error?.response?.data?.error?.message ?? \"Lỗi hệ thống\",\n });\n setLoading(false);\n }\n };\n\n const onSubmit = () => {\n form.submit();\n };\n const onReset = () => {\n form.resetFields();\n };\n const onFill = () => {\n form.setFieldsValue({\n id: model?.id,\n name: model?.name,\n });\n };\n\n useEffect(() => {\n if (!isUpdate) {\n onReset();\n } else {\n onFill();\n }\n if (onModal && clientLanguages.length > 0 && currentLanguage) {\n setCurrentLanguage(clientLanguages.find((m) => m.isDefault)?.langCode);\n }\n }, [onModal]);\n\n useEffect(() => {\n if (clientLanguages.length > 0 && !currentLanguage) {\n setCurrentLanguage(clientLanguages.find((m) => m.isDefault)?.langCode);\n }\n }, [clientLanguages]);\n\n return (\n \n {isUpdate ? `Cập nhật ` : `Thêm `} nhóm thuộc tính\n \n }\n confirmLoading={isLoading}\n centered={true}\n visible={onModal}\n onOk={onSubmit}\n onCancel={handleCloseModal}\n okText=\"Lưu\"\n cancelText=\"Hủy\"\n >\n {isUpdate && (\n
\n {\n const res = await getProductAttributeGroupByIdApi(\n model.id,\n value\n );\n if (!res.data.name) {\n Modal.confirm({\n title: \"Thông báo\",\n content:\n \"Nội dung chưa được khởi tạo cho ngôn ngữ này, bạn có muốn khởi tạo?\",\n onOk: () => {\n setCurrentLanguage(value);\n },\n });\n return;\n } else {\n setCurrentLanguage(value);\n form.setFieldsValue({\n id: model?.id,\n name: res?.data.name,\n });\n }\n }}\n selectedCode={currentLanguage}\n />\n
\n )}\n \n \n \n \n \n \n \n );\n};\n","import { PlusOutlined } from \"@ant-design/icons\";\nimport { Button, Col, Divider, Empty, Row, Select, Spin } from \"antd\";\nimport { DefaultOptionType } from \"antd/lib/select\";\nimport React, { useEffect, useState } from \"react\";\nimport { shallowEqual, useDispatch, useSelector } from \"react-redux\";\nimport { ProductAttributeGroupModel } from \"states/product-attribute/product-attribute.models\";\nimport {\n fetchProductAttributeGroupList,\n productAttributeGroupsSelector,\n} from \"states/product-attribute/product-attribute.slice\";\nimport { ProductAttributeGroupModalComponent } from \"./product-attribute-group-modal\";\nexport interface IProductAttributeGroupSelectorProps {\n value?: number | number[];\n isMultiple?: boolean;\n onChange?: (\n values?: ProductAttributeGroupModel | ProductAttributeGroupModel[]\n ) => void;\n bordered?: boolean;\n textAlign?: \"right\";\n width?: string;\n onClick?: React.MouseEventHandler;\n}\n\nexport function ProductAttributeGroupSelector(\n props: IProductAttributeGroupSelectorProps\n) {\n const { value, isMultiple, onChange, onClick, width, bordered, textAlign } =\n props;\n const productAttributeGroupList = useSelector(\n productAttributeGroupsSelector,\n shallowEqual\n );\n const dispatch = useDispatch();\n const [isModal, setModal] = useState(false);\n const handleCloseModal = () => {\n setModal(false);\n };\n const handleOnModal = () => {\n setModal(true);\n };\n useEffect(() => {\n if (!value && productAttributeGroupList.length === 1 && onChange) {\n if (isMultiple) {\n onChange(productAttributeGroupList);\n } else {\n onChange(productAttributeGroupList[0]);\n }\n }\n }, [productAttributeGroupList]);\n\n return (\n \n {\n if (onChange) {\n if (!isMultiple) {\n const productAttributeGroup = productAttributeGroupList.find(\n (m) => m.id === e\n );\n onChange(productAttributeGroup);\n return;\n }\n if (!e) {\n onChange([]);\n return;\n }\n const ids = e as number[];\n let productAttributeGroups = [...productAttributeGroupList].filter(\n (productAttributeGroup) => ids.includes(productAttributeGroup.id)\n );\n onChange(productAttributeGroups);\n }\n }}\n showSearch\n filterOption={(input, option: any) =>\n option.label.props.children.props.children\n ?.toLowerCase()\n .indexOf(input?.toLowerCase()) >= 0\n }\n mode={isMultiple ? \"multiple\" : undefined}\n allowClear\n bordered={bordered}\n options={productAttributeGroupList.map(\n (productAttributeGroup) =>\n ({\n key: productAttributeGroup.id,\n value: productAttributeGroup.id,\n label: (\n \n {productAttributeGroup.name}\n \n ),\n } as DefaultOptionType)\n )}\n notFoundContent={}\n dropdownRender={(menu) => (\n
\n {menu}\n \n
\n }\n >\n Thêm mới\n \n
\n
\n )}\n >\n {\n dispatch(fetchProductAttributeGroupList());\n }}\n isUpdate={false}\n />\n
\n );\n}\n","import { FC, useState, useEffect } from \"react\";\nimport { Input, Modal, Form } from \"antd\";\nimport { Store } from \"antd/lib/form/interface\";\nimport { ProductAttributeModel } from \"states/product-attribute/product-attribute.models\";\nimport {\n addProductAttributeApi,\n getProductAttributeByIdApi,\n updateProductAttributeApi,\n} from \"states/product-attribute/product-attribute.api\";\nimport { RootState } from \"app.store\";\nimport { useSelector, shallowEqual } from \"react-redux\";\nimport { LanguageSelector } from \"../language-selector\";\n\ninterface IProductAttributeModalProps {\n model: ProductAttributeModel;\n onModal: boolean;\n closeModal: () => void;\n onSuccess: () => void;\n isUpdate: boolean;\n}\nexport const ProductAttributeModalComponent: FC = (\n props\n) => {\n const { model, onModal, closeModal, onSuccess, isUpdate } = props;\n const clientLanguages = useSelector(\n (state: RootState) => state.localization.clientLanguages,\n shallowEqual\n );\n const [currentLanguage, setCurrentLanguage] = useState();\n const [form] = Form.useForm();\n const [isLoading, setLoading] = useState(false);\n const handleCloseModal = () => closeModal();\n const onFinish = async (values: Store) => {\n setLoading(true);\n try {\n if (isUpdate) {\n let payload: ProductAttributeModel = {\n ...values,\n key: model.id.toString(),\n id: values.id,\n name: values.name,\n };\n await updateProductAttributeApi(payload, currentLanguage);\n } else {\n let payload: ProductAttributeModel = {\n ...values,\n key: \"0\",\n id: 0,\n name: values.name,\n };\n await addProductAttributeApi(payload, currentLanguage);\n }\n handleCloseModal();\n setLoading(false);\n onSuccess();\n Modal.success({\n title: \"Thành công\",\n content: \"Cập nhật thành công\",\n });\n } catch (error) {\n Modal.error({\n title: \"Thông báo\",\n content: error?.response?.data?.error?.message ?? \"Lỗi hệ thống\",\n });\n setLoading(false);\n }\n };\n\n const onSubmit = () => {\n form.submit();\n };\n const onReset = () => {\n form.resetFields();\n };\n const onFill = () => {\n form.setFieldsValue({\n id: model?.id,\n name: model?.name,\n });\n };\n\n useEffect(() => {\n if (!isUpdate) {\n onReset();\n } else {\n onFill();\n }\n if (onModal && clientLanguages.length > 0 && currentLanguage) {\n setCurrentLanguage(clientLanguages.find((m) => m.isDefault)?.langCode);\n }\n }, [onModal]);\n\n useEffect(() => {\n if (clientLanguages.length > 0 && !currentLanguage) {\n setCurrentLanguage(clientLanguages.find((m) => m.isDefault)?.langCode);\n }\n }, [clientLanguages]);\n\n return (\n \n {isUpdate ? `Cập nhật thuộc tính` : `Thêm thuộc tính`}\n \n }\n confirmLoading={isLoading}\n centered={true}\n visible={onModal}\n onOk={onSubmit}\n onCancel={handleCloseModal}\n okText=\"Lưu\"\n cancelText=\"Hủy\"\n >\n {isUpdate && (\n
\n {\n const res = await getProductAttributeByIdApi(model.id, value);\n if (!res.data.name) {\n Modal.confirm({\n title: \"Thông báo\",\n content:\n \"Nội dung chưa được khởi tạo cho ngôn ngữ này, bạn có muốn khởi tạo?\",\n onOk: () => {\n setCurrentLanguage(value);\n },\n });\n return;\n } else {\n setCurrentLanguage(value);\n form.setFieldsValue({\n id: model?.id,\n name: res?.data.name,\n });\n }\n }}\n selectedCode={currentLanguage}\n />\n
\n )}\n \n \n \n \n \n \n \n );\n};\n","import { PlusOutlined } from \"@ant-design/icons\";\nimport { Button, Col, Divider, Empty, Row, Select, Spin } from \"antd\";\nimport { DefaultOptionType } from \"antd/lib/select\";\nimport React, { useEffect, useState } from \"react\";\nimport { shallowEqual, useDispatch, useSelector } from \"react-redux\";\nimport { ProductAttributeModel } from \"states/product-attribute/product-attribute.models\";\nimport {\n fetchProductAttributeList,\n productAttributesSelector,\n} from \"states/product-attribute/product-attribute.slice\";\nimport { ProductAttributeModalComponent } from \"./product-attribute-modal\";\nexport interface IProductAttributeSelectorProps {\n value?: number | number[];\n isMultiple?: boolean;\n onChange?: (values?: ProductAttributeModel | ProductAttributeModel[]) => void;\n bordered?: boolean;\n textAlign?: \"right\";\n disabled?: boolean;\n}\n\nexport function ProductAttributeSelector(\n props: IProductAttributeSelectorProps\n) {\n const { value, isMultiple, onChange, bordered, textAlign, disabled } = props;\n const productAttributeList = useSelector(\n productAttributesSelector,\n shallowEqual\n );\n const dispatch = useDispatch();\n const [isModal, setModal] = useState(false);\n const handleCloseModal = () => {\n setModal(false);\n };\n const handleOnModal = () => {\n setModal(true);\n };\n useEffect(() => {\n if (!value && productAttributeList.length === 1 && onChange) {\n if (isMultiple) {\n onChange(productAttributeList);\n } else {\n onChange(productAttributeList[0]);\n }\n }\n }, [productAttributeList]);\n\n return (\n \n {\n if (onChange) {\n if (!isMultiple) {\n const productAttribute = productAttributeList.find(\n (m) => m.id === e\n );\n onChange(productAttribute);\n return;\n }\n if (!e) {\n onChange([]);\n return;\n }\n const ids = e as number[];\n let productAttributes = [...productAttributeList].filter(\n (productAttribute) => ids.includes(productAttribute.id)\n );\n onChange(productAttributes);\n }\n }}\n showSearch\n filterOption={(input, option: any) =>\n option.label.props.children.props.children\n ?.toLowerCase()\n .indexOf(input?.toLowerCase()) >= 0\n }\n mode={isMultiple ? \"multiple\" : undefined}\n allowClear\n bordered={bordered}\n options={productAttributeList.map(\n (productAttribute) =>\n ({\n key: productAttribute.id,\n value: productAttribute.id,\n label: (\n \n {productAttribute.name}\n \n ),\n } as DefaultOptionType)\n )}\n notFoundContent={}\n dropdownRender={(menu) => (\n
\n {menu}\n \n
\n }\n >\n Thêm mới\n \n
\n
\n )}\n >\n {\n dispatch(fetchProductAttributeList());\n }}\n isUpdate={false}\n />\n
\n );\n}\n","import { FC, useState, useEffect } from \"react\";\nimport { Input, Modal, Form } from \"antd\";\nimport { Store } from \"antd/lib/form/interface\";\nimport { ProductAttributeValueModel } from \"states/product-attribute/product-attribute.models\";\nimport {\n addProductAttributeValueApi,\n getProductAttributeValueByIdApi,\n updateProductAttributeValueApi,\n} from \"states/product-attribute/product-attribute.api\";\nimport { RootState } from \"app.store\";\nimport { useSelector, shallowEqual } from \"react-redux\";\nimport { LanguageSelector } from \"../language-selector\";\n\ninterface IProductAttributeValueModalProps {\n model: ProductAttributeValueModel;\n onModal: boolean;\n closeModal: () => void;\n onSuccess: () => void;\n isUpdate: boolean;\n}\nexport const ProductAttributeValueModalComponent: FC<\n IProductAttributeValueModalProps\n> = (props) => {\n const { model, onModal, closeModal, onSuccess, isUpdate } = props;\n const clientLanguages = useSelector(\n (state: RootState) => state.localization.clientLanguages,\n shallowEqual\n );\n const [currentLanguage, setCurrentLanguage] = useState();\n const [form] = Form.useForm();\n const [isLoading, setLoading] = useState(false);\n const handleCloseModal = () => closeModal();\n const onFinish = async (values: Store) => {\n setLoading(true);\n try {\n if (isUpdate) {\n let payload: ProductAttributeValueModel = {\n ...values,\n key: model.id.toString(),\n id: values.id,\n value: values.value,\n };\n await updateProductAttributeValueApi(payload, currentLanguage);\n } else {\n let payload: ProductAttributeValueModel = {\n ...values,\n key: \"0\",\n id: 0,\n value: values.value,\n };\n await addProductAttributeValueApi(payload, currentLanguage);\n }\n handleCloseModal();\n setLoading(false);\n onSuccess();\n Modal.success({\n title: \"Thành công\",\n content: \"Cập nhật thành công\",\n });\n } catch (error) {\n Modal.error({\n title: \"Thông báo\",\n content: error?.response?.data?.error?.message ?? \"Lỗi hệ thống\",\n });\n setLoading(false);\n }\n };\n\n const onSubmit = () => {\n form.submit();\n };\n const onReset = () => {\n form.resetFields();\n };\n const onFill = () => {\n form.setFieldsValue({\n id: model?.id,\n value: model?.value,\n });\n };\n\n useEffect(() => {\n if (!isUpdate) {\n onReset();\n } else {\n onFill();\n }\n if (onModal && clientLanguages.length > 0 && currentLanguage) {\n setCurrentLanguage(clientLanguages.find((m) => m.isDefault)?.langCode);\n }\n }, [onModal]);\n\n useEffect(() => {\n if (clientLanguages.length > 0 && !currentLanguage) {\n setCurrentLanguage(clientLanguages.find((m) => m.isDefault)?.langCode);\n }\n }, [clientLanguages]);\n\n return (\n \n {isUpdate ? `Cập nhật giá trị thuộc tính` : `Thêm giá trị thuộc tính`}\n \n }\n confirmLoading={isLoading}\n centered={true}\n visible={onModal}\n onOk={onSubmit}\n onCancel={handleCloseModal}\n okText=\"Lưu\"\n cancelText=\"Hủy\"\n >\n {isUpdate && (\n
\n {\n const res = await getProductAttributeValueByIdApi(\n model.id,\n value\n );\n if (!res.data.value) {\n Modal.confirm({\n title: \"Thông báo\",\n content:\n \"Nội dung chưa được khởi tạo cho ngôn ngữ này, bạn có muốn khởi tạo?\",\n onOk: () => {\n setCurrentLanguage(value);\n },\n });\n return;\n } else {\n setCurrentLanguage(value);\n form.setFieldsValue({\n id: model?.id,\n value: res?.data.value,\n });\n }\n }}\n selectedCode={currentLanguage}\n />\n
\n )}\n \n \n \n \n \n \n \n );\n};\n","import { PlusOutlined } from \"@ant-design/icons\";\nimport { Button, Col, Divider, Empty, Row, Select, Spin } from \"antd\";\nimport { DefaultOptionType } from \"antd/lib/select\";\nimport React, { useEffect, useState } from \"react\";\nimport { shallowEqual, useDispatch, useSelector } from \"react-redux\";\nimport { ProductAttributeValueModel } from \"states/product-attribute/product-attribute.models\";\nimport {\n fetchProductAttributeValueList,\n productAttributeValuesSelector,\n} from \"states/product-attribute/product-attribute.slice\";\nimport { ProductAttributeValueModalComponent } from \"./product-attribute-value-modal\";\nexport interface IProductAttributeValueSelectorProps {\n value?: number | number[];\n isMultiple?: boolean;\n onChange?: (\n values?: ProductAttributeValueModel | ProductAttributeValueModel[]\n ) => void;\n bordered?: boolean;\n textAlign?: \"right\";\n disabled?: boolean;\n}\n\nexport function ProductAttributeValueSelector(\n props: IProductAttributeValueSelectorProps\n) {\n const { value, isMultiple, onChange, bordered, textAlign, disabled } = props;\n const productAttributeValueList = useSelector(\n productAttributeValuesSelector,\n shallowEqual\n );\n const dispatch = useDispatch();\n const [isModal, setModal] = useState(false);\n const handleCloseModal = () => {\n setModal(false);\n };\n const handleOnModal = () => {\n setModal(true);\n };\n useEffect(() => {\n if (!value && productAttributeValueList.length === 1 && onChange) {\n if (isMultiple) {\n onChange(productAttributeValueList);\n } else {\n onChange(productAttributeValueList[0]);\n }\n }\n }, [productAttributeValueList]);\n\n return (\n \n {\n if (onChange) {\n if (!isMultiple) {\n const productAttributeValue = productAttributeValueList.find(\n (m) => m.id === e\n );\n onChange(productAttributeValue);\n return;\n }\n if (!e) {\n onChange([]);\n return;\n }\n const ids = e as number[];\n let productAttributeValues = [...productAttributeValueList].filter(\n (productAttributeValue) => ids.includes(productAttributeValue.id)\n );\n onChange(productAttributeValues);\n }\n }}\n showSearch\n filterOption={(input, option: any) =>\n option.label.props.children.props.children\n ?.toLowerCase()\n .indexOf(input?.toLowerCase()) >= 0\n }\n mode={isMultiple ? \"multiple\" : undefined}\n allowClear\n bordered={bordered}\n options={productAttributeValueList.map(\n (productAttributeValue) =>\n ({\n key: productAttributeValue.id,\n value: productAttributeValue.id,\n label: (\n \n {productAttributeValue.value}\n \n ),\n } as DefaultOptionType)\n )}\n notFoundContent={}\n dropdownRender={(menu) => (\n
\n {menu}\n \n
\n }\n >\n Thêm mới\n \n
\n
\n )}\n >\n {\n dispatch(fetchProductAttributeValueList());\n }}\n isUpdate={false}\n />\n
\n );\n}\n","import {\n DeleteOutlined,\n OrderedListOutlined,\n PlusCircleOutlined,\n} from \"@ant-design/icons\";\nimport {\n Button,\n Checkbox,\n Col,\n Collapse,\n DatePicker,\n Input,\n message,\n Popconfirm,\n Row,\n Select,\n Space,\n} from \"antd\";\nimport momentTz from \"moment-timezone\";\nimport { useState } from \"react\";\nimport {\n ISortableProps,\n Sortable,\n SortItemModel,\n} from \"shared/components/sortable/sortable\";\nimport { DataTypeEnum, DataTypeText } from \"shared/constants/app-enums\";\nimport { Sort } from \"shared/constants/define-localization\";\nimport {\n t,\n CoreResource,\n momentDateTimeFormat,\n} from \"shared/plugins/localization\";\nimport {\n ProductAttributeGroupModel,\n ProductAttributeModel,\n ProductAttributeValueModel,\n} from \"states/product-attribute/product-attribute.models\";\nimport {\n ProductProductAttributeGroupModel,\n ProductProductAttributeModel,\n ProductProductAttributeValueModel,\n} from \"states/product/product.models\";\nimport { shallowEqual, useSelector } from \"react-redux\";\nimport { RootState } from \"app.store\";\nimport { ProductAttributeGroupSelector } from \"shared/components/product-attribute/product-attr-group-selector\";\nimport { ProductAttributeSelector } from \"shared/components/product-attribute/product-attr-selector\";\nimport { ProductAttributeValueSelector } from \"shared/components/product-attribute/product-attr-value-selector\";\n\ninterface IProductAttributeTabProps {\n attributeGroups: ProductProductAttributeGroupModel[];\n onUpdated: (attributeGroups: ProductProductAttributeGroupModel[]) => void;\n}\n\nexport function ProductAttributeTab(props: IProductAttributeTabProps) {\n const { attributeGroups, onUpdated } = props;\n\n const currentTimeZone = useSelector(\n (state: RootState) => state.globalValue.ianaTimeZone,\n shallowEqual\n );\n\n const [sortableModel, setSortableModel] = useState({\n model: [] as SortItemModel[],\n visible: false,\n onCancel: () => {\n setSortableModel({ ...sortableModel, visible: false });\n },\n } as ISortableProps);\n\n const handleAddAttributeGroup = () => {\n attributeGroups.push({\n sort: attributeGroups.length + 1,\n attributes: [] as ProductProductAttributeModel[],\n } as ProductProductAttributeGroupModel);\n onUpdated([...attributeGroups]);\n };\n\n const _handleSortAttributeGroup = () => {\n if (attributeGroups.filter((m) => !m.attributeGroupId).length > 0) {\n message.error(\"Vui lòng chọn nhóm thuộc tính\");\n return;\n }\n sortableModel.model = attributeGroups.map((m) => {\n return {\n key: m.attributeGroupId.toString(),\n sort: m.sort,\n title: m.attributeGroupName,\n } as SortItemModel;\n });\n sortableModel.visible = true;\n sortableModel.title = \"Sắp xếp nhóm thuộc tính\";\n sortableModel.onOk = async (result) => {\n const newList: ProductProductAttributeGroupModel[] = [];\n result.forEach((item) => {\n const attributegroup = attributeGroups.find(\n (m) => m.attributeGroupId.toString() === item.key\n );\n if (!attributegroup) return;\n newList.push(attributegroup);\n });\n onUpdated([...newList]);\n setSortableModel({ ...sortableModel, visible: false });\n };\n setSortableModel({ ...sortableModel });\n };\n\n const _handleSortAttribute = (\n attributeGroup: ProductProductAttributeGroupModel\n ) => {\n if (attributeGroup.attributes.filter((m) => !m.attributeId).length > 0) {\n message.error(\"Vui lòng chọn thuộc tính\");\n return;\n }\n sortableModel.model = attributeGroup.attributes.map((m) => {\n return {\n key: m.attributeId?.toString(),\n sort: m.sort,\n title: m.attributeName,\n } as SortItemModel;\n });\n sortableModel.visible = true;\n sortableModel.title = attributeGroup.attributeGroupName;\n sortableModel.onOk = async (result) => {\n const newList: ProductProductAttributeModel[] = [];\n result.forEach((item) => {\n const attribute = attributeGroup.attributes.find(\n (m) => m.attributeId?.toString() === item.key\n );\n if (!attribute) return;\n newList.push(attribute);\n });\n attributeGroup.attributes = newList;\n onUpdated([...attributeGroups]);\n setSortableModel({ ...sortableModel, visible: false });\n };\n setSortableModel({ ...sortableModel });\n };\n\n const _renderAttributeValue = (attribute: ProductProductAttributeModel) => {\n switch (attribute.dataType) {\n case DataTypeEnum.ValueSelect: {\n return (\n {\n let valuesTemp = values as ProductAttributeValueModel[];\n if (!valuesTemp) return;\n attribute.values = valuesTemp.map(\n (m) =>\n ({\n valueId: m.id,\n } as ProductProductAttributeValueModel)\n );\n onUpdated([...attributeGroups]);\n }}\n isMultiple={true}\n value={attribute.values.map((m) => m.valueId)}\n />\n );\n }\n case DataTypeEnum.Boolean: {\n return (\n {\n attribute.valueBoolean = e.target.checked;\n onUpdated([...attributeGroups]);\n }}\n >\n );\n }\n case DataTypeEnum.DateTime: {\n return (\n {\n attribute.valueDate = momentTz\n .tz(dateString, momentDateTimeFormat(), currentTimeZone)\n .toDate();\n onUpdated([...attributeGroups]);\n }}\n showTime\n showSecond={false}\n className=\"w-100\"\n />\n );\n }\n case DataTypeEnum.Number: {\n return (\n {\n attribute.valueNumber = e.target.valueAsNumber;\n onUpdated([...attributeGroups]);\n }}\n placeholder=\"Value\"\n type=\"number\"\n />\n );\n }\n case DataTypeEnum.String: {\n return (\n {\n attribute.valueString = e.target.value;\n onUpdated([...attributeGroups]);\n }}\n placeholder=\"Value\"\n />\n );\n }\n }\n };\n\n return (\n <>\n }\n >\n Thêm nhóm thuộc tính\n \n }\n >\n {\"Sắp xếp\"}\n \n {attributeGroups.map((group, groupIndex) => (\n \n \n {\n let valueTemp = value as ProductAttributeGroupModel;\n if (!valueTemp) return;\n group.attributeGroupId = valueTemp.id;\n group.attributeGroupName = valueTemp.name;\n onUpdated([...attributeGroups]);\n }}\n width={\"200px\"}\n isMultiple={false}\n value={group.attributeGroupId}\n onClick={(e) => {\n e.stopPropagation();\n }}\n />\n {\n e.stopPropagation();\n const newAttribute = new ProductProductAttributeModel();\n newAttribute.sort = group.attributes.length + 1;\n group.attributes.push(newAttribute);\n onUpdated([...attributeGroups]);\n }}\n type=\"primary\"\n icon={}\n />\n {\n e.stopPropagation();\n _handleSortAttribute(group);\n }}\n type=\"default\"\n icon={}\n >\n {\n attributeGroups.splice(groupIndex, 1);\n onUpdated([...attributeGroups]);\n }}\n okText=\"Có\"\n cancelText=\"Không\"\n >\n {\n e.stopPropagation();\n }}\n danger\n icon={}\n />\n \n \n }\n >\n {group.attributes.map((attribute, attributeIndex) => (\n \n \n {\n let valueTemp = value as ProductAttributeModel;\n if (!valueTemp) return;\n attribute.attributeId = valueTemp.id;\n attribute.attributeName = valueTemp.name;\n onUpdated([...attributeGroups]);\n }}\n isMultiple={false}\n value={attribute.attributeId}\n />\n \n \n \n option.children\n .toLowerCase()\n .indexOf(input.toLowerCase()) >= 0\n }\n onChange={(value) => {\n attribute.dataType = value;\n attribute.resetValue();\n onUpdated([...attributeGroups]);\n }}\n >\n {Object.keys(DataTypeEnum).map((key) =>\n !isNaN(Number(key)) ? (\n \n {DataTypeText[Number(key)]}\n \n ) : null\n )}\n \n \n \n
\n {_renderAttributeValue(attribute)}\n
\n {\n group.attributes.splice(groupIndex, 1);\n onUpdated([...attributeGroups]);\n }}\n okText=\"Có\"\n cancelText=\"Không\"\n className=\"ml-2\"\n >\n \n \n \n )}\n >\n {\n dispatch(fetchUnitList());\n }}\n isUpdate={false}\n />\n \n );\n}\n","import { DeleteOutlined, PlusOutlined } from \"@ant-design/icons\";\nimport {\n Button,\n Checkbox,\n Col,\n Collapse,\n DatePicker,\n Input,\n Popconfirm,\n Row,\n Select,\n Space,\n Table,\n Typography,\n} from \"antd\";\nimport { ColumnsType } from \"antd/lib/table\";\nimport { RootState } from \"app.store\";\nimport momentTz from \"moment-timezone\";\nimport { shallowEqual, useSelector } from \"react-redux\";\nimport { CustomNumberInput } from \"shared/components/custom-input/custom-number-input\";\nimport { MoneyInput } from \"shared/components/custom-input/money-input\";\nimport { ProductAttributeSelector } from \"shared/components/product-attribute/product-attr-selector\";\nimport { ProductAttributeValueSelector } from \"shared/components/product-attribute/product-attr-value-selector\";\nimport { TagSelector } from \"shared/components/tag/tag-selector\";\nimport { UnitSelector } from \"shared/components/unit/unit-selector\";\nimport { UploadFileLocal } from \"shared/components/upload-file/upload-file\";\nimport { SeoModel } from \"shared/models/seo-model\";\nimport {\n CoreResource,\n momentDateTimeFormat,\n t,\n} from \"shared/plugins/localization\";\nimport { cleanUnicode } from \"shared/plugins/string-helper\";\nimport {\n ProductAttributeModel,\n ProductAttributeValueModel,\n} from \"states/product-attribute/product-attribute.models\";\nimport { ProductCategoryModel } from \"states/product-category/product-category.models\";\nimport {\n PriceBySubTotalItemModel,\n ProductModel,\n ProductVariationAttributeModel,\n WholesaleItemModel,\n WholesalePriceType,\n} from \"states/product/product.models\";\nimport { TagModel } from \"states/tag/tag.models\";\nimport { UnitModel } from \"states/unit/unit.models\";\n\nexport interface IProductInformationTabProps {\n model: ProductModel;\n onChange: (newModel: ProductModel) => void;\n productCategories: ProductCategoryModel[];\n isUpdateMode: boolean;\n isUnitProduct: boolean;\n}\n\nexport function ProductInformationTab(props: IProductInformationTabProps) {\n const { model, onChange, productCategories, isUpdateMode, isUnitProduct } =\n props;\n\n const currentTimeZone = useSelector(\n (state: RootState) => state.globalValue.ianaTimeZone,\n shallowEqual\n );\n\n const _handleAddVariationAttribute = () => {\n if (!model.variationAttributes) {\n model.variationAttributes = [];\n }\n model.variationAttributes.push({} as ProductVariationAttributeModel);\n onChange({ ...model, variationAttributes: [...model.variationAttributes] });\n };\n\n const _handleAddWholeSale = () => {\n if (!model.wholesale) {\n model.wholesale = { items: [] };\n }\n model.wholesale.items.push({} as WholesaleItemModel);\n onChange({\n ...model,\n wholesale: { ...model.wholesale, items: [...model.wholesale.items] },\n });\n };\n\n const _handleAddPriceBySubTotal = () => {\n if (!model.priceBySubTotal) {\n model.priceBySubTotal = { items: [] };\n }\n model.priceBySubTotal.items.push({} as PriceBySubTotalItemModel);\n onChange({\n ...model,\n priceBySubTotal: {\n ...model.priceBySubTotal,\n items: [...model.priceBySubTotal.items],\n },\n });\n };\n\n const wholesaleColumns: ColumnsType = [\n {\n title: \"Số lượng từ\",\n dataIndex: \"quantityFrom\",\n key: \"quantityFrom\",\n render: (quantityFrom, item) => (\n {\n item.quantityFrom = value;\n onChange({ ...model });\n }}\n placeholder=\"Số lượng từ\"\n />\n ),\n },\n {\n title: \"Số lượng đến\",\n dataIndex: \"quantityTo\",\n key: \"quantityTo\",\n render: (quantityTo, item) => (\n {\n item.quantityTo = value;\n onChange({ ...model });\n }}\n placeholder=\"Số lượng đến\"\n />\n ),\n },\n {\n title: \"Giá tiền\",\n dataIndex: \"price\",\n key: \"price\",\n render: (price, item) => (\n {\n item.sellingPrice = value;\n onChange({ ...model });\n }}\n placeholder=\"Giá tiền\"\n />\n ),\n },\n {\n title: \"Loại\",\n dataIndex: \"price\",\n key: \"price\",\n render: (price, item) => (\n {\n item.priceType = value;\n onChange({ ...model });\n }}\n >\n Đơn giá\n \n Giá cho tất cả\n \n \n ),\n },\n {\n title: \"\",\n width: \"100px\",\n render: (attribute, item, index) => (\n {\n model.wholesale?.items.splice(index, 1);\n onChange({\n ...model,\n wholesale: {\n ...model.wholesale,\n items: [...(model.wholesale?.items ?? [])],\n },\n });\n }}\n okText=\"Có\"\n cancelText=\"Không\"\n >\n \n \n \n
\n \n \n \n
\n \n
\n \n
\n \n \n {\n onChange({ ...model, images: newFileList });\n }}\n />\n \n \n\n {((!isUpdateMode && !isUnitProduct) || model.isVariation) &&\n !model.isModifier && (\n \n \n \n {!model.mainVariationProductId &&\n !isUpdateMode &&\n !isUnitProduct && (\n
\n }\n >\n Thêm thuộc tính\n \n
\n )}\n
\n
\n )}\n\n \n \n \n \n Cân nặng (g): \n {\n onChange({\n ...model,\n size: { ...model.size, weight: e.target.valueAsNumber },\n });\n }}\n >\n \n \n Chiều dài (cm): \n {\n onChange({\n ...model,\n size: { ...model.size, length: e.target.valueAsNumber },\n });\n }}\n >\n \n \n Chiều rộng (cm): \n {\n onChange({\n ...model,\n size: { ...model.size, width: e.target.valueAsNumber },\n });\n }}\n >\n \n \n Chiều cao (cm): \n {\n onChange({\n ...model,\n size: { ...model.size, height: e.target.valueAsNumber },\n });\n }}\n >\n \n {\" \"}\n \n \n \n );\n}\n","import { ProductModel } from \"states/product/product.models\";\n\ninterface IProductNameProps {\n product: ProductModel;\n}\n\nexport function ProductName(props: IProductNameProps) {\n return (\n \n {props?.product?.name}\n {props.product?.unit ? (\n <>\n {\" \"}\n | {props.product.unit.unitName}\n \n ) : null}\n {props.product.variationAttributes?.length > 0 ? (\n <>\n {\" \"}\n |{\" \"}\n {props.product.variationAttributes.map((m) => (\n {m.variationValue}\n ))}\n \n ) : (\n \"\"\n )}\n \n );\n}\n","import { PlusOutlined } from \"@ant-design/icons\";\nimport { Avatar, Button, Collapse, message, Modal, Spin, Table } from \"antd\";\nimport { ColumnsType } from \"antd/lib/table\";\nimport React, { useEffect, useState } from \"react\";\n\nimport { CoreResource, t } from \"shared/plugins/localization\";\nimport {\n formatMoney,\n redirectFileLocalUrl,\n} from \"shared/plugins/string-helper\";\nimport { ProductCategoryModel } from \"states/product-category/product-category.models\";\nimport {\n ProductModel,\n ProductProductAttributeGroupModel,\n} from \"states/product/product.models\";\nimport { Link } from \"react-router-dom\";\nimport {\n addProductApi,\n searchListProductApi,\n updateProductApi,\n} from \"states/product/product.api\";\nimport { ProductInformationTab } from \"./product-information-tab\";\nimport { ProductName } from \"shared/components/product/product-name\";\n\nexport interface IProductUnitProductsProps {\n mainProduct: ProductModel;\n productCategories: ProductCategoryModel[];\n isUpdateMode: boolean;\n refresh: () => void;\n}\ninterface IProductUnitProductModal {\n openModal: boolean;\n closeModal: () => void;\n model: ProductModel;\n isUpdateMode: boolean;\n onChange: (newModel: ProductModel) => void;\n}\nexport function ProductUnitProducts(props: IProductUnitProductsProps) {\n const { mainProduct, productCategories, isUpdateMode, refresh } = props;\n const [loading, setLoading] = useState(false);\n const [unitProducts, setUnitProducts] = useState([]);\n const [unitProductModal, setUnitProductModal] =\n useState({\n openModal: false,\n isUpdateMode: false,\n onChange: (newModel: ProductModel) => {\n setUnitProductModal({\n ...unitProductModal,\n openModal: true,\n isUpdateMode: newModel?.id ? true : false,\n model: newModel,\n });\n },\n closeModal: () => {\n setUnitProductModal({\n ...unitProductModal,\n openModal: false,\n model: {} as ProductModel,\n });\n },\n model: {} as ProductModel,\n } as IProductUnitProductModal);\n\n const handleAddUnit = async () => {\n setUnitProductModal({\n ...unitProductModal,\n openModal: true,\n model: {\n isInventory: mainProduct.isInventory,\n name: mainProduct.name,\n mainCategoryId: mainProduct.mainCategoryId,\n relatedCategoryIds: mainProduct.relatedCategoryIds,\n isActive: mainProduct.isActive,\n images: mainProduct.images,\n isVariation: mainProduct.isVariation,\n variationAttributes: mainProduct.variationAttributes,\n attributeGroups: [] as ProductProductAttributeGroupModel[],\n } as ProductModel,\n isUpdateMode: false,\n });\n };\n\n const onSaved = async () => {\n setLoading(true);\n try {\n const payload = {\n id: unitProductModal.model.id,\n attributeGroups: unitProductModal.model.attributeGroups,\n images: unitProductModal.model.images,\n name: mainProduct.name,\n skuCode:\n unitProductModal.isUpdateMode || unitProductModal.model.skuCode !== \"\"\n ? unitProductModal.model.skuCode\n : `${mainProduct.skuCode}_${\n Number(mainProduct.unitProducts?.length) + 1\n }`,\n slug: \"\", //Tự gen ở BE\n variationAttributes: unitProductModal.model.variationAttributes,\n accessoryIds: unitProductModal.model.accessoryIds,\n barCode: unitProductModal.model.barCode,\n costPrice: unitProductModal.model.costPrice,\n customizeTheme: unitProductModal.model.customizeTheme,\n isAccessory: unitProductModal.model.isAccessory,\n isActive: unitProductModal.model.isActive,\n isInventory: unitProductModal.model.isInventory,\n mainCategoryId: mainProduct.mainCategoryId, //tự gen ở be\n mainVariationProductId: mainProduct.mainVariationProductId,\n price: unitProductModal.model.price,\n mainUnitProductId: mainProduct.id,\n promotionFromDate: unitProductModal.model.promotionFromDate,\n promotionPrice: unitProductModal.model.promotionPrice,\n promotionToDate: unitProductModal.model.promotionToDate,\n relatedCategoryIds: mainProduct.relatedCategoryIds, //tự gen ở be\n seoFields: unitProductModal.model.seoFields,\n unitId: unitProductModal.model.unit?.id,\n unitRate: unitProductModal.model.unitRate,\n size: unitProductModal.model.size,\n isModifier: false,\n branchId: mainProduct.branchId,\n tagIds: mainProduct.tags.map((m) => m.id),\n };\n if (unitProductModal.isUpdateMode) {\n await updateProductApi(payload);\n } else {\n await addProductApi(payload);\n }\n setLoading(false);\n message.success(t(CoreResource, \"UpdateDataSuccessfully\"));\n refresh();\n } catch (error) {\n message.error(\n error?.response?.data?.error?.message ??\n t(CoreResource, \"DefaultErrorMessage\")\n );\n setLoading(false);\n }\n };\n\n const handleEditUnit = async (editedProduct: ProductModel) => {\n setUnitProductModal({\n ...unitProductModal,\n openModal: true,\n isUpdateMode: true,\n model: editedProduct,\n });\n };\n\n const columns: ColumnsType = [\n {\n title: \"Sku code\",\n dataIndex: \"skuCode\",\n key: \"skuCode\",\n width: \"150px\",\n render: (skuCode: string, item) => skuCode,\n },\n {\n title: \"Product name\",\n dataIndex: \"websiteName\",\n key: \"websiteName\",\n render: (websiteName: string, item) => (\n \n {\n handleEditUnit(item);\n }}\n >\n 0 ? item.images[0] : \"\"\n )}\n shape=\"square\"\n />{\" \"}\n {}\n \n \n ),\n },\n {\n title: \"Unit Measurement Rate\",\n dataIndex: \"unitRate\",\n key: \"unitRate\",\n align: \"center\",\n render: (unitRate: number, item) => unitRate,\n },\n {\n title: \"Selling price\",\n dataIndex: \"websiteName\",\n key: \"websiteName\",\n align: \"center\",\n render: (websiteName: string, item) => formatMoney(item.price),\n },\n ];\n\n useEffect(() => {\n if (mainProduct && isUpdateMode && mainProduct.unitProducts.length > 0) {\n setLoading(true);\n searchListProductApi({\n page: 1,\n pageSize: 20,\n includeAccessory: true,\n includeChildrenUnitProduct: true,\n includeChildrenVariationProduct: true,\n productIds: mainProduct.unitProducts.map((m) => m.id),\n }).then((res) => {\n setLoading(false);\n setUnitProducts([...res.data]);\n });\n }\n }, [mainProduct, isUpdateMode]);\n\n return (\n <>\n {isUpdateMode && (\n \n \n \n index?.toString() ?? \"\"}\n />\n
\n \n
\n
\n \n \n \n \n
\n )}\n \n );\n}\n","import { RollbackOutlined, SaveOutlined } from \"@ant-design/icons\";\nimport {\n Breadcrumb,\n Button,\n Col,\n message,\n Modal,\n Row,\n Space,\n Tabs,\n} from \"antd\";\nimport { useEffect, useState } from \"react\";\nimport { shallowEqual, useDispatch, useSelector } from \"react-redux\";\nimport { Link, useParams } from \"react-router-dom\";\nimport {\n addProductApi,\n getProductByIdApi,\n updateProductApi,\n} from \"states/product/product.api\";\nimport {\n ProductModel,\n ProductVariationAttributeModel,\n} from \"states/product/product.models\";\nimport { ProductCategoryModel } from \"states/product-category/product-category.models\";\nimport { getProductCategoryListApi } from \"states/product-category/product-category.api\";\nimport { ProductAttributeTab } from \"./components/product-attribute-tab\";\nimport { t, CoreResource } from \"shared/plugins/localization\";\nimport { ProductInformationTab } from \"./components/product-information-tab\";\nimport { Seo } from \"shared/components/seo/seo\";\nimport { SeoModel } from \"shared/models/seo-model\";\nimport { CustomTheme } from \"shared/components/custom-theme/custom-theme\";\nimport { setLoading } from \"states/global-value/global-value.slice\";\nimport { ADD_PRODUCT_ROUTE, PRODUCT_ROUTE } from \"shared/constants/routes\";\nimport { fetchTagList } from \"states/tag/tag.slice\";\nimport {\n fetchProductAttributeGroupList,\n fetchProductAttributeList,\n fetchProductAttributeValueList,\n} from \"states/product-attribute/product-attribute.slice\";\nimport { fetchUnitList } from \"states/unit/unit.slice\";\nimport useRefresh from \"shared/hooks/use-refresh\";\nimport { ProductUnitProducts } from \"./components/product-unit-product\";\nimport { RootState } from \"app.store\";\nimport { LanguageSelector } from \"shared/components/language-selector\";\n\ninterface RouteParams {\n productId: string;\n}\n\nexport function AddUpdateProduct() {\n const refresh = useRefresh();\n const clientLanguages = useSelector(\n (state: RootState) => state.localization.clientLanguages,\n shallowEqual\n );\n const [currentLanguage, setCurrentLanguage] = useState();\n const { productId } = useParams();\n const [model, setModel] = useState({\n isActive: true,\n isInventory: false,\n variationAttributes: [] as ProductVariationAttributeModel[],\n unitProducts: [] as ProductModel[],\n unitRate: 1,\n } as ProductModel);\n const [mainVariationProduct, setMainVariationProduct] =\n useState();\n const [isUpdateMode, setIsUpdateMode] = useState(false);\n const [productCategories, setProductCategories] = useState<\n ProductCategoryModel[]\n >([]);\n\n const dispatch = useDispatch();\n\n const getProduct = async () => {\n try {\n const res = await getProductByIdApi(Number(productId));\n setModel({\n ...res.data,\n });\n if (res.data.mainVariationProductId) {\n loadMainVariationProduct(res.data.mainVariationProductId);\n }\n } catch (error) {\n message.error(\n error?.response?.data?.error?.message ??\n t(CoreResource, \"DefaultErrorMessage\")\n );\n }\n };\n\n const getProductCategories = async () => {\n try {\n const res = await getProductCategoryListApi();\n setProductCategories(res.data);\n } catch (error) {\n message.error(\n error?.response?.data?.error?.message ??\n t(CoreResource, \"DefaultErrorMessage\")\n );\n }\n };\n\n const onSaved = async () => {\n dispatch(setLoading(true));\n try {\n const payload = {\n id: model.id,\n attributeGroups: model.attributeGroups,\n images: model.images,\n name: model.name,\n skuCode: model.skuCode,\n slug: model.slug,\n variationAttributes: model.variationAttributes,\n accessoryIds: model.accessoryIds,\n barCode: model.barCode,\n costPrice: model.costPrice,\n customizeTheme: model.customizeTheme,\n isAccessory: model.isAccessory,\n isActive: model.isActive,\n isInventory: model.isInventory,\n isVariation: model.isVariation,\n mainCategoryId: model.mainCategoryId,\n mainVariationProductId: model.mainVariationProductId,\n price: model.price,\n promotionFromDate: model.promotionFromDate,\n promotionPrice: model.promotionPrice,\n promotionToDate: model.promotionToDate,\n relatedCategoryIds: model.relatedCategoryIds,\n seoFields: model.seoFields,\n unitId: model.unit?.id,\n unitProducts: [],\n unitRate: model.unitRate,\n tagIds: model.tags ? model.tags.map((m) => m.id) : [],\n size: model.size,\n isModifier: model.isModifier,\n branchId: undefined,\n wholesale: model.wholesale,\n priceBySubTotal: model.priceBySubTotal,\n mainUnitProductId: undefined,\n };\n if (isUpdateMode) {\n await updateProductApi(payload, currentLanguage);\n } else {\n await addProductApi(payload, currentLanguage);\n }\n message.success(t(CoreResource, \"UpdateDataSuccessfully\"));\n refresh();\n } catch (error) {\n message.error(\n error?.response?.data?.error?.message ??\n t(CoreResource, \"DefaultErrorMessage\")\n );\n }\n dispatch(setLoading(false));\n };\n\n const loadMainVariationProduct = (mainVariationProductId: number) => {\n getProductByIdApi(mainVariationProductId).then((res) => {\n setMainVariationProduct(res.data);\n });\n };\n\n useEffect(() => {\n if (document.location.href.indexOf(ADD_PRODUCT_ROUTE) > -1) {\n setIsUpdateMode(false);\n if (productId) {\n loadMainVariationProduct(Number(productId));\n setModel({\n ...model,\n isVariation: true,\n mainVariationProductId: Number(productId),\n });\n }\n document.title = \"Thêm sản phẩm\";\n } else {\n setIsUpdateMode(true);\n getProduct();\n document.title = \"Cập nhật sản phẩm\";\n }\n\n dispatch(fetchTagList());\n dispatch(fetchProductAttributeGroupList());\n dispatch(fetchProductAttributeList());\n dispatch(fetchProductAttributeValueList());\n dispatch(fetchUnitList());\n getProductCategories();\n }, []);\n\n useEffect(() => {\n if (mainVariationProduct && !isUpdateMode) {\n model.name = mainVariationProduct.name;\n model.mainCategoryId = mainVariationProduct.mainCategoryId;\n model.relatedCategoryIds = mainVariationProduct.relatedCategoryIds;\n model.unit = mainVariationProduct.unit;\n model.unitRate = mainVariationProduct.unitRate;\n model.isActive = mainVariationProduct.isActive;\n model.isInventory = mainVariationProduct.isInventory;\n model.images = mainVariationProduct.images;\n model.seoFields = mainVariationProduct.seoFields;\n model.variationAttributes = [];\n mainVariationProduct.variationAttributes.forEach((att) => {\n model.variationAttributes.push({\n variationAttributeId: att.variationAttributeId,\n } as ProductVariationAttributeModel);\n });\n setModel({ ...model });\n }\n }, [mainVariationProduct]);\n\n useEffect(() => {\n if (clientLanguages.length > 0 && !currentLanguage) {\n setCurrentLanguage(clientLanguages.find((m) => m.isDefault)?.langCode);\n }\n }, [clientLanguages]);\n\n return (\n
\n \n \n \n \n Sản phẩm\n \n \n {isUpdateMode ? \"Cập nhật\" : \"Thêm\"}{\" \"}\n {mainVariationProduct\n ? `biến thể của ${mainVariationProduct.name}`\n : \"sản phẩm\"}\n \n \n \n \n \n {isUpdateMode && (\n {\n const res = await getProductByIdApi(model.id, value);\n if (!res.data.name) {\n Modal.confirm({\n title: \"Thông báo\",\n content:\n \"Nội dung chưa được khởi tạo cho ngôn ngữ này, bạn có muốn khởi tạo?\",\n onOk: () => {\n setCurrentLanguage(value);\n },\n });\n return;\n } else {\n setCurrentLanguage(value);\n setModel(res.data);\n }\n }}\n selectedCode={currentLanguage}\n />\n )}\n \n \n \n \n \n \n \n \n \n \n \n {(!model.isVariation || !model.mainVariationProductId) && (\n <>\n Thuộc tính sản phẩm} key=\"2\">\n {\n setModel({ ...model, attributeGroups });\n }}\n >\n \n \n {\n setModel({ ...model, customizeTheme: changedModel });\n }}\n model={model.customizeTheme ?? {}}\n />\n \n \n {\n setModel({ ...model, slug, seoFields });\n }}\n />\n \n {/* \n Tính năng đang phát triển\n \n \n Tính năng đang phát triển\n \n \n Tính năng đang phát triển\n */}\n \n )}\n \n {isUpdateMode && !model.isModifier && (\n \n )}\n
\n );\n}\n","import {\n SHIPPING_FEE_API_BY_ADDRESS,\n SHIPPING_FEE_API_BY_ORDER_AMOUNT,\n SHIPPING_FEE_API_DEFAULT,\n} from \"shared/constants/api-endpoint\";\nimport { apiClient } from \"shared/plugins/http-service\";\nimport {\n CreatedShippingFeeAddressModel,\n CreatedShippingFeeOrderAmountModel,\n RemovedShippingFeeAddressModel,\n RemovedShippingFeeOrderAmountModel,\n ShippingFeeAddressModel,\n ShippingFeeOrderAmountModel,\n UpdatedShippingFeeAddressModel,\n UpdatedShippingFeeOrderAmountModel,\n} from \"./shipping-fee.models\";\n\nexport const getDefaultShippingFee = async () => {\n const createResponse = await apiClient.getHttp(\n `${SHIPPING_FEE_API_DEFAULT}`\n );\n return createResponse;\n};\n\nexport const updateDefaultShippingFee = async (shippingFee: number) => {\n const createResponse = await apiClient.putHttp(\n `${SHIPPING_FEE_API_DEFAULT}?shippingFee=${shippingFee}`\n );\n return createResponse;\n};\n\nexport const getShippingFeeAddresses = async () => {\n const createResponse = await apiClient.getHttp(\n `${SHIPPING_FEE_API_BY_ADDRESS}`\n );\n return createResponse;\n};\n\nexport const updateShippingFeeAddresses = async (\n model: UpdatedShippingFeeAddressModel[]\n) => {\n const createResponse = await apiClient.putHttp(\n `${SHIPPING_FEE_API_BY_ADDRESS}`,\n model\n );\n return createResponse;\n};\n\nexport const createShippingFeeAddresses = async (\n model: CreatedShippingFeeAddressModel[]\n) => {\n const createResponse = await apiClient.postHttp(\n `${SHIPPING_FEE_API_BY_ADDRESS}`,\n model\n );\n return createResponse;\n};\n\nexport const removeShippingFeeAddresses = async (\n removedModel: RemovedShippingFeeAddressModel\n) => {\n const response = await apiClient.postHttp(\n `${SHIPPING_FEE_API_BY_ADDRESS}/remove_list`,\n removedModel\n );\n return response;\n};\n\nexport const createShippingFeeOrderAmount = async (\n model: CreatedShippingFeeOrderAmountModel\n) => {\n return await apiClient.postHttp(`${SHIPPING_FEE_API_BY_ORDER_AMOUNT}`, model);\n};\n\nexport const getShippingFeeOrderAmountList = async () => {\n return await apiClient.getHttp(\n `${SHIPPING_FEE_API_BY_ORDER_AMOUNT}`\n );\n};\n\nexport const updateShippingFeeOrderAmount = async (\n model: UpdatedShippingFeeOrderAmountModel\n) => {\n return await apiClient.putHttp(`${SHIPPING_FEE_API_BY_ORDER_AMOUNT}`, model);\n};\n\nexport const removeShippingFeeOrderAmount = async (\n removedModel: RemovedShippingFeeOrderAmountModel\n) => {\n return await apiClient.postHttp(\n `${SHIPPING_FEE_API_BY_ORDER_AMOUNT}/remove_list`,\n removedModel\n );\n};\n","import { AppstoreOutlined, MailOutlined } from \"@ant-design/icons\";\nimport { Menu } from \"antd\";\nimport { Link } from \"react-router-dom\";\nimport {\n SHIPPING_FEE_BY_ADDRESS_ROUTE,\n SHIPPING_FEE_BY_ORDER_AMOUNT_ROUTE,\n SHIPPING_FEE_DEFAULT_ROUTE,\n} from \"shared/constants/routes\";\n\ninterface IShippingFeeMenuProps {\n activeKey: string;\n}\n\nexport function ShippingFeeMenu(props: IShippingFeeMenuProps) {\n const { activeKey } = props;\n return (\n \n }>\n Phí ship mặc định\n \n }>\n Phí ship theo quận huyện\n \n }>\n \n Phí ship theo tiền hàng\n \n \n \n );\n}\n","import { Button, Card, Col, Input, message, Row, Typography } from \"antd\";\nimport React, { useEffect, useState } from \"react\";\nimport { MoneyInput } from \"shared/components/custom-input/money-input\";\nimport { t, CoreResource } from \"shared/plugins/localization\";\nimport {\n getDefaultShippingFee,\n updateDefaultShippingFee,\n} from \"states/shipping-fee/shipping-fee.api\";\nimport { ShippingFeeMenu } from \"./components/shipping-fee-menu\";\n\nexport function DefaultShippingFee() {\n const [loading, setLoading] = useState(false);\n const [defaultFee, setDefaultFee] = useState(0);\n\n const onSave = async () => {\n setLoading(true);\n try {\n await updateDefaultShippingFee(defaultFee);\n message.success(t(CoreResource, \"UpdateDataSuccessfully\"));\n } catch (error) {\n message.error(\n error?.response?.data?.error?.message ??\n t(CoreResource, \"DefaultErrorMessage\")\n );\n }\n setLoading(false);\n };\n\n useEffect(() => {\n getDefaultShippingFee().then((res) => {\n setDefaultFee(res.data);\n });\n }, []);\n\n return (\n
\n \n \n \n \n Lưu\n \n }\n >\n \n \n Phí ship (*):\n \n \n setDefaultFee(e)}\n >\n \n \n \n \n \n
\n );\n}\n","import { apiClient } from \"shared/plugins/http-service\";\nimport {\n ADDRESS_API_COUNTRY,\n ADDRESS_API_DISTRICT,\n ADDRESS_API_PROVINCE,\n ADDRESS_API_WARD,\n} from \"./../../shared/constants/api-endpoint\";\nimport {\n CountryModel,\n DistrictModel,\n ProvinceModel,\n WardModel,\n} from \"./address.models\";\n\nexport const getProvinceList = async () => {\n return await apiClient.getHttp(`${ADDRESS_API_PROVINCE}`);\n};\n\nexport const getDistrictList = async (provinceCode: string) => {\n return await apiClient.getHttp(\n `${ADDRESS_API_DISTRICT}?provinceCode=${provinceCode}`\n );\n};\n\nexport const getWardList = async (districtCode: string) => {\n return await apiClient.getHttp(\n `${ADDRESS_API_WARD}?districtCode=${districtCode}`\n );\n};\n\nexport const getCountryList = async () => {\n return await apiClient.getHttp(`${ADDRESS_API_COUNTRY}`);\n};\n","import {\n Col,\n Input,\n message,\n Modal,\n Row,\n Select,\n Table,\n Typography,\n} from \"antd\";\nimport { ColumnsType } from \"antd/lib/table\";\nimport * as React from \"react\";\nimport { useEffect, useState } from \"react\";\nimport { MoneyInput } from \"shared/components/custom-input/money-input\";\nimport { t, CoreResource } from \"shared/plugins/localization\";\nimport { getDistrictList } from \"states/address/address.api\";\nimport { ProvinceModel } from \"states/address/address.models\";\nimport {\n createShippingFeeAddresses,\n updateShippingFeeAddresses,\n} from \"states/shipping-fee/shipping-fee.api\";\nimport {\n CreatedShippingFeeAddressModel,\n ShippingFeeAddressModel,\n UpdatedShippingFeeAddressModel,\n} from \"states/shipping-fee/shipping-fee.models\";\n\ninterface IShippingFeeAddressModalProps {\n onModal: boolean;\n closeModal: () => void;\n isUpdate: boolean;\n onSuccess: () => void;\n provinces: ProvinceModel[];\n shippingFeeAddresses: ShippingFeeAddressModel[];\n}\n\nexport function ShippingFeeAddressModal(props: IShippingFeeAddressModalProps) {\n const {\n onModal,\n closeModal,\n onSuccess,\n isUpdate,\n provinces,\n shippingFeeAddresses,\n } = props;\n const [isLoading, setLoading] = useState(false);\n const [shippingFeeAddressesModel, setShippingFeeAddressesModel] = useState<\n ShippingFeeAddressModel[]\n >([]);\n const [currentProvinceCode, setCurrentProvinceCode] = useState();\n\n const handleCloseModal = () => closeModal();\n\n const handleChangeProvince = async (provincecode?: string) => {\n try {\n if (provincecode) {\n const res = await getDistrictList(provincecode);\n setShippingFeeAddressesModel(\n res.data.map((district) => ({\n key: \"\",\n id: 0,\n shippingFee: undefined,\n districtCode: district.districtCode,\n districtName: district.name,\n provinceCode: provincecode,\n provinceName: district.provinceName,\n }))\n );\n } else {\n setShippingFeeAddressesModel([]);\n }\n setCurrentProvinceCode(provincecode);\n } catch {\n message.error(\"Không thể tải danh sách quận / huyện\");\n }\n };\n\n const onFinish = async () => {\n setLoading(true);\n try {\n if (isUpdate) {\n const payload = shippingFeeAddressesModel.map(\n (s) =>\n ({\n id: s.id,\n shippingFee: s.shippingFee,\n districtCode: s.districtCode,\n provinceCode: s.provinceCode,\n } as UpdatedShippingFeeAddressModel)\n );\n await updateShippingFeeAddresses(payload);\n } else {\n const payload = shippingFeeAddressesModel.map(\n (s) =>\n ({\n shippingFee: s.shippingFee,\n districtCode: s.districtCode,\n provinceCode: s.provinceCode,\n } as CreatedShippingFeeAddressModel)\n );\n await createShippingFeeAddresses(payload);\n }\n handleCloseModal();\n onSuccess();\n Modal.success({\n title: \"Thành công\",\n content: t(CoreResource, \"UpdateDataSuccessfully\"),\n });\n } catch (error) {\n Modal.error({\n title: \"Thông báo\",\n content:\n error?.response?.data?.error?.message ??\n t(CoreResource, \"DefaultErrorMessage\"),\n });\n }\n setLoading(false);\n };\n\n const districtColumn: ColumnsType = [\n {\n title: \"Quận / Huyện\",\n dataIndex: \"districtName\",\n key: \"districtName\",\n render: (districtName: string) => <>{districtName},\n },\n {\n title: \"Phí ship\",\n dataIndex: \"shippingFee\",\n key: \"shippingFee\",\n render: (shippingFee: number, item, index) => (\n {\n item.shippingFee = e;\n setShippingFeeAddressesModel([...shippingFeeAddressesModel]);\n }}\n >\n ),\n },\n ];\n\n useEffect(() => {\n setShippingFeeAddressesModel(shippingFeeAddresses);\n if (isUpdate) {\n setCurrentProvinceCode(shippingFeeAddresses[0].provinceCode);\n } else {\n setCurrentProvinceCode(undefined);\n }\n }, [shippingFeeAddresses]);\n return (\n \n {isUpdate\n ? `Cập nhật phí ship theo khu vực`\n : `Thêm phí ship theo khu vực`}\n \n }\n confirmLoading={isLoading}\n centered={true}\n visible={onModal}\n onOk={onFinish}\n onCancel={handleCloseModal}\n okText=\"Lưu\"\n cancelText=\"Hủy bỏ\"\n width=\"1000px\"\n >\n \n \n \n Chọn tỉnh / thành phố\n \n option.children.toLowerCase().indexOf(input.toLowerCase()) >= 0\n }\n showSearch\n allowClear\n onChange={handleChangeProvince}\n disabled={isUpdate}\n >\n {provinces.map((p) => (\n {p.name}\n ))}\n \n \n \n Phí ship\n {\n setShippingFeeAddressesModel(\n shippingFeeAddressesModel.map((s) => ({\n ...s,\n shippingFee: e,\n }))\n );\n }}\n disabled={isUpdate}\n >\n \n \n \n \n \n );\n}\n","import { PlusCircleOutlined } from \"@ant-design/icons\";\nimport { Button, Col, message, Popconfirm, Row, Table } from \"antd\";\nimport { ColumnsType } from \"antd/lib/table\";\nimport * as React from \"react\";\nimport { useEffect, useState } from \"react\";\nimport { groupBy, GroupByModel } from \"shared/plugins/list-helper\";\nimport { t, CoreResource } from \"shared/plugins/localization\";\nimport { getProvinceList } from \"states/address/address.api\";\nimport { ProvinceModel } from \"states/address/address.models\";\nimport {\n getShippingFeeAddresses,\n removeShippingFeeAddresses,\n} from \"states/shipping-fee/shipping-fee.api\";\nimport { ShippingFeeAddressModel } from \"states/shipping-fee/shipping-fee.models\";\nimport { ShippingFeeAddressModal } from \"./components/shipping-fee-address-modal\";\nimport { ShippingFeeMenu } from \"./components/shipping-fee-menu\";\n\ninterface IShippingFeeAddressProps {}\n\nexport function ShippingFeeAddress(props: IShippingFeeAddressProps) {\n const [shippingFeeAddress, setShippingFeeAddress] = useState<\n ShippingFeeAddressModel[]\n >([]);\n const [isUpdate, setIsUpdate] = useState(false);\n const [provinces, setProvinces] = useState([]);\n const [isActiveModel, setIsActiveModel] = useState(false);\n const [shippingFeeAddressList, setShippingFeeAddressList] = useState<\n GroupByModel[]\n >([]);\n\n const shippingFeeAddressColumns: ColumnsType<\n GroupByModel\n > = [\n {\n title: \"Tỉnh / Thành phố\",\n dataIndex: \"provinceName\",\n key: \"provinceName\",\n render: (provinceName: string, item) => (\n {\n handleClickUpdateAreaBtn(item);\n }}\n type=\"link\"\n >\n {item.value[0].provinceName}\n \n ),\n },\n {\n title: \"\",\n dataIndex: \"action\",\n key: \"action\",\n render: (action: any, item) => (\n {\n try {\n await removeShippingFeeAddresses({\n idList: item.value.map((m) => m.id),\n });\n message.success(t(CoreResource, \"UpdateDataSuccessfully\"));\n getShippingAddress();\n } catch (error) {\n message.error(\"Xóa thất bại\");\n }\n }}\n okText=\"Có\"\n cancelText=\"Không\"\n >\n \n \n ),\n },\n ];\n\n const getShippingAddress = async () => {\n const res = await getShippingFeeAddresses();\n setShippingFeeAddressList(groupBy(res.data, (m) => m.provinceCode));\n };\n\n const onCloseModal = () => {\n setIsActiveModel(false);\n };\n const onSuccessModal = () => {\n getShippingAddress();\n };\n const handleClickAddAreaBtn = () => {\n setShippingFeeAddress([]);\n setIsUpdate(false);\n setIsActiveModel(true);\n };\n\n const handleClickUpdateAreaBtn = (\n item: GroupByModel\n ) => {\n setShippingFeeAddress([...item.value]);\n setIsUpdate(true);\n setIsActiveModel(true);\n };\n\n useEffect(() => {\n getProvinceList().then((res) => {\n setProvinces(res.data);\n });\n getShippingAddress();\n }, []);\n\n return (\n
\n \n \n \n \n }\n >\n Thêm khu vực\n \n \n \n \n \n
\n );\n}\n","import { Input, Modal, Typography } from \"antd\";\nimport * as React from \"react\";\nimport { useEffect, useState } from \"react\";\nimport { MoneyInput } from \"shared/components/custom-input/money-input\";\nimport { t, CoreResource } from \"shared/plugins/localization\";\nimport {\n createShippingFeeOrderAmount,\n updateShippingFeeOrderAmount,\n} from \"states/shipping-fee/shipping-fee.api\";\nimport {\n CreatedShippingFeeOrderAmountModel,\n ShippingFeeOrderAmountModel,\n UpdatedShippingFeeOrderAmountModel,\n} from \"states/shipping-fee/shipping-fee.models\";\n\ninterface IShippingFeeOrderAmountModalProps {\n model: ShippingFeeOrderAmountModel;\n onModal: boolean;\n closeModal: () => void;\n isUpdate: boolean;\n onSuccess: () => void;\n}\n\nexport function ShippingFeeOrderAmountModal(\n props: IShippingFeeOrderAmountModalProps\n) {\n const { onModal, closeModal, onSuccess, isUpdate, model } = props;\n const [isLoading, setLoading] = useState(false);\n const [shippingFeeOrderAmountModel, setShippingFeeOrderAmountModel] =\n useState({} as ShippingFeeOrderAmountModel);\n\n const handleCloseModal = () => closeModal();\n\n const onFinish = async () => {\n setLoading(true);\n try {\n if (isUpdate) {\n const payload = {\n id: shippingFeeOrderAmountModel.id,\n shippingFee: shippingFeeOrderAmountModel.shippingFee,\n amountFrom: shippingFeeOrderAmountModel.amountFrom,\n amountTo: shippingFeeOrderAmountModel.amountTo,\n } as UpdatedShippingFeeOrderAmountModel;\n await updateShippingFeeOrderAmount(payload);\n } else {\n const payload = {\n shippingFee: shippingFeeOrderAmountModel.shippingFee,\n amountFrom: shippingFeeOrderAmountModel.amountFrom,\n amountTo: shippingFeeOrderAmountModel.amountTo,\n } as CreatedShippingFeeOrderAmountModel;\n await createShippingFeeOrderAmount(payload);\n }\n handleCloseModal();\n onSuccess();\n Modal.success({\n title: \"Thành công\",\n content: t(CoreResource, \"UpdateDataSuccessfully\"),\n });\n } catch (error) {\n Modal.error({\n title: \"Thông báo\",\n content:\n error?.response?.data?.error?.message ??\n t(CoreResource, \"DefaultErrorMessage\"),\n });\n }\n setLoading(false);\n };\n\n useEffect(() => {\n setShippingFeeOrderAmountModel(model);\n }, [model]);\n return (\n \n {isUpdate\n ? `Cập nhật phí ship theo tiền hàng`\n : `Thêm phí ship theo tiền hàng`}\n \n }\n confirmLoading={isLoading}\n centered={true}\n visible={onModal}\n onOk={onFinish}\n onCancel={handleCloseModal}\n okText=\"Lưu\"\n cancelText=\"Hủy bỏ\"\n >\n \n Giá trị đơn hàng từ\n {\n setShippingFeeOrderAmountModel({\n ...shippingFeeOrderAmountModel,\n amountFrom: e,\n });\n }}\n >\n \n \n Giá trị đơn hàng đến\n {\n setShippingFeeOrderAmountModel({\n ...shippingFeeOrderAmountModel,\n amountTo: e,\n });\n }}\n />\n \n \n Phí ship\n {\n setShippingFeeOrderAmountModel({\n ...shippingFeeOrderAmountModel,\n shippingFee: e,\n });\n }}\n >\n \n \n );\n}\n","import { DeleteOutlined, PlusCircleOutlined } from \"@ant-design/icons\";\nimport {\n Button,\n Col,\n Drawer,\n message,\n notification,\n Popconfirm,\n Row,\n Table,\n} from \"antd\";\nimport { ColumnsType } from \"antd/lib/table\";\nimport * as React from \"react\";\nimport { useEffect, useState } from \"react\";\nimport { t, CoreResource } from \"shared/plugins/localization\";\nimport { formatMoney } from \"shared/plugins/string-helper\";\nimport {\n getShippingFeeOrderAmountList,\n removeShippingFeeOrderAmount,\n} from \"states/shipping-fee/shipping-fee.api\";\nimport {\n RemovedShippingFeeOrderAmountModel,\n ShippingFeeOrderAmountModel,\n} from \"states/shipping-fee/shipping-fee.models\";\nimport { ShippingFeeMenu } from \"./components/shipping-fee-menu\";\nimport { ShippingFeeOrderAmountModal } from \"./components/shipping-fee-order-amount-modal\";\n\ninterface IShippingFeeOrderAmountProps {}\n\nexport function ShippingFeeOrderAmount(props: IShippingFeeOrderAmountProps) {\n const [shippingFeeOrderAmountList, setShippingFeeOrderAmountList] = useState<\n ShippingFeeOrderAmountModel[]\n >([]);\n const [isLoadingList, setIsLoadingList] = useState(false);\n const [shippingFeeModel, setShippingFeeModel] =\n useState({} as ShippingFeeOrderAmountModel);\n const [isUpdate, setIsUpdate] = useState(false);\n const [isActiveModel, setIsActiveModel] = useState(false);\n const [selectedRowsKeys, setSelectedRowsKeys] =\n useState({\n idList: [],\n });\n\n const getShippingOrderAmounts = async () => {\n setIsLoadingList(true);\n try {\n const res = await getShippingFeeOrderAmountList();\n setShippingFeeOrderAmountList(\n res.data.map((m) => ({ ...m, key: m.id.toString() }))\n );\n } catch (error) {\n //ignore\n }\n setIsLoadingList(false);\n };\n\n const rowSelection = {\n selectedRowsKeys,\n onChange: (selectedRowKeys: any) => {\n setSelectedRowsKeys({ ...selectedRowsKeys, idList: selectedRowKeys });\n },\n };\n\n const onEmptySelection = () => {\n setSelectedRowsKeys({ ...selectedRowsKeys, idList: [] });\n };\n\n const onRemoveBtn = () => {\n const key = `open${Date.now()}`;\n const btn = (\n {\n try {\n await removeShippingFeeOrderAmount(selectedRowsKeys);\n notification.close(key);\n setSelectedRowsKeys({ ...selectedRowsKeys, idList: [] });\n getShippingOrderAmounts();\n message.success(t(CoreResource, \"UpdateDataSuccessfully\"));\n } catch (error) {\n message.error(\n error?.response?.data?.error?.message ??\n t(CoreResource, \"DefaultErrorMessage\")\n );\n }\n }}\n >\n Xóa\n \n );\n notification.open({\n message: t(CoreResource, \"QuestionRemove\"),\n key,\n btn,\n placement: \"bottomLeft\",\n });\n };\n\n const handleClickAddBtn = () => {\n setShippingFeeModel({} as ShippingFeeOrderAmountModel);\n setIsUpdate(false);\n setIsActiveModel(true);\n };\n\n const handleClickUpdateBtn = (item: ShippingFeeOrderAmountModel) => {\n setShippingFeeModel(item);\n setIsUpdate(true);\n setIsActiveModel(true);\n };\n\n const onCloseModal = () => {\n setIsActiveModel(false);\n };\n const onSuccessModal = () => {\n getShippingOrderAmounts();\n };\n\n const shippingFeeOrderAmountColumns: ColumnsType =\n [\n {\n title: \"Giá trị đơn hàng từ\",\n dataIndex: \"amountFrom\",\n key: \"amountFrom\",\n render: (amountFrom: number, item) => (\n {\n handleClickUpdateBtn(item);\n }}\n type=\"link\"\n >\n {formatMoney(amountFrom)}\n \n ),\n },\n {\n title: \"Giá trị đơn hàng đến\",\n dataIndex: \"amountTo\",\n key: \"amountTo\",\n render: (amountTo: number, item) => (\n {\n handleClickUpdateBtn(item);\n }}\n type=\"link\"\n >\n {formatMoney(amountTo)}\n \n ),\n },\n {\n title: \"Phí ship\",\n dataIndex: \"shippingFee\",\n key: \"shippingFee\",\n render: (shippingFee: number, item) => (\n {\n handleClickUpdateBtn(item);\n }}\n type=\"link\"\n >\n {formatMoney(shippingFee)}\n \n ),\n },\n ];\n\n useEffect(() => {\n getShippingOrderAmounts();\n }, []);\n\n return (\n
\n \n \n \n \n }\n >\n Thêm khoảng giá\n \n \n \n \n \n 0\n ? true\n : false\n }\n >\n }\n >\n Xóa {selectedRowsKeys.idList.length} dòng đang chọn\n \n \n
\n );\n}\n","export interface ProductCommentModel {\n key: string;\n id: number;\n name: string;\n email: string;\n phone: string;\n message: string;\n rating?: number;\n status: ProductCommentStatusEnum;\n staffId?: number;\n parentId?: number;\n customerId?: number;\n productId: number;\n productName: string;\n isActive: boolean;\n childrenComments: ProductCommentModel[];\n creationTime: Date;\n}\n\nexport interface CreatedProductCommentModel {\n message: string;\n parentId?: number;\n productId: number;\n}\n\nexport enum ProductCommentStatusEnum {\n New,\n Done,\n}\n","import { PRODUCT_COMMENT_API } from \"shared/constants/api-endpoint\";\nimport { apiClient } from \"shared/plugins/http-service\";\nimport {\n CreatedProductCommentModel,\n ProductCommentModel,\n ProductCommentStatusEnum,\n} from \"./product-comment.models\";\n\nexport const getProductCommentList = async (productId: number) => {\n const createResponse = await apiClient.getHttp(\n `${PRODUCT_COMMENT_API}?productId=${productId}`\n );\n return createResponse;\n};\n\nexport const addProductComment = async (model: CreatedProductCommentModel) => {\n const response = await apiClient.postHttp(\n `${PRODUCT_COMMENT_API}`,\n model\n );\n return response;\n};\n\nexport const toggleProductCommentIsActive = async (commentId: number) => {\n return await apiClient.putHttp(\n `${PRODUCT_COMMENT_API}/${commentId}/is_active`\n );\n};\n\nexport const changeProductCommentStatus = async (\n commentId: number,\n status: ProductCommentStatusEnum\n) => {\n return await apiClient.putHttp(\n `${PRODUCT_COMMENT_API}/${commentId}/status`,\n {\n commentStatus: status,\n },\n {\n headers: {\n \"content-type\": \"application/json\",\n },\n }\n );\n};\n","import * as React from \"react\";\nimport { Avatar, Button, Comment, message, Rate, Space, Tag } from \"antd\";\nimport {\n CheckOutlined,\n EnterOutlined,\n EyeInvisibleOutlined,\n EyeOutlined,\n} from \"@ant-design/icons\";\nimport {\n ProductCommentModel,\n ProductCommentStatusEnum,\n} from \"states/product-comment/product-comment.models\";\nimport moment from \"moment\";\nimport { useDispatch } from \"react-redux\";\nimport { setLoading } from \"states/global-value/global-value.slice\";\nimport {\n changeProductCommentStatus,\n toggleProductCommentIsActive,\n} from \"states/product-comment/product-comment.api\";\nimport { t, CoreResource } from \"shared/plugins/localization\";\n\ninterface IProductCommentItemProps {\n model: ProductCommentModel;\n onReplyBtnClicked?: (commentId: number) => void;\n onUpdated?: () => void;\n}\n\nexport function ProductCommentItem(props: IProductCommentItemProps) {\n const { model, onReplyBtnClicked, onUpdated } = props;\n const dispatch = useDispatch();\n\n const handleToggleIsActive = async () => {\n dispatch(setLoading(true));\n try {\n await toggleProductCommentIsActive(model.id);\n message.success(t(CoreResource, \"UpdateDataSuccessfully\"));\n onUpdated && onUpdated();\n } catch (error) {\n message.error(\n error?.response?.data?.error?.message ??\n t(CoreResource, \"DefaultErrorMessage\")\n );\n }\n dispatch(setLoading(false));\n };\n\n const handleToggleStatus = async () => {\n dispatch(setLoading(true));\n try {\n const newStatus =\n model.status === ProductCommentStatusEnum.New\n ? ProductCommentStatusEnum.Done\n : ProductCommentStatusEnum.New;\n await changeProductCommentStatus(model.id, newStatus);\n message.success(t(CoreResource, \"UpdateDataSuccessfully\"));\n onUpdated && onUpdated();\n } catch (error) {\n message.error(\n error?.response?.data?.error?.message ??\n t(CoreResource, \"DefaultErrorMessage\")\n );\n }\n dispatch(setLoading(false));\n };\n\n return (\n {\n onReplyBtnClicked && onReplyBtnClicked(model.id);\n }}\n >\n Trả lời\n \n ),\n model.isActive ? (\n \n ) : (\n \n ),\n !model.staffId &&\n (model.status === ProductCommentStatusEnum.New ? (\n \n ) : (\n \n )),\n ]}\n author={\n \n {model.name} - {model.phone} - {model.email}\n \n }\n avatar={\n {model.name && model.name[0]}\n }\n content={\n model.staffId ? (\n
\n ) : (\n <>{model.message}\n )\n }\n datetime={\n \n {moment(model.creationTime).format(\"DD/MM/YYYY HH:mm\")}\n {model.rating && }\n {model.status === ProductCommentStatusEnum.New && (\n Mới\n )}\n {model.staffId && Quản trị viên}\n \n }\n key={model.id}\n >\n {model.childrenComments.map((child) => (\n \n ))}\n \n );\n}\n","import { Avatar, Badge, Card, Col, List, Row, Modal, message } from \"antd\";\nimport * as React from \"react\";\nimport { useEffect, useState } from \"react\";\nimport { MceEditor } from \"shared/components/tinymce/mce-editor\";\nimport { t, CoreResource } from \"shared/plugins/localization\";\nimport { redirectFileLocalUrl } from \"shared/plugins/string-helper\";\nimport { PagedResult } from \"states/paged-result-model\";\nimport {\n addProductComment,\n getProductCommentList,\n} from \"states/product-comment/product-comment.api\";\nimport {\n CreatedProductCommentModel,\n ProductCommentModel,\n} from \"states/product-comment/product-comment.models\";\nimport { getProductHasNewCommentApi } from \"states/product/product.api\";\nimport { ProductAndCommentModel } from \"states/product/product.models\";\nimport { ProductCommentItem } from \"./components/product-comment-item\";\n\nexport interface IProductCommentProps {}\n\nexport function ProductComment(props: IProductCommentProps) {\n const [products, setProducts] = useState({\n currentPage: 1,\n pageSize: 50,\n } as PagedResult);\n const [isLoadingProducts, setIsLoadingProducts] = useState(false);\n const [isLoadingComments, setIsLoadingComments] = useState(false);\n const [selectedProduct, setSelectedProduct] = useState();\n const [replyCommentModel, setReplyCommentModel] =\n useState({} as CreatedProductCommentModel);\n const [productComments, setProductComments] = useState(\n []\n );\n const [isReply, setIsReply] = useState(false);\n const [isAddingComment, setIsAddingComment] = useState(false);\n\n const gotoPage = async (page: number, pageSize:number) => {\n setIsLoadingProducts(true);\n const res = await getProductHasNewCommentApi(page,pageSize);\n setProducts(res.data);\n setIsLoadingProducts(false);\n };\n\n const handleGetComment = async () => {\n if (selectedProduct) {\n setIsLoadingComments(true);\n const res = await getProductCommentList(selectedProduct);\n setProductComments(res.data);\n setIsLoadingComments(false);\n }\n };\n\n const onReplyBtnClicked = (commentId: number) => {\n setReplyCommentModel({\n productId: selectedProduct,\n parentId: commentId,\n message: \"\",\n } as CreatedProductCommentModel);\n setIsReply(true);\n };\n\n const handleCloseModal = () => {\n setIsReply(false);\n };\n\n const onSubmit = async () => {\n setIsAddingComment(true);\n try {\n await addProductComment(replyCommentModel);\n handleGetComment();\n message.success(\"Cập nhật thành công\");\n handleCloseModal();\n } catch (error) {\n message.error(error?.response?.data?.error?.message ?? \"Lỗi hệ thống\");\n }\n setIsAddingComment(false);\n };\n\n const onUpdatedCommentItem = () => {\n handleGetComment();\n };\n\n useEffect(() => {\n gotoPage(1,20);\n }, []);\n\n useEffect(() => {\n handleGetComment();\n }, [selectedProduct]);\n\n return (\n
\n \n \n \n (\n {\n setSelectedProduct(product.id);\n }}\n >\n \n 0\n ? redirectFileLocalUrl(product.images[0])\n : undefined\n }\n >\n {product.websiteName && product.websiteName[0]}\n \n \n }\n title={product.websiteName}\n >\n \n )}\n >\n \n \n \n \n (\n
  • \n \n
  • \n )}\n >\n
    \n \n
    \n \n {\n setReplyCommentModel({ ...replyCommentModel, message: e });\n }}\n >\n \n
    \n );\n}\n","import React, { FC, useState, useEffect } from \"react\";\nimport { shallowEqual, useDispatch, useSelector } from \"react-redux\";\n\nimport { Table, Row, Col, Button, message, Drawer, notification } from \"antd\";\n\nimport { DeleteOutlined, PlusCircleOutlined } from \"@ant-design/icons\";\nimport { ColumnsType } from \"antd/lib/table\";\n\nimport {\n RemovedProductAttributeGroupModel,\n ProductAttributeGroupModel,\n} from \"states/product-attribute/product-attribute.models\";\nimport { removeProductAttributeGroupApi } from \"states/product-attribute/product-attribute.api\";\nimport { t, CoreResource } from \"shared/plugins/localization\";\nimport { ProductAttributeGroupModalComponent } from \"shared/components/product-attribute/product-attribute-group-modal\";\nimport {\n fetchProductAttributeGroupList,\n productAttributeGroupsSelector,\n} from \"states/product-attribute/product-attribute.slice\";\n\ninterface IProductAttributeGroupProps {}\nconst ProductAttributeGroup: FC = () => {\n const [selectedRowsKeys, setSelectedRowsKeys] =\n useState({\n idList: [],\n });\n const dispatch = useDispatch();\n const [isLoadingList, setIsLoadingList] = useState(false);\n const [isModal, setModal] = useState(false);\n const [isUpdate, setUpdate] = useState(false);\n const [model, setModel] = useState(\n {} as ProductAttributeGroupModel\n );\n const productAttributeGroupList = useSelector(\n productAttributeGroupsSelector,\n shallowEqual\n );\n const rowSelection = {\n selectedRowsKeys,\n onChange: (selectedRowKeys: any) => {\n setSelectedRowsKeys({ ...selectedRowsKeys, idList: selectedRowKeys });\n },\n };\n const onEmptySelection = () => {\n setSelectedRowsKeys({ ...selectedRowsKeys, idList: [] });\n };\n const handleCloseModal = () => {\n setModal(false);\n };\n const onRefreshData = () => {\n dispatch(fetchProductAttributeGroupList());\n };\n useEffect(() => {\n onRefreshData();\n }, []);\n const handleAddProductAttributeGroup = () => {\n setModel({} as ProductAttributeGroupModel);\n setModal(true);\n setUpdate(false);\n };\n const onRemoveBtn = () => {\n const key = `open${Date.now()}`;\n const btn = (\n {\n try {\n await removeProductAttributeGroupApi(selectedRowsKeys);\n notification.close(key);\n setSelectedRowsKeys({ ...selectedRowsKeys, idList: [] });\n onRefreshData();\n message.success(\"Cập nhật thành công\");\n } catch (error) {\n message.error(\n error?.response?.data?.error?.message ?? \"Lỗi hệ thống\"\n );\n }\n }}\n >\n Xóa\n \n );\n notification.open({\n message: \"Bạn có muốn xóa không\",\n key,\n btn,\n placement: \"bottomLeft\",\n });\n };\n const columns: ColumnsType = [\n {\n title: \"Tên nhóm thuộc tính\",\n dataIndex: \"name\",\n key: \"name\",\n render: (name: string, item) => (\n \n {\n setModel(item);\n setModal(true);\n setUpdate(true);\n }}\n >\n {name}\n \n \n ),\n },\n ];\n return (\n
    \n \n \n \n }\n >\n Thêm nhóm thuộc tính\n \n \n \n row.id}\n columns={columns}\n dataSource={productAttributeGroupList}\n size=\"small\"\n loading={isLoadingList}\n >\n 0\n ? true\n : false\n }\n >\n }\n >\n Xóa ({selectedRowsKeys.idList.length}) dòng\n \n \n \n
    \n );\n};\n\nexport default ProductAttributeGroup;\n","import { DataTypeEnum } from \"shared/constants/app-enums\";\nimport { SeoModel } from \"shared/models/seo-model\";\nimport { ProductModel } from \"states/product/product.models\";\n\nexport interface ProductCategoryModel {\n key: string;\n id: number;\n name: string;\n slug: string;\n avatar: string;\n filterSetting?: ProductFilterSetting;\n seoFields?: SeoModel;\n customizeTheme?: any;\n active: boolean;\n productCategoryModifierGroups: ProductCategoryModifierGroup[];\n attributeGroups: ProductCategoryProductAttributeGroupModel[];\n branchId?: number;\n sort: number;\n}\nexport interface ProductCategoryModifierGroup {\n modifierGroupId?: number;\n productCategoryId?: number;\n isRequired: boolean;\n sort: number;\n selectType: SelectTypeEnum;\n productCategoryModifiers: ProductModel[];\n}\nexport const SelectType = [\"Single\", \"Multiple\"];\nexport enum SelectTypeEnum {\n Single,\n Multiple,\n}\nexport interface ProductCategoryProductAttributeGroupModel {\n attributeGroupId: number;\n attributeGroupName: string;\n sort: number;\n attributes: ProductCategoryProductAttributeModel[];\n}\n\nexport class ProductCategoryProductAttributeModel {\n constructor() {\n this.attributeName = \"\";\n this.sort = 0;\n this.values = [];\n }\n\n attributeId?: number;\n attributeName: string;\n sort: number;\n dataType?: DataTypeEnum;\n valueNumber?: number;\n valueString?: string;\n valueBoolean?: boolean;\n valueDate?: Date;\n values: ProductCategoryProductAttributeValueModel[];\n\n resetValue() {\n this.values = [];\n this.valueNumber = undefined;\n this.valueString = undefined;\n this.valueBoolean = undefined;\n this.valueDate = undefined;\n }\n}\nexport interface ProductCategoryProductAttributeValueModel {\n valueId: number;\n value: string;\n sort: number;\n}\nexport interface ProductCategoryModifierModel {\n id: number;\n skuCode: string;\n images: string[];\n sellingPrice: number;\n name: string;\n slug: string;\n sort: number;\n}\n\nexport interface UpdateProductCategoryModifierModel {\n productId: number;\n sort: number;\n}\nexport interface UpdateProductCategoryModifierGroupModel {\n modifierGroupId: number;\n sort: number;\n selectType: SelectTypeEnum;\n isRequired: boolean;\n productCategoryModifiers: UpdateProductCategoryModifierModel[];\n}\nexport interface CreateProductCategoryModel {\n name: string;\n slug: string;\n avatar: string;\n filterSetting?: any;\n active: boolean;\n seoFields?: SeoModel;\n customizeTheme?: string;\n productCategoryModifierGroups: UpdateProductCategoryModifierGroupModel[];\n attributeGroups: ProductCategoryProductAttributeGroupModel[];\n branchId?: number;\n sort: number;\n}\n\nexport interface UpdatedProductCategoryModel {\n id: number;\n name: string;\n slug: string;\n avatar: string;\n filterSetting?: any;\n active: boolean;\n seoFields?: SeoModel;\n customizeTheme?: string;\n productCategoryModifierGroups: UpdateProductCategoryModifierGroupModel[];\n attributeGroups: ProductCategoryProductAttributeGroupModel[];\n sort: number;\n}\nexport interface SearchProductCategoryRequestModel {\n name?: string;\n page: number;\n pageSize: number;\n}\n\nexport interface ProductCategoryProductAttributeModel {\n productAttributeId: number;\n attributeName: string;\n logicalTerm: LogicalTermEnum;\n productAttributeValueIds: number[];\n}\nexport interface ProductCategoryAttributeModel {\n productAttributeId: number;\n attributeName: string;\n logicalTerm: LogicalTermEnum;\n values: ProductCategoryProductAttributeValueModel[];\n}\nexport interface ProductCategoryProductAttributeValueModel {\n valueId: number;\n value: string;\n sort: number;\n}\n\nexport enum LogicalTermEnum {\n Or,\n And,\n}\nexport interface ProductFilterSetting {\n priceFilters: ProductPriceFilterModel[];\n attributeFilters: ProductCategoryProductAttributeModel[];\n}\nexport interface ProductCategoryFilterSettingModel {\n priceFilters: ProductPriceFilterModel[];\n attributeFilters: ProductCategoryAttributeModel[];\n}\n\nexport interface ProductPriceFilterModel {\n priceFrom?: number;\n priceTo?: number;\n displayedText: string;\n}\n","import React, { FC, useState, useEffect } from \"react\";\n\nimport { Table, Row, Col, Button, message, Drawer, notification } from \"antd\";\n\nimport { DeleteOutlined, PlusCircleOutlined } from \"@ant-design/icons\";\nimport { ColumnsType } from \"antd/lib/table\";\n\nimport {\n RemovedProductAttributeModel,\n ProductAttributeModel,\n} from \"states/product-attribute/product-attribute.models\";\nimport { removeProductAttributeApi } from \"states/product-attribute/product-attribute.api\";\nimport { t, CoreResource } from \"shared/plugins/localization\";\nimport { ProductAttributeModalComponent } from \"shared/components/product-attribute/product-attribute-modal\";\nimport {\n fetchProductAttributeList,\n productAttributesSelector,\n} from \"states/product-attribute/product-attribute.slice\";\nimport { useDispatch, shallowEqual, useSelector } from \"react-redux\";\n\ninterface IProductAttributeProps {}\nconst ProductAttribute: FC = () => {\n const [selectedRowsKeys, setSelectedRowsKeys] =\n useState({\n idList: [],\n });\n const [isLoadingList, setIsLoadingList] = useState(false);\n const productAttributeList = useSelector(\n productAttributesSelector,\n shallowEqual\n );\n const [isModal, setModal] = useState(false);\n const [isUpdate, setUpdate] = useState(false);\n const [model, setModel] = useState(\n {} as ProductAttributeModel\n );\n const dispatch = useDispatch();\n const rowSelection = {\n selectedRowsKeys,\n onChange: (selectedRowKeys: any) => {\n setSelectedRowsKeys({ ...selectedRowsKeys, idList: selectedRowKeys });\n },\n };\n const onEmptySelection = () => {\n setSelectedRowsKeys({ ...selectedRowsKeys, idList: [] });\n };\n\n const handleCloseModal = () => {\n setModal(false);\n };\n const handleAddProductAttribute = () => {\n setModel({} as ProductAttributeModel);\n setModal(true);\n setUpdate(false);\n };\n const onRefreshData = () => {\n dispatch(fetchProductAttributeList());\n };\n useEffect(() => {\n onRefreshData();\n }, []);\n const onRemoveBtn = () => {\n const key = `open${Date.now()}`;\n const btn = (\n {\n try {\n await removeProductAttributeApi(selectedRowsKeys);\n notification.close(key);\n setSelectedRowsKeys({ ...selectedRowsKeys, idList: [] });\n onRefreshData();\n message.success(\"Cập nhật thành công\");\n } catch (error) {\n message.error(\n error?.response?.data?.error?.message ?? \"Lỗi hệ thống\"\n );\n }\n }}\n >\n Xóa\n \n );\n notification.open({\n message: t(CoreResource, \"DefaultErrorMessage\"),\n key,\n btn,\n placement: \"bottomLeft\",\n });\n };\n\n const columns: ColumnsType = [\n {\n title: \"Tên thuộc tính\",\n dataIndex: \"name\",\n key: \"name\",\n render: (name: string, item) => (\n \n {\n setModel(item);\n setModal(true);\n setUpdate(true);\n }}\n >\n {name}\n \n \n ),\n },\n ];\n return (\n
    \n \n \n \n }\n >\n Thêm thuộc tính\n \n \n \n row.id}\n dataSource={productAttributeList}\n size=\"small\"\n loading={isLoadingList}\n >\n 0\n ? true\n : false\n }\n >\n }\n >\n Xóa ({selectedRowsKeys.idList.length})\n \n \n \n
    \n );\n};\n\nexport default ProductAttribute;\n","import React, { FC, useState, useEffect } from \"react\";\n\nimport { Table, Row, Col, Button, message, Drawer, notification } from \"antd\";\n\nimport { DeleteOutlined, PlusCircleOutlined } from \"@ant-design/icons\";\nimport { ColumnsType } from \"antd/lib/table\";\n\nimport {\n RemovedProductAttributeValueModel,\n ProductAttributeValueModel,\n} from \"states/product-attribute/product-attribute.models\";\nimport { removeProductAttributeValueApi } from \"states/product-attribute/product-attribute.api\";\nimport { t, CoreResource } from \"shared/plugins/localization\";\nimport { ProductAttributeValueModalComponent } from \"shared/components/product-attribute/product-attribute-value-modal\";\nimport { useDispatch, useSelector, shallowEqual } from \"react-redux\";\nimport {\n fetchProductAttributeValueList,\n productAttributeValuesSelector,\n} from \"states/product-attribute/product-attribute.slice\";\n\ninterface IProductAttributeValueProps {}\nconst ProductAttributeValue: FC = () => {\n const [selectedRowsKeys, setSelectedRowsKeys] =\n useState({\n idList: [],\n });\n const [isLoadingList, setIsLoadingList] = useState(false);\n const [pagedResults, setPagedResults] = useState(\n [] as ProductAttributeValueModel[]\n );\n const [isModal, setModal] = useState(false);\n const [isUpdate, setUpdate] = useState(false);\n const [model, setModel] = useState(\n {} as ProductAttributeValueModel\n );\n const productAttributeValueList = useSelector(\n productAttributeValuesSelector,\n shallowEqual\n );\n const dispatch = useDispatch();\n const rowSelection = {\n selectedRowsKeys,\n onChange: (selectedRowKeys: any) => {\n setSelectedRowsKeys({ ...selectedRowsKeys, idList: selectedRowKeys });\n },\n };\n const onEmptySelection = () => {\n setSelectedRowsKeys({ ...selectedRowsKeys, idList: [] });\n };\n\n const handleCloseModal = () => {\n setModal(false);\n };\n const handleAddProductAttributeValue = () => {\n setModel({} as ProductAttributeValueModel);\n setModal(true);\n setUpdate(false);\n };\n const onRefreshData = () => {\n dispatch(fetchProductAttributeValueList());\n };\n useEffect(() => {\n onRefreshData();\n }, []);\n const onRemoveBtn = () => {\n const key = `open${Date.now()}`;\n const btn = (\n {\n try {\n await removeProductAttributeValueApi(selectedRowsKeys);\n notification.close(key);\n setSelectedRowsKeys({ ...selectedRowsKeys, idList: [] });\n onRefreshData();\n message.success(t(CoreResource, \"UpdateDataSuccessfully\"));\n } catch (error) {\n message.error(\n error?.response?.data?.error?.message ??\n t(CoreResource, \"DefaultErrorMessage\")\n );\n }\n }}\n >\n Xóa\n \n );\n notification.open({\n message: t(CoreResource, \"QuestionRemove\"),\n key,\n btn,\n placement: \"bottomLeft\",\n });\n };\n\n const columns: ColumnsType = [\n {\n title: \"Giá trị thuộc tính\",\n dataIndex: \"value\",\n key: \"value\",\n render: (value: string, item) => (\n \n {\n setModel(item);\n setModal(true);\n setUpdate(true);\n }}\n >\n {value}\n \n \n ),\n },\n ];\n return (\n
    \n \n \n \n }\n >\n Thêm giá trị thuộc tính\n \n \n \n row.id}\n dataSource={productAttributeValueList}\n size=\"small\"\n loading={isLoadingList}\n >\n 0\n ? true\n : false\n }\n >\n }\n >\n Xóa ({selectedRowsKeys.idList.length}) dòng\n \n \n \n
    \n );\n};\n\nexport default ProductAttributeValue;\n","import React, { FC, useState, useEffect } from \"react\";\n\nimport { Table, Row, Col, Button, message, Drawer, notification } from \"antd\";\n\nimport { DeleteOutlined, PlusCircleOutlined } from \"@ant-design/icons\";\nimport { ColumnsType } from \"antd/lib/table\";\n\nimport { RemovedTagModel, TagModel } from \"states/tag/tag.models\";\nimport { removeTag, getTagList } from \"states/tag/tag.api\";\nimport { t, CoreResource } from \"shared/plugins/localization\";\nimport { TagModalComponent } from \"shared/components/tag/tag-modal\";\nimport { useDispatch, useSelector, shallowEqual } from \"react-redux\";\nimport { fetchTagList, tagListSelector } from \"states/tag/tag.slice\";\n\ninterface ITagProps {}\nconst Tag: FC = () => {\n const [selectedRowsKeys, setSelectedRowsKeys] = useState({\n idList: [],\n });\n const [isLoadingList, setIsLoadingList] = useState(false);\n const [isModal, setModal] = useState(false);\n const [isUpdate, setUpdate] = useState(false);\n const [model, setModel] = useState({} as TagModel);\n const dispatch = useDispatch();\n const tagList = useSelector(tagListSelector, shallowEqual);\n const rowSelection = {\n selectedRowsKeys,\n onChange: (selectedRowKeys: any) => {\n setSelectedRowsKeys({ ...selectedRowsKeys, idList: selectedRowKeys });\n },\n };\n const onEmptySelection = () => {\n setSelectedRowsKeys({ ...selectedRowsKeys, idList: [] });\n };\n const handleCloseModal = () => {\n setModal(false);\n };\n const handleAddTag = () => {\n setModel({} as TagModel);\n setModal(true);\n setUpdate(false);\n };\n const onRefreshData = () => {\n dispatch(fetchTagList());\n };\n const onRemoveBtn = () => {\n const key = `open${Date.now()}`;\n const btn = (\n {\n try {\n await removeTag(selectedRowsKeys);\n notification.close(key);\n setSelectedRowsKeys({ ...selectedRowsKeys, idList: [] });\n onRefreshData();\n dispatch(fetchTagList());\n message.success({\n title: \"Thành công\",\n content: \"Cập nhật thành công\",\n });\n } catch (error) {\n message.error({\n title: \"Thông báo\",\n content:\n error?.response?.data?.error?.message ??\n \"Lỗi hệ thống\",\n });\n }\n }}\n >\n Xóa\n \n );\n notification.open({\n message: t(CoreResource, \"QuestionRemove\"),\n key,\n btn,\n placement: \"bottomLeft\",\n });\n };\n useEffect(() => {\n onRefreshData();\n }, []);\n const columns: ColumnsType = [\n {\n title: \"Id\",\n dataIndex: \"id\",\n key:\"id\",\n width:\"40px\",\n render: (id: string, item) => (\n \n {id}\n \n ),\n },\n {\n title: \"Tên tag\",\n dataIndex: \"tagName\",\n key: \"tagName\",\n render: (tagName: string, item) => (\n \n {\n setModel(item);\n setModal(true);\n setUpdate(true);\n }}\n >\n {tagName}\n \n \n ),\n },\n ];\n return (\n
    \n \n \n \n }\n >\n Thêm tag\n \n \n \n row.id}\n dataSource={tagList}\n size=\"small\"\n loading={isLoadingList}\n >\n 0\n ? true\n : false\n }\n >\n }\n >\n Xóa ({selectedRowsKeys.idList.length}) dòng\n \n \n \n
    \n );\n};\n\nexport default Tag;\n","import {\n DeleteOutlined,\n OrderedListOutlined,\n PlusCircleOutlined,\n} from \"@ant-design/icons\";\nimport {\n Button,\n Checkbox,\n Col,\n Collapse,\n DatePicker,\n Input,\n message,\n Popconfirm,\n Row,\n Select,\n Space,\n} from \"antd\";\nimport momentTz from \"moment-timezone\";\nimport { useState } from \"react\";\nimport {\n ISortableProps,\n Sortable,\n SortItemModel,\n} from \"shared/components/sortable/sortable\";\nimport { DataTypeEnum, DataTypeText } from \"shared/constants/app-enums\";\nimport {\n t,\n CoreResource,\n momentDateTimeFormat,\n} from \"shared/plugins/localization\";\nimport { ProductAttributeGroupModel, ProductAttributeModel, ProductAttributeValueModel } from \"states/product-attribute/product-attribute.models\";\nimport {\n\n} from \"states/product/product.models\";\nimport { shallowEqual, useSelector } from \"react-redux\";\nimport { RootState } from \"app.store\";\nimport { ProductCategoryProductAttributeGroupModel, ProductCategoryProductAttributeModel, ProductCategoryProductAttributeValueModel } from \"states/product-category/product-category.models\";\nimport { ProductAttributeValueSelector } from \"shared/components/product-attribute/product-attr-value-selector\";\nimport { ProductAttributeGroupSelector } from \"shared/components/product-attribute/product-attr-group-selector\";\nimport { ProductAttributeSelector } from \"shared/components/product-attribute/product-attr-selector\";\n\ninterface IProductCategoryAttributeTabProps {\n attributeGroups:ProductCategoryProductAttributeGroupModel[];\n onUpdated: (attributeGroups:ProductCategoryProductAttributeGroupModel[]) => void;\n}\n\nexport function ProductCategoryAttributeTab(props: IProductCategoryAttributeTabProps) {\n const {\n attributeGroups,\n onUpdated,\n } = props;\n\n const currentTimeZone = useSelector(\n (state: RootState) => state.globalValue.ianaTimeZone,\n shallowEqual\n );\n\n const [sortableModel, setSortableModel] = useState({\n model: [] as SortItemModel[],\n visible: false,\n onCancel: () => {\n setSortableModel({ ...sortableModel, visible: false });\n },\n } as ISortableProps);\n\n const handleAddAttributeGroup = () => {\n attributeGroups.push({\n sort: attributeGroups.length + 1,\n attributes: [] as ProductCategoryProductAttributeModel[],\n } as ProductCategoryProductAttributeGroupModel);\n onUpdated([...attributeGroups]);\n };\n\n const _handleSortAttributeGroup = () => {\n if (attributeGroups.filter((m) => !m.attributeGroupId).length > 0) {\n message.error(\"Vui lòng chọn nhóm thuộc tính\");\n return;\n }\n sortableModel.model = attributeGroups.map((m) => {\n return {\n key: m.attributeGroupId.toString(),\n sort: m.sort,\n title: m.attributeGroupName,\n } as SortItemModel;\n });\n sortableModel.visible = true;\n sortableModel.title = \"Sắp xếp thứ tự thuộc tính\";\n sortableModel.onOk = async (result) => {\n const newList:ProductCategoryProductAttributeGroupModel[] = [];\n result.forEach((item) => {\n const attributegroup = attributeGroups.find(\n (m) => m.attributeGroupId.toString() === item.key\n );\n if (!attributegroup) return;\n newList.push(attributegroup);\n });\n onUpdated([...newList]);\n setSortableModel({ ...sortableModel, visible: false });\n };\n setSortableModel({ ...sortableModel });\n };\n\n const _handleSortAttribute = (\n attributeGroup:ProductCategoryProductAttributeGroupModel\n ) => {\n if (attributeGroup.attributes.filter((m) => !m.attributeId).length > 0) {\n message.error(\"Vui lòng chọn thuộc tính\");\n return;\n }\n sortableModel.model = attributeGroup.attributes.map((m) => {\n return {\n key: m.attributeId?.toString(),\n sort: m.sort,\n title: m.attributeName,\n } as SortItemModel;\n });\n sortableModel.visible = true;\n sortableModel.title = attributeGroup.attributeGroupName;\n sortableModel.onOk = async (result) => {\n const newList:ProductCategoryProductAttributeModel[] = [];\n result.forEach((item) => {\n const attribute = attributeGroup.attributes.find(\n (m) => m.attributeId?.toString() === item.key\n );\n if (!attribute) return;\n newList.push(attribute);\n });\n attributeGroup.attributes = newList;\n onUpdated([...attributeGroups]);\n setSortableModel({ ...sortableModel, visible: false });\n };\n setSortableModel({ ...sortableModel });\n };\n\n const _renderAttributeValue = (attribute:ProductCategoryProductAttributeModel) => {\n switch (attribute.dataType) {\n case DataTypeEnum.ValueSelect: {\n return (\n {\n let valuesTemp = values as ProductAttributeValueModel[];\n if (!valuesTemp) return;\n attribute.values = valuesTemp.map(\n (m) =>\n ({\n valueId: m.id,\n } as ProductCategoryProductAttributeValueModel)\n );\n onUpdated([...attributeGroups]);\n }}\n isMultiple={true}\n value={attribute.values.map((m) => m.valueId)}\n />\n );\n }\n case DataTypeEnum.Boolean: {\n return (\n {\n attribute.valueBoolean = e.target.checked;\n onUpdated([...attributeGroups]);\n }}\n >\n );\n }\n case DataTypeEnum.DateTime: {\n return (\n {\n attribute.valueDate = momentTz\n .tz(dateString, momentDateTimeFormat(), currentTimeZone)\n .toDate();\n onUpdated([...attributeGroups]);\n }}\n showTime\n showSecond={false}\n className=\"w-100\"\n />\n );\n }\n case DataTypeEnum.Number: {\n return (\n {\n attribute.valueNumber = e.target.valueAsNumber;\n onUpdated([...attributeGroups]);\n }}\n placeholder=\"Enter value\"\n type=\"number\"\n />\n );\n }\n case DataTypeEnum.String: {\n return (\n {\n attribute.valueString = e.target.value;\n onUpdated([...attributeGroups]);\n }}\n placeholder=\"Enter value\"\n />\n );\n }\n }\n };\n\n return (\n <>\n }\n >\n Add attribute group\n \n }\n >\n {\"Sắp xếp\"}\n \n {attributeGroups.map((group, groupIndex) => (\n \n \n {\n let valueTemp = value as ProductAttributeGroupModel;\n if(!valueTemp) return;\n group.attributeGroupId = valueTemp.id;\n group.attributeGroupName = valueTemp.name;\n onUpdated([...attributeGroups]);\n }}\n width={\"200px\"}\n isMultiple={false}\n value={group.attributeGroupId}\n onClick={(e) => {\n e.stopPropagation();\n }}\n />\n {\n e.stopPropagation();\n const newAttribute = new ProductCategoryProductAttributeModel();\n newAttribute.sort = group.attributes.length + 1;\n group.attributes.push(newAttribute);\n onUpdated([...attributeGroups]);\n }}\n type=\"primary\"\n icon={}\n />\n {\n e.stopPropagation();\n _handleSortAttribute(group);\n }}\n type=\"default\"\n icon={}\n >\n {\n attributeGroups.splice(groupIndex, 1);\n onUpdated([...attributeGroups]);\n }}\n okText={\"Đồng ý\"}\n cancelText={\"Hủy\"}\n >\n {\n e.stopPropagation();\n }}\n danger\n icon={}\n />\n \n \n }\n >\n {group.attributes.map((attribute, attributeIndex) => (\n \n \n {\n let valueTemp = value as ProductAttributeModel;\n if(!valueTemp) return;\n attribute.attributeId = valueTemp.id;\n attribute.attributeName = valueTemp.name;\n onUpdated([...attributeGroups]);\n }}\n isMultiple={false}\n value={attribute.attributeId}\n />\n \n \n \n option.children\n .toLowerCase()\n .indexOf(input.toLowerCase()) >= 0\n }\n onChange={(value) => {\n attribute.dataType = value;\n attribute.resetValue();\n onUpdated([...attributeGroups]);\n }}\n >\n {Object.keys(DataTypeEnum).map((key) =>\n !isNaN(Number(key)) ? (\n \n {DataTypeText[Number(key)]}\n \n ) : null\n )}\n \n \n \n
    \n {_renderAttributeValue(attribute)}\n
    \n {\n group.attributes.splice(groupIndex, 1);\n onUpdated([...attributeGroups]);\n }}\n okText={\"Đồng ý\"}\n cancelText={\"Hủy\"}\n className=\"ml-2\"\n >\n \n \n expandedRowAttributeValue(record.values, index),\n }}\n dataSource={memorizedFilterSetting.attributeFilters}\n columns={attributeColumns}\n rowKey={(record, index) => index?.toString() ?? \"\"}\n pagination={false}\n >\n \n \n \n \n }\n >\n Add Price Range\n \n index?.toString() ?? \"\"}\n pagination={false}\n >\n \n \n
    \n \n );\n}\n","import { RollbackOutlined, SaveOutlined } from \"@ant-design/icons\";\nimport {\n Breadcrumb,\n Button,\n Card,\n Checkbox,\n Col,\n Input,\n message,\n Modal,\n Row,\n Space,\n Tabs,\n Typography,\n} from \"antd\";\nimport { RootState } from \"app.store\";\nimport { useEffect, useState } from \"react\";\nimport { shallowEqual, useDispatch, useSelector } from \"react-redux\";\nimport { Link, useHistory, useParams } from \"react-router-dom\";\nimport { CustomTheme } from \"shared/components/custom-theme/custom-theme\";\nimport { LanguageSelector } from \"shared/components/language-selector\";\nimport { Seo } from \"shared/components/seo/seo\";\nimport { UploadFileLocal } from \"shared/components/upload-file/upload-file\";\nimport {\n ADD_PRODUCT_CATEGORY_ROUTE,\n PRODUCT_CATEGORY_ROUTE,\n} from \"shared/constants/routes\";\nimport useRefresh from \"shared/hooks/use-refresh\";\nimport { SeoModel } from \"shared/models/seo-model\";\nimport { cleanUnicode } from \"shared/plugins/string-helper\";\nimport { setLoading } from \"states/global-value/global-value.slice\";\nimport { fetchModifierGroupList } from \"states/modifier-group/modifier-group.slice\";\nimport {\n fetchProductAttributeGroupList,\n fetchProductAttributeList,\n fetchProductAttributeValueList,\n} from \"states/product-attribute/product-attribute.slice\";\nimport {\n addProductCategoryApi,\n getProductCategoryByIdApi,\n updateProductCategoryApi,\n} from \"states/product-category/product-category.api\";\nimport {\n CreateProductCategoryModel,\n ProductCategoryModel,\n ProductFilterSetting,\n UpdatedProductCategoryModel,\n UpdateProductCategoryModifierGroupModel,\n UpdateProductCategoryModifierModel,\n} from \"states/product-category/product-category.models\";\nimport { ProductCategoryAttributeTab } from \"./components/product-category-attribute-tab\";\nimport { ProductCategoryFilterSetting } from \"./components/product-category-filter-setting\";\n\ninterface RouteParams {\n id: string;\n}\ninterface IAddUpdateProductCategoryProps {}\n\nexport function AddUpdateProductCategory(\n props: IAddUpdateProductCategoryProps\n) {\n const clientLanguages = useSelector(\n (state: RootState) => state.localization.clientLanguages,\n shallowEqual\n );\n const [currentLanguage, setCurrentLanguage] = useState();\n const refresh = useRefresh();\n const dispatch = useDispatch();\n const { id } = useParams();\n const [model, setModel] = useState({\n seoFields: {},\n filterSetting: {},\n active: true,\n } as ProductCategoryModel);\n const [isUpdateMode, setIsUpdateMode] = useState(false);\n const currentBranch = useSelector(\n (state: RootState) => state.branch.currentBranch,\n shallowEqual\n );\n const separateProduct = useSelector(\n (state: RootState) => state.globalValue.separateProductEachBranch,\n shallowEqual\n );\n\n const onSaved = async () => {\n if (separateProduct && (!currentBranch.id || currentBranch.id <= 0)) {\n message.error(\"Please select location\");\n return;\n }\n dispatch(setLoading(true));\n try {\n if (isUpdateMode) {\n const payload: UpdatedProductCategoryModel = {\n id: model.id,\n name: model.name,\n slug: model.slug,\n sort: model.sort,\n avatar: model.avatar,\n seoFields: model.seoFields,\n customizeTheme: model.customizeTheme ?? {},\n active: model?.active,\n filterSetting: model?.filterSetting ?? {},\n productCategoryModifierGroups:\n model?.productCategoryModifierGroups?.map((m) => {\n return {\n modifierGroupId: m.modifierGroupId,\n sort: m.sort,\n selectType: m.selectType,\n isRequired: m.isRequired,\n productCategoryModifiers: m.productCategoryModifiers?.map(\n (p) => {\n return {\n productId: p.id,\n sort: p.sort,\n } as UpdateProductCategoryModifierModel;\n }\n ),\n } as UpdateProductCategoryModifierGroupModel;\n }),\n attributeGroups: model.attributeGroups,\n };\n await updateProductCategoryApi(payload, currentLanguage);\n } else {\n const payload: CreateProductCategoryModel = {\n name: model.name,\n slug: model.slug,\n sort: model.sort,\n avatar: model.avatar,\n seoFields: model.seoFields,\n customizeTheme: model.customizeTheme ?? {},\n filterSetting: model?.filterSetting ?? {},\n active: model?.active,\n productCategoryModifierGroups:\n model?.productCategoryModifierGroups?.map((m) => {\n return {\n modifierGroupId: m.modifierGroupId,\n sort: m.sort,\n selectType: m.selectType,\n isRequired: m.isRequired,\n productCategoryModifiers: m.productCategoryModifiers?.map(\n (p) => {\n return {\n productId: p.id,\n sort: p.sort,\n } as UpdateProductCategoryModifierModel;\n }\n ),\n } as UpdateProductCategoryModifierGroupModel;\n }),\n attributeGroups: model.attributeGroups,\n branchId: separateProduct ? currentBranch.id : undefined,\n };\n await addProductCategoryApi(payload, currentLanguage);\n }\n Modal.success({\n title: \"Thông báo\",\n content: \"Cập nhật thành công\",\n afterClose: () => {\n refresh();\n },\n });\n } catch (error: any) {\n message.error(error?.response?.data?.error?.message ?? \"Lỗi hệ thống\");\n }\n dispatch(setLoading(false));\n };\n\n useEffect(() => {\n if (clientLanguages.length > 0 && !currentLanguage) {\n setCurrentLanguage(clientLanguages.find((m) => m.isDefault)?.langCode);\n }\n }, [clientLanguages]);\n\n useEffect(() => {\n if (document.location.href.indexOf(ADD_PRODUCT_CATEGORY_ROUTE) > -1) {\n setIsUpdateMode(false);\n } else {\n setIsUpdateMode(true);\n getProductCategoryByIdApi(Number(id)).then((res) => {\n setModel(res.data);\n });\n }\n dispatch(fetchProductAttributeGroupList());\n dispatch(fetchProductAttributeList());\n dispatch(fetchProductAttributeValueList());\n dispatch(fetchModifierGroupList());\n }, []);\n\n return (\n
    \n \n \n \n \n Danh mục sản phẩm\n \n \n {isUpdateMode ? \"Sửa\" : \"Thêm\"} danh mục\n \n \n \n \n \n {isUpdateMode && (\n {\n const res = await getProductCategoryByIdApi(model.id, value);\n if (!res.data.name) {\n Modal.confirm({\n title: \"Thông báo\",\n content:\n \"Nội dung chưa được khởi tạo cho ngôn ngữ này, bạn có muốn khởi tạo?\",\n onOk: () => {\n setCurrentLanguage(value);\n },\n });\n return;\n } else {\n setCurrentLanguage(value);\n setModel(res.data);\n }\n }}\n selectedCode={currentLanguage}\n />\n )}\n \n \n \n \n \n \n \n \n Thông tin} key=\"1\">\n \n \n \n \n Hình ảnh: \n {\n setModel({ ...model, avatar: newFileList[0] });\n }}\n />\n \n \n Tên: \n {\n setModel({\n ...model,\n name: e.target.value,\n seoFields: isUpdateMode\n ? model.seoFields\n : ({\n ...model.seoFields,\n metaTitle: e.target.value,\n } as SeoModel),\n slug: cleanUnicode(e.target.value),\n });\n }}\n placeholder=\"Name\"\n >\n \n \n Thứ tự: \n {\n setModel({\n ...model,\n sort: Number(e.target.value),\n });\n }}\n >\n \n \n Active: \n {\n setModel({\n ...model,\n active: e.target.checked,\n });\n }}\n >\n \n \n \n \n \n \n {\n setModel({ ...model, customizeTheme: changedModel });\n }}\n model={model.customizeTheme ?? {}}\n />\n \n Attribute} key=\"2\">\n {\n setModel({ ...model, attributeGroups });\n }}\n />\n \n \n {\n let filterSettingTemp = {\n attributeFilters: changedModel.attributeFilters?.map((att) => {\n return {\n productAttributeId: att.productAttributeId,\n logicalTerm: att.logicalTerm,\n productAttributeValueIds: att.values?.map(\n (attValue) => attValue.valueId\n ),\n };\n }),\n priceFilters: changedModel.priceFilters,\n } as ProductFilterSetting;\n setModel({ ...model, filterSetting: filterSettingTemp });\n }}\n isUpdateMode={isUpdateMode}\n model={\n model?.filterSetting ??\n ({\n priceFilters: [],\n attributeFilters: [],\n } as ProductFilterSetting)\n }\n />\n \n \n {\n setModel({ ...model, slug, seoFields });\n }}\n />\n \n {/* \n {\n setModel({ ...model, productCategoryModifierGroups: modifiers });\n }}\n />\n */}\n \n
    \n );\n}\n","import {\n CUSTOMER_GROUP_API,\n CUSTOMER_GROUP_API_SEARCH,\n} from \"shared/constants/api-endpoint\";\nimport { apiClient } from \"shared/plugins/http-service\";\nimport { PagedResult } from \"states/paged-result-model\";\nimport {\n CreateCustomerGroupModel,\n RemovedCustomerGroupModel,\n SearchCustomerGroupRequestModel,\n CustomerGroupModel,\n UpdatedCustomerGroupModel,\n} from \"./customer-group.models\";\n\nexport const searchCustomerGroup = async (\n searchCustomerGroupRequestModel: SearchCustomerGroupRequestModel\n) => {\n const createResponse = await apiClient.postHttp<\n PagedResult\n >(`${CUSTOMER_GROUP_API_SEARCH}`, searchCustomerGroupRequestModel);\n return createResponse;\n};\n\nexport const removeCustomerGroup = async (\n removedModel: RemovedCustomerGroupModel\n) => {\n const response = await apiClient.postHttp(\n `${CUSTOMER_GROUP_API}/remove_list`,\n removedModel\n );\n return response;\n};\n\nexport const getCustomerGroupById = async (id: number) => {\n return await apiClient.getHttp(\n `${CUSTOMER_GROUP_API}/${id}`\n );\n};\n\nexport const addCustomerGroup = async (model: CreateCustomerGroupModel) => {\n const response = await apiClient.postHttp(\n `${CUSTOMER_GROUP_API}`,\n model\n );\n return response;\n};\n\nexport const updateCustomerGroup = async (model: UpdatedCustomerGroupModel) => {\n const response = await apiClient.putHttp(\n `${CUSTOMER_GROUP_API}`,\n model\n );\n return response;\n};\n","import React, { FC, useState, useEffect } from \"react\";\nimport {\n Input,\n Modal,\n Form,\n Upload,\n Button,\n Select,\n Space,\n Table,\n Typography,\n Col,\n Row,\n Drawer,\n notification,\n} from \"antd\";\nimport { Store } from \"antd/lib/form/interface\";\nimport {\n CustomerGroupModel,\n CreateCustomerGroupModel,\n UpdatedCustomerGroupModel,\n} from \"states/customer-group/customer-group.models\";\nimport { cleanUnicode } from \"shared/plugins/string-helper\";\nimport {\n addCustomerGroup,\n updateCustomerGroup,\n} from \"states/customer-group/customer-group.api\";\nimport { searchCustomer } from \"states/customer/customer.api\";\nimport {\n CustomerModel,\n RemovedCustomerModel,\n SearchCustomerRequestModel,\n} from \"states/customer/customer.models\";\nimport { useDebouncedCallback } from \"use-debounce/lib\";\nimport { PagedResult } from \"states/paged-result-model\";\nimport { ColumnsType } from \"antd/lib/table\";\nimport _ from \"lodash\";\nimport { DeleteOutlined } from \"@ant-design/icons\";\nimport { t, CoreResource } from \"shared/plugins/localization\";\ninterface ICustomerGroupModalProps {\n model: CustomerGroupModel;\n onModal: boolean;\n closeModal: () => void;\n onSuccess: () => void;\n isUpdate: boolean;\n}\nexport const CustomerGroupModalComponent: FC = (\n props\n) => {\n const { model, onModal, closeModal, onSuccess, isUpdate } = props;\n const [form] = Form.useForm();\n const [customerGroupModel, setCustomerGroupModel] =\n useState({} as CustomerGroupModel);\n const [isLoading, setLoading] = useState(false);\n const [selectedRowsKeys, setSelectedRowsKeys] = useState([]);\n const onEmptySelection = () => {\n setSelectedRowsKeys([]);\n };\n const [filterModel, setFilterModel] = useState({\n page: 1,\n pageSize: 20,\n } as SearchCustomerRequestModel);\n const [customers, setCustomer] = useState>(\n {} as PagedResult\n );\n const rowSelection = {\n selectedRowsKeys: selectedRowsKeys,\n hideDefaultSelections: true,\n selections: false,\n onChange: (selectedRowKeys: any) => {\n setSelectedRowsKeys(selectedRowKeys);\n },\n };\n const handleCloseModal = () => {\n closeModal();\n onEmptySelection();\n };\n const onFinish = async (values: Store) => {\n setLoading(true);\n try {\n if (isUpdate) {\n let payload: UpdatedCustomerGroupModel = {\n ...values,\n id: values.id,\n name: values.name,\n customers: customerGroupModel.customers.map((m) => m.id),\n };\n await updateCustomerGroup(payload);\n } else {\n let payload: CreateCustomerGroupModel = {\n ...values,\n name: values.name,\n customers: customerGroupModel.customers.map((m) => m.id),\n };\n await addCustomerGroup(payload);\n }\n handleCloseModal();\n setLoading(false);\n onSuccess();\n Modal.success({\n title: \"Thành công\",\n content: t(CoreResource, \"UpdateDataSuccessfully\"),\n });\n } catch (error) {\n Modal.error({\n title: \"Thông báo\",\n content:\n error?.response?.data?.error?.message ??\n t(CoreResource, \"DefaultErrorMessage\"),\n });\n setLoading(false);\n }\n };\n\n const onFinishFailed = (errorInfo: any) => {\n // console.log(\"Failed:\", errorInfo);\n };\n const onNameChange = (ev: any) => {\n if (!isUpdate) {\n form.setFieldsValue({\n metaTitle: ev.target.value,\n metaDescription: ev.target.value,\n metaKeyword: ev.target.value,\n slug: cleanUnicode(ev.target.value),\n });\n }\n form.setFieldsValue({ name: ev.target.value });\n };\n const onSubmit = () => {\n form.submit();\n };\n const onReset = () => {\n form.resetFields();\n };\n const onFill = () => {\n form.setFieldsValue({\n id: model?.id,\n name: model?.name,\n });\n model.customers.forEach((m) => {\n m.key = m.id.toString();\n });\n setCustomerGroupModel({\n id: model?.id,\n name: model?.name,\n customers: model?.customers,\n } as CustomerGroupModel);\n onEmptySelection();\n };\n\n useEffect(() => {\n if (!isUpdate) {\n onReset();\n } else {\n onFill();\n }\n }, [onModal]);\n const gotoPage = async (page: number) => {\n const result = await searchCustomer({ ...filterModel, page });\n result.data.results.forEach((m) => (m.key = m.id.toString()));\n //.data.results = result.data.results.filter((m) => m.name !== null);\n setCustomer(result.data);\n };\n const columns: ColumnsType = [\n {\n title: \"Mã KH\",\n dataIndex: \"id\",\n key: \"id\",\n render: (id: number, item) => {id},\n },\n {\n title: \"Tên khách hàng\",\n dataIndex: \"name\",\n key: \"name\",\n render: (name: string, item) => {name},\n },\n ];\n const handleSearch = useDebouncedCallback(() => {\n gotoPage(1);\n }, 500);\n useEffect(() => {\n handleSearch();\n }, [filterModel]);\n const onRemoveBtn = () => {\n const key = `open${Date.now()}`;\n const btn = (\n {\n let customerTemps = [...customerGroupModel.customers];\n let customerResult = _.filter(customerTemps, (m) => {\n return !selectedRowsKeys.includes(m.id.toString());\n });\n setCustomerGroupModel({\n ...customerGroupModel,\n customers: customerResult,\n });\n onEmptySelection();\n notification.close(key);\n }}\n >\n Xóa\n \n );\n notification.open({\n message: t(CoreResource, \"QuestionRemove\"),\n key,\n btn,\n placement: \"bottomLeft\",\n });\n };\n return (\n \n {isUpdate ? `Cập nhật nhóm khách hàng` : `Thêm nhóm khách hàng`}\n \n }\n confirmLoading={isLoading}\n centered={true}\n visible={onModal}\n onOk={onSubmit}\n onCancel={handleCloseModal}\n okText=\"Lưu\"\n cancelText=\"Hủy bỏ\"\n >\n \n \n \n \n \n \n \n {\n setFilterModel({ ...filterModel, keyword: value });\n }}\n onSelect={(value: string | number) => {\n let findCustomer = _.find(\n customers?.results,\n (m) => m.id === value\n );\n let oldCustomer = _.filter(\n customerGroupModel.customers,\n (m) => m.id === value\n );\n if (oldCustomer.length > 0) {\n return false;\n }\n let customerTemps = [...customerGroupModel.customers];\n customerTemps.push(findCustomer as CustomerModel);\n setCustomerGroupModel({\n ...customerGroupModel,\n customers: customerTemps,\n });\n }}\n >\n {customers &&\n customers?.results?.map((customer) => (\n \n {customer?.firstName}\n \n ))}\n \n \n \n \n \n \n \n \n \n 0 ? true : false}\n >\n }\n >\n Xóa {selectedRowsKeys.length} dòng đang chọn\n \n \n \n );\n};\n","import React, { FC, useState, useEffect } from \"react\";\nimport { useDispatch } from \"react-redux\";\n\nimport {\n Table,\n Row,\n Col,\n Button,\n Input,\n message,\n Drawer,\n notification,\n} from \"antd\";\n\nimport { DeleteOutlined, PlusCircleOutlined } from \"@ant-design/icons\";\nimport { ColumnsType } from \"antd/lib/table\";\nimport { PagedResult } from \"states/paged-result-model\";\nimport { useDebouncedCallback } from \"use-debounce/lib\";\n\nimport {\n RemovedCustomerGroupModel,\n SearchCustomerGroupRequestModel,\n CustomerGroupModel,\n} from \"states/customer-group/customer-group.models\";\nimport {\n removeCustomerGroup,\n searchCustomerGroup,\n} from \"states/customer-group/customer-group.api\";\nimport { CustomerGroupModalComponent } from \"./customer-group-modal\";\nimport { t, CoreResource } from \"shared/plugins/localization\";\n\ninterface ICustomerGroupProps {}\nconst CustomerGroup: FC = () => {\n const [selectedRowsKeys, setSelectedRowsKeys] =\n useState({\n idList: [],\n });\n const dispatch = useDispatch();\n const [isLoadingList, setIsLoadingList] = useState(false);\n const [pagedResults, setPagedResults] = useState(\n {} as PagedResult\n );\n const [isModal, setModal] = useState(false);\n const [isUpdate, setUpdate] = useState(false);\n const [model, setModel] = useState(\n {} as CustomerGroupModel\n );\n\n const [filterModel, setFilterModel] =\n useState({\n page: 1,\n pageSize: 20,\n });\n\n const rowSelection = {\n selectedRowsKeys,\n onChange: (selectedRowKeys: any) => {\n setSelectedRowsKeys({ ...selectedRowsKeys, idList: selectedRowKeys });\n },\n };\n function onEmptySelection() {\n setSelectedRowsKeys({ ...selectedRowsKeys, idList: [] });\n }\n\n const handleCloseModal = () => {\n setModal(false);\n // if(!isUpdate){\n // handleSearch();\n // }\n };\n const handleAddCustomerGroup = () => {\n setModel({} as CustomerGroupModel);\n setModal(true);\n setUpdate(false);\n };\n const gotoPage = async (page: number) => {\n setIsLoadingList(true);\n const result = await searchCustomerGroup({ ...filterModel, page });\n result.data.results.forEach((m) => (m.key = m.id.toString()));\n setPagedResults(result.data);\n setIsLoadingList(false);\n };\n const handleSearch = useDebouncedCallback(() => {\n gotoPage(1);\n }, 500);\n\n const onRemoveBtn = () => {\n const key = `open${Date.now()}`;\n const btn = (\n {\n try {\n await removeCustomerGroup(selectedRowsKeys);\n notification.close(key);\n setSelectedRowsKeys({ ...selectedRowsKeys, idList: [] });\n handleSearch();\n message.success(t(CoreResource, \"UpdateDataSuccessfully\"));\n } catch (error) {\n message.error(\n error?.response?.data?.error?.message ??\n t(CoreResource, \"DefaultErrorMessage\")\n );\n }\n }}\n >\n Xóa\n \n );\n notification.open({\n message: t(CoreResource, \"QuestionRemove\"),\n key,\n btn,\n placement: \"bottomLeft\",\n });\n };\n\n const columns: ColumnsType = [\n {\n title: \"Tên nhóm khách hàng\",\n dataIndex: \"name\",\n key: \"name\",\n render: (name: string, item) => (\n \n {\n setModel(item);\n setModal(true);\n setUpdate(true);\n }}\n >\n {name}\n \n \n ),\n },\n ];\n\n useEffect(() => {\n handleSearch();\n }, [filterModel]);\n\n return (\n
    \n \n \n {\n setFilterModel({ ...filterModel, name: e.target.value });\n }}\n >\n \n \n }\n >\n Thêm nhóm khách hàng\n \n \n \n \n 0\n ? true\n : false\n }\n >\n }\n >\n Xóa {selectedRowsKeys.idList.length} dòng đang chọn\n \n \n \n
    \n );\n};\n\nexport default CustomerGroup;\n","import {\n Button,\n Card,\n Checkbox,\n Col,\n Input,\n InputNumber,\n message,\n Modal,\n Popover,\n Row,\n Select,\n Typography,\n} from \"antd\";\nimport { RootState } from \"app.store\";\nimport { useEffect, useState } from \"react\";\nimport { shallowEqual, useDispatch, useSelector } from \"react-redux\";\nimport {\n DefaultErrorMessage,\n Information,\n IsActive,\n Name,\n} from \"shared/constants/define-localization\";\nimport { CoreResource, t } from \"shared/plugins/localization\";\nimport { getCountryList } from \"states/address/address.api\";\nimport { CountryModel, StateModel } from \"states/address/address.models\";\nimport { BranchModel } from \"states/branch/branch.models\";\nimport { WareHouseModel } from \"states/ware-house/ware-house.models\";\nimport { TimezoneModel } from \"states/system-setting/system-setting.models\";\nimport { getTimeZones } from \"states/system-setting/system-setting.api\";\nimport { SeoModel } from \"shared/models/seo-model\";\nimport { CopyOutlined } from \"@ant-design/icons\";\nimport { setLoading } from \"states/global-value/global-value.slice\";\nimport { copyMenuFromOtherBranch } from \"states/branch/branch.api\";\n\nexport interface IBranchInformationTabProps {\n model: BranchModel;\n onChange: (newModel: BranchModel) => void;\n isUpdateMode: boolean;\n}\n\nexport function BranchInformationTab(props: IBranchInformationTabProps) {\n const { model, onChange, isUpdateMode } = props;\n const dispatch = useDispatch();\n const wareHouses = useSelector(\n (state: RootState) => state.wareHouse.wareHouseList,\n shallowEqual\n );\n const [countries, setCountries] = useState([]);\n const [states, setStates] = useState([]);\n const [timeZones, setTimeZones] = useState([]);\n const branches = useSelector(\n (state: RootState) => state.branch.branchList,\n shallowEqual\n );\n\n const separateProductEachBranch = useSelector(\n (state: RootState) => state.globalValue.separateProductEachBranch,\n shallowEqual\n );\n const [cloneMenuInfo, setCloneMenuInfo] = useState<{\n branchId?: number;\n isModal: boolean;\n }>({\n isModal: false,\n });\n\n const _handleCloneMenu = async () => {\n if (!cloneMenuInfo.branchId) {\n message.error(\"Please select location\");\n return;\n }\n dispatch(setLoading(true));\n try {\n await copyMenuFromOtherBranch({\n fromBranchId: cloneMenuInfo.branchId,\n branchId: model.id,\n });\n } catch (error) {\n message.error(\n error?.response?.data?.error?.message ??\n \"Lỗi hệ thống\"\n );\n }\n dispatch(setLoading(false));\n };\n\n useEffect(() => {\n getCountryList().then((res) => {\n setCountries(res.data);\n });\n getTimeZones().then((res) => {\n setTimeZones(res.data);\n });\n }, []);\n\n return (\n \n \n \n );\n}\n","import { BRANCH_API, PAYMENT_GATEWAY_API } from \"shared/constants/api-endpoint\";\nimport { apiClient } from \"shared/plugins/http-service\";\nimport { PaymentGatewayModel } from \"./payment-gateway.models\";\n\nexport const getPaymentGatewayList = async () => {\n const createResponse = await apiClient.getHttp(\n `${PAYMENT_GATEWAY_API}`\n );\n return createResponse;\n};\n\nexport const getBranchPaymentSetting = async (\n branchId: number,\n paymentGatewayCode: string\n) => {\n const createResponse = await apiClient.getHttp(\n `${BRANCH_API}/${branchId}/payment_settings/${paymentGatewayCode}`\n );\n return createResponse;\n};\n\nexport const updateBranchPaymentSetting = async (\n branchId: number,\n paymentGatewayCode: string,\n model: any\n) => {\n const createResponse = await apiClient.putHttp(\n `${BRANCH_API}/${branchId}/payment_settings/${paymentGatewayCode}`,\n model\n );\n return createResponse;\n};\n","export interface MxMerchantSettingModel {\n consumerKey: string;\n consumerSecret: string;\n merchantId: string;\n isActive: boolean;\n isSandbox: boolean;\n}\n\nexport abstract class PaymentGatewayCodeConst {\n public static MxMerchant = \"MxMerchant\";\n}\n\nexport interface PaymentGatewayModel {\n paymentGatewayCode: string;\n paymentGatewayName: string;\n}\n","import { Checkbox, Input, Typography } from \"antd\";\nimport { MxMerchantSettingModel } from \"states/payment-gateway/payment-gateway.models\";\n\nexport interface IMxmerchantSettingFormProps {\n model: MxMerchantSettingModel;\n onChange: (newModel: MxMerchantSettingModel) => void;\n}\n\nexport function MxmerchantSettingForm(props: IMxmerchantSettingFormProps) {\n const { model, onChange } = props;\n return model ? (\n <>\n \n Merchant Id: \n {\n onChange({ ...model, merchantId: e.target.value });\n }}\n />\n \n \n Consumer Key: \n {\n onChange({ ...model, consumerKey: e.target.value });\n }}\n />\n \n \n Consumer Secret: \n {\n onChange({ ...model, consumerSecret: e.target.value });\n }}\n />\n \n \n {\n onChange({ ...model, isSandbox: e.target.checked });\n }}\n >\n Is Sandbox\n \n \n \n {\n onChange({ ...model, isActive: e.target.checked });\n }}\n >\n Is Active\n \n \n \n ) : null;\n}\n","import { message, Modal } from \"antd\";\nimport { useEffect, useState } from \"react\";\nimport {\n DefaultErrorMessage,\n UpdateDataSuccessfully,\n} from \"shared/constants/define-localization\";\nimport { CoreResource, t } from \"shared/plugins/localization\";\nimport {\n getBranchPaymentSetting,\n updateBranchPaymentSetting,\n} from \"states/payment-gateway/payment-gateway.api\";\nimport {\n MxMerchantSettingModel,\n PaymentGatewayCodeConst,\n PaymentGatewayModel,\n} from \"states/payment-gateway/payment-gateway.models\";\nimport { MxmerchantSettingForm } from \"./mxmerchant-setting-form\";\n\nexport interface IBranchPaymentApiModalProps {\n branchId: number;\n paymentGateway?: PaymentGatewayModel;\n show: boolean;\n closeModal: () => void;\n}\n\nexport function BranchPaymentApiModal(props: IBranchPaymentApiModalProps) {\n const { branchId, show, closeModal, paymentGateway } = props;\n const [apiSetting, setApiSetting] = useState({});\n const [isLoading, setIsLoading] = useState(false);\n\n const _handleCloseModal = () => {\n setApiSetting({});\n closeModal();\n };\n\n const _handleSaveApiSetting = async () => {\n if (!branchId || !paymentGateway) {\n return;\n }\n setIsLoading(true);\n try {\n await updateBranchPaymentSetting(\n branchId,\n paymentGateway.paymentGatewayCode,\n apiSetting\n );\n setIsLoading(false);\n Modal.success({\n title: \"Successfully\",\n content: \"Cập nhật thành công\",\n afterClose: () => {\n _handleCloseModal();\n },\n });\n } catch (error) {\n setIsLoading(false);\n message.error(\n error?.response?.data?.error?.message ??\n \"Lỗi hệ thống\"\n );\n }\n };\n useEffect(() => {\n if (show && branchId && paymentGateway) {\n getBranchPaymentSetting(branchId, paymentGateway.paymentGatewayCode).then(\n (res) => {\n setApiSetting(res.data);\n }\n );\n }\n }, [show, paymentGateway, branchId]);\n return (\n \n {`Api Setting ${paymentGateway?.paymentGatewayName}`}\n \n }\n confirmLoading={isLoading}\n centered={true}\n visible={show}\n onOk={_handleSaveApiSetting}\n onCancel={_handleCloseModal}\n okText=\"Save\"\n cancelText=\"Cancel\"\n >\n {branchId &&\n paymentGateway &&\n paymentGateway.paymentGatewayCode ===\n PaymentGatewayCodeConst.MxMerchant && (\n {\n setApiSetting(newSetting);\n }}\n />\n )}\n \n );\n}\n","import { Button, Table } from \"antd\";\nimport { ColumnsType } from \"antd/lib/table\";\nimport { useEffect, useState } from \"react\";\nimport { getPaymentGatewayList } from \"states/payment-gateway/payment-gateway.api\";\nimport { PaymentGatewayModel } from \"states/payment-gateway/payment-gateway.models\";\nimport { BranchPaymentApiModal } from \"./branch-payment-api-modal\";\n\nexport interface IBranchPaymentSettingTabProps {\n branchId: number;\n}\n\nexport function BranchPaymentSettingTab(props: IBranchPaymentSettingTabProps) {\n const { branchId } = props;\n const [paymentGateways, setPaymentGateways] = useState(\n []\n );\n const [apiModalProps, setApiModalProps] = useState<{\n show: boolean;\n branchId: number;\n paymentGateway?: PaymentGatewayModel;\n }>({\n show: false,\n branchId: branchId,\n paymentGateway: undefined,\n });\n\n const columns: ColumnsType = [\n {\n title: \"Payment Gateway\",\n dataIndex: \"gatewayName\",\n key: \"gatewayName\",\n render: (gatewayName: string, item) => item.paymentGatewayName,\n },\n {\n title: \"Actions\",\n dataIndex: \"action\",\n key: \"action\",\n render: (action: string, item) => (\n <>\n {\n setApiModalProps({\n branchId: branchId,\n show: true,\n paymentGateway: item,\n });\n }}\n >\n API Setting\n \n \n ),\n },\n ];\n\n useEffect(() => {\n getPaymentGatewayList().then((res) => setPaymentGateways(res.data));\n }, []);\n\n return (\n
    \n row.paymentGatewayCode}\n dataSource={paymentGateways}\n size=\"small\"\n >\n {\n setApiModalProps({\n branchId: branchId,\n show: false,\n paymentGateway: undefined,\n });\n }}\n />\n
    \n );\n}\n","import { BRANCH_API } from \"shared/constants/api-endpoint\";\nimport { OrderPickupSettingModel } from \"shared/models/order-pickup-setting-model\";\nimport { apiClient } from \"shared/plugins/http-service\";\n\nexport const getBranchOrderPickupSetting = async (branchId: number) => {\n return await apiClient.getHttp(\n `${BRANCH_API}/${branchId}/order_pickup_settings`\n );\n};\n\nexport const updateBranchOrderPickupSetting = async (\n branchId: number,\n model: OrderPickupSettingModel\n) => {\n const response = await apiClient.putHttp(\n `${BRANCH_API}/${branchId}/order_pickup_settings`,\n model\n );\n return response;\n};\n","import { SaveOutlined } from \"@ant-design/icons\";\nimport {\n Button,\n Card,\n Checkbox,\n Col,\n Input,\n message,\n Row,\n Typography,\n} from \"antd\";\nimport { useEffect, useState } from \"react\";\nimport { useDispatch } from \"react-redux\";\nimport {\n DefaultErrorMessage,\n IsActive,\n SessionLength,\n UpdateDataSuccessfully,\n} from \"shared/constants/define-localization\";\nimport { CoreResource, t } from \"shared/plugins/localization\";\nimport { setLoading } from \"states/global-value/global-value.slice\";\nimport {\n getBranchOrderPickupSetting,\n updateBranchOrderPickupSetting,\n} from \"states/branch-order-pickup-setting/branch-order-pickup-setting.api\";\nimport { OrderPickupSettingModel } from \"shared/models/order-pickup-setting-model\";\n\nexport interface IBranchOrderPickupTabProps {\n branchId: number;\n}\n\nexport function BranchOrderPickupTab(props: IBranchOrderPickupTabProps) {\n const [model, setModel] = useState(\n {} as OrderPickupSettingModel\n );\n const dispatch = useDispatch();\n const _handleSaveSetting = async () => {\n if (!props.branchId) return;\n dispatch(setLoading(true));\n try {\n await updateBranchOrderPickupSetting(props.branchId, model);\n dispatch(setLoading(false));\n message.success(\"Cập nhật thành công\");\n } catch (error) {\n dispatch(setLoading(false));\n message.error(\n error?.response?.data?.error?.message ??\n \"Lỗi hệ thống\"\n );\n }\n };\n\n useEffect(() => {\n if (props.branchId) {\n getBranchOrderPickupSetting(props.branchId).then((res) => {\n setModel(res.data);\n });\n }\n }, [props.branchId]);\n\n return (\n
    \n \n \n \n \n \n \n \n \n \n \n {t(CoreResource, SessionLength)}\n \n {\n setModel({\n ...model,\n sessionLength: e.target.valueAsNumber,\n });\n }}\n placeholder={t(CoreResource, SessionLength)}\n >\n \n \n Max orders per session\n {\n setModel({\n ...model,\n maxOrderPerSession: e.target.valueAsNumber,\n });\n }}\n placeholder=\"Max orders per session\"\n >\n \n \n {\n setModel({ ...model, isActive: e.target.checked });\n }}\n >\n {t(CoreResource, IsActive)}\n \n \n \n \n \n
    \n );\n}\n","import { BRANCH_API } from \"shared/constants/api-endpoint\";\nimport { ScheduleSettingModel } from \"shared/models/schedule-setting-model\";\nimport { apiClient } from \"shared/plugins/http-service\";\n\nexport const getBranchScheduleSetting = async (branchId: number) => {\n return await apiClient.getHttp(\n `${BRANCH_API}/${branchId}/schedule_settings`\n );\n};\n\nexport const updateBranchScheduleSetting = async (\n branchId: number,\n model: ScheduleSettingModel\n) => {\n const response = await apiClient.putHttp(\n `${BRANCH_API}/${branchId}/schedule_settings`,\n model\n );\n return response;\n};\n","import { SaveOutlined } from \"@ant-design/icons\";\nimport {\n Button,\n Card,\n Checkbox,\n Col,\n Input,\n message,\n Row,\n TimePicker,\n} from \"antd\";\nimport { useEffect, useState } from \"react\";\nimport { useDispatch } from \"react-redux\";\nimport moment from \"moment-timezone\";\nimport {\n DefaultErrorMessage,\n IsActive,\n UpdateDataSuccessfully,\n} from \"shared/constants/define-localization\";\nimport { CoreResource, t } from \"shared/plugins/localization\";\nimport { setLoading } from \"states/global-value/global-value.slice\";\nimport { ScheduleSettingModel } from \"shared/models/schedule-setting-model\";\nimport {\n getBranchScheduleSetting,\n updateBranchScheduleSetting,\n} from \"states/branch-schedule-setting/branch-schedule-setting.api\";\n\nexport interface IBranchScheduleTabProps {\n branchId: number;\n}\n\nexport function BranchScheduleTab(props: IBranchScheduleTabProps) {\n const [model, setModel] = useState({\n timeTable: [],\n } as ScheduleSettingModel);\n const dispatch = useDispatch();\n const _handleSaveSetting = async () => {\n if (!props.branchId) return;\n dispatch(setLoading(true));\n try {\n await updateBranchScheduleSetting(props.branchId, model);\n dispatch(setLoading(false));\n message.success(\"Cập nhật thành công\");\n } catch (error) {\n dispatch(setLoading(false));\n message.error(\n error?.response?.data?.error?.message ??\n \"Lỗi hệ thống\"\n );\n }\n };\n\n useEffect(() => {\n if (props.branchId) {\n getBranchScheduleSetting(props.branchId).then((res) => {\n setModel(res.data);\n });\n }\n }, [props.branchId]);\n\n return (\n
    \n \n \n \n \n \n \n {model.timeTable &&\n model.timeTable.map((item, index) => (\n \n \n \n {\n if (e) {\n model.timeTable[index].open = e.format(\"hh:mm A\");\n setModel({ ...model });\n }\n }}\n className=\"mr-2\"\n >{\" \"}\n {\n if (e) {\n model.timeTable[index].close = e.format(\"hh:mm A\");\n setModel({ ...model });\n }\n }}\n >\n \n \n {\n model.timeTable[index].isActive = e.target.checked;\n setModel({ ...model });\n }}\n >\n {t(CoreResource, IsActive)}\n \n \n \n \n ))}\n \n
    \n );\n}\n","import { RollbackOutlined, SaveOutlined } from \"@ant-design/icons\";\nimport { Breadcrumb, Button, Col, message, Modal, Row, Tabs } from \"antd\";\nimport { useEffect, useState } from \"react\";\nimport { useDispatch } from \"react-redux\";\nimport { Link, useHistory, useParams } from \"react-router-dom\";\nimport { t, CoreResource } from \"shared/plugins/localization\";\nimport { setLoading } from \"states/global-value/global-value.slice\";\nimport {\n addBranch,\n getBranchById,\n updateBranch,\n} from \"states/branch/branch.api\";\nimport {\n CreateBranchModel,\n BranchModel,\n UpdatedBranchModel,\n} from \"states/branch/branch.models\";\nimport { ADD_BRANCH_ROUTE, BRANCH_ROUTE } from \"shared/constants/routes\";\nimport { WareHouseModel } from \"states/ware-house/ware-house.models\";\nimport { CustomTheme } from \"shared/components/custom-theme/custom-theme\";\nimport { Seo } from \"shared/components/seo/seo\";\nimport { SeoModel } from \"shared/models/seo-model\";\nimport { fetchWareHouseList } from \"states/ware-house/ware-house.slice\";\nimport { BranchInformationTab } from \"./components/branch-information-tab\";\nimport useRefresh from \"shared/hooks/use-refresh\";\nimport { BranchPaymentSettingTab } from \"./components/branch-payment-setting-tab\";\nimport { BranchOrderPickupTab } from \"./components/branch-order-pickup-tab\";\nimport { BranchScheduleTab } from \"./components/branch-schedule-tab\";\n\ninterface RouteParams {\n branchId: string;\n}\ninterface IAddUpdateBranchProps {}\n\nexport function AddUpdateBranch(props: IAddUpdateBranchProps) {\n const { branchId } = useParams();\n const [model, setModel] = useState({\n wareHouses: [] as WareHouseModel[],\n address: {},\n } as BranchModel);\n const [isUpdateMode, setIsUpdateMode] = useState(false);\n const dispatch = useDispatch();\n const refresh = useRefresh();\n\n const getBranch = async () => {\n try {\n const res = await getBranchById(Number(branchId));\n res.data.address = res.data.address ?? {};\n setModel(res.data);\n } catch (error) {\n message.error(\n error?.response?.data?.error?.message ??\n \"Lỗi hệ thống\"\n );\n }\n };\n\n const onSaved = async () => {\n dispatch(setLoading(true));\n try {\n if (isUpdateMode) {\n const payload = {\n id: model.id,\n name: model.name,\n address: model.address,\n email: model.email,\n isActive: model.isActive,\n isUpComing: model.isUpComing,\n phone: model.phone,\n wareHouseIds: model.wareHouses.map((m) => m.id),\n slug: model.slug,\n defaultPrinterIp: model.defaultPrinterIp,\n timeZone: model.timeZone,\n customizeTheme: model.customizeTheme ?? {},\n seoFields: model.seoFields,\n taxRate: model.taxRate,\n sort: model.sort,\n } as UpdatedBranchModel;\n await updateBranch(payload);\n } else {\n const payload = {\n name: model.name,\n address: model.address,\n email: model.email,\n isActive: model.isActive,\n isUpComing: model.isUpComing,\n phone: model.phone,\n wareHouseIds: model.wareHouses.map((m) => m.id),\n slug: model.slug,\n defaultPrinterIp: model.defaultPrinterIp,\n timeZone: model.timeZone,\n customizeTheme: model.customizeTheme ?? {},\n seoFields: model.seoFields,\n taxRate: model.taxRate,\n sort: model.sort,\n } as CreateBranchModel;\n await addBranch(payload);\n }\n Modal.success({\n title: \"\",\n content: \"Cập nhật thành công\",\n afterClose: refresh,\n });\n } catch (error) {\n message.error(\n error?.response?.data?.error?.message ??\n \"Lỗi hệ thống\"\n );\n }\n dispatch(setLoading(false));\n };\n\n useEffect(() => {\n dispatch(fetchWareHouseList());\n if (document.location.href.indexOf(ADD_BRANCH_ROUTE) > -1) {\n setIsUpdateMode(false);\n } else {\n setIsUpdateMode(true);\n getBranch();\n }\n }, []);\n\n return (\n
    \n \n \n \n \n {\"Chi nhánh\"}\n \n {isUpdateMode ? \"Cập nhật chi nhánh \"+ model?.name:\"Thêm chi nhánh\"}\n \n \n \n \n \n \n \n \n \n \n \n {\n setModel(newModel);\n }}\n isUpdateMode\n />\n \n {isUpdateMode && (\n <>\n \n \n \n \n \n \n \n \n \n \n \n \n \n )}\n \n {\n setModel({ ...model, customizeTheme: changedModel });\n }}\n model={model.customizeTheme ?? {}}\n />\n \n \n {\n setModel({ ...model, slug, seoFields });\n }}\n />\n \n \n
    \n );\n}\n","import React, { FC, useState, useEffect } from \"react\";\nimport { Table, Row, Col, Button, message, Drawer, notification, Space } from \"antd\";\nimport { DeleteOutlined, OrderedListOutlined, PlusCircleOutlined } from \"@ant-design/icons\";\nimport { ColumnsType } from \"antd/lib/table\";\nimport { RemovedBranchModel, BranchModel } from \"states/branch/branch.models\";\nimport { removeBranch, updateSortBranch } from \"states/branch/branch.api\";\nimport { Link } from \"react-router-dom\";\nimport { CoreResource, t } from \"shared/plugins/localization\";\nimport { getBranchList } from \"states/branch/branch.api\";\nimport { ADD_BRANCH_ROUTE, UPDATE_BRANCH_ROUTE } from \"shared/constants/routes\";\nimport { Sortable, SortItemModel } from \"shared/components/sortable/sortable\";\nimport { UpdatedSortEntityModel } from \"shared/models/updated-sort-entity-model\";\n\ninterface IBranchProps { }\nconst Branch: FC = () => {\n const [selectedRowsKeys, setSelectedRowsKeys] = useState({\n idList: [],\n });\n const [isLoadingList, setIsLoadingList] = useState(false);\n const [pagedResults, setPagedResults] = useState([]);\n const [isUpdateSort, setIsUpdateSort] = useState(false);\n const rowSelection = {\n selectedRowsKeys,\n onChange: (selectedRowKeys: any) => {\n setSelectedRowsKeys({ ...selectedRowsKeys, idList: selectedRowKeys });\n },\n };\n\n const onEmptySelection = () => {\n setSelectedRowsKeys({ ...selectedRowsKeys, idList: [] });\n };\n\n const loadBranchList = async () => {\n setIsLoadingList(true);\n try {\n const res = await getBranchList();\n const branchList = res.data;\n branchList.forEach((branch) => {\n branch.key = branch.id.toString();\n });\n setPagedResults(branchList);\n } catch {\n message.error(\"Lỗi hệ thống\");\n }\n setIsLoadingList(false);\n };\n const handleSortBranch = async (sortList: SortItemModel[]) => {\n try {\n let payload = sortList.map(\n (item) =>\n ({\n id: Number(item.key),\n sort: item.sort,\n } as UpdatedSortEntityModel)\n );\n await updateSortBranch(payload);\n setIsUpdateSort(false);\n loadBranchList();\n } catch {\n message.error(\"Lỗi hệ thống\");\n }\n };\n useEffect(() => {\n loadBranchList();\n }, []);\n\n const onRemoveBtn = () => {\n const key = `open${Date.now()}`;\n const btn = (\n {\n try {\n await removeBranch(selectedRowsKeys);\n notification.close(key);\n setSelectedRowsKeys({ ...selectedRowsKeys, idList: [] });\n loadBranchList();\n message.success(\"Cập nhật thành công\");\n } catch (error) {\n message.error(\n error?.response?.data?.error?.message ??\n \"Lỗi hệ thống\"\n );\n }\n }}\n >\n Xóa\n \n );\n notification.open({\n message: \"Bạn có muốn xóa không ?\",\n key,\n btn,\n placement: \"bottomLeft\",\n });\n };\n\n const columns: ColumnsType = [\n {\n title: \"Tên\",\n dataIndex: \"name\",\n key: \"name\",\n render: (name: string, item) => (\n \n {name}\n \n ),\n },\n {\n title: \"Sắp xếp\",\n dataIndex: \"sort\",\n key: \"sort\",\n render: (sort: number, item) => (\n \n {sort}\n \n ),\n },\n ];\n return (\n
    \n \n \n \n \n \n \n \n {\n setIsUpdateSort(true);\n }}\n type=\"default\"\n icon={}\n >\n {\"Sắp xếp\"}\n \n \n \n \n \n 0\n ? pagedResults?.map((item) => ({\n key: item.id.toString(),\n title: item.name,\n sort: item.sort ?? 0,\n }))\n : []\n }\n onCancel={async () => {\n setIsUpdateSort(false);\n }}\n onOk={handleSortBranch}\n title={`Sort Branches`}\n visible={isUpdateSort}\n />\n 0\n ? true\n : false\n }\n >\n }\n >\n Xóa {selectedRowsKeys.idList.length.toString()} dòng\n \n \n
    \n );\n};\n\nexport default Branch;\n","import {\n WEBSITE_CONFIGURATION_API,\n} from \"shared/constants/api-endpoint\";\nimport { apiClient } from \"shared/plugins/http-service\";\nimport {\n WebsiteConfigModel,\n} from \"./website-config.models\";\nexport const getWebsiteConfig = async () => {\n return await apiClient.getHttp(`${WEBSITE_CONFIGURATION_API}`);\n};\nexport const updateWebsiteConfig = async (model: WebsiteConfigModel) => {\n const response = await apiClient.putHttp(`${WEBSITE_CONFIGURATION_API}`, model);\n return response;\n};\n","import { FC, useEffect } from \"react\";\nimport { Row, Col, Input, message, Card, Form, Modal, Button } from \"antd\";\nimport { t, CoreResource } from \"shared/plugins/localization\";\nimport {\n DefaultErrorMessage,\n NotificationText,\n Save,\n Successfully,\n UpdateDataSuccessfully,\n WebsiteConfigText,\n} from \"shared/constants/define-localization\";\nimport { WebsiteConfigModel } from \"states/website-config/website-config.models\";\nimport {\n getWebsiteConfig,\n updateWebsiteConfig,\n} from \"states/website-config/website-config.api\";\nimport { Store } from \"antd/lib/form/interface\";\nimport { SaveOutlined } from \"@ant-design/icons\";\nimport { useDispatch } from \"react-redux\";\nimport { setLoading } from \"states/global-value/global-value.slice\";\n\ninterface IWebsiteConfigProps {}\nconst { TextArea } = Input;\n\nconst WebsiteConfig: FC = () => {\n const [form] = Form.useForm();\n const dispatch = useDispatch();\n const getConfig = async () => {\n try {\n const res = await getWebsiteConfig();\n form.setFieldsValue(res.data);\n } catch (error) {\n message.error(\n error?.response?.data?.error?.message ??\n \"Lỗi hệ thống\"\n );\n }\n };\n\n const onFinish = async (values: Store) => {\n dispatch(setLoading(true));\n try {\n let payload = {\n privateGoogleCaptcha: values?.privateGoogleCaptcha,\n publicGoogleCaptcha: values?.publicGoogleCaptcha,\n customCodeBeginBodyTag: values?.customCodeBeginBodyTag,\n customCodeInHeadTag: values?.customCodeInHeadTag,\n customCodeEndBodyTag: values?.customCodeEndBodyTag,\n robotTxt:values?.robotTxt,\n googleAuthClientId:values?.googleAuthClientId,\n googleAuthClientSecret: values?.googleAuthClientSecret,\n googleAuthRedirectUrl: values?.googleAuthRedirectUrl,\n facebookAuthClientId:values?.facebookAuthClientId,\n facebookAuthClientSecret: values?.facebookAuthClientSecret,\n facebookAuthRedirectUrl: values?.facebookAuthRedirectUrl\n } as WebsiteConfigModel;\n await updateWebsiteConfig(payload);\n dispatch(setLoading(false));\n Modal.success({\n title: \"Thành công\",\n content: \"Cập nhật thành công\",\n });\n } catch (error) {\n dispatch(setLoading(false));\n Modal.error({\n title: \"Thông báo\",\n content:\n error?.response?.data?.error?.message ??\n \"Lỗi hệ thống\",\n });\n }\n };\n const onSaved = () => {\n form.submit();\n };\n useEffect(() => {\n getConfig();\n }, []);\n\n return (\n
    \n \n \n \n \n \n \n \n \n \n \n \"\n name=\"customCodeInHeadTag\"\n >\n tag\"\n />\n \n \"\n name=\"customCodeBeginBodyTag\"\n >\n \"\n />\n \n \"\n name=\"customCodeEndBodyTag\"\n >\n \"\n />\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n );\n};\n\nexport default WebsiteConfig;\n","import React, { FC, useState, useEffect } from \"react\";\nimport { useDispatch, useSelector, shallowEqual } from \"react-redux\";\n\nimport { Table, Row, Col, Button, message, Drawer, notification } from \"antd\";\n\nimport { DeleteOutlined, PlusCircleOutlined } from \"@ant-design/icons\";\nimport { ColumnsType } from \"antd/lib/table\";\n\nimport { removeUnit, getUnitList } from \"states/unit/unit.api\";\nimport { t, CoreResource } from \"shared/plugins/localization\";\nimport { RemovedEntityModel } from \"shared/models/removed-entity-model\";\nimport { UnitModel } from \"states/unit/unit.models\";\nimport { UnitModalComponent } from \"shared/components/unit/unit-modal\";\nimport { fetchUnitList, unitListSelector } from \"states/unit/unit.slice\";\n\ninterface IUnitProps {}\nconst UnitPage: FC = () => {\n const [selectedRowsKeys, setSelectedRowsKeys] = useState<\n RemovedEntityModel\n >({\n idList: [],\n });\n const dispatch = useDispatch();\n const [isLoadingList, setIsLoadingList] = useState(false);\n const [pagedResults, setPagedResults] = useState([] as UnitModel[]);\n const [isModal, setModal] = useState(false);\n const [isUpdate, setUpdate] = useState(false);\n const [model, setModel] = useState({} as UnitModel);\n const unitList = useSelector(unitListSelector, shallowEqual);\n const rowSelection = {\n selectedRowsKeys,\n onChange: (selectedRowKeys: any) => {\n setSelectedRowsKeys({ ...selectedRowsKeys, idList: selectedRowKeys });\n },\n };\n const onEmptySelection = () => {\n setSelectedRowsKeys({ ...selectedRowsKeys, idList: [] });\n };\n useEffect(() => {\n onRefreshData();\n }, []);\n const handleCloseModal = () => {\n setModal(false);\n };\n const handleAddUnit = () => {\n setModel({} as UnitModel);\n setModal(true);\n setUpdate(false);\n };\n const onRefreshData = () => {\n dispatch(fetchUnitList());\n };\n const onRemoveBtn = () => {\n const key = `open${Date.now()}`;\n const btn = (\n {\n try {\n await removeUnit(selectedRowsKeys);\n notification.close(key);\n setSelectedRowsKeys({ ...selectedRowsKeys, idList: [] });\n onRefreshData();\n message.success(t(CoreResource, \"UpdateDataSuccessfully\"));\n } catch (error) {\n message.error(\n error?.response?.data?.error?.message ??\n t(CoreResource, \"DefaultErrorMessage\")\n );\n }\n }}\n >\n Xóa\n \n );\n notification.open({\n message: t(CoreResource, \"QuestionRemove\"),\n key,\n btn,\n placement: \"bottomLeft\",\n });\n };\n\n const columns: ColumnsType = [\n {\n title: \"Name\",\n dataIndex: \"unitName\",\n key: \"unitName\",\n render: (unitName: string, item) => (\n \n {\n setModel(item);\n setModal(true);\n setUpdate(true);\n }}\n >\n {unitName}\n \n \n ),\n },\n ];\n\n return (\n
    \n \n \n \n }\n >\n Add unit\n \n \n \n row.id}\n dataSource={unitList}\n size=\"small\"\n loading={isLoadingList}\n >\n 0\n ? true\n : false\n }\n >\n }\n >\n Remove ({selectedRowsKeys.idList.length})\n \n \n \n
    \n );\n};\n\nexport default UnitPage;\n","import { DeleteOutlined } from \"@ant-design/icons\";\nimport { Button, Popconfirm } from \"antd\";\nimport {\n QuestionRemove,\n Cancel,\n Delete,\n} from \"shared/constants/define-localization\";\nimport { CoreResource, t } from \"shared/plugins/localization\";\nimport {\n ThemeTemplateItem,\n ThemeTypeText,\n} from \"states/theme-template/theme-template.models\";\n\nexport interface IThemeTemplateBasicProps {\n model: ThemeTemplateItem;\n onDelete: () => void;\n}\n\nexport function ThemeTemplateBasic(props: IThemeTemplateBasicProps) {\n const { model, onDelete } = props;\n return (\n
    \n \n {model.name} - {ThemeTypeText[model.type]}\n {\" \"}\n \n \n \n
    \n );\n}\n","import {\n DeleteOutlined,\n PlusOutlined,\n WarningOutlined,\n} from \"@ant-design/icons\";\nimport {\n Button,\n Col,\n Collapse,\n Divider,\n Input,\n message,\n Popconfirm,\n Row,\n Select,\n} from \"antd\";\nimport { ReactNode, useState } from \"react\";\nimport {\n Add,\n Cancel,\n Delete,\n QuestionRemove,\n} from \"shared/constants/define-localization\";\nimport { t, CoreResource } from \"shared/plugins/localization\";\nimport { cleanUnicode } from \"shared/plugins/string-helper\";\nimport {\n ThemeTemplateItem,\n ThemeType,\n ThemeTypeText,\n} from \"states/theme-template/theme-template.models\";\nimport { ThemeTemplateBasic } from \"./theme-template-basic\";\n\nexport interface IThemeTemplateGroupProps {\n itemKey: string;\n model: ThemeTemplateItem;\n onChange: (changedModel: ThemeTemplateItem) => void;\n onDelete?: () => void;\n}\n\nexport function ThemeTemplateGroup(props: IThemeTemplateGroupProps) {\n const { itemKey, model, onChange, onDelete } = props;\n const [addItemModel, setAddItemModel] = useState(\n {} as ThemeTemplateItem\n );\n\n const renderThemeTemplateItems = () => {\n const listItem: any[] = [];\n\n for (let item in model.value) {\n let templateItem: ReactNode;\n switch (model.value[item].type as ThemeType) {\n case ThemeType.Group:\n case ThemeType.GroupList: {\n templateItem = (\n <>\n {\n model.value[item] = changedItem;\n onChange(model);\n }}\n onDelete={() => {\n delete model.value[item];\n onChange(model);\n }}\n />\n \n \n );\n break;\n }\n default: {\n templateItem = (\n <>\n {\n delete model.value[item];\n onChange(model);\n }}\n />\n \n \n );\n break;\n }\n }\n listItem.push(templateItem);\n }\n return listItem;\n };\n\n const handleAddThemeTemplateItem = () => {\n if (!addItemModel.name) {\n message.error(\"Vui lòng nhập tên phần tử\");\n return;\n }\n if (addItemModel.type === null || addItemModel.type === undefined) {\n message.error(\"Vui lòng chọn loại phần tử\");\n return;\n }\n const propName = cleanUnicode(addItemModel.name);\n if (model.value[propName]) {\n message.error(\"Phần tử đã được thêm rồi\");\n return;\n }\n\n model.value[propName] = { ...addItemModel, value: {} };\n onChange(model);\n };\n\n return (\n \n \n \n {model.name} - {ThemeTypeText[model.type]}\n {\" \"}\n {Object.entries(model.value).length === 0 && (\n \n Vui lòng thêm phần tử\n \n )}\n \n }\n >\n
    \n \n \n {\n setAddItemModel({ ...addItemModel, name: e.target.value });\n }}\n />\n \n \n {\n setAddItemModel({ ...addItemModel, type: e });\n }}\n showSearch\n filterOption={(input, option: any) =>\n option.children.toLowerCase().indexOf(input.toLowerCase()) >=\n 0\n }\n >\n {Object.keys(ThemeType).map((key) =>\n !isNaN(Number(key)) ? (\n \n {ThemeTypeText[Number(key)]}\n \n ) : null\n )}\n \n \n \n
    \n }\n onClick={handleAddThemeTemplateItem}\n >\n {t(CoreResource, Add)}\n \n {onDelete && (\n {\n onDelete && onDelete();\n }}\n title={\"Bạn có muốn xóa không ?\"}\n okText=\"Đồng ý\"\n cancelText={\"Hủy\"}\n >\n \n \n )}\n
    \n \n
    \n \n {renderThemeTemplateItems()}\n
    \n \n
    \n );\n}\n","import { RollbackOutlined, SaveOutlined } from \"@ant-design/icons\";\nimport { Breadcrumb, Button, Col, Input, message, Row } from \"antd\";\nimport { useEffect, useState } from \"react\";\nimport { useDispatch } from \"react-redux\";\nimport { Link, useHistory, useParams } from \"react-router-dom\";\nimport {\n Back,\n DefaultErrorMessage,\n Save,\n UpdateDataSuccessfully,\n} from \"shared/constants/define-localization\";\nimport {\n THEME_TEMPLATE_ROUTE,\n UPDATE_THEME_TEMPLATE_ROUTE,\n} from \"shared/constants/routes\";\nimport { CoreResource, t } from \"shared/plugins/localization\";\nimport { setLoading } from \"states/global-value/global-value.slice\";\nimport {\n addThemeTemplate,\n getThemeTemplateById,\n updateThemeTemplate,\n} from \"states/theme-template/theme-template.api\";\nimport {\n ThemeTemplateItem,\n ThemeTemplateModel,\n ThemeType,\n} from \"states/theme-template/theme-template.models\";\nimport { ThemeTemplateGroup } from \"./components/theme-template-group\";\n\nexport interface IAddUpdateThemeTemplaateProps {}\ntype TParams = { id: string };\n\nexport function AddUpdateThemeTemplate(props: IAddUpdateThemeTemplaateProps) {\n const dispatch = useDispatch();\n const history = useHistory();\n const { id } = useParams();\n const [model, setModel] = useState({\n value: {},\n } as ThemeTemplateModel);\n\n const _handleOnSave = async () => {\n if (\n !checkEmptyValue({\n name: model.name,\n type: ThemeType.Group,\n value: model.value,\n })\n ) {\n message.error(\"Vui lòng thêm phần tử vào nhóm\");\n return;\n }\n dispatch(setLoading(true));\n try {\n if (id) {\n await updateThemeTemplate(model);\n } else {\n await addThemeTemplate(model);\n }\n message.success(\"Cập nhật thành công\");\n history.go(0);\n } catch (error) {\n message.error(error?.response?.data?.error?.message);\n }\n dispatch(setLoading(false));\n };\n\n const checkEmptyValue = (template: ThemeTemplateItem) => {\n if (\n (template.type === ThemeType.Group ||\n template.type === ThemeType.GroupList) &&\n Object.entries(template.value).length === 0\n ) {\n return false;\n }\n for (let item in template.value) {\n const valid = checkEmptyValue(template.value[item]);\n if (!valid) return false;\n }\n return true;\n };\n\n const _handleGetUpdate = async () => {\n try {\n let response = await getThemeTemplateById(id);\n setModel(response.data);\n } catch (error) {\n message.error(\n error?.response?.data?.error?.message ??\n \"Lỗi hệ thống\"\n );\n }\n };\n\n useEffect(() => {\n if (document.location.href.indexOf(UPDATE_THEME_TEMPLATE_ROUTE) > 0) {\n _handleGetUpdate();\n }\n document.title = \"Thêm theme template\";\n }, []);\n\n return (\n
    \n \n \n \n \n Theme template\n \n Thêm theme template\n \n \n \n \n \n \n }\n >\n {\"Lưu\"}\n \n \n \n\n \n \n {\n setModel({ ...model, name: ev.target.value });\n }}\n />\n \n \n {\n setModel({ ...model, slug: ev.target.value });\n }}\n />\n \n \n\n {\n setModel({ ...model, value: changedModel.value });\n }}\n />\n
    \n );\n}\n","import React, { FC, useState, useEffect } from \"react\";\n\nimport {\n Table,\n Row,\n Col,\n Button,\n Input,\n message,\n Drawer,\n notification,\n} from \"antd\";\n\nimport { DeleteOutlined, PlusCircleOutlined } from \"@ant-design/icons\";\nimport { ColumnsType } from \"antd/lib/table\";\nimport { PagedResult } from \"states/paged-result-model\";\nimport { useDebouncedCallback } from \"use-debounce/lib\";\nimport { Link } from \"react-router-dom\";\nimport { t, CoreResource } from \"shared/plugins/localization\";\nimport {\n Add,\n DefaultErrorMessage,\n Delete,\n DeleteNumber,\n NameField,\n QuestionRemove,\n SearchByTheField,\n Theme,\n UpdateDataSuccessfully,\n} from \"shared/constants/define-localization\";\nimport { RemovedEntityModel } from \"shared/models/removed-entity-model\";\nimport {\n SearchThemeTemplateRequestModel,\n ThemeTemplateModel,\n} from \"states/theme-template/theme-template.models\";\nimport {\n removeThemeTemplate,\n searchThemeTemplate,\n} from \"states/theme-template/theme-template.api\";\nimport {\n ADD_THEME_TEMPLATE_ROUTE,\n UPDATE_THEME_TEMPLATE_ROUTE,\n} from \"shared/constants/routes\";\nconst ThemeTemplatePage: FC = () => {\n const [selectedRowsKeys, setSelectedRowsKeys] = useState<\n RemovedEntityModel\n >({\n idList: [],\n });\n const [isLoadingList, setIsLoadingList] = useState(false);\n const [pagedResults, setPagedResults] = useState(\n {} as PagedResult\n );\n const [filterModel, setFilterModel] =\n useState({\n page: 1,\n pageSize: 20,\n });\n\n const rowSelection = {\n selectedRowsKeys,\n onChange: (selectedRowKeys: any) => {\n setSelectedRowsKeys({ ...selectedRowsKeys, idList: selectedRowKeys });\n },\n };\n const onEmptySelection = () => {\n setSelectedRowsKeys({ ...selectedRowsKeys, idList: [] });\n };\n\n const gotoPage = async (page: number) => {\n setIsLoadingList(true);\n const result = await searchThemeTemplate({ ...filterModel, page });\n result.data.results.forEach((e) => {\n e.key = e.id;\n });\n setPagedResults(result.data);\n setIsLoadingList(false);\n };\n const handleSearch = useDebouncedCallback(() => {\n gotoPage(1);\n }, 500);\n\n const onRemoveBtn = () => {\n const key = `open${Date.now()}`;\n const btn = (\n {\n try {\n await removeThemeTemplate(selectedRowsKeys);\n notification.close(key);\n setSelectedRowsKeys({ ...selectedRowsKeys, idList: [] });\n handleSearch();\n message.success(\"Cập nhật thành công\");\n } catch (error) {\n message.error(\n error?.response?.data?.error?.message ??\n \"Lỗi hệ thống\"\n );\n }\n }}\n >\n Xóa\n \n );\n notification.open({\n message: \"Bạn có muốn xóa không ?\",\n key,\n btn,\n placement: \"bottomLeft\",\n });\n };\n\n const columns: ColumnsType = [\n {\n title: \"Tên mẫu giao diện\",\n key: \"abc1\",\n render: (item: ThemeTemplateModel) => (\n \n \n {item.name}\n \n \n ),\n },\n {\n title: \"THEME_KEY\",\n key: \"abc\",\n render: (item: ThemeTemplateModel) => (\n \n \n {item.slug}\n \n \n ),\n },\n ];\n\n useEffect(() => {\n handleSearch();\n }, [filterModel]);\n useEffect(() => {\n document.title = \"Mẫu giao diện\";\n }, []);\n\n return (\n
    \n \n \n {\n setFilterModel({ ...filterModel, slug: e.target.value });\n }}\n >\n \n \n \n \n \n \n \n \n 0\n ? true\n : false\n }\n >\n }\n >\n Xóa {\n selectedRowsKeys.idList.length.toString()} dòng\n \n \n
    \n );\n};\n\nexport default ThemeTemplatePage;\n","import { Modal } from \"antd\";\nimport { RootState } from \"app.store\";\nimport { useEffect, useState } from \"react\";\nimport { shallowEqual, useDispatch, useSelector } from \"react-redux\";\nimport { setMceModal } from \"states/global-value/global-value.slice\";\nimport { MceEditor } from \"./mce-editor\";\n\nexport function MceEditorModal() {\n const dispatch = useDispatch();\n const mceModal = useSelector(\n (state: RootState) => state.globalValue.mceModal,\n shallowEqual\n );\n const [content, setContent] = useState();\n useEffect(() => {\n if (mceModal.show) {\n setContent(mceModal.value);\n }\n }, [mceModal.show]);\n return (\n {\n mceModal.onChange && mceModal.onChange(content);\n dispatch(setMceModal({ show: false }));\n }}\n visible={mceModal.show}\n onCancel={() => {\n dispatch(setMceModal({ show: false }));\n }}\n width={800}\n >\n {\n setContent(value);\n }}\n />\n \n );\n}\n","export interface TimezoneModel {\n id: string;\n displayName: string;\n}\n\nexport interface SystemConfigModel {\n name: string;\n hostUrl: string;\n timeZone: string;\n ianaTimeZone: string;\n notificationEmails: string[];\n separateProductEachBranch: boolean;\n loginType: string;\n}\nexport const LoginTypeConst = {\n LoginPhone: \"LoginPhone\",\n LoginEmail: \"LoginEmail\"\n}\nexport const LoginTypeTextList = [LoginTypeConst.LoginEmail,LoginTypeConst.LoginPhone];\n","import { SaveOutlined } from \"@ant-design/icons\";\nimport {\n Button,\n Card,\n Checkbox,\n Col,\n Form,\n Input,\n message,\n Modal,\n Row,\n Select,\n Tabs,\n} from \"antd\";\nimport { Store } from \"antd/lib/form/interface\";\nimport { useEffect, useState } from \"react\";\nimport { useDispatch } from \"react-redux\";\nimport {\n DefaultErrorMessage,\n Successfully,\n UpdateDataSuccessfully,\n NotificationText,\n Save,\n TimeZone,\n} from \"shared/constants/define-localization\";\nimport { t, CoreResource } from \"shared/plugins/localization\";\nimport { setLoading } from \"states/global-value/global-value.slice\";\nimport {\n getSystemConfig,\n getTimeZones,\n updateSystemConfig,\n} from \"states/system-setting/system-setting.api\";\nimport {\n LoginTypeTextList,\n SystemConfigModel,\n TimezoneModel,\n} from \"states/system-setting/system-setting.models\";\n\nexport function SystemConfig() {\n const [form] = Form.useForm();\n const dispatch = useDispatch();\n const [timeZoneList, setTimeZoneList] = useState([]);\n\n const getConfig = async () => {\n try {\n const res = await getSystemConfig();\n form.setFieldsValue(res.data);\n } catch (error) {\n message.error(\n error?.response?.data?.error?.message ??\n \"Lỗi hệ thống\"\n );\n }\n };\n\n const onFinish = async (values: Store) => {\n dispatch(setLoading(true));\n try {\n let payload = {\n hostUrl: values.hostUrl,\n name: values.name,\n timeZone: values.timeZone,\n notificationEmails: values.notificationEmails,\n separateProductEachBranch: values.separateProductEachBranch,\n loginType: values.loginType,\n } as SystemConfigModel;\n await updateSystemConfig(payload);\n dispatch(setLoading(false));\n Modal.success({\n title: \"Thành công\",\n content: \"Cập nhật thành công\",\n });\n } catch (error) {\n dispatch(setLoading(false));\n Modal.error({\n title: \"Thông báo\",\n content:\n error?.response?.data?.error?.message ??\n \"Lỗi hệ thống\",\n });\n }\n };\n const onSaved = () => {\n form.submit();\n };\n useEffect(() => {\n getTimeZones().then((res) => {\n setTimeZoneList(res.data);\n });\n getConfig();\n }, []);\n\n return (\n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Mỗi chi nhánh có sản phẩm khác nhau\n \n \n \n option.children\n .toLowerCase()\n .indexOf(input.toLowerCase()) >= 0\n }\n >\n {LoginTypeTextList.map((loginType) => (\n \n {loginType}\n \n ))}\n\n \n \n \n \n \n \n \n \n
    \n );\n}\n","import { useEffect, useState } from \"react\";\n\nimport { Table, Row, Col, Button, Input, message, Select } from \"antd\";\n\nimport { ColumnsType } from \"antd/lib/table\";\nimport { PagedResult } from \"states/paged-result-model\";\nimport { useDebouncedCallback } from \"use-debounce/lib\";\n\nimport {\n SearchProductRequestModel,\n ProductModel,\n} from \"states/product/product.models\";\nimport {\n getAllVariationsApi,\n searchProductApi,\n} from \"states/product/product.api\";\nimport { ProductCategoryModel } from \"states/product-category/product-category.models\";\nimport { getProductCategoryListApi } from \"states/product-category/product-category.api\";\nimport { t, CoreResource } from \"shared/plugins/localization\";\nimport { DefaultErrorMessage } from \"shared/constants/define-localization\";\nimport { RemovedEntityModel } from \"shared/models/removed-entity-model\";\nimport { formatMoney } from \"shared/plugins/string-helper\";\nimport { useDispatch } from \"react-redux\";\nimport { WareHouseModel } from \"states/ware-house/ware-house.models\";\nimport { getWareHouseList } from \"states/ware-house/ware-house.api\";\nimport { setProductStockModal } from \"states/global-value/global-value.slice\";\nimport { SearchOutlined } from \"@ant-design/icons\";\nimport { ProductName } from \"shared/components/product/product-name\";\n\nconst { Option } = Select;\nconst ProductStockPage = () => {\n const dispatch = useDispatch();\n const [selectedRowsKeys, setSelectedRowsKeys] = useState<\n RemovedEntityModel\n >({\n idList: [],\n });\n const [isLoadingList, setIsLoadingList] = useState(false);\n const [pagedResults, setPagedResults] = useState(\n {} as PagedResult\n );\n const [filterModel, setFilterModel] = useState({\n includeAccessory: true,\n includeChildrenUnitProduct: true,\n includeChildrenVariationProduct: true,\n page: 1,\n pageSize: 20,\n });\n const [productCategories, setProductCategories] = useState<\n ProductCategoryModel[]\n >([]);\n const [wareHouses, setWareHouses] = useState([]);\n\n const [variationModal, setVariationModal] = useState<{\n model: ProductModel[];\n visible: boolean;\n onClose: (isLoadingList?: boolean) => void;\n }>({\n model: [] as ProductModel[],\n visible: false,\n onClose: (isLoadingList?: boolean) => {\n setVariationModal({ ...variationModal, visible: false });\n if (isLoadingList) {\n gotoPage(1,20);\n }\n },\n });\n\n const rowSelection = {\n selectedRowsKeys,\n onChange: (selectedRowKeys: any) => {\n setSelectedRowsKeys({ ...selectedRowsKeys, idList: selectedRowKeys });\n },\n };\n const getProductCategoryies = async () => {\n try {\n const res = await getProductCategoryListApi();\n setProductCategories(res.data);\n } catch (error) {\n message.error(error?.response?.data?.error?.message ?? \"Lỗi hệ thống\");\n }\n };\n const onEmptySelection = () => {\n setSelectedRowsKeys({ ...selectedRowsKeys, idList: [] });\n };\n\n const gotoPage = async (page: number, pageSize:number) => {\n setIsLoadingList(true);\n const result = await searchProductApi({ ...filterModel, page,pageSize });\n result.data.results.forEach((m) => (m.key = m.id.toString()));\n setPagedResults(result.data);\n setIsLoadingList(false);\n };\n const handleSearch = useDebouncedCallback(() => {\n gotoPage(1,20);\n }, 500);\n\n const _handleClickVariationModal = async (product: ProductModel) => {\n const res = await getAllVariationsApi(product.id);\n setVariationModal({ ...variationModal, model: res.data, visible: true });\n };\n\n const columns: ColumnsType = [\n {\n title: \"Mã hàng\",\n dataIndex: \"skuCode\",\n key: \"skuCode\",\n width: \"150px\",\n render: (skuCode: string, item) => skuCode,\n },\n {\n title: \"Tên sản phẩm\",\n dataIndex: \"websiteName\",\n key: \"websiteName\",\n render: (websiteName: string, item) => ,\n },\n {\n title: \"Giá bán\",\n dataIndex: \"price\",\n key: \"price\",\n render: (price: string, item) => formatMoney(item.price),\n },\n {\n title: \"Giá nhập\",\n dataIndex: \"costPrice\",\n key: \"costPrice\",\n render: (costPrice: string, item) => formatMoney(item.costPrice),\n },\n {\n title: \"Tồn kho\",\n dataIndex: \"allstock\",\n key: \"allstock\",\n render: (allstock: string, item) => (\n <>\n Tồn{\" \"}\n {item.inventories\n .map((m) => m.totalStockQuantity)\n .reduce((a, b) => a + b, 0)}{\" \"}\n {\n dispatch(\n setProductStockModal({\n show: true,\n productStocks: item.inventories,\n })\n );\n }}\n type=\"link\"\n icon={}\n />\n \n ),\n },\n {\n title: \"Tồn thực tế\",\n dataIndex: \"stock\",\n key: \"stock\",\n render: (stock: string, item) => (\n <>\n Tồn{\" \"}\n {item.inventories\n .map((m) => m.onHandQuantity)\n .reduce((a, b) => a + b, 0)}\n \n ),\n },\n ];\n\n useEffect(() => {\n handleSearch();\n }, [filterModel]);\n\n useEffect(() => {\n getProductCategoryies();\n getWareHouseList().then((res) => {\n setWareHouses(res.data);\n });\n document.title = \"Check tồn kho\";\n }, []);\n\n return (\n
    \n \n \n {\n setFilterModel({ ...filterModel, keyword: e.target.value });\n }}\n >\n \n \n {\n setFilterModel({\n ...filterModel,\n categoryIds: value ? [value] : [],\n });\n }}\n allowClear\n value={\n filterModel?.categoryIds && filterModel.categoryIds.length > 0\n ? filterModel.categoryIds[0]\n : undefined\n }\n showSearch\n filterOption={(input, option: any) =>\n option.children.toLowerCase().indexOf(input.toLowerCase()) >= 0\n }\n >\n {productCategories &&\n productCategories.map((productCate) => (\n \n ))}\n \n \n \n \n \n \n
    \n );\n};\n\nexport default ProductStockPage;\n","import React, { useState, useEffect } from \"react\";\nimport { Table, Row, Col, Button, message, Drawer, notification } from \"antd\";\nimport { DeleteOutlined, PlusCircleOutlined } from \"@ant-design/icons\";\nimport { ColumnsType } from \"antd/lib/table\";\nimport { WareHouseModel } from \"states/ware-house/ware-house.models\";\nimport { Link } from \"react-router-dom\";\nimport {\n getWareHouseList,\n removeWareHouse,\n} from \"states/ware-house/ware-house.api\";\nimport {\n ADD_WARE_HOUSE_ROUTE,\n UPDATE_WARE_HOUSE_ROUTE,\n} from \"shared/constants/routes\";\nimport { RemovedEntityModel } from \"shared/models/removed-entity-model\";\n\nconst WareHousePage = () => {\n const [selectedRowsKeys, setSelectedRowsKeys] = useState<\n RemovedEntityModel\n >({\n idList: [],\n });\n const [isLoadingList, setIsLoadingList] = useState(false);\n const [pagedResults, setPagedResults] = useState([]);\n\n const rowSelection = {\n selectedRowsKeys,\n onChange: (selectedRowKeys: any) => {\n setSelectedRowsKeys({ ...selectedRowsKeys, idList: selectedRowKeys });\n },\n };\n\n const onEmptySelection = () => {\n setSelectedRowsKeys({ ...selectedRowsKeys, idList: [] });\n };\n\n const loadWareHouseList = async () => {\n setIsLoadingList(true);\n try {\n const res = await getWareHouseList();\n const wareHouseList = res.data;\n wareHouseList.forEach((wareHouse) => {\n wareHouse.key = wareHouse.id.toString();\n });\n setPagedResults(wareHouseList);\n } catch {\n message.error(\"Lỗi hệ thống\");\n }\n setIsLoadingList(false);\n };\n\n useEffect(() => {\n loadWareHouseList();\n }, []);\n\n const onRemoveBtn = () => {\n const key = `open${Date.now()}`;\n const btn = (\n {\n try {\n await removeWareHouse(selectedRowsKeys);\n notification.close(key);\n setSelectedRowsKeys({ ...selectedRowsKeys, idList: [] });\n loadWareHouseList();\n message.success(\"Cập nhật thành công\");\n } catch (error) {\n message.error(\n error?.response?.data?.error?.message ??\n \"Lỗi hệ thống\"\n );\n }\n }}\n >\n Xóa\n \n );\n notification.open({\n message: \"Bạn có muốn xóa không ?\",\n key,\n btn,\n placement: \"bottomLeft\",\n });\n };\n\n const columns: ColumnsType = [\n {\n title: \"Tên\",\n dataIndex: \"name\",\n key: \"name\",\n render: (name: string, item) => (\n \n {name}\n \n ),\n },\n ];\n return (\n
    \n \n \n \n \n \n \n \n \n \n 0\n ? true\n : false\n }\n >\n }\n >\n Xóa {selectedRowsKeys.idList.length.toString()} dòng\n \n \n
    \n );\n};\n\nexport default WareHousePage;\n","import { RollbackOutlined, SaveOutlined } from \"@ant-design/icons\";\nimport {\n Breadcrumb,\n Button,\n Card,\n Checkbox,\n Col,\n Input,\n message,\n Row,\n Select,\n Typography,\n} from \"antd\";\nimport React, { useEffect, useState } from \"react\";\nimport { useDispatch } from \"react-redux\";\nimport { Link, useHistory, useParams } from \"react-router-dom\";\nimport {\n Back,\n DefaultErrorMessage,\n Save,\n UpdateDataSuccessfully,\n Information,\n Name,\n IsActive,\n} from \"shared/constants/define-localization\";\nimport { t, CoreResource } from \"shared/plugins/localization\";\nimport { setLoading } from \"states/global-value/global-value.slice\";\nimport {\n addWareHouse,\n getWareHouseById,\n updateWareHouse,\n} from \"states/ware-house/ware-house.api\";\nimport { WareHouseModel } from \"states/ware-house/ware-house.models\";\nimport {\n ADD_WARE_HOUSE_ROUTE,\n WARE_HOUSE_ROUTE,\n} from \"shared/constants/routes\";\nimport { getDistrictList, getProvinceList, getWardList } from \"states/address/address.api\";\nimport {\n DistrictModel,\n ProvinceModel,\n WardModel,\n} from \"states/address/address.models\";\n\ninterface RouteParams {\n id: string;\n}\n\nexport function AddUpdateWareHouse() {\n const history = useHistory();\n const { id } = useParams();\n const [model, setModel] = useState({} as WareHouseModel);\n const [isUpdateMode, setIsUpdateMode] = useState(false);\n const [provinces, setProvinces] = useState(\n [] as ProvinceModel[]\n );\n const [districts, setDistricts] = useState(\n [] as DistrictModel[]\n );\n const [wards, setWards] = useState([] as WardModel[]);\n const getProvinces = async () => {\n let result = await getProvinceList();\n setProvinces(result.data);\n };\n const getDistricts = async (provinceCode: string) => {\n let result = await getDistrictList(provinceCode);\n setDistricts(result.data);\n };\n const getWards = async (districtCode: string) => {\n let result = await getWardList(districtCode);\n setWards(result.data);\n };\n const dispatch = useDispatch();\n\n const getWareHouse = async () => {\n try {\n const res = await getWareHouseById(Number(id));\n if(res.data.address?.provinceCode !== null){\n await getDistricts(res.data.address?.provinceCode??\"\");\n }\n if(res.data.address?.districtCode !== null){\n await getWards(res.data.address?.districtCode??\"\");\n }\n setModel(res.data);\n } catch (error) {\n message.error(\n error?.response?.data?.error?.message ??\n \"Lỗi hệ thống\"\n );\n }\n };\n\n const onSaved = async () => {\n dispatch(setLoading(true));\n try {\n if (isUpdateMode) {\n await updateWareHouse(model);\n } else {\n await addWareHouse({ ...model, id: 0 });\n }\n message.success(\"Cập nhật thành công\");\n history.go(0);\n } catch (error) {\n message.error(\n error?.response?.data?.error?.message ??\n \"Lỗi hệ thống\"\n );\n }\n dispatch(setLoading(false));\n };\n const handleChangeAddress = (ev: React.ChangeEvent) => {\n const { name, value } = ev.target;\n setModel({\n ...model,\n address: {\n ...model.address,\n [name]: value,\n },\n });\n };\n useEffect(() => {\n if (document.location.href.indexOf(ADD_WARE_HOUSE_ROUTE) > -1) {\n setIsUpdateMode(false);\n } else {\n setIsUpdateMode(true);\n getWareHouse();\n }\n getProvinces();\n }, []);\n\n return (\n
    \n \n \n \n \n Kho hàng\n \n \n {isUpdateMode ? \"Cập nhật\" : \"Thêm\"} kho hàng\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {\"Tên\"}: \n {\n setModel({\n ...model,\n name: e.target.value,\n });\n }}\n placeholder={\"Tên\"}\n >\n \n \n Số điện thoại: \n {\n setModel({\n ...model,\n phoneNumber: e.target.value,\n });\n }}\n placeholder=\"Số điện thoại\"\n >\n \n \n Tỉnh / thành phố: \n {\n let result = option?.children\n ?.toString()\n ?.toLowerCase()\n ?.indexOf(input?.toLowerCase())??-1;\n return result >= 0\n }\n }\n onChange={(value) =>{\n setDistricts([]);\n setWards([]);\n let province = [...provinces].find(m=> m.provinceCode === value);\n if(province !== undefined){\n getDistricts(province.provinceCode);\n }\n setModel({...model,address:{\n ...model.address,\n provinceCode:value??\"\",\n provinceName:province?.name??\"\",\n districtCode:undefined,\n districtName:undefined,\n wardCode: undefined,\n wardName:undefined,\n }})\n }}\n >\n {provinces?.map((pr) => (\n \n {pr.name}\n \n ))}\n \n \n \n Quận / huyện: \n {\n let result = option?.children\n ?.toString()\n ?.toLowerCase()\n ?.indexOf(input?.toLowerCase())??-1;\n return result >= 0\n }\n }\n onChange={(value) =>{\n setWards([]);\n let district = [...districts].find(m=> m.districtCode === value);\n if(district !== undefined){\n getWards(district.districtCode);\n }\n setModel({...model,address:{\n ...model.address,\n districtCode:value??\"\",\n districtName:district?.name??\"\",\n wardCode: undefined,\n wardName:undefined,\n }})\n }}\n >\n {districts?.map((dt) => (\n \n {dt.name}\n \n ))}\n \n \n \n Phường / xã: \n {\n let result = option?.children\n ?.toString()\n ?.toLowerCase()\n ?.indexOf(input?.toLowerCase())??-1;\n return result >= 0\n }\n }\n onChange={(value) =>{\n let ward = [...wards].find(m=> m.wardCode === value);\n setModel({...model,address:{\n ...model.address,\n wardCode:value??\"\",\n wardName:ward?.name??\"\"\n }})\n }}\n >\n {wards?.map((wd) => (\n \n {wd.name}\n \n ))}\n \n \n \n Số nhà: \n \n \n \n {\n setModel({ ...model, isActive: e.target.checked });\n }}\n >\n {t(CoreResource, IsActive)}\n \n \n \n \n \n \n
    \n );\n}\n","import { ShopOutlined } from \"@ant-design/icons\";\nimport { Modal, Table } from \"antd\";\nimport { ColumnsType } from \"antd/lib/table\";\nimport { RootState } from \"app.store\";\nimport { shallowEqual, useDispatch, useSelector } from \"react-redux\";\nimport { setProductStockModal } from \"states/global-value/global-value.slice\";\nimport { InventoryModel } from \"states/product/product.models\";\n\nexport function ProductStockModal() {\n const dispatch = useDispatch();\n const productStockModal = useSelector(\n (state: RootState) => state.globalValue.productStockModal,\n shallowEqual\n );\n\n const columns: ColumnsType = [\n {\n title: \"Kho hàng\",\n dataIndex: \"wareHouse\",\n key: \"wareHouse\",\n render: (wareHouse: string, item) => (\n <>\n {item.wareHouse.name}\n \n ),\n },\n {\n title: \"Tồn kho\",\n dataIndex: \"stock\",\n key: \"stock\",\n render: (stock: string, item) => <>{item.totalStockQuantity},\n },\n {\n title: \"Thực tế\",\n dataIndex: \"stock\",\n key: \"stock\",\n render: (stock: string, item) => <>{item.onHandQuantity},\n },\n {\n title: \"Có thể bán\",\n dataIndex: \"ordered\",\n key: \"ordered\",\n render: (ordered: string, item) => <>{item.totalReadyForSaleQuantity},\n },\n {\n title: \"Hàng sắp về\",\n dataIndex: \"upcoming\",\n key: \"upcoming\",\n render: (upcoming: string, item) => <>{item.upComingQuantity},\n },\n ];\n\n return (\n {\n dispatch(setProductStockModal({ ...productStockModal, show: false }));\n }}\n visible={productStockModal.show}\n onCancel={() => {\n dispatch(setProductStockModal({ ...productStockModal, show: false }));\n }}\n width={800}\n >\n \n \n );\n}\n","import { AddressModel } from \"shared/models/address-model\";\nimport { BranchModel } from \"states/branch/branch.models\";\nimport { CustomerModel } from \"states/customer/customer.models\";\nimport {\n ProductModel,\n WholesalePriceType,\n} from \"states/product/product.models\";\nimport { StaffModel } from \"states/staff/staff.models\";\nimport { WareHouseModel } from \"states/ware-house/ware-house.models\";\n\nexport interface OrderModel {\n key: string;\n id: string;\n orderNumber: string;\n subTotal: number;\n discountAmount: number;\n taxes: number;\n taxRate: number;\n paymentDone: boolean;\n shippingFee: number;\n totalAmount: number;\n paidAmount: number;\n note: string;\n tipAmount: number;\n couponCode?: string;\n cartPromotionName?: string;\n status: string;\n type: string;\n staff?: StaffModel;\n processingStaff?: StaffModel;\n customer: CustomerModel;\n branch: BranchModel;\n wareHouse: WareHouseModel;\n orderItems: OrderItemModel[];\n orderPayments: OrderPaymentModel[];\n orderProcessings: OrderProcessingModel[];\n orderPackingLists: OrderPackingListModel[];\n creationTime: Date;\n lastModificationTime: Date;\n requestPickupTime: Date;\n}\n\nexport interface OrderItemModel {\n id: string;\n product: ProductModel;\n priceTotal: number;\n quantity: number;\n shippedQuantity: number;\n listedPrice: number;\n modifiers: OrderItemModel[];\n}\n\nexport interface SearchOrderRequestModel {\n keyword?: string;\n orderStatus?: string[];\n paymentStatus?: string[];\n staffs?: number[];\n fromDate?: Date;\n toDate?: Date;\n branchId?: number;\n page: number;\n pageSize: number;\n}\n\nexport interface OrderPaymentModel {\n id: string;\n amount: number;\n orderId: string;\n referenceId: string;\n ipAddress: string;\n paymentNote: string;\n paymentMethod: string;\n extensionFields: string;\n creationTime: Date;\n paymentGatewayCode: string;\n paymentStatus: string;\n}\n\nexport interface OrderProcessingModel {\n id: string;\n creator: string;\n description: string;\n staff?: StaffModel;\n creationTime: Date;\n ipAddress: string;\n}\n\nexport interface OrderPackingListModel {\n id: string;\n orderId: string;\n shippingAddress?: AddressModel;\n type: string;\n status: string;\n notes?: string;\n requestedPickupTime?: Date;\n confirmedPickupTime?: Date;\n collectionAmount: number;\n billOfLadingCode: string;\n shippingCompanyCode?: string;\n orderPackingListItems: OrderPackingListItemModel[];\n}\n\nexport interface OrderPackingListItemModel {\n id: string;\n orderItemId: string;\n product: ProductModel;\n shippedQuantity: number;\n}\n\nexport function calculateSubTotal(order: OrderModel) {\n order.subTotal = order.orderItems\n .map((m) => getOrderItemPriceWithModifierTotal(m))\n .reduce((a, b) => a + b, 0);\n calculateTotal(order);\n}\nexport function calculateTotal(order: OrderModel) {\n order.totalAmount =\n order.subTotal + order.taxes + order.shippingFee - order.discountAmount;\n}\n\nexport function getOrderItemPriceWithModifierTotal(item: OrderItemModel) {\n return (\n item.priceTotal +\n item.modifiers.map((mod) => mod.priceTotal).reduce((a, b) => a + b, 0)\n );\n}\n\nexport function getProductPriceTotal(\n product: ProductModel,\n quantity: number = 1,\n listedPriceSubtotal: number = 0\n) {\n if (listedPriceSubtotal > 0 && !product.isModifier) {\n const priceBySubTotalItem = product.priceBySubTotal?.items.find(\n (m) =>\n m.subTotalFrom <= listedPriceSubtotal &&\n m.subTotalTo >= listedPriceSubtotal\n );\n if (priceBySubTotalItem) {\n return priceBySubTotalItem.sellingPrice * quantity;\n }\n }\n\n if (quantity > 1 && !product.isModifier) {\n const wholesaleItem = product.wholesale?.items.find(\n (m) => m.quantityFrom <= quantity && m.quantityTo >= quantity\n );\n if (wholesaleItem) {\n return wholesaleItem.priceType === WholesalePriceType.Total\n ? wholesaleItem.sellingPrice\n : wholesaleItem.sellingPrice * quantity;\n }\n }\n\n return product.sellingPrice * quantity;\n}\n\nexport function getOrderListedPriceSubTotal(order: OrderModel) {\n return order.orderItems\n .map(\n (m) =>\n m.listedPrice * m.quantity +\n m.modifiers.map((mod) => mod.priceTotal).reduce((a, b) => a + b, 0) *\n m.quantity\n )\n .reduce((a, b) => a + b, 0);\n}\n\nexport function processOrderItemPrice(order: OrderModel) {\n order.orderItems.forEach((item) => {\n item.listedPrice = item.product.price ?? 0;\n item.modifiers.forEach((mod) => {\n mod.listedPrice = mod.product.price ?? 0;\n });\n });\n order.orderItems.forEach((item) => {\n item.priceTotal = getProductPriceTotal(\n item.product,\n item.quantity,\n getOrderListedPriceSubTotal(order)\n );\n item.modifiers.forEach((mod) => {\n mod.priceTotal = getProductPriceTotal(mod.product);\n });\n });\n}\n\nexport abstract class OrderConst {\n public static status = {\n pending: \"Pending\",\n onOrder: \"OnOrder\",\n shipping: \"Shipping\",\n received: \"Received\",\n completed: \"Completed\",\n cancel: \"Cancel\",\n returning: \"Returning\",\n returned: \"Returned\",\n };\n public static orderType = {\n online: \"Online\",\n directSales: \"DirectSales\",\n };\n}\n\nexport abstract class OrderShippingConst {\n public static status = {\n pending: \"Pending\",\n shipping: \"Shipping\",\n received: \"Received\",\n cancel: \"Cancel\",\n returning: \"Returning\",\n returned: \"Returned\",\n };\n public static shippingType = {\n delivery: \"Delivery\",\n pickup: \"Pickup\",\n };\n public static ShippingCompany = {\n ghtk: \"Ghtk\",\n viettelPost: \"ViettelPost\",\n ghn: \"Ghn\",\n other: \"Other\",\n };\n}\n\nexport abstract class OrderPaymentConst {\n public static method = {\n cod: \"Cod\",\n card: \"Card\",\n cash: \"Cash\",\n transfer: \"Transfer\",\n };\n public static status = {\n pending: \"Pending\",\n done: \"Done\",\n };\n}\n","import {\n ORDER_API_APPLY_COUPON,\n ORDER_API_EXPORT,\n ORDER_API_SEARCH_MY_ORDER,\n ORDER_PAYMENT_API,\n} from \"./../../shared/constants/api-endpoint\";\nimport {\n ORDER_API,\n ORDER_API_CALCULATE_SHIPPING_FEE,\n ORDER_API_SEARCH,\n} from \"shared/constants/api-endpoint\";\nimport { apiClient } from \"shared/plugins/http-service\";\nimport { PagedResult } from \"states/paged-result-model\";\nimport { SearchOrderRequestModel, OrderModel } from \"./order.models\";\n\nexport const searchOrder = async (\n searchOrderRequestModel: SearchOrderRequestModel\n) => {\n const createResponse = await apiClient.postHttp>(\n `${ORDER_API_SEARCH}`,\n searchOrderRequestModel\n );\n return createResponse;\n};\n\nexport const exportOrder = async (\n searchOrderRequestModel: SearchOrderRequestModel\n) => {\n const createResponse = await apiClient.postHttp(\n `${ORDER_API_EXPORT}`,\n searchOrderRequestModel\n );\n return createResponse;\n};\n\nexport const getOrderById = async (id: string) => {\n return await apiClient.getHttp(`${ORDER_API}/${id}`);\n};\n\nexport const assignOrderStaffAPI = async (id: string, staffId: number) => {\n return await apiClient.postHttp(\n `${ORDER_API}/${id}/assign_staff`,\n undefined,\n { params: { staffId } }\n );\n};\n\nexport const updateOrderCancelAPI = async (id: string) => {\n return await apiClient.postHttp(`${ORDER_API}/${id}/cancel_order`, {});\n};\n\nexport const verifyOrderAPI = async (id: string) => {\n return await apiClient.postHttp(`${ORDER_API}/${id}/verify_order`, {});\n};\n\nexport const completeOrderPaymentAPI = async (orderPaymentId: string) => {\n return await apiClient.postHttp(\n `${ORDER_PAYMENT_API}/${orderPaymentId}/complete`\n );\n};\n","import { Tag } from \"antd\";\nimport { OrderConst } from \"states/order/order.models\";\n\nexport interface IOrderStatusTagProps {\n status: string;\n}\n\nexport function OrderStatusTag(props: IOrderStatusTagProps) {\n switch (props.status) {\n case OrderConst.status.pending:\n return (\n \n Đang xử lý\n \n );\n case OrderConst.status.onOrder:\n return (\n \n Đã xác thực\n \n );\n case OrderConst.status.shipping:\n return (\n \n Đang giao\n \n );\n case OrderConst.status.received:\n return (\n \n Đã nhận\n \n );\n case OrderConst.status.completed:\n return (\n \n Hoàn thành\n \n );\n case OrderConst.status.returning:\n return (\n \n Đang hoàn\n \n );\n case OrderConst.status.returned:\n return (\n \n Đã hoàn\n \n );\n default:\n return (\n \n Hủy\n \n );\n }\n}\n","import { useCallback } from \"react\";\nimport { Select } from \"antd\";\nimport { OrderStatusTag } from \"./order-status-tag\";\nimport { OrderConst } from \"states/order/order.models\";\n\ninterface IOrderStatusSelectorProps {\n orderStatus?: string[];\n onChange?: (orderStatus: string[]) => void;\n}\nconst { Option } = Select;\nexport const OrderStatusSelector = (props: IOrderStatusSelectorProps) => {\n const { orderStatus, onChange } = props;\n const _handleOnChange = useCallback(\n (value: string[]) => {\n onChange && onChange(value);\n },\n [onChange]\n );\n return (\n \n \n \n \n \n \n \n \n \n \n );\n};\n","import { Avatar, Col, Divider, Empty, Row, Select, Spin } from \"antd\";\nimport React, { useEffect } from \"react\";\nimport { shallowEqual, useSelector } from \"react-redux\";\nimport { StaffModel } from \"states/staff/staff.models\";\nimport { staffListSelector } from \"states/staff/staff.slice\";\nimport { formatPhoneNumber } from \"shared/plugins/string-helper\";\nimport { DefaultOptionType } from \"antd/lib/select\";\nexport interface IStaffSelectorProps {\n value?: number | number[];\n isMultiple?: boolean;\n onChange?: (values?: StaffModel | StaffModel[]) => void;\n bordered?: boolean;\n textAlign?: \"right\";\n}\n\nexport function StaffSelector(props: IStaffSelectorProps) {\n const { value, isMultiple, onChange, bordered, textAlign } = props;\n const staffList = useSelector(staffListSelector, shallowEqual);\n useEffect(() => {\n if (!value && staffList.length === 1 && onChange) {\n if (isMultiple) {\n onChange(staffList);\n } else {\n onChange(staffList[0]);\n }\n }\n }, [staffList]);\n\n return (\n \n {\n if (onChange) {\n if (!isMultiple) {\n const staff = staffList.find((m) => m.id === e);\n onChange(staff);\n return;\n }\n if (!e) {\n onChange([]);\n return;\n }\n const ids = e as number[];\n let staffs = [...staffList].filter((staff) =>\n ids.includes(staff.id)\n );\n onChange(staffs);\n }\n }}\n showSearch\n filterOption={(input, option: any) =>\n option.title?.toLowerCase().indexOf(input?.toLowerCase()) >= 0\n }\n mode={isMultiple ? \"multiple\" : undefined}\n allowClear\n bordered={bordered}\n options={staffList.map(\n (staff) =>\n ({\n key: staff.id,\n value: staff.id,\n title: `${staff.lastName} ${staff.firstName} ${formatPhoneNumber(\n staff?.phone\n )}`,\n label: (\n \n \n \n {staff?.lastName} {staff?.firstName}\n {\" \"}\n {formatPhoneNumber(staff?.phone)}\n \n \n ),\n } as DefaultOptionType)\n )}\n notFoundContent={}\n >\n \n );\n}\n","import { Tag } from \"antd\";\nimport { OrderPaymentConst } from \"states/order/order.models\";\n\nexport interface IOrderPaymentStatusTagProps {\n status: string;\n}\n\nexport function OrderPaymentStatusTag(props: IOrderPaymentStatusTagProps) {\n switch (props.status) {\n case OrderPaymentConst.status.pending:\n return (\n \n Đợi thanh toán\n \n );\n\n default:\n return (\n \n Hoàn tất\n \n );\n }\n}\n","import { Tag } from \"antd\";\nimport { OrderPaymentConst } from \"states/order/order.models\";\n\nexport interface IOrderPaymentMethodTagProps {\n method: string;\n}\n\nexport function OrderPaymentMethodTag(props: IOrderPaymentMethodTagProps) {\n switch (props.method) {\n case OrderPaymentConst.method.card:\n return (\n \n Thẻ visa / master / JCB\n \n );\n case OrderPaymentConst.method.cash:\n return (\n \n Tiền mặt\n \n );\n case OrderPaymentConst.method.cod:\n return (\n \n Thanh toán khi nhận hàng\n \n );\n\n default:\n return (\n \n Chuyển khoản\n \n );\n }\n}\n","import { FC, useState } from \"react\";\nimport { Button, Drawer, message, Modal, Popconfirm, Table, Tag } from \"antd\";\nimport {\n OrderPaymentConst,\n OrderPaymentModel,\n} from \"states/order/order.models\";\nimport { ColumnsType } from \"antd/lib/table\";\nimport momentTz from \"moment-timezone\";\nimport { shallowEqual, useSelector } from \"react-redux\";\nimport { formatMoney } from \"shared/plugins/string-helper\";\nimport {\n CoreResource,\n momentDateTimeFormat,\n t,\n} from \"shared/plugins/localization\";\nimport { selectCurrentBranch } from \"states/branch/branch.slice\";\nimport { OrderPaymentStatusTag } from \"./order-payment-status-tag\";\nimport { OrderPaymentMethodTag } from \"./order-payment-method-tag\";\nimport { completeOrderPaymentAPI } from \"states/order/order.api\";\nimport { UpdateDataSuccessfully } from \"shared/constants/define-localization\";\n\ninterface IOrderPaymentInfoModalProps {\n payments: OrderPaymentModel[];\n onModal: boolean;\n closeModal: () => void;\n onSuccess: (orderId: string) => Promise;\n}\nexport const OrderPaymentInfoModal: FC = (\n props\n) => {\n const { payments, onModal, closeModal, onSuccess } = props;\n const currentBranch = useSelector(selectCurrentBranch, shallowEqual);\n const [loading, setLoading] = useState(false);\n\n const handleCompletePayment = async (orderPaymentId: string) => {\n try {\n setLoading(true);\n await completeOrderPaymentAPI(orderPaymentId);\n Modal.success({\n title: \"Notification\",\n content: \"Cập nhật thành công\",\n afterClose: async () => {\n closeModal();\n await onSuccess(payments[0].orderId);\n },\n });\n setLoading(false);\n } catch (err) {\n message.error(\n err?.response?.data?.error?.message ??\n t(CoreResource, \"DefaultErrorMessage\")\n );\n setLoading(false);\n }\n };\n\n const columns: ColumnsType = [\n {\n title: \"Ngày tạo\",\n dataIndex: \"creationTime\",\n key: \"creationTime\",\n render: (creationTime: string, item) => (\n <>\n {momentTz\n .tz(item.creationTime, currentBranch.ianaTimeZone)\n .format(momentDateTimeFormat())}\n \n ),\n },\n {\n title: \"Số tiền\",\n dataIndex: \"amount\",\n key: \"amount\",\n render: (amount: string, item) => <>{formatMoney(item.amount)},\n },\n {\n title: \"Phương thức\",\n dataIndex: \"paymentMethod\",\n key: \"paymentMethod\",\n render: (paymentMethod: string, item) => (\n \n ),\n },\n {\n title: \"IP address\",\n dataIndex: \"ip\",\n key: \"ip\",\n render: (ip: string, item) => <>{item.ipAddress},\n },\n {\n title: \"Trạng thái\",\n dataIndex: \"paymentStatus\",\n key: \"paymentStatus\",\n render: (paymentStatus: string, item) => (\n \n ),\n },\n {\n title: \"Ghi chú\",\n dataIndex: \"paymentNote\",\n key: \"paymentNote\",\n render: (paymentNote: string, item) => <>{item.paymentNote},\n },\n {\n title: \"\",\n dataIndex: \"action\",\n key: \"action\",\n render: (_action, item) =>\n item.paymentStatus !== OrderPaymentConst.status.done ? (\n {\n handleCompletePayment(item.id);\n }}\n okText=\"Có\"\n cancelText=\"Không\"\n >\n {\n e.stopPropagation();\n }}\n >\n Hoàn tất\n \n \n ) : null,\n },\n ];\n return (\n {\n closeModal();\n }}\n visible={onModal}\n width={1024}\n >\n \n \n );\n};\n","import { FC } from \"react\";\nimport { Modal, Table } from \"antd\";\nimport { OrderProcessingModel } from \"states/order/order.models\";\nimport { ColumnsType } from \"antd/lib/table\";\nimport momentTz from \"moment-timezone\";\nimport { shallowEqual, useSelector } from \"react-redux\";\nimport { RootState } from \"app.store\";\nimport { momentDateTimeFormat } from \"shared/plugins/localization\";\n\ninterface IOrderProcessingModalProps {\n processings: OrderProcessingModel[];\n onModal: boolean;\n closeModal: () => void;\n}\nexport const OrderProcessingModal: FC = (props) => {\n const { processings, onModal, closeModal } = props;\n const currentTimeZone = useSelector(\n (state: RootState) => state.globalValue.ianaTimeZone,\n shallowEqual\n );\n\n const columns: ColumnsType = [\n {\n title: \"Thời gian\",\n dataIndex: \"creationTime\",\n key: \"creationTime\",\n render: (creationTime: string, item) => (\n <>\n {momentTz\n .tz(item.creationTime, currentTimeZone)\n .format(momentDateTimeFormat())}\n \n ),\n },\n {\n title: \"Mô tả\",\n dataIndex: \"description\",\n key: \"description\",\n render: (description: string, item) => <>{item.description},\n },\n {\n title: \"Người thực hiện\",\n dataIndex: \"paymentMethod\",\n key: \"paymentMethod\",\n render: (paymentMethod: string, item) => <>{item.creator},\n },\n {\n title: \"IP Address\",\n dataIndex: \"ip\",\n key: \"ip\",\n render: (ip: string, item) => <>{item.ipAddress},\n },\n ];\n return (\n {\n closeModal();\n }}\n visible={onModal}\n onCancel={() => {\n closeModal();\n }}\n width={800}\n >\n \n \n );\n};\n","import { Button, Modal } from \"antd\";\nimport { CoreResource, t } from \"shared/plugins/localization\";\nimport {\n DefaultErrorMessage,\n UpdateDataSuccessfully,\n} from \"shared/constants/define-localization\";\nimport { updateOrderCancelAPI } from \"states/order/order.api\";\nimport { CloseOutlined, WarningOutlined } from \"@ant-design/icons\";\ninterface IOrderCancelButtonProps {\n orderId: string;\n onSuccess: () => void;\n}\nexport function OrderCancelButton(props: IOrderCancelButtonProps) {\n const { orderId, onSuccess } = props;\n const handleChangeStatusOrderCancel = () => {\n Modal.confirm({\n title: \"Xác nhận\",\n icon: ,\n content: \"Bạn có chắc muốn hủy đơn hàng?\",\n okText: \"Hủy\",\n cancelText: \"Bỏ qua\",\n onOk: onSubmit,\n });\n };\n const onSubmit = async () => {\n try {\n await updateOrderCancelAPI(orderId);\n Modal.success({\n title: \"Thông báo\",\n content: \"Cập nhật thành công\",\n afterClose: () => {\n onSuccess();\n },\n });\n } catch (error: any) {\n Modal.error({\n title: \"Thông báo\",\n content:\n error?.response?.data?.error?.message ??\n \"Lỗi hệ thống\",\n });\n }\n };\n return (\n }\n block\n danger\n type=\"primary\"\n onClick={handleChangeStatusOrderCancel}\n >\n Hủy\n \n );\n}\n","import { ORDER_PACKING_LIST_API } from \"../../shared/constants/api-endpoint\";\nimport { apiClient } from \"shared/plugins/http-service\";\nimport { CreatedOrderPackingListModel } from \"./order-packing-list.models\";\n\nexport const createOrderPackingListApi = async (\n model: CreatedOrderPackingListModel\n) => {\n return await apiClient.postHttp(`${ORDER_PACKING_LIST_API}`, model);\n};\n\nexport const receivedPackingListApi = async (orderShippingId: string) => {\n return await apiClient.putHttp(\n `${ORDER_PACKING_LIST_API}/${orderShippingId}/received`\n );\n};\n\nexport const returningPackingListApi = async (orderShippingId: string) => {\n return await apiClient.putHttp(\n `${ORDER_PACKING_LIST_API}/${orderShippingId}/returning`\n );\n};\n\nexport const returnedPackingListApi = async (orderShippingId: string) => {\n return await apiClient.putHttp(\n `${ORDER_PACKING_LIST_API}/${orderShippingId}/returned`\n );\n};\n","import { Button, Modal } from \"antd\";\nimport { CoreResource, t } from \"shared/plugins/localization\";\nimport {\n DefaultErrorMessage,\n UpdateDataSuccessfully,\n} from \"shared/constants/define-localization\";\nimport { ExclamationCircleOutlined } from \"@ant-design/icons\";\nimport { receivedPackingListApi } from \"states/order-packing-list/order-packing-list.api\";\n\ninterface IOrderReceivedButtonProps {\n orderPackingListId: string;\n onSuccess: () => void;\n}\nexport const OrderReceivedButton = (props: IOrderReceivedButtonProps) => {\n const { orderPackingListId: orderShippingId, onSuccess } = props;\n const handleChangeStatusOrderReceived = async () => {\n Modal.confirm({\n title: \"Xác nhận\",\n icon: ,\n content: \"Bạn có chắc muốn chuyển trạng thái sang đã nhận?\",\n okText: \"Ok\",\n cancelText: \"Bỏ qua\",\n onOk: onSubmit,\n });\n };\n const onSubmit = async () => {\n try {\n await receivedPackingListApi(orderShippingId);\n Modal.success({\n title: \"Thông báo\",\n content: \"Cập nhật thành công\",\n afterClose: () => {\n onSuccess();\n },\n });\n } catch (error: any) {\n Modal.error({\n title: \"Thông báo\",\n content:\n error?.response?.data?.error?.message ??\n \"Lỗi hệ thống\",\n });\n }\n };\n return (\n \n );\n};\n","import { ExclamationCircleOutlined } from \"@ant-design/icons\";\nimport { Button, Modal } from \"antd\";\nimport {\n DefaultErrorMessage,\n UpdateDataSuccessfully,\n} from \"shared/constants/define-localization\";\nimport { CoreResource, t } from \"shared/plugins/localization\";\nimport { createOrderPackingListApi } from \"states/order-packing-list/order-packing-list.api\";\nimport { CreatedOrderPackingListItemModel } from \"states/order-packing-list/order-packing-list.models\";\nimport {\n OrderModel,\n OrderPackingListItemModel,\n OrderPackingListModel,\n OrderShippingConst,\n} from \"states/order/order.models\";\n\nexport interface IOrderShippingButtonProps {\n order: OrderModel;\n handleCreatePackingList: (model: OrderPackingListModel) => void;\n onSuccess: () => void;\n}\n\nexport function OrderShippingButton(props: IOrderShippingButtonProps) {\n const { order, handleCreatePackingList, onSuccess } = props;\n\n const handleChangeStatusOrderReadyForPickup = async () => {\n Modal.confirm({\n title: \"Xác nhận\",\n icon: ,\n content: \"Bạn có chắc muốn chuyển trạng thái sang đang giao?\",\n okText: \"Ok\",\n cancelText: \"Bỏ qua\",\n onOk: onSubmit,\n });\n };\n\n const onSubmit = async () => {\n try {\n const packingListItems: CreatedOrderPackingListItemModel[] = [];\n order.orderItems.forEach((orderItem) => {\n packingListItems.push({\n orderItemId: orderItem.id,\n });\n orderItem.modifiers.forEach((modifier) => {\n packingListItems.push({\n orderItemId: modifier.id,\n });\n });\n });\n await createOrderPackingListApi({\n orderPackingListItems: packingListItems,\n orderPackingListId: order.orderPackingLists[0].id,\n collectionAmount: 0,\n customerPayFee: false,\n fee: 0,\n shippingCompanyCode: \"\",\n });\n Modal.success({\n title: \"Thông báo\",\n content: \"Cập nhật thành công\",\n afterClose: () => {\n onSuccess();\n },\n });\n } catch (error: any) {\n Modal.error({\n title: \"Thông báo\",\n content:\n error?.response?.data?.error?.message ??\n \"Lỗi hệ thống\",\n });\n }\n };\n\n return order.orderPackingLists[0].type ===\n OrderShippingConst.shippingType.delivery ? (\n {\n const packingListItems: OrderPackingListItemModel[] = [];\n order.orderItems.forEach((orderItem) => {\n packingListItems.push({\n orderItemId: orderItem.id,\n product: orderItem.product,\n shippedQuantity: orderItem.quantity,\n } as OrderPackingListItemModel);\n orderItem.modifiers.forEach((modifier) => {\n packingListItems.push({\n orderItemId: modifier.id,\n product: modifier.product,\n shippedQuantity: modifier.quantity,\n } as OrderPackingListItemModel);\n });\n });\n handleCreatePackingList({\n id: order.orderPackingLists[0].id,\n orderId: order.id,\n type: order.orderPackingLists[0].type,\n status: order.orderPackingLists[0].status,\n billOfLadingCode: order.orderPackingLists[0].billOfLadingCode,\n confirmedPickupTime: order.orderPackingLists[0].confirmedPickupTime,\n requestedPickupTime: order.orderPackingLists[0].requestedPickupTime,\n shippingAddress: order.orderPackingLists[0].shippingAddress,\n shippingCompanyCode:\n order.orderPackingLists[0].type ===\n OrderShippingConst.shippingType.delivery\n ? OrderShippingConst.ShippingCompany.other\n : undefined,\n orderPackingListItems: packingListItems,\n collectionAmount: 0,\n });\n }}\n >\n Giao hàng\n \n ) : (\n {\n handleChangeStatusOrderReadyForPickup();\n }}\n >\n Sẵn sàng để nhận\n \n );\n}\n","import { FC } from \"react\";\nimport { Button, Modal } from \"antd\";\nimport { CoreResource, t } from \"shared/plugins/localization\";\nimport {\n DefaultErrorMessage,\n UpdateDataSuccessfully,\n} from \"shared/constants/define-localization\";\nimport { ExclamationCircleOutlined } from \"@ant-design/icons\";\nimport { returnedPackingListApi } from \"states/order-packing-list/order-packing-list.api\";\n\ninterface IOrderReturnedButtonProps {\n orderShippingId: string;\n onSuccess: () => void;\n}\nexport const OrderReturnedButton: FC = (props) => {\n const { orderShippingId, onSuccess } = props;\n const handleChangeStatusOrderShippingReturned = async () => {\n Modal.confirm({\n title: \"Xác nhận\",\n icon: ,\n content: \"Đơn hàng đã được hoàn về kho?\",\n okText: \"Ok\",\n cancelText: \"Bỏ qua\",\n onOk: onSubmit,\n });\n };\n const onSubmit = async () => {\n try {\n await returnedPackingListApi(orderShippingId);\n Modal.success({\n title: \"Thông báo\",\n content: \"Cập nhật thành công\",\n afterClose: () => {\n onSuccess();\n },\n });\n } catch (error: any) {\n Modal.error({\n title: \"Thông báo\",\n content:\n error?.response?.data?.error?.message ??\n \"Lỗi hệ thống\",\n });\n }\n };\n return (\n \n Đã hoàn\n \n );\n};\n","import { FC } from \"react\";\nimport { Button, Modal } from \"antd\";\nimport { CoreResource, t } from \"shared/plugins/localization\";\nimport {\n DefaultErrorMessage,\n UpdateDataSuccessfully,\n} from \"shared/constants/define-localization\";\nimport { ExclamationCircleOutlined } from \"@ant-design/icons\";\nimport { returningPackingListApi } from \"states/order-packing-list/order-packing-list.api\";\n\ninterface IOrderReturningButtonProps {\n orderShippingId: string;\n onSuccess: () => void;\n}\nexport const OrderReturningButton: FC = (props) => {\n const { orderShippingId, onSuccess } = props;\n const handleChangeStatusOrderShippingReturning = async () => {\n Modal.confirm({\n title: \"Xác nhận\",\n icon: ,\n content: \"Bạn có chắc muốn duyệt hoàn đơn hàng?\",\n okText: \"Ok\",\n cancelText: \"Bỏ qua\",\n onOk: onSubmit,\n });\n };\n const onSubmit = async () => {\n try {\n await returningPackingListApi(orderShippingId);\n Modal.success({\n title: \"Thông báo\",\n content: \"Cập nhật thành công\",\n afterClose: () => {\n onSuccess();\n },\n });\n } catch (error: any) {\n Modal.error({\n title: \"Thông báo\",\n content:\n error?.response?.data?.error?.message ??\n \"Lỗi hệ thống\",\n });\n }\n };\n return (\n \n Duyệt hoàn\n \n );\n};\n","import { Button, Modal } from \"antd\";\nimport { CoreResource, t } from \"shared/plugins/localization\";\nimport {\n DefaultErrorMessage,\n UpdateDataSuccessfully,\n} from \"shared/constants/define-localization\";\nimport { verifyOrderAPI } from \"states/order/order.api\";\nimport { CheckOutlined, WarningOutlined } from \"@ant-design/icons\";\ninterface IOrderVerifyButtonProps {\n orderId: string;\n onSuccess: () => void;\n}\nexport function OrderVerifyButton(props: IOrderVerifyButtonProps) {\n const { orderId, onSuccess } = props;\n const handleVerifyOrder = () => {\n Modal.confirm({\n title: \"Xác nhận\",\n icon: ,\n content: \"Bạn có chắc muốn xác thực đơn hàng?\",\n okText: \"Có\",\n cancelText: \"Bỏ qua\",\n onOk: onSubmit,\n });\n };\n const onSubmit = async () => {\n try {\n await verifyOrderAPI(orderId);\n Modal.success({\n title: \"Thông báo\",\n content: \"Cập nhật thành công\",\n afterClose: () => {\n onSuccess();\n },\n });\n } catch (error: any) {\n Modal.error({\n title: \"Thông báo\",\n content:\n error?.response?.data?.error?.message ??\n \"Lỗi hệ thống\",\n });\n }\n };\n return (\n }\n block\n type=\"primary\"\n onClick={handleVerifyOrder}\n >\n Xác thực đơn hàng\n \n );\n}\n","import { Row, Col } from \"antd\";\nimport {\n OrderConst,\n OrderModel,\n OrderPackingListModel,\n OrderShippingConst,\n} from \"states/order/order.models\";\nimport { OrderCancelButton } from \"./order-cancel-button\";\nimport { OrderReceivedButton } from \"./order-received-button\";\nimport { OrderShippingButton } from \"./order-shipping-button\";\nimport { OrderReturnedButton } from \"./order-returned-button\";\nimport { OrderReturningButton } from \"./order-returning-button\";\nimport { OrderVerifyButton } from \"./order-verify-button\";\n\nexport interface IOrderActionsProps {\n order: OrderModel;\n handleCreatePackingList: (model: OrderPackingListModel) => void;\n loadOrder: (orderId: string) => Promise;\n}\n\nexport function OrderActions(props: IOrderActionsProps) {\n const { order, handleCreatePackingList, loadOrder } = props;\n\n return (\n <>\n {order.type === OrderConst.orderType.online &&\n order.status === OrderConst.status.pending && (\n \n \n loadOrder(order.id)}\n />\n \n \n )}\n {order.type === OrderConst.orderType.online &&\n order.status === OrderConst.status.onOrder && (\n \n \n loadOrder(order.id)}\n />\n \n \n )}\n {order.type === OrderConst.orderType.online &&\n order.status === OrderConst.status.shipping && (\n \n \n loadOrder(order.id)}\n />\n \n \n )}\n {(order.status === OrderConst.status.pending ||\n order.status === OrderConst.status.onOrder) && (\n \n \n loadOrder(order.id)}\n />\n \n \n )}\n {order.status === OrderConst.status.shipping &&\n order.type === OrderConst.orderType.online &&\n order.orderPackingLists[0]?.type ===\n OrderShippingConst.shippingType.delivery && (\n \n \n loadOrder(order.id)}\n />\n \n \n )}\n {order.status === OrderConst.status.returning &&\n order.type === OrderConst.orderType.online &&\n order.orderPackingLists[0]?.type ===\n OrderShippingConst.shippingType.delivery && (\n \n \n loadOrder(order.id)}\n />\n \n \n )}\n \n );\n}\n","import {\n InfoCircleOutlined,\n EyeOutlined,\n UserOutlined,\n} from \"@ant-design/icons\";\nimport { Button, Row, Col, Tag } from \"antd\";\nimport momentTZ from \"moment-timezone\";\nimport { shallowEqual, useSelector } from \"react-redux\";\nimport { momentDateTimeFormat } from \"shared/plugins/localization\";\nimport {\n formatPersonName,\n formatPhoneNumber,\n} from \"shared/plugins/string-helper\";\nimport { selectCurrentBranch } from \"states/branch/branch.slice\";\nimport { OrderModel } from \"states/order/order.models\";\nimport { OrderStatusTag } from \"./order-status-tag\";\n\nexport interface IOrderDetailInfoProps {\n order: OrderModel;\n onViewOrAdd?: () => void;\n}\n\nexport function OrderDetailInfo(props: IOrderDetailInfoProps) {\n const { order, onViewOrAdd } = props;\n const currentBranch = useSelector(selectCurrentBranch, shallowEqual);\n\n return (\n <>\n
    \n
    \n Thông tin{\" \"}\n \n
    \n \n Mã đơn hàng:{\" \"}\n \n {order.orderNumber}\n \n \n {order.couponCode && (\n \n Coupon:{\" \"}\n \n \n {\" \"}\n {order.couponCode}\n \n \n \n )}\n {order.cartPromotionName && (\n \n Khuyến mãi:{\" \"}\n \n \n {\" \"}\n {order.cartPromotionName}\n \n \n \n )}\n \n Ngày tạo:\n \n {momentTZ\n .tz(order.creationTime, currentBranch?.ianaTimeZone)\n .format(momentDateTimeFormat())}\n \n \n \n Người tạo:\n \n {order.staff\n ? `NV: ${formatPersonName(\n order.staff.firstName,\n order.staff.lastName\n )}`\n : formatPersonName(\n order.customer?.firstName,\n order.customer?.lastName\n )}\n \n \n \n Chi nhánh: {order.branch?.name}\n \n \n Kho: {order.wareHouse?.name}\n \n \n Trạng thái:{\" \"}\n \n \n \n \n
    \n
    \n
    \n Khách hàng\n
    \n \n Họ tên:\n \n {formatPersonName(\n order.customer?.firstName,\n order.customer?.lastName\n )}\n \n \n \n Số điện thoại:\n {formatPhoneNumber(order.customer?.phoneNumber)}\n \n \n Email:\n {order.customer?.email}\n \n
    \n \n );\n}\n","import { DollarOutlined, EyeOutlined } from \"@ant-design/icons\";\nimport { Row, Col, Divider, Button } from \"antd\";\nimport { formatMoney } from \"shared/plugins/string-helper\";\nimport { OrderModel } from \"states/order/order.models\";\n\nexport interface IOrderPaymentInfoProps {\n order: OrderModel;\n onViewOrAdd: () => void;\n}\n\nexport function OrderPaymentInfo(props: IOrderPaymentInfoProps) {\n const { order, onViewOrAdd } = props;\n return (\n
    \n
    \n Thanh toán\n
    \n \n Tạm tính:\n {formatMoney(order.subTotal)}\n \n \n Tiền tip:\n {formatMoney(order.tipAmount)}\n \n \n Phí ship:\n {formatMoney(order.shippingFee)}\n \n \n Thuế:\n {formatMoney(order.taxes)}\n \n\n \n Giảm giá:\n {formatMoney(-order.discountAmount)}\n \n \n \n Tổng cộng:\n \n {formatMoney(order.totalAmount)}\n \n \n \n \n Đã trả:{\" \"}\n \n \n {formatMoney(order.paidAmount)}\n \n {order.paidAmount > order.totalAmount && (\n \n Tiền thừa:\n {formatMoney(order.paidAmount - order.totalAmount)}\n \n )}\n {order.paidAmount < order.totalAmount && (\n \n Tiền thiếu:\n \n {formatMoney(-order.paidAmount + order.totalAmount)}\n \n \n )}\n
    \n );\n}\n","import { Tag } from \"antd\";\nimport { OrderShippingConst } from \"states/order/order.models\";\n\nexport interface IOrderShippingStatusTagProps {\n status: string;\n}\n\nexport function OrderShippingStatusTag(props: IOrderShippingStatusTagProps) {\n switch (props.status) {\n case OrderShippingConst.status.pending:\n return (\n \n Đang xử lý\n \n );\n case OrderShippingConst.status.cancel:\n return (\n \n Hủy\n \n );\n case OrderShippingConst.status.received:\n return (\n \n Đã nhận\n \n );\n case OrderShippingConst.status.returning:\n return (\n \n Đang duyệt hoàn\n \n );\n case OrderShippingConst.status.returned:\n return (\n \n Đã hoàn\n \n );\n default:\n return (\n \n Đang giao\n \n );\n }\n}\n","import Icon from \"@ant-design/icons\";\nimport { Collapse, Space, Row, Col } from \"antd\";\nimport momentTZ from \"moment-timezone\";\nimport {\n OrderPackingListModel,\n OrderShippingConst,\n} from \"states/order/order.models\";\nimport { OrderShippingStatusTag } from \"./order-shipping-status-tag\";\nimport { useSelector, shallowEqual } from \"react-redux\";\nimport { momentDateTimeFormat } from \"shared/plugins/localization\";\nimport { selectCurrentBranch } from \"states/branch/branch.slice\";\nimport { formatMoney, formatPhoneNumber } from \"shared/plugins/string-helper\";\nimport { BoxOutlined } from \"shared/components/icons\";\n\nexport interface IOrderPackingListInfoProps {\n orderPackingList: OrderPackingListModel;\n onViewOrAdd: () => void;\n onSuccess: (orderId: string) => void;\n onOpenReturnedModal?: () => void;\n}\n\nexport function OrderPackingListInfo(props: IOrderPackingListInfoProps) {\n const { orderPackingList, onViewOrAdd, onSuccess, onOpenReturnedModal } =\n props;\n const currentBranch = useSelector(selectCurrentBranch, shallowEqual);\n return orderPackingList.type === OrderShippingConst.shippingType.delivery ? (\n
    \n \n \n
    \n Vận đơn{\" \"}\n
    \n \n \n }\n key={`packinglistInfo${orderPackingList.id}`}\n >\n <>\n \n Trạng thái:\n \n \n \n \n \n Địa chỉ:\n \n {orderPackingList?.shippingAddress?.street},{\" \"}\n {orderPackingList?.shippingAddress?.wardName}\n
    \n {orderPackingList?.shippingAddress?.districtName},{\" \"}\n {orderPackingList?.shippingAddress?.provinceName}\n \n \n \n Người nhận:\n \n {orderPackingList?.shippingAddress?.firstName}{\" \"}\n {orderPackingList?.shippingAddress?.lastName}\n
    \n {formatPhoneNumber(\n orderPackingList?.shippingAddress?.phoneNumber ?? \"\"\n )}\n \n \n \n Tiền thu hộ:\n {formatMoney(orderPackingList?.collectionAmount)}\n \n \n Nhà vận chuyển:\n {orderPackingList?.shippingCompanyCode}\n \n \n Mã vận đơn:\n \n {orderPackingList?.billOfLadingCode}\n \n \n \n \n
    \n
    \n ) : (\n
    \n
    \n Thông tin Pickup\n
    \n \n Giờ lấy hàng:\n \n {momentTZ\n .tz(\n orderPackingList.requestedPickupTime,\n currentBranch?.ianaTimeZone\n )\n .format(momentDateTimeFormat())}\n \n \n
    \n );\n}\n","import { Col, Input, message, Modal, Row, Select, Typography } from \"antd\";\nimport Table, { ColumnsType } from \"antd/lib/table\";\nimport { useState } from \"react\";\nimport { ProductName } from \"shared/components/product/product-name\";\nimport { UpdateDataSuccessfully } from \"shared/constants/define-localization\";\nimport { CoreResource, t } from \"shared/plugins/localization\";\nimport { createOrderPackingListApi } from \"states/order-packing-list/order-packing-list.api\";\nimport { CreatedOrderPackingListModel } from \"states/order-packing-list/order-packing-list.models\";\nimport {\n OrderPackingListItemModel,\n OrderPackingListModel,\n OrderShippingConst,\n} from \"states/order/order.models\";\n\nexport interface IOrderPackingListModalProps {\n openModal: boolean;\n closeModal: () => void;\n orderPackingListInfo: OrderPackingListModel;\n updateMode: boolean;\n onSuccess: (orderId: string) => Promise;\n onChangeModal: (newModal: IOrderPackingListModalProps) => Promise;\n}\n\nexport function OrderPackingListModal(props: IOrderPackingListModalProps) {\n const {\n openModal,\n closeModal,\n orderPackingListInfo,\n updateMode,\n onChangeModal,\n onSuccess,\n } = props;\n const [loading, setLoading] = useState(false);\n\n const handleCreatedPackingList = async () => {\n if (updateMode) {\n closeModal();\n return;\n }\n try {\n setLoading(true);\n let payload = {\n orderPackingListItems: orderPackingListInfo.orderPackingListItems?.map(\n (m) => ({\n orderItemId: m.orderItemId,\n })\n ),\n orderPackingListId: orderPackingListInfo.id,\n billOfLadingCode: orderPackingListInfo.billOfLadingCode,\n collectionAmount: 0,\n customerPayFee: false,\n fee: 0,\n shippingCompanyCode: orderPackingListInfo.shippingCompanyCode,\n pickUpAddressId: undefined,\n shippingOptionId: undefined,\n } as CreatedOrderPackingListModel;\n await createOrderPackingListApi(payload);\n Modal.success({\n title: \"Notification\",\n content: \"Cập nhật thành công\",\n afterClose: async () => {\n closeModal();\n await onSuccess(orderPackingListInfo.orderId);\n },\n });\n setLoading(false);\n } catch (err) {\n message.error(\n err?.response?.data?.error?.message ??\n t(CoreResource, \"DefaultErrorMessage\")\n );\n setLoading(false);\n }\n };\n\n const orderItemColumns: ColumnsType = [\n {\n title: \"#\",\n dataIndex: \"stt\",\n key: \"stt\",\n width: \"50px\",\n render: (stt: string, item, index) => <>{index + 1},\n },\n {\n title: \"SKU\",\n dataIndex: \"skuCode\",\n key: \"skuCode\",\n render: (skuCode: string, item) => item.product.skuCode,\n },\n {\n title: \"Tên sản phẩm\",\n dataIndex: \"name\",\n key: \"name\",\n render: (name: string, item) => ,\n },\n {\n title: \"Số lượng\",\n dataIndex: \"shippedQuantity\",\n key: \"shippedQuantity\",\n align: \"center\",\n render: (shippedQuantity: string, item, index) => shippedQuantity,\n },\n ];\n\n return (\n handleCreatedPackingList()}\n confirmLoading={loading}\n onCancel={closeModal}\n >\n \n \n \n Mã vận đơn: \n {\n onChangeModal({\n ...props,\n orderPackingListInfo: {\n ...orderPackingListInfo,\n billOfLadingCode: e.target.value,\n },\n });\n }}\n readOnly={updateMode}\n />\n \n \n Nhà vận chuyển: \n {\n onChangeModal({\n ...props,\n orderPackingListInfo: {\n ...orderPackingListInfo,\n shippingCompanyCode: value,\n },\n });\n }}\n value={orderPackingListInfo?.shippingCompanyCode}\n >\n \n Khác\n \n \n \n\n
    \n Địa chỉ:\n
    \n {orderPackingListInfo?.shippingAddress?.street},{\" \"}\n {orderPackingListInfo?.shippingAddress?.wardName}\n
    \n {orderPackingListInfo?.shippingAddress?.districtName},{\" \"}\n {orderPackingListInfo?.shippingAddress?.provinceName}\n
    \n
    \n \n \n \n \n
    \n \n );\n}\n","import React, { useState, useEffect } from \"react\";\nimport { shallowEqual, useDispatch, useSelector } from \"react-redux\";\n\nimport {\n Table,\n Row,\n Col,\n Input,\n DatePicker,\n Button,\n Space,\n Tooltip,\n Popconfirm,\n Dropdown,\n Menu,\n} from \"antd\";\n\nimport { ColumnsType } from \"antd/lib/table\";\nimport { PagedResult } from \"states/paged-result-model\";\nimport { useDebouncedCallback } from \"use-debounce/lib\";\n\nimport {\n SearchOrderRequestModel,\n OrderModel,\n OrderItemModel,\n OrderPaymentModel,\n OrderProcessingModel,\n OrderPackingListModel,\n OrderConst,\n getOrderItemPriceWithModifierTotal,\n} from \"states/order/order.models\";\nimport { exportOrder, getOrderById, searchOrder } from \"states/order/order.api\";\nimport momentTZ from \"moment-timezone\";\nimport { OrderStatusSelector } from \"./components/order-status-selector\";\nimport {\n momentDateFormat,\n momentDateTimeFormat,\n} from \"shared/plugins/localization\";\nimport { RemovedEntityModel } from \"shared/models/removed-entity-model\";\nimport { OrderStatusTag } from \"./components/order-status-tag\";\nimport {\n CloudDownloadOutlined,\n MoreOutlined,\n WarningOutlined,\n} from \"@ant-design/icons\";\nimport { formatMoney, formatPersonName } from \"shared/plugins/string-helper\";\nimport { ProductName } from \"shared/components/product/product-name\";\nimport { StaffSelector } from \"shared/components/staff/staff-selector\";\nimport { StaffModel } from \"states/staff/staff.models\";\nimport { fetchStaffList } from \"states/staff/staff.slice\";\nimport { OrderPaymentInfoModal } from \"./components/order-payment-info-modal\";\nimport { OrderProcessingModal } from \"./components/order-processing-modal\";\nimport { selectCurrentBranch } from \"states/branch/branch.slice\";\nimport { setLoading } from \"states/global-value/global-value.slice\";\nimport { getGlobalThemeSettingApi } from \"states/theme-setting/theme-setting.api\";\nimport { printTheOrder } from \"shared/hooks/use-printer\";\nimport { OrderActions } from \"./components/order-actions\";\nimport { OrderDetailInfo } from \"./components/order-detail-info\";\nimport { OrderPaymentInfo } from \"./components/order-payment-info\";\nimport { OrderPackingListInfo } from \"./components/order-packing-list-info\";\nimport {\n IOrderPackingListModalProps,\n OrderPackingListModal,\n} from \"./components/order-packing-list-modal\";\n\ninterface IOrderProcessingModal {\n openModal: boolean;\n closeModal: () => void;\n processing: OrderProcessingModel[];\n}\ninterface IOrderPaymentInfoModal {\n openModal: boolean;\n closeModal: () => void;\n paymentInfos: OrderPaymentModel[];\n}\n\nconst OrderPage = () => {\n const [selectedRowsKeys, setSelectedRowsKeys] = useState<\n RemovedEntityModel\n >({\n idList: [],\n });\n const [expandedRowsKeys, setExpandedRowsKeys] = useState([]);\n\n const dispatch = useDispatch();\n const currentBranch = useSelector(selectCurrentBranch, shallowEqual);\n\n const [isLoadingList, setIsLoadingList] = useState(false);\n const [pagedResults, setPagedResults] = useState(\n {} as PagedResult\n );\n\n const [logoPrint, setLogoPrint] = useState();\n\n const [filterModel, setFilterModel] = useState({\n branchId: currentBranch?.id ?? 0,\n page: 1,\n pageSize: 20,\n orderStatus: [],\n } as SearchOrderRequestModel);\n const rowSelection = {\n selectedRowsKeys,\n onChange: (selectedRowKeys: any) => {\n setSelectedRowsKeys({ ...selectedRowsKeys, idList: selectedRowKeys });\n },\n };\n\n const [paymentInfoModal, setPaymentInfoModal] =\n useState({\n openModal: false,\n closeModal: () => {\n setPaymentInfoModal({\n ...paymentInfoModal,\n openModal: false,\n paymentInfos: [],\n });\n },\n paymentInfos: [],\n });\n\n const [processingModal, setProcessingModal] = useState(\n {\n openModal: false,\n closeModal: () => {\n setProcessingModal({\n ...processingModal,\n openModal: false,\n processing: [],\n });\n },\n processing: [],\n }\n );\n\n const loadOrder = async (orderId: string) => {\n let result = await getOrderById(orderId);\n let orderList = [...pagedResults.results];\n let orderIndex = orderList.findIndex((m) => m.id === result.data.id);\n if (orderIndex < 0) return;\n orderList[orderIndex] = result.data;\n setPagedResults({ ...pagedResults, results: orderList });\n };\n\n const [shippingModal, setShippingModal] =\n useState({\n openModal: false,\n closeModal: () => {\n setShippingModal({\n ...shippingModal,\n openModal: false,\n orderPackingListInfo: {} as OrderPackingListModel,\n });\n },\n orderPackingListInfo: {} as OrderPackingListModel,\n onSuccess: async () => {},\n updateMode: false,\n onChangeModal: async (newModal: IOrderPackingListModalProps) => {\n setShippingModal(newModal);\n },\n });\n\n const gotoPage = async (page: number,pageSize:number) => {\n setIsLoadingList(true);\n const result = await searchOrder({\n ...filterModel,\n page,\n pageSize,\n branchId: currentBranch?.id ?? 0,\n });\n setPagedResults(result.data);\n setIsLoadingList(false);\n };\n\n const handleCreatePackingList = (model: OrderPackingListModel) => {\n setShippingModal({\n ...shippingModal,\n openModal: true,\n orderPackingListInfo: model,\n updateMode: false,\n });\n };\n const handleExportOrder = async () => {\n dispatch(setLoading(true));\n try {\n let result = await exportOrder({ ...filterModel });\n console.log(result.data);\n await saveByteArray(\"order.xlsx\", result.data);\n dispatch(setLoading(false));\n } catch (e) {\n dispatch(setLoading(false));\n }\n };\n const saveByteArray = async (reportName: string, data: any) => {\n var link = document.createElement(\"a\");\n link.href =\n \"data:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;base64,\" +\n data;\n var fileName = reportName;\n link.download = fileName;\n link.click();\n };\n const handleSearch = useDebouncedCallback(() => {\n gotoPage(1,20);\n }, 500);\n const columns: ColumnsType = [\n {\n title: \"Mã đơn hàng\",\n dataIndex: \"invoiceNumber\",\n key: \"invoiceNumber\",\n render: (invoiceNumber: string, item) => (\n \n {\n if (!expandedRowsKeys.find((m) => m === item.id)) {\n setExpandedRowsKeys([item.id]);\n } else {\n setExpandedRowsKeys([]);\n }\n }}\n >\n {item.orderNumber}{\" \"}\n {item.note && (\n \n \n \n \n \n )}\n \n \n ),\n },\n {\n title: \"Ngày tạo\",\n dataIndex: \"creationTime\",\n key: \"creationTime\",\n render: (creationTime: Date) => (\n \n {momentTZ\n .tz(creationTime, currentBranch?.ianaTimeZone)\n .format(momentDateTimeFormat())}\n \n ),\n },\n {\n title: \"Khách hàng\",\n dataIndex: \"customer\",\n key: \"customer\",\n render: (supplier, item) =>\n item.customer\n ? formatPersonName(item.customer?.firstName, item.customer?.lastName)\n : \"\",\n },\n {\n title: \"Trạng thái\",\n dataIndex: \"orderStatus\",\n key: \"orderStatus\",\n render: (status: string, item) => ,\n },\n {\n title: \"\",\n dataIndex: \"actions\",\n key: \"actions\",\n render: (printBill: string, item) => (\n \n {/* {\n printTheOrder(item, logoPrint ?? \"\");\n }}\n >\n \n */}\n {item.status !== OrderConst.status.completed &&\n item.status !== OrderConst.status.cancel &&\n item.status !== OrderConst.status.returned && (\n \n \n \n }\n >\n \n */}\n \n \n {\n setExpandedRowsKeys([...ex]);\n },\n }}\n rowKey={(_record, index) => _record.id.toString() ?? \"\"}\n >\n \n \n \n \n );\n};\n\nexport default OrderPage;\n","import { Modal } from \"antd\";\nimport { RootState } from \"app.store\";\nimport { useEffect } from \"react\";\nimport { shallowEqual, useDispatch, useSelector } from \"react-redux\";\nimport { setGlobalMessage } from \"states/global-value/global-value.slice\";\n\nexport function GlobalMessageModal() {\n const message = useSelector(\n (state: RootState) => state.globalValue.globalMessage,\n shallowEqual\n );\n const dispatch = useDispatch();\n\n useEffect(() => {\n if (message) {\n Modal.warning({\n title: \"Thông báo\",\n content: message,\n afterClose: () => {\n dispatch(setGlobalMessage(undefined));\n },\n });\n }\n }, [message]);\n return null;\n}\n","import { ProductModel } from \"states/product/product.models\";\n\nexport interface GetOrderReportChartModel{\n orderReportType: OrderReportType;\n branchId: number;\n}\nexport enum OrderReportType{\n Today,\n Yesterday,\n Week,\n Month,\n LastMonth\n}\nexport interface OrderReportChartModel{\n label:string;\n totals: Record;\n}\nexport interface OrderTotalReportModel{\n today:OrderReportModel;\n yesterday:OrderReportModel;\n week:OrderReportModel;\n month:OrderReportModel;\n lastMonth:OrderReportModel;\n}\nexport interface OrderReportModel{\n totalAmount: number;\n totalOrder: number;\n products: Record;\n}\nexport interface OrderReportTopProductModel{\n totalOrder:number;\n product:ProductModel;\n}","import {\n ORDER_REPORT_API_STATISTICAL,\n ORDER_REPORT_API_TYPE,\n} from \"./../../shared/constants/api-endpoint\";\nimport { apiClient } from \"shared/plugins/http-service\";\nimport { GetOrderReportChartModel, OrderReportChartModel, OrderTotalReportModel } from \"./order-report.models\";\n\nexport const orderReportType = async (getOrderReportChartModel: GetOrderReportChartModel\n) => {\n const createResponse = await apiClient.postHttp(\n `${ORDER_REPORT_API_TYPE}`,\n getOrderReportChartModel\n );\n return createResponse;\n};\n\nexport const getStatisticalOverview = async (branchId: number) => {\n return await apiClient.getHttp(`${ORDER_REPORT_API_STATISTICAL}`, {\n params:{\n branchId\n }\n });\n};\n\n","import {\n Avatar,\n Card,\n Col,\n List,\n Row,\n Select,\n Skeleton,\n Typography,\n} from \"antd\";\nimport * as React from \"react\";\nimport { useEffect, useState } from \"react\";\nimport \"./order-report.less\";\n\nimport { setLoading } from \"states/global-value/global-value.slice\";\n\nimport { shallowEqual, useDispatch, useSelector } from \"react-redux\";\nimport { Column } from \"@ant-design/charts\";\nimport { Content } from \"antd/lib/layout/layout\";\nimport Title from \"antd/lib/typography/Title\";\nimport { selectCurrentBranch } from \"states/branch/branch.slice\";\nimport {\n GetOrderReportChartModel,\n OrderReportChartModel,\n OrderReportTopProductModel,\n OrderReportType,\n OrderTotalReportModel,\n} from \"states/order-report/order-report.models\";\nimport {\n getStatisticalOverview,\n orderReportType,\n} from \"states/order-report/order-report.api\";\nimport {\n formatMoney,\n redirectFileLocalUrl,\n} from \"shared/plugins/string-helper\";\nimport { ProductName } from \"shared/components/product/product-name\";\nexport interface IOrderReportProps {}\n\nexport function OrderReport(props: IOrderReportProps) {\n const dispatch = useDispatch();\n const currentBranch = useSelector(selectCurrentBranch, shallowEqual);\n const [selectOrderType, setOrderType] = useState();\n const [orderReport, setOrderReport] = useState();\n const [reportChartOrder, setReportChartOrder] = useState<\n OrderReportChartModel[]\n >([] as OrderReportChartModel[]);\n\n const loadingTotalOrder = async () => {\n dispatch(setLoading(true));\n try {\n const res = await getStatisticalOverview(currentBranch.id);\n setOrderReport(res.data);\n dispatch(setLoading(false));\n } catch (e) {\n dispatch(setLoading(false));\n }\n };\n const loadingReportChartOrder = async () => {\n try {\n dispatch(setLoading(true));\n const res = await orderReportType({\n orderReportType: selectOrderType,\n branchId: currentBranch.id,\n } as GetOrderReportChartModel);\n setReportChartOrder(res.data);\n dispatch(setLoading(false));\n } catch (e) {\n dispatch(setLoading(false));\n }\n };\n\n useEffect(() => {\n loadingTotalOrder();\n loadingReportChartOrder();\n }, [currentBranch]);\n const renderProduct = (model: OrderReportTopProductModel) => {\n return (\n \n \n 0\n ? redirectFileLocalUrl(model.product.images[0])\n : \"\"\n }\n >\n {model.product.images?.length === 0\n ? model.product?.name.charAt(0)\n : \"\"}\n \n }\n title={\n <>\n \n

    {model.totalOrder} đơn hàng

    \n \n }\n />\n
    \n
    \n );\n };\n const bestSellerProduct = () => {\n let html = [];\n switch (selectOrderType) {\n case OrderReportType.Today:\n for (let [key, value] of Object.entries(\n orderReport?.today?.products ?? {}\n )) {\n html.push(renderProduct(value));\n }\n break;\n case OrderReportType.Yesterday:\n for (let [key, value] of Object.entries(\n orderReport?.yesterday?.products ?? {}\n )) {\n html.push(renderProduct(value));\n }\n break;\n case OrderReportType.Month:\n for (let [key, value] of Object.entries(\n orderReport?.month?.products ?? {}\n )) {\n html.push(renderProduct(value));\n }\n break;\n case OrderReportType.Week:\n for (let [key, value] of Object.entries(\n orderReport?.week?.products ?? {}\n )) {\n html.push(renderProduct(value));\n }\n break;\n case OrderReportType.LastMonth:\n for (let [key, value] of Object.entries(\n orderReport?.lastMonth?.products ?? {}\n )) {\n html.push(renderProduct(value));\n }\n break;\n }\n return html;\n };\n useEffect(() => {\n loadingReportChartOrder();\n }, [selectOrderType]);\n const config = {\n data: reportChartOrder?.map((m) => {\n return {\n type: m.label,\n totalAmount: Object.values(m.totals)[0],\n orderTotal: `${Object.keys(m.totals)[0]} đơn hàng`,\n };\n }),\n xField: \"type\",\n yField: \"totalAmount\",\n xLabel: \"t \",\n xAxis: { label: { autoRotate: false } },\n scrollbar: true,\n seriesField: \"orderTotal\",\n isGroup: true,\n meta: {\n type: { alias: \"\" },\n sales: { alias: \"₫\" },\n },\n };\n return (\n
    \n \n \n \n {currentBranch.name}\n \n \n \n \n {\n setOrderType(OrderReportType.Today);\n }}\n >\n
    \n Hôm nay\n
    \n
    \n \n {orderReport?.today?.totalOrder} đơn hàng\n \n
    \n
    \n \n {formatMoney(orderReport?.today?.totalAmount)}\n \n
    \n \n \n \n {\n setOrderType(OrderReportType.Yesterday);\n }}\n >\n
    \n Hôm qua\n
    \n
    \n \n {orderReport?.yesterday?.totalOrder} đơn hàng\n \n
    \n
    \n \n {formatMoney(orderReport?.yesterday?.totalAmount)}\n \n
    \n \n \n \n {\n setOrderType(OrderReportType.Week);\n }}\n >\n
    \n 7 ngày gần đây\n
    \n
    \n \n {orderReport?.week?.totalOrder} đơn hàng\n \n
    \n
    \n \n {formatMoney(orderReport?.week?.totalAmount)}\n \n
    \n \n \n \n {\n setOrderType(OrderReportType.Month);\n }}\n >\n
    \n Tháng này\n
    \n
    \n \n {orderReport?.month?.totalOrder} đơn hàng\n \n
    \n
    \n \n {formatMoney(orderReport?.month?.totalAmount)}\n \n
    \n \n \n \n {\n setOrderType(OrderReportType.LastMonth);\n }}\n >\n
    \n Tháng trước\n
    \n
    \n \n {orderReport?.lastMonth?.totalOrder} đơn hàng\n \n
    \n
    \n \n {formatMoney(orderReport?.lastMonth?.totalAmount)}\n \n
    \n \n \n \n
    \n \n \n \n {reportChartOrder && }\n \n \n \n \n \n {bestSellerProduct()}\n \n \n \n \n
    \n
    \n
    \n );\n}\n","import { FC, useState, useEffect } from \"react\";\nimport { Input, Modal, Form } from \"antd\";\nimport { Store } from \"antd/lib/form/interface\";\nimport { t, CoreResource } from \"shared/plugins/localization\";\nimport { ModifierGroupModel } from \"states/modifier-group/modifier-group.models\";\nimport { addModifierGroup, updateModifierGroup } from \"states/modifier-group/modifier-group.api\";\ninterface IModifierGroupModalProps {\n model: ModifierGroupModel;\n onModal: boolean;\n closeModal: () => void;\n onSuccess: () => void;\n isUpdate: boolean;\n}\nexport const ModifierGroupModalComponent: FC = (props) => {\n const { model, onModal, closeModal, onSuccess, isUpdate } = props;\n const [form] = Form.useForm();\n const [isLoading, setLoading] = useState(false);\n const handleCloseModal = () => closeModal();\n const onFinish = async (values: Store) => {\n setLoading(true);\n try {\n if (isUpdate) {\n let payload: ModifierGroupModel = {\n ...values,\n key: model.id.toString(),\n id: values.id,\n name: values.name,\n };\n await updateModifierGroup(payload);\n } else {\n let payload: ModifierGroupModel = {\n ...values,\n key: \"0\",\n id: 0,\n name: values.name,\n };\n await addModifierGroup(payload);\n }\n handleCloseModal();\n setLoading(false);\n onSuccess();\n Modal.success({\n title: \"Thông báo\",\n content: \"Cập nhật thành công\",\n });\n } catch (error) {\n Modal.error({\n title: \"Thông báo\",\n content:\n error?.response?.data?.error?.message ??\n \"Lỗi hệ thống\",\n });\n setLoading(false);\n }\n };\n\n const onSubmit = () => {\n form.submit();\n };\n const onReset = () => {\n form.resetFields();\n };\n const onFill = () => {\n form.setFieldsValue({\n id: model?.id,\n name: model?.name,\n });\n };\n\n useEffect(() => {\n if (!isUpdate) {\n onReset();\n } else {\n onFill();\n }\n }, [onModal]);\n\n return (\n \n {isUpdate ? `Update`: `Add`} modifier group\n \n }\n confirmLoading={isLoading}\n centered={true}\n visible={onModal}\n onOk={onSubmit}\n onCancel={handleCloseModal}\n okText={\"Lưu\"}\n cancelText={\"Hủy\"}\n >\n
    \n \n \n \n \n \n \n );\n};\n","import React, { FC, useState, useEffect } from \"react\";\nimport { useDispatch, useSelector, shallowEqual } from \"react-redux\";\n\nimport { Table, Row, Col, Button, message, Drawer, notification } from \"antd\";\n\nimport { DeleteOutlined, PlusCircleOutlined } from \"@ant-design/icons\";\nimport { ColumnsType } from \"antd/lib/table\";\n\nimport { t, CoreResource } from \"shared/plugins/localization\";\nimport { RemovedEntityModel } from \"shared/models/removed-entity-model\";\nimport { ModifierGroupModel } from \"states/modifier-group/modifier-group.models\";\nimport {\n fetchModifierGroupList,\n modifierGroupListSelector,\n} from \"states/modifier-group/modifier-group.slice\";\nimport { removeModifierGroup } from \"states/modifier-group/modifier-group.api\";\nimport { ModifierGroupModalComponent } from \"shared/components/modifier-group/modifier-group-modal\";\ninterface IModifierGroupProps {}\nconst ModifierGroupPage: FC = () => {\n const [selectedRowsKeys, setSelectedRowsKeys] = useState<\n RemovedEntityModel\n >({\n idList: [],\n });\n const dispatch = useDispatch();\n const [isModal, setModal] = useState(false);\n const [isUpdate, setUpdate] = useState(false);\n const [model, setModel] = useState(\n {} as ModifierGroupModel\n );\n const modifierGroupList = useSelector(\n modifierGroupListSelector,\n shallowEqual\n );\n const rowSelection = {\n selectedRowsKeys,\n onChange: (selectedRowKeys: any) => {\n setSelectedRowsKeys({ ...selectedRowsKeys, idList: selectedRowKeys });\n },\n };\n const onEmptySelection = () => {\n setSelectedRowsKeys({ ...selectedRowsKeys, idList: [] });\n };\n useEffect(() => {\n onRefreshData();\n }, []);\n const handleCloseModal = () => {\n setModal(false);\n };\n const handleAddModifierGroup = () => {\n setModel({} as ModifierGroupModel);\n setModal(true);\n setUpdate(false);\n };\n const onRefreshData = () => {\n dispatch(fetchModifierGroupList());\n };\n const onRemoveBtn = () => {\n const key = `open${Date.now()}`;\n const btn = (\n {\n try {\n await removeModifierGroup(selectedRowsKeys);\n notification.close(key);\n setSelectedRowsKeys({ ...selectedRowsKeys, idList: [] });\n onRefreshData();\n message.success(t(CoreResource, \"UpdateDataSuccessfully\"));\n } catch (error) {\n message.error(\n error?.response?.data?.error?.message ??\n t(CoreResource, \"DefaultErrorMessage\")\n );\n }\n }}\n >\n Xóa\n \n );\n notification.open({\n message: t(CoreResource, \"QuestionRemove\"),\n key,\n btn,\n placement: \"bottomLeft\",\n });\n };\n\n const columns: ColumnsType = [\n {\n title: \"Name\",\n dataIndex: \"name\",\n key: \"name\",\n render: (name: string, item) => (\n \n {\n setModel(item);\n setModal(true);\n setUpdate(true);\n }}\n >\n {name}\n \n \n ),\n },\n ];\n\n return (\n
    \n \n \n \n }\n >\n Add modifier group\n \n \n \n row.id}\n dataSource={modifierGroupList}\n size=\"small\"\n >\n 0\n ? true\n : false\n }\n >\n }\n >\n Remove ({selectedRowsKeys.idList.length})\n \n \n \n
    \n );\n};\n\nexport default ModifierGroupPage;\n","import { message, Modal } from \"antd\";\nimport {\n formatPersonName,\n formatPhoneNumber,\n redirectFileLocalUrl,\n} from \"shared/plugins/string-helper\";\nimport { OrderModel } from \"states/order/order.models\";\nimport moment from \"moment-timezone\";\nimport {\n momentDateFormat,\n momentDateTimeFormat,\n} from \"shared/plugins/localization\";\n\n// export default function usePrinter(ip: string) {\n// const [loading, setLoading] = useState(false);\n// const [success, setSuccess] = useState(false);\n// const [data, setData] = useState(\"\");\n// let printer: any;\n// let printCallback: any;\n// let ePosDev: any;\n// let handler: any;\n// const loadScriptEpsonPrint = () => {\n// let url = redirectFileLocalUrl(\"/epson/js/epos-2.18.0.js\");\n// if (document.querySelector(\"script[src='\" + url + \"']\") !== null) {\n// return;\n// }\n// const script = document.createElement(\"script\");\n// script.src = url;\n// document.head.appendChild(script);\n// };\n// const loadMeta = () => {\n// if (process.env.NODE_ENV === \"production\") {\n// if (\n// document.querySelector(\"meta[http-equiv='Content-Security-Policy']\") !==\n// null\n// ) {\n// return;\n// }\n// const meta = document.createElement(\"meta\");\n// meta.setAttribute(\"http-equiv\", \"Content-Security-Policy\");\n// meta.setAttribute(\"content\", \"upgrade-insecure-requests\");\n// document.head.appendChild(meta);\n// }\n// };\n// const callback_deleteDevice = (errorCode: any) => {\n// //Terminates connection with device\n// ePosDev.disconnect();\n// };\n// const cbConnect = (data: any) => {\n// if (data === \"OK\" || data === \"SSL_CONNECT_OK\") {\n// ePosDev.createDevice(\n// \"local_printer\",\n// ePosDev.DEVICE_TYPE_PRINTER,\n// { crypto: false, buffer: false },\n// cbCreateDevice_printer\n// );\n// } else {\n// alert(\"Error connect\");\n// setLoading(false);\n// }\n// };\n// const cbCreateDevice_printer = (devObj: any, retcode: any) => {\n// if (devObj === null) {\n// alert(retcode);\n// }\n// if (retcode === \"OK\") {\n// printer = devObj;\n// printer.timeout = 60000;\n// printer.onreceive = (response: any) => {\n// if (response.printjobid.length > 0) {\n// } else {\n// }\n// };\n// printer.onerror = function (response: any) {};\n// printer.ononline = function () {};\n// printer.onoffline = function () {};\n// printer.onpoweroff = function () {};\n// printer.oncoverok = function () {};\n// printer.oncoveropen = function () {};\n// printer.onpaperok = function () {};\n// printer.onpapernearend = function () {};\n// printer.onpaperend = function () {};\n// printer.ondrawerclosed = function () {};\n// printer.ondraweropen = function () {};\n// printer.onbatterylow = function () {};\n// printer.onbatteryok = function () {};\n// printer.onbatterystatuschange = function (response: any) {\n// if (response > 0) {\n// }\n// };\n// if (printCallback) {\n// printCallback();\n// printCallback = null;\n// }\n// setLoading(false);\n// }\n// };\n// const connectPrinter = () => {\n// setLoading(true);\n// // if(ip !== \"\" && ip !== undefined){\n// // onLogin();\n// // }\n// handler = setTimeout(() => {\n// if (ePosDev == null) {\n// ePosDev = new window.epson.ePOSDevice();\n// }\n// ePosDev.ondisconnect = function () {\n// printer = null;\n// };\n// if (ip === \"\" || ip === undefined) {\n// return;\n// }\n// ePosDev.connect(\n// ip,\n// window.location.protocol === \"https:\" ? \"8043\" : \"8008\",\n// cbConnect\n// );\n// }, 500);\n// };\n// const onLogin = () => {\n// let wOpen = window.open(`${window.location.protocol}//${ip}`) as Window;\n// wOpen.addEventListener(\n// \"load\",\n// () => {\n// console.log(window.atob(\"dGhpc2lzdW5zYWZl\"));\n// const xhttp = new XMLHttpRequest();\n// xhttp.open(\n// \"GET\",\n// `${window.location.protocol}//epson:epson@${ip}`,\n// true\n// );\n// xhttp.send();\n// wOpen.close();\n// },\n// true\n// );\n// };\n\n// const sendPrintDoc = () => {\n// if (printer) {\n// doSendPrintDoc();\n// } else {\n// printCallback = doSendPrintDoc;\n// connectPrinter();\n// }\n// if (ePosDev != null) {\n// ePosDev.deleteDevice(printer, callback_deleteDevice);\n// }\n// };\n// const doSendPrintDoc = () => {\n// if (printer) {\n// printer.setXmlString(data);\n// printer.send();\n// message.success(\"Print order successfully\");\n// }\n// };\n// useEffect(() => {\n// // loadMeta();\n// loadScriptEpsonPrint();\n// }, []);\n// useEffect(() => {\n// if (data !== \"\") {\n// // setSuccess(false);\n// sendPrintDoc();\n// }\n// }, [data]);\n// useEffect(() => {\n// connectPrinter();\n// return () => handler && clearTimeout(handler);\n// }, [ip, handler]);\n\n// return [loading, success, setData] as const;\n// }\n\nexport function printTheOrder(order: OrderModel, logo: string) {\n let ePosDev: any;\n let printer: any;\n const printData = formatOrderToPrint(order, logo);\n\n const onPrinterCreated = (devObj: any, retcode: any) => {\n if (devObj === null) {\n alert(retcode);\n }\n if (retcode === \"OK\") {\n printer = devObj;\n printer.timeout = 60000;\n printer.onreceive = (response: any) => {\n if (response.printjobid.length > 0) {\n } else {\n }\n };\n printer.onerror = function (response: any) {};\n printer.ononline = function () {};\n printer.onoffline = function () {};\n printer.onpoweroff = function () {};\n printer.oncoverok = function () {};\n printer.oncoveropen = function () {};\n printer.onpaperok = function () {};\n printer.onpapernearend = function () {};\n printer.onpaperend = function () {};\n printer.ondrawerclosed = function () {};\n printer.ondraweropen = function () {};\n printer.onbatterylow = function () {};\n printer.onbatteryok = function () {};\n printer.onbatterystatuschange = function (response: any) {\n if (response > 0) {\n }\n };\n printer.setXmlString(printData);\n printer.send();\n message.success(\"Print order successfully\");\n\n ePosDev.deleteDevice(printer, () => {\n ePosDev.disconnect();\n });\n }\n };\n\n const onConnected = (connectResult: any) => {\n if (connectResult === \"OK\" || connectResult === \"SSL_CONNECT_OK\") {\n ePosDev.createDevice(\n \"local_printer\",\n ePosDev.DEVICE_TYPE_PRINTER,\n { crypto: false, buffer: false },\n onPrinterCreated\n );\n } else {\n ePosDev.disconnect();\n Modal.warning({\n title: \"Warning\",\n content: (\n <>\n The printer can't be connected, Please click{\" \"}\n \n here\n {\" \"}\n to setup connection\n \n ),\n });\n }\n };\n\n const connectPrinterAndPrint = () => {\n if (ePosDev == null) {\n ePosDev = new window.epson.ePOSDevice();\n }\n ePosDev.ondisconnect = function () {\n printer = null;\n };\n if (\n order.branch.defaultPrinterIp === \"\" ||\n order.branch.defaultPrinterIp === undefined\n ) {\n return;\n }\n ePosDev.connect(\n order.branch.defaultPrinterIp,\n window.location.protocol === \"https:\" ? \"8043\" : \"8008\",\n onConnected\n );\n };\n\n connectPrinterAndPrint();\n}\n\nexport function testPrinterConnection(ip: string) {\n let ePosDev = new window.epson.ePOSDevice();\n ePosDev.connect(\n ip,\n 8043,\n // window.location.protocol === \"https:\" ? \"8043\" : \"8008\",\n (connectResult: any) => {\n if (connectResult !== \"OK\" && connectResult !== \"SSL_CONNECT_OK\") {\n ePosDev.disconnect();\n Modal.warning({\n title: \"Warning\",\n content: (\n <>\n The printer can't be connected, Please click{\" \"}\n \n here\n {\" \"}\n to setup connection\n \n ),\n });\n } else {\n ePosDev.disconnect();\n }\n }\n );\n}\n\nfunction formatOrderToPrint(order: OrderModel, logo: string) {\n return `\n \n \n ${logo}\n \n \n ${order.branch?.address?.street} ${\n order.branch?.address?.provinceName\n }, ${order.branch?.address?.stateCode} ${\n order.branch?.address?.postalCode\n }\n \n ${\n order.branch?.phone && formatPhoneNumber(order.branch?.phone)\n } \n ********************* \n \n WEB ORDER / TAKE-OUT \n \n ********************* \n \n ${formatPersonName(\n order.customer?.firstName,\n order.customer?.lastName\n )} \n \n \n Order time: ${\n order.creationTime &&\n moment(order.creationTime)\n .tz(order.branch.ianaTimeZone)\n .format(momentDateTimeFormat())\n } \n Notes: Pick-up \n Request pick up: \n \n \n ${\n order.requestPickupTime\n ? `${moment(order.requestPickupTime)\n .tz(order.branch.ianaTimeZone)\n .format(momentDateFormat())} ${moment(\n order.requestPickupTime\n )\n .tz(order.branch.ianaTimeZone)\n .format(\"hh:mm A\")}`\n : \"\"\n } \n \n \n ${order.orderItems.map(\n (item) =>\n `${formatNamePrint(\n `${item.product?.name} x${item.quantity}`\n )} ${\n item?.modifiers?.length > 0\n ? `*` +\n item?.modifiers.map((modi) => {\n return `${modi.product?.name}`;\n }) +\n ` `\n : ``\n } `\n )}\n \n \n \n \n \n Item count: ${order.orderItems\n .map((m) => m.quantity)\n ?.reduce((a, b) => a + b, 0)} \n \n ${\n order.orderNumber\n }\n Printed: ${moment(new Date())\n .tz(order.branch.ianaTimeZone)\n .format(momentDateTimeFormat())} \n \n `;\n}\n\nfunction formatNamePrint(name: string) {\n name = name.trim();\n if (name.indexOf(\" \") > -1) {\n name = name.replaceAll(\" \", \" \");\n }\n if (name !== \"\" && name.length > 24 && name.split(\" \").length > 3) {\n let nameArray = name.split(\" \");\n nameArray = nameArray.map((n, index) => {\n if (index === 2) {\n n = n + \" \";\n }\n return n;\n });\n return nameArray.join(\" \");\n }\n return name;\n}\n","import { useEffect, useState } from \"react\";\nimport { shallowEqual, useDispatch, useSelector } from \"react-redux\";\nimport { UN_AUTH_PATH } from \"shared/constants/routes\";\nimport { fetchCurrentStaff, fetchProfile } from \"states/account/account.slice\";\nimport { fetchBranchList } from \"states/branch/branch.slice\";\nimport {\n fetchSystemConfig,\n setLoadingApp,\n} from \"states/global-value/global-value.slice\";\nimport {\n fetchLocalization,\n fetchClientLanguages,\n} from \"states/localization/localization.slice\";\nimport history from \"shared/plugins/history\";\nimport { RootState } from \"app.store\";\nimport { testPrinterConnection } from \"./use-printer\";\n\nexport function useFetchAppData() {\n const [testedPrinter, setTestedPrinter] = useState(false);\n const dispatch = useDispatch();\n const isLogin = useSelector(\n (state: RootState) => state.account.isAuthentication,\n shallowEqual\n );\n const isUnAuthPath = () => {\n return (\n UN_AUTH_PATH.filter((m) => history.location.pathname.startsWith(m))\n .length > 0\n );\n };\n const currentBranch = useSelector(\n (state: RootState) => state.branch.currentBranch,\n shallowEqual\n );\n const fetchAdminPageData = () => {\n dispatch(fetchClientLanguages());\n dispatch(fetchProfile());\n dispatch(fetchCurrentStaff());\n dispatch(fetchBranchList());\n dispatch(fetchSystemConfig());\n };\n\n useEffect(() => {\n Promise.all([dispatch(fetchLocalization())])\n .then(() => {\n dispatch(setLoadingApp(false));\n })\n .catch(() => {\n dispatch(setLoadingApp(false));\n });\n\n if (!isUnAuthPath()) {\n fetchAdminPageData();\n }\n }, []);\n\n useEffect(() => {\n if (isLogin) {\n fetchAdminPageData();\n }\n }, [isLogin]);\n\n useEffect(() => {\n if (\n currentBranch &&\n currentBranch.defaultPrinterIp &&\n currentBranch.defaultPrinterIp.length > 0 &&\n !testedPrinter\n ) {\n setTestedPrinter(true);\n testPrinterConnection(currentBranch.defaultPrinterIp);\n }\n }, [currentBranch]);\n}\n","export interface TransportationModel {\n transportationCode: string;\n transportationName: string;\n}\nexport interface TransportationState {\n transportationList: TransportationModel[];\n}\n\nexport abstract class TransportationCodeConst {\n public static Ghtk = \"Ghtk\";\n public static ViettelPost = \"ViettelPost\";\n public static Ghn = \"Ghn\";\n public static Customize = \"Customize\";\n}\n\nexport interface GhtkSettingModel {\n token: string;\n isSandbox: boolean;\n isActive: boolean;\n}\n","import { Checkbox, Input, Typography } from \"antd\";\nimport { GhtkSettingModel } from \"states/transportation/transportation.models\";\n\nexport interface IGhtkApiSettingFormProps {\n model: GhtkSettingModel;\n onChange: (newModel: GhtkSettingModel) => void;\n}\n\nexport function GhtkApiSettingForm(props: IGhtkApiSettingFormProps) {\n const { model, onChange } = props;\n return model ? (\n <>\n \n Token: \n {\n onChange({ ...model, token: e.target.value });\n }}\n />\n \n \n {\n onChange({ ...model, isSandbox: e.target.checked });\n }}\n >\n Môi trường test\n \n \n \n {\n onChange({ ...model, isActive: e.target.checked });\n }}\n >\n Kích hoạt\n \n \n \n ) : null;\n}\n","import { message, Modal } from \"antd\";\nimport { useEffect, useState } from \"react\";\nimport {\n DefaultErrorMessage,\n UpdateDataSuccessfully,\n} from \"shared/constants/define-localization\";\nimport { CoreResource, t } from \"shared/plugins/localization\";\nimport {\n getTransportationSettingAPI,\n updateTransportationSettingAPI,\n} from \"states/transportation/transportation.api\";\nimport {\n GhtkSettingModel,\n TransportationCodeConst,\n TransportationModel,\n} from \"states/transportation/transportation.models\";\nimport { GhtkApiSettingForm } from \"./ghtk-api-setting-form\";\n\nexport interface ITransportationApiModalProps {\n transportation?: TransportationModel;\n show: boolean;\n closeModal: () => void;\n}\n\nexport function TransportationApiModal(props: ITransportationApiModalProps) {\n const { show, closeModal, transportation } = props;\n const [apiSetting, setApiSetting] = useState({});\n const [isLoading, setIsLoading] = useState(false);\n\n const _handleCloseModal = () => {\n setApiSetting({});\n closeModal();\n };\n\n const _handleSaveApiSetting = async () => {\n if (!transportation) {\n return;\n }\n setIsLoading(true);\n try {\n await updateTransportationSettingAPI(\n transportation.transportationCode,\n apiSetting\n );\n setIsLoading(false);\n Modal.success({\n content: \"Cập nhật thành công\",\n afterClose: () => {\n _handleCloseModal();\n },\n });\n } catch (error) {\n setIsLoading(false);\n message.error(\n error?.response?.data?.error?.message ??\n \"Lỗi hệ thống\"\n );\n }\n };\n useEffect(() => {\n if (show && transportation) {\n getTransportationSettingAPI(transportation.transportationCode).then(\n (res) => {\n setApiSetting(res.data);\n }\n );\n }\n }, [show, transportation]);\n return (\n \n {`Cấu hình API ${transportation?.transportationName}`}\n \n }\n confirmLoading={isLoading}\n centered={true}\n visible={show}\n onOk={_handleSaveApiSetting}\n onCancel={_handleCloseModal}\n okText=\"Save\"\n cancelText=\"Cancel\"\n >\n {transportation &&\n transportation.transportationCode === TransportationCodeConst.Ghtk && (\n {\n setApiSetting(newSetting);\n }}\n />\n )}\n \n );\n}\n","import { Button, Table } from \"antd\";\nimport { ColumnsType } from \"antd/lib/table\";\nimport { useEffect, useState } from \"react\";\nimport { getTransportationList } from \"states/transportation/transportation.api\";\nimport {\n TransportationCodeConst,\n TransportationModel,\n} from \"states/transportation/transportation.models\";\nimport { TransportationApiModal } from \"./transportation-api-modal\";\n\nexport interface ITransportationSettingProps {}\n\nexport function TransportationSetting(props: ITransportationSettingProps) {\n const [transportations, setTransportations] = useState(\n []\n );\n const [apiModalProps, setApiModalProps] = useState<{\n show: boolean;\n transportation?: TransportationModel;\n }>({\n show: false,\n transportation: undefined,\n });\n\n const columns: ColumnsType = [\n {\n title: \"Nhà vận chuyển\",\n dataIndex: \"gatewayName\",\n key: \"gatewayName\",\n render: (gatewayName: string, item) => item.transportationName,\n },\n {\n title: \"Actions\",\n dataIndex: \"action\",\n key: \"action\",\n render: (action: string, item) =>\n item.transportationCode !== TransportationCodeConst.Customize && (\n {\n setApiModalProps({\n show: true,\n transportation: item,\n });\n }}\n >\n Cấu hình API\n \n ),\n },\n ];\n\n useEffect(() => {\n getTransportationList().then((res) => setTransportations(res.data));\n }, []);\n\n return (\n
    \n row.transportationCode}\n dataSource={transportations}\n size=\"small\"\n >\n {\n setApiModalProps({\n show: false,\n transportation: undefined,\n });\n }}\n />\n
    \n );\n}\n","import { TransportationSetting } from \"shared/components/transportation/transportation-setting\";\n\nexport function TransportationPage() {\n return (\n
    \n \n
    \n );\n}\n","import { GOOGLE_FIREBASE_API } from \"shared/constants/api-endpoint\";\nimport { apiClient } from \"shared/plugins/http-service\";\nimport { GoogleFirebaseConfigModel } from \"./google-setting.models\";\n\nexport const getFirebaseConfig = async () => {\n return await apiClient.getHttp(`${GOOGLE_FIREBASE_API}`);\n};\nexport const updateFirebaseConfig = async (model: GoogleFirebaseConfigModel) => {\n const response = await apiClient.postHttp(`${GOOGLE_FIREBASE_API}`, model);\n return response;\n};\n","import { SaveOutlined } from \"@ant-design/icons\";\nimport {\n Button,\n Card,\n Checkbox,\n Col,\n Form,\n Input,\n message,\n Modal,\n Row,\n Select,\n Tabs,\n} from \"antd\";\nimport { Store } from \"antd/lib/form/interface\";\nimport { useEffect, useState } from \"react\";\nimport { useDispatch } from \"react-redux\";\nimport {\n DefaultErrorMessage,\n Successfully,\n UpdateDataSuccessfully,\n NotificationText,\n Save,\n TimeZone,\n} from \"shared/constants/define-localization\";\nimport { t, CoreResource } from \"shared/plugins/localization\";\nimport { setLoading } from \"states/global-value/global-value.slice\";\nimport { getFirebaseConfig, updateFirebaseConfig } from \"states/google-setting/google-setting.api\";\nimport { GoogleFirebaseConfigModel } from \"states/google-setting/google-setting.models\";\nimport {\n getSystemConfig,\n getTimeZones,\n updateSystemConfig,\n} from \"states/system-setting/system-setting.api\";\nimport {\n SystemConfigModel,\n TimezoneModel,\n} from \"states/system-setting/system-setting.models\";\n\nexport function FirebaseConfig() {\n const [form] = Form.useForm();\n const dispatch = useDispatch();\n\n const getConfig = async () => {\n try {\n const res = await getFirebaseConfig();\n form.setFieldsValue(res.data);\n } catch (error) {\n message.error(\n error?.response?.data?.error?.message ??\n \"Lỗi hệ thống\"\n );\n }\n };\n\n const onFinish = async (values: GoogleFirebaseConfigModel) => {\n dispatch(setLoading(true));\n try {\n let payload = {\n ...values,\n projectId:values.projectId,\n privateKey: values.privateKey,\n clientEmail: values.clientEmail,\n apiKey: values.apiKey,\n authDomain: values.authDomain,\n storageBucket: values.storageBucket,\n messagingSenderId: values.messagingSenderId,\n appId: values.appId,\n measurementId: values.measurementId,\n } as GoogleFirebaseConfigModel;\n await updateFirebaseConfig(payload);\n dispatch(setLoading(false));\n Modal.success({\n title: \"Thành công\",\n content: \"Cập nhật thành công\",\n });\n } catch (error) {\n dispatch(setLoading(false));\n Modal.error({\n title: \"Thông báo\",\n content:\n error?.response?.data?.error?.message ??\n \"Lỗi hệ thống\",\n });\n }\n };\n const onSaved = () => {\n form.submit();\n };\n useEffect(() => {\n getConfig();\n }, []);\n\n return (\n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n );\n}\n","export interface CommentModel {\n key: string;\n id: number;\n name: string;\n email: string;\n phone: string;\n message: string;\n rating?: number;\n status: string;\n staffId?: number;\n parentId?: number;\n customerId?: number;\n referenceId: number;\n commentType: string;\n isActive: boolean;\n childrenComments: CommentModel[];\n creationTime: Date;\n}\n\nexport interface CreatedCommentModel {\n message: string;\n parentId?: number;\n referenceId: number;\n commentType: string;\n}\n\nexport interface SearchCommentRequestModel {\n active: boolean;\n status: string;\n referenceId: number;\n commentType: string;\n}\n\nexport class CommentStatusConst\n{\n public static readonly New = \"New\";\n public static readonly Done = \"Done\";\n}\nexport class CommentTypeConst\n{\n public static readonly ProductDetail = \"ProductDetail\";\n public static readonly ProductCate = \"ProductCate\";\n public static readonly BlogDetail = \"BlogDetail\";\n public static readonly StaticPage = \"StaticPage\";\n}\n","import { COMMENT_API } from \"shared/constants/api-endpoint\";\nimport { ReferenceAndCommentModel } from \"shared/models/reference-comment-model\";\nimport { apiClient } from \"shared/plugins/http-service\";\nimport { PagedResult } from \"states/paged-result-model\";\nimport {\n CreatedCommentModel,\n CommentModel,\n SearchCommentRequestModel\n} from \"./comment.models\";\n\nexport const searchCommentList = async (model: SearchCommentRequestModel) => {\n const createResponse = await apiClient.postHttp(\n `${COMMENT_API}/search_list`,\n model\n );\n return createResponse;\n};\n\nexport const addComment = async (model: CreatedCommentModel) => {\n const response = await apiClient.postHttp(\n `${COMMENT_API}`,\n model\n );\n return response;\n};\n\nexport const toggleCommentIsActive = async (commentId: number) => {\n return await apiClient.putHttp(\n `${COMMENT_API}/${commentId}/is_active`\n );\n};\n\nexport const changeCommentStatus = async (\n commentId: number,\n status: string\n) => {\n return await apiClient.putHttp(\n `${COMMENT_API}/${commentId}/status`,\n {\n commentStatus: status,\n },\n // {\n // headers: {\n // \"content-type\": \"application/json\",\n // },\n // }\n );\n};\n\nexport const getReferenceHasNewComment = async (\n commentType: string,\n page: number = 1,\n pageSize: number = 50\n) => {\n return await apiClient.getHttp>(\n `${COMMENT_API}/reference_has_new_comments?commentType=${commentType}&page=${page}&pageSize=${pageSize}`\n );\n};","import * as React from \"react\";\nimport { Avatar, Button, Comment, message, Rate, Space, Tag } from \"antd\";\nimport {\n CheckOutlined,\n EnterOutlined,\n EyeInvisibleOutlined,\n EyeOutlined,\n} from \"@ant-design/icons\";\nimport moment from \"moment\";\nimport { useDispatch } from \"react-redux\";\nimport { setLoading } from \"states/global-value/global-value.slice\";\nimport { t, CoreResource } from \"shared/plugins/localization\";\nimport { CommentModel, CommentStatusConst } from \"states/comment/comment.models\";\nimport { changeCommentStatus, toggleCommentIsActive } from \"states/comment/comment.api\";\nimport { DefaultErrorMessage, UpdateDataSuccessfully } from \"shared/constants/define-localization\";\n\ninterface ICommentItemProps {\n model: CommentModel;\n onReplyBtnClicked?: (commentId: number) => void;\n onUpdated?: () => void;\n}\n\nexport function CommentItem(props: ICommentItemProps) {\n const { model, onReplyBtnClicked, onUpdated } = props;\n const dispatch = useDispatch();\n\n const handleToggleIsActive = async () => {\n dispatch(setLoading(true));\n try {\n await toggleCommentIsActive(model.id);\n message.success(\"Cập nhật thành công\");\n onUpdated && onUpdated();\n } catch (error) {\n message.error(\n error?.response?.data?.error?.message ??\n \"Lỗi hệ thống\"\n );\n }\n dispatch(setLoading(false));\n };\n\n const handleToggleStatus = async () => {\n dispatch(setLoading(true));\n try {\n const status =\n model.status === CommentStatusConst.Done\n ? CommentStatusConst.New\n : CommentStatusConst.Done;\n await changeCommentStatus(model.id, status);\n message.success(\"Cập nhật thành công\");\n onUpdated && onUpdated();\n } catch (error) {\n message.error(\n error?.response?.data?.error?.message ??\n \"Lỗi hệ thống\"\n );\n }\n dispatch(setLoading(false));\n };\n\n return (\n {\n onReplyBtnClicked && onReplyBtnClicked(model.id);\n }}\n >\n Trả lời\n \n ),\n model.isActive ? (\n \n ) : (\n \n ),\n !model.staffId &&\n (model.status === CommentStatusConst.New ? (\n \n ) : (\n \n )),\n ]}\n author={\n \n {model.name} - {model.phone} - {model.email}\n \n }\n avatar={\n {model.name && model.name[0]}\n }\n content={\n model.staffId ? (\n
    \n ) : (\n <>{model.message}\n )\n }\n datetime={\n \n {moment(model.creationTime).format(\"DD/MM/YYYY HH:mm\")}\n {model.rating && }\n {model.status === CommentStatusConst.New && (\n Mới\n )}\n {model.staffId && Quản trị viên}\n \n }\n key={model.id}\n >\n {model.childrenComments.map((child) => (\n \n ))}\n \n );\n}\n","import { Avatar, Badge, Card, Col, List, Row, Modal, message, Breadcrumb, Tabs } from \"antd\";\nimport { useEffect, useState } from \"react\";\nimport { MceEditor } from \"shared/components/tinymce/mce-editor\";\nimport { DefaultErrorMessage, UpdateDataSuccessfully } from \"shared/constants/define-localization\";\nimport { ReferenceAndCommentModel } from \"shared/models/reference-comment-model\";\nimport { CoreResource, t } from \"shared/plugins/localization\";\nimport { redirectFileLocalUrl } from \"shared/plugins/string-helper\";\nimport { addComment, getReferenceHasNewComment, searchCommentList } from \"states/comment/comment.api\";\nimport { CommentModel, CreatedCommentModel, SearchCommentRequestModel } from \"states/comment/comment.models\";\nimport { PagedResult } from \"states/paged-result-model\";\nimport { CommentItem } from \"./comment-item\";\n\nexport interface ICommentTabProps {\n commentType: string;\n title: string;\n selectedReference?: number;\n onChangeSelectReference: (id: number) => void;\n}\n\nexport function CommentTab(props: ICommentTabProps) {\n const { commentType, title, selectedReference, onChangeSelectReference } = props;\n const [referenceCommentCounts, setReferenceCommentCounts] = useState({\n currentPage: 1,\n pageSize: 50,\n results: [] as ReferenceAndCommentModel[],\n } as PagedResult);\n const [replyCommentModel, setReplyCommentModel] = useState<{\n commentModel: CreatedCommentModel,\n isSubmitted: boolean\n }>({\n commentModel: {} as CreatedCommentModel,\n isSubmitted: false\n });\n const [replyModal, setReplyModal] = useState();\n const [isLoading, setIsLoading] = useState(false);\n const [isLoadingComments, setIsLoadingComments] = useState(false);\n const [comments, setComments] = useState(\n []\n );\n const onSubmit = async () => {\n setReplyCommentModel({ ...replyCommentModel, isSubmitted: true });\n\n try {\n await addComment({ ...replyCommentModel.commentModel });\n setReplyCommentModel({\n commentModel: {} as CommentModel,\n isSubmitted: false\n });\n setReplyModal(false);\n await handleGetComment();\n message.success(\"Cập nhật thành công\");\n } catch (error) {\n message.error(\n error?.response?.data?.error?.message ??\n \"Lỗi hệ thống\"\n );\n }\n setReplyCommentModel({ ...replyCommentModel, isSubmitted: false });\n };\n const gotoPage = async (page: number) => {\n setIsLoading(true);\n const res = await getReferenceHasNewComment(commentType, page);\n setReferenceCommentCounts(res.data);\n setIsLoading(false);\n };\n\n const handleGetComment = async () => {\n if (selectedReference) {\n setIsLoadingComments(true);\n const res = await searchCommentList({\n referenceId: selectedReference,\n commentType: commentType,\n } as SearchCommentRequestModel);\n setComments(res.data);\n setIsLoadingComments(false);\n } else {\n setComments([]);\n }\n };\n\n const onUpdatedCommentItem = () => {\n handleGetComment();\n };\n\n useEffect(() => {\n gotoPage(1);\n }, []);\n\n useEffect(() => {\n handleGetComment();\n }, [selectedReference]);\n return (\n
    \n \n \n \n (\n {\n onChangeSelectReference(reference.id);\n }}\n >\n \n 0\n ? redirectFileLocalUrl(reference.images[0])\n : null\n }\n >\n {reference.websiteName && reference.websiteName[0]}\n \n \n }\n title={reference.websiteName}\n >\n \n )}\n >\n \n \n \n \n (\n
  • \n {\n setReplyCommentModel({\n ...replyCommentModel, commentModel: {\n referenceId: selectedReference,\n commentType: commentType,\n message: \"\",\n parentId: commentId,\n } as CreatedCommentModel\n });\n setReplyModal(true);\n }}\n onUpdated={onUpdatedCommentItem}\n >\n
  • \n )}\n >\n
    \n \n
    \n {\n setReplyModal(false);\n }}\n okText=\"Lưu\"\n cancelText=\"Hủy bỏ\"\n confirmLoading={replyCommentModel?.isSubmitted}\n >\n {\n setReplyCommentModel({ ...replyCommentModel, commentModel: { ...replyCommentModel.commentModel, message: value } });\n }}\n >\n \n
    \n );\n}\n","import { Col, Row, Breadcrumb, Tabs, Modal, message } from \"antd\";\nimport { useState } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { COMMENT_ROUTE } from \"shared/constants/routes\";\nimport { CommentTypeConst } from \"states/comment/comment.models\";\nimport { CommentTab } from \"./components/comment-tab\";\n\nexport interface ICommentProps { }\n\nexport function CommentPage(props: ICommentProps) {\n const [selectedReference, setSelectedReference] = useState();\n const onChangeSelectReference = (selectedReference: number) => {\n setSelectedReference(selectedReference);\n }\n return (\n
    \n \n \n \n \n Quản lí bình luân\n \n Danh sách bình luận\n \n \n \n { setSelectedReference(undefined) }} className=\"mt-4\" defaultActiveKey=\"san-pham\">\n \n \n \n \n \n \n \n \n \n \n \n \n \n\n
    \n );\n}\n","import {\n PROMOTION_CODE_API,\n PROMOTION_CODE_API_SEARCH,\n} from \"shared/constants/api-endpoint\";\nimport { apiClient } from \"shared/plugins/http-service\";\nimport { PagedResult } from \"states/paged-result-model\";\nimport {\n PromotionCodeModel,\n SearchPromotionCodeRequestModel,\n} from \"./promotion-code.models\";\n\nexport const searchPromotionCode = async (\n model: SearchPromotionCodeRequestModel\n) => {\n const createResponse = await apiClient.postHttp<\n PagedResult\n >(`${PROMOTION_CODE_API_SEARCH}`, model);\n return createResponse;\n};\n\nexport const getPromotionCodeById = async (id: string) => {\n return await apiClient.getHttp(\n `${PROMOTION_CODE_API}/${id}`\n );\n};\n\nexport const addPromotionCode = async (model: PromotionCodeModel) => {\n const response = await apiClient.postHttp(\n `${PROMOTION_CODE_API}`,\n model\n );\n return response;\n};\n\nexport const updatePromotionCode = async (model: PromotionCodeModel) => {\n const response = await apiClient.putHttp(\n `${PROMOTION_CODE_API}`,\n model\n );\n return response;\n};\n","export interface PromotionModel {\n conditions: PromotionConditionModel[];\n values: PromotionValueModel[];\n}\nexport interface PromotionValueModel {\n logicType: LogicalTermEnum;\n type: string;\n discountValue: number;\n discountType: string;\n maximumAmountValue: number;\n productIds: number[];\n numberOfGifts: number;\n}\n\nexport interface PromotionConditionModel {\n type: string;\n logicType: LogicalTermEnum;\n subtotalValue?: number;\n numberOfProduct?: number;\n productIds?: number[];\n dateAndTime?: Date;\n}\n\nexport enum LogicalTermEnum {\n Or,\n And,\n}\n\nexport abstract class PromotionConst {\n public static promotionConditionType = {\n startDate: \"StartDate\",\n endDate: \"EndDate\",\n numberOfUses: \"NumberOfUses\",\n forNewCustomer: \"ForNewCustomer\",\n buyAtLeastXProductInListProduct: \"BuyAtLeastXProductInListProduct\",\n subtotalAtLeastX: \"SubtotalAtLeastX\",\n };\n public static promotionValueType = {\n discount: \"Discount\",\n gift: \"Gift\",\n };\n public static discountType = {\n percent: \"Percent\",\n amount: \"Amount\",\n };\n}\n","import React, { FC, useState, useEffect } from \"react\";\nimport { Table, Row, Col, Button, Input, Tag, Select } from \"antd\";\n\nimport { PlusCircleOutlined } from \"@ant-design/icons\";\nimport { ColumnsType } from \"antd/lib/table\";\nimport { PagedResult } from \"states/paged-result-model\";\nimport { useDebouncedCallback } from \"use-debounce/lib\";\n\nimport momentTz from \"moment-timezone\";\nimport { shallowEqual, useSelector } from \"react-redux\";\nimport { RootState } from \"app.store\";\nimport { RemovedEntityModel } from \"shared/models/removed-entity-model\";\nimport { searchPromotionCode } from \"states/promotion-code/promotion-code.api\";\nimport { Link } from \"react-router-dom\";\nimport {\n ADD_PROMOTION_CODE_ROUTE,\n UPDATE_PROMOTION_CODE_ROUTE,\n} from \"shared/constants/routes\";\nimport { selectCurrentBranch } from \"states/branch/branch.slice\";\nimport { momentDateTimeFormat } from \"shared/plugins/localization\";\nimport {\n PromotionCodeModel,\n SearchPromotionCodeRequestModel,\n} from \"states/promotion-code/promotion-code.models\";\nimport { PromotionConst } from \"shared/models/promotion.model\";\n\ninterface IPromotionCodeProps {}\nconst PromotionCode: FC = () => {\n const currentBranch = useSelector(selectCurrentBranch, shallowEqual);\n const currentTimeZone = useSelector(\n (state: RootState) => state.globalValue.ianaTimeZone,\n shallowEqual\n );\n const [selectedRowsKeys, setSelectedRowsKeys] = useState<\n RemovedEntityModel\n >({\n idList: [],\n });\n const [isLoadingList, setIsLoadingList] = useState(false);\n const [pagedResults, setPagedResults] = useState(\n {} as PagedResult\n );\n\n const [filterModel, setFilterModel] =\n useState({\n page: 1,\n pageSize: 20,\n });\n\n const rowSelection = {\n selectedRowsKeys,\n onChange: (selectedRowKeys: any) => {\n setSelectedRowsKeys({ ...selectedRowsKeys, idList: selectedRowKeys });\n },\n };\n const onEmptySelection = () => {\n setSelectedRowsKeys({ ...selectedRowsKeys, idList: [] });\n };\n const gotoPage = async (page: number, pageSize:number) => {\n setIsLoadingList(true);\n const result = await searchPromotionCode({ ...filterModel, page,pageSize });\n setPagedResults(result.data);\n setIsLoadingList(false);\n };\n const handleSearch = useDebouncedCallback(() => {\n gotoPage(1,20);\n }, 500);\n\n const expandedRowRender = (data: PromotionCodeModel) => {\n return (\n
    \n
    \n
    \n );\n };\n const handleDate = (model: PromotionCodeModel, type: string) => {\n let date = model.promotion.conditions.find((m) => m.type === type);\n if (date === undefined) {\n return \"\";\n }\n return momentTz(date.dateAndTime)\n .tz(currentTimeZone)\n .format(momentDateTimeFormat());\n };\n const columns: ColumnsType = [\n {\n title: \"Code\",\n dataIndex: \"code\",\n key: \"code\",\n render: (code: string, item) => (\n \n \n {code}\n \n \n ),\n },\n {\n title: \"Ngày áp dụng\",\n dataIndex: \"date\",\n key: \"date\",\n render: (date: string, item) => (\n \n
    \n

    \n Từ ngày:{\" \"}\n {handleDate(\n item,\n PromotionConst.promotionConditionType.startDate\n )}\n

    \n

    \n Đến ngày:{\" \"}\n {handleDate(item, PromotionConst.promotionConditionType.endDate)}\n

    \n
    \n
    \n ),\n },\n {\n title: \"Trạng thái\",\n dataIndex: \"active\",\n key: \"active\",\n render: (active: boolean, item) => (\n \n {active ? (\n Hoạt động\n ) : (\n Ngưng hoạt động\n )}\n \n ),\n },\n ];\n\n useEffect(() => {\n handleSearch();\n }, [filterModel, currentBranch]);\n\n useEffect(() => {\n document.title = \"Mã khuyến mãi\";\n }, []);\n\n return (\n
    \n \n \n {\n setFilterModel({ ...filterModel, code: e.target.value });\n }}\n >\n \n \n \n option.children.toLowerCase().indexOf(input.toLowerCase()) >= 0\n }\n onChange={(value: number) => {\n setFilterModel({\n ...filterModel,\n active: value === 0 ? false : true,\n });\n }}\n >\n \n Ngưng hoạt động\n \n \n Hoạt động\n \n \n \n \n \n \n \n \n \n expandedRowRender(record),\n }}\n rowSelection={rowSelection}\n columns={columns}\n dataSource={pagedResults.results}\n rowKey={(m) => m.id}\n size=\"small\"\n pagination={{\n total: pagedResults.totalItemCount,\n pageSize: pagedResults.pageSize,\n current: pagedResults.currentPage,\n onChange: gotoPage,\n }}\n loading={isLoadingList}\n />\n
    \n );\n};\n\nexport default PromotionCode;\n","import { Checkbox, Col, Collapse, Input, Row, Typography } from \"antd\";\nimport { PromotionCodeModel } from \"states/promotion-code/promotion-code.models\";\n\nexport interface IPromotionCodeInformationTabProps {\n model: PromotionCodeModel;\n onChange: (newModel: PromotionCodeModel) => void;\n isUpdateMode: boolean;\n}\n\nexport function PromotionCodeInformationTab(\n props: IPromotionCodeInformationTabProps\n) {\n const { model, onChange, isUpdateMode } = props;\n return (\n
    \n \n \n \n \n \n Mã: \n {\n onChange({ ...model, code: e.target.value?.toUpperCase() });\n }}\n placeholder=\"System generates\"\n >\n \n \n {\n onChange({ ...model, active: e.target.checked });\n }}\n >\n Kích hoạt\n \n \n \n \n \n \n
    \n );\n}\n","import { Input, Row, Select, Table, Transfer, Typography } from \"antd\";\nimport { TransferDirection } from \"antd/lib/transfer\";\nimport React from \"react\";\nimport { useEffect, useState } from \"react\";\nimport { useDispatch } from \"react-redux\";\nimport { ITransferItemSourceModel } from \"shared/models/transfer-item-source-model\";\nimport { redirectFileLocalUrl } from \"shared/plugins/string-helper\";\nimport { BranchModel } from \"states/branch/branch.models\";\nimport { setLoading } from \"states/global-value/global-value.slice\";\nimport { ProductCategoryModel } from \"states/product-category/product-category.models\";\nimport {\n searchListProductApi,\n searchProductApi,\n} from \"states/product/product.api\";\nimport { SearchProductRequestModel } from \"states/product/product.models\";\nimport { useDebouncedCallback } from \"use-debounce/lib\";\n\nexport interface IPromotionProductTransferComponentProps {\n productIds: number[];\n onChange: (productIds: number[]) => void;\n categories: ProductCategoryModel[];\n currentTimeZone: string;\n}\nexport function PromotionProductTransferComponent(\n props: IPromotionProductTransferComponentProps\n) {\n const { productIds, categories, onChange, currentTimeZone } = props;\n const dispatch = useDispatch();\n const [products, setProductList] = useState();\n const [filterModel, setFilterModel] = useState({\n includeAccessory: true,\n includeChildrenUnitProduct: true,\n includeChildrenVariationProduct: true,\n page: 1,\n pageSize: 20,\n categoryIds: [],\n });\n const [targetKeys, setTargetKeys] = useState([]);\n const [selectedKeys, setSelectedKeys] = useState([]);\n const gotoPage = async () => {\n dispatch(setLoading(true));\n const result = await searchListProductApi({\n ...filterModel,\n categoryIds: filterModel.categoryIds,\n });\n dispatch(setLoading(false));\n mapFromProductToTarget(\n result.data.map((m) => {\n return {\n key: m.id.toString(),\n description: m.name,\n title: ` 0 ? m.images[0] : \"\"\n )}\" /> ${m.name} ${m.unit !== null ? \"|\" + m.unit?.unitName : \"\"} ${\n m.variationAttributes.length > 0\n ? \" | \" +\n m.variationAttributes.map((x) => x.variationValue).join(\",\")\n : \"\"\n }`,\n disabled: false,\n } as ITransferItemSourceModel;\n })\n );\n };\n const initProduct = async (productIds: number[]) => {\n if (productIds.length === 0) {\n return;\n }\n dispatch(setLoading(true));\n const result = await searchListProductApi({\n ...filterModel,\n productIds: productIds,\n });\n dispatch(setLoading(false));\n mapFromTargetToProduct(\n result.data.map((m) => {\n return {\n key: m.id.toString(),\n description: m.name,\n title: ` 0 ? m.images[0] : \"\"\n )}\" /> ${m.name} ${m.unit !== null ? \"|\" + m.unit?.unitName : \"\"} ${\n m.variationAttributes.length > 0\n ? \" | \" +\n m.variationAttributes.map((x) => x.variationValue).join(\",\")\n : \"\"\n }`,\n disabled: false,\n } as ITransferItemSourceModel;\n })\n );\n };\n const mapFromProductToTarget = (\n sourceProducts: ITransferItemSourceModel[]\n ) => {\n let target = [...targetKeys].map((m) => m.key);\n let newProducts = sourceProducts.filter(\n (m) => !target.includes(m.key.toString())\n );\n setProductList([...newProducts, ...targetKeys]);\n };\n const mapFromTargetToProduct = (targetKeys: ITransferItemSourceModel[]) => {\n setProductList(targetKeys);\n setTargetKeys(targetKeys);\n };\n const handleSearch = useDebouncedCallback(() => {\n gotoPage();\n }, 500);\n\n useEffect(() => {\n initProduct(productIds);\n }, []);\n\n useEffect(() => {\n handleSearch();\n }, [filterModel]);\n return (\n \n Danh mục sản phẩm: \n {\n setFilterModel({ ...filterModel, categoryIds: value ? [value] : [] });\n }}\n allowClear\n showSearch\n filterOption={(input, option: any) =>\n option.children.toLowerCase().indexOf(input.toLowerCase()) >= 0\n }\n >\n {categories &&\n categories.map((productCate) => (\n \n {productCate.name}\n \n ))}\n \n m.key)}\n selectedKeys={selectedKeys}\n onChange={(nextTargetKeys: string[], direction, moveKeys) => {\n setTargetKeys(\n [...(products ?? [])]?.filter((m) =>\n nextTargetKeys.includes(m.key)\n ) ?? []\n );\n onChange(nextTargetKeys.map((m) => Number(m)));\n }}\n onSelectChange={(\n sourceSelectedKeys: string[],\n targetSelectedKeys: string[]\n ) => {\n setSelectedKeys([...sourceSelectedKeys, ...targetSelectedKeys]);\n }}\n onScroll={(\n direction: TransferDirection,\n e: React.SyntheticEvent\n ) => {}}\n render={(item) => (\n
    \n )}\n oneWay\n />\n
    \n );\n}\n","import {\n Checkbox,\n Col,\n Collapse,\n DatePicker,\n Input,\n Row,\n Typography,\n} from \"antd\";\nimport moment from \"moment-timezone\";\nimport { BranchSelector } from \"shared/components/branch/branch-selector\";\nimport {\n PromotionConditionModel,\n PromotionConst,\n} from \"shared/models/promotion.model\";\nimport { momentDateTimeFormat } from \"shared/plugins/localization\";\nimport { BranchModel } from \"states/branch/branch.models\";\nimport {\n LogicalTermEnum,\n ProductCategoryModel,\n} from \"states/product-category/product-category.models\";\nimport { PromotionCodeModel } from \"states/promotion-code/promotion-code.models\";\n\nimport { PromotionProductTransferComponent } from \"./promotion-products-transfer-component\";\n\nexport interface IPromotionCodeConditionTabProps {\n model: PromotionCodeModel;\n onChange: (newModel: PromotionCodeModel) => void;\n categories: ProductCategoryModel[];\n isUpdateMode: boolean;\n currentTimeZone: string;\n}\nexport function PromotionCodeConditionTab(\n props: IPromotionCodeConditionTabProps\n) {\n const { model, categories, onChange, isUpdateMode, currentTimeZone } = props;\n const getModelTemp = () => {\n return { ...model };\n };\n const handleChange = (targetKeys: number[]) => {\n let model = getModelTemp();\n if (\n getIndexCondition(\n PromotionConst.promotionConditionType.buyAtLeastXProductInListProduct\n ) === -1\n ) {\n model.promotion.conditions.push({\n type: PromotionConst.promotionConditionType\n .buyAtLeastXProductInListProduct,\n logicType: LogicalTermEnum.And,\n numberOfProduct: 1,\n productIds: [],\n } as PromotionConditionModel);\n }\n model.promotion.conditions[\n getIndexCondition(\n PromotionConst.promotionConditionType.buyAtLeastXProductInListProduct\n )\n ].productIds = targetKeys;\n onChange(model);\n };\n const getIndexCondition = (type: string) => {\n return getModelTemp()?.promotion?.conditions?.findIndex(\n (m) => m.type === type\n );\n };\n const getCondition = (type: string) => {\n let conditionIndex = getIndexCondition(type);\n return getModelTemp()?.promotion?.conditions?.[conditionIndex];\n };\n return (\n
    \n \n \n \n \n \n Từ ngày: \n {\n let model = getModelTemp();\n if (\n getIndexCondition(\n PromotionConst.promotionConditionType.startDate\n ) === -1\n ) {\n model.promotion.conditions.push({\n type: PromotionConst.promotionConditionType.startDate,\n logicType: LogicalTermEnum.And,\n dateAndTime: new Date(),\n } as PromotionConditionModel);\n }\n model.promotion.conditions[\n getIndexCondition(\n PromotionConst.promotionConditionType.startDate\n )\n ].dateAndTime = moment\n .tz(valStr, momentDateTimeFormat(), currentTimeZone)\n .toDate();\n onChange(model);\n }}\n className=\"w-100\"\n />\n \n \n Đến ngày: \n {\n let model = getModelTemp();\n if (\n getIndexCondition(\n PromotionConst.promotionConditionType.endDate\n ) === -1\n ) {\n model.promotion.conditions.push({\n type: PromotionConst.promotionConditionType.endDate,\n logicType: LogicalTermEnum.And,\n dateAndTime: new Date(),\n } as PromotionConditionModel);\n }\n model.promotion.conditions[\n getIndexCondition(\n PromotionConst.promotionConditionType.endDate\n )\n ].dateAndTime = moment\n .tz(valStr, momentDateTimeFormat(), currentTimeZone)\n .toDate();\n onChange(model);\n }}\n className=\"w-100\"\n />\n \n \n \n \n \n \n \n \n \n \n Số lượng mua tối thiểu: \n {\n let model = getModelTemp();\n if (\n getIndexCondition(\n PromotionConst.promotionConditionType\n .buyAtLeastXProductInListProduct\n ) === -1\n ) {\n model.promotion.conditions.push({\n type: PromotionConst.promotionConditionType\n .buyAtLeastXProductInListProduct,\n logicType: LogicalTermEnum.And,\n numberOfProduct: 1,\n productIds: [],\n } as PromotionConditionModel);\n }\n model.promotion.conditions[\n getIndexCondition(\n PromotionConst.promotionConditionType\n .buyAtLeastXProductInListProduct\n )\n ].numberOfProduct = Number(e.target.value);\n onChange(model);\n }}\n placeholder=\"Số lượng mua tối thiểu\"\n >\n \n {\n handleChange(productIds);\n }}\n currentTimeZone={currentTimeZone}\n categories={categories}\n />\n \n \n \n \n
    \n );\n}\n","import {\n Checkbox,\n Col,\n Collapse,\n DatePicker,\n Input,\n message,\n Row,\n Select,\n Table,\n Typography,\n} from \"antd\";\nimport React from \"react\";\nimport {\n PromotionConst,\n PromotionValueModel,\n} from \"shared/models/promotion.model\";\nimport { BranchModel } from \"states/branch/branch.models\";\nimport {\n LogicalTermEnum,\n ProductCategoryModel,\n} from \"states/product-category/product-category.models\";\nimport { PromotionCodeModel } from \"states/promotion-code/promotion-code.models\";\n\nimport { PromotionProductTransferComponent } from \"./promotion-products-transfer-component\";\n\nexport interface IPromotionCodeValueTabProps {\n model: PromotionCodeModel;\n onChange: (newModel: PromotionCodeModel) => void;\n isUpdateMode: boolean;\n categories: ProductCategoryModel[];\n currentTimeZone: string;\n}\n\nexport function PromotionCodeValueTab(props: IPromotionCodeValueTabProps) {\n const { model, onChange, isUpdateMode, categories, currentTimeZone } = props;\n const getModelTemp = () => {\n return { ...model };\n };\n const getValue = () => {\n let model = getModelTemp();\n if (model.promotion.values.length === 0) {\n model.promotion.values.push({\n type: PromotionConst.promotionValueType.discount,\n discountValue: 0,\n logicType: LogicalTermEnum.Or,\n maximumAmountValue: 0,\n productIds: [],\n discountType: PromotionConst.discountType.amount,\n numberOfGifts: 1,\n } as PromotionValueModel);\n onChange(model);\n }\n return model.promotion.values[0];\n };\n\n const handleChange = (productIds: number[]) => {\n let model = getModelTemp();\n model.promotion.values[0].productIds = productIds;\n onChange(model);\n };\n return (\n
    \n \n \n \n \n \n Loại khuyến mãi \n \n option.children\n .toLowerCase()\n .indexOf(input.toLowerCase()) >= 0\n }\n onChange={(value: string) => {\n let model = getModelTemp();\n model.promotion.values[0].type = value;\n model.promotion.values[0].productIds = [];\n onChange(model);\n }}\n >\n \n Giảm giá\n \n {/* \n Gift\n */}\n \n \n \n \n \n {getValue()?.type === PromotionConst.promotionValueType.discount && (\n \n \n \n \n Loại giảm giá \n \n option.children\n .toLowerCase()\n .indexOf(input.toLowerCase()) >= 0\n }\n onChange={(value: string) => {\n let model = getModelTemp();\n model.promotion.values[0].discountType = value;\n onChange(model);\n }}\n >\n \n Số tiền\n \n \n Phần trăm\n \n \n \n \n Giá trị \n {\n let model = getModelTemp();\n model.promotion.values[0].discountValue =\n e.target.valueAsNumber;\n onChange(model);\n }}\n type=\"number\"\n placeholder=\"Giá trị\"\n >\n \n \n \n \n )}\n \n {getValue()?.type === PromotionConst.promotionValueType.gift && (\n \n \n \n \n \n Số lượng quà tặng: \n {\n let model = getModelTemp();\n model.promotion.values[0].numberOfGifts = Number(\n e.target.value\n );\n onChange(model);\n }}\n placeholder=\"Số lượng quà tặng\"\n >\n \n {\n handleChange(productIds);\n }}\n currentTimeZone={currentTimeZone}\n categories={categories}\n />\n \n \n \n \n )}\n
    \n );\n}\n","import { FC, useState, useEffect } from \"react\";\n\nimport { Select, Row, Col, Breadcrumb, Button, Tabs, message } from \"antd\";\n\nimport { t, CoreResource } from \"shared/plugins/localization\";\nimport { RootState } from \"app.store\";\nimport { useSelector, shallowEqual, useDispatch } from \"react-redux\";\nimport { Link, useParams } from \"react-router-dom\";\nimport {\n addPromotionCode,\n getPromotionCodeById,\n updatePromotionCode,\n} from \"states/promotion-code/promotion-code.api\";\nimport { PROMOTION_CODE_ROUTE } from \"shared/constants/routes\";\nimport { RollbackOutlined, SaveOutlined } from \"@ant-design/icons\";\nimport { PromotionCodeInformationTab } from \"./components/promotion-code-information-tab\";\nimport { PromotionCodeConditionTab } from \"./components/promotion-code-condition-tab\";\nimport useRefresh from \"shared/hooks/use-refresh\";\nimport { setLoading } from \"states/global-value/global-value.slice\";\nimport {\n LogicalTermEnum,\n ProductCategoryModel,\n} from \"states/product-category/product-category.models\";\nimport { getProductCategoryListApi } from \"states/product-category/product-category.api\";\nimport { PromotionCodeValueTab } from \"./components/promotion-code-value-tab\";\nimport { PromotionCodeModel } from \"states/promotion-code/promotion-code.models\";\nimport {\n PromotionConditionModel,\n PromotionConst,\n} from \"shared/models/promotion.model\";\n\ninterface IAddUpdatePromotionCodeProps {}\ninterface RouteParams {\n id: string;\n}\nconst { Option } = Select;\nexport const AddUpdatePromotionCode: FC = (\n props\n) => {\n const params = useParams();\n const refresh = useRefresh();\n\n const currentTimeZone = useSelector(\n (state: RootState) => state.globalValue.ianaTimeZone,\n shallowEqual\n );\n\n const [productCategories, setProductCategories] = useState<\n ProductCategoryModel[]\n >([]);\n\n const [model, setModel] = useState({\n id: \"\",\n promotion: {\n conditions: [\n {\n type: PromotionConst.promotionConditionType.startDate,\n logicType: LogicalTermEnum.And,\n dateAndTime: new Date(),\n } as PromotionConditionModel,\n {\n type: PromotionConst.promotionConditionType.endDate,\n logicType: LogicalTermEnum.And,\n dateAndTime: new Date(),\n } as PromotionConditionModel,\n {\n type: PromotionConst.promotionConditionType\n .buyAtLeastXProductInListProduct,\n logicType: LogicalTermEnum.And,\n productIds: [],\n numberOfProduct: 1,\n } as PromotionConditionModel,\n ],\n values: [\n {\n type: PromotionConst.promotionValueType.discount,\n discountValue: 0,\n logicType: LogicalTermEnum.Or,\n discountType: PromotionConst.discountType.amount,\n maximumAmountValue: 0,\n productIds: [],\n numberOfGifts: 0,\n },\n ],\n },\n } as PromotionCodeModel);\n const [updateMode, setUpdateMode] = useState(false);\n const dispatch = useDispatch();\n\n const getCategories = async () => {\n const result = await getProductCategoryListApi();\n setProductCategories(result.data);\n };\n const onSaved = async () => {\n dispatch(setLoading(true));\n try {\n if (updateMode) {\n await updatePromotionCode(model);\n } else {\n await addPromotionCode(model);\n }\n dispatch(setLoading(false));\n message.success({\n title: \"Thành công\",\n content: \"Cập nhật thành công\",\n });\n refresh();\n } catch (error) {\n message.error({\n title: \"Thông báo\",\n content: error?.response?.data?.error?.message ?? \"Lỗi hệ thống\",\n });\n dispatch(setLoading(false));\n }\n };\n\n const onFinishFailed = (errorInfo: any) => {\n console.log(\"Failed:\", errorInfo);\n };\n\n const handleGetCurrentPromotion = async () => {\n let promotionCode = await getPromotionCodeById(params?.id);\n setModel(promotionCode.data);\n };\n useEffect(() => {\n if (document.location.href.indexOf(\"add\") > -1) {\n setUpdateMode(false);\n document.title = \"Thêm mã khuyến mãi\";\n } else {\n setUpdateMode(true);\n handleGetCurrentPromotion();\n document.title = \"Cập nhật mã khuyến mãi\";\n }\n getCategories();\n }, []);\n\n return (\n
    \n \n \n \n \n Mã khuyến mãi\n \n \n {updateMode ? \"Cập nhật\" : \"Thêm\"} {model.code}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n );\n};\n","import {\n ORDER_PAYMENT_SETTING_API_COD,\n ORDER_PAYMENT_SETTING_API_TRANSFER,\n} from \"shared/constants/api-endpoint\";\nimport { apiClient } from \"shared/plugins/http-service\";\nimport {\n OrderCodPaymentSettingModel,\n OrderTransferPaymentSettingModel,\n} from \"./payment-setting.models\";\n\nexport const getOrderCodPaymentSettingAPI = async () => {\n const createResponse = await apiClient.getHttp(\n `${ORDER_PAYMENT_SETTING_API_COD}`\n );\n return createResponse;\n};\n\nexport const updateOrderCodPaymentSettingAPI = async (\n model: OrderCodPaymentSettingModel\n) => {\n const createResponse = await apiClient.putHttp(\n `${ORDER_PAYMENT_SETTING_API_COD}`,\n model\n );\n return createResponse;\n};\n\nexport const getOrderTransferPaymentSettingAPI = async () => {\n const createResponse =\n await apiClient.getHttp(\n `${ORDER_PAYMENT_SETTING_API_TRANSFER}`\n );\n return createResponse;\n};\n\nexport const updateOrderTransferPaymentSettingAPI = async (\n model: OrderTransferPaymentSettingModel\n) => {\n const createResponse = await apiClient.putHttp(\n `${ORDER_PAYMENT_SETTING_API_TRANSFER}`,\n model\n );\n return createResponse;\n};\n","import { Button, Card, Checkbox, Col, message, Row } from \"antd\";\nimport { useEffect, useState } from \"react\";\nimport { CoreResource, t } from \"shared/plugins/localization\";\nimport {\n getOrderCodPaymentSettingAPI,\n updateOrderCodPaymentSettingAPI,\n} from \"states/payment-setting/payment-setting.api\";\nimport { OrderCodPaymentSettingModel } from \"states/payment-setting/payment-setting.models\";\n\nexport interface IPaymentCodSettingProps {}\n\nexport function PaymentCodSetting(props: IPaymentCodSettingProps) {\n const [loading, setLoading] = useState(false);\n const [model, setModel] = useState({\n isActive: false,\n });\n\n const onSubmit = async () => {\n setLoading(true);\n try {\n await updateOrderCodPaymentSettingAPI(model);\n message.success(t(CoreResource, \"UpdateDataSuccessfully\"));\n } catch (error) {\n message.error(\n error?.response?.data?.error?.message ??\n t(CoreResource, \"DefaultErrorMessage\")\n );\n }\n setLoading(false);\n };\n\n useEffect(() => {\n getOrderCodPaymentSettingAPI().then((res) => {\n setModel(res.data);\n });\n }, []);\n\n return (\n \n \n \n Lưu\n \n \n \n \n {\n setModel({ ...model, isActive: e.target.checked });\n }}\n >\n Kích hoạt\n \n \n \n \n );\n}\n","import { DeleteOutlined, PlusOutlined } from \"@ant-design/icons\";\nimport {\n Button,\n Card,\n Checkbox,\n Col,\n Input,\n message,\n Popconfirm,\n Row,\n Switch,\n Table,\n Tag,\n} from \"antd\";\nimport { ColumnsType } from \"antd/lib/table\";\nimport { useEffect, useState } from \"react\";\nimport { CoreResource, t } from \"shared/plugins/localization\";\nimport {\n getOrderTransferPaymentSettingAPI,\n updateOrderTransferPaymentSettingAPI,\n} from \"states/payment-setting/payment-setting.api\";\nimport {\n OrderTransferPaymentBankAccountModel,\n OrderTransferPaymentSettingModel,\n} from \"states/payment-setting/payment-setting.models\";\n\nexport interface IPaymentTransferSettingProps {}\n\nexport function PaymentTransferSetting(props: IPaymentTransferSettingProps) {\n const [loading, setLoading] = useState(false);\n const [model, setModel] = useState({\n isActive: false,\n bankAccounts: [],\n });\n\n const onSubmit = async () => {\n setLoading(true);\n try {\n await updateOrderTransferPaymentSettingAPI(model);\n message.success(t(CoreResource, \"UpdateDataSuccessfully\"));\n } catch (error) {\n message.error(\n error?.response?.data?.error?.message ??\n t(CoreResource, \"DefaultErrorMessage\")\n );\n }\n setLoading(false);\n };\n\n const bankAccountColumns: ColumnsType =\n [\n {\n title: \"Ngân hàng\",\n dataIndex: \"bankName\",\n key: \"bankName\",\n\n render: (bankName, item) => (\n {\n item.bankName = e.target.value;\n setModel({ ...model });\n }}\n />\n ),\n },\n {\n title: \"Tên tài khoản\",\n dataIndex: \"accountName\",\n key: \"accountName\",\n\n render: (accountName, item) => (\n {\n item.accountName = e.target.value;\n setModel({ ...model });\n }}\n />\n ),\n },\n {\n title: \"Số tài khoản\",\n dataIndex: \"accountNumber\",\n key: \"accountNumber\",\n\n render: (accountNumber, item) => (\n {\n item.accountNumber = e.target.value;\n setModel({ ...model });\n }}\n />\n ),\n },\n {\n title: \"Trạng thái\",\n dataIndex: \"isActive\",\n key: \"isActive\",\n\n render: (isActive: boolean, item) => (\n {\n item.isActive = e;\n setModel({ ...model });\n }}\n >
    \n ),\n },\n {\n title: \"\",\n width: \"100px\",\n render: (attribute, item, index) => (\n {\n model.bankAccounts.splice(index, 1);\n setModel({\n ...model,\n bankAccounts: [...model.bankAccounts],\n });\n }}\n okText=\"Có\"\n cancelText=\"Không\"\n >\n \n \n \n \n {\n model.bankAccounts.push({\n isActive: true,\n } as OrderTransferPaymentBankAccountModel);\n setModel({ ...model, bankAccounts: [...model.bankAccounts] });\n }}\n icon={}\n >\n Thêm tài khoản\n \n \n \n {\n setModel({ ...model, isActive: e.target.checked });\n }}\n >\n Kích hoạt\n \n \n \n \n \n );\n}\n","import { Tabs } from \"antd\";\nimport { useEffect } from \"react\";\nimport { PaymentCodSetting } from \"./components/payment-cod-setting\";\nimport { PaymentTransferSetting } from \"./components/payment-transfer-setting\";\n\nexport function PaymentSettingPage() {\n useEffect(() => {\n document.title = \"Cấu hình thanh toán\";\n }, []);\n\n return (\n <>\n \n \n \n \n \n \n \n \n Đang cập nhật\n \n \n \n );\n}\n","import { Route, Redirect, Router } from \"react-router-dom\";\nimport \"./app.less\";\nimport EmptyPage from \"./modules/core/empty\";\nimport LoginPage from \"./modules/account/login-page\";\n\nimport LayoutApp from \"./shared/layout/layout-app\";\nimport history from \"shared/plugins/history\";\n\nimport { Loading } from \"shared/components/loading/loading\";\nimport ForgotPasswordPage from \"modules/account/forgot-password-page\";\nimport RoleManagementPage from \"modules/role-management/role-management-page\";\nimport StaticPage from \"modules/static-page/static-page\";\nimport { AddUpdateStaticPage } from \"modules/static-page/add-update-static-page\";\nimport Contact from \"modules/contact/contact\";\nimport BlogCategory from \"modules/blog-category/blog-category\";\nimport { AddUpdateBlog } from \"modules/blog/add-update-blog\";\nimport Blog from \"modules/blog/blog\";\nimport Staff from \"modules/staff/staff\";\nimport ThemeSetting from \"modules/theme-config/theme-setting-page\";\nimport AddUpdateThemeConfig from \"modules/theme-config/add-update-theme-setting\";\nimport MenuSetting from \"modules/menu-setting/menu-page\";\nimport ProductCategory from \"modules/product-category/product-category\";\nimport Product from \"modules/product/product\";\nimport Customer from \"modules/customer/customer\";\nimport { AddUpdateProduct } from \"modules/product/add-update-product\";\nimport { DefaultShippingFee } from \"modules/shipping-fee/default-shipping-fee\";\nimport { ShippingFeeAddress } from \"modules/shipping-fee/shipping-fee-address\";\nimport { ShippingFeeOrderAmount } from \"modules/shipping-fee/shipping-fee-order-amount\";\nimport { ProductComment } from \"modules/product-comment/product-comment\";\nimport ProductAttributeGroup from \"modules/product-attribute/product-attribute-group\";\nimport ProductAttribute from \"modules/product-attribute/product-attribute\";\nimport ProductAttributeValue from \"modules/product-attribute/product-attribute-value\";\nimport Tag from \"modules/tag/tag\";\nimport { AddUpdateProductCategory } from \"modules/product-category/add-update-product-category\";\nimport CustomerGroup from \"modules/customer-group/customer-group\";\nimport { AddUpdateBranch } from \"modules/branch/add-update-branch\";\nimport Branch from \"modules/branch/branch\";\nimport WebsiteConfig from \"modules/website-config/website-config\";\nimport {\n ADD_BRANCH_ROUTE,\n ADD_PRODUCT_CATEGORY_ROUTE,\n ADD_PRODUCT_ROUTE,\n ADD_PROMOTION_CODE_ROUTE,\n ADD_THEME_SETTING_ROUTE,\n ADD_THEME_TEMPLATE_ROUTE,\n ADD_WARE_HOUSE_ROUTE,\n BRANCH_ROUTE,\n COMMENT_ROUTE,\n FIREBASE_CONFIG_ROUTE,\n MODIFIER_GROUP_ROUTE,\n ORDER_REPORT_ROUTE,\n ORDER_ROUTE,\n PAYMENT_SETTING_ROUTE,\n PRODUCT_ATTRIBUTE_GROUP_ROUTE,\n PRODUCT_ATTRIBUTE_ROUTE,\n PRODUCT_ATTRIBUTE_VALUE_ROUTE,\n PRODUCT_CATEGORY_ROUTE,\n PRODUCT_COMMENT_ROUTE,\n PRODUCT_ROUTE,\n PRODUCT_STOCK_ROUTE,\n PROMOTION_CODE_ROUTE,\n SHIPPING_FEE_BY_ADDRESS_ROUTE,\n SHIPPING_FEE_BY_ORDER_AMOUNT_ROUTE,\n SHIPPING_FEE_DEFAULT_ROUTE,\n STAFF_ROUTE,\n SYSTEM_CONFIG_ROUTE,\n TAG_ROUTE,\n THEME_SETTING_ROUTE,\n THEME_TEMPLATE_ROUTE,\n TRANSPORTATION_ROUTE,\n UNIT_ROUTE,\n UPDATE_BRANCH_ROUTE,\n UPDATE_PRODUCT_CATEGORY_ROUTE,\n UPDATE_PRODUCT_ROUTE,\n UPDATE_PROMOTION_CODE_ROUTE,\n UPDATE_THEME_SETTING_ROUTE,\n UPDATE_THEME_TEMPLATE_ROUTE,\n UPDATE_WARE_HOUSE_ROUTE,\n WARE_HOUSE_ROUTE,\n WEBSITE_CONFIG_ROUTE,\n} from \"shared/constants/routes\";\nimport UnitPage from \"modules/unit/unit-page\";\nimport { AddUpdateThemeTemplate } from \"modules/theme-template/add-update-theme-template\";\nimport ThemeTemplatePage from \"modules/theme-template/theme-template-page\";\nimport { MceEditorModal } from \"shared/components/tinymce/mce-editor-modal\";\nimport { SystemConfig } from \"modules/system-config/system-config\";\nimport ProductStockPage from \"modules/product-stock/product-stock-page\";\nimport WareHousePage from \"modules/ware-house/ware-house-page\";\nimport { AddUpdateWareHouse } from \"modules/ware-house/add-update-ware-house\";\nimport { ProductStockModal } from \"shared/components/product/product-stock-modal\";\nimport OrderPage from \"modules/order/order-page\";\nimport { GlobalMessageModal } from \"shared/components/modals/global-message-modal\";\nimport { OrderReport } from \"modules/order-report/order-report\";\nimport ModifierGroupPage from \"modules/modifier-group/modifier-group-page\";\nimport { useFetchAppData } from \"shared/hooks/use-fetch-app-data\";\nimport { useNotifyOrderPrinter } from \"shared/hooks/use-notify-order-printer\";\nimport { TransportationPage } from \"modules/system-config/transportation-page\";\nimport { FirebaseConfig } from \"modules/google-setting/firebase-setting\";\nimport { CommentPage } from \"modules/comment/comment\";\nimport PromotionCode from \"modules/promotion-code/promotion-code-page\";\nimport { AddUpdatePromotionCode } from \"modules/promotion-code/promotion-code-add-update\";\nimport { PaymentSettingPage } from \"modules/payment-setting/payment-setting-page\";\n\nfunction App() {\n useFetchAppData();\n useNotifyOrderPrinter();\n\n return (\n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n\n \n \n\n \n \n \n \n \n\n \n\n \n \n \n \n \n \n \n );\n}\n\nexport default App;\n","import { RootState } from \"app.store\";\nimport { useEffect, useState } from \"react\";\nimport { shallowEqual, useDispatch, useSelector } from \"react-redux\";\nimport * as signalR from \"@microsoft/signalr\";\nimport moment from \"moment\";\nimport { fetchProfile } from \"states/account/account.slice\";\nimport { OrderModel } from \"states/order/order.models\";\nimport { printTheOrder } from \"./use-printer\";\nimport { getGlobalThemeSettingApi } from \"states/theme-setting/theme-setting.api\";\nimport { message } from \"antd\";\n\nexport function useNotifyOrderPrinter() {\n const dispatch = useDispatch();\n const account = useSelector(\n (state: RootState) => state.account,\n shallowEqual\n );\n const autoPrintOrderOnline = useSelector(\n (state: RootState) => state.globalValue.autoPrintOrderOnline,\n shallowEqual\n );\n const [connection, setConnection] = useState();\n const [logoPrint, setLogoPrint] = useState();\n\n useEffect(() => {\n if (account.isAuthentication && autoPrintOrderOnline) {\n const newconnection = new signalR.HubConnectionBuilder()\n .withUrl(\n process.env.REACT_APP_API_URI + \"/signalr-hubs/notify-order-online\",\n {\n withCredentials: true,\n accessTokenFactory: async () => {\n if (\n account.token.accessToken &&\n account.token.accessTokenExpires &&\n moment(account.token.accessTokenExpires).isAfter(moment())\n ) {\n return account.token.accessToken;\n }\n await dispatch(fetchProfile());\n return \"\";\n },\n transport: signalR.HttpTransportType.LongPolling,\n }\n )\n .withAutomaticReconnect({\n nextRetryDelayInMilliseconds: (retryContext) => {\n return 3000;\n },\n })\n .build();\n setConnection(newconnection);\n } else {\n if (connection) {\n connection.stop();\n }\n }\n }, [account.token, account.isAuthentication, autoPrintOrderOnline]);\n\n useEffect(() => {\n if (connection) {\n connection\n .start()\n .then((result) => {\n message.info(\"Connect auto print order online successfully\");\n connection.on(\"Notify\", (order: OrderModel) => {\n printTheOrder(order, logoPrint ?? \"\");\n });\n })\n .catch((e) => message.error(\"Connect auto print order online failed\"));\n }\n }, [connection]);\n\n useEffect(() => {\n getGlobalThemeSettingApi().then((res) => {\n let logoPrint = res.data.value[\"datalogoprint\"][\"value\"];\n setLogoPrint(logoPrint);\n });\n\n return () => {\n if (connection) {\n message.info(\"Stopped auto print order online\");\n connection.stop();\n }\n };\n }, []);\n}\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\ntype Config = {\n onSuccess?: (registration: ServiceWorkerRegistration) => void;\n onUpdate?: (registration: ServiceWorkerRegistration) => void;\n};\n\nexport function register(config?: Config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(\n process.env.PUBLIC_URL,\n window.location.href\n );\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl: string, config?: Config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl: string, config?: Config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' }\n })\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready\n .then(registration => {\n registration.unregister();\n })\n .catch(error => {\n console.error(error.message);\n });\n }\n}\n","import { ConfigProvider } from \"antd\";\n\nimport { store } from \"app.store\";\nimport React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { Provider } from \"react-redux\";\nimport viVN from \"antd/es/locale/vi_VN\";\nimport App from \"./app\";\nimport * as serviceWorker from \"./serviceWorker\";\n\nReactDOM.render(\n \n \n \n \n \n \n ,\n document.getElementById(\"root\")\n);\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister();\n"],"sourceRoot":""}