{"version":3,"sources":["fuji-address.ts","fuji-cart.ts","fuji-css-loader.ts","fuji-modals.ts","fuji-pagination.ts","fuji-reorder.ts","fuji-reports.ts","fuji-sort-options.ts","pages.ts","site.ts","pages/customer-cart/index.ts","pages/customer-checkout/_formData.ts","pages/customer-checkout/_repository.ts","pages/customer-checkout/_watcher.ts","pages/customer-checkout/index.ts","pages/customer-order-details/_form.ts","pages/customer-order-details/_repository.ts","pages/customer-order-details/index.ts","pages/customer-products/_repository.ts","pages/customer-products/_watcher.ts","pages/customer-products/index.ts","pages/management-customer-admin/_excel.ts","pages/management-customer-admin/_repository.ts","pages/management-customer-admin/_userView.ts","pages/management-customer-admin/_watcher.ts","pages/management-customer-admin/index.ts","pages/management-sales-admin-accountadmins/_addressForm.ts","pages/management-sales-admin-accountadmins/_excel.ts","pages/management-sales-admin-accountadmins/_repository.ts","pages/management-sales-admin-accountadmins/_watcher.ts","pages/management-sales-admin-accountadmins/index.ts","pages/management-sales-admin-companies/_addressForm.ts","pages/management-sales-admin-companies/_excel.ts","pages/management-sales-admin-companies/_repository.ts","pages/management-sales-admin-companies/_watcher.ts","pages/management-sales-admin-companies/index.ts","pages/management-sales-admin-contracts/_contractForm.ts","pages/management-sales-admin-contracts/_excel.ts","pages/management-sales-admin-contracts/_repository.ts","pages/management-sales-admin-contracts/_watcher.ts","pages/management-sales-admin-contracts/index.ts","pages/management-sales-admin-salesmen/_excel.ts","pages/management-sales-admin-salesmen/_repository.ts","pages/management-sales-admin-salesmen/_salesForm.ts","pages/management-sales-admin-salesmen/_watcher.ts","pages/management-sales-admin-salesmen/index.ts","pages/management-sales-admin-users/_repository.ts","pages/management-sales-admin-users/index.ts","pages/order-history/_cmsReport.ts","pages/order-history/_companyAdminReport.ts","pages/order-history/_companyApproverReport.ts","pages/order-history/_cscReport.ts","pages/order-history/_repository.ts","pages/order-history/index.ts","views/_auth-layout.ts","views/_cms-create-product-view.ts","views/_cms-edit-product-view.ts","views/_cms-products-view.ts","views/_companies-view.ts","views/_contract-view.ts","views/_forgot-password-view.ts","views/_home-view.ts","views/_layout-component.ts","views/_login-view.ts","views/_order-confirm-view.ts","views/_order-detail-view.ts","views/_orders-view.ts","views/_otp-view.ts","views/_password-view.ts","views/_profile-view.ts","views/_reports-view.ts","views/_sales-view.ts","views/_sign-up-view.ts"],"names":["fujiAddress","addressTemplate","id","code","name","lines","contactPersons","area","countryCode","phone","isDefault","cloneTemplate","JSON","parse","stringify","validate","type","address","errorCodes","prefix","push","messages","map","index","i18next","t","key","isValid","length","fujiCart","save","cart","localStorage","setItem","KEY","add","uniqueIds","submit","refreshRequire","that","axiosInstance","post","item","itemId","quantity","withCredentials","then","fetch","setUniqueIds","init","value","getItem","ids","items","_a","product","cartItem","__spreadArray","forEach","indexOf","instance","get","response","data","__awaiter","productID","res","sent","console","log","status","remainQty","quantityStr","toString","quantityInt","parseInt","alert","fujiCssLoader","isShowCssLoader","show","delay","Promise","resolve","setTimeout","hide","fujiModals","confirm","title","body","callback","close","isShow","this","fujiPagination","modelTemplate","totalPages","currentPage","totalEntries","currentPageTotalEntries","clone","newModel","pageSize","model","update","Math","ceil","toParams","page","$paginate","$wrapper","config","ulClassName","activeClassName","pagination","dataSource","Array","fill","pageNumber","pageRange","_","fujiReorder","previousOrder","serialized","clear","removeItem","exportCscOrdersReport","from","to","stage","keyword","params","axios","url","method","responseType","downloadResponse","exportCmsOrdersReport","exportOrderTransactionsReport","form","accountNumber","accountNo","customerName","companyName","salesIds","sales","dateFrom","luxon","DateTime","fromISO","orderFrom","toFormat","dateTo","orderTo","omNumber","omNo","stages","_b","orderStatus","categoryIds","_c","productCat","exportCustomerAdminOrdersReport","exportCustomerAdminUsersReport","exportSalesAdminCompaniesReport","exportSalesAdminUsersReport","companyId","exportSalesAdminSalesAssignmentsReport","salesId","exportSalesAdminContractsReport","exportCompanyAdminContractsReport","exportSalesAdminContractTemplate","fujiSortOptions","create","onSort","options","refresh","sort","isDescending","sortOptions","sortBy","pages","store","retrieve","_unused","remove","timeout","headers","Authorization","Accept","Accept-Language","interceptors","use","error","originalRequest","search","put","refreshToken","token","catch","err","window","location","href","reject","paginator","perPageItems","perPage","paginatedItems","slice","prePage","nextPage","total","convertPagination","per_page","rowPerPage","convertSortOptions","column","ascending","join","parseModelState","state","Object","entries","position","split","decapitalize","match","replace","row","field","offset","string","groups","getImportError","errors","showErrors","modelError","bullet","_i","message","getConvertedErrors","handleImport","endpoint","self","fileId","successfulCb","handler","file","fileInput","files","filename","importSummary","Content-Type","success","failed","finally","removeEventListener","importedModal","document","getElementById","addEventListener","click","handleCloseImportModal","handleExport","error_1","contentDisposition","filter","URL","createObjectURL","Blob","link","createElement","download","revokeObjectURL","capitalize","word","lower","toLowerCase","charAt","toUpperCase","capFirst","convertDate","date","result","convertDateTime","datetime","convertAmount","currencyCode","amount","toLocaleString","maximumFractionDigits","minimumFractionDigits","updateEntry","source","entry","isEqual","old","appendEntry","upsertEntries","replacements","reduce","some","getShoppingCart","user","getCurrentUser","updateShoppingCart","newCart","currentCart","currentUserCart","find","partNumber","d","__assign","batchUpsertShoppingCart","Error","getCartList","payload","jwt_decode","roles","isAnyAdmin","role","includes","joinRoles","$","getLineItems","shoppingCartStorage","cartList","pricingId","contractId","productId","price","sheets","returnCartPartialProduct","displayName","size","priceDesc","isContractPricing","isInCart","returnTableHead","splitTextareaValue","line","trim","CartView","updateCart","timer","clearTimeout","all","setItems","removeItems","delayInMs","setQuantity","removing","entity","extra","delete","changeQuantity","step","checkoutView","order","deliveryDate","lunchTime","customerPurchaseOrderNumber","shippingInstruction","ccEmailList","billingAsDeliveryAddress","useAdvanceInvoice","billingAddress","deliveryAddress","supportingDocument","minDeliveryDate","maxDeliveryDate","cmsDeliveryDate","toRequestForm","jsonKeys","formData","FormData","append","repository","fetchPaymentOptions","paymentOptions","fetchAddresses","billing","delivery","billingAddressEditable","deliveryAddressEditable","cloneAddressTo","billingAddresses","deliveryAddresses","fetchLunchOptions","lunchOptions","fetchDeliveryAreas","deliveryAreas","getEarliestDate","watcher","watch","watchAddress","flag","undefined","editable","addresses","$watch","collection","x","info","$nextTick","reorderDetails","deliveryArea","specialDeliveryInstructionDeliveryArea","lunchOption","CheckoutView","fillReorderInfo","placedOrder","orderReference","termsForm","now","plus","days","months","manageCSC","manageCMS","_d","agreeCheckout","isCheckoutMode","isConfirmedMode","currentStep","_this","toPriceString","target","handleUploadDocument","supportDocInput","val","off","isPublicHoliday","start","toISO","end","holiday","fromFormat","diff","validateForm","checkout","scrollTo","orderId","customerOrderDetailsView","internalOrderNumber","actualDeliveryDate","confirmRemark","cancelRemark","fetchDetails","orderModel","remarkLines","currentStage","shippingInstructionLines","isPaper","isCMS","isReadyForPayment","saveOrder","patch","confirmOrder","approveOrder","rejectOrder","confirmStatus","confirmStatusForSuperAdmin","confirmCancelOrder","addAddressToCompany","CustomerOrderDetailsView","editableStages","orderDetail","cancelRemarks","confirmRemarks","manageMode","_f","_e","_h","_g","_k","_j","manageSuperAdmin","_m","_l","manageDropdownStatus","_p","_o","_r","_q","_t","_s","_v","_u","manageApprover","_x","_w","handleConfirmOrder","orderNo","remarks","reload","paymentPostAndRedirect","FORM_URL","paymentData","OrderRef","Amount","grandTotal","UserId","Origin","Request","ok","productsView","fetchProducts","fetchLoading","finalSort","selectedCategory","query","searchProduct","productList","isActiveProduct","total_pages","fetchCategories","categoryList","$store","cartTotal","updateTotal","ProductsView","getQuantity","productDetail","category","contract","toggleMobileFilter","handleOnSortChange","e","v","checked","handleModalOpen","handleClearFilter","handleCartChange","isInput","quantityInput","quantityModalInput","targetInputVal","Number","handleAddToCart","handleMobileFilterOpen","customerAdminManagementView","excel","$excelInputUsers","users","selectExcel","import","importUsers","fetchUsers","apiBaseUrl","excelBaseUrl","company","contracts","views","fetchCompanyInfo","searchContracts","entities","fetchPricings","pricings","fetchUserAddresses","userId","createUser","updateUser","disableUser","addAddress","updateAddress","addressId","setDefaultAddress","deleteAddress","userView","editUser","isValidAddress","validated","keyEditable","propertyPrefix","isOpen","errorCode","billingId","deliveryId","billingEditable","deliveryEditable","editAddress","addBillingAddress","addDeliveryAddress","updateBillingAddress","updateDeliveryAddress","inactiveUserModal","checkedUsers","approverEmail","editEmptyUser","confirmDisable","firstName","lastName","fetchContracts","reset","CustomerAdminManagementView","isPricingsModal","showPricingsModal","SalesAdminManageAccountAdminsView","addressForm","refreshAddresses","accountAdminForm","edit","editCompany","fetchCompanies","companies","$excelInputCompanies","selectFile","inputId","importCompanies","searchAccountAdmins","addCompany","updateCompany","updateCompanies","checkedcompany","resetPassword","userIds","fetchUserCompaniesIds","addOrUpdateAccountAdmin","checkedCompanies","companyIds","administrator","array","fetchUserAndCompanyIds","updateAccountAdmin","addAccountAdmin","saveCustomers","salesAdminManageCompaniesView","customerForm","searchCompanies","SalesAdminManageCompaniesView","addOrUpdateCompany","salesAdminManageContractsView","contractForm","getFilter","contractNumber","startDay","endDay","Date","createContract","fnImport","fnCallback","$input","importContract","importContracts","formatDate","flatpickr","unitPrice","disableContract","SalesAdminManageContractsView","customerAdminRepository","inactiveContractModal","contractOnClick","numberOfPricings","number","salesAdminManageSalesmenView","assignments","importAssignments","currentSales","searchSalesmen","salesmen","createdDate","createdAtUtc","createSales","profile","updateSales","searchAssignments","salesForm","filters","openSalesForm","isEdit","saveSales","email","chain","SalesAdminManageSalesmenView","salesAdminManagementView","baseRepository","SalesAdminManageUsersView","orderHistoryView","cmsReport","generate","startOf","endOf","searchOrders","companyAdminReport","companyApproverReport","cscReport","bindOrders","orders","fetchOrders","fetchMyOrders","monthFrom","monthTo","internalMode","reorderModel","cancelOrderModel","handleFilterSelect","f","handleOnConfirmClick","stopPropagation","err_1","closeExtraChargeModal","cancelOrder","currentHour","reference","isExtraCharge","reorder","placedOrderReference","URL_CHECKOUT","AuthLayout","i18nInitialed","handleChangeLanguage","l","changeLanguage","jqueryI18next","tName","i18nName","localize","documentElement","setAttribute","CreateProductView","urlProducts","currencyList","editData","Name","DisplayName","PartNumber","CategoryId","Price","CurrencyCode","Size","Gsm","Type","PrimaryUnit","SecondaryUnit","TertiaryUnit","SortingSequence","IsActive","Description","Thumbnail","fetchCategoryList","fetchCurrencyList","preview","reader","FileReader","readAsDataURL","onloadend","src","handleCreateProduct","handleOnCancelClick","EditProductView","handleEditProduct","CmsProductsView","errorMessage","openCatModal","deleteableList","newCategory","fetchProductList","handleCreateCategory","handleDeleteCategory","cat","handleImportProduct","_productFileInput","_instance","on","handleExportProduct","Content-type","appendChild","handleExportCategory","handleUploadImage","_formData","imageFileInput","i","toggleCatModalOpen","handleOnPageChange","CompaniesView","isSalesAdmin","unit","newContract","companyList","companyUserList","companyUserPagination","total_count","companyUserSort","billingAddressList","deliveryAddressList","contractList","contractPagination","contractSort","pricingList","pricingPagination","pricingSort","searchCompany","searchCompanyUser","selectedCompanyId","selectedCompany","isCreating","isEditing","isCreatingContract","newCompany","newCompanyError","showMobileDetail","contractDetail","fetchCompanyList","ov","fetchCompanyUsers","fetchCompanyDetail","fetchBillingAddress","fetchDeliveryAddress","allowImport","initialDatepicker","input","text","onOpen","_selectedDates","_dateStr","maxDate","defaultDate","onChange","selectedDates","dateStr","_flatpickr","setDate","minDate","content-type","err_2","err_3","err_4","err_5","err_6","err_7","toggleEdit","isTender","contactPerson","contactPersonEmail","warehouse","handleWarehouseClick","w","createCompany","handleCancelClick","o","handleSelectCompany","handleCreateContract","values","documentInput","handleCancelCreateContract","handleCompanyExport","handleCompanyImport","handleDeliAddrExport","handleDeliAddrImport","handleBillAddrExport","handleBillAddrImport","handleContractImport","handleExportDefaultContractProductList","handleCompanyUsersExportByCompany","handleCompanyUsersImportByCompany","handleExportUsersAddressesByCompany","handleImportUsersAddressesByCompany","handleSetFilter","toggleShowMobileDetail","handleGoToContractDetail","e_1","handleCloseContractDetailModal","ContractView","selectedContract","searchContract","select2","debug","placeholder","event","fetchContract","fetchProductInContract","filterContractList","contractNo","selected","onSelectContract","handleOnEditContract","Id","handleStatusClick","mode","trigger","handleExportContractProductList","handleContractProductImport","handleFormatDate","handleImportContracts","ForgotPasswordView","loading","submitForm","HomeView","MOCK_CARD","count","MOCK_SECTION","tabTitle","tableTitle","newOrders","cardList","sectionList","goto","fetchCard","fetchSection","CUSTOMER","CUSTOMER_USER","ORDER","PRODUCT","CONTRACT","SALES","getWelcomeMessage","newOrderCount","getCurrentSectionItemList","s","getRedirectObject","scrollSection","scrollWidth","scrollLeft","animate","handleChangeFilter","setDefaultTab","defaultTab","tabs_1","tab","this_1","parseValue","LayoutComponent","userRoles","userName","companiesVisible","cartItemNumber","tabPermission","showHome","showSales","showCustomers","showOrders","showProducts","showContracts","showReports","showShoppingCarts","openMenu","Alpine","n","i18nextXHRBackend","i18nextBrowserLanguageDetector","detection","load","whitelist","fallbackLng","backend","loadPath","language","userRole","COMPANY_ADMIN","COMPANY_CUSTOMER","CSC","CMS","SALES_ADMIN","COMPANY_APPROVER","SUPER_ADMIN","comparePath","pathname","setCartItemNumber","handleOpenMenu","LoginView","showPassword","password","isAuthorizing","toggleShowPassword","OrderConfirmView","snapshotList","deliveryCharge","snapshotObj","expire","snapTime","toMillis","getSnapShotTotalAmount","getDeliveryCharge","getTotalOrderAmount","handleBackToTop","OrderDetailView","fetchOrderDetail","orderDetailPath","orderDetailId","OrderView","orderList","openPopover","agreeExtraCharge","agreeExtraChargeModal","fetchOrderList","handleGoToOrderDetail","handleAgreeExtraChargeModalClose","handleOnRequestForCancel","handleOpenPopover","idx","getOrder","handleOnReorder","lineItems","productName","productPartNumber","productSize","obj","OtpView","submitLoading","timerDelta","resendTimer","code1","code2","code3","code4","code5","code6","getUser","setResendTimer","setTimer","setInterval","sendCode","clearTimer","clearInterval","PasswordView","isIncorrectPassword","showCurrentPassword","showNewPassword","showNewConfirmPassword","currentPassword","newPassword","newConfirmPassword","errorMessages","oldPassword","Password","toggleShowCurrentPassword","toggleShowNewPassword","toggleShowNewConfirmPassword","ProfileView","customer","salesperson","newCustomer","newSalesperson","newUser","userList","rawCallingCode","rawPhone","fetchUser","fetchSalesperson","fetchCustomer","error_2","error_3","updateSalesperson","error_4","updateCustomer","error_5","error_6","handleOnLogoutClick","handleResetPassword","ReportsView","orderStatusList","salesParamList","productCatList","orderTransactionsForm","orderSummaryForm","customerReport","salesReport","productReport","productNumber","contractReport","startFrom","startTo","orderTransactions","orderSummary","customers","products","fetchOrderStatusList","fetchSalesParamList","fetchProductCatList","targetValue","set","years","minus","exportOrderTransaction","_getSendData","CompanyName","AccountNo","Salespersons","CategoryIds","OrderNo","Start","End","OrderStatuses","FirstName","LastName","Email","ContractNo","CustomerName","SalesView","openDelegateModal","searchSales","salesList","selectedSales","newSales","delegateFormData","delegateeId","fetchSalesList","onSelectSales","filterSalesList","filterCompanyList","_filteredList","_paginator","firstname","lastname","_error","delegateList","createDelegate","handleDelegateClick","getNumberOfPage","handleSalesExport","handleSalesImport","upload","handleExportDefaultAssignments","handleCompanyAssignmentExport","handleCompanyAssignmentImport","SignUpView"],"mappings":"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","file":"site.min.js","sourcesContent":["const fujiAddress = (() => {\r\n type template = {\r\n id: string,\r\n code: string,\r\n name: string,\r\n\r\n lines: string[],\r\n contactPersons: string[],\r\n\r\n area: string,\r\n countryCode: string,\r\n phone: string,\r\n\r\n isDefault: boolean,\r\n };\r\n const addressTemplate: template = {\r\n id: '',\r\n code: '',\r\n name: '',\r\n\r\n lines: [] as any,\r\n contactPersons: [] as any,\r\n\r\n area: '',\r\n countryCode: '852',\r\n phone: '',\r\n\r\n isDefault: false\r\n };\r\n\r\n return {\r\n cloneTemplate: () => {\r\n return JSON.parse(JSON.stringify(addressTemplate)) as template;\r\n },\r\n validate: (type: string, address: template) => {\r\n const errorCodes = [] as string[];\r\n const prefix = type == 'Billing' ? 'bill' : 'deli';\r\n\r\n if (!address.lines[0]) {\r\n errorCodes.push(`${prefix}Addr`);\r\n }\r\n if (!address.lines[2]) {\r\n errorCodes.push(`${prefix}Addr3`);\r\n }\r\n if (!address.lines[3]) {\r\n errorCodes.push(`${prefix}Addr4`);\r\n }\r\n if (!address.area) {\r\n errorCodes.push(`${prefix}Area`);\r\n }\r\n\r\n if (!address.contactPersons[0]) {\r\n errorCodes.push(`${prefix}Contact`);\r\n }\r\n if (!address.phone) {\r\n errorCodes.push(`${prefix}Phone`);\r\n }\r\n\r\n return {\r\n errorCodes,\r\n messages: errorCodes.map((code, index) => ({\r\n messages: [i18next.t(`orderCheckoutValidation.${code}`)],\r\n key: index,\r\n })),\r\n isValid: errorCodes.length <= 0,\r\n };\r\n }\r\n };\r\n})();","const fujiCart = (() => {\n const KEY = 'FUJI_SHOPPING_CART';\n\n const save = cart => localStorage.setItem(KEY, JSON.stringify({\n add: cart.add,\n uniqueIds: cart.uniqueIds\n }));\n const fetch = () => {\n return axiosInstance.get('/api/cart-items/my', { withCredentials: true })\n .then(response => that.cart.items = response.data);\n };\n const submit = () => {\n const refreshRequire = that.cart.add.length > 0;\n\n return axiosInstance\n .post(\n \"/api/cart-items/add\",\n that.cart.add.map(item => {\n return {\n itemId: item.id,\n quantity: item.quantity,\n };\n }),\n { withCredentials: true }\n )\n .then(() => {\n that.cart.add = [];\n if (refreshRequire) {\n fujiCart.fetch();\n } else {\n setUniqueIds();\n }\n });\n };\n\n const init = () => {\n const value = localStorage.getItem(KEY);\n\n if (value) {\n const cart = JSON.parse(value);\n\n that.cart = cart;\n that.cart.add = cart.add;\n that.cart.uniqueIds = cart.uniqueIds;\n that.cart.submit = submit;\n } else {\n save({\n add: [] as any[],\n uniqueIds: [] as any[]\n });\n init();\n }\n\n fujiCart.fetch();\n };\n const setUniqueIds = () => {\n const ids = [] as any[];\n const cart = that.cart;\n const items = (cart.items ?? []).map(item => {\n return {\n id: item.product.id,\n quantity: item.cartItem.quantity\n };\n });\n\n [...items, ...cart.add].forEach((item: any) => {\n if (ids.indexOf(item.id) < 0) ids.push(item.id);\n });\n\n that.cart.uniqueIds = ids;\n save(that.cart);\n };\n\n let that;\n\n return {\n init: instance => {\n that = instance;\n init();\n },\n fetch: () => fetch().then(() => setUniqueIds()),\n add: async (product: Product, quantity: number) => {\n const productID = product.id;\n var remainQty;\n const res = await axiosInstance.get(`/products/getremainingqty/${productID}`);\n console.log(res);\n debugger;\n if (res.status === 200) {\n remainQty = res.data;\n console.log(remainQty);\n }\n\n var quantityStr = quantity.toString();\n\n var quantityInt = parseInt(quantityStr);\n\n if (remainQty < quantity) {\n alert(\"not enough remaining contract qty, the remaining qty is: \" + remainQty);\n }\n\n if (remainQty > quantityInt) {\n that.cart.add.push({\n quantity:quantityInt,\n id: product.id\n });\n }\n\n setUniqueIds();\n },\n };\n})();","const fujiCssLoader = (() => {\r\n const defaultDelay = 1000;\r\n\r\n let that;\r\n\r\n return {\r\n init: instance => {\r\n that = instance;\r\n that.isShowCssLoader = false;\r\n },\r\n show: (delay?: number) => {\r\n return new Promise((resolve) => {\r\n that.isShowCssLoader = true;\r\n setTimeout(resolve, delay || defaultDelay);\r\n });\r\n },\r\n hide: () => that.isShowCssLoader = false,\r\n };\r\n})();","const fujiModals = {\r\n confirm: (title, body, callback, close) => {\r\n let that;\r\n\r\n return {\r\n title,\r\n body,\r\n isShow: true,\r\n confirm: callback,\r\n close: () => {\r\n that.isShow = false;\r\n close();\r\n },\r\n init: function () {\r\n that = this;\r\n },\r\n };\r\n },\r\n};","const fujiPagination = (() => {\r\n const modelTemplate = {\r\n totalPages: 1,\r\n currentPage: 1,\r\n totalEntries: 0,\r\n currentPageTotalEntries: 0,\r\n\r\n clone: () => JSON.parse(JSON.stringify(modelTemplate)),\r\n };\r\n\r\n return {\r\n newModel: (pageSize) => {\r\n const model = modelTemplate.clone();\r\n model.pageSize = pageSize;\r\n\r\n return model;\r\n },\r\n update: (model, data) => {\r\n model.currentPageTotalEntries = data.currentPage.length;\r\n model.totalEntries = data.totalEntries;\r\n model.totalPages = Math.ceil(data.totalEntries / model.pageSize);\r\n },\r\n toParams: (model) => {\r\n return {\r\n page: model.currentPage,\r\n pageSize: model.pageSize,\r\n };\r\n },\r\n $paginate: (model, $wrapper, config?) => {\r\n config = config ?? {\r\n ulClassName: \"pagination--ul\",\r\n activeClassName: \"pagination__item--selected\",\r\n };\r\n\r\n $wrapper.pagination({\r\n dataSource: new Array(model.totalEntries).fill(\",\"),\r\n pageNumber: model.currentPage,\r\n pageSize: model.pageSize,\r\n pageRange: 1,\r\n ulClassName: config.ulClassName,\r\n activeClassName: config.activeClassName,\r\n callback: (_, pagination) => {\r\n model.currentPage = pagination.pageNumber;\r\n },\r\n });\r\n }\r\n };\r\n})();","const fujiReorder = (() => {\r\n const KEY = 'FUJI_REORDER';\r\n\r\n return {\r\n save: previousOrder => {\r\n localStorage.setItem(KEY, JSON.stringify(previousOrder))\r\n },\r\n get: () => {\r\n const serialized = localStorage.getItem(KEY);\r\n\r\n if (serialized) return JSON.parse(serialized);\r\n return null;\r\n },\r\n clear: () => localStorage.removeItem(KEY),\r\n };\r\n})();","const exportCscOrdersReport = (from, to, stage?, keyword?) => {\n const params = {\n from,\n to,\n keyword,\n stage: stage == null || stage.length <= 0 ? null : stage\n };\n\n return fujiCssLoader.show()\n .then(() => axios({\n params,\n url: '/excel/placed-orders/csc',\n method: 'GET',\n responseType: 'blob',\n }))\n .then(response => downloadResponse(response))\n .then(fujiCssLoader.hide);\n};\n\nconst exportCmsOrdersReport = (from, to, stage?, keyword?) => {\n const params = {\n from,\n to,\n keyword,\n stage: stage == null || stage.length <= 0 ? null : stage\n };\n\n return fujiCssLoader.show()\n .then(() => axios({\n params,\n url: '/excel/placed-orders/cms',\n method: 'GET',\n responseType: 'blob',\n }))\n .then(response => downloadResponse(response))\n .then(fujiCssLoader.hide);\n};\n\nconst exportOrderTransactionsReport = (form) => {\n const params = {\n accountNumber: form.accountNo,\n customerName: form.companyName,\n salesIds: form.sales?.map(sales => sales),\n dateFrom: luxon.DateTime.fromISO(form.orderFrom).toFormat('dd LLLL, yyyy'),\n dateTo: luxon.DateTime.fromISO(form.orderTo).toFormat('dd LLLL, yyyy'),\n omNumber: form.omNo,\n stages: form.orderStatus?.map(stage => stage),\n categoryIds: form.productCat?.map(id => id),\n };\n\n return fujiCssLoader.show()\n .then(() => axios({\n params,\n url: '/excel/placed-orders/transactions',\n method: 'GET',\n responseType: 'blob',\n }))\n .then(response => downloadResponse(response))\n .then(fujiCssLoader.hide);\n};\n\nconst exportCustomerAdminOrdersReport = (from, to) => {\n const params = { from, to, };\n\n return fujiCssLoader.show()\n .then(() => axios({\n params,\n url: '/excel/placed-orders/company-admin',\n method: 'GET',\n responseType: 'blob',\n }))\n .then(response => downloadResponse(response))\n .then(fujiCssLoader.hide);\n};\n\nconst exportCustomerAdminUsersReport = () => {\n return fujiCssLoader.show()\n .then(() => axios({\n url: '/excel/management/customer-admin/export-users',\n method: 'GET',\n responseType: 'blob',\n }))\n .then(response => downloadResponse(response))\n .then(fujiCssLoader.hide);\n};\n\nconst exportSalesAdminCompaniesReport = () => {\n return fujiCssLoader.show()\n .then(() => axios({\n url: '/excel/management/sales-admin/export-companies',\n method: 'GET',\n responseType: 'blob',\n }))\n .then(response => downloadResponse(response))\n .then(fujiCssLoader.hide);\n};\n\nconst exportSalesAdminUsersReport = (companyId) => {\n return fujiCssLoader.show()\n .then(() => axios({\n url: `/excel/management/sales-admin/companies/${companyId}/export-users`,\n method: 'GET',\n responseType: 'blob',\n }))\n .then(response => downloadResponse(response))\n .then(fujiCssLoader.hide);\n};\n\nconst exportSalesAdminSalesAssignmentsReport = (salesId) => {\n return fujiCssLoader.show()\n .then(() => axios({\n url: `/excel/management/sales-admin/salesmen/${salesId}/export-assignments`,\n method: 'GET',\n responseType: 'blob',\n }))\n .then(response => downloadResponse(response))\n .then(fujiCssLoader.hide);\n};\n\nconst exportSalesAdminContractsReport = () => {\n return fujiCssLoader.show()\n .then(() => axios({\n url: '/excel/management/sales-admin/contracts/export',\n method: 'GET',\n responseType: 'blob',\n }))\n .then(response => downloadResponse(response))\n .then(fujiCssLoader.hide);\n};\n\nconst exportCompanyAdminContractsReport = () => {\n return fujiCssLoader.show()\n .then(() => axios({\n url: '/excel/management/customer-admin/contracts/export',\n method: 'GET',\n responseType: 'blob',\n }))\n .then(response => downloadResponse(response))\n .then(fujiCssLoader.hide);\n};\n\nconst exportSalesAdminContractTemplate = (id) => {\n return fujiCssLoader.show()\n .then(() => axios({\n url: `/excel/management/sales-admin/contracts/${id}/export`,\n method: 'GET',\n responseType: 'blob',\n }))\n .then(response => downloadResponse(response))\n .then(fujiCssLoader.hide);\n};","const fujiSortOptions = {\r\n create: () => {\r\n let that;\r\n let onSort;\r\n\r\n return {\r\n options: null,\r\n\r\n init: (instance, refresh) => {\r\n that = instance;\r\n onSort = refresh;\r\n },\r\n sort: name => {\r\n const isDescending = !(that.sortOptions.options?.isDescending ?? true);\r\n\r\n that.sortOptions.options = {\r\n isDescending,\r\n sortBy: name,\r\n };\r\n onSort();\r\n },\r\n };\r\n },\r\n};","const pages: any = {};","/* ----- Utils ----- */\n\n// Local storage\nconst store = (key: string, data: string): void => {\n localStorage.setItem(key, data);\n};\n\nconst retrieve = (key: string): string | object | null => {\n var data = localStorage.getItem(key);\n\n if (data) {\n try {\n return JSON.parse(data);\n } catch (_unused) {\n return data;\n }\n }\n\n return null;\n};\n\nconst remove = (key: string): void => {\n localStorage.removeItem(key);\n};\n\n// Axios\nconst axiosInstance = axios.create({\n timeout: 120 * 60 * 1000,\n headers: {\n Authorization: retrieve(\"token\"),\n Accept: \"application/json\",\n \"Accept-Language\": \"en\",\n },\n});\n\n//axiosInstance.interceptors.request.use(\n// async config => {\n// config.headers['Accept-Language'] = retrieve(\"i18nextLng\") || \"en\";\n// return config;\n// },\n// error => {\n// Promise.reject(error)\n// }\n//);\n\naxiosInstance.interceptors.response.use(\n (response) => {\n return response;\n },\n (error) => {\n if (error.response) {\n var originalRequest = error.config;\n if (\n error.response.status === 401 &&\n originalRequest.url.search(\"/login\") < 0\n ) {\n return axios\n .put(\"/auth/login\", {\n refreshToken: retrieve(\"refreshToken\"),\n })\n .then((res: any) => {\n if (res.status === 200 && res.data) {\n store(\"token\", res.data.token);\n store(\"refreshToken\", res.data.refreshToken);\n originalRequest.headers.Authorization =\n \"Bearer \" + res.data.token;\n return axios(originalRequest);\n }\n })\n .catch((err: any) => {\n window.location.href = \"/auth/login\";\n return Promise.reject(err);\n });\n }\n }\n return Promise.reject(error);\n }\n);\n\n// Paginator\n\nconst paginator = (items: any[], currentPage: number, perPageItems: number) => {\n const page = currentPage || 1;\n const perPage = perPageItems || 10;\n const offset = (page - 1) * perPage;\n\n const paginatedItems = items.slice(offset).slice(0, perPageItems);\n const totalPages = Math.ceil(items.length / perPage);\n\n return {\n page: page,\n perPage: perPage,\n prePage: page - 1 ? page - 1 : null,\n nextPage: totalPages > page ? page + 1 : null,\n total: items.length,\n totalPages: totalPages,\n data: paginatedItems,\n };\n};\n\nconst convertPagination = ({\n currentPage,\n rowPerPage,\n}: Pagination): ApiPaginationOptions => ({\n page: currentPage,\n per_page: rowPerPage,\n});\n\nconst convertSortOptions = (options: SortOption[]): string =>\n options\n .map(({ column, ascending }) => `${ascending ? \"+\" : \"-\"}${column}`)\n .join(\", \");\n\nconst parseModelState = (state: ModelState): ImportError[] =>\n (Object.entries(state) as Array<[string, string[]]>)\n .map(\n ([position, messages]): ImportError => ({\n position: position.split(\".\").map(decapitalize).join(\".\"),\n messages,\n })\n )\n .map(({ position, messages }) => ({\n position: position.match(/^\\[\\d+\\]/)\n ? position.replace(\n /^(?:\\[(\\d+)\\]\\.)?(.*)$/,\n (match, row, field, offset, string, groups) =>\n `Row ${+row + 1}: ${field}`\n )\n : position,\n messages,\n }));\n\nconst getImportError = ({ response }: any): ImportFailedSummary => ({\n errors: parseModelState(response.data as ModelState),\n});\n\nconst showErrors = (\n modelError: ModelError,\n state: ModelState,\n bullet: string = \"-\"\n): void => {\n // borrow parseModelState\n for (const { position, messages } of parseModelState(state)) {\n modelError[decapitalize(position)] = messages\n .map((message) => `\\t${bullet} ${message}`)\n .join(\"\\n\");\n }\n};\n\nconst getConvertedErrors = (state: ModelState): any[] => {\n let errors = [] as Array;\n for (const { position, messages } of parseModelState(state)) {\n errors.push({\n messages,\n key: position,\n });\n }\n\n return errors;\n};\n\nconst handleImport = (\n endpoint: string,\n self: { importSummary: ImportSummary; importedModal: boolean },\n fileId: string = \"fileid\",\n successfulCb: () => void = () => { }\n): void => {\n const fileInput = document.getElementById(fileId) as HTMLInputElement;\n const handler = () => {\n const file = fileInput.files![0];\n const filename = (self.importSummary.filename = file.name);\n\n axiosInstance\n .put(endpoint, file, {\n headers: {\n \"Content-Type\":\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\",\n filename,\n },\n })\n .then((res) => {\n if (res.status === 200) {\n self.importSummary.success = res.data!;\n self.importSummary.total = res.headers[\"total-records\"] as number;\n if (successfulCb) {\n successfulCb();\n }\n\n return;\n }\n alert(\"Success but not 200 OK\");\n })\n .catch((error) => {\n const { response } = error;\n if (response.status === 400) {\n self.importSummary.failed = getImportError({ response });\n self.importSummary.total = response.headers[\n \"total-records\"\n ] as number;\n return;\n }\n alert(JSON.stringify(error, null, 2));\n })\n .finally(() => {\n fileInput.removeEventListener(\"change\", handler);\n fileInput.value = \"\";\n self.importedModal = true;\n });\n };\n self.importedModal = false;\n fileInput!.addEventListener(\"change\", handler, false);\n fileInput.click();\n};\n\nconst handleCloseImportModal = (self: {\n importSummary: ImportSummary;\n importedModal: boolean;\n}): void => {\n self.importedModal = false;\n self.importSummary = {\n total: null,\n filename: null,\n success: null,\n failed: null,\n };\n};\n\nconst handleExport = async (endpoint: string): Promise => {\n try {\n const res = await axiosInstance.get(endpoint, {\n responseType: \"blob\",\n withCredentials: true,\n headers: {\n Accept:\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\",\n },\n });\n\n if (res.status === 200) {\n downloadResponse(res);\n }\n } catch (error) {\n console.log(error);\n alert((error as any).message);\n }\n};\n\n// Filename Processor\nconst downloadResponse = (res: any) => {\n const contentDisposition = res.headers[\"content-disposition\"];\n const [filename] = contentDisposition\n .split(/;\\s*/)\n .filter((item) => item.match(/^filename='?/i))\n .map((item) => item.replace(/^filename=[\"']?(.*)[\"']?/, \"$1\"))\n .map((item) => item.replace(/[\"']*$/, ''));\n console.log({ contentDisposition, filename });\n const url = window.URL.createObjectURL(new Blob([res.data]));\n const link = document.createElement(\"a\");\n link.href = url;\n link.download = filename;\n link.click();\n window.URL.revokeObjectURL(url);\n};\n\nconst capitalize = (word: string): string => {\n const lower = word.toLowerCase();\n return word.charAt(0).toUpperCase() + lower.slice(1);\n};\n\nconst capFirst = (word: string): string => {\n return word.charAt(0).toUpperCase() + word.slice(1);\n};\n\nconst decapitalize = (word: string): string => {\n return word.charAt(0).toLowerCase() + word.slice(1);\n};\n\nconst convertDate = (date: string): string => {\n if (date == null) return \"\";\n var DateTime = luxon.DateTime;\n var result = DateTime.fromISO(date).toFormat(\"dd LLL yyyy\");\n if (result == \"01 Jan 0001\") result = \"\";\n return result;\n};\n\nconst convertDateTime = (datetime: string): string => {\n if (datetime === null) {\n return \"\";\n }\n const result =\n luxon.DateTime.fromISO(datetime).toFormat(\"dd LLL yyyy h:mm a\");\n return result === \"01 Jan 0001 12:00 AM\" ? \"\" : result;\n};\n\nconst convertAmount = (currencyCode: string, amount: number): string => {\n return (\n currencyCode +\n \" $\" +\n amount.toLocaleString(\"en-US\", {\n maximumFractionDigits: 2,\n minimumFractionDigits: 2,\n })\n );\n};\n\nconst updateEntry = (\n source: T[],\n entry: T,\n isEqual: (a: T, b: T) => boolean\n): T[] => source.map((old) => (isEqual(old, entry) ? entry : old));\n\nconst appendEntry = (source: T[], entry: T): T[] => [...source, entry];\n\nconst upsertEntries = (\n source: T[],\n replacements: T[],\n isEqual: (a: T, b: T) => boolean\n): T[] =>\n replacements.reduce(\n (source: T[], entry: T) =>\n source.some((old) => isEqual(old, entry))\n ? // update\n updateEntry(source, entry, isEqual)\n : // append\n appendEntry(source, entry),\n source\n );\n\n// FIXME: change to this\nconst getShoppingCart = (): ShoppingCart | null => {\n const user = getCurrentUser();\n return retrieve(\"SHOPPING_CART\")?.[user!.id] as ShoppingCart | null;\n};\n\nconst updateShoppingCart = (item: Partial, quantity: number) => {\n const user = getCurrentUser();\n const currentCart = retrieve(\"SHOPPING_CART\");\n const currentUserCart = currentCart?.[user!.id] as ShoppingCart;\n // Do Update\n if (currentUserCart && typeof currentUserCart === \"object\") {\n let newCart: { items: ShoppingCartItem[] } | null = null;\n const found = currentUserCart.items.find(\n (old) => old.product.partNumber === item.partNumber\n );\n if (!found) {\n newCart = {\n items: [...currentUserCart.items, ...[{ product: item, quantity }]],\n };\n } else {\n newCart = {\n items: currentUserCart.items.map((d) => {\n if (d.product.partNumber === item.partNumber) {\n return { product: item, quantity };\n }\n return d;\n }),\n };\n }\n currentCart![user!.id] = newCart;\n store(\"SHOPPING_CART\", JSON.stringify(currentCart));\n } else {\n if (!currentCart) {\n const newCart = { [user!.id]: { items: [{ product: item, quantity }] } };\n\n store(\"SHOPPING_CART\", JSON.stringify(newCart));\n } else {\n const newCart = {\n ...(currentCart as object),\n ...{ [user!.id]: { items: [{ product: item, quantity }] } },\n };\n store(\"SHOPPING_CART\", JSON.stringify(newCart));\n }\n }\n};\n\nconst batchUpsertShoppingCart = (items: ShoppingCartItem[]) => {\n const user = getCurrentUser();\n if (!user) {\n throw new Error(\"cannot find current user.\");\n }\n\n const currentCart = retrieve(\"SHOPPING_CART\");\n const currentUserCart = (currentCart?.[user!.id] ?? { items: [] }) as ShoppingCart;\n\n currentCart![user!.id] = {\n items: upsertEntries(\n currentUserCart.items,\n items,\n (old: ShoppingCartItem, entry: ShoppingCartItem) =>\n old.product.partNumber === entry.product.partNumber\n ),\n };\n store(\"SHOPPING_CART\", JSON.stringify(currentCart));\n};\n\nconst getCartList = (): ShoppingCartItem[] => {\n const currentCart = getShoppingCart() as ShoppingCart | null;\n if (currentCart && typeof currentCart === \"object\") {\n return currentCart?.items || [];\n }\n return [];\n};\n\nconst getCurrentUser = (): UserClaim | null => {\n const token = retrieve(\"token\") as string;\n const payload = jwt_decode(token) as any;\n return {\n ...payload,\n // massage roles to force it into string[]\n roles:\n typeof payload!.roles === \"string\" ? [payload!.roles] : payload!.roles,\n } as UserClaim;\n};\n\nconst isAnyAdmin = (user: UserClaim): boolean =>\n user.roles.some((role) => role.includes(\"ADMIN\") || role === \"CSC\" || role === \"CMS\");\n\nconst joinRoles = (roles: string[]): string =>\n roles.map((role) => $.t(`userRoles.${role}`)).join(\", \");\n\nconst getLineItems = () => {\n const shoppingCartStorage = getShoppingCart() as any;\n if (shoppingCartStorage == null) {\n return [];\n }\n const user = getCurrentUser();\n const cartList = shoppingCartStorage;\n console.log('cartList', cartList);\n if (cartList && typeof cartList === \"object\") {\n const submitData = cartList.items.map((item) => ({\n currencyCode: item.product.currencyCode,\n pricingId: item.product.pricingId,\n contractId: item.product.contractId,\n productId: item.product.id,\n price: item.product.price,\n quantity: item.quantity,\n sheets: item.product.sheets,\n }));\n return submitData;\n }\n return [];\n};\n\nconst returnCartPartialProduct = (product: Product): Partial => {\n return {\n id: product.id,\n name: product.displayName,\n partNumber: product.partNumber,\n size: product.size,\n price: product.price,\n currencyCode: product.currencyCode,\n priceDesc: product.priceDesc,\n pricingId: product.pricingId,\n contractId: product.contractId,\n sheets: product.sheets,\n };\n};\n\nconst isContractPricing = (product: Product): boolean => {\n return product.contractId > 0;\n};\n\nconst isInCart = (product: Product): boolean => {\n const currentCart = retrieve(\"SHOPPING_CART\") as {\n items: ShoppingCartItem[];\n } | null;\n const found = currentCart?.items.find(\n (old) => old.product.partNumber === product.partNumber\n );\n return !!found;\n};\n\nconst returnTableHead = (type: string): string[] => {\n switch (type) {\n case \"CUSTOMER\":\n return [\n \"customerName\",\n \"accountNo\",\n \"phoneNo\",\n \"companyEmail\",\n \"contactPerson\",\n \"contactPersonAddress\",\n ];\n case \"CUSTOMER_USER\":\n return [\n \"userName\",\n \"firstName\",\n \"lastName\",\n \"emailAddress\",\n \"phoneNumber\",\n ];\n case \"ORDER\":\n return [\n \"omNo\",\n \"customer\",\n \"status\",\n \"orderDate\",\n \"orderAmount\",\n \"deliveryDate\",\n ];\n case \"PRODUCT\":\n return [\n \"contractNo\",\n \"productPartNo\",\n \"productCategory\",\n \"productName\",\n \"currency\",\n \"price\",\n \"gsm\",\n \"sheets\",\n ];\n case \"CONTRACT\":\n return [\n \"contractNumber\",\n \"customer\",\n \"status\",\n \"startDate\",\n \"endDate\",\n \"noOfProducts\",\n ];\n case \"SALES\":\n return [\n \"firstName\",\n \"lastName\",\n \"userName\",\n \"emailAddress\",\n \"phoneNumber\",\n \"salesStatus\",\n \"createDate\",\n ];\n default:\n return [];\n }\n};\n\nconst splitTextareaValue = value => {\n return (value ?? '')\n .split(/\\r?\\n/)\n .map(line => (line ?? '').trim())\n .filter(line => line.length > 0);\n};\n/* ----- End of Utils ----- */","const CartView = (): any => {\r\n const delayInMs = 2000;\r\n const removing = [] as any;\r\n const setItems: any = () => {\r\n return axiosInstance\r\n .post(\r\n \"/api/cart-items/set\",\r\n that.cart.items.map(entity => {\r\n return {\r\n itemId: entity.product.id,\r\n quantity: entity.cartItem.quantity,\r\n extra: entity.extra,\r\n };\r\n }),\r\n { withCredentials: true }\r\n );\r\n };\r\n const removeItems: any = () => {\r\n if (removing.length <= 0) return null;\r\n\r\n return axiosInstance\r\n .delete(\"/api/cart-items\", {\r\n data: removing,\r\n withCredentials: true\r\n })\r\n .then(() => removing.length = 0);\r\n };\r\n\r\n const updateCart = () => {\r\n if (that.timer != null) clearTimeout(that.timer);\r\n\r\n that.timer = setTimeout(() => {\r\n axios.all([setItems(), removeItems()])\r\n .then(() => {\r\n fujiCart.fetch();\r\n that.timer = null;\r\n });\r\n }, delayInMs);\r\n };\r\n const setQuantity = (cartItem, quantity) => {\r\n if (quantity <= 0) return;\r\n\r\n cartItem.quantity = quantity;\r\n updateCart();\r\n };\r\n\r\n let that;\r\n\r\n return {\r\n setQuantity,\r\n timer: null,\r\n\r\n init: function () {\r\n that = this;\r\n\r\n fujiCart.init(this);\r\n this.cart.submit();\r\n },\r\n\r\n changeQuantity: (cartItem, step) => {\r\n setQuantity(cartItem, cartItem.quantity + step);\r\n },\r\n removeItem: (id) => {\r\n if (removing.indexOf(id) < 0) {\r\n removing.push(id);\r\n updateCart();\r\n\r\n that.cart.items = that.cart\r\n .items\r\n .filter(item => item.id != id);\r\n }\r\n },\r\n };\r\n};","if (pages.checkoutView == null) {\n pages.checkoutView = {};\n}\n\npages.checkoutView.form = (() => {\n const data = {\n order: {\n id: null,\n deliveryDate: '',\n lunchTime: '',\n customerPurchaseOrderNumber: '',\n shippingInstruction: '',\n ccEmailList:'',\n\n billingAsDeliveryAddress: false,\n useAdvanceInvoice: false,\n },\n billingAddress: fujiAddress.cloneTemplate(),\n deliveryAddress: fujiAddress.cloneTemplate(),\n\n supportingDocument: null\n } as any;\n const isNewBillingAddress = () => (data.billingAddress.id?.length ?? 0) <= 0;\n const isNewDeliveryAddress = () => (data.deliveryAddress.id?.length ?? 0) <= 0;\n\n return {\n data,\n\n validate: () => {\n const errorCodes = [] as string[];\n const messages = {} as any;\n\n if (!data.order.deliveryDate) {\n errorCodes.push('deliveryDate');\n }\n else {\n const deliveryDate = luxon.DateTime.fromISO(data.order.deliveryDate);\n const minDeliveryDate = luxon.DateTime.fromISO(data.minDeliveryDate);\n const maxDeliveryDate = luxon.DateTime.fromISO(data.maxDeliveryDate);\n const cmsDeliveryDate = luxon.DateTime.fromISO(data.cmsDeliveryDate);\n\n if (deliveryDate < minDeliveryDate) {\n errorCodes.push('minDeliveryDate');\n messages['minDeliveryDate'] = `${i18next.t('orderCheckoutValidation.minDeliveryDate')} ${convertDate(data.minDeliveryDate)}`;\n }\n else if (deliveryDate > maxDeliveryDate) {\n errorCodes.push('maxDeliveryDate');\n messages['maxDeliveryDate'] = `${i18next.t('orderCheckoutValidation.maxDeliveryDate')} ${convertDate(data.maxDeliveryDate)}`;\n }\n }\n\n if (isNewBillingAddress()) {\n const validated = fujiAddress\n .validate('Billing', data.billingAddress);\n\n validated.errorCodes.forEach(code => errorCodes.push(code));\n }\n\n if (!data.order.billingAsDeliveryAddress && isNewDeliveryAddress()) {\n const validated = fujiAddress\n .validate('Delivery', data.deliveryAddress);\n\n validated.errorCodes.forEach(code => errorCodes.push(code));\n }\n\n return {\n isValid: errorCodes.length <= 0,\n messages: errorCodes\n .map((code, index) => ({\n messages: [\n code == 'minDeliveryDate' ?\n messages['minDeliveryDate'] :\n (\n code == 'maxDeliveryDate' ?\n messages['maxDeliveryDate'] :\n i18next.t(`orderCheckoutValidation.${code}`)\n )\n ],\n key: index,\n }))\n };\n },\n toRequestForm: () => {\n const jsonKeys = ['order', 'billingAddress', 'deliveryAddress'];\n const formData = new FormData();\n\n formData.append('serializedOrder', JSON.stringify(data.order));\n formData.append(\n 'serializedBillingAddress',\n JSON.stringify(data.billingAddress)\n );\n formData.append(\n 'serializedDeliveryAddress',\n JSON.stringify(data.deliveryAddress)\n );\n for (var key in data) {\n if (jsonKeys.indexOf(key) < 0) {\n formData.append(key, data[key]);\n }\n }\n\n return formData;\n },\n };\n})();","if (pages.checkoutView == null) {\r\n pages.checkoutView = {};\r\n}\r\n\r\npages.checkoutView.repository = (function () {\r\n const fetchPaymentOptions = function () {\r\n return axiosInstance.get(\"/orders/payment-options\")\r\n .then(response => that.paymentOptions = response.data);\r\n };\r\n const fetchAddresses = function () {\r\n return axiosInstance.get('/api/user-addresses/my', { withCredentials: true })\r\n .then(response => {\r\n const billing = response.data\r\n .filter(address => address.type == 'Billing');\r\n const delivery = response.data\r\n .filter(address => address.type == 'Delivery');\r\n\r\n that.billingAddressEditable = billing.length <= 0;\r\n that.deliveryAddressEditable = delivery.length <= 0;\r\n\r\n if (billing.length > 0) {\r\n const source = billing\r\n .filter(entity => entity.isDefault)[0] ?? billing[0];\r\n that.cloneAddressTo(source, that.formData.billingAddress);\r\n that.formData.billingAddress.id = source.id;\r\n }\r\n if (delivery.length > 0) {\r\n const source = delivery\r\n .filter(entity => entity.isDefault)[0] ?? delivery[0];\r\n that.cloneAddressTo(source, that.formData.deliveryAddress);\r\n that.formData.deliveryAddress.id = source.id;\r\n }\r\n\r\n that.billingAddresses = billing;\r\n that.deliveryAddresses = delivery;\r\n });\r\n };\r\n const fetchLunchOptions = function () {\r\n return axiosInstance.get(\"/orders/lunch-options\", { withCredentials: true, })\r\n .then(response => that.lunchOptions = response.data);\r\n };\r\n const fetchDeliveryAreas = function () {\r\n return axiosInstance.get(\"/orders/delivery-areas\", { withCredentials: true, })\r\n .then(response => that.deliveryAreas = response.data);\r\n };\r\n const getEarliestDate = function () {\r\n return axiosInstance\r\n .get(\"/public-holidays/earliest-delivery\", { withCredentials: true });\r\n };\r\n\r\n let that;\r\n\r\n return {\r\n init: instance => that = instance,\r\n fetchPaymentOptions,\r\n fetchAddresses,\r\n fetchLunchOptions,\r\n fetchDeliveryAreas,\r\n getEarliestDate\r\n }\r\n})();","if (pages.checkoutView == null) {\r\n pages.checkoutView = {};\r\n}\r\n\r\npages.checkoutView.watcher = {\r\n watch: function (that) {\r\n const formData = that.formData;\r\n const addresses = {\r\n billing: fujiAddress.cloneTemplate(),\r\n delivery: fujiAddress.cloneTemplate(),\r\n };\r\n const watchAddress = (type) => {\r\n const property = `formData.${type}Address.id`;\r\n\r\n const data = formData[`${type}Address`];\r\n const editable = addresses[type];\r\n\r\n const flag = (value?) => {\r\n const key = `${type}AddressEditable`;\r\n if (value == undefined) return that[key];\r\n\r\n that[key] = value;\r\n };\r\n\r\n that.$watch(property, value => {\r\n const collection = that[`${type}Addresses`];\r\n\r\n if (flag()) that.cloneAddressTo(data, editable);\r\n flag(value.toString().length <= 0);\r\n\r\n if (flag()) {\r\n that.cloneAddressTo(editable, data);\r\n }\r\n else {\r\n const source = collection.filter(x => x.id == value)[0];\r\n that.cloneAddressTo(source, data);\r\n }\r\n });\r\n }\r\n\r\n watchAddress('billing');\r\n watchAddress('delivery');\r\n\r\n that.$watch('formData.order.billingAsDeliveryAddress', value => {\r\n if (value) {\r\n that.info.delivery = formData.billingAddress;\r\n }\r\n else {\r\n that.info.delivery = formData.deliveryAddress;\r\n }\r\n });\r\n\r\n that.$nextTick!(() => {\r\n if (that.reorderDetails != null) {\r\n const order = (that.reorderDetails as OrderResponse);\r\n\r\n formData.deliveryArea = order.specialDeliveryInstructionDeliveryArea ?? \"\";\r\n\r\n for (let key in that.lunchOptions) {\r\n if (that.lunchOptions[key] == order.lunchTime) {\r\n formData.lunchOption = order.lunchTime;\r\n break;\r\n }\r\n }\r\n }\r\n });\r\n }\r\n};","const CheckoutView = () => {\n const repository = pages.checkoutView.repository;\n const watcher = pages.checkoutView.watcher;\n const form = pages.checkoutView.form;\n\n const fillReorderInfo = function () {\n const model = fujiReorder.get();\n if (model == null) return;\n\n that.formData.order.lunchTime = model.placedOrder.lunchTime;\n that.formData.order.shippingInstruction = model.placedOrder.shippingInstruction;\n that.formData.order.useAdvanceInvoice = model.placedOrder.useAdvanceInvoice;\n\n that.billingAddresses.push({\n ...model.billingAddress,\n name: `#${model.orderReference}`\n });\n that.formData.billingAddress.id = model.billingAddress.id;\n\n if (!model.placedOrder.billingAsDeliveryAddress) {\n that.deliveryAddresses.push({\n ...model.deliveryAddress,\n name: `#${model.orderReference}`\n });\n that.formData.deliveryAddress.id = model.deliveryAddress.id;\n }\n else {\n that.formData.order.billingAsDeliveryAddress = true;\n }\n };\n\n let that;\n\n return {\n formData: form.data,\n\n termsForm: false,\n minDeliveryDate: luxon.DateTime.now().plus({ days: 2 }).toFormat('yyyy-MM-dd'),\n maxDeliveryDate: luxon.DateTime.now().plus({ months: 3 }).toFormat('yyyy-MM-dd'),\n cmsDeliveryDate: luxon.DateTime.now().plus({ days: 15 }).toFormat('yyyy-MM-dd'),\n\n deliveryAreas: [],\n lunchOptions: [],\n\n billingAddresses: [],\n deliveryAddresses: [],\n\n manageCSC: (getCurrentUser()?.roles.indexOf('CSC') ?? -1) >= 0,\n\n manageCMS: (getCurrentUser()?.roles.indexOf('CMS') ?? -1) >= 0,\n\n billingAddressEditable: false,\n deliveryAddressEditable: false,\n\n agreeCheckout: false,\n reorderDetails: null,\n\n isCheckoutMode: true,\n isConfirmedMode: false,\n currentStep: 3,\n info: {\n billing: form.data.billingAddress,\n delivery: form.data.deliveryAddress,\n },\n\n init: async function () {\n const date = await (async () => {\n let result;\n that = this;\n\n repository.init(that);\n fujiCart.init(that);\n watcher.watch(that);\n\n await fujiCssLoader.show()\n .then(() => repository.fetchAddresses().then(fillReorderInfo))\n .then(() => {\n return axios.all([\n repository.fetchDeliveryAreas(),\n repository.fetchLunchOptions(),\n repository.fetchPaymentOptions(),\n fujiCart.fetch(),\n ]);\n })\n .then(() => repository.getEarliestDate()\n .then(response => result = response.data)\n )\n .then(fujiCssLoader.hide);\n\n return result;\n })();\n\n this.minDeliveryDate = date ? date.slice(0, 10) :\n luxon.DateTime.now().plus({ days: 2 }).toFormat('yyyy-MM-dd');\n\n this.cmsDeliveryDate = date ? date.slice(0, 10) :\n luxon.DateTime.now().plus({ days: 15 }).toFormat('yyyy-MM-dd');\n\n form.data.minDeliveryDate = this.minDeliveryDate;\n form.data.maxDeliveryDate = this.maxDeliveryDate;\n form.data.cmsDeliveryDate = this.cmsDeliveryDate;\n //flatpickr(document\n // .getElementById(\"deliveryDate\") as HTMLElement,\n // { minDate }\n //);\n },\n\n toPriceString: (price: number) => {\n return price.toLocaleString(\n 'en-US',\n { maximumFractionDigits: 2, minimumFractionDigits: 2 }\n );\n },\n cloneAddressTo: (source, target) => {\n for (var key in source) {\n const value = source[key];\n if (key == 'id') continue;\n\n if (typeof value == 'string') {\n target[key] = value;\n }\n else {\n const serialized = JSON.stringify(value);\n target[key] = JSON.parse(serialized);\n }\n }\n },\n\n handleUploadDocument: function () {\n const supportDocInput = document.getElementById(\n \"support-document\"\n ) as HTMLInputElement;\n $(supportDocInput).val('').off(\"change\");\n\n if (supportDocInput) {\n supportDocInput.click();\n supportDocInput.addEventListener(\"change\", () => {\n if (supportDocInput?.files?.length) {\n const file = supportDocInput.files[0];\n this.formData.supportingDocument = file as any;\n }\n });\n }\n },\n\n isPublicHoliday: async (date) => {\n const holidays = await axios\n .get('/public-holidays', {\n params: {\n start: luxon.DateTime.now().toISO(),\n end: luxon.DateTime.fromISO(that.maxDeliveryDate)\n .plus({ days: 10 }).toISO(),\n }\n })\n .then(response => response.data);\n return holidays\n .filter(holiday => luxon.DateTime\n .fromFormat(date, 'yyyy-MM-dd')\n .diff(luxon.DateTime.fromISO(holiday.start), 'days')\n .days == 0\n ).length > 0;\n },\n\n validateForm: async () => {\n const result = form.validate();\n\n if (result.isValid) {\n const isPublicHoliday = await fujiCssLoader.show()\n .then(() => that.isPublicHoliday(form.data.order.deliveryDate));\n if (isPublicHoliday) {\n document['popupErrors']([{\n messages: [i18next.t(`orderCheckoutValidation.publicHoliday`)]\n }]);\n }\n\n fujiCssLoader.hide();\n return !isPublicHoliday;\n }\n\n if (!document['popupErrors'](result.messages)) {\n alert(result.messages.join('\\n'));\n }\n\n return false;\n },\n checkout: function () {\n window.scrollTo(0, 0);\n return axiosInstance\n .post(\n `/api/orders`, form.toRequestForm(), {\n withCredentials: true,\n })\n .then(response => {\n this.formData.order.id = response.data.orderId;\n this.isConfirmedMode = true;\n this.currentStep = 4;\n\n fujiReorder.clear();\n });\n },\n };\n};","if (pages.customerOrderDetailsView == null) {\n pages.customerOrderDetailsView = {};\n}\n\npages.customerOrderDetailsView.form = (function () {\n const data = {\n internalOrderNumber: '',\n actualDeliveryDate: '',\n confirmRemark: '',\n cancelRemark: '',\n status: '',\n };\n\n return {\n data,\n\n validate: () => {\n const errorCodes = [] as any[];\n\n if ((getCurrentUser()?.roles.indexOf('CSC') ?? -1) >= 0) {\n //|| (getCurrentUser()?.roles.indexOf('CMS') ?? -1) >= 0)\n if (!data.internalOrderNumber) errorCodes.push('omNo');\n if (!data.actualDeliveryDate) errorCodes.push('actualDeliveryDate');\n else {\n const actualDeliveryDate = luxon.DateTime.fromISO(data.actualDeliveryDate);\n const today = luxon.DateTime.fromFormat(\n luxon.DateTime.now().toFormat('yyyy-LL-dd'),\n 'yyyy-LL-dd'\n );\n\n if (actualDeliveryDate < today) {\n errorCodes.push('actualDevlieryDate');\n }\n }\n } else if ((getCurrentUser()?.roles.indexOf('CMS') ?? -1) >= 0)\n {\n if (!data.internalOrderNumber) data.internalOrderNumber = \"CMS\";\n if (data.actualDeliveryDate=\"Invalid DateTime\") data.actualDeliveryDate = luxon.DateTime.now().plus({ days: 15 }).toFormat('yyyy-MM-dd');\n //if (!data.actualDeliveryDate) data.actualDeliveryDate = luxon.DateTime.now().plus({ days: 15 }).toFormat('yyyy-MM-dd');\n else {\n const actualDeliveryDate = luxon.DateTime.fromISO(data.actualDeliveryDate);\n const today = luxon.DateTime.fromFormat(\n luxon.DateTime.now().toFormat('yyyy-LL-dd'),\n 'yyyy-LL-dd'\n );\n\n if (actualDeliveryDate < today) {\n errorCodes.push('actualDevlieryDate');\n }\n }\n }\n\n return {\n isValid: errorCodes.length <= 0,\n messages: errorCodes.map((code, index) => ({\n messages: [`- ${i18next.t(code)} is required.`],\n key: index,\n }))\n };\n },\n };\n})();","if (pages.customerOrderDetailsView == null) {\n pages.customerOrderDetailsView = {};\n}\n\npages.customerOrderDetailsView.repository = (function () {\n const fetchDetails = orderId => {\n return axiosInstance.get(`/api/orders/${orderId}`)\n .then(response => {\n const placedOrder = response.data.placedOrder;\n that.orderModel = response.data;\n\n that.orderModel.remarkLines = [];\n if (that.orderModel.currentStage == 'Confirmed') {\n that.orderModel.remarkLines = splitTextareaValue(placedOrder.confirmRemark);\n }\n else if (that.orderModel.currentStage == 'Cancelled') {\n that.orderModel.remarkLines = splitTextareaValue(placedOrder.cancelRemark);\n }\n\n that.orderModel.shippingInstructionLines = splitTextareaValue(\n that.orderModel.placedOrder.shippingInstruction\n );\n\n that.cart = {\n items: that.orderModel.items\n };\n\n that.isPaper = that.orderModel.isPaper;\n that.isCMS = that.orderModel.isCMS;\n that.isReadyForPayment = that.orderModel.isReadyForPayment;\n\n that.formData.actualDeliveryDate = luxon.DateTime\n .fromISO(placedOrder.actualDeliveryDate)\n .toFormat('yyyy-LL-dd');\n that.formData.internalOrderNumber = placedOrder.internalOrderNumber;\n that.formData.confirmRemark = placedOrder.confirmRemark;\n that.formData.cancelRemark = placedOrder.cancelRemark;\n });\n };\n const saveOrder = (orderId, data) => {\n return axiosInstance.patch(`/api/orders/${orderId}/partial-confirm`, data);\n };\n const confirmOrder = (orderId, data) => {\n return axiosInstance.patch(`/api/orders/${orderId}/confirm`, data);\n };\n const approveOrder = (orderId) => {\n return axiosInstance.patch(`/api/orders/${orderId}/approve`);\n };\n const rejectOrder = (orderId) => {\n return axiosInstance.patch(`/api/orders/${orderId}/reject`);\n };\n const confirmStatus = (orderId, data) => {\n return axiosInstance.patch(`/api/orders/${orderId}/confirm-status`, data);\n }; \n const confirmStatusForSuperAdmin = (orderId, data) => {\n return axiosInstance.patch(`/api/orders/${orderId}/confirm-status-for-super-admin`, data);\n };\n const confirmCancelOrder = (orderId, data) => {\n return axiosInstance.patch(`/api/orders/${orderId}/confirm-cancel`, data);\n };\n const addAddressToCompany = (orderId, code, type) => {\n return axiosInstance\n .post(`/api/user-addresses/${type}/add-to-user?orderId=${orderId}`, { code });\n };\n\n let that;\n\n return {\n init: instance => that = instance,\n\n fetchDetails,\n saveOrder,\n confirmOrder,\n approveOrder,\n rejectOrder,\n confirmStatus,\n confirmStatusForSuperAdmin,\n confirmCancelOrder,\n addAddressToCompany,\n }\n})();","const CustomerOrderDetailsView = (orderId): any => {\n const form = pages.customerOrderDetailsView.form;\n const repository = pages.customerOrderDetailsView.repository;\n\n let that;\n\n return {\n editableStages: ['Submitted', 'AwaitingApproval', 'PartialConfirmed', 'Paid', 'RequestingCancel', 'Approved', 'Sampling', 'Production', 'Delivered'],\n cart: {\n items: []\n },\n orderModel: null,\n formData: form.data,\n\n orderDetail: null,\n omNo: '',\n cancelRemarks: '',\n confirmRemarks: '',\n actualDeliveryDate: '',\n\n manageMode: (getCurrentUser()?.roles.indexOf('CSC') ?? -1) >= 0 || (getCurrentUser()?.roles.indexOf('COMPANY_APPROVER') ?? -1) >= 0 || (getCurrentUser()?.roles.indexOf('CMS') ?? -1) >= 0,\n\n manageCSC: (getCurrentUser()?.roles.indexOf('CSC') ?? -1) >= 0, \n\n manageCMS: (getCurrentUser()?.roles.indexOf('CMS') ?? -1) >= 0,\n\n manageSuperAdmin: (getCurrentUser()?.roles.indexOf('SUPER_ADMIN') ?? -1) >= 0, \n\n manageDropdownStatus: (getCurrentUser()?.roles.indexOf('CMS') ?? -1) >= 0 ||(getCurrentUser()?.roles.indexOf('CSC') ?? -1) >= 0 || (getCurrentUser()?.roles.indexOf('COMPANY_APPROVER') ?? -1) >= 0 ||(getCurrentUser()?.roles.indexOf('SUPER_ADMIN') ?? -1) >= 0,\n\n manageApprover: (getCurrentUser()?.roles.indexOf('COMPANY_APPROVER') ?? -1) >= 0,\n\n // Method\n init: async function () {\n that = this;\n repository.init(this);\n repository.fetchDetails(orderId);\n\n //console.log('isReadyForPayment: ' + orderModel.isReadyForPayment);\n },\n\n toPriceString: (price: number) => {\n return price.toLocaleString(\n 'en-US',\n { maximumFractionDigits: 2, minimumFractionDigits: 2 }\n );\n },\n\n /**\n * return earliest delivery date\n */\n getEarliestDate: async function () {\n try {\n const res = await axiosInstance.get('/public-holidays/earliest-delivery', { withCredentials: true });\n if (res.status === 200) {\n return res.data;\n }\n } catch (_err) {\n return null;\n }\n },\n\n /**\n * Handle Confirm cancel the order\n */\n handleConfirmOrder: async function () {\n if (this.orderDetail.status === \"CREATED\") {\n try {\n const res = await axiosInstance.post(`/orders/${(this.orderDetail as any)?.id}/approve`, {\n orderNo: this.omNo,\n remarks: this.confirmRemarks,\n actualDeliveryDate: this.actualDeliveryDate\n }, { withCredentials: true });\n if (res.status === 200) {\n //alert(\"Order confirmed\");\n window.location.reload();\n }\n } catch (error) {\n console.log(error);\n alert((error as any).message);\n } finally {\n //window.location.reload();\n }\n } else {\n try {\n const res = await axiosInstance.post(`/orders/${(this.orderDetail as any)?.id}/approve-cancel`, {\n remarks: this.cancelRemarks,\n }, { withCredentials: true });\n if (res.status === 200) {\n //alert(\"Cancel confirmed\");\n window.location.reload();\n }\n } catch (_err) {\n //alert(\"Approve with error\");\n } finally {\n //window.location.reload();\n }\n }\n },\n\n saveOrder: () => {\n return fujiCssLoader.show()\n .then(() => repository.saveOrder(orderId, form.data))\n .then(fujiCssLoader.hide);\n },\n confirmOrder: () => {\n const result = form.validate();\n if (result.isValid) {\n return fujiCssLoader.show()\n .then(() => repository.confirmOrder(orderId, form.data))\n .then(() => repository.fetchDetails(orderId))\n .then(fujiCssLoader.hide);\n };\n\n if (!document['popupErrors'](result.messages)) {\n alert(result.messages.join('\\n'));\n }\n\n return null;\n },\n approveOrder: () => {\n //const result = form.validate();\n //if (result.isValid) {\n return fujiCssLoader.show()\n .then(() => repository.approveOrder(orderId))\n .then(() => repository.fetchDetails(orderId))\n .then(fujiCssLoader.hide);\n //};\n\n //if (!document['popupErrors'](result.messages)) {\n // alert(result.messages.join('\\n'));\n //}\n\n //return null;\n },\n rejectOrder: () => {\n const result = form.validate();\n if (result.isValid) {\n return fujiCssLoader.show()\n .then(() => repository.rejectOrder(orderId))\n .then(() => repository.fetchDetails(orderId))\n .then(fujiCssLoader.hide);\n };\n\n if (!document['popupErrors'](result.messages)) {\n alert(result.messages.join('\\n'));\n }\n\n return null;\n },\n confirmStatus: () => {\n const result = form.validate();\n if (result.isValid) {\n return fujiCssLoader.show()\n .then(() => repository.confirmStatus(orderId, form.data))\n .then(() => repository.fetchDetails(orderId))\n .then(fujiCssLoader.hide);\n };\n\n if (!document['popupErrors'](result.messages)) {\n alert(result.messages.join('\\n'));\n }\n\n return null;\n }, \n confirmStatusForSuperAdmin: () => {\n const result = form.validate();\n if (result.isValid) {\n delete form.data.omNo; // Remove the omNo property\n delete form.data.actualDeliveryDate; // Remove the actualDeliveryDate property\n\n return fujiCssLoader.show()\n .then(() => repository.confirmStatusForSuperAdmin(orderId, form.data))\n .then(() => repository.fetchDetails(orderId))\n .then(fujiCssLoader.hide);\n };\n\n if (!document['popupErrors'](result.messages)) {\n alert(result.messages.join('\\n'));\n }\n\n return null;\n }, \n confirmCancelOrder: () => {\n return fujiCssLoader.show()\n .then(() => repository.confirmCancelOrder(orderId, {\n ...form.data,\n actualDeliveryDate: luxon.DateTime.now().toISO()\n }))\n .then(() => repository.fetchDetails(orderId))\n .then(fujiCssLoader.hide);\n },\n addAddressToCompany: (code, type) => {\n return fujiCssLoader.show()\n .then(() => repository.addAddressToCompany(orderId, code, type))\n .then(() => repository.fetchDetails(orderId))\n .then(fujiCssLoader.hide);\n },\n paymentPostAndRedirect: () => { \n /*return fujiCssLoader.show()\n .then(() => repository.paymentRedirect(that.orderModel.placedOrder))\n .then(fujiCssLoader.hide);\n */\n \n console.log('Post to PaymentForm');\n var FORM_URL = \"/payment/submit1\";\n // window.location.href = FORM_URL;\n\n // var FORM_URL = \"https://test.paydollar.com/b2cDemo/eng/payment/payForm.jsp\";\n\n var FORM_URL2 = \"/payment/submit2\";\n\n var paymentData = {\n OrderRef: that.orderModel.orderReference,\n Amount: that.orderModel.grandTotal.toString(),\n UserId: getCurrentUser()?.id,\n /*\n merchantId: \"88153198\",\n currCode: \"344\",\n mpsMode: \"NIL\",\n successUrl: \"http://eshop.bizcloud.com.hk/payment/success\",\n failUrl: \"http://eshop.bizcloud.com.hk/payment/failed\",\n cancelUrl: \"http://eshop.bizcloud.com.hk/payment/cancelled\",\n payType: \"N\",\n lang: \"E\",\n payMethod: \"CC\",\n loginId: \"admin\",\n password: \"Hon123$%^\"\n */\n };\n\n const headers = {\n \"Content-Type\": \"application/json\",\n \"Origin\": \"https://localhost:5001\",\n \"Accept\": \"application/json\",\n };\n\n const body = JSON.stringify(paymentData);\n\n console.log('paymentData body: ' + body);\n\n const request = new Request(FORM_URL, {\n method: 'POST',\n headers: headers,\n body: body\n });\n\n fetch(FORM_URL, {\n method: 'POST',\n headers: headers,\n body: body\n }) \n .then(response => {\n if (response.ok) {\n //return response.json(); // Parse the JSON response\n } else {\n throw new Error('Error: ' + response.status);\n }\n })\n .then(data => {\n // Use the data returned from the server as needed\n window.location.href = FORM_URL2; // Navigate to the view URL\n })\n .catch(error => {\n // Handle any errors\n });\n\n },\n\n }\n}","if (pages.productsView == null) {\n pages.productsView = {};\n}\n\npages.productsView.repository = (function () {\n const fetchProducts = function () {\n that.fetchLoading = true;\n\n const { currentPage: page, rowPerPage: per_page } = that.pagination;\n const sort = [that.sort.finalSort, \"SortingSequence\"]\n .filter((column) => !!column)\n .join(\",\");\n const categoryIds =\n that.selectedCategory.length > 0 ?\n that.selectedCategory.join(\",\") :\n undefined;\n const query = that.searchProduct;\n\n axiosInstance\n .get(\"/products\", {\n withCredentials: true,\n headers: {\n Accept: \"application/json\",\n },\n params: {\n page,\n per_page,\n sort,\n categoryIds,\n query,\n },\n })\n .then((res) => {\n if (res.status === 200) {\n that.productList = res.data?.items.filter(item => item.isActiveProduct);\n that.pagination.totalPages = res?.data.total_pages;\n }\n })\n .finally(() => {\n that.fetchLoading = false;\n });\n };\n const fetchCategories = function () {\n that.fetchLoading = true;\n axiosInstance\n .get(\"/categories\", { withCredentials: true })\n .then((res) => {\n if (res.status === 200) {\n that.categoryList = res.data;\n }\n })\n .finally(() => {\n that.fetchLoading = false;\n });\n };\n let that;\n\n return {\n init: instance => that = instance,\n fetchProducts,\n fetchCategories,\n }\n})();","if (pages.productsView == null) {\r\n pages.productsView = {};\r\n}\r\n\r\npages.productsView.watcher = {\r\n watch: function (that, repository) {\r\n that.$watch!(\"cartList\", (value) => {\r\n that.$store.cartTotal.updateTotal(value.length);\r\n });\r\n that.$watch!(\"sort.finalSort\", () => {\r\n repository.fetchProducts();\r\n });\r\n that.$watch!(\"selectedCategory\", (value) => {\r\n if (value.length >= 0) {\r\n repository.fetchProducts();\r\n }\r\n });\r\n that.$watch!(\"searchProduct\", () => {\r\n repository.fetchProducts();\r\n });\r\n that.$watch!(\"pagination.currentPage\", () => {\r\n repository.fetchProducts();\r\n });\r\n that.$watch!(\"productList\", () => {\r\n $(\"#pagination-wrapper\").pagination({\r\n // Fake the plugin to get total number\r\n dataSource: new Array(\r\n that.pagination.totalPages * that.pagination.rowPerPage\r\n ).fill(\",\"),\r\n pageNumber: that.pagination.currentPage,\r\n pageSize: that.pagination.rowPerPage,\r\n pageRange: 1,\r\n ulClassName: \"pagination--ul\",\r\n activeClassName: \"pagination__item--selected\",\r\n callback: (_, pagination) => {\r\n that.pagination.currentPage = pagination.pageNumber;\r\n },\r\n });\r\n });\r\n }\r\n};","const ProductsView = (): any => {\r\n const repository = pages.productsView.repository;\r\n const watcher = pages.productsView.watcher;\r\n\r\n const getQuantity = function (product) {\r\n if (!product) return 1;\r\n\r\n const targetInputVal = $(`#product-${product.partNumber}`).val() as number;\r\n return targetInputVal || 1;\r\n };\r\n\r\n let that;\r\n\r\n return {\r\n getQuantity,\r\n productDetail: undefined,\r\n fetchLoading: false,\r\n productList: [],\r\n categoryList: [],\r\n selectedCategory: [],\r\n cartList: [],\r\n searchProduct: \"\",\r\n sort: {\r\n price: false,\r\n name: false,\r\n category: false,\r\n contract: false,\r\n finalSort: null,\r\n },\r\n pagination: {\r\n rowPerPage: 9,\r\n totalPages: 1,\r\n currentPage: 1,\r\n },\r\n toggleMobileFilter: false,\r\n\r\n init: function () {\r\n const cartList = getShoppingCart() as { items: ShoppingCartItem[] };\r\n\r\n that = this;\r\n\r\n fujiCart.init(that);\r\n repository.init(this);\r\n repository.fetchProducts();\r\n repository.fetchCategories();\r\n\r\n if (cartList && typeof cartList === \"object\") {\r\n this.cartList = cartList.items;\r\n }\r\n\r\n watcher.watch(this, repository);\r\n },\r\n handleOnSortChange: function (e, v) {\r\n if (e?.target?.checked) {\r\n this.sort.price = v === \"price\";\r\n this.sort.name = v === \"name\";\r\n this.sort.category = v === \"categoryCode\";\r\n this.sort.contract = v === \"-contractId\";\r\n this.sort.finalSort = v;\r\n } else {\r\n this.sort.price = false;\r\n this.sort.name = false;\r\n this.sort.category = false;\r\n this.sort.contract = false;\r\n this.sort.finalSort = null;\r\n }\r\n },\r\n handleModalOpen: function (product) {\r\n this.productDetail = product;\r\n },\r\n handleClearFilter: function () {\r\n this.selectedCategory = [];\r\n },\r\n handleCartChange: function (product, step, isInput) {\r\n const quantityInput = $(`#product-${product.partNumber}`);\r\n const quantityModalInput = $(`#product-modal-${product.partNumber}`);\r\n const targetInputVal = $(\r\n `#product-${product.partNumber}`\r\n ).val() as number;\r\n if (!product) {\r\n return;\r\n }\r\n if (!isInput) {\r\n if (\r\n (targetInputVal > 0 && step === 1) ||\r\n (targetInputVal > 1 && step === -1)\r\n ) {\r\n quantityInput.val(Number(targetInputVal) + Number(step));\r\n quantityModalInput?.val(Number(targetInputVal) + Number(step));\r\n }\r\n } else {\r\n if (step > 0) {\r\n quantityInput.val(Number(step));\r\n quantityModalInput?.val(Number(step));\r\n }\r\n }\r\n },\r\n\r\n handleAddToCart: function (product: Product) {\r\n const targetInputVal = $(`#product-${product.partNumber}`).val() as number;\r\n\r\n fujiCart.add(product, targetInputVal);\r\n\r\n if (targetInputVal) {\r\n const found = this.cartList.find(\r\n (old) => old.product.partNumber === product.partNumber\r\n );\r\n if (!found) {\r\n this.cartList.push({\r\n product: returnCartPartialProduct(product),\r\n quantity: targetInputVal as any,\r\n });\r\n } else {\r\n const newCart = this.cartList.map((d) => {\r\n if (d.product.partNumber === product.partNumber) {\r\n return { product, quantity: targetInputVal as any };\r\n }\r\n return d;\r\n });\r\n this.cartList = newCart;\r\n }\r\n updateShoppingCart(returnCartPartialProduct(product), targetInputVal);\r\n }\r\n if (this.productDetail) {\r\n this.productDetail = undefined;\r\n }\r\n },\r\n\r\n handleMobileFilterOpen() {\r\n this.toggleMobileFilter = !this.toggleMobileFilter;\r\n },\r\n };\r\n};","if (pages.customerAdminManagementView == null) {\n pages.customerAdminManagementView = {};\n}\n\npages.customerAdminManagementView.excel = ((repository: any) => {\n const $excelInputUsers = $('#excel-input-users');\n\n const users = {\n selectExcel: () => {\n $excelInputUsers.val('');\n that.excel.errors = [];\n\n $excelInputUsers.click();\n },\n import: () => {\n const files = ($excelInputUsers.get(0) as HTMLInputElement).files;\n if ((files?.length ?? 0) <= 0) return;\n\n return fujiCssLoader.show()\n .then(() => repository.importUsers((files ?? [])[0]))\n .then(repository.fetchUsers)\n .then(() => document['popupMessage'](i18next.t('z0328importSuccess')))\n .catch(error => {\n that.excel.errors = error.response.data.errors ?? [];\n })\n .then(fujiCssLoader.hide);\n },\n };\n let that;\n\n return {\n users,\n errors: [] as any[],\n init: instance => that = instance,\n };\n})","if (pages.customerAdminManagementView == null) {\r\n pages.customerAdminManagementView = {};\r\n}\r\n\r\npages.customerAdminManagementView.repository = (apiBaseUrl, excelBaseUrl) => {\r\n const fetchDeliveryAreas = () => {\r\n return axiosInstance.get(\"/orders/delivery-areas\");\r\n };\r\n\r\n const fetchCompanyInfo = () => {\r\n return axiosInstance.get(`${apiBaseUrl}/company-info`)\r\n .then(response => company.info = response.data);\r\n };\r\n\r\n const searchContracts = () => {\r\n return axiosInstance\r\n .get(`${apiBaseUrl}/contracts/search/${contracts.filter ?? ''}`, {\r\n params: {\r\n ...fujiPagination.toParams(contracts.pagination),\r\n ...(contracts.sortOptions.options ?? {}),\r\n }\r\n })\r\n .then(response => {\r\n contracts.entities = response.data.currentPage;\r\n fujiPagination.update(contracts.pagination, response.data);\r\n });\r\n };\r\n const fetchPricings = (contractId) => {\r\n return axiosInstance.get(`${apiBaseUrl}/contracts/${contractId}`)\r\n .then(response => contracts.pricings = response.data);\r\n };\r\n\r\n const fetchUsers = () => {\r\n return axiosInstance\r\n .get(`${apiBaseUrl}/users/search/${users.filter ?? ''}`, {\r\n params: {\r\n ...fujiPagination.toParams(users.pagination),\r\n ...(users.sortOptions.options ?? {}),\r\n }\r\n })\r\n .then(response => {\r\n users.entities = response.data.currentPage;\r\n fujiPagination.update(users.pagination, response.data);\r\n });\r\n };\r\n const fetchUserAddresses = userId => {\r\n return axiosInstance.get(`${apiBaseUrl}/users/${userId}/addresses`);\r\n };\r\n\r\n const createUser = (form) => {\r\n return axiosInstance.post(`${apiBaseUrl}/users`, form);\r\n };\r\n const updateUser = (form) => {\r\n return axiosInstance.patch(`${apiBaseUrl}/users/${form.id}`, form);\r\n };\r\n const disableUser = (id) => {\r\n return axiosInstance.patch(`${apiBaseUrl}/users/${id}/disable`);\r\n };\r\n\r\n const addAddress = (userId, type, form) => {\r\n return axiosInstance\r\n .post(`${apiBaseUrl}/users/${userId}/addresses/${type}`, form);\r\n }\r\n const updateAddress = (userId, addressId, form) => {\r\n return axiosInstance\r\n .patch(`${apiBaseUrl}/users/${userId}/addresses/${addressId}`, form);\r\n }\r\n const setDefaultAddress = (userId, addressId) => {\r\n return axiosInstance\r\n .patch(`${apiBaseUrl}/users/${userId}/addresses/${addressId}/set-default`);\r\n }\r\n const deleteAddress = (userId, addressId) => {\r\n return axiosInstance\r\n .delete(`${apiBaseUrl}/users/${userId}/addresses/${addressId}`);\r\n }\r\n\r\n const importUsers = (file) => {\r\n const formData = new FormData();\r\n formData.append('file', file);\r\n\r\n return axiosInstance.post(`${excelBaseUrl}/import-users`, formData);\r\n };\r\n\r\n let company;\r\n let contracts;\r\n let users;\r\n\r\n return {\r\n init: instance => {\r\n company = instance.views.company;\r\n contracts = instance.views.contracts;\r\n users = instance.views.users;\r\n },\r\n\r\n fetchCompanyInfo,\r\n\r\n searchContracts,\r\n fetchPricings,\r\n\r\n fetchDeliveryAreas,\r\n fetchUsers,\r\n fetchUserAddresses,\r\n\r\n createUser,\r\n updateUser,\r\n disableUser,\r\n\r\n addAddress,\r\n updateAddress,\r\n setDefaultAddress,\r\n deleteAddress,\r\n\r\n importUsers,\r\n };\r\n};","if (pages.customerAdminManagementView == null) {\n pages.customerAdminManagementView = {};\n}\n\npages.customerAdminManagementView.userView = ((repository: any) => {\n const editUser = (user) => {\n const fetchAddresses = () => {\n return repository.fetchUserAddresses(user.id)\n .then(response => {\n that.form.billing = response.data.filter(\n address => address.type == 'Billing'\n );\n that.form.delivery = response.data.filter(\n address => address.type == 'Delivery'\n );\n });\n };\n const isValidAddress = (type: string, data: any) => {\n const validated = fujiAddress.validate(type, data);\n\n if (!validated.isValid) {\n if (!document['popupErrors'](validated.messages)) {\n alert(validated.messages.join('\\n'));\n }\n }\n\n return validated.isValid;\n };\n const addAddress = (type: string) => {\n const propertyPrefix = type.toLowerCase();\n const keyEditable = `${propertyPrefix}Editable`;\n const editable = that.form[keyEditable];\n\n if (!isValidAddress(type, editable)) return;\n\n return fujiCssLoader.show()\n .then(() => repository\n .addAddress(user.id, type, that.form[keyEditable])\n .then(fetchAddresses)\n .then(() => {\n that.form[keyEditable] = fujiAddress.cloneTemplate();\n })\n )\n .then(fujiCssLoader.hide);\n };\n const updateAddress = (type: string) => {\n const propertyPrefix = type.toLowerCase();\n const id = that.form[`${propertyPrefix}Id`];\n const editable = that.form[`${propertyPrefix}Editable`];\n\n if (!isValidAddress(type, editable)) return;\n\n return fujiCssLoader.show()\n .then(() => repository\n .updateAddress(user.id, id, editable)\n .then(fetchAddresses)\n )\n .then(fujiCssLoader.hide);\n };\n\n that.form = {\n ...JSON.parse(JSON.stringify(user)),\n isOpen: true,\n errorCode: '',\n billingId: '',\n deliveryId: '',\n billingEditable: fujiAddress.cloneTemplate(),\n deliveryEditable: fujiAddress.cloneTemplate(),\n\n editAddress: (type, id) => {\n if (that.form[`${type}Id`] == id) {\n that.form[`${type}Id`] = '';\n that.form[`${type}Editable`] = fujiAddress.cloneTemplate();\n }\n else {\n const address = that.form[type]\n .filter(entity => entity.id == id)[0];\n\n that.form[`${type}Id`] = id;\n that.form[`${type}Editable`] = { ...address };\n }\n },\n\n addBillingAddress: () => addAddress('Billing'),\n addDeliveryAddress: () => addAddress('Delivery'),\n\n updateBillingAddress: () => updateAddress('Billing'),\n updateDeliveryAddress: () => updateAddress('Delivery'),\n\n setDefaultAddress: (addressId) => {\n return fujiCssLoader.show()\n .then(() => repository.setDefaultAddress(user.id, addressId))\n .then(fetchAddresses)\n .then(fujiCssLoader.hide);\n },\n deleteAddress: (addressId) => {\n return fujiCssLoader.show()\n .then(() => repository.deleteAddress(user.id, addressId))\n .then(fetchAddresses)\n .then(fujiCssLoader.hide);\n },\n };\n\n return fetchAddresses();\n };\n\n const data = {\n sortOptions: fujiSortOptions.create(),\n pagination: fujiPagination.newModel(10),\n inactiveUserModal: null,\n checkedUsers: [] as any,\n entities: [] as any,\n filter: '',\n deliveryAreas: [],\n form: {\n isOpen: false,\n approverEmail: ['', null],\n },\n\n editEmptyUser: () => {\n that.form = {\n isOpen: true,\n approverEmail: ['',null],\n billingEditable: fujiAddress.cloneTemplate(),\n deliveryEditable: fujiAddress.cloneTemplate(),\n };\n },\n createUser: () => {\n that.form.errorCode = '';\n\n return fujiCssLoader.show()\n .then(() => repository.createUser(that.form))\n .then(response => editUser(response.data))\n .then(() => repository.fetchUsers())\n .then(() => document[\"popupMessage\"](i18next.t('z0328userCreated')))\n .catch(error => that.form.errorCode = error.response.data.errorCode)\n .then(fujiCssLoader.hide);\n },\n updateUser: () => {\n that.form.errorCode = '';\n\n return fujiCssLoader.show()\n .then(() => repository.updateUser(that.form))\n .then(repository.fetchUsers)\n .then(() => document[\"popupMessage\"](i18next.t('z0328userUpdated')))\n .catch(error => that.form.errorCode = error.response.data.errorCode)\n .then(fujiCssLoader.hide);\n },\n editUser: userId => {\n const user = that.entities\n .filter(entity => entity.id == userId)[0];\n\n return fujiCssLoader.show()\n .then(() => editUser(user))\n .then(fujiCssLoader.hide);\n },\n confirmDisable: user => {\n that.inactiveUserModal = fujiModals\n .confirm(\n i18next.t('z0328confirmInactiveUser'),\n `${i18next.t('z0328pleaseConfirmToInactive')} ${user.firstName} ${user.lastName}`,\n () => fujiCssLoader.show()\n .then(() => repository.disableUser(user.id))\n .then(repository.fetchUsers)\n .then(() => that.inactiveUserModal = null)\n .then(fujiCssLoader.hide),\n () => that.inactiveUserModal = null,\n );\n },\n };\n\n let that;\n\n return {\n data,\n init: instance => that = instance.views.users,\n };\n});","if (pages.customerAdminManagementView == null) {\r\n pages.customerAdminManagementView = {};\r\n}\r\n\r\npages.customerAdminManagementView.watcher = (() => {\r\n const watchUsers = ((that: any, repository, data) => {\r\n const delay = 1000;\r\n const fetchUsers = () => {\r\n return fujiCssLoader.show()\r\n .then(repository.fetchUsers)\r\n .then(fujiCssLoader.hide);\r\n };\r\n\r\n let timer: any;\r\n\r\n that.$watch('views.users.pagination.currentPage', fetchUsers);\r\n that.$watch('views.users.entities', () => {\r\n fujiPagination.$paginate(\r\n data.pagination,\r\n $(\"#users-pages-wrapper\"),\r\n );\r\n });\r\n that.$watch('views.users.filter', () => {\r\n const reset = () => {\r\n if (timer != null) {\r\n clearTimeout(timer);\r\n timer = null;\r\n }\r\n };\r\n\r\n reset();\r\n\r\n timer = setTimeout(() => fetchUsers().then(reset), delay);\r\n });\r\n });\r\n\r\n const watchContracts = ((that: any, repository, data) => {\r\n const delay = 1000;\r\n const fetchContracts = () => {\r\n return fujiCssLoader.show()\r\n .then(repository.searchContracts)\r\n .then(fujiCssLoader.hide);\r\n };\r\n\r\n let timer: any;\r\n\r\n that.$watch('views.contracts.pagination.currentPage', fetchContracts);\r\n that.$watch('views.contracts.entities', () => {\r\n fujiPagination.$paginate(\r\n data.pagination,\r\n $(\"#contracts-pages-wrapper\"),\r\n );\r\n });\r\n that.$watch('views.contracts.filter', () => {\r\n const reset = () => {\r\n if (timer != null) {\r\n clearTimeout(timer);\r\n timer = null;\r\n }\r\n };\r\n\r\n reset();\r\n\r\n timer = setTimeout(() => fetchContracts().then(reset), delay);\r\n });\r\n });\r\n\r\n return {\r\n watch: (that, repository) => {\r\n watchUsers(that, repository, that.views.users);\r\n watchContracts(that, repository, that.views.contracts);\r\n },\r\n }\r\n})();","const CustomerAdminManagementView = function () {\n const repository = pages.customerAdminManagementView.repository(\n '/api/customer-admin-management',\n '/excel/management/customer-admin'\n );\n\n const userView = pages.customerAdminManagementView.userView(repository);\n const excel = pages.customerAdminManagementView.excel(repository);\n const watcher = pages.customerAdminManagementView.watcher;\n\n return {\n excel,\n\n init: function () {\n repository.init(this);\n userView.init(this, repository);\n excel.init(this, repository);\n watcher.watch(this, repository);\n\n this.views.contracts.sortOptions.init(\n this.views.contracts,\n () => fujiCssLoader.show()\n .then(repository.searchContracts)\n .then(fujiCssLoader.hide)\n );\n\n this.views.users.sortOptions.init(\n this.views.users,\n () => fujiCssLoader.show()\n .then(repository.fetchUsers)\n .then(fujiCssLoader.hide)\n );\n\n fujiCssLoader.show()\n .then(() => axios.all([\n repository.fetchCompanyInfo(),\n repository.searchContracts(),\n repository.fetchDeliveryAreas()\n .then(response => this.views.users.deliveryAreas = response.data),\n repository.fetchUsers(),\n ]))\n .then(fujiCssLoader.hide);\n },\n views: {\n company: {\n info: {}\n },\n contracts: {\n sortOptions: fujiSortOptions.create(),\n pagination: fujiPagination.newModel(10),\n entities: [] as any,\n filter: '',\n isPricingsModal: false,\n\n showPricingsModal: function (contractId) {\n return fujiCssLoader.show()\n .then(() => repository.fetchPricings(contractId))\n .then(() => this.isPricingsModal = true)\n .then(fujiCssLoader.hide);\n },\n },\n users: userView.data\n },\n };\n};","if (pages.SalesAdminManageAccountAdminsView == null) {\r\n pages.SalesAdminManageAccountAdminsView = {};\r\n}\r\n\r\npages.SalesAdminManageAccountAdminsView.addressForm = {\r\n create: (that, repository) => {\r\n const refreshAddresses = () => {\r\n return repository.fetchUserAddresses(user.id)\r\n .then(response => {\r\n that.accountAdminForm.data.billing = response.data.filter(\r\n address => address.type == 'Billing'\r\n );\r\n that.accountAdminForm.data.delivery = response.data.filter(\r\n address => address.type == 'Delivery'\r\n );\r\n });\r\n };\r\n const isValidAddress = (type: string, data: any) => {\r\n const validated = fujiAddress.validate(type, data);\r\n\r\n if (!validated.isValid) {\r\n if (!document['popupErrors'](validated.messages)) {\r\n alert(validated.messages.join('\\n'));\r\n }\r\n }\r\n\r\n return validated.isValid;\r\n };\r\n const addAddress = (type: string) => {\r\n const propertyPrefix = type.toLowerCase();\r\n const keyEditable = `${propertyPrefix}Editable`;\r\n const editable = that.accountAdminForm.data[keyEditable];\r\n\r\n if (!isValidAddress(type, editable)) return;\r\n\r\n return fujiCssLoader.show()\r\n .then(() => repository\r\n .addAddress(user.id, type, that.accountAdminForm.data[keyEditable])\r\n .then(refreshAddresses)\r\n .then(() => {\r\n that.accountAdminForm.data[keyEditable] = fujiAddress.cloneTemplate();\r\n })\r\n )\r\n .then(fujiCssLoader.hide);\r\n };\r\n const updateAddress = (type: string) => {\r\n const propertyPrefix = type.toLowerCase();\r\n const id = that.accountAdminForm.data[`${propertyPrefix}Id`];\r\n const editable = that.accountAdminForm.data[`${propertyPrefix}Editable`];\r\n\r\n if (!isValidAddress(type, editable)) return;\r\n\r\n return fujiCssLoader.show()\r\n .then(() => repository\r\n .updateAddress(user.id, id, editable)\r\n .then(refreshAddresses)\r\n )\r\n .then(fujiCssLoader.hide);\r\n };\r\n\r\n let user;\r\n\r\n getCompaniesIds: entity => {\r\n const ids = repository.fetchUserCompaniesIds(entity.id);\r\n return ids;\r\n };\r\n\r\n return {\r\n edit: entity => {\r\n user = entity;\r\n\r\n fujiCssLoader.show()\r\n .then(() => {\r\n repository.fetchUserAddresses(entity.id)\r\n .then(response => {\r\n that.accountAdminForm.data = {\r\n ...JSON.parse(JSON.stringify(entity)),\r\n billing: response.data.filter(\r\n address => address.type == 'Billing'\r\n ),\r\n delivery: response.data.filter(\r\n address => address.type == 'Delivery'\r\n ),\r\n errorCode: '',\r\n billingId: '',\r\n deliveryId: '',\r\n billingEditable: fujiAddress.cloneTemplate(),\r\n deliveryEditable: fujiAddress.cloneTemplate(),\r\n };\r\n });\r\n })\r\n .then(fujiCssLoader.hide)\r\n .then(() => that.accountAdminForm.isOpen = true);\r\n },\r\n\r\n editCompany: entity => {\r\n user = entity;\r\n\r\n fujiCssLoader.show()\r\n .then(() => {\r\n repository.fetchCompanies()\r\n .then(response => {\r\n that.accountAdminForm.data = {\r\n ...JSON.parse(JSON.stringify(entity)),\r\n billing: response.data.filter(\r\n address => address.type == 'Billing'\r\n ),\r\n delivery: response.data.filter(\r\n address => address.type == 'Delivery'\r\n ),\r\n companies: response.data,\r\n errorCode: '',\r\n billingId: '',\r\n deliveryId: '',\r\n billingEditable: fujiAddress.cloneTemplate(),\r\n deliveryEditable: fujiAddress.cloneTemplate(),\r\n };\r\n });\r\n })\r\n .then(fujiCssLoader.hide)\r\n .then(() => that.accountAdminForm.isOpen = true);\r\n\r\n },\r\n\r\n addBillingAddress: () => addAddress('Billing'),\r\n addDeliveryAddress: () => addAddress('Delivery'),\r\n\r\n updateBillingAddress: () => updateAddress('Billing'),\r\n updateDeliveryAddress: () => updateAddress('Delivery'),\r\n\r\n setDefaultAddress: (addressId) => {\r\n return fujiCssLoader.show()\r\n .then(() => repository.setDefaultAddress(user.id, addressId))\r\n .then(refreshAddresses)\r\n .then(fujiCssLoader.hide);\r\n },\r\n deleteAddress: (addressId) => {\r\n return fujiCssLoader.show()\r\n .then(() => repository.deleteAddress(user.id, addressId))\r\n .then(refreshAddresses)\r\n .then(fujiCssLoader.hide);\r\n },\r\n };\r\n }\r\n};","if (pages.SalesAdminManageAccountAdminsView == null) {\r\n pages.SalesAdminManageAccountAdminsView = {};\r\n}\r\n\r\npages.SalesAdminManageAccountAdminsView.excel = ((repository: any) => {\r\n let $excelInputCompanies;\r\n\r\n const companies = {\r\n selectFile: (inputId) => {\r\n that.excel.errors = [];\r\n\r\n $excelInputCompanies = $(`#${inputId}`);\r\n $excelInputCompanies.val('');\r\n $excelInputCompanies.click();\r\n },\r\n import: () => {\r\n const files = ($excelInputCompanies.get(0) as HTMLInputElement).files;\r\n if ((files?.length ?? 0) <= 0) return;\r\n\r\n return fujiCssLoader.show()\r\n .then(() => repository.importCompanies((files ?? [])[0]))\r\n .then(() => repository.searchAccountAdmins(that.filter))\r\n .then(() => document['popupMessage'](i18next.t('z0328importSuccess')))\r\n .catch(error => {\r\n that.excel.errors = error.response.data.errors ?? [];\r\n })\r\n .then(fujiCssLoader.hide);\r\n },\r\n };\r\n let that;\r\n\r\n return {\r\n companies,\r\n errors: [] as any[],\r\n\r\n init: instance => that = instance,\r\n };\r\n})","if (pages.SalesAdminManageAccountAdminsView == null) {\n pages.SalesAdminManageAccountAdminsView = {};\n}\n\npages.SalesAdminManageAccountAdminsView.repository = (() => {\n const fetchDeliveryAreas = () => {\n return axiosInstance.get(\"/orders/delivery-areas\");\n };\n const searchAccountAdmins = filter => {\n return axiosInstance\n .get(`/api/management/sales-admin/accountadmins/search/${filter ?? ''}`, {\n params: {\n ...fujiPagination.toParams(that.pagination),\n ...(that.sortOptions.options ?? {}),\n }\n })\n .then(response => {\n that.entities = response.data.currentPage;\n fujiPagination.update(that.pagination, response.data);\n });\n };\n const addCompany = company => {\n return axiosInstance\n .post('/api/management/sales-admin/companies/', company);\n };\n\n const updateCompany = company => {\n return axiosInstance\n .patch(`/api/management/sales-admin/companies/${company.id}`, company);\n };\n\n const updateCompanies = (id, checkedcompany) => {\n console.log(checkedcompany);\n return axiosInstance\n .post(`/api/management/sales-admin/accountadmins/${id}`, checkedcompany);\n };\n\n const importCompanies = (file) => {\n const formData = new FormData();\n formData.append('file', file);\n\n return axiosInstance.post('/excel/management/sales-admin/import-companies', formData);\n };\n const resetPassword = (userIds) => {\n return axiosInstance.post(\n '/api/management/sales-admin/users/password/reset',\n userIds\n );\n };\n const fetchUserAddresses = userId => {\n return axiosInstance\n .get(`/api/management/sales-admin/users/${userId}/addresses`);\n };\n\n const fetchCompanies = () => {\n return axiosInstance\n .get(`/api/management/sales-admin/companies`);\n };\n\n const fetchUserCompaniesIds = (userId) => {\n return axiosInstance\n .get(`/api/management/sales-admin/users/${userId}/companyids`)\n .then((response) => {\n return response;\n })\n .catch((error) => {\n console.error(error);\n });\n };\n\n const addAddress = (userId, type, form) => {\n return axiosInstance\n .post(`/api/management/sales-admin/users/${userId}/addresses/${type}`, form);\n }\n const updateAddress = (userId, addressId, form) => {\n return axiosInstance\n .patch(`/api/management/sales-admin/users/${userId}/addresses/${addressId}`, form);\n }\n const setDefaultAddress = (userId, addressId) => {\n return axiosInstance\n .patch(`/api/management/sales-admin/users/${userId}/addresses/${addressId}/set-default`);\n }\n const deleteAddress = (userId, addressId) => {\n return axiosInstance\n .delete(`/api/management/sales-admin/users/${userId}/addresses/${addressId}`);\n }\n\n let that;\n\n return {\n fetchDeliveryAreas,\n searchAccountAdmins,\n addCompany,\n updateCompany,\n updateCompanies,\n importCompanies,\n resetPassword,\n fetchUserAddresses,\n fetchCompanies,\n fetchUserCompaniesIds,\n\n addAddress,\n updateAddress,\n setDefaultAddress,\n deleteAddress,\n\n init: instance => that = instance,\n }\n})();","if (pages.SalesAdminManageAccountAdminsView == null) {\n pages.SalesAdminManageAccountAdminsView = {};\n}\n\npages.SalesAdminManageAccountAdminsView.watcher = (() => {\n const watchCompanies = ((that: any, searchAccountAdmins, pagination) => {\n const delay = 1000;\n const fetchCompanies = () => {\n return fujiCssLoader.show()\n .then(searchAccountAdmins)\n .then(fujiCssLoader.hide);\n };\n\n let timer: any;\n\n that.$watch('pagination.currentPage', fetchCompanies);\n that.$watch('entities', () => {\n fujiPagination.$paginate(\n pagination,\n $(\"#companies-pages-wrapper\"),\n );\n });\n that.$watch('filter', () => {\n const reset = () => {\n if (timer != null) {\n clearTimeout(timer);\n timer = null;\n }\n };\n\n reset();\n\n timer = setTimeout(() => fetchCompanies().then(reset), delay);\n });\n that.$watch('accountAdminForm.isOpen', () => that.accountAdminForm.errorCode = '');\n });\n\n return {\n watch: (that, repository) => {\n watchCompanies(\n that,\n () => repository.searchAccountAdmins(that.filter),\n that.pagination\n );\n },\n }\n})();","const SalesAdminManageAccountAdminsView = function () {\n const sortOptions = fujiSortOptions.create();\n const repository = pages.SalesAdminManageAccountAdminsView.repository;\n const watcher = pages.SalesAdminManageAccountAdminsView.watcher;\n const excel = pages.SalesAdminManageAccountAdminsView.excel(repository);\n\n const addOrUpdateAccountAdmin = callback => {\n that.accountAdminForm.errorCode = '';\n\n return fujiCssLoader.show()\n .then(() => callback(that.accountAdminForm.data))\n .then(() => repository.searchAccountAdmins(that.filter))\n .then(() => that.accountAdminForm.isOpen = false)\n .catch(error => that.accountAdminForm.errorCode = error.response.data.errorCode)\n .then(fujiCssLoader.hide);\n };\n\n const addOrUpdateCompanies = (id,callback) => {\n that.accountAdminForm.errorCode = '';\n debugger;\n console.log(that.companyIds);\n return fujiCssLoader.show()\n .then(() => callback(id,that.companyIds))\n .then(() => repository.fetchCompanies())\n .then(() => that.accountAdminForm.isOpen = false)\n .catch(error => that.accountAdminForm.errorCode = error.response.data.errorCode)\n .then(fujiCssLoader.hide);\n };\n\n async function fetchUserAndCompanyIds(userId: any) {\n try {\n let response = await repository.fetchUserCompaniesIds(userId);\n console.log(response.data);\n that.companyIds = response.data;\n const array = Array.from(that.companyIds); \n that.companyIds = array;\n console.log(that.companyIds);\n } catch (error) {\n console.error(error);\n }\n };\n\n let that;\n let addressForm;\n let companyIds: number[] = [];\n\n return {\n excel,\n sortOptions,\n filter: '',\n checkedUsers: [],\n checkedCompanies:[],\n entities: [],\n companyIds,\n deliveryAreas: [],\n accountAdminForm: {\n isOpen: false,\n errorCode: '',\n data: {\n administrator: {}\n } as any,\n edit: entity => {\n if (entity) {\n addressForm.editCompany(entity);\n fetchUserAndCompanyIds(entity.id);\n }\n else {\n that.accountAdminForm.data = {\n administrator: {}\n };\n that.accountAdminForm.isOpen = true;\n }\n },\n save: () => addOrUpdateAccountAdmin(repository.updateAccountAdmin),\n add: () => addOrUpdateAccountAdmin(repository.addAccountAdmin),\n saveCustomers: userId => addOrUpdateCompanies(userId,repository.updateCompanies),\n\n editAddress: (type, id) => {\n if (that.accountAdminForm.data[`${type}Id`] == id) {\n that.accountAdminForm.data[`${type}Id`] = '';\n that.accountAdminForm.data[`${type}Editable`] = fujiAddress.cloneTemplate();\n }\n else {\n const address = that.accountAdminForm.data[type]\n .filter(entity => entity.id == id)[0];\n\n that.accountAdminForm.data[`${type}Id`] = id;\n that.accountAdminForm.data[`${type}Editable`] = { ...address };\n }\n },\n\n addBillingAddress: () => addressForm.addBillingAddress(),\n addDeliveryAddress: () => addressForm.addDeliveryAddress(),\n\n updateBillingAddress: () => addressForm.updateBillingAddress(),\n updateDeliveryAddress: () => addressForm.updateDeliveryAddress(),\n\n setDefaultAddress: (addressId) => addressForm.setDefaultAddress(addressId),\n deleteAddress: (addressId) => addressForm.deleteAddress(addressId),\n },\n\n pagination: fujiPagination.newModel(10),\n\n init: function () {\n that = this;\n\n sortOptions.init(\n that,\n () => fujiCssLoader.show()\n .then(() => repository.searchAccountAdmins(this.filter))\n .then(fujiCssLoader.hide)\n );\n repository.init(this);\n addressForm = pages.SalesAdminManageAccountAdminsView.addressForm.create(this, repository);\n\n\n return fujiCssLoader.show()\n .then(() => axios.all([\n repository.fetchDeliveryAreas()\n .then(response => this.deliveryAreas = response.data),\n repository.searchAccountAdmins(this.filter)\n ]))\n .then(fujiCssLoader.hide);\n },\n resetPassword: function () {\n return fujiCssLoader.show()\n .then(() => repository.resetPassword(this.checkedUsers))\n .then(() => document[\"popupMessage\"]('Email sent'))\n .then(() => this.checkedUsers = [])\n .then(fujiCssLoader.hide);\n },\n };\n};","if (pages.salesAdminManageCompaniesView == null) {\r\n pages.salesAdminManageCompaniesView = {};\r\n}\r\n\r\npages.salesAdminManageCompaniesView.addressForm = {\r\n create: (that, repository) => {\r\n const refreshAddresses = () => {\r\n return repository.fetchUserAddresses(user.id)\r\n .then(response => {\r\n that.customerForm.data.billing = response.data.filter(\r\n address => address.type == 'Billing'\r\n );\r\n that.customerForm.data.delivery = response.data.filter(\r\n address => address.type == 'Delivery'\r\n );\r\n });\r\n };\r\n const isValidAddress = (type: string, data: any) => {\r\n const validated = fujiAddress.validate(type, data);\r\n\r\n if (!validated.isValid) {\r\n if (!document['popupErrors'](validated.messages)) {\r\n alert(validated.messages.join('\\n'));\r\n }\r\n }\r\n\r\n return validated.isValid;\r\n };\r\n const addAddress = (type: string) => {\r\n const propertyPrefix = type.toLowerCase();\r\n const keyEditable = `${propertyPrefix}Editable`;\r\n const editable = that.customerForm.data[keyEditable];\r\n\r\n if (!isValidAddress(type, editable)) return;\r\n\r\n return fujiCssLoader.show()\r\n .then(() => repository\r\n .addAddress(user.id, type, that.customerForm.data[keyEditable])\r\n .then(refreshAddresses)\r\n .then(() => {\r\n that.customerForm.data[keyEditable] = fujiAddress.cloneTemplate();\r\n })\r\n )\r\n .then(fujiCssLoader.hide);\r\n };\r\n const updateAddress = (type: string) => {\r\n const propertyPrefix = type.toLowerCase();\r\n const id = that.customerForm.data[`${propertyPrefix}Id`];\r\n const editable = that.customerForm.data[`${propertyPrefix}Editable`];\r\n\r\n if (!isValidAddress(type, editable)) return;\r\n\r\n return fujiCssLoader.show()\r\n .then(() => repository\r\n .updateAddress(user.id, id, editable)\r\n .then(refreshAddresses)\r\n )\r\n .then(fujiCssLoader.hide);\r\n };\r\n\r\n let user;\r\n\r\n return {\r\n edit: entity => {\r\n user = entity.administrator;\r\n\r\n fujiCssLoader.show()\r\n .then(() => {\r\n repository.fetchUserAddresses(entity.administrator.id)\r\n .then(response => {\r\n that.customerForm.data = {\r\n ...JSON.parse(JSON.stringify(entity)),\r\n billing: response.data.filter(\r\n address => address.type == 'Billing'\r\n ),\r\n delivery: response.data.filter(\r\n address => address.type == 'Delivery'\r\n ),\r\n errorCode: '',\r\n billingId: '',\r\n deliveryId: '',\r\n billingEditable: fujiAddress.cloneTemplate(),\r\n deliveryEditable: fujiAddress.cloneTemplate(),\r\n };\r\n });\r\n })\r\n .then(fujiCssLoader.hide)\r\n .then(() => that.customerForm.isOpen = true);\r\n },\r\n\r\n addBillingAddress: () => addAddress('Billing'),\r\n addDeliveryAddress: () => addAddress('Delivery'),\r\n\r\n updateBillingAddress: () => updateAddress('Billing'),\r\n updateDeliveryAddress: () => updateAddress('Delivery'),\r\n\r\n setDefaultAddress: (addressId) => {\r\n return fujiCssLoader.show()\r\n .then(() => repository.setDefaultAddress(user.id, addressId))\r\n .then(refreshAddresses)\r\n .then(fujiCssLoader.hide);\r\n },\r\n deleteAddress: (addressId) => {\r\n return fujiCssLoader.show()\r\n .then(() => repository.deleteAddress(user.id, addressId))\r\n .then(refreshAddresses)\r\n .then(fujiCssLoader.hide);\r\n },\r\n };\r\n }\r\n};","if (pages.salesAdminManageCompaniesView == null) {\r\n pages.salesAdminManageCompaniesView = {};\r\n}\r\n\r\npages.salesAdminManageCompaniesView.excel = ((repository: any) => {\r\n let $excelInputCompanies;\r\n\r\n const companies = {\r\n selectFile: (inputId) => {\r\n that.excel.errors = [];\r\n\r\n $excelInputCompanies = $(`#${inputId}`);\r\n $excelInputCompanies.val('');\r\n $excelInputCompanies.click();\r\n },\r\n import: () => {\r\n const files = ($excelInputCompanies.get(0) as HTMLInputElement).files;\r\n if ((files?.length ?? 0) <= 0) return;\r\n\r\n return fujiCssLoader.show()\r\n .then(() => repository.importCompanies((files ?? [])[0]))\r\n .then(() => repository.searchCompanies(that.filter))\r\n .then(() => document['popupMessage'](i18next.t('z0328importSuccess')))\r\n .catch(error => {\r\n that.excel.errors = error.response.data.errors ?? [];\r\n })\r\n .then(fujiCssLoader.hide);\r\n },\r\n };\r\n let that;\r\n\r\n return {\r\n companies,\r\n errors: [] as any[],\r\n\r\n init: instance => that = instance,\r\n };\r\n})","if (pages.salesAdminManageCompaniesView == null) {\r\n pages.salesAdminManageCompaniesView = {};\r\n}\r\n\r\npages.salesAdminManageCompaniesView.repository = (() => {\r\n const fetchDeliveryAreas = () => {\r\n return axiosInstance.get(\"/orders/delivery-areas\");\r\n };\r\n const searchCompanies = filter => {\r\n return axiosInstance\r\n .get(`/api/management/sales-admin/companies/search/${filter ?? ''}`, {\r\n params: {\r\n ...fujiPagination.toParams(that.pagination),\r\n ...(that.sortOptions.options ?? {}),\r\n }\r\n })\r\n .then(response => {\r\n that.entities = response.data.currentPage;\r\n fujiPagination.update(that.pagination, response.data);\r\n });\r\n };\r\n const addCompany = company => {\r\n return axiosInstance\r\n .post('/api/management/sales-admin/companies/', company);\r\n };\r\n const updateCompany = company => {\r\n return axiosInstance\r\n .patch(`/api/management/sales-admin/companies/${company.id}`, company);\r\n };\r\n\r\n const importCompanies = (file) => {\r\n const formData = new FormData();\r\n formData.append('file', file);\r\n\r\n return axiosInstance.post('/excel/management/sales-admin/import-companies', formData);\r\n };\r\n const resetPassword = (userIds) => {\r\n return axiosInstance.post(\r\n '/api/management/sales-admin/users/password/reset',\r\n userIds\r\n );\r\n };\r\n const fetchUserAddresses = userId => {\r\n return axiosInstance\r\n .get(`/api/management/sales-admin/users/${userId}/addresses`);\r\n };\r\n\r\n const addAddress = (userId, type, form) => {\r\n return axiosInstance\r\n .post(`/api/management/sales-admin/users/${userId}/addresses/${type}`, form);\r\n }\r\n const updateAddress = (userId, addressId, form) => {\r\n return axiosInstance\r\n .patch(`/api/management/sales-admin/users/${userId}/addresses/${addressId}`, form);\r\n }\r\n const setDefaultAddress = (userId, addressId) => {\r\n return axiosInstance\r\n .patch(`/api/management/sales-admin/users/${userId}/addresses/${addressId}/set-default`);\r\n }\r\n const deleteAddress = (userId, addressId) => {\r\n return axiosInstance\r\n .delete(`/api/management/sales-admin/users/${userId}/addresses/${addressId}`);\r\n }\r\n\r\n let that;\r\n\r\n return {\r\n fetchDeliveryAreas,\r\n searchCompanies,\r\n addCompany,\r\n updateCompany,\r\n importCompanies,\r\n resetPassword,\r\n fetchUserAddresses,\r\n\r\n addAddress,\r\n updateAddress,\r\n setDefaultAddress,\r\n deleteAddress,\r\n\r\n init: instance => that = instance,\r\n }\r\n})();","if (pages.salesAdminManageCompaniesView == null) {\r\n pages.salesAdminManageCompaniesView = {};\r\n}\r\n\r\npages.salesAdminManageCompaniesView.watcher = (() => {\r\n const watchCompanies = ((that: any, searchCompanies, pagination) => {\r\n const delay = 1000;\r\n const fetchCompanies = () => {\r\n return fujiCssLoader.show()\r\n .then(searchCompanies)\r\n .then(fujiCssLoader.hide);\r\n };\r\n\r\n let timer: any;\r\n\r\n that.$watch('pagination.currentPage', fetchCompanies);\r\n that.$watch('entities', () => {\r\n fujiPagination.$paginate(\r\n pagination,\r\n $(\"#companies-pages-wrapper\"),\r\n );\r\n });\r\n that.$watch('filter', () => {\r\n const reset = () => {\r\n if (timer != null) {\r\n clearTimeout(timer);\r\n timer = null;\r\n }\r\n };\r\n\r\n reset();\r\n\r\n timer = setTimeout(() => fetchCompanies().then(reset), delay);\r\n });\r\n that.$watch('customerForm.isOpen', () => that.customerForm.errorCode = '');\r\n });\r\n\r\n return {\r\n watch: (that, repository) => {\r\n watchCompanies(\r\n that,\r\n () => repository.searchCompanies(that.filter),\r\n that.pagination\r\n );\r\n },\r\n }\r\n})();","const SalesAdminManageCompaniesView = function () {\n const sortOptions = fujiSortOptions.create();\n const repository = pages.salesAdminManageCompaniesView.repository;\n const watcher = pages.salesAdminManageCompaniesView.watcher;\n const excel = pages.salesAdminManageCompaniesView.excel(repository);\n\n const addOrUpdateCompany = callback => {\n that.customerForm.errorCode = '';\n\n return fujiCssLoader.show()\n .then(() => callback(that.customerForm.data))\n .then(() => repository.searchCompanies(that.filter))\n .then(() => that.customerForm.isOpen = false)\n .catch(error => that.customerForm.errorCode = error.response.data.errorCode)\n .then(fujiCssLoader.hide);\n };\n\n let that;\n let addressForm;\n\n return {\n excel,\n sortOptions,\n\n filter: '',\n checkedUsers: [],\n entities: [],\n deliveryAreas: [],\n customerForm: {\n isOpen: false,\n errorCode: '',\n data: {\n administrator: {}\n } as any,\n edit: entity => {\n if (entity) {\n addressForm.edit(entity);\n }\n else {\n that.customerForm.data = {\n administrator: {}\n };\n that.customerForm.isOpen = true;\n }\n },\n save: () => addOrUpdateCompany(repository.updateCompany),\n add: () => addOrUpdateCompany(repository.addCompany),\n\n editAddress: (type, id) => {\n if (that.customerForm.data[`${type}Id`] == id) {\n that.customerForm.data[`${type}Id`] = '';\n that.customerForm.data[`${type}Editable`] = fujiAddress.cloneTemplate();\n }\n else {\n const address = that.customerForm.data[type]\n .filter(entity => entity.id == id)[0];\n\n that.customerForm.data[`${type}Id`] = id;\n that.customerForm.data[`${type}Editable`] = { ...address };\n }\n },\n\n addBillingAddress: () => addressForm.addBillingAddress(),\n addDeliveryAddress: () => addressForm.addDeliveryAddress(),\n\n updateBillingAddress: () => addressForm.updateBillingAddress(),\n updateDeliveryAddress: () => addressForm.updateDeliveryAddress(),\n\n setDefaultAddress: (addressId) => addressForm.setDefaultAddress(addressId),\n deleteAddress: (addressId) => addressForm.deleteAddress(addressId),\n },\n\n pagination: fujiPagination.newModel(10),\n\n init: function () {\n that = this;\n\n sortOptions.init(\n that,\n () => fujiCssLoader.show()\n .then(() => repository.searchCompanies(this.filter))\n .then(fujiCssLoader.hide)\n );\n repository.init(this);\n excel.init(this);\n watcher.watch(this, repository);\n addressForm = pages.salesAdminManageCompaniesView.addressForm.create(this, repository);\n\n return fujiCssLoader.show()\n .then(() => axios.all([\n repository.fetchDeliveryAreas()\n .then(response => this.deliveryAreas = response.data),\n repository.searchCompanies(this.filter)\n ]))\n .then(fujiCssLoader.hide);\n },\n resetPassword: function () {\n return fujiCssLoader.show()\n .then(() => repository.resetPassword(this.checkedUsers))\n .then(() => document[\"popupMessage\"]('Email sent'))\n .then(() => this.checkedUsers = [])\n .then(fujiCssLoader.hide);\n },\n };\n};","if (pages.salesAdminManageContractsView == null) {\r\n pages.salesAdminManageContractsView = {};\r\n}\r\n\r\npages.salesAdminManageContractsView.contractForm = repository => {\r\n let that;\r\n let getFilter;\r\n\r\n return {\r\n isOpen: false,\r\n data: {},\r\n errorCode: '',\r\n\r\n init: function (instance) {\r\n that = instance.contractForm;\r\n getFilter = () => instance.filter;\r\n },\r\n validate: () => {\r\n if (!that.data.contractNumber) {\r\n return 'EmptyContractNumber';\r\n }\r\n\r\n if (!that.data.companyId) {\r\n return 'EmptyCompany';\r\n }\r\n\r\n if (!that.data.startDay) {\r\n return 'EmptyStartDay';\r\n }\r\n\r\n if (!that.data.endDay) {\r\n return 'EmptyEndDay';\r\n }\r\n\r\n if (new Date(that.data.startDay) > new Date(that.data.endDay)) {\r\n return 'InvalidDateRange';\r\n }\r\n\r\n return '';\r\n },\r\n save: () => {\r\n that.errorCode = that.validate();\r\n if (that.errorCode) return;\r\n\r\n return fujiCssLoader.show()\r\n .then(() => repository.createContract(that.data))\r\n .then(response => that.data.id = response.data.id)\r\n .catch(error => that.errorCode = error.response.data.errorCode)\r\n .then(() => repository.searchContracts(getFilter()))\r\n .then(fujiCssLoader.hide);\r\n },\r\n };\r\n};","if (pages.salesAdminManageContractsView == null) {\r\n pages.salesAdminManageContractsView = {};\r\n}\r\n\r\npages.salesAdminManageContractsView.excel = ((repository: any) => {\r\n const init = (fnImport, fnCallback) => {\r\n let $input;\r\n\r\n return {\r\n selectFile: (inputId) => {\r\n that.excel.errors = [];\r\n\r\n $input = $(`#${inputId}`);\r\n $input.val('');\r\n $input.click();\r\n },\r\n import: () => {\r\n const files = ($input.get(0) as HTMLInputElement).files;\r\n if ((files?.length ?? 0) <= 0) return;\r\n\r\n return fujiCssLoader.show()\r\n .then(() => fnImport((files ?? [])[0])\r\n )\r\n .then(() => document['popupMessage'](i18next.t('z0328importSuccess')))\r\n .then(fnCallback)\r\n .catch(error => {\r\n that.excel.errors = error.response.data.errors ?? [];\r\n })\r\n .then(fujiCssLoader.hide);\r\n },\r\n };\r\n };\r\n const contracts = init(\r\n file => repository.importContracts(file),\r\n () => repository.searchContracts(that.filter)\r\n );\r\n const contract = init(\r\n file => repository.importContract(that.contractForm.data.id, file),\r\n () => repository.searchContracts(that.filter)\r\n .then(() => that.showPricingsModal(that.contractForm.data.id))\r\n .then(() => {\r\n that.contractForm.data = {};\r\n that.contractForm.isOpen = false;\r\n })\r\n );\r\n\r\n let that;\r\n\r\n return {\r\n contract,\r\n contracts,\r\n errors: [] as any[],\r\n\r\n init: instance => that = instance,\r\n };\r\n})","if (pages.salesAdminManageContractsView == null) {\r\n pages.salesAdminManageContractsView = {};\r\n}\r\n\r\npages.salesAdminManageContractsView.repository = (() => {\r\n const fetchCompanies = () => {\r\n return axiosInstance.get('/api/management/sales-admin/companies');\r\n };\r\n const createContract = data => {\r\n const formatDate = value => {\r\n return flatpickr.formatDate(new Date(value), 'd F Y');\r\n };\r\n return axiosInstance.post(\r\n '/api/management/sales-admin/contracts',\r\n {\r\n ...data,\r\n companyId: parseInt(data.companyId),\r\n startDay: formatDate(data.startDay),\r\n endDay: formatDate(data.endDay),\r\n unitPrice: 0,\r\n quantity: 0,\r\n }\r\n );\r\n };\r\n\r\n const searchContracts = filter => {\r\n return axiosInstance\r\n .get(`/api/management/sales-admin/contracts/search/${filter ?? ''}`, {\r\n params: {\r\n ...fujiPagination.toParams(that.pagination),\r\n ...(that.sortOptions.options ?? {}),\r\n }\r\n })\r\n .then(response => {\r\n that.entities = response.data.currentPage;\r\n fujiPagination.update(that.pagination, response.data);\r\n });\r\n };\r\n const importContracts = file => {\r\n const formData = new FormData();\r\n formData.append('file', file);\r\n\r\n return axiosInstance\r\n .post('/excel/management/sales-admin/contracts/import', formData);\r\n };\r\n const importContract = (id, file) => {\r\n const formData = new FormData();\r\n formData.append('file', file);\r\n\r\n return axiosInstance.post(\r\n `/excel/management/sales-admin/contracts/${id}/pricings/import`,\r\n formData\r\n );\r\n };\r\n const disableContract = id => {\r\n return axiosInstance.patch(`/api/management/sales-admin/contracts/${id}/disable`);\r\n };\r\n\r\n let that;\r\n\r\n return {\r\n fetchCompanies,\r\n createContract,\r\n searchContracts,\r\n importContracts,\r\n importContract,\r\n disableContract,\r\n\r\n init: instance => that = instance,\r\n };\r\n})();","if (pages.salesAdminManageContractsView == null) {\r\n pages.salesAdminManageContractsView = {};\r\n}\r\n\r\npages.salesAdminManageContractsView.watcher = (() => {\r\n const watchContracts = ((that: any, repository) => {\r\n const delay = 1000;\r\n const searchContracts = () => {\r\n return fujiCssLoader.show()\r\n .then(() => repository.searchContracts(that.filter))\r\n .then(fujiCssLoader.hide);\r\n };\r\n\r\n let timer: any;\r\n\r\n that.$watch('pagination.currentPage', searchContracts);\r\n that.$watch('entities', () => {\r\n fujiPagination.$paginate(\r\n that.pagination,\r\n $(\"#contracts-pages-wrapper\"),\r\n );\r\n });\r\n that.$watch('filter', () => {\r\n const reset = () => {\r\n if (timer != null) {\r\n clearTimeout(timer);\r\n timer = null;\r\n }\r\n };\r\n\r\n reset();\r\n\r\n timer = setTimeout(() => searchContracts().then(reset), delay);\r\n });\r\n });\r\n\r\n return {\r\n watch: (that, repository) => {\r\n watchContracts(that, repository);\r\n },\r\n }\r\n})();","const SalesAdminManageContractsView = function () {\r\n const sortOptions = fujiSortOptions.create();\r\n const repository = pages.salesAdminManageContractsView.repository;\r\n const customerAdminRepository = pages.customerAdminManagementView.repository(\r\n '/api/management/sales-admin',\r\n '/excel/management/sales-admin'\r\n );\r\n const excel = pages.salesAdminManageContractsView.excel(repository);\r\n const contractForm = pages.salesAdminManageContractsView.contractForm(repository);\r\n const watcher = pages.salesAdminManageContractsView.watcher;\r\n\r\n return {\r\n excel,\r\n contractForm,\r\n sortOptions,\r\n\r\n inactiveContractModal: null as any,\r\n filter: '',\r\n companies: [],\r\n entities: [],\r\n isPricingsModal: false,\r\n pagination: fujiPagination.newModel(10),\r\n views: {\r\n contracts: {\r\n pricings: []\r\n },\r\n company: {},\r\n users: {},\r\n },\r\n\r\n contractOnClick: function (contract) {\r\n if (contract.numberOfPricings > 0) {\r\n this.showPricingsModal(contract.id);\r\n }\r\n else {\r\n this.contractForm.data = {\r\n ...contract,\r\n contractNumber: contract.number\r\n };\r\n this.contractForm.isOpen = true;\r\n }\r\n },\r\n showPricingsModal: function (contractId) {\r\n return fujiCssLoader.show()\r\n .then(() => customerAdminRepository.fetchPricings(contractId))\r\n .then(() => this.isPricingsModal = true)\r\n .then(fujiCssLoader.hide);\r\n },\r\n\r\n init: function () {\r\n repository.init(this);\r\n customerAdminRepository.init(this);\r\n excel.init(this);\r\n watcher.watch(this, repository);\r\n\r\n sortOptions.init(\r\n this,\r\n () => fujiCssLoader.show()\r\n .then(() => repository.searchContracts(this.filter))\r\n .then(fujiCssLoader.hide)\r\n );\r\n\r\n fujiCssLoader.show()\r\n .then(() => repository.searchContracts(this.filter))\r\n .then(repository.fetchCompanies)\r\n .then(response => {\r\n this.companies = response.data;\r\n contractForm.init(this);\r\n })\r\n .then(fujiCssLoader.hide);\r\n },\r\n confirmDisable: function (entity) {\r\n this.inactiveContractModal = fujiModals\r\n .confirm(\r\n i18next.t('z0328confirmInactiveContract'),\r\n `${i18next.t('z0328pleaseConfirmToInactive')} ${entity.number}`,\r\n () => fujiCssLoader.show()\r\n .then(() => repository.disableContract(entity.id))\r\n .then(() => repository.searchContracts(this.filter))\r\n .then(() => this.inactiveContractModal = null)\r\n .then(fujiCssLoader.hide),\r\n () => this.inactiveContractModal = null\r\n )\r\n },\r\n };\r\n};","if (pages.salesAdminManageSalesmenView == null) {\r\n pages.salesAdminManageSalesmenView = {};\r\n}\r\n\r\npages.salesAdminManageSalesmenView.excel = ((repository: any) => {\r\n let $input;\r\n\r\n const assignments = {\r\n selectFile: (inputId) => {\r\n that.excel.errors = [];\r\n\r\n $input = $(`#${inputId}`);\r\n $input.val('');\r\n $input.click();\r\n },\r\n import: () => {\r\n const files = ($input.get(0) as HTMLInputElement).files;\r\n if ((files?.length ?? 0) <= 0) return;\r\n\r\n return fujiCssLoader.show()\r\n .then(() => repository\r\n .importAssignments(that.currentSales.id, (files ?? [])[0])\r\n )\r\n .then(() => document['popupMessage'](i18next.t('z0328importSuccess')))\r\n .catch(error => {\r\n that.excel.errors = error.response.data.errors ?? [];\r\n })\r\n .then(fujiCssLoader.hide);\r\n },\r\n };\r\n let that;\r\n\r\n return {\r\n assignments,\r\n errors: [] as any[],\r\n\r\n init: instance => that = instance,\r\n };\r\n})","if (pages.salesAdminManageSalesmenView == null) {\r\n pages.salesAdminManageSalesmenView = {};\r\n}\r\n\r\npages.salesAdminManageSalesmenView.repository = (() => {\r\n const searchSalesmen = filter => {\r\n return axiosInstance\r\n .get(`/api/management/sales-admin/salesmen/search/${filter ?? ''}`)\r\n .then(response => {\r\n that.salesmen = response.data.map(sales => {\r\n return {\r\n ...sales,\r\n createdDate: luxon.DateTime.fromISO(sales.createdAtUtc),\r\n }\r\n });\r\n\r\n if (that.salesmen.length > 0) {\r\n that.currentSales = that.salesmen[0];\r\n }\r\n else {\r\n that.currentSales = null;\r\n }\r\n });\r\n };\r\n const createSales = profile => {\r\n return axiosInstance.post('/api/management/sales-admin/salesmen', profile);\r\n };\r\n const updateSales = profile => {\r\n return axiosInstance.patch('/api/management/sales-admin/salesmen', profile);\r\n };\r\n\r\n const searchAssignments = (salesId, filter) => {\r\n return axiosInstance\r\n .get(\r\n `/api/management/sales-admin/salesmen/${salesId}/assignments/search/${filter ?? ''}`,\r\n { params: fujiPagination.toParams(that.assignments.pagination) }\r\n )\r\n .then(response => {\r\n that.assignments.entities = response.data.currentPage;\r\n fujiPagination.update(that.assignments.pagination, response.data);\r\n });\r\n };\r\n const importAssignments = (salesId, file) => {\r\n const formData = new FormData();\r\n formData.append('file', file);\r\n\r\n return axiosInstance\r\n .post(\r\n `/excel/management/sales-admin/salesmen/${salesId}/assignments`,\r\n formData\r\n );\r\n };\r\n\r\n let that;\r\n\r\n return {\r\n searchSalesmen,\r\n createSales,\r\n updateSales,\r\n searchAssignments,\r\n importAssignments,\r\n\r\n init: instance => that = instance,\r\n };\r\n})();","if (pages.salesAdminManageSalesmenView == null) {\r\n pages.salesAdminManageSalesmenView = {};\r\n}\r\n\r\npages.salesAdminManageSalesmenView.salesForm = (repository) => {\r\n const searchSalesmen = () => {\r\n return repository.searchSalesmen(that.filters.sales);\r\n };\r\n\r\n const validateSalesForm = form => {\r\n const errors = [] as any[];\r\n if ((form.firstName?.length ?? 0) <= 0) {\r\n errors.push('firstName');\r\n }\r\n if ((form.lastName?.length ?? 0) <= 0) {\r\n errors.push('lastName');\r\n }\r\n if ((form.email?.length ?? 0) <= 0) {\r\n errors.push('email');\r\n }\r\n if ((form.countryCode?.length ?? 0) <= 0) {\r\n errors.push('phone');\r\n }\r\n if ((form.phone?.length ?? 0) <= 0) {\r\n errors.push('phone');\r\n }\r\n\r\n return {\r\n errors,\r\n isValid: errors.length <= 0,\r\n };\r\n };\r\n\r\n let that;\r\n\r\n return {\r\n searchSalesmen,\r\n\r\n init: instance => that = instance,\r\n openSalesForm: (sales) => {\r\n if (sales == null) {\r\n that.salesForm.data = {};\r\n }\r\n else {\r\n that.salesForm.data = JSON.parse(JSON.stringify(sales));\r\n }\r\n that.salesForm.isEdit = true;\r\n },\r\n saveSales: () => {\r\n const validated = validateSalesForm(that.salesForm.data);\r\n if (!validated.isValid) {\r\n that.salesForm.errors = validated.errors;\r\n return;\r\n }\r\n that.salesForm.errors = [];\r\n\r\n var chain = fujiCssLoader.show();\r\n if (that.salesForm.data.id) {\r\n chain = chain\r\n .then(() => repository.updateSales(that.salesForm.data))\r\n .then(() => document['popupMessage'](i18next.t('z0328updateSuccess')));\r\n }\r\n else {\r\n chain = chain\r\n .then(() => repository.createSales(that.salesForm.data))\r\n .then((response) => {\r\n if (!response.ok) {\r\n throw new Error(response.status);\r\n }\r\n document['popupMessage'](i18next.t('z0328createSuccess'));\r\n })\r\n .catch((error) => {\r\n if (error.message === \"401\") {\r\n document['popupMessage'](i18next.t('z0328unauthorized'));\r\n } else {\r\n document['popupMessage'](i18next.t('z0328createFailed'));\r\n }\r\n });\r\n }\r\n\r\n return chain\r\n .then(searchSalesmen)\r\n .then(() => {\r\n that.salesForm.data = {};\r\n that.salesForm.isEdit = false;\r\n })\r\n .then(fujiCssLoader.hide);\r\n },\r\n };\r\n};","if (pages.salesAdminManageSalesmenView == null) {\r\n pages.salesAdminManageSalesmenView = {};\r\n}\r\n\r\npages.salesAdminManageSalesmenView.watcher = (() => {\r\n const watchSales = (that, repository) => {\r\n const delay = 1000;\r\n let timer: any;\r\n\r\n that.$watch('filters.sales', () => {\r\n const reset = () => {\r\n if (timer != null) {\r\n clearTimeout(timer);\r\n timer = null;\r\n }\r\n };\r\n\r\n reset();\r\n\r\n timer = setTimeout(() => {\r\n return fujiCssLoader.show()\r\n .then(() => repository.searchSalesmen(that.filters.sales))\r\n .then(fujiCssLoader.hide)\r\n .then(reset)\r\n }, delay);\r\n });\r\n };\r\n const watchAssignments = (that, repository) => {\r\n const delay = 1000;\r\n const searchAssignments = () => {\r\n return fujiCssLoader.show()\r\n .then(() => repository.searchAssignments(\r\n that.currentSales.id,\r\n that.filters.assignments\r\n ))\r\n .then(fujiCssLoader.hide);\r\n };\r\n\r\n let timer: any;\r\n\r\n that.$watch('assignments.pagination.currentPage', searchAssignments);\r\n that.$watch('assignments.entities', () => {\r\n fujiPagination.$paginate(\r\n that.assignments.pagination,\r\n $(\"#assignments-pages-wrapper\"),\r\n );\r\n });\r\n\r\n that.$watch('currentSales', () => {\r\n if (that.currentSales) {\r\n return searchAssignments();\r\n }\r\n });\r\n that.$watch('filters.assignments', () => {\r\n const reset = () => {\r\n if (timer != null) {\r\n clearTimeout(timer);\r\n timer = null;\r\n }\r\n };\r\n\r\n reset();\r\n timer = setTimeout(() => {\r\n return searchAssignments().then(reset)\r\n }, delay);\r\n });\r\n };\r\n\r\n return {\r\n watch: (that, repository) => {\r\n watchSales(that, repository);\r\n watchAssignments(that, repository);\r\n },\r\n };\r\n})();","const SalesAdminManageSalesmenView = function () {\r\n const repository = pages.salesAdminManageSalesmenView.repository;\r\n const salesForm = pages.salesAdminManageSalesmenView.salesForm(repository);\r\n const watcher = pages.salesAdminManageSalesmenView.watcher;\r\n const excel = pages.salesAdminManageSalesmenView.excel(repository);\r\n\r\n return {\r\n excel,\r\n salesmen: [],\r\n currentSales: null,\r\n salesForm: {\r\n isEdit: false,\r\n data: {},\r\n errors: [],\r\n },\r\n filters: {\r\n sales: '',\r\n assignments: '',\r\n },\r\n assignments: {\r\n entities: [],\r\n pagination: fujiPagination.newModel(10),\r\n },\r\n\r\n init: function () {\r\n repository.init(this);\r\n salesForm.init(this);\r\n watcher.watch(this, repository);\r\n excel.init(this);\r\n\r\n fujiCssLoader.show()\r\n .then(salesForm.searchSalesmen)\r\n .then(fujiCssLoader.hide);\r\n },\r\n\r\n searchSalesmen: salesForm.searchSalesmen,\r\n openSalesForm: salesForm.openSalesForm,\r\n saveSales: salesForm.saveSales,\r\n };\r\n};","if (pages.salesAdminManagementView == null) {\r\n pages.salesAdminManagementView = {};\r\n}\r\n\r\npages.salesAdminManagementView.repository = (companyId) => {\r\n const apiBaseUrl = `/api/management/sales-admin/companies/${companyId}`;\r\n\r\n const searchContracts = () => {\r\n return axiosInstance\r\n .get(`${apiBaseUrl}/contracts/search/${contracts.filter ?? ''}`, {\r\n params: {\r\n ...fujiPagination.toParams(contracts.pagination),\r\n ...(contracts.sortOptions.options ?? {})\r\n }\r\n })\r\n .then(response => {\r\n contracts.entities = response.data.currentPage;\r\n fujiPagination.update(contracts.pagination, response.data);\r\n });\r\n };\r\n const fetchUsers = () => {\r\n return axiosInstance\r\n .get(`${apiBaseUrl}/users/search/${users.filter ?? ''}`, {\r\n params: {\r\n ...fujiPagination.toParams(users.pagination),\r\n ...(users.sortOptions.options ?? {})\r\n }\r\n })\r\n .then(response => {\r\n users.entities = response.data.currentPage;\r\n fujiPagination.update(users.pagination, response.data);\r\n });\r\n };\r\n const createUser = (form) => {\r\n return axiosInstance.post(`${apiBaseUrl}/users`, form);\r\n };\r\n const importUsers = (file) => {\r\n const formData = new FormData();\r\n formData.append('file', file);\r\n\r\n return axiosInstance\r\n .post(`/excel/management/sales-admin/companies/${companyId}/import-users`, formData);\r\n };\r\n const resetPassword = (userIds) => {\r\n return axiosInstance.post(\r\n '/api/management/sales-admin/users/password/reset',\r\n userIds\r\n );\r\n };\r\n\r\n let contracts;\r\n let users;\r\n\r\n return {\r\n init: (instance, baseRepository) => {\r\n contracts = instance.views.contracts;\r\n users = instance.views.users;\r\n\r\n baseRepository.searchContracts = searchContracts;\r\n baseRepository.fetchUsers = fetchUsers;\r\n baseRepository.createUser = createUser;\r\n baseRepository.importUsers = importUsers;\r\n baseRepository.resetPassword = resetPassword;\r\n },\r\n };\r\n};","const SalesAdminManageUsersView = function (companyId) {\r\n const repository = pages.customerAdminManagementView.repository(\r\n '/api/management/sales-admin',\r\n '/excel/management/sales-admin'\r\n );\r\n\r\n const userView = pages.customerAdminManagementView.userView(repository);\r\n const excel = pages.customerAdminManagementView.excel(repository);\r\n const watcher = pages.customerAdminManagementView.watcher;\r\n\r\n return {\r\n excel,\r\n\r\n init: function () {\r\n repository.init(this);\r\n pages.salesAdminManagementView\r\n .repository(companyId)\r\n .init(this, repository);\r\n\r\n userView.init(this, repository);\r\n excel.init(this, repository);\r\n watcher.watch(this, repository);\r\n\r\n this.views.contracts.sortOptions.init(\r\n this.views.contracts,\r\n () => fujiCssLoader.show()\r\n .then(repository.searchContracts)\r\n .then(fujiCssLoader.hide)\r\n );\r\n\r\n this.views.users.sortOptions.init(\r\n this.views.users,\r\n () => fujiCssLoader.show()\r\n .then(repository.fetchUsers)\r\n .then(fujiCssLoader.hide)\r\n );\r\n\r\n fujiCssLoader.show()\r\n .then(() => axios.all([\r\n repository.searchContracts(),\r\n repository.fetchDeliveryAreas()\r\n .then(response => this.views.users.deliveryAreas = response.data),\r\n repository.fetchUsers(),\r\n ]))\r\n .then(fujiCssLoader.hide);\r\n },\r\n views: {\r\n contracts: {\r\n sortOptions: fujiSortOptions.create(),\r\n pagination: fujiPagination.newModel(10),\r\n entities: [] as any,\r\n filter: '',\r\n isPricingsModal: false,\r\n\r\n showPricingsModal: function (contractId) {\r\n return fujiCssLoader.show()\r\n .then(() => repository.fetchPricings(contractId))\r\n .then(() => this.isPricingsModal = true)\r\n .then(fujiCssLoader.hide);\r\n },\r\n },\r\n users: userView.data\r\n },\r\n resetPassword: function () {\r\n return fujiCssLoader.show()\r\n .then(() => repository.resetPassword(this.views.users.checkedUsers))\r\n .then(() => document[\"popupMessage\"]('Email sent'))\r\n .then(() => this.views.users.checkedUsers = [])\r\n .then(fujiCssLoader.hide);\r\n },\r\n };\r\n};","if (pages.orderHistoryView == null) {\n pages.orderHistoryView = {};\n}\n\npages.orderHistoryView.cmsReport = (repository) => {\n if (typeof (luxon) == typeof (undefined)) {\n return {};\n }\n\n const data = {\n from: luxon.DateTime.now().plus({ months: -4 }).toFormat('yyyy-MM'),\n to: luxon.DateTime.now().toFormat('yyyy-MM'),\n filter: '',\n stage: '',\n };\n\n return {\n data,\n generate: () => {\n return exportOrderTransactionsReport({\n orderFrom: luxon.DateTime.fromISO(data.from).startOf('month').toISO(),\n orderTo: luxon.DateTime.fromISO(data.to).endOf('month').toISO(),\n stages: data.stage ? [data.stage] : []\n });\n },\n search: () => {\n return fujiCssLoader.show()\n .then(() => repository.searchOrders(data))\n .then(fujiCssLoader.hide);\n },\n };\n};","if (pages.orderHistoryView == null) {\r\n pages.orderHistoryView = {};\r\n}\r\n\r\npages.orderHistoryView.companyAdminReport = (() => {\r\n if (typeof (luxon) == typeof (undefined)) {\r\n return {};\r\n }\r\n\r\n const data = {\r\n from: luxon.DateTime.now().toFormat('yyyy-MM-dd'),\r\n to: luxon.DateTime.now().toFormat('yyyy-MM-dd'),\r\n };\r\n\r\n return {\r\n data,\r\n generate: () => {\r\n return exportCustomerAdminOrdersReport(\r\n luxon.DateTime.fromISO(data.from).toISO(),\r\n luxon.DateTime.fromISO(data.to).toISO()\r\n );\r\n },\r\n };\r\n})();","if (pages.orderHistoryView == null) {\r\n pages.orderHistoryView = {};\r\n}\r\n\r\npages.orderHistoryView.companyApproverReport = (repository) => {\r\n if (typeof (luxon) == typeof (undefined)) {\r\n return {};\r\n }\r\n\r\n const data = {\r\n from: luxon.DateTime.now().plus({ months: -4 }).toFormat('yyyy-MM'),\r\n to: luxon.DateTime.now().toFormat('yyyy-MM'),\r\n filter: '',\r\n stage: '',\r\n };\r\n\r\n return {\r\n data,\r\n generate: () => {\r\n return exportCustomerAdminOrdersReport(\r\n luxon.DateTime.fromISO(data.from).startOf('month').toISO(),\r\n luxon.DateTime.fromISO(data.to).endOf('month').toISO() \r\n );\r\n },\r\n search: () => {\r\n return fujiCssLoader.show()\r\n .then(() => repository.searchOrders(data))\r\n .then(fujiCssLoader.hide);\r\n },\r\n };\r\n};","if (pages.orderHistoryView == null) {\r\n pages.orderHistoryView = {};\r\n}\r\n\r\npages.orderHistoryView.cscReport = (repository) => {\r\n if (typeof (luxon) == typeof (undefined)) {\r\n return {};\r\n }\r\n\r\n const data = {\r\n from: luxon.DateTime.now().plus({ months: -4 }).toFormat('yyyy-MM'),\r\n to: luxon.DateTime.now().toFormat('yyyy-MM'),\r\n filter: '',\r\n stage: '',\r\n };\r\n\r\n return {\r\n data,\r\n generate: () => {\r\n return exportOrderTransactionsReport({\r\n orderFrom: luxon.DateTime.fromISO(data.from).startOf('month').toISO(),\r\n orderTo: luxon.DateTime.fromISO(data.to).endOf('month').toISO(),\r\n stages: data.stage ? [data.stage] : []\r\n });\r\n },\r\n search: () => {\r\n return fujiCssLoader.show()\r\n .then(() => repository.searchOrders(data))\r\n .then(fujiCssLoader.hide);\r\n },\r\n };\r\n};","if (pages.orderHistoryView == null) {\r\n pages.orderHistoryView = {};\r\n}\r\n\r\npages.orderHistoryView.repository = (function () {\r\n const bindOrders = data => {\r\n that.orders = data.currentPage;\r\n fujiPagination.update(that.pagination, data);\r\n };\r\n const fetchMyOrders = function () {\r\n return axiosInstance\r\n .get('/api/orders/my', {\r\n params: {\r\n ...fujiPagination.toParams(that.pagination),\r\n ...(that.sortOptions.options ?? {}),\r\n }\r\n })\r\n .then(response => bindOrders(response.data));\r\n };\r\n const fetchOrders = function () {\r\n return that.cscReport.search();\r\n };\r\n const searchOrders = filters => {\r\n return axiosInstance\r\n .get(\r\n `/api/orders/search/${filters.filter ?? ''}`,\r\n {\r\n params: {\r\n ...fujiPagination.toParams(that.pagination),\r\n ...(that.sortOptions.options ?? {}),\r\n stage: filters.stage ?? '',\r\n monthFrom: filters.from ?? '',\r\n monthTo: filters.to ?? '',\r\n }\r\n }\r\n )\r\n .then(response => bindOrders(response.data));\r\n };\r\n\r\n let that;\r\n\r\n return {\r\n init: instance => that = instance,\r\n fetchOrders,\r\n fetchMyOrders,\r\n searchOrders,\r\n };\r\n})();","declare const URL_CHECKOUT: any;\n\nconst orderHistoryView = (internalMode?: boolean) => {\n const sortOptions = fujiSortOptions.create();\n const repository = pages.orderHistoryView.repository;\n const cscReport = pages.orderHistoryView.cscReport(repository);\n const cmsReport = pages.orderHistoryView.cmsReport(repository);\n const companyApproverReport = pages.orderHistoryView.companyApproverReport(repository);\n const companyAdminReport = pages.orderHistoryView.companyAdminReport;\n\n const fetchOrders = internalMode ? repository.fetchOrders :\n repository.fetchMyOrders;\n\n return {\n cscReport,\n cmsReport,\n companyApproverReport,\n companyAdminReport,\n sortOptions,\n\n filter: \"\",\n orders: [],\n pagination: fujiPagination.newModel(10),\n reorderModel: null as any,\n cancelOrderModel: null as any,\n\n // Method\n init: function () {\n const that: any = this;\n\n sortOptions.init(\n that,\n () => fujiCssLoader.show()\n .then(fetchOrders)\n .then(fujiCssLoader.hide)\n );\n repository.init(that);\n\n fujiCssLoader.show()\n .then(fetchOrders)\n .then(fujiCssLoader.hide);\n\n that.$watch!(\"pagination.currentPage\", () => {\n fujiCssLoader.show()\n .then(fetchOrders)\n .then(fujiCssLoader.hide);\n });\n\n // Pagination Initializer\n that.$watch!(\"orders\", () => {\n fujiPagination.$paginate(\n this.pagination,\n $(\"#pagination-wrapper\"),\n );\n });\n },\n\n toPriceString: (price: number) => {\n return price.toLocaleString(\n 'en-US',\n { maximumFractionDigits: 2, minimumFractionDigits: 2 }\n );\n },\n\n /**\n * Handle Select Filter\n */\n handleFilterSelect: function (f: string = \"\") {\n this.filter = f;\n },\n\n /**\n * Handle order quick action\n * FIXME: remove this\n */\n handleOnConfirmClick: async function (e: any, id: string, type: string) {\n e.stopPropagation();\n try {\n // FIXME: Logic outdated\n const res =\n type === \"approve-cancel\"\n ? await axiosInstance.delete(`/orders/${id}`, {\n withCredentials: true,\n })\n : await axiosInstance.post(`/orders/${id}/${type}`, {\n withCredentials: true,\n });\n if (res.status === 200) {\n if (type === \"approve-cancel\") {\n alert(\"Request Order cancel approval\");\n } else {\n alert(\"Order Approved\");\n }\n window.location.reload();\n }\n } catch (err) {\n console.log(err);\n }\n },\n\n closeExtraChargeModal() {\n this.cancelOrderModel = null;\n },\n\n cancelOrder: function (orderModel?) {\n if (this.cancelOrderModel == null) {\n const currentHour = luxon.DateTime.now().get('hour');\n\n this.cancelOrderModel = {\n id: orderModel.id,\n reference: orderModel.orderReference,\n isExtraCharge: currentHour >= 15\n };\n return;\n }\n\n return fujiCssLoader.show()\n .then(() => axiosInstance.patch(`/api/orders/${this.cancelOrderModel.id}/cancel`))\n .then(fetchOrders)\n .then(() => {\n this.closeExtraChargeModal();\n fujiCssLoader.hide();\n });\n },\n\n reorder: function () {\n return fujiCssLoader.show()\n .then(() => axiosInstance.post(`/api/orders/${this.reorderModel.id}/re-order`))\n .then(response => {\n if (response.data.placedOrderReference) {\n fujiReorder.save(response.data.placedOrderReference);\n document.location = URL_CHECKOUT;\n }\n })\n .then(fujiCssLoader.hide);\n }\n };\n};","const AuthLayout = (): any => {\r\n return {\r\n\r\n i18nInitialed: false,\r\n\r\n\r\n init() {\r\n },\r\n /**\r\n * Method to change language\r\n */\r\n handleChangeLanguage(l: 'en' | 'zh-HK') {\r\n\r\n this.i18nInitialed = false;\r\n i18next.changeLanguage(l, () => {\r\n jqueryI18next.init(i18next, $, {\r\n tName: 't',\r\n i18nName: 'i18n',\r\n });\r\n $(document).localize();\r\n document.documentElement.setAttribute(\"lang\", l)\r\n // Safe method to protect rerender\r\n setTimeout(() => {\r\n this.i18nInitialed = true;\r\n }, 150);\r\n });\r\n }\r\n }\r\n}\r\n","const CreateProductView = (urlProducts): ICreateProductView => {\r\n return {\r\n fetchLoading: false,\r\n error: '',\r\n errors: [],\r\n categoryList: [],\r\n currencyList: [],\r\n editData: {\r\n Name: '',\r\n DisplayName: '',\r\n PartNumber: '',\r\n CategoryId: '',\r\n Price: '',\r\n CurrencyCode: '',\r\n Size: '',\r\n Gsm: '',\r\n Type: '',\r\n PrimaryUnit: '',\r\n SecondaryUnit: '',\r\n TertiaryUnit: '',\r\n SortingSequence: 0,\r\n IsActive: true,\r\n Description: '',\r\n Thumbnail: null\r\n },\r\n\r\n init: function init() {\r\n this.fetchCategoryList();\r\n this.fetchCurrencyList();\r\n },\r\n\r\n preview: function (file) {\r\n const reader = new FileReader();\r\n\r\n if (file.type.toLowerCase().indexOf('image/') == 0) {\r\n this.editData.Thumbnail = null;\r\n\r\n fujiCssLoader.show()\r\n .then(() => new Promise((resolve) => {\r\n reader.readAsDataURL(file);\r\n reader.onloadend = () => {\r\n this.editData.Thumbnail = {\r\n file,\r\n src: reader.result\r\n };\r\n resolve(null);\r\n };\r\n }))\r\n .then(fujiCssLoader.hide);\r\n }\r\n },\r\n\r\n fetchCategoryList: function fetchCategoryList() {\r\n this.fetchLoading = true;\r\n axiosInstance.get('/categories', { withCredentials: true }).then((res) => {\r\n if (res.status === 200) {\r\n this.categoryList = res.data;\r\n }\r\n }).finally(() => {\r\n this.fetchLoading = false;\r\n })\r\n },\r\n\r\n fetchCurrencyList: function fetchCurrencyList() {\r\n this.fetchLoading = true;\r\n axiosInstance.get('/currencies', { withCredentials: true }).then((res) => {\r\n if (res.status === 200) {\r\n this.currencyList = res.data;\r\n }\r\n }).finally(() => {\r\n this.fetchLoading = false;\r\n })\r\n },\r\n\r\n handleCreateProduct: function handleCreateProduct() {\r\n const formData = new FormData();\r\n\r\n for (var key in this.editData) {\r\n if (key == 'Thumbnail') continue;\r\n formData.append(key, this.editData[key]);\r\n }\r\n\r\n if (this.editData.Thumbnail) {\r\n formData.append('Thumbnail', this.editData.Thumbnail.file);\r\n }\r\n\r\n this.error = '';\r\n fujiCssLoader.show()\r\n .then(() => axiosInstance.post('/api/products', formData))\r\n .then(() => document.location = urlProducts)\r\n .catch(error => this.error = error.response.data.error)\r\n .then(fujiCssLoader.hide);\r\n },\r\n\r\n handleOnCancelClick: function handleOnCancelClick() {\r\n document.location = urlProducts;\r\n }\r\n }\r\n}","const EditProductView = (urlProducts, data): IEditProductView => {\r\n let that;\r\n\r\n return {\r\n fetchLoading: false,\r\n error: '',\r\n categoryList: [],\r\n currencyList: [],\r\n editData: data,\r\n\r\n init: function () {\r\n that = this;\r\n\r\n fujiCssLoader.show()\r\n .then(this.fetchCategoryList)\r\n .then(this.fetchCurrencyList)\r\n .then(fujiCssLoader.hide);\r\n },\r\n\r\n fetchCategoryList: function () {\r\n axiosInstance.get('/categories', { withCredentials: true })\r\n .then((res) => {\r\n if (res.status === 200) {\r\n that.categoryList = res.data;\r\n }\r\n })\r\n },\r\n\r\n fetchCurrencyList: function () {\r\n axiosInstance.get('/currencies', { withCredentials: true })\r\n .then((res) => {\r\n if (res.status === 200) {\r\n that.currencyList = res.data;\r\n }\r\n })\r\n },\r\n\r\n preview: function (file) {\r\n const reader = new FileReader();\r\n\r\n if (file.type.toLowerCase().indexOf('image/') == 0) {\r\n this.editData.Thumbnail = null;\r\n\r\n fujiCssLoader.show()\r\n .then(() => new Promise((resolve) => {\r\n reader.readAsDataURL(file);\r\n reader.onloadend = () => {\r\n this.editData.Thumbnail = {\r\n file,\r\n src: reader.result\r\n };\r\n resolve(null);\r\n };\r\n }))\r\n .then(fujiCssLoader.hide);\r\n }\r\n },\r\n\r\n handleEditProduct: function () {\r\n const formData = new FormData();\r\n\r\n for (var key in this.editData) {\r\n if (key == 'Thumbnail') continue;\r\n formData.append(key, this.editData[key]);\r\n }\r\n\r\n if (this.editData.Thumbnail) {\r\n formData.append('Thumbnail', this.editData.Thumbnail.file);\r\n }\r\n\r\n this.error = '';\r\n fujiCssLoader.show()\r\n .then(() => axiosInstance.patch('/api/products', formData))\r\n .then(() => document.location = urlProducts)\r\n .catch(error => this.error = error.response.data.error)\r\n .then(fujiCssLoader.hide);\r\n },\r\n\r\n handleOnCancelClick: function () {\r\n document.location = urlProducts;\r\n }\r\n }\r\n}\r\n","const CmsProductsView = (): ICmsProductsView => {\n return {\n errors: [],\n errorMessage: '',\n openCatModal: false,\n importedModal: false,\n fetchLoading: false,\n productList: [],\n categoryList: [],\n selectedCategory: [],\n deleteableList: [],\n searchProduct: \"\",\n newCategory: \"\",\n sort: {\n price: false,\n name: false,\n category: false,\n finalSort: null,\n },\n pagination: {\n rowPerPage: 9,\n totalPages: 1,\n currentPage: 1,\n },\n toggleMobileFilter: false,\n\n init: function () {\n this.fetchProductList();\n this.fetchCategoryList();\n this.$watch!('sort.finalSort', () => {\n this.fetchProductList();\n });\n this.$watch!('selectedCategory', (value) => {\n if (value.length >= 0) {\n this.fetchProductList();\n }\n });\n this.$watch!('searchProduct', () => {\n this.fetchProductList();\n });\n this.$watch!('pagination.currentPage', () => {\n this.fetchProductList();\n });\n this.$watch!('productList', () => {\n $('#pagination-wrapper').pagination({\n // Fake the plugin to get total number\n dataSource: new Array(this.pagination.totalPages * this.pagination.rowPerPage).fill(','),\n pageNumber: this.pagination.currentPage,\n pageSize: this.pagination.rowPerPage,\n pageRange: 1,\n ulClassName: 'pagination--ul',\n activeClassName: 'pagination__item--selected',\n callback: (_, pagination) => {\n this.pagination.currentPage = pagination.pageNumber\n }\n })\n });\n },\n\n fetchProductList: function () {\n this.fetchLoading = true;\n\n axiosInstance.get('/products', {\n params: {\n page: this.pagination.currentPage,\n per_page: this.pagination.rowPerPage,\n sort: [this.sort.finalSort, 'SortingSequence'].filter(column => column !== null).join(','),\n categoryIds: this.selectedCategory.length > 0 ? this.selectedCategory.join(',') : null,\n query: this.searchProduct ? this.searchProduct : null,\n },\n withCredentials: true,\n headers: {\n Accept: 'application/json'\n }\n }).then((res) => {\n if (res.status === 200) {\n this.productList = res.data?.items;\n this.pagination.totalPages = res?.data.total_pages;\n }\n }).finally(() => {\n this.fetchLoading = false;\n });\n },\n\n fetchCategoryList: function () {\n this.fetchLoading = true;\n axiosInstance.get('/categories', { withCredentials: true }).then((res) => {\n if (res.status === 200) {\n this.categoryList = res.data;\n }\n }).finally(() => {\n this.fetchLoading = false;\n })\n },\n\n handleOnSortChange: function (e, v) {\n if (e?.target?.checked) {\n this.sort.price = v === 'price';\n this.sort.name = v === 'name';\n this.sort.category = v === 'categoryCode';\n this.sort.finalSort = v;\n } else {\n this.sort.price = false;\n this.sort.name = false;\n this.sort.category = false;\n this.sort.finalSort = null;\n }\n },\n\n handleCreateCategory: function () {\n axiosInstance.post('/categories', { category: this.newCategory }, { withCredentials: true }).then((res) => {\n if (res.status === 200) {\n this.categoryList.push(res.data);\n }\n }).catch((error) => {\n if (!document[\"popupErrors\"](getConvertedErrors(error.response.data))) {\n alert(error);\n }\n }).finally(() => {\n this.newCategory = \"\";\n });\n },\n\n handleDeleteCategory: function (id) {\n axiosInstance.delete(`/categories/${id}`, { withCredentials: true }).then((res) => {\n if (res.status === 200) {\n this.categoryList = this.categoryList.filter((cat) => {\n return id !== cat.id\n });\n }\n }).catch((error) => {\n if (!document[\"popupErrors\"](getConvertedErrors(error.response.data))) {\n alert(error);\n }\n });\n },\n\n handleImportProduct: function () {\n const _productFileInput = document.getElementById('productFileid') as HTMLInputElement;\n const _instance = this;\n const _onFileSelected = function () {\n axiosInstance.put('/products', _productFileInput.files![0], {\n headers: {\n 'Content-Type': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n }\n }).then((res) => {\n if (res.status === 200) {\n _instance.errorMessage = '';\n _instance.importedModal = true;\n }\n }).catch((error) => {\n try {\n document[\"popupErrors\"](getConvertedErrors(error.response.data));\n }\n catch {\n alert(error.message);\n }\n\n }).finally(() => {\n $(_productFileInput).off('change').val('');\n });\n };\n _productFileInput.click();\n\n this.importedModal = false;\n $(_productFileInput).on('change', _onFileSelected);\n },\n\n handleExportProduct: function () {\n axiosInstance.get('/products', {\n responseType: 'blob',\n withCredentials: true, headers: {\n \"Content-type\": \"application/vnd.ms-excel\",\n Accept: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'\n }\n }).then((res) => {\n if (res.status === 200) {\n const url = window.URL.createObjectURL(new Blob([res.data]));\n const link = document.createElement('a');\n link.href = url;\n link.setAttribute('download', 'products.xlsx');\n document.body.appendChild(link);\n link.click();\n }\n })\n },\n\n handleExportCategory: function () {\n axiosInstance.get('/categories', {\n responseType: 'blob',\n withCredentials: true, headers: {\n \"Content-type\": \"application/vnd.ms-excel\",\n Accept: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'\n }\n }).then((res) => {\n if (res.status === 200) {\n const url = window.URL.createObjectURL(new Blob([res.data]));\n const link = document.createElement('a');\n link.href = url;\n link.setAttribute('download', 'categories.xlsx');\n document.body.appendChild(link);\n link.click();\n }\n })\n },\n\n handleUploadImage: function () {\n const _formData = new FormData();\n const imageFileInput = document.getElementById('imageFileId') as HTMLInputElement;\n const _instance = this;\n const $input = $(imageFileInput);\n\n imageFileInput.click();\n $input.on('change', function () {\n for (let i = 0; i < (imageFileInput.files?.length ?? 0); i++) {\n _formData.append('request', imageFileInput.files![i]);\n }\n\n axiosInstance\n .put(`/products/photos`, _formData, {\n headers: {\n 'Content-Type': 'multipart/form-data; boundary=',\n }\n }).then((res) => {\n if (res.data && res.data.messages) {\n _instance.errors = res.data.messages\n }\n\n if (_instance.errors.length <= 0) {\n alert(i18next.t('uploadProductImagesSuccessfully'));\n location.reload();\n }\n })\n .catch((error) => {\n if (!document[\"popupErrors\"](getConvertedErrors(error.response.data))) {\n alert(error);\n }\n })\n .finally(() => {\n $input.off('change').val('');\n });\n });\n },\n\n toggleCatModalOpen: function toggleCatModalOpen() {\n this.openCatModal = !this.openCatModal;\n },\n\n handleClearFilter: function handleClearFilter() {\n this.selectedCategory = [];\n },\n\n /**\n * Handle Page Change\n */\n handleOnPageChange: function (page) {\n this.pagination.currentPage = page;\n },\n\n handleMobileFilterOpen() {\n this.toggleMobileFilter = !this.toggleMobileFilter;\n },\n }\n}\n","const CompaniesView = (): ICompaniesView => {\r\n return {\r\n userView: 'user',\r\n isSalesAdmin: false,\r\n unit: 'companies',\r\n newContract: {},\r\n companyList: [],\r\n companyUserList: [],\r\n companyUserPagination: {\r\n total_pages: 1,\r\n per_page: 10,\r\n page: 1,\r\n total_count: 0,\r\n },\r\n companyUserSort: [\r\n { column: 'id', ascending: true },\r\n ],\r\n billingAddressList: [],\r\n deliveryAddressList: [],\r\n contractList: [],\r\n contractPagination: {\r\n total_pages: 1,\r\n per_page: 10,\r\n page: 1,\r\n total_count: 0,\r\n },\r\n contractSort: [\r\n { column: 'start', ascending: false },\r\n { column: 'end', ascending: false },\r\n ],\r\n pricingList: [],\r\n pricingPagination: {\r\n total_pages: 1,\r\n per_page: 10,\r\n page: 1,\r\n total_count: 0,\r\n },\r\n pricingSort: [\r\n { column: 'contractNo', ascending: true },\r\n { column: 'productPartNumber', ascending: true },\r\n ],\r\n searchCompany: '',\r\n searchCompanyUser: '',\r\n selectedCompanyId: null,\r\n selectedCompany: null,\r\n isCreating: false,\r\n isEditing: false,\r\n isCreatingContract: false,\r\n newCompany: {},\r\n newCompanyError: {},\r\n filter: 'companyUsers',\r\n importedModal: false,\r\n importSummary: {\r\n filename: null,\r\n total: null,\r\n success: null,\r\n failed: null,\r\n },\r\n showMobileDetail: false,\r\n contractDetail: null,\r\n\r\n // Method\r\n init() {\r\n this.fetchCompanyList();\r\n\r\n this.$watch!('companyUserPagination.page', (v, ov) => {\r\n if (v !== ov) {\r\n this.fetchCompanyUsers();\r\n }\r\n });\r\n this.$watch!('pricingPagination.page', (v, ov) => {\r\n if (v !== ov) {\r\n this.fetchPricings();\r\n }\r\n });\r\n this.$watch!('contractPagination.page', (v, ov) => {\r\n if (v !== ov) {\r\n this.fetchContracts();\r\n }\r\n });\r\n\r\n this.$watch!('selectedCompanyId', () => {\r\n this.fetchCompanyDetail();\r\n this.fetchCompanyUsers();\r\n this.fetchBillingAddress();\r\n this.fetchDeliveryAddress();\r\n this.fetchContracts();\r\n this.fetchPricings();\r\n\r\n this.newContract = {\r\n companyId: this.selectedCompanyId == null ? '' : this.selectedCompanyId.toString(),\r\n companyName: '',\r\n status: 'ACTIVE',\r\n start: '',\r\n end: '',\r\n allowImport: false\r\n };\r\n this.initialDatepicker();\r\n\r\n $('#contract-document-input')\r\n .off('change')\r\n .val('')\r\n .on('change', function () {\r\n const input = $(this)[0] as HTMLInputElement;\r\n\r\n $('#contract-document-name').text('');\r\n if (input.files?.length) {\r\n $('#contract-document-name').text(input.files[0].name);\r\n }\r\n });\r\n });\r\n this.$watch!('searchCompany', () => {\r\n this.fetchCompanyList();\r\n });\r\n this.$watch!('searchCompanyUser', () => {\r\n this.fetchCompanyUsers();\r\n });\r\n\r\n // Pagination Initializer\r\n this.$watch!('companyUserList', () => {\r\n $('#companyUsers .pagination-wrapper').pagination({\r\n // Fake the plugin to get total number\r\n dataSource: new Array(this.companyUserPagination.total_count).fill(','),\r\n pageNumber: this.companyUserPagination.page,\r\n pageSize: this.companyUserPagination.per_page,\r\n pageRange: 1,\r\n ulClassName: 'pagination--ul',\r\n activeClassName: 'pagination__item--selected',\r\n callback: (_, pagination) => {\r\n this.companyUserPagination.page = pagination.pageNumber;\r\n },\r\n })\r\n });\r\n this.$watch!('pricingList', () => {\r\n $('#pricings .pagination-wrapper').pagination({\r\n // Fake the plugin to get total number\r\n dataSource: new Array(this.pricingPagination.total_count).fill(','),\r\n pageNumber: this.pricingPagination.page,\r\n pageSize: this.pricingPagination.per_page,\r\n pageRange: 1,\r\n ulClassName: 'pagination--ul',\r\n activeClassName: 'pagination__item--selected',\r\n callback: (_, pagination) => {\r\n this.pricingPagination.page = pagination.pageNumber;\r\n },\r\n })\r\n });\r\n this.$watch!('contractList', () => {\r\n $('#contractList .pagination-wrapper').pagination({\r\n // Fake the plugin to get total number\r\n dataSource: new Array(this.contractPagination.total_count).fill(','),\r\n pageNumber: this.contractPagination.page,\r\n pageSize: this.contractPagination.per_page,\r\n pageRange: 1,\r\n ulClassName: 'pagination--ul',\r\n activeClassName: 'pagination__item--selected',\r\n callback: (_, pagination) => {\r\n this.contractPagination.page = pagination.pageNumber;\r\n },\r\n })\r\n });\r\n this.$nextTick!(() => {\r\n const user = getCurrentUser();\r\n if (['SUPER_ADMIN'].some(role => user?.roles.includes(role))) {\r\n this.userView = \"admin\"\r\n }\r\n\r\n this.isSalesAdmin = ['SALES_ADMIN']\r\n .some(role => user?.roles.includes(role));\r\n })\r\n },\r\n\r\n initialDatepicker: function () {\r\n var that = this;\r\n flatpickr(document.getElementById('contractStart') as HTMLElement, {\r\n onOpen: function (_selectedDates, _dateStr, instance) {\r\n if (!that.newContract?.end && that?.newContract?.start) {\r\n instance.config.defaultDate = that.newContract.start as any;\r\n } else if (that?.newContract?.end) {\r\n instance.config.maxDate = that.newContract.end as any;\r\n instance.config.defaultDate = that.newContract.end as any;\r\n }\r\n },\r\n onChange: function (selectedDates: any, dateStr: string, _instance: any) {\r\n if (selectedDates !== null && !that?.newContract?.end) {\r\n document.getElementById('contractEnd')?._flatpickr.setDate(selectedDates);\r\n that.newContract!.end = dateStr;\r\n }\r\n }\r\n });\r\n flatpickr(document.getElementById('contractEnd') as HTMLElement, {\r\n onOpen: function (_selectedDates, _dateStr, instance) {\r\n if (!that?.newContract?.start && that?.newContract?.end) {\r\n instance.config.defaultDate = that.newContract.end as any;\r\n } else if (that?.newContract?.start) {\r\n instance.config.minDate = that.newContract.start as any;\r\n instance.config.defaultDate = that.newContract.start as any;\r\n }\r\n },\r\n onChange: function (selectedDates: any, dateStr: string, _instance: any) {\r\n if (selectedDates !== null && !that?.newContract?.start) {\r\n document.getElementById('contractStart')?._flatpickr.setDate(selectedDates);\r\n that.newContract!.start = dateStr;\r\n }\r\n }\r\n });\r\n },\r\n /**\r\n * Fetch company list\r\n */\r\n async fetchCompanyList() {\r\n try {\r\n // FIXME: handle pagination?\r\n const res = await axiosInstance.get('/companies', {\r\n withCredentials: true,\r\n headers: {\r\n 'content-type': 'application/json',\r\n },\r\n params: {\r\n query: this.searchCompany,\r\n },\r\n });\r\n if (res.status === 200) {\r\n // Hide the General Company\r\n this.companyList = res.data?.items;\r\n this.selectedCompanyId = res.data?.items?.[0]?.id;\r\n }\r\n } catch (err) {\r\n console.log(err);\r\n }\r\n },\r\n\r\n /**\r\n * Fetch company detail\r\n */\r\n async fetchCompanyDetail() {\r\n try {\r\n const res = await axiosInstance.get(`/companies/${this.selectedCompanyId}`, {\r\n withCredentials: true,\r\n headers: {\r\n 'content-type': 'application/json',\r\n },\r\n });\r\n if (res.status === 200) {\r\n this.selectedCompany = res.data;\r\n }\r\n } catch (err) {\r\n console.log(err);\r\n }\r\n },\r\n\r\n /**\r\n * Fetch Company Users under selected company\r\n */\r\n async fetchCompanyUsers() {\r\n const { page, per_page } = this.companyUserPagination;\r\n const sort = convertSortOptions(this.companyUserSort);\r\n\r\n try {\r\n const res = await axiosInstance.get(`/companies/${this.selectedCompanyId}/customers`, {\r\n withCredentials: true,\r\n headers: {\r\n 'content-type': 'application/json',\r\n },\r\n params: { sort, page, per_page, query: this.searchCompanyUser },\r\n });\r\n\r\n if (res.status === 200) {\r\n this.companyUserPagination = res.data;\r\n this.companyUserList = res.data.items;\r\n }\r\n } catch (err) {\r\n console.error(err);\r\n }\r\n },\r\n\r\n /**\r\n * Fetch company billing address\r\n */\r\n async fetchBillingAddress() {\r\n try {\r\n const res = await axiosInstance.get(`/companies/${this.selectedCompanyId}/billing-addresses`, {\r\n withCredentials: true,\r\n headers: {\r\n 'content-type': 'application/json',\r\n },\r\n });\r\n if (res.status === 200) {\r\n this.billingAddressList = res.data;\r\n }\r\n } catch (err) {\r\n console.log(err);\r\n }\r\n },\r\n\r\n /**\r\n * Fetch company delivery address\r\n */\r\n async fetchDeliveryAddress() {\r\n try {\r\n const res = await axiosInstance.get(`/companies/${this.selectedCompanyId}/delivery-addresses`, {\r\n withCredentials: true,\r\n headers: {\r\n 'content-type': 'application/json',\r\n },\r\n });\r\n if (res.status === 200) {\r\n this.deliveryAddressList = res.data;\r\n }\r\n } catch (err) {\r\n console.log(err);\r\n }\r\n },\r\n\r\n /**\r\n * Fetch company contracts\r\n */\r\n async fetchContracts() {\r\n try {\r\n const { page, per_page } = this.contractPagination;\r\n const res = await axiosInstance.get(`/companies/${this.selectedCompanyId}/contracts`, {\r\n withCredentials: true,\r\n headers: {\r\n 'content-type': 'application/json',\r\n },\r\n params: { page, per_page }\r\n });\r\n if (res.status === 200) {\r\n this.contractPagination = res.data;\r\n this.contractList = res.data.items;\r\n }\r\n } catch (err) {\r\n console.log(err);\r\n }\r\n },\r\n\r\n /**\r\n * Fetch company pricings / products\r\n */\r\n async fetchPricings() {\r\n try {\r\n const { page, per_page } = this.pricingPagination;\r\n const res = await axiosInstance.get(`/companies/${this.selectedCompanyId}/pricings`, {\r\n withCredentials: true,\r\n headers: {\r\n 'content-type': 'application/json',\r\n },\r\n params: { page, per_page },\r\n });\r\n if (res.status === 200) {\r\n this.pricingPagination = res.data;\r\n this.pricingList = res.data.items;\r\n }\r\n } catch (err) {\r\n console.log(err);\r\n }\r\n },\r\n\r\n toggleEdit: function (type) {\r\n if (type === \"create\") {\r\n this.isEditing = !this.isEditing;\r\n this.isCreating = !this.isCreating;\r\n // Initial new object\r\n this.newCompany.id = null;\r\n this.newCompany.accountNo = null;\r\n this.newCompany.name = null;\r\n this.newCompany.status = 'ACTIVE';\r\n this.newCompany.isTender = false;\r\n this.newCompany.phone = null;\r\n this.newCompany.contactPerson = null;\r\n this.newCompany.contactPersonEmail = null;\r\n this.newCompany.warehouse = '1';\r\n } else {\r\n // Deep copy\r\n this.newCompany = JSON.parse(JSON.stringify(this.selectedCompany));\r\n this.isEditing = !this.isEditing;\r\n }\r\n },\r\n handleWarehouseClick: function (w) {\r\n this.newCompany.warehouse = w;\r\n },\r\n createCompany: function () {\r\n this.newCompany.status = 'ACTIVE';\r\n axiosInstance.post('/companies', this.newCompany, {\r\n withCredentials: true,\r\n }).then((res) => {\r\n if (res && res.status === 200) {\r\n this.handleCancelClick();\r\n this.fetchCompanyList().then(o => {\r\n alert(\"Created\");\r\n this.handleSelectCompany(res.data.id);\r\n });\r\n }\r\n }).catch((error) => {\r\n console.log(error);\r\n if (error.response.status === 400) {\r\n showErrors(this.newCompanyError, error.response.data);\r\n console.log(error.response.data, this.newCompanyError);\r\n }\r\n });\r\n },\r\n\r\n updateCompany: function () {\r\n axiosInstance.put(`/companies/${this.selectedCompany!.id}`, this.newCompany, {\r\n withCredentials: true,\r\n }).then((res) => {\r\n if (res && res.status === 200) {\r\n // Deep copy\r\n this.selectedCompany = JSON.parse(JSON.stringify(this.newCompany));\r\n this.handleCancelClick();\r\n }\r\n }).catch((error) => {\r\n console.log(error);\r\n if (error.response.status === 400) {\r\n showErrors(this.newCompanyError, error.response.data);\r\n }\r\n });\r\n },\r\n\r\n handleCreateContract: function () {\r\n const formData = new FormData();\r\n const values = {\r\n companyId: this?.newContract?.companyId,\r\n name: this?.newContract?.name,\r\n start: this?.newContract?.start,\r\n end: this.newContract?.end,\r\n IsActive: this?.newContract?.status === 'ACTIVE',\r\n };\r\n const documentInput = $('#contract-document-input')[0] as HTMLInputElement;\r\n\r\n if (documentInput.files?.length ?? 0 > 0) {\r\n formData.append('document', documentInput.files![0]);\r\n }\r\n\r\n for (let key in values) {\r\n formData.append(key, values[key] ?? '');\r\n }\r\n\r\n axiosInstance\r\n .post(\"/contracts\", formData, {\r\n withCredentials: true,\r\n headers: {\r\n 'Content-Type': 'multipart/form-data; boundary=',\r\n }\r\n })\r\n .then((res) => {\r\n if (res.status === 200) {\r\n document[\"popupMessage\"]('Contract created');\r\n this.fetchContracts();\r\n }\r\n })\r\n .catch((error) => {\r\n if (error.response && !document[\"popupErrors\"](getConvertedErrors(error.response.data))) {\r\n alert(error);\r\n }\r\n });\r\n },\r\n\r\n handleCancelCreateContract: function () {\r\n this.newContract = {\r\n companyId: this.selectedCompanyId == null ? '' : this.selectedCompanyId.toString(),\r\n companyName: '',\r\n status: 'ACTIVE',\r\n start: '',\r\n end: '',\r\n allowImport: false\r\n };\r\n $('#contract-document-input').val('');\r\n $('#contract-document-name').text('');\r\n this.isCreatingContract = false;\r\n },\r\n\r\n handleCancelClick: function () {\r\n this.isCreating = false;\r\n this.isEditing = false;\r\n this.newCompany = {};\r\n this.newCompanyError = {};\r\n },\r\n\r\n /**\r\n * Handle Company Export\r\n */\r\n handleCompanyExport(): Promise {\r\n return handleExport('/companies');\r\n },\r\n\r\n handleCompanyImport() {\r\n handleImport('/companies', this, \"fileid\", () => { this.fetchCompanyList() });\r\n },\r\n\r\n handleDeliAddrExport(id): Promise {\r\n return handleExport(`/customers/${id}/delivery-addresses`);\r\n },\r\n\r\n handleDeliAddrImport(id) {\r\n handleImport(`/customers/${id}/delivery-addresses`, this);\r\n },\r\n\r\n handleBillAddrExport(id): Promise {\r\n return handleExport(`/customers/${id}/billing-addresses`);\r\n },\r\n\r\n handleBillAddrImport(id) {\r\n handleImport(`/customers/${id}/billing-addresses`, this);\r\n },\r\n\r\n handleContractImport(e, id) {\r\n e.stopPropagation();\r\n const that = this;\r\n const fileInput = document.getElementById('contract-product-import') as HTMLInputElement;\r\n const upload = function () {\r\n axiosInstance.put(`/contracts/imports/`, fileInput.files![0], {\r\n //axiosInstance.put(`/contracts/${id}/import/`, fileInput.files![0], {\r\n headers: {\r\n 'Content-Type': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\r\n }\r\n }).then((res) => {\r\n if (res.status === 200) {\r\n document[\"popupMessage\"](i18next.t('z0328importSuccess'));\r\n that.fetchContracts();\r\n that.fetchPricings();\r\n }\r\n }).catch((error) => {\r\n if (error.response && !document[\"popupErrors\"](getConvertedErrors(error.response.data))) {\r\n alert(error);\r\n }\r\n }).finally(() => {\r\n $(fileInput).off('change').val('');\r\n });\r\n };\r\n\r\n fileInput?.click();\r\n $(fileInput).on('change', upload);\r\n },\r\n\r\n handleExportDefaultContractProductList: function handleExportContractProductList() {\r\n axiosInstance.get(`/contracts/-1/products`, {\r\n responseType: 'blob',\r\n withCredentials: true, headers: {\r\n \"Content-type\": \"application/vnd.ms-excel\",\r\n Accept: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'\r\n }\r\n }).then((res) => {\r\n if (res.status === 200) {\r\n downloadResponse(res);\r\n }\r\n })\r\n },\r\n\r\n handleCloseImportModal() {\r\n handleCloseImportModal(this);\r\n },\r\n\r\n handleCompanyUsersExportByCompany(): Promise {\r\n return handleExport(`/companies/${this.selectedCompanyId}/customers`);\r\n },\r\n\r\n handleCompanyUsersImportByCompany: function () {\r\n handleImport(`/companies/${this.selectedCompanyId}/customers`, this, 'fileid', () => {\r\n this.fetchCompanyUsers();\r\n });\r\n },\r\n\r\n handleExportUsersAddressesByCompany(): Promise {\r\n return handleExport(`/companies/${this.selectedCompanyId}/users/addresses`);\r\n },\r\n\r\n handleImportUsersAddressesByCompany: function () {\r\n handleImport(`/companies/${this.selectedCompanyId}/users/addresses`, this, 'users-addresses-file', () => {\r\n this.fetchCompanyUsers();\r\n });\r\n },\r\n\r\n /**\r\n * Set new selected company\r\n */\r\n handleSelectCompany(id: number) {\r\n this.selectedCompanyId = id as any;\r\n this.showMobileDetail = true;\r\n },\r\n\r\n /**\r\n * Set filter\r\n */\r\n handleSetFilter(f: string) {\r\n this.filter = f;\r\n },\r\n\r\n toggleShowMobileDetail() {\r\n this.showMobileDetail = !this.showMobileDetail;\r\n this.isCreating = false;\r\n this.isEditing = false;\r\n },\r\n\r\n async handleGoToContractDetail(e, v) {\r\n e.stopPropagation();\r\n try {\r\n const res = await axiosInstance\r\n .get(`/contracts/${v}/products`, { withCredentials: true })\r\n if (res.status === 200) {\r\n this.contractDetail = res.data?.items;\r\n }\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n },\r\n\r\n handleCloseContractDetailModal() {\r\n this.contractDetail = null;\r\n }\r\n }\r\n}","const ContractView = (): IContractView => {\r\n return {\r\n // Create Mode\r\n isCreating: false,\r\n // Editing Mode\r\n isEditing: false,\r\n // List of contracts\r\n fetchLoading: false,\r\n messages: [],\r\n errors: [],\r\n contractList: [],\r\n companyList: [],\r\n selectedContract: null,\r\n newContract: null,\r\n searchContract: \"\",\r\n // Array list for product in contracts\r\n productList: [],\r\n pagination: {\r\n rowPerPage: 10,\r\n totalPages: 1,\r\n currentPage: 1,\r\n },\r\n showMobileDetail: false,\r\n // Init\r\n init: function () {\r\n $(\".js-example-placeholder-single\")\r\n .select2({\r\n debug: true,\r\n placeholder: \"Company\",\r\n })\r\n .on(\"select2:select\", (event: any) => {\r\n this.newContract!.companyId = event.target.value;\r\n });\r\n this.fetchContract();\r\n this.fetchCompanyList();\r\n this.$watch!(\"isCreating\", (value: any) => {\r\n if (value) {\r\n this.initialDatepicker();\r\n }\r\n });\r\n this.$watch!(\"isEditing\", (value: any) => {\r\n if (value) {\r\n $(\"#contract-document-input\")\r\n .off(\"change\")\r\n .val(\"\")\r\n .on(\"change\", function () {\r\n const input = $(this)[0] as HTMLInputElement;\r\n\r\n $(\"#contract-document-name\").text(\"\");\r\n if (input.files?.length) {\r\n $(\"#contract-document-name\").text(input.files[0].name);\r\n }\r\n });\r\n }\r\n });\r\n this.$watch!(\"selectedContract\", (value: any) => {\r\n if (value) {\r\n this.fetchProductInContract();\r\n }\r\n });\r\n this.$watch!(\"searchContract\", () => {\r\n this.fetchContract();\r\n });\r\n },\r\n // Method\r\n initialDatepicker: function () {\r\n var that = this;\r\n flatpickr(document.getElementById(\"contractStart\") as HTMLElement, {\r\n onOpen: function (_selectedDates, _dateStr, instance) {\r\n if (!that.newContract?.end && that?.newContract?.start) {\r\n instance.config.defaultDate = that.newContract.start as any;\r\n } else if (that?.newContract?.end) {\r\n instance.config.maxDate = that.newContract.end as any;\r\n instance.config.defaultDate = that.newContract.end as any;\r\n }\r\n },\r\n onChange: function (\r\n selectedDates: any,\r\n dateStr: string,\r\n _instance: any\r\n ) {\r\n if (selectedDates !== null && !that?.newContract?.end) {\r\n document\r\n .getElementById(\"contractEnd\")\r\n ?._flatpickr.setDate(selectedDates);\r\n that.newContract!.end = dateStr;\r\n }\r\n },\r\n });\r\n flatpickr(document.getElementById(\"contractEnd\") as HTMLElement, {\r\n onOpen: function (_selectedDates, _dateStr, instance) {\r\n if (!that?.newContract?.start && that?.newContract?.end) {\r\n instance.config.defaultDate = that.newContract.end as any;\r\n } else if (that?.newContract?.start) {\r\n instance.config.minDate = that.newContract.start as any;\r\n instance.config.defaultDate = that.newContract.start as any;\r\n }\r\n },\r\n onChange: function (\r\n selectedDates: any,\r\n dateStr: string,\r\n _instance: any\r\n ) {\r\n if (selectedDates !== null && !that?.newContract?.start) {\r\n document\r\n .getElementById(\"contractStart\")\r\n ?._flatpickr.setDate(selectedDates);\r\n that.newContract!.start = dateStr;\r\n }\r\n },\r\n });\r\n },\r\n\r\n fetchCompanyList: function () {\r\n axiosInstance\r\n .get(\"/contracts/companies\", {\r\n withCredentials: true,\r\n })\r\n .then((res) => {\r\n if (res.status === 200) {\r\n this.companyList = res.data;\r\n }\r\n });\r\n },\r\n\r\n filterContractList: function () {\r\n var that = this;\r\n return this.contractList.filter(function (contract) {\r\n return (\r\n contract.companyName.toLowerCase().search(that.searchContract.toLowerCase()) > -1 ||\r\n (contract.name?.toLowerCase().search(that.searchContract.toLowerCase()) ?? -1) > -1 ||\r\n `${contract.id}`.search(that.searchContract) > -1 ||\r\n contract.contractNo!.search(that.searchContract) > -1\r\n ) ? contract : null;\r\n })\r\n },\r\n\r\n handleCreateContract: function () {\r\n const formData = new FormData();\r\n const values = {\r\n companyId: this?.newContract?.companyId,\r\n name: this?.newContract?.name,\r\n start: this?.newContract?.start,\r\n end: this.newContract?.end,\r\n IsActive: this?.newContract?.status === \"ACTIVE\",\r\n };\r\n const documentInput = $(\r\n \"#contract-document-input\"\r\n )[0] as HTMLInputElement;\r\n\r\n this.fetchLoading = true;\r\n\r\n if (documentInput.files?.length ?? 0 > 0) {\r\n formData.append(\"document\", documentInput.files![0]);\r\n }\r\n\r\n for (let key in values) {\r\n formData.append(key, values[key] ?? \"\");\r\n }\r\n\r\n axiosInstance\r\n .post(\"/contracts\", formData, {\r\n withCredentials: true,\r\n headers: {\r\n \"Content-Type\":\r\n \"multipart/form-data; boundary=\",\r\n },\r\n })\r\n .then((res) => {\r\n if (res.status === 200) {\r\n this.messages = [\"Contract created\"];\r\n this.fetchContract().then((o) => {\r\n alert(\"Created\");\r\n var selected = this.contractList.filter(\r\n (i) => i.id == res.data.id\r\n )[0];\r\n this.onSelectContract(selected);\r\n });\r\n this.isCreating = false;\r\n this.isEditing = false;\r\n }\r\n })\r\n .catch((error) => {\r\n if (\r\n !document[\"popupErrors\"](getConvertedErrors(error.response.data))\r\n ) {\r\n alert(error);\r\n }\r\n })\r\n .finally(() => {\r\n this.fetchLoading = false;\r\n });\r\n },\r\n\r\n handleOnEditContract: function handleOnEditContract() {\r\n this.fetchLoading = true;\r\n\r\n axiosInstance\r\n .put(\r\n \"/contracts/\" + this.selectedContract?.id,\r\n {\r\n Id: this.selectedContract?.id,\r\n IsActive: this.newContract?.status === \"ACTIVE\",\r\n },\r\n { withCredentials: true }\r\n )\r\n .then((res) => {\r\n if (res.status === 200) {\r\n this.messages = [\"Contract updated\"];\r\n this.isCreating = false;\r\n this.isEditing = false;\r\n }\r\n })\r\n .catch((error) => {\r\n if (\r\n !document[\"popupErrors\"](getConvertedErrors(error.response.data))\r\n ) {\r\n alert(error);\r\n }\r\n })\r\n .finally(() => {\r\n this.fetchLoading = false;\r\n });\r\n },\r\n\r\n onSelectContract: function onSelectContract(contract) {\r\n this.selectedContract = contract;\r\n this.showMobileDetail = true;\r\n },\r\n\r\n fetchContract: async function fetchContract() {\r\n this.fetchLoading = true;\r\n try {\r\n const res = await axiosInstance.get(\"/contracts?sort=-ContractNo\", {\r\n withCredentials: true,\r\n params: {\r\n ...(this.searchContract.length > 0 && {\r\n query: this.searchContract,\r\n }),\r\n },\r\n headers: { Accept: \"application/json\" },\r\n });\r\n if (res.status === 200) {\r\n this.contractList = res.data;\r\n this.selectedContract = res.data?.[0];\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n this.fetchLoading = false;\r\n },\r\n\r\n fetchProductInContract: function fetchProductInContract() {\r\n var that = this;\r\n this.fetchLoading = true;\r\n axiosInstance\r\n .get(`/contracts/${this.selectedContract!.id}/products`, {\r\n withCredentials: true,\r\n headers: { Accept: \"application/json\" },\r\n })\r\n .then((res) => {\r\n if (res.status === 200) {\r\n that.productList = res.data;\r\n }\r\n })\r\n .catch((error) => {\r\n console.log(error);\r\n })\r\n .finally(function () {\r\n that.fetchLoading = false;\r\n });\r\n },\r\n\r\n handleStatusClick: function handleStatusClick(status) {\r\n this.newContract!.status = status;\r\n },\r\n\r\n toggleEdit: function toggleEdit(mode) {\r\n if (mode === \"edit\") {\r\n if (this.selectedContract) {\r\n if (!this.isEditing) {\r\n $(\".js-example-placeholder-single\")\r\n .val(this.selectedContract.companyId)\r\n .trigger(\"change\");\r\n }\r\n this.newContract = {\r\n companyId: this.selectedContract.companyId,\r\n companyName: this.selectedContract.companyName,\r\n status: this.selectedContract.status,\r\n start: this.selectedContract.start,\r\n end: this.selectedContract.end,\r\n allowImport: this.selectedContract.allowImport,\r\n };\r\n this.isEditing = !this.isEditing;\r\n }\r\n } else {\r\n $(\".js-example-placeholder-single\").val(\"\").trigger(\"change\");\r\n\r\n this.newContract = {\r\n companyId: \"\",\r\n companyName: \"\",\r\n status: \"ACTIVE\",\r\n start: \"\",\r\n end: \"\",\r\n allowImport: false,\r\n };\r\n\r\n this.isCreating = !this.isCreating;\r\n this.isEditing = !this.isEditing;\r\n }\r\n },\r\n\r\n handleExportContractProductList:\r\n function handleExportContractProductList() {\r\n axiosInstance\r\n .get(`/contracts/${this.selectedContract!.id}/products`, {\r\n responseType: \"blob\",\r\n withCredentials: true,\r\n headers: {\r\n \"Content-type\": \"application/vnd.ms-excel\",\r\n Accept:\r\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\",\r\n },\r\n })\r\n .then((res) => {\r\n if (res.status === 200) {\r\n downloadResponse(res);\r\n }\r\n });\r\n },\r\n\r\n handleExportDefaultContractProductList:\r\n function handleExportContractProductList() {\r\n axiosInstance\r\n .get(`/contracts/-1/products`, {\r\n responseType: \"blob\",\r\n withCredentials: true,\r\n headers: {\r\n \"Content-type\": \"application/vnd.ms-excel\",\r\n Accept:\r\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\",\r\n },\r\n })\r\n .then((res) => {\r\n if (res.status === 200) {\r\n downloadResponse(res);\r\n }\r\n });\r\n },\r\n\r\n handleContractProductImport: function handleContractProductImport() {\r\n const fileInput = document.getElementById(\r\n \"contract-product-import\"\r\n ) as HTMLInputElement;\r\n const selectedContract = this.selectedContract;\r\n\r\n fileInput?.click();\r\n document.getElementById(\"contract-product-import\")?.addEventListener(\r\n \"change\",\r\n function () {\r\n axiosInstance\r\n .put(\r\n `/contracts/${selectedContract!.id}/import/`,\r\n fileInput.files![0],\r\n {\r\n headers: {\r\n \"Content-Type\":\r\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\",\r\n },\r\n }\r\n )\r\n .then((res) => {\r\n if (res.status === 200) {\r\n alert(\"successfully import\");\r\n location.reload();\r\n }\r\n })\r\n .catch((error) => {\r\n alert(error.message);\r\n });\r\n },\r\n false\r\n );\r\n },\r\n\r\n handleFormatDate: function handleFormatDate(date) {\r\n return convertDate(date);\r\n },\r\n\r\n handleCancelClick: function handleCancelClick() {\r\n this.isCreating = false;\r\n this.isEditing = false;\r\n },\r\n toggleShowMobileDetail() {\r\n this.showMobileDetail = !this.showMobileDetail;\r\n this.isCreating = false;\r\n this.isEditing = false;\r\n },\r\n\r\n handleImportContracts: function handleImportContracts() {\r\n const fileInput = document.getElementById('contracts-import') as HTMLInputElement;\r\n const _instance = this;\r\n const upload = function () {\r\n axiosInstance.put(`/contracts/imports/`, fileInput.files![0], {\r\n headers: {\r\n 'Content-Type': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\r\n }\r\n }).then((res) => {\r\n if (res.status === 200) {\r\n document[\"popupMessage\"](i18next.t('z0328importSuccess'));\r\n //_instance.errorMessage = '';\r\n //_instance.importedModal = true;\r\n }\r\n }).catch((error) => {\r\n try {\r\n document[\"popupErrors\"](getConvertedErrors(error.response.data));\r\n }\r\n catch {\r\n alert(error.message);\r\n }\r\n\r\n }).finally(() => {\r\n $(fileInput).off('change').val('');\r\n });\r\n };\r\n fileInput?.click();\r\n\r\n //this.importedModal = false;\r\n $(fileInput).on('change', upload);\r\n }\r\n };\r\n};\r\n","const ForgotPasswordView = () => {\r\n return {\r\n loading: false,\r\n formData: {\r\n email: '',\r\n },\r\n errorMessage: '',\r\n submitForm: function submitForm() {\r\n this.loading = true;\r\n if (this.formData.email) {\r\n axiosInstance.post('/auth/password/reset', this.formData, {\r\n withCredentials: true\r\n }).then((res: any) => {\r\n if (res.status === 200) {\r\n alert(i18next.t('tempPwSentToEmail', { email: this.formData.email }));\r\n window.location.href = '/auth/password';\r\n this.loading = false;\r\n }\r\n }).catch((e: any) => {\r\n this.errorMessage = e.message;\r\n alert(i18next.t('userEmailNotExist', { email: this.formData.email }));\r\n this.loading = false;\r\n });\r\n }\r\n }\r\n };\r\n};","const HomeView = () => {\r\n const MOCK_CARD = [\r\n {\r\n title: 'Refresh again',\r\n type: 'bye',\r\n count: 0\r\n }\r\n ];\r\n const MOCK_SECTION = [\r\n {\r\n tabTitle: 'Refresh again',\r\n tableTitle: 'again',\r\n type: 'CUSTOMER',\r\n items: []\r\n }\r\n ];\r\n return {\r\n newOrders: 0,\r\n cardList: [],\r\n filter: 'CUSTOMER',\r\n sectionList: [] as Array,\r\n goto: 'companies',\r\n\r\n // Method\r\n init() {\r\n this.fetchOrders();\r\n this.fetchCard();\r\n this.fetchSection();\r\n\r\n (this as any).$watch('filter', (v) => {\r\n const typeMap = {\r\n CUSTOMER: 'companies',\r\n CUSTOMER_USER: 'companies',\r\n ORDER: 'orders',\r\n PRODUCT: 'products',\r\n CONTRACT: 'contracts',\r\n SALES: 'sales'\r\n };\r\n this.goto = typeMap[v];\r\n })\r\n },\r\n /**\r\n * Method to generate the welcome message\r\n */\r\n getWelcomeMessage() {\r\n const user = getCurrentUser();\r\n const currentHour = Number(luxon.DateTime.now().toFormat(\"HH\"));\r\n if (currentHour > 16) {\r\n return $.t('greeting.goodEvening', { name: user?.name });\r\n }\r\n\r\n if (currentHour > 11) {\r\n return $.t('greeting.goodAfternoon', { name: user?.name });\r\n }\r\n return $.t('greeting.goodMorning', { name: user?.name });\r\n },\r\n\r\n /**\r\n * Method to fetch orders\r\n */\r\n async fetchOrders() {\r\n try {\r\n const res = await axiosInstance.get('/dashboard/misc', { withCredentials: true });\r\n if (res.status === 200) {\r\n this.newOrders = res.data.newOrderCount || 0;\r\n }\r\n } catch (err) {\r\n console.log(err);\r\n }\r\n },\r\n\r\n /**\r\n * Method to fetch dashboard card\r\n * card mock {title: string, type: string, count: int}\r\n */\r\n async fetchCard() {\r\n try {\r\n const res = await axiosInstance.get('/dashboard/cards', { withCredentials: true, timeout: 30000 });\r\n if (res?.status === 200 && res.data) {\r\n this.cardList = res.data;\r\n }\r\n } catch (err) {\r\n this.cardList = MOCK_CARD as any\r\n }\r\n },\r\n\r\n /**\r\n * Fetch Dashboard Section result \r\n */\r\n async fetchSection() {\r\n try {\r\n const res = await axiosInstance.get('/dashboard/sections', { withCredentials: true });\r\n if (res?.status === 200 && res.data) {\r\n this.sectionList = res.data as any;\r\n this.filter = (this.sectionList?.[0] as any)?.type ?? '';\r\n }\r\n } catch (_err) {\r\n this.sectionList = MOCK_SECTION as any;\r\n }\r\n },\r\n\r\n /**\r\n * Get current section list\r\n */\r\n getCurrentSectionItemList() {\r\n return this.sectionList.find((s: any) => s.type === this.filter)?.['items'] || [];\r\n },\r\n\r\n /**\r\n * Handle stepper click\r\n */\r\n getRedirectObject(step: number) {\r\n const scrollSection = $('#scroll-card-section');\r\n const scrollWidth = scrollSection?.get(0).scrollWidth;\r\n let scrollLeft = scrollSection?.get(0).scrollLeft;\r\n if (step > 0) {\r\n scrollLeft += 100;\r\n if (scrollLeft >= scrollWidth) {\r\n scrollLeft = scrollWidth;\r\n }\r\n scrollSection.animate({ scrollLeft }, 100);\r\n } else {\r\n scrollLeft -= 100;\r\n if (scrollLeft <= 0) {\r\n scrollLeft = 0;\r\n }\r\n scrollSection.animate({ scrollLeft }, 100);\r\n }\r\n },\r\n\r\n /**\r\n * Handle Filter Change\r\n */\r\n handleChangeFilter(f: string) {\r\n this.filter = f;\r\n },\r\n\r\n\r\n setDefaultTab(target) {\r\n const tabs = ['CUSTOMER', 'CUSTOMER_USER', 'ORDER', 'PRODUCT', 'CONTRACT', 'SALES'];\r\n var defaultTab = '';\r\n for (let tab of tabs) {\r\n if (this.sectionList.filter(o => o.type === tab).length > 0) {\r\n defaultTab = tab;\r\n break;\r\n }\r\n }\r\n if (target === defaultTab) {\r\n this.handleChangeFilter(target);\r\n }\r\n return true;\r\n },\r\n\r\n parseValue(key, value) {\r\n switch (key) {\r\n case 'orderDate':\r\n case 'deliveryDate':\r\n case 'start':\r\n case 'end':\r\n case 'createdDate':\r\n return value ? convertDate(value) : '';\r\n case 'lineItemAmount':\r\n case 'price':\r\n return value != null ? convertAmount('', value) : '';\r\n case 'orderStatus':\r\n return $.t(`oStatus.${value}`);\r\n }\r\n return value;\r\n }\r\n\r\n }\r\n};\r\n","const LayoutComponent = (): any => {\n return {\n cart: null,\n userView: 'customer',\n userRoles: [] as string[],\n userName: '',\n companiesVisible: false,\n cartItemNumber: 0,\n i18nInitialed: false,\n tabPermission: {\n showHome: false,\n showSales: false,\n showCustomers: false,\n showOrders : false,\n showProducts : false,\n showContracts : false,\n showReports: false,\n showShoppingCarts: false\n },\n openMenu: false,\n\n //Method\n init() {\n // Initial Store\n Alpine.store('cartTotal', {\n cartItemNumber: 0,\n updateTotal(n: number) {\n this.cartItemNumber = n;\n }\n });\n\n // I18n Config\n const detectOptions = {\n order: ['localStorage', 'cookie', 'htmlTag']\n };\n\n i18next.use(window.i18nextXHRBackend).use(window.i18nextBrowserLanguageDetector).init({\n debug: true,\n detection: detectOptions,\n load: 'currentOnly',\n whitelist: ['en', 'zh-HK'],\n fallbackLng: 'en',\n backend: {\n loadPath: '/i18n/{{lng}}.json'\n }\n }, () => {\n document.documentElement.setAttribute(\"lang\", i18next.language || 'en');\n jqueryI18next.init(i18next, $, {\n tName: 't',\n i18nName: 'i18n',\n });\n this.i18nInitialed = true;\n $(document).localize();\n\n const user = getCurrentUser();\n this.userRole = user?.roles.map(o => i18next.t(`userRoles.${o}`)).join('/');\n })\n this.$nextTick!(() => {\n const cartList = getCartList();\n this.$store.cartTotal.updateTotal(cartList.length);\n const user = getCurrentUser();\n this.userRoles = user?.roles;\n this.userName = user?.name;\n const COMPANY_ADMIN = user?.roles.includes('COMPANY_ADMIN');\n const COMPANY_CUSTOMER = user?.roles.includes('COMPANY_CUSTOMER');\n const CSC = user?.roles.includes('CSC');\n const CMS = user?.roles.includes('CMS');\n const SALES = user?.roles.includes('SALES');\n const SALES_ADMIN = user?.roles.includes('SALES_ADMIN');\n const COMPANY_APPROVER = user?.roles.includes('COMPANY_APPROVER');\n const SUPER_ADMIN = user?.roles.includes('SUPER_ADMIN');\n \n this.tabPermission.showHome = true;\n this.tabPermission.showSales = SUPER_ADMIN || SALES_ADMIN || SALES;\n this.tabPermission.showCustomers = SUPER_ADMIN || COMPANY_ADMIN || SALES_ADMIN;\n this.tabPermission.showOrders = SUPER_ADMIN || SALES || COMPANY_ADMIN || CSC || CMS || COMPANY_CUSTOMER || COMPANY_APPROVER;\n this.tabPermission.showProducts = SUPER_ADMIN || COMPANY_CUSTOMER;\n this.tabPermission.showContracts = SUPER_ADMIN || SALES_ADMIN || COMPANY_ADMIN;\n this.tabPermission.showReports = true;\n this.tabPermission.showShoppingCarts = COMPANY_CUSTOMER || COMPANY_ADMIN;\n if (COMPANY_ADMIN) {\n this.companiesVisible = true;\n }\n // FIXME: permission for SALES\n if (user?.roles.includes(\"SUPER_ADMIN\") || user?.roles.includes(\"SALES\")) {\n this.userView = \"admin\"\n }\n })\n },\n\n /**\n * Method to check to route\n */\n comparePath: function (match: string) {\n return window.location.pathname.toLowerCase().search(match.toLowerCase()) >= 0;\n },\n\n /**\n * Method to update the badge\n */\n setCartItemNumber: function (n: number) {\n this.cartItemNumber = n;\n },\n\n /**\n * Method to change language\n */\n handleChangeLanguage(l: 'en' | 'zh-HK') {\n this.i18nInitialed = false;\n i18next.changeLanguage(l, () => {\n jqueryI18next.init(i18next, $, {\n tName: 't',\n i18nName: 'i18n',\n });\n $(document).localize();\n document.documentElement.setAttribute(\"lang\", l)\n // Safe method to protect rerender\n setTimeout(() => {\n this.i18nInitialed = true;\n }, 150);\n });\n },\n\n handleOpenMenu() {\n this.openMenu = !this.openMenu;\n }\n }\n}\n","const LoginView = () => {\r\n return {\r\n showPassword: false,\r\n loading: false,\r\n formData: {\r\n email: '',\r\n password: '',\r\n errorMessage: '',\r\n },\r\n submitForm: function () {\r\n this.loading = true;\r\n if (this.formData.email && this.formData.password) {\r\n axiosInstance.post('/auth/login', this.formData, {\r\n withCredentials: true\r\n }).then((res: any) => {\r\n if (res.status === 200 && res && res.data && res.data.token) {\r\n // Store Token in localstorage\r\n store('token', res.data.token);\r\n store('refreshToken', res.data.refreshToken);\r\n const user = jwt_decode(res.data.token);\r\n window.location.href = user && user.isAuthorizing ? '/auth/otp' : '/Home';\r\n }\r\n }).catch((error) => {\r\n if (error.response.headers[\"password-reset\"] == 1) {\r\n document[\"popupMessage\"]('Attempt count is exceeded the allowed amount

Please check your email inbox and reset the password', true);\r\n this.showPassword = false;\r\n this.formData.password = \"\";\r\n }\r\n this.formData.errorMessage = 'The email address or password you entered is incorrect or expired. Please re-enter.';\r\n });\r\n }\r\n this.loading = false;\r\n },\r\n toggleShowPassword: function () {\r\n this.showPassword = !this.showPassword;\r\n }\r\n };\r\n};","const OrderConfirmView = (): IOrderConfirmView => {\r\n return {\r\n snapshotList: [],\r\n deliveryCharge: 0,\r\n\r\n // Method\r\n init() {\r\n const snapshotObj: { items: ShoppingCartItem[], deliveryCharge: number, expire?: string } = retrieve('ORDER_SNAPSHOT') as any;\r\n if (!snapshotObj?.expire) {\r\n window.location.href = '/products';\r\n return;\r\n }\r\n const snapTime = luxon.DateTime.fromISO(snapshotObj.expire as string).toMillis();\r\n const currentTime = luxon.DateTime.now().toMillis();\r\n // Remove snapshot when timeout\r\n if (currentTime - snapTime >= 120000) {\r\n remove('ORDER_SNAPSHOT');\r\n window.location.href = '/products';\r\n return;\r\n }\r\n if (snapshotObj && typeof snapshotObj === 'object') {\r\n this.snapshotList = snapshotObj.items;\r\n this.deliveryCharge = snapshotObj.deliveryCharge;\r\n }\r\n },\r\n\r\n /**\r\n * Method get the total of cart list \r\n */\r\n getSnapShotTotalAmount() {\r\n let total = 0;\r\n this.snapshotList.forEach((item => {\r\n total = total + (item.quantity * Number(item.product.price));\r\n }));\r\n return total;\r\n },\r\n\r\n /**\r\n * Method get delivery charge\r\n */\r\n getDeliveryCharge() {\r\n return this.deliveryCharge;\r\n },\r\n\r\n getTotalOrderAmount() {\r\n return Number(this.getSnapShotTotalAmount()) + this.deliveryCharge;\r\n },\r\n\r\n /**\r\n * Method to go back\r\n */\r\n handleBackToTop() {\r\n window.location.href = '/products';\r\n }\r\n }\r\n}","const OrderDetailView = (): any => {\r\n return {\r\n userView: 'customer',\r\n orderDetail: null,\r\n omNo: '',\r\n cancelRemarks: '',\r\n confirmRemarks: '',\r\n actualDeliveryDate: '',\r\n\r\n // Method\r\n init: async function () {\r\n this.fetchOrderDetail();\r\n const date = await this.getEarliestDate();\r\n (this.$watch as any)('orderDetail', () => {\r\n flatpickr(document.getElementById('actual-delivery-date') as HTMLElement, {\r\n minDate: date ? date.slice(0, 10) : luxon.DateTime.now().plus({ days: 2 }).toISO()\r\n });\r\n });\r\n (this.$nextTick as any)(() => {\r\n const user = getCurrentUser();\r\n if (isAnyAdmin(user!)) {\r\n this.userView = 'admin';\r\n }\r\n });\r\n },\r\n\r\n /**\r\n * return earliest delivery date\r\n */\r\n getEarliestDate: async function () {\r\n try {\r\n const res = await axiosInstance.get('/public-holidays/earliest-delivery', { withCredentials: true });\r\n if (res.status === 200) {\r\n return res.data;\r\n }\r\n } catch (_err) {\r\n return null;\r\n }\r\n },\r\n\r\n /**\r\n * Fetch order detail by id\r\n */\r\n fetchOrderDetail: async function () {\r\n try {\r\n const orderDetailPath = window.location.pathname;\r\n const orderDetailId = orderDetailPath.split('/')[2];\r\n const res = await axiosInstance.get(`/orders/${orderDetailId}`, { withCredentials: true });\r\n if (res.status === 200) {\r\n this.orderDetail = res.data;\r\n }\r\n } catch (err) {\r\n console.log(err);\r\n }\r\n },\r\n\r\n /**\r\n * Handle Confirm cancel the order\r\n */\r\n handleConfirmOrder: async function () {\r\n if (this.orderDetail.status === \"CREATED\") {\r\n try {\r\n const res = await axiosInstance.post(`/orders/${(this.orderDetail as any)?.id}/approve`, {\r\n orderNo: this.omNo,\r\n remarks: this.confirmRemarks,\r\n actualDeliveryDate: this.actualDeliveryDate\r\n }, { withCredentials: true });\r\n if (res.status === 200) {\r\n //alert(\"Order confirmed\");\r\n window.location.reload();\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n alert((error as any).message);\r\n } finally {\r\n //window.location.reload();\r\n }\r\n } else {\r\n try {\r\n const res = await axiosInstance.post(`/orders/${(this.orderDetail as any)?.id}/approve-cancel`, {\r\n remarks: this.cancelRemarks,\r\n }, { withCredentials: true });\r\n if (res.status === 200) {\r\n //alert(\"Cancel confirmed\");\r\n window.location.reload();\r\n }\r\n } catch (_err) {\r\n //alert(\"Approve with error\");\r\n } finally {\r\n //window.location.reload();\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","const OrderView = (): IOrderView => {\n return {\n filter: \"\",\n orderList: [],\n pagination: {\n totalPages: 1,\n rowPerPage: 10,\n currentPage: 1,\n totalEntries: 0,\n },\n openPopover: \"\",\n cartList: [],\n agreeExtraCharge: false,\n agreeExtraChargeModal: false,\n\n // Method\n init: function () {\n const cartList = getShoppingCart() as ShoppingCart;\n if (cartList && typeof cartList === \"object\") {\n this.cartList = cartList.items;\n }\n this.$watch!(\"cartList\", (value) => {\n this.$store!.cartTotal!.updateTotal(value.length);\n batchUpsertShoppingCart(value);\n });\n\n this.$watch!(\"pagination.currentPage\", () => {\n this.fetchOrderList();\n });\n\n (this as any).$watch(\"filter\", () => {\n this.fetchOrderList();\n });\n\n // Pagination Initializer\n this.$watch!(\"orderList\", () => {\n $(\"#pagination-wrapper\").pagination({\n // Fake the plugin to get total number\n dataSource: new Array(this.pagination.totalEntries).fill(\",\"),\n pageNumber: this.pagination.currentPage,\n pageSize: this.pagination.rowPerPage,\n pageRange: 1,\n ulClassName: \"pagination--ul\",\n activeClassName: \"pagination__item--selected\",\n callback: (_, pagination) => {\n this.pagination.currentPage = pagination.pageNumber;\n },\n });\n });\n\n this.$nextTick!(() => {\n this.fetchOrderList();\n });\n },\n\n /**\n * Handle Select Filter\n */\n handleFilterSelect: function (f: string = \"\") {\n this.filter = f;\n },\n\n /**\n * Fetch Customer Orders\n */\n fetchOrderList: async function () {\n try {\n const user = getCurrentUser();\n const url = user!.roles.some(\n (roles) => roles.includes(\"ADMIN\") || roles.includes(\"CSC\") || roles.includes(\"CMS\")\n )\n ? \"/orders\"\n : `/${user!.roles.some((roles) => roles.includes(\"SALES\"))\n ? \"salespersons\"\n : \"customers\"\n }/${user!.id}/orders`;\n\n const res = await axiosInstance.get(url, {\n withCredentials: true,\n params: {\n per_page: this.pagination.rowPerPage,\n page: this.pagination.currentPage,\n status: this.filter?.toUpperCase(),\n },\n });\n if (res.status === 200) {\n this.orderList = res.data?.items;\n this.pagination.totalPages = res.data?.total_pages;\n this.pagination.totalEntries = res?.data?.total_count;\n }\n } catch (err) {\n console.log(err);\n }\n },\n\n /**\n * Handle order quick action\n * FIXME: remove this\n */\n handleOnConfirmClick: async function (e: any, id: string, type: string) {\n e.stopPropagation();\n try {\n // FIXME: Logic outdated\n const res =\n type === \"approve-cancel\"\n ? await axiosInstance.delete(`/orders/${id}`, {\n withCredentials: true,\n })\n : await axiosInstance.post(`/orders/${id}/${type}`, {\n withCredentials: true,\n });\n if (res.status === 200) {\n if (type === \"approve-cancel\") {\n alert(\"Request Order cancel approval\");\n } else {\n alert(\"Order Approved\");\n }\n window.location.reload();\n }\n } catch (err) {\n console.log(err);\n }\n },\n\n /**\n * Handle go to order page\n */\n handleGoToOrderDetail: function (id: string) {\n window.location.href = `/orders/${id}`;\n },\n\n /**\n * Close extra fee modal\n */\n\n handleAgreeExtraChargeModalClose() {\n this.agreeExtraChargeModal = false;\n },\n\n /**\n * Handle order quick action\n */\n async handleOnRequestForCancel(e: any, id: string) {\n e.stopPropagation();\n if (!this.agreeExtraChargeModal) {\n const currentTime = luxon.DateTime.now().get('hour');\n if (currentTime >= 15) {\n this.agreeExtraChargeModal = true;\n this.openPopover = '';\n return;\n }\n }\n try {\n const res = await axiosInstance.delete(`/orders/${id}`, {\n withCredentials: true,\n });\n if (res.status === 200) {\n alert($.t('oStatus.REQUESTED_FOR_CANCEL'));\n window.location.reload();\n }\n } catch (err) {\n console.log(err);\n } finally {\n this.agreeExtraChargeModal = false;\n }\n },\n\n /**\n * Method to handle open popover\n */\n handleOpenPopover(e: any, idx: string) {\n e.stopPropagation();\n if (idx === this.openPopover) {\n this.openPopover = \"\";\n } else {\n this.openPopover = idx;\n }\n },\n\n async getOrder(id: string): Promise {\n try {\n const res = await axiosInstance.get(`/orders/${id}`, {\n withCredentials: true,\n });\n\n if (res.status === 200) {\n return res.data;\n }\n throw new Error(`res.status: ${res.status} without error`);\n } catch (error) {\n // log to console and rethrow\n console.log(error);\n throw error;\n }\n },\n\n /**\n * Handle Re-Order\n * TODO: re-think the logic\n */\n async handleOnReorder(e: any, id: string) {\n\n e.stopPropagation();\n\n // Blocks re-ordering if the cart is non-empty\n // to prevent overwriting items in cart\n if (this.cartList.length > 0) {\n alert(\"Please clear the cart before re-ordering\");\n return;\n }\n\n // query the order\n const order = await this.getOrder(id);\n // Fill the cart with previous order\n this.cartList = order.lineItems.map(\n ({\n productId,\n productName,\n productPartNumber,\n productSize,\n price,\n currencyCode,\n priceDesc,\n pricingId,\n contractId,\n quantity,\n sheets,\n }): ShoppingCartItem => ({\n product: {\n id: productId,\n name: productName,\n partNumber: productPartNumber,\n size: productSize,\n price,\n currencyCode,\n priceDesc,\n pricingId,\n contractId,\n sheets,\n },\n quantity,\n })\n );\n const currentCart = retrieve(\"SHOPPING_CART\");\n const userId = getCurrentUser()!.id;\n if (currentCart == null) {\n let obj = JSON.parse(retrieve(\"SHOPPING_CART\") as string ?? \"{}\");\n obj[userId] = { items: this.cartList };\n\n store(\"SHOPPING_CART\", JSON.stringify(obj));\n }\n\n let reorder = retrieve(\"REORDER\") as any ?? {};\n reorder[userId] = id;\n store(\"REORDER\", JSON.stringify(reorder));\n\n alert(\"Previous items are added to cart\");\n // redirecting to cart\n window.location.href = \"/orders/cart\";\n },\n };\n};\n","type OtpViewType = {\r\n submitLoading: boolean;\r\n timerDelta: null | number;\r\n resendTimer: number;\r\n errorMessage: string;\r\n email: string;\r\n formData: {\r\n code1: string,\r\n code2: string,\r\n code3: string,\r\n code4: string,\r\n code5: string,\r\n code6: string\r\n }\r\n setResendTimer?: (v: any) => void;\r\n getUser: () => any;\r\n submitForm: () => void;\r\n setTimer: () => void;\r\n sendCode: () => void;\r\n clearTimer: () => void;\r\n}\r\n\r\nconst OtpView = (): OtpViewType => {\r\n return {\r\n submitLoading: false,\r\n timerDelta: null,\r\n resendTimer: -1,\r\n errorMessage: '',\r\n formData: {\r\n code1: '',\r\n code2: '',\r\n code3: '',\r\n code4: '',\r\n code5: '',\r\n code6: ''\r\n },\r\n email: getCurrentUser()?.email as string,\r\n getUser: function () {\r\n console.log(1, getCurrentUser());\r\n return getCurrentUser();\r\n },\r\n submitForm: function () {\r\n this.submitLoading = true;\r\n const result = this.formData.code1 + this.formData.code2 + this.formData.code3 + this.formData.code4 + this.formData.code5 + this.formData.code6;\r\n if (result.length === 6) {\r\n var that = this;\r\n axiosInstance.post('/auth/otp/verify', {\r\n code: result\r\n }, {\r\n withCredentials: true,\r\n }).then((res: any) => {\r\n if (res.status === 200) {\r\n window.location.href = '/Home';\r\n }\r\n }).catch((e: any) => {\r\n this.submitLoading = false;\r\n this.errorMessage = e.message;\r\n });\r\n\r\n }\r\n return false;\r\n },\r\n\r\n setResendTimer(v: any) {\r\n this.resendTimer = v;\r\n },\r\n\r\n setTimer: function () {\r\n if (this.resendTimer > 0 && !this.timerDelta) {\r\n this.timerDelta = setInterval(() => {\r\n this.resendTimer = this.resendTimer - 1;\r\n }, 1000);\r\n }\r\n },\r\n\r\n sendCode: function () {\r\n axiosInstance.post('/auth/otp', {}, {\r\n withCredentials: true,\r\n }).then((res: any) => {\r\n if (res.status === 200) {\r\n console.log('otp sent')\r\n }\r\n }).catch((e: any) => {\r\n this.errorMessage = e.message;\r\n }).finally(() => {\r\n this.setTimer();\r\n })\r\n },\r\n\r\n clearTimer: function () {\r\n if (this.resendTimer === 0 && this.timerDelta) {\r\n clearInterval(this.timerDelta);\r\n }\r\n }\r\n };\r\n};\r\n","const PasswordView = () => {\r\n return {\r\n loading: false,\r\n isIncorrectPassword: false,\r\n showCurrentPassword: false,\r\n showNewPassword: false,\r\n showNewConfirmPassword: false,\r\n formData: {\r\n email: '',\r\n currentPassword: '',\r\n newPassword: '',\r\n newConfirmPassword: '',\r\n errorMessage: '',\r\n errorMessages: [],\r\n },\r\n submitForm: function submitForm() {\r\n this.isIncorrectPassword = false;\r\n this.formData.errorMessages = [];\r\n\r\n if (this.formData.email && this.formData.currentPassword && this.formData.newPassword && this.formData.newConfirmPassword) {\r\n this.loading = true;\r\n axiosInstance.put('/auth/password', { email: this.formData.email, oldPassword: this.formData.currentPassword, password: this.formData.newPassword }, {\r\n withCredentials: true\r\n }).then((res: any) => {\r\n if (res.status === 200) {\r\n // When it get 200, we redirect user to Password page\r\n window.location.href = '/Home';\r\n this.loading = false;\r\n }\r\n }).catch((e: any) => {\r\n if (e.response && e.response.data && e.response.data.Password) {\r\n this.formData.errorMessage = ['Not match error policy', ...e.response.data.Password].join(', ');\r\n this.formData.errorMessages = e.response.data.Password;\r\n }\r\n else if (e.response && e.response.status == 400) {\r\n this.isIncorrectPassword = true;\r\n }\r\n this.loading = false;\r\n });\r\n }\r\n },\r\n toggleShowCurrentPassword: function () {\r\n this.showCurrentPassword = !this.showCurrentPassword;\r\n },\r\n toggleShowNewPassword: function () {\r\n this.showNewPassword = !this.showNewPassword;\r\n },\r\n toggleShowNewConfirmPassword: function () {\r\n this.showNewConfirmPassword = !this.showNewConfirmPassword;\r\n }\r\n };\r\n};","const ProfileView = (): IProfileView => {\r\n return {\r\n isEditing: false,\r\n id: null,\r\n userView: \"\",\r\n customer: null,\r\n salesperson: null,\r\n user: null,\r\n newCustomer: {},\r\n newSalesperson: {},\r\n newUser: {},\r\n userList: [],\r\n roles: [],\r\n rawCallingCode: \"\",\r\n rawPhone: \"\",\r\n\r\n // Method\r\n init() {\r\n this.$watch!(\"userView\", () => {\r\n switch (this.userView) {\r\n //case \"salesperson\":\r\n // this.fetchSalesperson();\r\n // break;\r\n //case \"customer\":\r\n // this.fetchCustomer();\r\n // break;\r\n default:\r\n this.fetchUser();\r\n break;\r\n }\r\n });\r\n\r\n this.$nextTick!(() => {\r\n const user = getCurrentUser();\r\n this.id = user?.id;\r\n //this.userView = user?.roles.includes(\"SALES\")\r\n // ? \"salesperson\"\r\n // : user?.roles.includes(\"COMPANY_CUSTOMER\")\r\n // ? \"customer\"\r\n // : \"user\";\r\n this.userView = 'user';\r\n this.roles = user!.roles;\r\n });\r\n },\r\n\r\n async fetchSalesperson() {\r\n try {\r\n const res = await axiosInstance.get(`/salespersons/${this.id}`, {\r\n withCredentials: true,\r\n });\r\n\r\n if (res.status === 200) {\r\n this.salesperson = res.data;\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n },\r\n\r\n async fetchCustomer() {\r\n try {\r\n const res = await axiosInstance.get(`/api/users/my/profile`, {\r\n withCredentials: true,\r\n });\r\n\r\n if (res.status === 200) {\r\n this.customer = res.data;\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n },\r\n\r\n async fetchUser() {\r\n try {\r\n const res = await axiosInstance.get(`/users/${this.id}`, {\r\n withCredentials: true,\r\n });\r\n\r\n if (res.status === 200) {\r\n this.user = res.data;\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n },\r\n\r\n async updateSalesperson() {\r\n try {\r\n const res = await axiosInstance.put(\r\n `/salespersons/${this.id}`,\r\n this.newSalesperson,\r\n {\r\n withCredentials: true,\r\n }\r\n );\r\n\r\n if (res.status === 200) {\r\n this.salesperson = res.data;\r\n this.handleCancelClick();\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n },\r\n\r\n async updateCustomer() {\r\n this.newCustomer.phone = `${this.rawCallingCode}${this.rawPhone}`;\r\n try {\r\n const res = await axiosInstance.put(\r\n `/customers/${this.id}`,\r\n this.newCustomer,\r\n {\r\n withCredentials: true,\r\n }\r\n );\r\n\r\n if (res.status === 200) {\r\n this.customer = res.data;\r\n this.handleCancelClick();\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n },\r\n\r\n async updateUser() {\r\n try {\r\n const res = await axiosInstance.put(`/users/${this.id}`, this.newUser, {\r\n withCredentials: true,\r\n });\r\n\r\n if (res.status === 200) {\r\n this.user = res.data;\r\n this.handleCancelClick();\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n },\r\n\r\n toggleEdit: function () {\r\n // Deep copy\r\n switch (this.userView) {\r\n case \"salesperson\":\r\n this.newSalesperson = JSON.parse(JSON.stringify(this.salesperson));\r\n break;\r\n case \"customer\":\r\n this.newCustomer = JSON.parse(JSON.stringify(this.customer));\r\n break;\r\n default:\r\n this.newUser = JSON.parse(JSON.stringify(this.user));\r\n break;\r\n }\r\n this.isEditing = true;\r\n },\r\n\r\n handleCancelClick: function () {\r\n // Always refresh token when the user has changed its info\r\n axiosInstance\r\n .put(\r\n \"/auth/login\",\r\n {},\r\n {\r\n withCredentials: true,\r\n }\r\n )\r\n .then((res) => {\r\n console.log(\"token refreshed\");\r\n })\r\n .catch((error) => {\r\n console.log(error);\r\n })\r\n .finally(() => {\r\n this.isEditing = false;\r\n this.newCustomer = {};\r\n this.newSalesperson = {};\r\n this.newUser = {};\r\n });\r\n },\r\n\r\n handleOnLogoutClick() {\r\n window.location.href = \"/auth/logout\";\r\n },\r\n\r\n handleResetPassword(email: string) {\r\n // TODO: maybe alert / modal and ask if the user confirms the reset\r\n axiosInstance\r\n .get(\"/auth/logout\", {\r\n withCredentials: true,\r\n })\r\n .then((res) => {\r\n axiosInstance\r\n .post(\r\n \"/auth/password/reset\",\r\n { email },\r\n {\r\n withCredentials: true,\r\n }\r\n )\r\n .then((res) => {\r\n window.location.href = \"/auth/password\";\r\n });\r\n })\r\n .catch((error) => {\r\n console.log(error);\r\n });\r\n },\r\n };\r\n};","const ReportsView = (): any => {\n return {\n filter: \"\",\n orderStatusList: [],\n salesParamList: [],\n productCatList: [],\n orderTransactionsForm: {\n companyName: \"\",\n accountNo: \"\",\n sales: [],\n productCat: [],\n omNo: \"\",\n orderFrom: luxon.DateTime.now().startOf('month').toFormat('yyyy-MM'),\n orderTo: luxon.DateTime.now().endOf('month').toFormat('yyyy-MM'),\n orderStatus: [],\n manageCSC: (getCurrentUser()?.roles.indexOf('CSC') ?? -1) >= 0,\n manageCMS: (getCurrentUser()?.roles.indexOf('CMS') ?? -1) >= 0,\n },\n orderSummaryForm: {\n companyName: \"\",\n accountNo: \"\",\n sales: [],\n productCat: [],\n omNo: \"\",\n orderFrom: \"\",\n orderTo: \"\",\n orderStatus: [],\n manageCSC: (getCurrentUser()?.roles.indexOf('CSC') ?? -1) >= 0,\n manageCMS: (getCurrentUser()?.roles.indexOf('CMS') ?? -1) >= 0,\n },\n customerReport: {\n accountNo: \"\",\n companyName: \"\",\n sales: [],\n },\n salesReport: {\n firstName: \"\",\n lastName: \"\",\n email: \"\",\n },\n productReport: {\n productName: \"\",\n productNumber: \"\",\n productCat: [],\n status: [],\n },\n contractReport: {\n contractNumber: \"\",\n customer: \"\",\n sales: [],\n startFrom: \"\",\n startTo: \"\",\n },\n tabPermission: {\n orderTransactions: false,\n orderSummary: false,\n customers: false,\n sales: false,\n products: false,\n contracts: false\n },\n\n init() {\n this.fetchOrderStatusList();\n this.fetchSalesParamList();\n this.fetchProductCatList();\n\n // Select 2 initial\n $(\".js-example-basic-multiple-limit\").val(\"all\");\n $(\".js-example-basic-multiple-limit\")\n .select2({\n debug: true,\n })\n .on(\"select2:select select2:unselect\", (e) => {\n const targetValue = $(`#${e.target.id}`).val() as any[];\n switch (e.target.id) {\n case \"order-transactions-sales\":\n this.orderTransactionsForm.sales = targetValue?.filter(\n (x) => x !== \"all\"\n );\n break;\n case \"order-transactions-product-cat\":\n this.orderTransactionsForm.productCat = targetValue?.filter(\n (x) => x !== \"all\"\n );\n break;\n case \"order-transactions-order-status\":\n this.orderTransactionsForm.orderStatus = targetValue?.filter(\n (x) => x !== \"all\"\n );\n break;\n case \"order-summary-order-status\":\n this.orderSummaryForm.orderStatus = targetValue?.filter(\n (x) => x !== \"all\"\n );\n break;\n case \"order-summary-sales\":\n this.orderSummaryForm.sales = targetValue?.filter(\n (x) => x !== \"all\"\n );\n break;\n case \"order-summary-product-cat\":\n this.orderSummaryForm.productCat = targetValue?.filter(\n (x) => x !== \"all\"\n );\n break;\n case \"product-report-product-cat\":\n this.productReport.productCat = targetValue?.filter(\n (x) => x !== \"all\"\n );\n break;\n case \"product-report-status\":\n this.productReport.status = targetValue?.filter(\n (x) => x !== \"all\"\n );\n break;\n case \"customer-report-sales\":\n this.customerReport.sales = targetValue?.filter(\n (x) => x !== \"all\"\n );\n break;\n case \"contract-report-sales\":\n this.contractReport.sales = targetValue?.filter(\n (x) => x !== \"all\"\n );\n break;\n default:\n break;\n }\n });\n //$('#order-transactions-product-cat').select2();\n\n // FlatpickrFn\n flatpickr(\n document.getElementById(\"order-summary-order-from\") as HTMLElement,\n {\n onChange: (_selectedDates, dateStr, _instance) => {\n document\n .getElementById(\"order-summary-order-to\")\n ?._flatpickr.set(\"enable\", [\n {\n from: dateStr as any,\n to: luxon.DateTime.fromFormat(dateStr, \"yyyy-MM-dd\")\n .plus({ years: 1 })\n .toFormat(\"yyyy-MM-dd\") as any,\n },\n ]);\n },\n }\n );\n flatpickr(\n document.getElementById(\"order-summary-order-to\") as HTMLElement,\n {\n onChange: (_selectedDates, dateStr, _instance) => {\n document\n .getElementById(\"order-summary-order-from\")\n ?._flatpickr.set(\"enable\", [\n {\n to: dateStr as any,\n from: luxon.DateTime.fromFormat(dateStr, \"yyyy-MM-dd\")\n .minus({ years: 1 })\n .toFormat(\"yyyy-MM-dd\") as any,\n },\n ]);\n },\n }\n );\n flatpickr(document.getElementById(\"contract-report-from\") as HTMLElement,\n {\n onChange: (_selectedDates, dateStr, _instance) => {\n document\n .getElementById(\"contract-report-to\")\n ?._flatpickr.set(\"minDate\", dateStr as any,);\n }\n });\n flatpickr(document.getElementById(\"contract-report-to\") as HTMLElement, {\n onChange: (_selectedDates, dateStr, _instance) => {\n document\n .getElementById(\"contract-report-from\")\n ?._flatpickr.set(\"maxDate\", dateStr as any,);\n }\n });\n\n this.$nextTick!(() => {\n const user = getCurrentUser();\n this.userRoles = user?.roles;\n this.userName = user?.name;\n const COMPANY_ADMIN = user?.roles.includes('COMPANY_ADMIN');\n const COMPANY_CUSTOMER = user?.roles.includes('COMPANY_CUSTOMER');\n const CSC = user?.roles.includes('CSC');\n const CMS = user?.roles.includes('CMS');\n const SALES = user?.roles.includes('SALES');\n const SALES_ADMIN = user?.roles.includes('SALES_ADMIN');\n const SUPER_ADMIN = user?.roles.includes('SUPER_ADMIN');\n\n this.tabPermission.orderTransactions = SUPER_ADMIN;\n this.tabPermission.orderSummary = SUPER_ADMIN || SALES_ADMIN || COMPANY_ADMIN || COMPANY_CUSTOMER || CSC || CMS;\n this.tabPermission.customers = SUPER_ADMIN || SALES_ADMIN || CSC || CMS;\n this.tabPermission.sales = SUPER_ADMIN || SALES_ADMIN;\n this.tabPermission.products = SUPER_ADMIN;\n this.tabPermission.contracts = SUPER_ADMIN || SALES_ADMIN || CSC || CMS;\n\n if (this.filter == '') {\n for (const tab in this.tabPermission) {\n if (this.tabPermission[tab]) {\n this.handleChangeFilter(tab);\n break;\n }\n }\n }\n });\n },\n\n //Method\n handleChangeFilter(v: string) {\n this.filter = v;\n },\n\n async fetchOrderStatusList() {\n this.orderStatusList = [\n { code: 'AwaitingApproval', title: 'Awaiting approval' },\n { code: 'PartialConfirmed', title: 'Partial confirmed' },\n { code: 'RequestingCancel', title: 'Requested for cancel' },\n { code: 'Cancelled', title: 'Cancelled' },\n ]\n },\n\n async fetchSalesParamList() {\n try {\n const res = await axiosInstance.get(\"/salesmen\", {\n withCredentials: true,\n });\n if (res.status === 200) {\n this.salesParamList = res.data;\n }\n } catch (err) {\n console.log(err);\n }\n },\n\n async fetchProductCatList() {\n try {\n const res = await axiosInstance.get(\"/Categories\", {\n withCredentials: true,\n });\n if (res.status === 200) {\n this.productCatList = res.data;\n }\n } catch (err) {\n console.log(err);\n }\n },\n\n async exportOrderTransaction() {\n return exportOrderTransactionsReport({\n ...this.orderTransactionsForm,\n orderFrom: luxon.DateTime\n .fromISO(this.orderTransactionsForm.orderFrom)\n .startOf('month').toISO(),\n orderTo: luxon.DateTime\n .fromISO(this.orderTransactionsForm.orderTo)\n .endOf('month').toISO()\n });\n },\n\n _getSendData() {\n if (this.filter === \"orderTransactions\") {\n return {\n ...(this.orderTransactionsForm.companyName && {\n CompanyName: this.orderTransactionsForm.companyName,\n }),\n ...(this.orderTransactionsForm.accountNo && {\n AccountNo: this.orderTransactionsForm.accountNo,\n }),\n ...(this.orderTransactionsForm.sales?.length > 0 && {\n Salespersons: this.orderTransactionsForm.sales.join(\",\"),\n }),\n ...(this.orderTransactionsForm.productCat?.length > 0 && {\n CategoryIds: this.orderTransactionsForm.productCat.join(\",\"),\n }),\n ...(this.orderTransactionsForm.omNo && {\n OrderNo: this.orderTransactionsForm.omNo,\n }),\n ...(this.orderTransactionsForm.orderFrom && {\n Start: this.orderTransactionsForm.orderFrom,\n }),\n ...(this.orderTransactionsForm.orderTo && {\n End: this.orderTransactionsForm.orderTo,\n }),\n ...(this.orderTransactionsForm.orderStatus?.length > 0 && {\n OrderStatuses: this.orderTransactionsForm.orderStatus.join(\",\"),\n }),\n };\n } else if (this.filter === \"orderSummary\") {\n return {\n ...(this.orderSummaryForm.companyName && {\n CompanyName: this.orderSummaryForm.companyName,\n }),\n ...(this.orderSummaryForm.accountNo && {\n AccountNo: this.orderSummaryForm.accountNo,\n }),\n ...(this.orderSummaryForm.sales?.length > 0 && {\n Salespersons: this.orderSummaryForm.sales.join(\",\"),\n }),\n ...(this.orderSummaryForm.productCat?.length > 0 && {\n CategoryIds: this.orderSummaryForm.productCat.join(\",\"),\n }),\n ...(this.orderSummaryForm.omNo && {\n OrderNo: this.orderSummaryForm.omNo,\n }),\n ...(this.orderSummaryForm.orderFrom && {\n Start: this.orderSummaryForm.orderFrom,\n }),\n ...(this.orderSummaryForm.orderTo && {\n End: this.orderSummaryForm.orderTo,\n }),\n ...(this.orderSummaryForm.orderStatus?.length > 0 && {\n OrderStatuses: this.orderSummaryForm.orderStatus.join(\",\"),\n }),\n };\n } else if (this.filter === \"customers\") {\n return {\n ...(this.customerReport.companyName && {\n CompanyName: this.customerReport.companyName,\n }),\n ...(this.customerReport.accountNo && {\n AccountNo: this.customerReport.accountNo,\n }),\n ...(this.customerReport.sales?.length > 0 && {\n Salespersons: this.customerReport.sales.join(\",\"),\n }),\n };\n } else if (this.filter === \"sales\") {\n return {\n ...(this.salesReport.firstName && {\n FirstName: this.salesReport.firstName,\n }),\n ...(this.salesReport.lastName && {\n LastName: this.salesReport.lastName,\n }),\n ...(this.salesReport.email && { Email: this.salesReport.email }),\n };\n } else if (this.filter === \"contracts\") {\n return {\n ...(this.contractReport.contractNumber && {\n ContractNo: this.contractReport.contractNumber,\n }),\n ...(this.contractReport.customer && {\n CustomerName: this.contractReport.customer,\n }),\n ...(this.contractReport.sales?.length > 0 && {\n Salespersons: this.contractReport.sales.join(\",\"),\n }),\n ...(this.contractReport.startFrom && {\n Start: this.contractReport.startFrom,\n }),\n ...(this.contractReport.startTo && {\n End: this.contractReport.startTo,\n }),\n };\n } else if (this.filter === \"products\") {\n return {\n ...(this.productReport.productName && {\n Name: this.productReport.productName,\n }),\n ...(this.productReport.productNumber && {\n PartNumber: this.productReport.productNumber,\n }),\n ...(this.productReport.productCat?.length > 0 && {\n PartNumber: this.productReport.productCat.join(\",\"),\n }),\n ...(this.productReport.status?.length > 0 && {\n IsActive: this.productReport.status\n .map((x) => (x === \"active\" ? true : false))\n .join(\",\"),\n }),\n };\n }\n },\n };\n};","const SalesView = (): ISalesView => {\r\n return {\r\n openDelegateModal: false,\r\n fetchLoading: false,\r\n searchSales: '',\r\n searchCompany: '',\r\n salesList: [],\r\n companyList: [],\r\n selectedSales: null, // sales object\r\n isEditing: false, // Flag for displaying edit mode\r\n isCreating: false, // Flag for displaying create mode\r\n newSales: {},\r\n delegateFormData: {\r\n delegateeId: '',\r\n start: '',\r\n end: '',\r\n },\r\n pagination: {\r\n rowPerPage: 10,\r\n totalPages: 1,\r\n currentPage: 1,\r\n totalEntries: 0,\r\n },\r\n showMobileDetail: false,\r\n\r\n init: function () {\r\n $('.js-example-placeholder-single').select2({\r\n debug: true,\r\n placeholder: \"Delegate\",\r\n }).on('select2:select', (event) => {\r\n this.delegateFormData.delegateeId = parseInt((event.target as HTMLInputElement).value);\r\n });\r\n flatpickr(document.getElementById('startDate') as HTMLElement, {\r\n maxDate: this.delegateFormData.end,\r\n onOpen: (_selectedDates, _dateStr, instance) => {\r\n if (this.delegateFormData.end) {\r\n instance.config.maxDate = this.delegateFormData.end as any;\r\n instance.config.defaultDate = this.delegateFormData.end as any;\r\n }\r\n },\r\n onChange: (selectedDates, _dateStr, _instance) => {\r\n if (selectedDates !== null && !this.delegateFormData.end) {\r\n document.getElementById('endDate')!._flatpickr.setDate(selectedDates);\r\n }\r\n }\r\n });\r\n flatpickr(document.getElementById('endDate') as HTMLElement, {\r\n onOpen: (_selectedDates, _dateStr, instance) => {\r\n if (this.delegateFormData.start) {\r\n instance.config.minDate = this.delegateFormData.start as any;\r\n instance.config.defaultDate = this.delegateFormData.start as any;\r\n }\r\n },\r\n onChange: (selectedDates, _dateStr, _instance) => {\r\n if (selectedDates !== null && !this.delegateFormData.start) {\r\n document.getElementById('startDate')!._flatpickr.setDate(selectedDates);\r\n }\r\n }\r\n });\r\n this.$watch!('selectedSales', (value) => {\r\n if (value) {\r\n this.fetchCompanyList();\r\n }\r\n })\r\n this.fetchSalesList();\r\n },\r\n\r\n // Initial method for calling sales\r\n fetchSalesList: async function fetchSales() {\r\n try {\r\n const res = await axiosInstance.get('/salespersons', {\r\n params: {\r\n page: this.pagination.currentPage,\r\n per_page: this.pagination.rowPerPage,\r\n },\r\n withCredentials: true,\r\n headers: {\r\n Accept: 'application/json',\r\n },\r\n });\r\n if (res.status === 200) {\r\n this.salesList = res.data.map((d: any) => d as SalesPerson);\r\n this.selectedSales = (res.data[0] as SalesPerson);\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n },\r\n\r\n fetchCompanyList: function fetchCompanyList() {\r\n const that = this;\r\n if (this.selectedSales !== null) {\r\n axiosInstance.get(`/salespersons/${this.selectedSales.id}/assignments`, {\r\n withCredentials: true,\r\n headers: {\r\n Accept: 'application/json',\r\n },\r\n }).then(function (res) {\r\n if (res.status === 200 && res.data) {\r\n that.companyList = res.data?.map((d: any) => d as Company);\r\n }\r\n }).catch(function (e: any) {\r\n alert(e.message);\r\n }).finally(function () {\r\n that.fetchLoading = false;\r\n })\r\n }\r\n },\r\n\r\n onSelectSales: function (sales) {\r\n this.selectedSales = sales;\r\n this.showMobileDetail = true;\r\n },\r\n\r\n filterSalesList: function () {\r\n return this.salesList.filter((sales) => {\r\n return sales.name.search(this.searchSales) > -1 ? sales : null;\r\n })\r\n },\r\n\r\n filterCompanyList: function () {\r\n var _filteredList = this.companyList.filter((company) => {\r\n return company?.company?.toLowerCase().search(this.searchCompany.toLowerCase()) > -1 || company?.accountNo?.search(this.searchCompany) > -1 ? company : null;\r\n });\r\n var _paginator = paginator(_filteredList, this.pagination.currentPage, this.pagination.rowPerPage);\r\n\r\n this.pagination.totalPages = _paginator.totalPages;\r\n return _paginator.data;\r\n },\r\n\r\n toggleEdit: function (type) {\r\n if (type === \"create\") {\r\n this.isEditing = !this.isEditing;\r\n this.isCreating = !this.isCreating;\r\n this.newSales.id = null;\r\n this.newSales.firstname = null;\r\n this.newSales.lastname = null;\r\n this.newSales.name = null;\r\n this.newSales.email = null;\r\n this.newSales.phone = null;\r\n this.newSales.status = null;\r\n } else {\r\n // Initial new object\r\n this.newSales = { ...this.selectedSales }\r\n this.isEditing = !this.isEditing;\r\n }\r\n },\r\n\r\n createSales: function () {\r\n var that = this;\r\n this.newSales.status = 'ACTIVE';\r\n axiosInstance.post('/salespersons', this.newSales, { withCredentials: true }).then(function (res) {\r\n if (res && res.status === 200) {\r\n that.fetchSalesList().then(o => {\r\n alert('Created');\r\n var selected = that.salesList.filter(v => v.id == res.data.id)[0];\r\n console.log('selected', selected);\r\n that.onSelectSales(selected);\r\n });\r\n that.isCreating = false;\r\n that.isEditing = false;\r\n that.newSales = {};\r\n }\r\n }).catch(function (error) {\r\n if (error.response && !document[\"popupErrors\"](getConvertedErrors(error.response.data))) {\r\n alert(error);\r\n }\r\n });\r\n },\r\n\r\n updateSales: function () {\r\n axiosInstance.put('/salespersons/' + this.selectedSales!.id, this.newSales, { withCredentials: true }).then((res) => {\r\n if (res && res.status === 200) {\r\n // Deep copy\r\n this.selectedSales = JSON.parse(JSON.stringify(this.newSales));\r\n this.isEditing = false;\r\n this.newSales = {};\r\n }\r\n }).catch((_error) => {\r\n if (_error.response && !document[\"popupErrors\"](getConvertedErrors(_error.response.data))) {\r\n alert(_error);\r\n }\r\n });\r\n },\r\n\r\n delegateList: function () {\r\n return this.salesList.filter((sales) => {\r\n return sales.id !== this.selectedSales!.id\r\n })\r\n },\r\n\r\n createDelegate: function () {\r\n axiosInstance.post('salespersons/' + this.selectedSales!.id + '/delegatorships', this.delegateFormData, { withCredentials: true })\r\n .catch((error) => {\r\n if (error.response && !document[\"popupErrors\"](getConvertedErrors(error.response.data))) {\r\n alert(error);\r\n }\r\n }).finally(() => {\r\n this.handleDelegateClick();\r\n });\r\n },\r\n\r\n handleDelegateClick: function () {\r\n this.openDelegateModal = !this.openDelegateModal;\r\n $('.js-example-placeholder-single').val(-1).trigger('change');\r\n this.delegateFormData = {\r\n delegateeId: '',\r\n start: '',\r\n end: '',\r\n };\r\n },\r\n\r\n handleOnPageChange: function (page) {\r\n this.pagination.currentPage = page;\r\n },\r\n\r\n getNumberOfPage: function () {\r\n return this.pagination.totalPages > 3 ? new Array(4).fill('') : new Array(this.pagination.totalPages).fill('');\r\n },\r\n\r\n handleStatusClick: function (status) {\r\n this.newSales.status = status;\r\n },\r\n\r\n handleCancelClick: function () {\r\n this.isEditing = false;\r\n this.isCreating = false;\r\n },\r\n\r\n handleSalesExport: function () {\r\n axiosInstance.get('salespersons', {\r\n responseType: 'blob',\r\n withCredentials: true, headers: {\r\n \"Content-type\": \"application/vnd.ms-excel\",\r\n Accept: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'\r\n }\r\n }).then((res) => {\r\n if (res.status === 200) {\r\n downloadResponse(res);\r\n }\r\n })\r\n },\r\n\r\n handleSalesImport: function () {\r\n const that = this;\r\n const fileInput = document.getElementById('fileid') as HTMLInputElement;\r\n const upload = function () {\r\n axiosInstance.put('salespersons', fileInput.files![0], {\r\n headers: {\r\n 'Content-Type': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\r\n }\r\n }).then((res) => {\r\n if (res.status === 200) {\r\n document[\"popupMessage\"](i18next.t('z0328importSuccess'));\r\n that.fetchSalesList();\r\n }\r\n }).catch((error) => {\r\n if (error.response && !document[\"popupErrors\"](getConvertedErrors(error.response.data))) {\r\n alert(error);\r\n }\r\n }).finally(() => {\r\n fileInput!.removeEventListener('change', upload);\r\n $(fileInput).val('');\r\n });\r\n };\r\n\r\n fileInput.click();\r\n fileInput!.addEventListener('change', upload);\r\n },\r\n\r\n handleExportDefaultAssignments: function () {\r\n axiosInstance.get('salespersons/assignments', {\r\n responseType: 'blob',\r\n withCredentials: true, headers: {\r\n \"Content-type\": \"application/vnd.ms-excel\",\r\n Accept: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'\r\n }\r\n }).then((res) => {\r\n if (res.status === 200) {\r\n downloadResponse(res);\r\n }\r\n })\r\n },\r\n\r\n handleCompanyAssignmentExport: function () {\r\n axiosInstance.get('salespersons/' + this.selectedSales!.id + '/assignments', {\r\n responseType: 'blob',\r\n withCredentials: true, headers: {\r\n \"Content-type\": \"application/vnd.ms-excel\",\r\n Accept: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'\r\n }\r\n }).then((res) => {\r\n if (res.status === 200) {\r\n downloadResponse(res);\r\n }\r\n })\r\n },\r\n\r\n handleCompanyAssignmentImport: function () {\r\n const that = this;\r\n const fileInput = document.getElementById('fileid') as HTMLInputElement;\r\n const upload = function () {\r\n axiosInstance.put('salespersons/' + that.selectedSales!.id + '/assignments', fileInput.files![0], {\r\n headers: {\r\n 'Content-Type': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\r\n }\r\n }).then((res) => {\r\n if (res.status === 200) {\r\n document[\"popupMessage\"](i18next.t('z0328importSuccess'));\r\n that.fetchCompanyList();\r\n }\r\n }).catch((error) => {\r\n if (error.response && !document[\"popupErrors\"](getConvertedErrors(error.response.data))) {\r\n alert(error);\r\n }\r\n }).finally(() => {\r\n fileInput!.removeEventListener('change', upload);\r\n $(fileInput).val('');\r\n });\r\n };\r\n\r\n fileInput.click();\r\n fileInput!.addEventListener('change', upload);\r\n },\r\n\r\n toggleShowMobileDetail() {\r\n this.showMobileDetail = !this.showMobileDetail;\r\n this.isCreating = false;\r\n this.isEditing = false;\r\n }\r\n }\r\n}\r\n","const SignUpView = (): ISignUpView => {\r\n return {\r\n loading: false,\r\n formData: {\r\n firstname: '',\r\n lastname: '',\r\n email: '',\r\n company: ''\r\n },\r\n errorMessage: '',\r\n submitForm: function () {\r\n this.loading = true;\r\n if (this.formData.email && this.formData.firstname && this.formData.lastname) {\r\n var that = this;\r\n axiosInstance.post('/customers', this.formData, {\r\n withCredentials: true\r\n }).then((res) => {\r\n if (res.status === 200) {\r\n // When it get 200, we redirect user to Password Reset\r\n window.location.href = '/auth/password';\r\n }\r\n }).catch((e) => {\r\n that.errorMessage = e.message;\r\n });\r\n }\r\n this.loading = false;\r\n },\r\n };\r\n};"]}