{"version":3,"sources":["serviceWorker.js","components/layout/footer.js","components/layout/loading.js","constants.js","components/layout/userInfo.js","util/CallApi.js","store/project/projectAction.js","store/login/loginAction.js","store/orders/ordersAction.js","components/layout/header.js","store/products/productsAction.js","store/banners/bannersAction.js","store/brands/brandsAction.js","components/index/banner.js","components/index/brand.js","store/alertbox/alertboxAction.js","components/index/products.js","components/outtime/outtime.js","components/outtime/notfound.js","components/index/index-page.js","store/register/customerAction.js","store/query/queryAction.js","components/register/RegisterHeader.js","components/register/RegisterTextField.js","components/register/RegisterSelectField.js","components/register/RegisterDateField.js","components/register/RegisterModal.js","components/register/RegisterFooter.js","store/register/addressAction.js","components/register/RegisterForm.js","components/register/register-page.js","store/address/addressAction.js","components/cart/modal.js","components/cart/detail-modal.js","global-configs.js","components/cart/order-modal.js","components/cart/cart-page.js","components/index/projectname.js","components/login/login-callback.js","components/layout/alertbox.js","store/brands/brandsReducer.js","store/products/productsReducer.js","store/orders/ordersReducer.js","store/project/projectReducer.js","store/query/queryReducer.js","store/banners/bannersReducer.js","store/register/customerReducer.js","store/register/addressReducer.js","store/login/loginReducer.js","store/alertbox/alertboxReducer.js","store/index.js","locale/th.js","locale/en.js","App.js","index.js"],"names":["Boolean","window","location","hostname","match","footer","className","Component","loading","state","next","products","orders","brands","customer","document","body","classList","add","this","setState","remove","tabIndex","style","position","zIndex","display","role","paddingTop","connect","isFetching","config","appkey","baseUrl","apiUrl","apiUrlS","generateUrl","generateUrlNew","utilsAddress","uploadFileUrl","trueidUrl","trueIdDomainPROD","trueidGetTokenUrl","loginRedirectUri","logoutUri","imagePath","mediaPath","msg","locale","require","I18n","UserInfo","logout","localStorage","removeItem","cookie","props","logoutUrl","loginName","type","id","data-toggle","aria-haspopup","aria-expanded","aria-labelledby","to","t","onClick","href","alt","l","i18n","jwt","moment","CallApi","a","axios","post","resp","data","property","refresh_token","getItem","formBody","encodedKey","encodeURIComponent","encodedValue","push","join","fetch","method","mode","cache","headers","redirect","referrer","JSON","stringify","then","response","json","result","access_token","expires_at","expires_in","format","getProfileBody","ssoid","decode","sub","token","Accept","profile","parseInt","code","setItem","login_account","console","error","catch","error2","url","call_url","log","isSameOrAfter","refreshToken","jwtToken","Authorization","res","callApi","cipher","fpe","password","fetchProject","params","dispatch","postWithOutToken","resData","project_encrypt","encrypt","project_id","payload","fetchOrders","postSecurity","customer_id","toggleDocModal","toggleDetailModal","orderApprove","param","patchSecurity","header","handleRegisterCustomer","customerID","chkLogin","chkRegister","registerCustomer","project","login_name","display_name","user","tel","trueid","mobile","email","openModal","loginCustomer","closeModal","handleChangLanguage","setLang","HomePage","openHamberger","e","navMobile","getElementsByClassName","chkHaveOpen","forEach","element","encodeURI","runFirst","modalIsOpen","projectId","decrypt","paramsApi","user_login","userData","project_status","redirectLoginUri","loginUrl","redirectLogoutUri","src","name","value","defaultChecked","htmlFor","disabled","aria-hidden","undefined","aria-controls","Modal","isOpen","onRequestClose","textAlign","top","contentLabel","ModalBody","Spinner","color","UserCart","length","Userlogin","rel","info","login","items","values","setLocale","fetchProducts","fetchBanners","get","fetchBrands","banner","openUrlLink","url_link","open","data-ride","banners","map","index","key","data-target","data-slide-to","bucket_type","toLowerCase","image_name","cursor","data-slide","Brand","onChange","keys","checkbox","i","item","checked","filterProducts","val","brand","projectID","brandList","toggleAlert","message","reload","isReload","numeral","Products","addCart","clickOrder","matId","device_id","preventDefault","id_card","order_status","quota","addCartItem","product_id","product","device_model","model_image","description","matcode","mat","price","payment_type_id","fontSize","outtime","width","project_name","notfound","children","IndexPage","pageNotfound","projectNotfound","hasOwnProperty","projectStatus","fetchCustomer","RegisterHeader","onEdit","defaultProps","status","input","label","star","maxLength","meta","touched","warning","options","RegisterModal","show","title","subTitle","detail","showCancel","centered","onCancel","onOK","RegisterFooter","modalShow","handleModalClose","custTermCondTitle","custTermCondSubTitle","custTermCond","fetchProvinces","fetchDistricts","fetchSubDistricts","fetchZipCodes","RegisterForm","firsttime","provinceId","provinceName","provinceKey","districtId","districtName","districtKey","districtHtml","subDistrictId","subDistrictName","subDistrictKey","getTitleVal","word","titles","find","title_th","getProvinceId","provinces","city","findIndex","province","getDistrictId","districts","amphur","district","provinceID","getSubDistrictId","subDistricts","tumbon","subDistrict","districtID","getDistrict","filter","getSubDistrict","getZipcode","zipcodes","zipcode","subDistrictID","onIdCardExpireChange","target","change","onBirthDateChange","onJobChange","selectedIndex","getAttribute","onProvinceChange","onDistrictChange","onSubDistrictChange","openModel","initialDatepicker","nextProps","initialValues","address","address_company","address_id","address_name","unshift","address_delivery","titleItems","provinceItems","districtItems","subDistrictItems","zipcodeItems","listJob","listJobItems","job","job_code","job_name","onCustomerSubmit","handleSubmit","submitting","invalid","onSubmit","Field","component","RegisterTextField","validate","required","idPhone","RegisterSelectField","idCard","RegisterDateField","zero","defalutValue","zip","test","reduxForm","form","enableReinitialize","onSubmitSuccess","success","onShowSubmitModal","onSubmitFail","errors","delivery","company","zipCodes","registerPage","modalSubmit","modalOrder","submit","isFirstTime","handleEdit","showOrderModal","enableEdit","checkMode","showSubmitModal","handleOrderModal","visible","updateOrdersEditCustomer","handleSubmitModal","fetchTitles","fetchAddressProject","fetchAddressCompany","formValues","updateCustomer","register","modal","toggle","prevState","text","data-dismiss","DetailModal","normalMode","msisdnList","msisdnSelect","msisdnValiCode","msisdnValiDate","msisdnValiMsg","detailModal","addressDelively","addressBill","IRModal","existNumModal","provinceBillId","districtBillId","subDistrictBillId","msisdnData","orderDetail","msisdn_type","msisdn","ir_flag","address_type","building_name","floors","moo","houseno","room_no","soi","streetname","address_bill","provinceDeliveryId","districtDeliveryId","subDistrictDeliveryId","checkMsisdn","componentDidMount","fetchProjectAddrLabel","toggleIRBox","toggleExistNumber","changeAddressType","addrType","addressDetail","selectMsisdn","districtsData","subDistrictsData","zipcodesData","provinceType","charAt","toUpperCase","slice","districtType","subDistrictType","handleMChange","handleOrderChange","handleInputAddrChange","chkStatusDisable","order","checkedBoxIrFlag","onVerifyMsisdn","order_id","alert","validateOrderDetail","passValidate","msisdnEmpty","v","clickChooseMsisdn","loadMsisdn","thisComp","x","blackToNormal","sentMarkMsisdn","sentParam","handleChangeInput","event","$state","addrTypeDelivery","addressLabel","address_type_id","addrTypeBill","projectAddrData","emptyAddress","orderData","order_detail","updateDetail","msisdn_selected","provincesData","sdistrict","billaddress_type_id","projectData","addr","size","isDetailModalOpen","maxWidth","aria-label","customerData","addr_type","address_type_desc","number_type_id","nbt","marginRight","padding","fontWeight","marginLeft","marginTop","placeholder","flag_ir","txt_ir_msg","txt_mnp_msg","clear","float","m","cn","margin","backgroundColor","ThaiIDAddr","firstname","lastname","OfficeAddr","CustomAddr","err_type","typeaddr","defaultValue","address_label","PropTypes","func","isRequired","fetchProjectMsisdn","globalConstants","OrderModal","toggleTermInput","acceptTermInput","togglePDFModal","chkError","cssSpinner","thePdfUrl","thePdfId","docSets","mainDocId","indexOf","blob","objectURL","URL","createObjectURL","pdfBlob","rawBlob","openAlertModal","pdfModal","setTimeout","getElementById","parentElement","togglePreviewModal","previewModal","uploadBlobFile","cssSpinnerSubmit","fd","FormData","append","document_all","doc_type_id","docSetFound","docCode","docId","uploadUrlFull","cdc_filetype_code","customer_id_card","key_id","file_id","doc_id","doc_code","updateDoc","onCloseModal","acceptTerm","onCancelModal","getterForm","addToken","xhr","setRequestHeader","progressBar","progress","hasError","cancelHandler","barStyle","marginBottom","onSubmitFile","responseText","parse","fileName","file_name","sendingData","myHeaders","Headers","raw","requestOptions","updatedoc","idx","onChangeFile","substring","lastIndexOf","finalBtn","documentItems","document_items","d","req","customForm","docFound","class","previewFile","typeid","accept","files","maxMB","getFILE","getFile","getFileNew","file_type","split","previewUrl","previewStartFile","toggleAlertModal","alertModal","alertMsg","doc_structures","document_detail","closeBtn","isDocModalOpen","scrollable","autoFocus","ModalHeader","close","cdcFiletypeCode","onLoad","request","onError","errorMessage","formGetter","formRenderer","progressRenderer","bind","beforeSend","ModalFooter","dialogClassName","bsclassName","fullscreen","minWidth","minHeight","err","cartPage","updateDocUi","docItems","orderItems","orderModal","txt_how_to","orderIdx","deleteOrders","orderId","fetchCustomerFirst","fetchProjectAddrFirst","fetchOrdersFirst","fetchAddress","fetchProjectAddr","fetchAddressDelivery","orderItem","product_detail","model_img","model_name","model_desc","address_delivery_type","msisdn_display","data-label","price_vat","flag_show","price_total","orderStatus","address_bill_type","docItem","doc","theLiStyle","paddingBottom","textDecoration","listStyle","borderBottom","scope","projectAddr","customerProfile","orderDetailData","deleteSecurity","projectname","loginCallback","parsed","queryString","search","details","Alertbox","isAlertOn","dangerouslySetInnerHTML","__html","alertbox","initialState","allItems","updated","translationsObject","th","trueIdrec","brandLabel","bathMonth","payVat","orderPrduct","conditionPrice","dataProfile","editProdile","approve","waitconfirm","reject","waitSend","send","waitapprove","pending","deleteOrder","pricePermonth","priceVat","contact","allPrice","allContact","addrDelivery","number","IRservice","editOrder","orderProduct","cart","backToHome","howToOrder","orderList","confirmOrder","addrBill","telNumberService","newNumber","existNumber","verifyNumber","validateRequire","validateCheck","verify","IR","IDD","ok","cancel","save","validateProfile","validateQuota","formEmail","formTel","formPosition","formCompany","formAddress_delivery","formTitle","formFName","formLName","formIDCard","formexpireIDCard","formDOB","formAddrIDCard","formBuilding","formFloors","formMoo","formSoi","formStreet","formProvince","formAmpur","formTumbon","formZip","formSelAddress_company","formSelAddress_delivery","formSelTitle","formSelProvince","formSelAmpur","formSelTumbon","formSelZip","edit","editExpire","orderExpire","agreeProfile","clickToAgree","detaiHere","beforeEdit","en","reducers","combineReducers","action","includes","obj","temp_items","temp_order_items","reduxFormReducer","i18nReducer","middleware","thunk","enhancer","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","compose","applyMiddleware","store","createStore","syncTranslationWithStore","loadTranslations","App","path","PrivateRoute","rest","render","pathname","from","GeneralRoute","basename","process","exact","Register","Cart","Outtime","LoginCallback","ReactDOM","navigator","serviceWorker","ready","registration","unregister"],"mappings":"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","file":"static/js/main.2c05429a.chunk.js","sourcesContent":["// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.1/8 is considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl)\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister();\n });\n }\n}\n","import React, { Component } from \"react\";\n\nexport default class footer extends Component {\n render() {\n return (\n \n );\n }\n}\n","import React, { Component } from \"react\";\nimport { connect } from \"react-redux\";\nimport PropTypes from \"prop-types\";\n\nclass loading extends Component {\n state = {\n loading: false\n };\n componentWillReceiveProps(next) {\n if (!next.products && !next.orders && !next.brands && !next.customer) {\n document.body.classList.remove(\"modal-open\");\n this.setState({ loading: false });\n } else {\n document.body.classList.add(\"modal-open\");\n this.setState({ loading: true });\n }\n }\n\n render() {\n return (\n <>\n {!this.state.loading ? (\n \"\"\n ) : (\n \n
\n \n
\n \n \n Loading...\n
\n
\n \n \n
\n
\n \n )}\n \n );\n }\n}\n\nloading.propTypes = {\n isFetching: PropTypes.bool\n};\n\nconst mapStateToProps = state => ({\n products: state.products.isFetching,\n orders: state.orders.isFetching,\n brands: state.brands.isFetching,\n customer: state.customer.isFetching\n});\n\nexport default connect(\n mapStateToProps,\n {}\n)(loading);\n","const trueIdClientId = 3520;\nconst statId = 11111;\n\nconst trueIdDomainDEV = 'https://accounts.trueid-preprod.net/';\nconst trueIdDomainPROD = 'https://accounts.trueid.net/';\n\nconst config_dev = {\n appkey: \"wp0sh0p1ng\",\n\n baseUrl: \"https://wpos-dev.truecorp.co.th/cust/web\",\n // baseUrl: \"http://localhost:3000\",\n\n apiUrl: \"https://wpos-dev.truecorp.co.th/cust/api\",\n apiUrlS: \"https://wpos-dev.truecorp.co.th/cust/api\",\n // apiUrl: \"http://localhost:4000\",\n // apiUrlS: \"http://localhost:4000\",\n\n generateUrl: \"https://wpos-dev.truecorp.co.th/gen/cont/getpdf\",\n\n generateUrlNew: \"https://wpos-dev.truecorp.co.th/cust/api/project/getpdf\",\n utilsAddress: \"https://mvpapi-dev.truecorp.co.th/mpf/utils/address-service\",\n\n //uploadFileUrl: \"http://172.19.218.110/upload/\",\n // uploadFileUrl: \"https://mvpapigw-dev.true.th/ccm-wpo\",\n uploadFileUrl: \"https://wpos-dev.truecorp.co.th/cust/api\",\n\n trueidUrl:trueIdDomainDEV+\"signin?client_id=\"+trueIdClientId+\"&response_type=code&state=\"+statId,\n trueidGetTokenUrl: \"https://sdk-auth.trueid-dev.net/v4/oauth2/token\",\n loginRedirectUri: \"https://wpos-dev.truecorp.co.th/cust/web/callback?\",\n logoutUri:trueIdDomainDEV+\"signout?client_id=\"+trueIdClientId+\"&return_to=\",\n imagePath: \"https://wpos-dev.truecorp.co.th/cust/api/project/banner/show/\",\n mediaPath: \"https://wpos-dev.truecorp.co.th/cust/api/media/\"\n};\n\nconst config_uat = {\n appkey: \"wp0sh0p1ng\",\n\n baseUrl: \"https://wpos-uat.truecorp.co.th/cust/web\",\n // baseUrl: \"http://localhost:3000\",\n\n apiUrl: \"https://wpos-uat.truecorp.co.th/cust/api\",\n apiUrlS: \"https://wpos-uat.truecorp.co.th/cust/api\",\n // apiUrl: \"http://localhost:4000\",\n // apiUrlS: \"http://localhost:4000\",\n\n generateUrl: \"https://wpos-uat.truecorp.co.th/gen/cont/getpdf\",\n\n generateUrlNew: \"https://wpos-uat.truecorp.co.th/cust/api/project/getpdf\",\n utilsAddress: \"https://mvpapi-dev.truecorp.co.th/mpf/utils/address-service\",\n\n //uploadFileUrl: \"http://172.19.218.110/upload/\",\n // uploadFileUrl: \"https://mvpapigw-dev.true.th/ccm-wpo\",\n uploadFileUrl: \"https://wpos-uat.truecorp.co.th/cust/api\",\n\n trueidUrl:trueIdDomainDEV+\"signin?client_id=\"+trueIdClientId+\"&response_type=code&state=\"+statId,\n trueidGetTokenUrl: \"https://sdk-auth.trueid-dev.net/v4/oauth2/token\",\n loginRedirectUri: \"https://wpos-uat.truecorp.co.th/cust/web/callback?\",\n logoutUri:trueIdDomainDEV+\"signout?client_id=\"+trueIdClientId+\"&return_to=\",\n imagePath: \"https://wpos-uat.truecorp.co.th/cust/api/project/banner/show/\",\n mediaPath: \"https://wpos-uat.truecorp.co.th/cust/api/media/\"\n};\n\nconst config_prod = {\n appkey: \"wp0sh0p1ng\",\n\n baseUrl: \"https://wpos.truecorp.co.th/cust/web\",\n\n apiUrl: \"https://wpos.truecorp.co.th/cust/api\",\n apiUrlS: \"https://wpos.truecorp.co.th/cust/api\",\n\n generateUrl: \"https://wpos.truecorp.co.th/gen/cont/getpdf\",\n\n generateUrlNew: \"https://wpos.truecorp.co.th/cust/api/project/getpdf\",\n utilsAddress: \"https://mvpapi.truecorp.co.th/mpf/utils/address-service\",\n\n\n // uploadFileUrl: \"https://mvpapi.truecorp.co.th/ccm-wpo\",\n uploadFileUrl: \"https://wpos.truecorp.co.th/cust/api\",\n\n trueidUrl:trueIdDomainPROD+\"signin?client_id=\"+trueIdClientId+\"&response_type=code&state=\"+statId,\n trueidGetTokenUrl: \"https://sdk-auth.trueid.net/v4/oauth2/token\",\n loginRedirectUri: \"https://wpos.truecorp.co.th/cust/web/callback?\",\n logoutUri:trueIdDomainPROD+\"signout?client_id=\"+trueIdClientId+\"&return_to=\",\n imagePath: \"https://wpos.truecorp.co.th/cust/api/project/banner/show/\",\n mediaPath: \"https://wpos.truecorp.co.th/cust/api/media/\"\n};\n\nlet theConfigEnv = config_uat;\n\nif (typeof process.env.REACT_APP_ENV !== 'undefined' && process.env.REACT_APP_ENV === 'prod') {\n theConfigEnv = config_prod;\n} else if (typeof process.env.REACT_APP_ENV !== 'undefined' && process.env.REACT_APP_ENV === 'uat') {\n theConfigEnv = config_uat;\n} else if (typeof process.env.REACT_APP_ENV !== 'undefined' && process.env.REACT_APP_ENV === 'dev') {\n theConfigEnv = config_dev;\n}\n\n// console.log('-----------------------theConfigEnv cust web------------------------');\n// console.log(process.env);\n// console.log('-----------------------------------------------------------');\n// console.log(theConfigEnv);\n// console.log('-----------------------------------------------------------');\n\nexport const config = theConfigEnv;\n\n// export const config = process.env.REACT_APP_ENV === 'prod' ? config_prod : config_dev;\n\nexport const msg = {\n register: \"ระบบกําลังดําเนินการ กรุณารอสักครู่ ...\",\n howtobuy: \"กดสั่งจองสินค้า\",\n custRequireFiled: \"กรุณาใส่ข้อมูลส่วนตัวให้ครบถ้วน\",\n custInvalidIdCard: \"กรุณาใส่เลขบัตรประชาชนให้ครบ 13 หลัก\",\n custTermCondTitle: \"เงื่อนไขการให้บริการ\",\n custTermCondSubTitle: \"หนังสือให้ความยินยอมในการจัดเก็บ และ เปิดเผยข้อมูล\",\n custTermCond:\n \"ข้อตกลงในการให้ความยินยอมเพื่อการเก็บรวบรวม ใช้ หรือเปิดเผยข้อมูลส่วนบุคคล ข้าพเจ้ายินยอมให้เก็บรวบรวม ใช้ หรือเปิดเผย ข้อมูลส่วนบุคคล รวมถึงข้อมูลการใช้บริการ หรือข้อมูลใด ๆ ที่บริษัทหรือตัวแทนได้รับหรือเก็บรวบรวมผ่านการใช้บริการที่ได้สมัครไว้ภายในระยะเวลาการใช้สิทธิเรียกร้องตามกฎหมายของคู่สัญญา โดยการเก็บรวบรวม ใช้ หรือเปิดเผยเป็นไปเพื่อวัตถุประสงค์ในการให้บริการตามสัญญา ปรับปรุงการบริการให้มีประสิทธิภาพ หรือเพื่อการเสนอหรือให้สิทธิประโยชน์แก่ผู้ใช้บริการ หรือเพื่อวัตถุประสงค์ในการวิจัยตลาดและการส่งเสริมการขาย หรือเพื่อการพัฒนาเครือข่าย หรือเพื่อการพัฒนาปรับปรุงบริการ หรือเพื่ออำนวยความสะดวกในการแจ้งหรือการชำระค่าบริการ หรือเพื่อวิเคราะห์และนำเสนอบริการ หรือเพื่อความปลอดภัยหรือระงับอันตรายต่อชีวิต ร่างกาย หรือสุขภาพอนามัยของบุคคล รวมตลอดถึงเพื่อวัตถุประสงค์ของการปฏิบัติตามกฎหมาย และ/หรือมีเหตุจำเป็นอื่นใดตามที่เห็นสมควร โดยข้าพเจ้ายินยอมให้บริษัทเปิดเผยข้อมูลส่วนบุคคล ข้อมูลการใช้บริการหรือข้อมูลใด ๆ ดังกล่าวข้างต้นให้แก่บริษัทในเครือ เครือกิจการ เครือธุรกิจ รวมถึงนิติบุคคลหรือบุคคลอื่นใดที่บริษัทและ/หรือเจ้าของข้อมูลเป็นคู่สัญญาหรือมีนิติสัมพันธ์ตามกฎหมาย\",\n custEditProfile: \"ระบบจะทำการยกเลิกการจองที่ยังไม่อนุมัติทั้งหมด\",\n custErrExistMsisdn:\n \"หมายเลขนี้ไม่ผ่านเงื่อนไขของโครงการ กรุณาระบุหมายเลขใหม่\",\n custSuccessExistMsisdn: \"ผ่านการตรวจสอบ\",\n errMessage: \"ระบบไม่สามารถทำรายการได้ในขณะนี้ กรุณาลองใหม่ภายหลังค่ะ\",\n custSuccessUpdate: \"บันทึกข้อมูลเสร็จเรียบร้อย\",\n custCancelOrder: `ระบบจะทำการยกเลิกการจองที่ยังไม่อนุมัติทั้งหมด`,\n docOrderApprove: `บริษัทจะยึดความถูกต้องของข้อมูลตามเอกสารที่มีการเซ็นกํากับ และถูกส่งมายังหน่วยงานต้นสังกัดของท่านเท่านั้น กรณีมีการแก้ไขใดๆ ผู้ใช้งานจะต้องทําการพิมพ์เอกสารและเซ็นกํากับ ส่งกลับมาใหม่ ภายในระยะเวลาที่กําหนด`,\n HeaderDocOrderApprove: `ระบบบันทึกข้อมูลเรียบร้อยแล้ว !`,\n docUploadTypeFail: `กรุณาตรวจสอบประเภทไฟล์ข้อมูลและขนาดต้องไม่เกิน 2 MB.`\n};","import React, { Component } from \"react\";\nimport { connect } from \"react-redux\";\nimport { Link } from \"react-router-dom\";\nconst locale = require(\"react-redux-i18n\").I18n;\nclass UserInfo extends Component {\n // constructor(props) {\n // super(props);\n // }\n\n logout = () => {\n localStorage.removeItem(\"access_token\");\n localStorage.removeItem(\"expires_in\");\n localStorage.removeItem(\"refresh_token\");\n localStorage.removeItem(\"user_login\");\n document.cookie = 'utk=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;';\n window.location = this.props.logoutUrl;\n return false;\n };\n\n render() {\n // const userData = this.props.userData;\n const loginName = this.props.loginName;\n if (loginName) {\n return (\n
\n
\n \n {loginName}\n \n
\n
\n {locale.t(\"dataProfile\")}\n
\n \n {locale.t(\"logout\")}\n \n
\n
\n
\n );\n }\n return null;\n }\n}\nconst mapStateToProps = state => ({\n l: state.i18n.locale\n});\nexport default connect(\n mapStateToProps,\n null\n)(UserInfo);\n","//import axios from \"axios\";\n//import { httpClient } from \"./HttpClient\";\nimport { config } from \"../constants\";\nimport axios from 'axios';\n\nconst jwt = require(\"jsonwebtoken\");\nconst moment = require(\"moment\");\n\nclass CallApi {\n\n async setSysToken() {\n let resp = await axios.post(config.apiUrl + \"/login/gtkn\", {});\n // console.log(resp.data);\n return resp.data;\n }\n\n async refreshToken() {\n //const refresh_token = localStorage.getItem(\"refresh_token\");\n const data = {\n refresh_token: localStorage.getItem(\"refresh_token\")\n };\n var formBody = [];\n for (var property in data) {\n var encodedKey = encodeURIComponent(property);\n var encodedValue = encodeURIComponent(data[property]);\n formBody.push(encodedKey + \"=\" + encodedValue);\n }\n formBody = formBody.join(\"&\");\n\n return await fetch(config.apiUrl + \"/trueid/refreshtoken\", {\n method: \"POST\", // *GET, POST, PUT, DELETE, etc.\n mode: \"cors\", // no-cors, cors, *same-origin\n cache: \"no-cache\", // *default, no-cache, reload, force-cache, only-if-cached\n //credentials: \"same-origin\", // include, *same-origin, omit\n headers: {\n \"Content-Type\": \"application/json\",\n //\"Content-Type\": \"application/x-www-form-urlencoded\"\n // \"X-Custom-Header\": (localStorage.getItem(\"sys_token\") || '')\n },\n redirect: \"follow\", // manual, *follow, error\n referrer: \"no-referrer\", // no-referrer, *client\n body: JSON.stringify(data) // body data type must match \"Content-Type\" header\n })\n .then(response => response.json())\n .then(result => {\n // console.log(result);\n if (result.access_token) {\n const expires_at = moment().add(result.expires_in - 600, \"s\").format();\n // localStorage.setItem(\"access_token\", result.access_token);\n // localStorage.setItem(\"expires_in\", result.expires_in);\n // localStorage.setItem(\"refresh_token\", result.refresh_token);\n // localStorage.setItem(\"expires_at\", expires_at);\n\n const userData = jwt.decode(result.access_token);\n const getProfileBody = { ssoid: userData.sub, token: result.access_token };\n fetch(config.apiUrl + \"/trueid/profile\", {\n method: \"POST\",\n mode: \"cors\", // no-cors, cors, *same-origin\n cache: \"no-cache\",\n headers: {\n \"Access-Control-Allow-Origin\": \"*\",\n \"Access-Control-Allow-Headers\": \"Origin, X-Requested-With\",\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify(getProfileBody)\n })\n .then(response => response.json())\n .then(profile => {\n\n if (parseInt(profile.code) === 200) {\n\n localStorage.setItem(\"access_token\", result.access_token);\n localStorage.setItem(\"user_login\", profile.login_account);\n localStorage.setItem(\"expires_in\", result.expires_in);\n localStorage.setItem(\"refresh_token\", result.refresh_token);\n localStorage.setItem(\"expires_at\", expires_at);\n\n } else {\n console.error(\"Error 3 :\", profile);\n // localStorage.setItem(\"access_token\", result.access_token);\n localStorage.setItem(\"user_login\", '');\n // localStorage.setItem(\"expires_in\", result.expires_in);\n // localStorage.setItem(\"refresh_token\", result.refresh_token);\n // localStorage.setItem(\"expires_at\", expires_at);\n }\n })\n .catch(error2 => {\n console.error(\"Error 2 :\", error2);\n // localStorage.setItem(\"access_token\", result.access_token);\n localStorage.setItem(\"user_login\", '');\n // localStorage.setItem(\"expires_in\", result.expires_in);\n // localStorage.setItem(\"refresh_token\", result.refresh_token);\n // localStorage.setItem(\"expires_at\", expires_at);\n });\n } else {\n console.error(\"Error 4:\", result);\n }\n })\n .catch(error => {\n console.error(\"Error:\", error);\n // alert(msg.errMessage);\n });\n }\n\n async postWithOutToken(url, data = {}) {\n const call_url = config.apiUrl + url;\n console.log('CallApi>postWithOutToken ' + call_url);\n\n return fetch(call_url, {\n method: \"POST\", // *GET, POST, PUT, DELETE, etc.\n mode: \"cors\", // no-cors, cors, *same-origin\n cache: \"no-cache\", // *default, no-cache, reload, force-cache, only-if-cached\n //credentials: \"same-origin\", // include, *same-origin, omit\n headers: {\n \"Content-Type\": \"application/json\",\n // \"X-Custom-Header\": (localStorage.getItem(\"sys_token\") || '')\n },\n redirect: \"follow\", // manual, *follow, error\n referrer: \"no-referrer\", // no-referrer, *client\n body: JSON.stringify(data) // body data type must match \"Content-Type\" header\n })\n .then(response => response.json())\n .catch(error => console.error(\"Error:\", error)); // parses JSON response into native Javascript objects\n }\n\n async patch(url, data = {}) {\n console.log('CallApi>patch ' + url);\n const expires_at = localStorage.getItem(\"expires_at\");\n //console.log(moment().toString());\n if (moment().isSameOrAfter(expires_at)) {\n await this.refreshToken();\n }\n\n // var formBody = [];\n // for (var property in data) {\n // var encodedKey = encodeURIComponent(property);\n // var encodedValue = encodeURIComponent(data[property]);\n // formBody.push(encodedKey + \"=\" + encodedValue);\n // }\n // formBody = formBody.join(\"&\");\n //console.log(formBody);\n\n const call_url = config.apiUrl + url;\n //console.log(call_url);\n const jwtToken = localStorage.getItem(\"access_token\");\n return fetch(call_url, {\n method: \"PATCH\", // *GET, POST, PUT, DELETE, etc.\n mode: \"cors\", // no-cors, cors, *same-origin\n cache: \"no-cache\", // *default, no-cache, reload, force-cache, only-if-cached\n //credentials: \"same-origin\", // include, *same-origin, omit\n headers: {\n \"Content-Type\": \"application/json\",\n //\"Content-Type\": \"application/x-www-form-urlencoded\",\n Authorization: \"Bearer \" + jwtToken,\n // \"X-Custom-Header\": (localStorage.getItem(\"sys_token\") || '')\n },\n redirect: \"follow\", // manual, *follow, error\n referrer: \"no-referrer\", // no-referrer, *client\n body: JSON.stringify(data) // body data type must match \"Content-Type\" header\n })\n .then(response => response.json())\n .catch(error => console.error(\"Error:\", error)); // parses JSON response into native Javascript objects\n }\n\n async patchSecurity(url, data = {}) {\n console.log('CallApi>patchSecurity ' + url);\n const expires_at = localStorage.getItem(\"expires_at\");\n //console.log(moment().toString());\n if (moment().isSameOrAfter(expires_at)) {\n await this.refreshToken();\n }\n\n // var formBody = [];\n // for (var property in data) {\n // var encodedKey = encodeURIComponent(property);\n // var encodedValue = encodeURIComponent(data[property]);\n // formBody.push(encodedKey + \"=\" + encodedValue);\n // }\n // formBody = formBody.join(\"&\");\n //console.log(formBody);\n\n const call_url = config.apiUrlS + url;\n //console.log(call_url);\n const jwtToken = localStorage.getItem(\"access_token\");\n return fetch(call_url, {\n method: \"PATCH\", // *GET, POST, PUT, DELETE, etc.\n mode: \"cors\", // no-cors, cors, *same-origin\n cache: \"no-cache\", // *default, no-cache, reload, force-cache, only-if-cached\n //credentials: \"same-origin\", // include, *same-origin, omit\n headers: {\n \"Access-Control-Allow-Origin\": \"*\",\n \"Content-Type\": \"application/json\",\n //\"Content-Type\": \"application/x-www-form-urlencoded\",\n Authorization: \"Bearer \" + jwtToken,\n // \"X-Custom-Header\": (localStorage.getItem(\"sys_token\") || '')\n },\n redirect: \"follow\", // manual, *follow, error\n referrer: \"no-referrer\", // no-referrer, *client\n body: JSON.stringify(data) // body data type must match \"Content-Type\" header\n })\n .then(response => response.json())\n .catch(error => console.error(\"Error:\", error)); // parses JSON response into native Javascript objects\n }\n\n async postSecurity(url, data = {}) {\n console.log('CallApi>postSecurity ' + url);\n const expires_at = localStorage.getItem(\"expires_at\");\n //console.log(moment().toString());\n if (moment().isSameOrAfter(expires_at)) {\n await this.refreshToken();\n }\n\n var formBody = [];\n for (var property in data) {\n var encodedKey = encodeURIComponent(property);\n var encodedValue = encodeURIComponent(data[property]);\n formBody.push(encodedKey + \"=\" + encodedValue);\n }\n formBody = formBody.join(\"&\");\n //console.log(formBody);\n\n const call_url = config.apiUrlS + url;\n //console.log(call_url);\n const jwtToken = localStorage.getItem(\"access_token\");\n return fetch(call_url, {\n method: \"POST\", // *GET, POST, PUT, DELETE, etc.\n mode: \"cors\", // no-cors, cors, *same-origin\n cache: \"no-cache\", // *default, no-cache, reload, force-cache, only-if-cached\n //credentials: \"same-origin\", // include, *same-origin, omit\n headers: {\n \"Access-Control-Allow-Origin\": \"*\",\n \"Content-Type\": \"application/json\",\n //\"Content-Type\": \"application/x-www-form-urlencoded\",\n Authorization: \"Bearer \" + jwtToken,\n // \"X-Custom-Header\": (localStorage.getItem(\"sys_token\") || '')\n },\n redirect: \"follow\", // manual, *follow, error\n referrer: \"no-referrer\", // no-referrer, *client\n body: JSON.stringify(data) // body data type must match \"Content-Type\" header\n })\n .then(response => response.json())\n .catch(error => console.error(\"Error:\", error)); // parses JSON response into native Javascript objects\n }\n\n async post(url, data = {}) {\n console.log('CallApi>post ' + url);\n const expires_at = localStorage.getItem(\"expires_at\");\n\n if (moment().isSameOrAfter(expires_at)) {\n await this.refreshToken();\n }\n\n var formBody = [];\n for (var property in data) {\n var encodedKey = encodeURIComponent(property);\n var encodedValue = encodeURIComponent(data[property]);\n formBody.push(encodedKey + \"=\" + encodedValue);\n }\n formBody = formBody.join(\"&\");\n //console.log(formBody);\n\n const call_url = config.apiUrl + url;\n //console.log(call_url);\n const jwtToken = localStorage.getItem(\"access_token\");\n return fetch(call_url, {\n method: \"POST\", // *GET, POST, PUT, DELETE, etc.\n mode: \"cors\", // no-cors, cors, *same-origin\n cache: \"no-cache\", // *default, no-cache, reload, force-cache, only-if-cached\n //credentials: \"same-origin\", // include, *same-origin, omit\n headers: {\n \"Content-Type\": \"application/json\",\n //\"Content-Type\": \"application/x-www-form-urlencoded\",\n Authorization: \"Bearer \" + jwtToken,\n // \"X-Custom-Header\": (localStorage.getItem(\"sys_token\") || '')\n },\n redirect: \"follow\", // manual, *follow, error\n referrer: \"no-referrer\", // no-referrer, *client\n body: JSON.stringify(data) // body data type must match \"Content-Type\" header\n })\n .then(response => response.json())\n .catch(error => console.error(\"Error:\", error)); // parses JSON response into native Javascript objects\n }\n\n async get(url) {\n console.log('CallApi>get ' + url);\n const expires_at = localStorage.getItem(\"expires_at\");\n\n if (moment().isSameOrAfter(expires_at)) {\n await this.refreshToken();\n }\n const jwtToken = localStorage.getItem(\"access_token\");\n return fetch(config.apiUrl + url, {\n // method: \"GET\", // *GET, POST, PUT, DELETE, etc.\n method: \"POST\",\n mode: \"cors\", // no-cors, cors, *same-origin\n cache: \"no-cache\", // *default, no-cache, reload, force-cache, only-if-cached\n //credentials: \"same-origin\", // include, *same-origin, omit\n headers: {\n \"Content-Type\": \"application/json\",\n //\"Content-Type\": \"application/x-www-form-urlencoded\",\n Authorization: \"Bearer \" + jwtToken,\n // \"X-Custom-Header\": (localStorage.getItem(\"sys_token\") || '')\n },\n redirect: \"follow\", // manual, *follow, error\n referrer: \"no-referrer\" // no-referrer, *client\n //body: JSON.stringify(data) // body data type must match \"Content-Type\" header\n })\n .then(res => res.json())\n .catch(error => console.error(\"Error:\", error));\n }\n\n async getSecurity(url) {\n console.log('CallApi>getSecurity ' + url);\n const expires_at = localStorage.getItem(\"expires_at\");\n if (moment().isSameOrAfter(expires_at)) {\n await this.refreshToken();\n }\n const jwtToken = localStorage.getItem(\"access_token\");\n return fetch(config.apiUrlS + url, {\n // method: \"GET\", // *GET, POST, PUT, DELETE, etc.\n method: \"POST\",\n mode: \"cors\", // no-cors, cors, *same-origin\n cache: \"no-cache\", // *default, no-cache, reload, force-cache, only-if-cached\n //credentials: \"same-origin\", // include, *same-origin, omit\n headers: {\n \"Access-Control-Allow-Origin\": \"*\",\n \"Content-Type\": \"application/json\",\n //\"Content-Type\": \"application/x-www-form-urlencoded\",\n Authorization: \"Bearer \" + jwtToken,\n // \"X-Custom-Header\": (localStorage.getItem(\"sys_token\") || '')\n },\n redirect: \"follow\", // manual, *follow, error\n referrer: \"no-referrer\" // no-referrer, *client\n //body: JSON.stringify(data) // body data type must match \"Content-Type\" header\n })\n .then(res => res.json())\n .catch(error => console.error(\"Error:\", error));\n }\n\n async delete(url, data = {}) {\n console.log('CallApi>delete ' + url);\n const expires_at = localStorage.getItem(\"expires_at\");\n //console.log(moment().toString());\n if (moment().isSameOrAfter(expires_at)) {\n await this.refreshToken();\n }\n\n const call_url = config.apiUrl + url;\n //console.log(call_url);\n const jwtToken = localStorage.getItem(\"access_token\");\n return fetch(call_url, {\n method: \"DELETE\", // *GET, POST, PUT, DELETE, etc.\n mode: \"cors\", // no-cors, cors, *same-origin\n cache: \"no-cache\", // *default, no-cache, reload, force-cache, only-if-cached\n //credentials: \"same-origin\", // include, *same-origin, omit\n headers: {\n \"Content-Type\": \"application/json\",\n //\"Content-Type\": \"application/x-www-form-urlencoded\",\n Authorization: \"Bearer \" + jwtToken,\n // \"X-Custom-Header\": (localStorage.getItem(\"sys_token\") || '')\n },\n redirect: \"follow\", // manual, *follow, error\n referrer: \"no-referrer\", // no-referrer, *client\n body: JSON.stringify(data) // body data type must match \"Content-Type\" header\n })\n .then(response => response.json())\n .catch(error => console.error(\"Error:\", error)); // parses JSON response into native Javascript objects\n }\n\n async deleteSecurity(url, data = {}) {\n console.log('CallApi>deleteSecurity ' + url);\n const expires_at = localStorage.getItem(\"expires_at\");\n //console.log(moment().toString());\n if (moment().isSameOrAfter(expires_at)) {\n await this.refreshToken();\n }\n\n const call_url = config.apiUrlS + url;\n //console.log(call_url);\n const jwtToken = localStorage.getItem(\"access_token\");\n return fetch(call_url, {\n method: \"DELETE\", // *GET, POST, PUT, DELETE, etc.\n mode: \"cors\", // no-cors, cors, *same-origin\n cache: \"no-cache\", // *default, no-cache, reload, force-cache, only-if-cached\n //credentials: \"same-origin\", // include, *same-origin, omit\n headers: {\n \"Access-Control-Allow-Origin\": \"*\",\n \"Content-Type\": \"application/json\",\n //\"Content-Type\": \"application/x-www-form-urlencoded\",\n Authorization: \"Bearer \" + jwtToken,\n // \"X-Custom-Header\": (localStorage.getItem(\"sys_token\") || '')\n },\n redirect: \"follow\", // manual, *follow, error\n referrer: \"no-referrer\", // no-referrer, *client\n body: JSON.stringify(data) // body data type must match \"Content-Type\" header\n })\n .then(response => response.json())\n .catch(error => console.error(\"Error:\", error)); // parses JSON response into native Javascript objects\n }\n}\n\nexport default CallApi;\n","import { data } from \"../../mockData/_project-mock\";\nimport { dataAddr } from \"../../mockData/_address-mock\";\nimport CallApi from \"../../util/CallApi\";\nimport { config } from \"../../constants\";\n\nexport const FETCH_PROJECT = \"FETCH_PROJECT\";\nexport const FETCH_PROJECT_SUCCESS = \"FETCH_PROJECT_SUCCESS\";\nexport const FETCH_PROJECT_FAILURE = \"FETCH_PROJECT_FAILURE\";\nexport const FETCH_MSISDN_SUCCESS = \"FETCH_MSISDN_SUCCESS\";\nexport const FETCH_MSISDN_FAILURE = \"FETCH_MSISDN_FAILURE\";\nexport const FETCH_PROJECT_ADDR = \"FETCH_PROJECT_ADDR\";\nexport const FETCH_PROJECT_ADDR_SUCCESS = \"FETCH_PROJECT_ADDR_SUCCESS\";\nexport const FETCH_PROJECT_ADDR_FAILURE = \"FETCH_PROJECT_ADDR_FAILURE\";\nexport const FETCH_PROJECT_ADDR_LABEL = \"FETCH_PROJECT_ADDR_LABEL\";\nexport const FETCH_PROJECT_ADDR_LABEL_SUCCESS = \"FETCH_PROJECT_ADDR_LABEL_SUCCESS\";\nexport const FETCH_PROJECT_ADDR_LABEL_FAILURE = \"FETCH_PROJECT_ADDR_LABEL_FAILURE\";\nexport const FETCH_ADDRESS_COMPANY = \"FETCH_ADDRESS_COMPANY\";\nexport const FETCH_ADDRESS_COMPANY_SUCCESS = \"FETCH_ADDRESS_COMPANY_SUCCESS\";\nexport const FETCH_ADDRESS_COMPANY_FAILURE = \"FETCH_ADDRESS_COMPANY_FAILURE\";\nexport const FETCH_ADDRESS_DELIVERY = \"FETCH_ADDRESS_DELIVERY\";\nexport const FETCH_ADDRESS_DELIVERY_SUCCESS = \"FETCH_ADDRESS_DELIVERY_SUCCESS\";\nexport const FETCH_ADDRESS_DELIVERY_FAILURE = \"FETCH_ADDRESS_DELIVERY_FAILURE\";\n\nconst callApi = new CallApi();\nconst fpe = require(\"node-fpe\");\nconst cipher = fpe({ password: config.appkey });\nconst mockup = false;\n\nexport const fetchProject = params => dispatch => {\n dispatch({ type: FETCH_PROJECT });\n if (mockup) {\n setTimeout(() => {\n return dispatch({ type: FETCH_PROJECT_SUCCESS, payload: data });\n }, 1000);\n } else {\n return callApi\n .postWithOutToken(\"/project\", params)\n .then(res => {\n const resData = {\n ...res,\n project_encrypt: cipher.encrypt(res.project_id)\n };\n //console.log(resData);\n dispatch({ type: FETCH_PROJECT_SUCCESS, payload: resData });\n })\n .catch(error => dispatch({ type: FETCH_PROJECT_FAILURE }));\n }\n};\n\nexport const fetchProjectMsisdn = id => dispatch => {\n dispatch({ type: FETCH_PROJECT });\n if (mockup) {\n setTimeout(() => {\n return dispatch({ type: FETCH_MSISDN_SUCCESS, payload: data });\n }, 1000);\n } else {\n return callApi\n .postWithOutToken(\"/project/msisdn/\" + id, {x:1})\n .then(res => {\n const resData = {\n ...res,\n project_encrypt: cipher.encrypt(res.project_id)\n };\n //console.log(resData);\n dispatch({ type: FETCH_PROJECT_SUCCESS, payload: resData });\n })\n .catch(error => dispatch({ type: FETCH_PROJECT_FAILURE }));\n }\n};\n\nexport const fetchProjectAddr = params => dispatch => {\n dispatch({ type: FETCH_PROJECT_ADDR });\n if (mockup) {\n setTimeout(() => {\n return dispatch({ type: FETCH_PROJECT_ADDR_SUCCESS, payload: dataAddr });\n }, 1000);\n } else {\n return callApi\n .postWithOutToken(\"/customer/address\", params)\n .then(data => {\n dispatch({ type: FETCH_PROJECT_ADDR_SUCCESS, payload: data });\n })\n .catch(error => dispatch({ type: FETCH_PROJECT_ADDR_FAILURE }));\n }\n};\n\nexport const fetchProjectAddrLabel = () => dispatch => {\n dispatch({ type: FETCH_PROJECT_ADDR_LABEL });\n if (mockup) {\n setTimeout(() => {\n return dispatch({\n type: FETCH_PROJECT_ADDR_LABEL_SUCCESS,\n payload: dataAddr\n });\n }, 1000);\n } else {\n return callApi\n .get(\"/query/address_label\")\n .then(data => {\n dispatch({ type: FETCH_PROJECT_ADDR_LABEL_SUCCESS, payload: data });\n })\n .catch(error => dispatch({ type: FETCH_PROJECT_ADDR_LABEL_FAILURE }));\n }\n};\n\nexport const fetchAddressCompany = params => dispatch => {\n dispatch({ type: FETCH_ADDRESS_COMPANY });\n if (mockup) {\n setTimeout(() => {\n return dispatch({ type: FETCH_ADDRESS_COMPANY_SUCCESS, payload: dataAddr });\n }, 1000);\n } else {\n return callApi\n .postWithOutToken(\"/customer/address\", params)\n .then(data => {\n dispatch({ type: FETCH_ADDRESS_COMPANY_SUCCESS, payload: data });\n })\n .catch(error => dispatch({ type: FETCH_ADDRESS_COMPANY_FAILURE }));\n }\n};\nexport const fetchAddressDelivery = params => dispatch => {\n dispatch({ type: FETCH_ADDRESS_DELIVERY });\n if (mockup) {\n setTimeout(() => {\n return dispatch({ type: FETCH_ADDRESS_DELIVERY_SUCCESS, payload: dataAddr });\n }, 1000);\n } else {\n return callApi\n .postWithOutToken(\"/customer/address\", params)\n .then(data => {\n dispatch({ type: FETCH_ADDRESS_DELIVERY_SUCCESS, payload: data });\n })\n .catch(error => dispatch({ type: FETCH_ADDRESS_DELIVERY_FAILURE }));\n }\n};","import { data } from \"../../mockData/_customer-mock\";\nimport CallApi from \"../../util/CallApi\";\n\nexport const LOGIN_CUSTOMER = \"LOGIN_CUSTOMER\";\nexport const LOGIN_CUSTOMER_SUCCESS = \"LOGIN_CUSTOMER_SUCCESS\";\nexport const LOGIN_CUSTOMER_FAILURE = \"LOGIN_CUSTOMER_FAILURE\";\nexport const REGISTER_CUSTOMER = \"REGISTER_CUSTOMER\";\nexport const REGISTER_CUSTOMER_SUCCESS = \"REGISTER_CUSTOMER_SUCCESS\";\nexport const REGISTER_CUSTOMER_FAILURE = \"REGISTER_CUSTOMER_FAILURE\";\n\nconst mockup = false;\n\nconst callApi = new CallApi();\n\nexport const loginCustomer = params => dispatch => {\n dispatch({ type: LOGIN_CUSTOMER });\n if (mockup) {\n return dispatch({ type: LOGIN_CUSTOMER_SUCCESS, payload: data });\n } else {\n return callApi\n // .getSecurity(\n .postSecurity(\n // \"/login?project_id=\" +\n // params.project_id +\n // \"&login_name=\" +\n \"/login\",\n { project_id: params.project_id, login_name: params.login_name }\n )\n .then(data => {\n dispatch({ type: LOGIN_CUSTOMER_SUCCESS, payload: data });\n })\n .catch(error => {\n dispatch({ type: LOGIN_CUSTOMER_FAILURE, payload: error });\n });\n }\n};\nexport const registerCustomer = values => dispatch => {\n dispatch({ type: REGISTER_CUSTOMER });\n if (mockup) {\n return dispatch({\n type: REGISTER_CUSTOMER_SUCCESS,\n payload: { customer_id: \"cus001\" }\n });\n } else {\n return callApi\n .postWithOutToken(\"/login/register\", values)\n .then(res => {\n return dispatch({ type: REGISTER_CUSTOMER_SUCCESS, payload: res });\n })\n .catch(error => {\n return dispatch({ type: REGISTER_CUSTOMER_FAILURE, payload: error });\n });\n }\n};","import { data } from \"../../mockData/_orders-mock\";\nimport CallApi from \"../../util/CallApi\";\n\nexport const FETCH_ORDERS = \"FETCH_ORDERS\";\nexport const FETCH_ORDERS_SUCCESS = \"FETCH_ORDERS_SUCCESS\";\nexport const FETCH_ORDERS_FAILURE = \"FETCH_ORDERS_FAILURE\";\n\nexport const DELETE_ORDERS = \"DELETE_ORDERS\";\nexport const DELETE_ORDERS_SUCCESS = \"DELETE_ORDERS_SUCCESS\";\nexport const DELETE_ORDERS_FAILURE = \"DELETE_ORDERS_FAILURE\";\n\nexport const TOGGLE_DOC_MODAL = \"TOGGLE_DOC_MODAL\";\nexport const TOGGLE_DETAIL_MODAL = \"TOGGLE_DETAIL_MODAL\";\n\nexport const UPDATE_DOC = \"UPDATE_DOC\";\nexport const UPDATE_DOC_SUCCESS = \"UPDATE_DOC_SUCCESS\";\nexport const UPDATE_DOC_FAILURE = \"UPDATE_DOC_FAILURE\";\n\nexport const ADD_ORDER_ITEM = \"ADD_ORDER_ITEM\";\nexport const ADD_ORDER_ITEM_SUCCESS = \"ADD_ORDER_ITEM_SUCCESS\";\nexport const ADD_ORDER_ITEM_FAILURE = \"ADD_ORDER_ITEM_FAILURE\";\n\nexport const UPDATE_DETAIL = \"UPDATE_DETAIL\";\nexport const UPDATE_DETAIL_SUCCESS = \"UPDATE_DETAIL_SUCCESS\";\nexport const UPDATE_DETAIL_FAILURE = \"UPDATE_DETAIL_FAILURE\";\n\nexport const ORDER_APPROVE = \"ORDER_APPROVE\";\nexport const ORDER_APPROVE_SUCCESS = \"ORDER_APPROVE_SUCCESS\";\nexport const ORDER_APPROVE_FAILURE = \"ORDER_APPROVE_FAILURE\";\n\nconst mockup = false; // from folder mockup or not\nconst callApi = new CallApi();\n\nexport const fetchOrders = params => dispatch => {\n dispatch({ type: FETCH_ORDERS });\n if (mockup) {\n return dispatch({ type: FETCH_ORDERS_SUCCESS, payload: data });\n } else {\n return callApi\n // .getSecurity(\n // \"/order?project_id=\" +\n // params.project_id +\n // \"&customer_id=\" +\n // params.customer_id\n // )\n .postSecurity(\n \"/order\",\n { project_id: params.project_id, customer_id: params.customer_id }\n )\n .then(res => {\n dispatch({ type: FETCH_ORDERS_SUCCESS, payload: res });\n })\n .catch(error => dispatch({ type: FETCH_ORDERS_FAILURE }));\n }\n};\n\nexport const deleteOrders = (id, customer_id) => dispatch => {\n dispatch({ type: DELETE_ORDERS });\n if (mockup) {\n return dispatch({ type: DELETE_ORDERS_SUCCESS, payload: id });\n } else {\n return callApi\n .deleteSecurity(\"/order/\" + id + \"/\" + customer_id)\n .then(res => {\n dispatch({ type: DELETE_ORDERS_SUCCESS, payload: id });\n })\n .catch(error => dispatch({ type: DELETE_ORDERS_FAILURE }));\n }\n};\n\nexport const toggleDocModal = data => dispatch => {\n return dispatch({ type: TOGGLE_DOC_MODAL, payload: data });\n};\n\nexport const toggleDetailModal = data => dispatch => {\n return dispatch({ type: TOGGLE_DETAIL_MODAL, payload: data });\n};\n\nexport const updateDoc = data => dispatch => {\n dispatch({ type: UPDATE_DOC });\n if (mockup) {\n return dispatch({ type: UPDATE_DOC_SUCCESS, payload: data });\n } else {\n return callApi\n .patchSecurity(\"/document/\" + data.order_id, data)\n .then(res => {\n console.log(res);\n dispatch({ type: UPDATE_DOC_SUCCESS, payload: res });\n })\n .catch(error => dispatch({ type: UPDATE_DOC_FAILURE, err: error }));\n }\n};\n\nexport const orderApprove = param => dispatch => {\n console.log('orderApprove Funct');\n dispatch({ type: ORDER_APPROVE });\n if (mockup) {\n console.log('is mockup');\n return dispatch({ type: ORDER_APPROVE_SUCCESS, payload: data });\n } else {\n return callApi\n .patchSecurity(\"/order/approve\", param)\n .then(res => {\n console.log('ORDER_APPROVE_SUCCESS');\n dispatch({ type: ORDER_APPROVE_SUCCESS });\n })\n .catch(error => dispatch({ type: ORDER_APPROVE_FAILURE }));\n }\n};\n\nexport const addCartItem = params => dispatch => {\n dispatch({ type: ADD_ORDER_ITEM });\n if (mockup) {\n return dispatch({ type: ADD_ORDER_ITEM_SUCCESS, payload: data });\n } else {\n return callApi\n .postSecurity(\"/order/add\", params)\n .then(res => {\n dispatch({ type: ADD_ORDER_ITEM_SUCCESS, payload: res });\n })\n .catch(error => dispatch({ type: ADD_ORDER_ITEM_FAILURE }));\n }\n};\n\nexport const updateDetail = data => dispatch => {\n dispatch({ type: UPDATE_DETAIL });\n if (mockup) {\n return dispatch({ type: UPDATE_DETAIL_SUCCESS, payload: data });\n } else {\n return callApi\n .patchSecurity(\"/order/\" + data.order_id, data.order_detail)\n .then(res => {\n dispatch({ type: UPDATE_DETAIL_SUCCESS, payload: data });\n })\n .catch(error => dispatch({ type: UPDATE_DETAIL_FAILURE }));\n }\n};\n","import React, { Component } from \"react\";\nimport { connect } from \"react-redux\";\nimport Loading from \"./loading\";\nimport { config, msg } from \"../../constants\";\nimport UserInfo from \"./userInfo\";\nimport { fetchProject } from \"../../store/project/projectAction\";\nimport { loginCustomer, registerCustomer } from \"../../store/login/loginAction\";\nimport { fetchOrders } from \"../../store/orders/ordersAction\";\nimport { Link } from \"react-router-dom\";\nimport { setLocale } from \"react-redux-i18n\";\nimport { Modal, ModalBody, Spinner } from 'reactstrap';\nimport axios from \"axios\";\n\nconst locale = require(\"react-redux-i18n\").I18n;\n// const Cryptr = require(\"cryptr\");\n// const cryptr = new Cryptr(config.appkey);\nconst fpe = require(\"node-fpe\");\nconst cipher = fpe({ password: config.appkey });\nconst jwt = require(\"jsonwebtoken\");\n\nclass header extends Component {\n constructor(props) {\n super(props);\n this.state = {\n user: {},\n runFirst: true,\n chkLogin: false,\n chkRegister: false,\n modalIsOpen: false\n }\n }\n componentWillMount() {\n // console.log(localStorage.getItem('user_login'));\n }\n\n async componentDidMount() {\n\n let resp = await axios.post(config.apiUrl + \"/login/gtkn\", {});\n\n // if (parseInt(resp.data.code) === 200) {\n // localStorage.setItem('sys_token', resp.data.token);\n // }\n\n if (localStorage.getItem(\"project_id\") && !this.props.project.project_id) {\n const projectId = cipher.decrypt(localStorage.getItem(\"project_id\"));\n const paramsApi = { project_id: projectId };\n // console.log('fpj 01');\n this.props.fetchProject(paramsApi);\n }\n const access_token = localStorage.getItem(\"access_token\");\n const user_login = localStorage.getItem(\"user_login\");\n //console.log(access_token);\n if (access_token) {\n const userData = jwt.decode(access_token);\n this.setState({\n user: userData,\n user_login: user_login,\n login_name: ((typeof user_login !== 'undefined' && user_login !== '') ? user_login : userData.sub),\n });\n }\n //console.log(this.props);\n }\n\n componentWillReceiveProps(next) {\n const access_token = localStorage.getItem(\"access_token\");\n const user_login = localStorage.getItem(\"user_login\");\n const userData = jwt.decode(access_token);\n if (access_token && next.project) {\n this.props.loginCustomer({\n project_id: next.project.project_id,\n user_login: user_login,\n login_name: ((typeof user_login !== 'undefined' && user_login !== '') ? user_login : userData.sub),\n display_name: ((typeof userData.profile.display_name !== 'undefined') ? userData.profile.display_name : ''),\n tel: ((typeof userData.profile.trueid !== 'undefined' && typeof userData.profile.trueid.mobile !== 'undefined') ? userData.profile.trueid.mobile : ''),\n email: ((typeof userData.profile.trueid !== 'undefined' && typeof userData.profile.trueid.email !== 'undefined') ? userData.profile.trueid.email : '')\n });\n this.setState({ chkLogin: true });\n }\n\n if (next.project && next.customerID && this.state.runFirst) {\n //console.log(next.customerID);\n // console.log('fetchOrders 01');\n this.props.fetchOrders({\n project_id: next.project.project_id,\n customer_id: next.customerID\n });\n this.setState({ runFirst: false });\n }\n }\n handleRegisterCustomer = async () => {\n if (!this.props.customerID && this.state.chkLogin && !this.state.chkRegister) {\n this.props.registerCustomer({\n project_id: this.props.project.project_id,\n login_name: this.state.login_name,\n display_name: ((typeof this.state.user.profile.display_name !== 'undefined') ? this.state.user.profile.display_name : ''),\n tel: ((typeof this.state.user.profile.trueid !== 'undefined' && typeof this.state.user.profile.trueid.mobile !== 'undefined') ? this.state.user.profile.trueid.mobile : ''),\n email: ((typeof this.state.user.profile.trueid !== 'undefined' && typeof this.state.user.profile.trueid.email !== 'undefined') ? this.state.user.profile.trueid.email : '')\n });\n this.openModal()\n this.setState({ chkRegister: true });\n await this.props.loginCustomer({\n project_id: this.props.project.project_id,\n login_name: this.state.login_name,\n display_name: ((typeof this.state.user.profile.display_name !== 'undefined') ? this.state.user.profile.display_name : ''),\n tel: ((typeof this.state.user.profile.trueid !== 'undefined' && typeof this.state.user.profile.trueid.mobile !== 'undefined') ? this.state.user.profile.trueid.mobile : ''),\n email: ((typeof this.state.user.profile.trueid !== 'undefined' && typeof this.state.user.profile.trueid.email !== 'undefined') ? this.state.user.profile.trueid.email : '')\n });\n this.closeModal();\n }\n };\n openModal() {\n this.setState({ modalIsOpen: true });\n }\n closeModal() {\n this.setState({ modalIsOpen: false });\n }\n handleChangLanguage = l => {\n if (this.props.l !== l) {\n this.props.setLang(l);\n }\n };\n HomePage = () => {\n return (\n config.baseUrl + \"/shop/\" + cipher.encrypt(this.props.project.project_id)\n );\n };\n openHamberger = e => {\n const navMobile = document.getElementsByClassName(\"mobile\")[0];\n var chkHaveOpen = false;\n navMobile.classList.forEach(element => {\n if (element === \"mobile--open\") {\n chkHaveOpen = true;\n }\n });\n if (chkHaveOpen) {\n navMobile.classList.remove(\"mobile--open\");\n } else {\n navMobile.classList.add(\"mobile--open\");\n }\n };\n\n logout = () => {\n localStorage.removeItem(\"access_token\");\n localStorage.removeItem(\"expires_in\");\n localStorage.removeItem(\"refresh_token\");\n localStorage.removeItem(\"user_login\");\n document.cookie = 'utk=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;';\n window.location = config.logoutUri + encodeURI(config.baseUrl + \"/shop/\" + cipher.encrypt(this.props.project.project_id))\n return false;\n };\n\n render() {\n this.handleRegisterCustomer();\n const customStyles = {\n textAlign: 'center',\n top: '40%',\n }\n //console.log(this.props.customerID);\n //console.log(this.props.project);\n const projectStatus = this.props.project.project_status;\n //console.log(projectStatus);\n if (projectStatus !== \"A\") {\n return (\n <>\n \n \n );\n }\n const redirectLoginUri = encodeURI(\n config.loginRedirectUri +\n \"param=\" +\n cipher.encrypt(this.props.project.project_id)\n );\n const loginUrl = config.trueidUrl + \"&redirect_uri=\" + redirectLoginUri;\n //console.log(loginUrl);\n const redirectLogoutUri = encodeURI(\n config.baseUrl + \"/shop/\" + cipher.encrypt(this.props.project.project_id)\n );\n const logoutUrl = config.logoutUri + redirectLogoutUri;\n return (\n <>\n
\n \n \n \n \n \n {' ' + msg.register}\n \n \n
\n \n );\n }\n}\n\nconst UserCart = props => {\n const { loginName, orders } = props;\n // console.log('UserCart');\n // console.log(props);\n if (loginName) {\n return (\n
\n \n {locale.t(\"cart\")}{\" \"}\n \n {orders.length ? \"(\" + orders.length + \")\" : \"\"}\n \n \n
\n );\n }\n return null;\n};\n\nconst Userlogin = props => {\n const { loginName, loginUrl } = props;\n // console.log(userData);\n if (!loginName) {\n return (\n
\n \n {locale.t(\"login\")}\n \n
\n );\n }\n return null;\n};\n\nconst mapStateToProps = state => ({\n project: state.project.info,\n customerID: state.login.customerID,\n orders: state.orders.items,\n l: state.i18n.locale\n});\n\nconst setLang = l => dispatch => {\n //setLang: l => {\n return dispatch(setLocale(l));\n //}\n};\n\n// const mapDispatchToProps = dispatch => ({\n// setLang: l => {\n// dispatch(setLocale(l));\n// },\n// fetchProject,\n// loginCustomer,\n// fetchOrders\n// });\n\nexport default connect(\n mapStateToProps,\n {\n fetchProject,\n loginCustomer,\n registerCustomer,\n fetchOrders,\n setLang\n }\n)(header);\n","import { data } from \"../../mockData/_products-mock\";\n\nimport CallApi from \"../../util/CallApi\";\n\nexport const FETCH_PRODUCT = \"FETCH_PRODUCT\";\nexport const FETCH_PRODUCT_SUCCESS = \"FETCH_PRODUCT_SUCCESS\";\nexport const FETCH_PRODUCT_FAILURE = \"FETCH_PRODUCT_FAILURE\";\n\nexport const FILTER_PRODUCT = \"FILTER_PRODUCT\";\nconst mockup = false;\nconst callApi = new CallApi();\n\nexport const fetchProducts = params => dispatch => {\n dispatch({ type: FETCH_PRODUCT });\n if (mockup) {\n setTimeout(() => {\n return dispatch({ type: FETCH_PRODUCT_SUCCESS, payload: data });\n }, 1000);\n } else {\n return callApi\n .postWithOutToken(\"/product\", params)\n .then(res => {\n dispatch({ type: FETCH_PRODUCT_SUCCESS, payload: res });\n })\n .catch(error => dispatch({ type: FETCH_PRODUCT_FAILURE }));\n }\n};\n\nexport const filterProducts = brandList => dispatch => {\n dispatch({ type: FILTER_PRODUCT, payload: brandList });\n};\n","import { data } from \"../../mockData/banners-mock\";\nimport CallApi from \"../../util/CallApi\";\nexport const FETCH_BANNERS = \"FETCH_BANNERS\";\nexport const FETCH_BANNERS_SUCCESS = \"FETCH_BANNERS_SUCCESS\";\nexport const FETCH_BANNERS_FAILURE = \"FETCH_BANNERS_FAILURE\";\n\nconst mockup = false;\nconst callApi = new CallApi();\n\nexport const fetchBanners = params => dispatch => {\n dispatch({ type: FETCH_BANNERS });\n if (mockup) {\n return dispatch({ type: FETCH_BANNERS_SUCCESS, payload: data });\n } else {\n return callApi\n .get(\"/project/banner/\" + params.project_id)\n .then(res => {\n dispatch({ type: FETCH_BANNERS_SUCCESS, payload: res });\n })\n .catch(error => dispatch({ type: FETCH_BANNERS_FAILURE }));\n }\n};\n","import { data } from \"../../mockData/_brands-mock\";\nimport CallApi from \"../../util/CallApi\";\n\nexport const FETCH_BRANDS = \"FETCH_BRANDS\";\nexport const FETCH_BRANDS_SUCCESS = \"FETCH_BRANDS_SUCCESS\";\nexport const FETCH_BRANDS_FAILURE = \"FETCH_BRANDS_FAILURE\";\n\nconst callApi = new CallApi();\nconst mockup = false;\n\nexport const fetchBrands = params => dispatch => {\n dispatch({ type: FETCH_BRANDS });\n if (mockup) {\n return dispatch({ type: FETCH_BRANDS_SUCCESS, payload: data });\n } else {\n return callApi\n .postWithOutToken(\"/query/brands\", params)\n .then(data => {\n dispatch({ type: FETCH_BRANDS_SUCCESS, payload: data });\n })\n .catch(error => dispatch({ type: FETCH_BRANDS_FAILURE }));\n }\n};\n","import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { connect } from \"react-redux\";\nimport { config } from \"../../constants\";\nimport { fetchBanners } from \"../../store/banners/bannersAction\";\n\nclass banner extends Component {\n componentDidMount() {\n // this.props.fetchBanners(this.props);\n }\n openUrlLink = (url_link) => {\n if (url_link) {\n window.open(url_link, '_blank');\n }\n }\n render() {\n return (\n
\n
\n
    \n {this.props.banners.map((banner, index) => (\n \n ))}\n
\n
\n {this.props.banners.map((banners, index) => (\n \n this.openUrlLink(banners.url_link)} \n style={banners.url_link ? {cursor: \"pointer\"}:{}}\n />\n
\n ))}\n
\n \n \n Previous\n \n \n \n Next\n \n
\n \n );\n }\n}\n\nconst mapStateToProps = state => ({\n banners: state.banners.items,\n project_id: state.project.info.project_id,\n project: state.project.info\n});\nbanner.propTypes = {\n fetchBanners: PropTypes.func.isRequired\n};\nexport default connect(\n mapStateToProps,\n { fetchBanners }\n)(banner);\n","import React, { Component } from \"react\";\nimport { connect } from \"react-redux\";\nimport PropTypes from \"prop-types\";\nimport { filterProducts } from \"../../store/products/productsAction\";\nimport { fetchBrands } from \"../../store/brands/brandsAction\";\nconst locale = require('react-redux-i18n').I18n;\n\nclass Brand extends Component {\n state = {};\n\n componentDidMount() {\n // this.props.fetchBrands({ project_id: this.props.projectID });\n }\n\n onChange = e => {\n var keys = [];\n var checkbox = document.getElementsByClassName('cb-brands')\n for (var i = 0; i < checkbox.length; i++) {\n if (checkbox.item(i).checked) {\n keys.push(checkbox.item(i).name)\n }\n }\n this.props.filterProducts(keys);\n };\n\n render() {\n const brands = this.props.brands.map(val => (\n
  • \n \n
  • \n ));\n return (\n
    \n
    \n

    \n {locale.t('brandLabel')}\n

    \n
    \n
    \n );\n }\n}\n\nBrand.propTypes = {\n filterProducts: PropTypes.func.isRequired,\n fetchBrands: PropTypes.func.isRequired,\n brands: PropTypes.array.isRequired,\n isFetching: PropTypes.bool\n};\n\nconst mapStateToProps = state => ({\n brands: state.brands.items,\n projectID: state.project.info.project_id,\n isFetching: state.brands.isFetching,\n l: state.i18n.locale,\n});\n\nexport default connect(\n mapStateToProps,\n { filterProducts, fetchBrands }\n)(Brand);\n","export const TOGGLE_ALERT = \"TOGGLE_ALERT\";\n\nexport const toggleAlert = (message,reload) => dispatch => {\n const data = {\n message,\n isReload: reload\n }\n return dispatch({ type: TOGGLE_ALERT, payload: data});\n};\n","import React, { Component } from \"react\";\nimport { connect } from \"react-redux\";\nimport PropTypes from \"prop-types\";\nimport { Link, Redirect } from \"react-router-dom\";\nimport { config } from \"../../constants\";\nimport { toggleAlert } from \"../../store/alertbox/alertboxAction\";\n\n//import CallApi from \"../../util/CallApi\";\n//import { config } from \"../../constants\";\n//import axios from \"axios\";\n\nimport { fetchProducts } from \"../../store/products/productsAction\";\nimport { addCartItem } from \"../../store/orders/ordersAction\";\nconst fpe = require(\"node-fpe\");\nconst cipher = fpe({ password: config.appkey });\nvar numeral = require(\"numeral\");\nconst locale = require(\"react-redux-i18n\").I18n;\n\n//const call = new CallApi();\nclass Products extends Component {\n state = {\n addCart: false\n };\n componentDidMount() {\n //console.log(this.props.project.project_id);\n // this.props.fetchProducts({ project_id: this.props.project.project_id });\n //const res = CallApi(\"GET\", \"/product/find/all\");\n //console.log(res);\n\n // call.get(\"/product/find/all\").then(res => {\n // console.log(res);\n // });\n }\n\n clickOrder = (e, matId, device_id) => {\n if (!localStorage.getItem(\"access_token\")) {\n //this.props.toggleAlert(`กรุณาล็อกอินเข้าสู่ระบบ`);\n e.preventDefault();\n const redirectLoginUri = encodeURI(\n config.loginRedirectUri +\n \"param=\" +\n cipher.encrypt(this.props.project.project_id)\n );\n const loginUrl = config.trueidUrl + \"&redirect_uri=\" + redirectLoginUri;\n window.location = loginUrl;\n }\n //check profile\n if (this.props.user.id_card === \"\" || this.props.user.id_card === null || this.props.user.id_card === undefined) {\n this.props.toggleAlert(locale.t(\"validateProfile\"));\n //e.preventDefault();\n return false;\n // return \n }\n\n if (this.props.project.order_status !== 'A') {\n e.preventDefault();\n this.props.toggleAlert(locale.t(\"orderExpire\"));\n return false;\n } else {\n // check quota\n const quota =\n this.props.user.quota !== 0 || this.props.user.quota !== \"\"\n ? this.props.user.quota\n : this.props.project.quota;\n\n //console.log(this.props.orders.length);\n if (this.props.orders.length >= parseInt(quota)) {\n e.preventDefault();\n this.props.toggleAlert(locale.t(\"validateQuota\"));\n return false;\n }\n\n // add new order item\n e.preventDefault();\n this.addCartItem(matId, device_id);\n //return \n }\n };\n\n async addCartItem(matId, device_id) {\n await this.props.addCartItem({\n project_id: this.props.user.project_id,\n customer_id: this.props.user.customer_id,\n device_id: device_id,\n product_id: matId\n });\n\n this.setState({\n addCart: true\n });\n }\n\n render() {\n if (this.state.addCart) {\n return ;\n }\n const product = this.props.products.map(val => (\n
    \n
    \n

    {val.brand}

    \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n

    {val.device_model.name}

    \n

    {val.device_model.description}

    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n {val.matcode.map(mat => (\n
    \n
    \n
    \n
    \n

    {numeral(mat.price).format(\"0,0.00\")}

    \n {locale.t(\"bathMonth\")}
    \n {this.props.project.payment_type_id === 'pm001' ? {locale.t(\"payVat\")} : ''}\n
    \n
    \n

    \n {locale.t(\"color\")}: {mat.color}\n

    \n
    \n
    \n
    \n this.clickOrder(e, mat.id, mat.device_id)}\n className=\"btn btn-buy\"\n >\n {locale.t(\"orderPrduct\")}\n \n {/* */}\n
    \n
    \n
    \n ))}\n
    \n
    \n
    \n ));\n return (\n
    \n {product}\n {/*
    \n

    {locale.t(\"conditionPrice\")}

    \n
    */}\n
    \n );\n }\n}\n\nProducts.propTypes = {\n fetchProducts: PropTypes.func.isRequired,\n products: PropTypes.array.isRequired,\n isFetching: PropTypes.bool\n};\n\nconst mapStateToProps = state => ({\n products: state.products.items,\n project: state.project.info,\n project_id: state.project.info.project_id,\n user: state.login.info,\n orders: state.orders.items,\n isFetching: state.products.isFetching,\n l: state.i18n.locale\n});\n\nexport default connect(\n mapStateToProps,\n { fetchProducts, toggleAlert, addCartItem }\n)(Products);\n","import React, { Component } from \"react\";\nimport { connect } from \"react-redux\";\n\nclass outtime extends Component {\n render() {\n document.body.classList.add(\"modal-open\");\n return (\n \n
    \n
    \n

    \n หมดเขตแคมเปญของ {this.props.project.project_name}{\" \"}\n แล้วค่ะ\n

    \n
    \n
    \n \"web@2x\"\n
    \n
    \n \n );\n }\n}\n\nconst mapStateToProps = state => ({\n project: state.project.info\n});\n\nexport default connect(\n mapStateToProps,\n null\n)(outtime);\n","import React, { Component } from \"react\";\n//import { connect } from \"react-redux\";\n\nclass notfound extends Component {\n render() {\n document.body.classList.add(\"modal-open\");\n return (\n \n
    \n
    \n

    {this.props.children}

    \n
    \n
    \n \"web@2x\"\n
    \n
    \n \n );\n }\n}\n\nexport default notfound;\n","import React, { Component } from \"react\";\nimport { connect } from \"react-redux\";\nimport { fetchProject } from \"../../store/project/projectAction\";\nimport { fetchProducts } from \"../../store/products/productsAction\";\nimport { fetchBanners } from \"../../store/banners/bannersAction\";\nimport { fetchBrands } from \"../../store/brands/brandsAction\";\n//import { Link } from \"react-router-dom\";\n\nimport Banner from \"./banner\";\nimport Brand from \"./brand\";\nimport Products from \"./products\";\nimport Outtime from \"../outtime/outtime\";\nimport Notfound from \"../outtime/notfound\";\n\n\nimport { config } from \"../../constants\";\n//const Cryptr = require(\"cryptr\");\n//const cryptr = new Cryptr(config.appkey);\n\nimport axios from 'axios';\n\nconst fpe = require(\"node-fpe\");\nconst cipher = fpe({ password: config.appkey });\n\n// import CallApi from \"../../util/CallApi\";\n\n// const callApi = new CallApi();\n\nclass IndexPage extends Component {\n // componentWillMount() {\n // const test_d = cipher.encrypt(\"20190613141453415406208\"); // 75425843464693649658750\n // console.log(test_d);\n // //'4185730'\n // console.log(cipher.decrypt(test_d));\n // }\n state = {\n pageNotfound: false\n };\n\n async componentDidMount() {\n\n let resp = await axios.post(config.apiUrl + \"/login/gtkn\", {});\n\n // if (parseInt(resp.data.code) === 200) {\n // localStorage.setItem('sys_token', resp.data.token);\n // }\n\n // const gtknResp = await callApi.setSysToken();\n // console.log(gtknResp)\n // if (parseInt(gtknResp.code) === 200) {\n // localStorage.setItem('sys_token', gtknResp.token);\n // }\n\n // const {\n // match: { params }\n // } = this.props;\n const {\n match: { params }\n } = this.props;\n localStorage.setItem(\"project_id\", params.project);\n\n try {\n // const projectId = cryptr.decrypt(params.project);\n // const paramsApi = { project_id: projectId };\n // this.props.fetchProject(paramsApi);\n const projectId = cipher.decrypt(params.project);\n //console.log(projectId);\n const paramsApi = { project_id: projectId };\n // console.log('fpj 02');\n this.props.fetchProject(paramsApi);\n this.props.fetchProducts({ project_id: projectId });\n this.props.fetchBrands({ project_id: projectId });\n this.props.fetchBanners({ project_id: projectId });\n } catch (error) {\n this.setState({ pageNotfound: true });\n console.log(error);\n }\n }\n\n render() {\n //const cipher = fpe({ password: config.appkey });\n //const test_d = cipher.encrypt(\"20190613141453415406208\");\n //console.log(test_d);\n // '4185730'\n\n //console.log(cipher.decrypt(test_d));\n // '1234567'\n if (this.state.pageNotfound) {\n return ไม่พบหน้านี้;\n }\n if (this.props.projectNotfound) {\n return ไม่พบแคมเปญนี้;\n }\n\n if (this.props.project.hasOwnProperty(\"project_id\")) {\n //console.log(this.props.project.project_id);\n const {\n match: { params }\n } = this.props;\n localStorage.setItem(\"project_id\", params.project);\n }\n const projectStatus = this.props.project.project_status;\n //console.log(projectStatus);\n if (!projectStatus) {\n return <>;\n } else if (projectStatus !== \"A\") {\n //return ;\n return (\n <>\n \n \n );\n }\n\n //if (this.props.project.project_id) {\n // const encryptedString = cryptr.encrypt(\"20190613141453415406208\");\n // const decryptedString = cryptr.decrypt(encryptedString);\n\n // console.log(encryptedString); // 03e3a86d7de48dfa1b2f2522c38a8bc34b7ef33aa44e // wpo001\n // // 003e046e197646f5cae82a8ffe7f2f71baca17a294a82e6f5725c165a7f579a3df699a53b1a02c // 20190613141453415406208\n // console.log(decryptedString); // wpo001\n //}\n\n return (\n <>\n \n {/* register */}\n
    \n
    \n \n \n
    \n
    \n \n );\n }\n}\n\nconst mapStateToProps = state => ({\n project: state.project.info,\n isFetching: state.project.isFetching,\n projectNotfound: state.project.projectNotfound\n});\n\nexport default connect(\n mapStateToProps,\n {\n fetchProject,\n fetchProducts,\n fetchBanners,\n fetchBrands\n }\n)(IndexPage);\n","import CallApi from \"../../util/CallApi\";\nimport { data } from \"../../mockData/_customer-mock\";\n\nexport const FETCH_CUSTOMER = \"FETCH_CUSTOMER\";\nexport const FETCH_CUSTOMER_SUCCESS = \"FETCH_CUSTOMER_SUCCESS\";\nexport const FETCH_CUSTOMER_FAILURE = \"FETCH_CUSTOMER_FAILURE\";\n\nexport const UPDATE_CUSTOMER = \"UPDATE_CUSTOMER\";\nexport const UPDATE_CUSTOMER_SUCCESS = \"UPDATE_CUSTOMER_SUCCESS\";\nexport const UPDATE_CUSTOMER_FAILURE = \"UPDATE_CUSTOMER_FAILURE\";\n\nexport const CANCEL_ORDERS_CUSTOMER = \"CANCEL_ORDERS_CUSTOMER\";\nexport const CANCEL_ORDERS_CUSTOMER_SUCCESS = \"CANCEL_ORDERS_CUSTOMER_SUCCESS\";\nexport const CANCEL_ORDERS_CUSTOMER_FAILURE = \"CANCEL_ORDERS_CUSTOMER_FAILURE\";\n\nconst mockup = false;\nconst callApi = new CallApi();\n\nexport const fetchCustomer = params => dispatch => {\n dispatch({ type: FETCH_CUSTOMER });\n if (mockup) {\n return dispatch({ type: FETCH_CUSTOMER_SUCCESS, payload: data });\n } else {\n return callApi\n .post(\n \"/customer\",\n { project_id: params.project_id, customer_id: params.customer_id }\n )\n .then(res => {\n dispatch({ type: FETCH_CUSTOMER_SUCCESS, payload: res });\n })\n .catch(error => {\n dispatch({ type: FETCH_CUSTOMER_FAILURE, payload: error });\n });\n }\n};\n\nexport const updateCustomer = values => dispatch => {\n dispatch({ type: UPDATE_CUSTOMER });\n if (mockup) {\n return dispatch({\n type: UPDATE_CUSTOMER_SUCCESS,\n payload: { customer_id: \"cus001\" }\n });\n } else {\n return callApi\n .post(\"/customer/update\", values)\n .then(res => {\n return dispatch({ type: UPDATE_CUSTOMER_SUCCESS, payload: res });\n })\n .catch(error => {\n return dispatch({ type: UPDATE_CUSTOMER_FAILURE, payload: error });\n });\n }\n};\n\nexport const updateOrdersEditCustomer = values => dispatch => {\n dispatch({ type: CANCEL_ORDERS_CUSTOMER });\n if (mockup) {\n return dispatch({\n type: CANCEL_ORDERS_CUSTOMER_SUCCESS,\n payload: { customer_id: \"cus001\" }\n });\n } else {\n return callApi\n .post(\"/customer/cancelorders\", values)\n .then(res => {\n return dispatch({ type: CANCEL_ORDERS_CUSTOMER_SUCCESS, payload: res });\n })\n .catch(error => {\n return dispatch({\n type: CANCEL_ORDERS_CUSTOMER_FAILURE,\n payload: error\n });\n });\n }\n};\n","import { titles } from \"../../mockData/title-mock\";\nimport CallApi from \"../../util/CallApi\";\n\nexport const FETCH_TITLES = \"FETCH_TITLES\";\nexport const FETCH_TITLES_SUCCESS = \"FETCH_TITLES_SUCCESS\";\nexport const FETCH_TITLES_FAILURE = \"FETCH_TITLES_FAILURE\";\nexport const FETCH_ADDRESS_PROJECT = \"FETCH_ADDRESS_PROJECT\";\nexport const FETCH_ADDRESS_PROJECT_SUCCESS = \"FETCH_ADDRESS_PROJECT_SUCCESS\";\nexport const FETCH_ADDRESS_PROJECT_FAILURE = \"FETCH_ADDRESS_PROJECT_FAILURE\";\nexport const FETCH_PROJECT_COMPANY = \"FETCH_PROJECT_COMPANY\";\nexport const FETCH_PROJECT_COMPANY_SUCCESS = \"FETCH_PROJECT_COMPANY_SUCCESS\";\nexport const FETCH_PROJECT_COMPANY_FAILURE = \"FETCH_PROJECT_COMPANY_FAILURE\";\n\nconst callApi = new CallApi();\nconst mockup = false;\n\nexport const fetchTitles = params => dispatch => {\n dispatch({ type: FETCH_TITLES });\n if (mockup) {\n return dispatch({ type: FETCH_TITLES_SUCCESS, payload: titles });\n } else {\n return callApi\n .get(\"/query/titles\")\n .then(data => {\n dispatch({ type: FETCH_TITLES_SUCCESS, payload: data });\n })\n .catch(error => dispatch({ type: FETCH_TITLES_FAILURE }));\n }\n};\n\nexport const fetchAddressProject = params => dispatch => {\n dispatch({ type: FETCH_ADDRESS_PROJECT });\n return callApi\n .post(\"/query/address_delivery\", params)\n .then(data => {\n dispatch({ type: FETCH_ADDRESS_PROJECT_SUCCESS, payload: data });\n })\n .catch(error => dispatch({ type: FETCH_ADDRESS_PROJECT_FAILURE }));\n};\n\nexport const fetchAddressCompany = params => dispatch => {\n dispatch({ type: FETCH_PROJECT_COMPANY });\n return callApi\n .post(\"/query/address_company\", params)\n .then(data => {\n dispatch({ type: FETCH_PROJECT_COMPANY_SUCCESS, payload: data });\n })\n .catch(error => dispatch({ type: FETCH_PROJECT_COMPANY_FAILURE }));\n};\n","import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { connect } from \"react-redux\";\nimport { config } from \"../../constants\";\nconst locale = require(\"react-redux-i18n\").I18n;\nclass RegisterHeader extends Component {\n HomePage = () => {\n return config.baseUrl + '/shop/' + this.props.project.project_encrypt;\n };\n render() {\n return (\n
    \n

    {locale.t(\"dataProfile\")}

    \n
    \n \n \n \n {\n this.props.mode === \"View\" && (\n this.props.onEdit(\"Edit\")}\n >\n {locale.t(\"edit\")}\n \n )\n }\n {\n this.props.mode === \"Expire\" && (\n \n )\n }\n
    \n
    \n );\n }\n}\n\nRegisterHeader.propTypes = {\n status: PropTypes.string.isRequired,\n onEdit: PropTypes.func.isRequired\n};\n\nRegisterHeader.defaultProps = {\n status: \"\",\n onEdit: () => null\n};\nconst mapStateToProps = state => ({\n l: state.i18n.locale,\n project: state.project.info,\n});\nexport default connect(\n mapStateToProps,\n null\n)(RegisterHeader);\n","import React from \"react\";\n\nexport default ({ input, id, label,star,maxLength, type, disabled, meta: { touched, error, warning } }) => {\n return (\n
    \n \n
    \n \n
    \n {touched && ((error && {error}) || (warning && {warning}))}\n
    \n
    \n
    \n )\n}","import React from \"react\";\n\nexport default ({ input, label,star, disabled, options, meta: { touched, error, warning } }) => {\n return (\n
    \n \n
    \n
    \n \n
    \n
    \n {touched && ((error && {error}) || (warning && {warning}))}\n
    \n
    \n
    \n )\n}","import React from \"react\";\n\nexport default ({ input, id, label,star, type, disabled, meta: { touched, error, warning } }) => {\n return (\n
    \n \n
    \n
    \n \n
    \n
    \n {touched && ((error && {error}) || (warning && {warning}))}\n
    \n
    \n
    \n )\n}\n","import React, { Component } from \"react\";\nimport { Modal } from \"reactstrap\";\n\nclass RegisterModal extends Component {\n render() {\n const { show, title, subTitle, detail, showCancel } = this.props;\n return (\n \n
    \n
    \n

    {title}

    \n
    {subTitle}
    \n

    {detail}

    \n
    \n
    \n
    \n {showCancel && }\n \n
    \n
    \n );\n }\n}\n\nexport default RegisterModal;","import React, { Component } from \"react\";\nimport { connect } from \"react-redux\";\nimport { msg } from \"../../constants\";\nimport { Link } from \"react-router-dom\";\nimport RegisterModal from \"./RegisterModal\";\nconst locale = require(\"react-redux-i18n\").I18n;\n\nclass RegisterFooter extends Component {\n state = {\n modalShow: false\n };\n\n handleModalClose = () => {\n this.setState({\n modalShow: false\n });\n };\n\n render() {\n const { custTermCondTitle, custTermCondSubTitle, custTermCond } = msg;\n return (\n
    \n {this.props.mode === \"Edit\" && (\n
    \n

    \n {locale.t(\"clickToAgree\")}\n this.setState({ modalShow: true })}>\n {locale.t(\"detaiHere\")}\n \n {locale.t(\"beforeEdit\")}\n

    \n
    \n \n {locale.t(\"cancel\")}\n \n \n {locale.t(\"agreeProfile\")}\n \n
    \n \n
    \n )}\n {this.props.mode === \"Expire\" && (\n
    \n
    \n {/* */}\n \n {locale.t(\"cancel\")}\n \n
    \n
    \n )}\n
    \n );\n }\n}\n\nconst mapStateToProps = state => ({\n project: state.project.info,\n l: state.i18n.locale\n});\n\nexport default connect(mapStateToProps)(RegisterFooter);\n","import { provinces } from \"../../mockData/province-mock\";\nimport { districts } from \"../../mockData/districts-mock\";\nimport { subDistricts } from \"../../mockData/subDistrict-mock\";\nimport { zipcodes } from \"../../mockData/zipcode-mock\";\nimport { config } from \"../../constants\";\n\nexport const FETCH_PROVINCES = \"FETCH_PROVINCES\";\nexport const FETCH_PROVINCES_SUCCESS = \"FETCH_PROVINCES_SUCCESS\";\nexport const FETCH_PROVINCES_FAILURE = \"FETCH_PROVINCES_FAILURE\";\n\nexport const FETCH_DISTRICTS = \"FETCH_DISTRICTS\";\nexport const FETCH_DISTRICTS_SUCCESS = \"FETCH_DISTRICTS_SUCCESS\";\nexport const FETCH_DISTRICTS_FAILURE = \"FETCH_DISTRICTS_FAILURE\";\n\nexport const FETCH_SUBDISTRICTS = \"FETCH_SUBDISTRICTS\";\nexport const FETCH_SUBDISTRICTS_SUCCESS = \"FETCH_SUBDISTRICTS_SUCCESS\";\nexport const FETCH_SUBDISTRICTS_FAILURE = \"FETCH_SUBDISTRICTS_FAILURE\";\n\nexport const FETCH_ZIPCODES = \"FETCH_ZIPCODES\";\nexport const FETCH_ZIPCODES_SUCCESS = \"FETCH_ZIPCODES_SUCCESS\";\nexport const FETCH_ZIPCODES_FAILURE = \"FETCH_ZIPCODES_FAILURE\";\n\nconst mockup = false;\n\nexport const fetchProvinces = () => (dispatch) => {\n\tdispatch({ type: FETCH_PROVINCES });\n\tif (mockup) {\n\t\t// return dispatch({ type: FETCH_PROVINCES_SUCCESS, payload: {} });\n\t\treturn dispatch({ type: FETCH_PROVINCES_SUCCESS, payload: provinces });\n\t} else {\n\t\treturn fetch(config.utilsAddress+'/getProvince', {\n\t\t\t// method: \"GET\", // *GET, POST, PUT, DELETE, etc.\n\t\t\tmethod: \"GET\",\n\t\t\tmode: \"cors\", // no-cors, cors, *same-origin\n\t\t\tcache: \"no-cache\", // *default, no-cache, reload, force-cache, only-if-cached\n\t\t\theaders: {\n\t\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t\tAuthorization: \"Bearer \" + localStorage.getItem(\"access_token\")\n\t\t\t},\n\t\t\tredirect: \"follow\", // manual, *follow, error\n\t\t\treferrer: \"no-referrer\" // no-referrer, *client\n\t\t})\n\t\t\t.then(res => res.json())\n\t\t\t.then(data => {\n\t\t\t\tdispatch({ type: FETCH_PROVINCES_SUCCESS, payload: data });\n\t\t\t})\n\t\t\t.catch((error) => dispatch({ type: FETCH_PROVINCES_FAILURE }));\n\t}\n};\n\nexport const fetchDistricts = () => (dispatch) => {\n\tdispatch({ type: FETCH_DISTRICTS });\n\tif (mockup) {\n\t\t// return dispatch({ type: FETCH_DISTRICTS_SUCCESS, payload: {} });\n\t\treturn dispatch({ type: FETCH_DISTRICTS_SUCCESS, payload: districts });\n\t} else {\n\t\treturn fetch(config.utilsAddress+'/getAmphor', {\n\t\t\t// method: \"GET\", // *GET, POST, PUT, DELETE, etc.\n\t\t\tmethod: \"GET\",\n\t\t\tmode: \"cors\", // no-cors, cors, *same-origin\n\t\t\tcache: \"no-cache\", // *default, no-cache, reload, force-cache, only-if-cached\n\t\t\theaders: {\n\t\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t\tAuthorization: \"Bearer \" + localStorage.getItem(\"access_token\")\n\t\t\t},\n\t\t\tredirect: \"follow\", // manual, *follow, error\n\t\t\treferrer: \"no-referrer\" // no-referrer, *client\n\t\t\t//body: JSON.stringify(data) // body data type must match \"Content-Type\" header\n\t\t})\n\t\t\t.then(res => res.json())\n\t\t\t.then(data => {\n\t\t\t\tdispatch({ type: FETCH_DISTRICTS_SUCCESS, payload: data });\n\t\t\t})\n\t\t\t.catch((error) => dispatch({ type: FETCH_DISTRICTS_FAILURE }));\n\t}\n};\n\nexport const fetchSubDistricts = () => (dispatch) => {\n\tdispatch({ type: FETCH_SUBDISTRICTS });\n\tif (mockup) {\n\t\t// return dispatch({ type: FETCH_SUBDISTRICTS_SUCCESS, payload: {} });\n\t\treturn dispatch({ type: FETCH_SUBDISTRICTS_SUCCESS, payload: subDistricts });\n\t} else {\n\t\treturn fetch(config.utilsAddress+'/getTumbon', {\n\t\t\t// method: \"GET\", // *GET, POST, PUT, DELETE, etc.\n\t\t\tmethod: \"GET\",\n\t\t\tmode: \"cors\", // no-cors, cors, *same-origin\n\t\t\tcache: \"no-cache\", // *default, no-cache, reload, force-cache, only-if-cached\n\t\t\theaders: {\n\t\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t\tAuthorization: \"Bearer \" + localStorage.getItem(\"access_token\")\n\t\t\t},\n\t\t\tredirect: \"follow\", // manual, *follow, error\n\t\t\treferrer: \"no-referrer\" // no-referrer, *client\n\t\t\t//body: JSON.stringify(data) // body data type must match \"Content-Type\" header\n\t\t})\n\t\t\t.then(res => res.json())\n\t\t\t.then(data => {\n\t\t\t\tdispatch({ type: FETCH_SUBDISTRICTS_SUCCESS, payload: data });\n\t\t\t})\n\t\t\t.catch((error) => dispatch({ type: FETCH_SUBDISTRICTS_FAILURE }));\n\t}\n};\n\nexport const fetchZipCodes = () => (dispatch) => {\n\tdispatch({ type: FETCH_ZIPCODES });\n\tif (mockup) {\n\t\t// return dispatch({ type: FETCH_ZIPCODES_SUCCESS, payload: {} });\n\t\treturn dispatch({ type: FETCH_ZIPCODES_SUCCESS, payload: zipcodes });\n\t} else {\n\t\treturn fetch(config.utilsAddress+'/getZipCode', {\n\t\t\t// method: \"GET\", // *GET, POST, PUT, DELETE, etc.\n\t\t\tmethod: \"GET\",\n\t\t\tmode: \"cors\", // no-cors, cors, *same-origin\n\t\t\tcache: \"no-cache\", // *default, no-cache, reload, force-cache, only-if-cached\n\t\t\theaders: {\n\t\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t\tAuthorization: \"Bearer \" + localStorage.getItem(\"access_token\")\n\t\t\t},\n\t\t\tredirect: \"follow\", // manual, *follow, error\n\t\t\treferrer: \"no-referrer\" // no-referrer, *client\n\t\t})\n\t\t\t.then(res => res.json())\n\t\t\t.then(data => {\n\t\t\t\tdispatch({ type: FETCH_ZIPCODES_SUCCESS, payload: data });\n\t\t\t})\n\t\t\t.catch((error) => dispatch({ type: FETCH_ZIPCODES_FAILURE }));\n\t}\n};\n","import React, { Component } from \"react\";\nimport { connect } from \"react-redux\";\nimport { reduxForm, Field } from \"redux-form\";\nimport { msg } from \"../../constants\"\nimport RegisterTextField from \"./RegisterTextField\"\nimport RegisterSelectField from \"./RegisterSelectField\"\nimport RegisterDateField from \"./RegisterDateField\"\nimport RegisterFooter from \"./RegisterFooter\"\nimport {\n fetchProvinces,\n fetchDistricts,\n fetchSubDistricts,\n fetchZipCodes\n} from \"../../store/register/addressAction\";\nconst locale = require(\"react-redux-i18n\").I18n;\nclass RegisterForm extends Component {\n\n state = {\n firsttime: true,\n provinceId: 0,\n provinceName: 0,\n provinceKey: 0,\n districtId: 0,\n districtName: 0,\n districtKey: 0,\n districtHtml: '',\n subDistrictId: 0,\n subDistrictName: 0,\n subDistrictKey: 0,\n };\n\n async componentWillMount() {\n this.props.openModel();\n await this.props.fetchProvinces();\n await this.props.fetchDistricts();\n await this.props.fetchSubDistricts();\n await this.props.fetchZipCodes();\n this.props.closeModal();\n }\n\n componentDidMount() {\n window.initialDatepicker();\n }\n\n componentWillReceiveProps(nextProps) {\n if (nextProps.initialValues && nextProps.provinces.length > 0) {\n if (this.state.firsttime && nextProps.initialValues.address) {\n const { city, amphur, tumbon } = nextProps.initialValues.address;\n if (city && amphur && tumbon) {\n this.getProvinceId(nextProps.provinces, city)\n this.getDistrictId(nextProps.districts, amphur)\n this.getSubDistrictId(nextProps.subDistricts, tumbon)\n }\n }\n }\n if (this.state.provinceId && this.state.districtId && this.state.subDistrictId) {\n this.setState({\n firsttime: false\n })\n }\n }\n\n getTitleVal = (word) => {\n const title = this.props.titles.find(title => {\n return title.title_th === word\n });\n return title ? title.title : word;\n };\n\n getProvinceId = (provinces, city) => {\n const index = provinces.findIndex(province => province.name === city);\n if (index > -1) {\n this.setState({\n provinceId: index,\n provinceKey: provinces[index].id,\n provinceName: provinces[index].name,\n })\n }\n };\n\n getDistrictId = (districts, amphur) => {\n const index = districts.findIndex(district => district.name === amphur && district.provinceID === this.state.provinceKey);\n if (index > -1) {\n this.setState({\n districtId: index,\n districtKey: districts[index].id,\n districtName: districts[index].name\n });\n }\n };\n\n getSubDistrictId = (subDistricts, tumbon) => {\n const index = subDistricts.findIndex(subDistrict => subDistrict.name === tumbon && subDistrict.districtID === this.state.districtKey);\n if (index > -1) {\n this.setState({\n subDistrictId: index,\n subDistrictKey: subDistricts[index].id,\n subDistrictName: subDistricts[index].name\n });\n }\n };\n\n getDistrict = () => {\n return this.props.districts.filter(district =>\n district.provinceID === this.state.provinceKey\n )\n };\n\n getSubDistrict = () => {\n return this.props.subDistricts.filter(subDistrict =>\n subDistrict.provinceID === this.state.provinceKey && subDistrict.districtID === this.state.districtKey\n )\n };\n\n getZipcode = () => {\n return this.props.zipcodes.filter(zipcode =>\n zipcode.provinceID === this.state.provinceKey && zipcode.districtID === this.state.districtKey && zipcode.subDistrictID === this.state.subDistrictKey\n )\n };\n\n onIdCardExpireChange = ({ target }) => {\n this.props.change(\"id_card_expire\", target.value);\n };\n\n onBirthDateChange = ({ target }) => {\n this.props.change(\"birthdate\", target.value);\n };\n\n onJobChange = ({ target }) => {\n const selectedIndex = target.options.selectedIndex;\n const id = target.options[selectedIndex].getAttribute('id');\n this.props.change(\"job_code\", id);\n };\n\n onProvinceChange = ({ target }) => {\n const selectedIndex = target.options.selectedIndex;\n const id = target.options[selectedIndex].getAttribute('id');\n const value = target.options[selectedIndex].getAttribute('value');;\n const province = this.props.provinces.find(province => province.name === value);\n this.setState({\n provinceId: id,\n provinceKey: province.id,\n provinceName: value,\n districtId: 0,\n subDistrictId: 0,\n });\n this.props.change(\"address.amphur\", \"\");\n this.props.change(\"address.tumbon\", \"\");\n this.props.change(\"address.zip\", \"\");\n };\n\n onDistrictChange = ({ target }) => {\n const selectedIndex = target.options.selectedIndex;\n const id = target.options[selectedIndex].getAttribute('id');\n const value = target.options[selectedIndex].getAttribute('value');\n const district = this.props.districts.find(district => district.name === value && district.provinceID === this.state.provinceKey);\n this.setState({\n districtId: id,\n districtKey: district.id,\n districtName: value,\n subDistrictId: 0\n });\n this.props.change(\"address.tumbon\", \"\");\n this.props.change(\"address.zip\", \"\");\n }\n\n onSubDistrictChange = ({ target }) => {\n const selectedIndex = target.options.selectedIndex;\n const id = target.options[selectedIndex].getAttribute('id');\n const value = target.options[selectedIndex].getAttribute('value');\n const subDistrict = this.props.subDistricts.find(\n subDistrict => subDistrict.name === value\n && subDistrict.provinceID === this.state.provinceKey\n && subDistrict.districtID === this.state.districtKey)\n this.setState({\n subDistrictId: id,\n subDistrictKey: subDistrict.id,\n subDistrictName: value\n });\n this.props.change(\"address.zip\", \"\");\n }\n\n render() {\n\n if (this.props.initialValues && this.props.initialValues.title) {\n this.props.initialValues.title = this.getTitleVal(this.props.initialValues.title)\n }\n\n const address_company = this.props.address_company.map((project) =>\n \n );\n address_company.unshift(\n \n );\n const address_delivery = this.props.address_delivery.map((project) =>\n \n );\n address_delivery.unshift(\n \n );\n const titleItems = this.props.titles.map((title) =>\n \n );\n titleItems.unshift(\n \n );\n\n const provinceItems = this.props.provinces.map((province, index) =>\n \n );\n provinceItems.unshift(\n \n );\n\n const districtItems = this.getDistrict().map((district, index) =>\n \n );\n districtItems.unshift(\n \n );\n\n const subDistrictItems = this.getSubDistrict().map((subDistrict, index) =>\n \n );\n subDistrictItems.unshift(\n \n );\n\n const zipcodeItems = this.getZipcode().map((zipcode, index) =>\n \n );\n zipcodeItems.unshift(\n \n );\n\n const listJob = this.props.initialValues ? this.props.initialValues.listJob : undefined\n\n const listJobItems = listJob ?\n this.props.initialValues.listJob.map((job) =>\n \n )\n : '';\n if (listJobItems !== '') {\n listJobItems.unshift(\n \n )\n }\n\n const { onCustomerSubmit, handleSubmit, submitting, invalid } = this.props;\n return (\n
    \n
    \n
    \n
    \n
    \n \n \n {listJob ?\n <>\n
    \n \n
    \n \n \n :\n <>\n \n \n }\n {this.props.address_company &&\n \n }\n {this.props.address_delivery &&\n \n }\n \n \n \n \n \n \n
    \n
    \n \n \n \n \n \n \n \n \n \n \n \n
    \n
    \n
    \n \n \n
    \n );\n }\n}\n\nconst required = value => value ? undefined : msg.custRequireFiled;\nconst zero = value => value !== \"0\" ? undefined : msg.custRequireFiled;\nconst idPhone = value => value && /^[0-9]{10}$/.test(value) ? undefined : \"กรุณาใส่หมายเลขให้ถูกต้อง\";\nconst idCard = value => value && /^[0-9]{13}$/.test(value) ? undefined : msg.custInvalidIdCard;\n\nconst handleSubmitSuccess = (result, dispatch, props) => {\n let message = msg.errMessage;\n let success = false;\n if (result.payload) {\n success = result.payload.customer_id ? true : false;\n if (success) {\n message = msg.custSuccessUpdate;\n }\n }\n props.onShowSubmitModal(message, success);\n}\n\nconst handleSubmitFail = (errors, dispatch, props) => {\n console.log(errors);\n props.onShowSubmitModal(msg.errMessage);\n}\n\n// const mapStateToProps = ({ customer }) => {\n// return ({\n// initialValues: customer.data\n// \n// })\n// };\n\nconst mapStateToProps = state => ({\n initialValues: state.customer.data,\n titles: state.titles.items,\n address_delivery: state.titles.delivery,\n address_company: state.titles.company,\n provinces: state.address.provinces,\n districts: state.address.districts,\n subDistricts: state.address.subDistricts,\n zipcodes: state.address.zipCodes,\n l: state.i18n.locale\n});\n\nRegisterForm = reduxForm({\n form: \"register\",\n enableReinitialize: true,\n onSubmitSuccess: handleSubmitSuccess,\n onSubmitFail: handleSubmitFail\n})(RegisterForm);\n\nexport default connect(\n mapStateToProps, {\n fetchProvinces,\n fetchDistricts,\n fetchSubDistricts,\n fetchZipCodes,\n})(RegisterForm);\n\n","import React, { Component } from \"react\";\nimport { connect } from \"react-redux\";\nimport PropTypes from \"prop-types\";\nimport { fetchCustomer, updateCustomer, updateOrdersEditCustomer } from \"../../store/register/customerAction\";\nimport { fetchTitles, fetchAddressProject, fetchAddressCompany } from \"../../store/query/queryAction\";\nimport { msg, config } from \"../../constants\"\nimport RegisterHeader from \"./RegisterHeader\"\nimport RegisterForm from \"./RegisterForm\"\nimport RegisterModal from \"./RegisterModal\"\nimport { Modal, ModalBody, Spinner } from 'reactstrap';\n\nimport axios from 'axios';\n\nclass registerPage extends Component {\n state = {\n mode: \"\", // View, Edit, Expire\n modalSubmit: false,\n modalOrder: false,\n message: \"\",\n submit: false,\n isFirstTime: true,\n modalIsOpen: false\n };\n\n\n async componentDidMount() {\n\n let resp = await axios.post(config.apiUrl + \"/login/gtkn\", {});\n\n // if (parseInt(resp.data.code) === 200) {\n // localStorage.setItem('sys_token', resp.data.token);\n // }\n \n const { project, customerID } = this.props;\n const params = { project_id: project.project_id, customer_id: customerID };\n this.props.fetchCustomer(params);\n this.props.fetchTitles();\n this.props.fetchAddressProject(params);\n this.props.fetchAddressCompany(params);\n }\n\n componentWillReceiveProps(nextProps) {\n const { customer, project } = nextProps;\n if (customer && this.state.isFirstTime) {\n let mode = \"Expire\";\n if (project.project_status === \"A\" && project.order_status === 'A') {\n mode = customer.id_card ? \"View\" : \"Edit\";\n }\n this.setState({\n mode: mode,\n isFirstTime: false\n })\n }\n }\n\n openModal = () => {\n this.setState({ modalIsOpen: true });\n }\n closeModal = () => {\n this.setState({ modalIsOpen: false });\n }\n\n handleEdit = mode => {\n if (this.props.orders.length > 0) {\n this.showOrderModal();\n } else {\n this.enableEdit(mode);\n }\n };\n\n enableEdit = (mode) => {\n this.setState({\n mode: mode,\n });\n }\n\n checkMode = () => {\n return this.state.mode === \"Edit\" ? false : true\n };\n\n showOrderModal = () => {\n this.setState({\n modalOrder: true,\n });\n }\n\n showSubmitModal = (message, success) => {\n this.setState({\n modalSubmit: true,\n message: message,\n submit: success,\n });\n }\n\n handleOrderModal = (visible, mode) => {\n this.setState({\n modalOrder: visible,\n mode: mode\n });\n if (mode === 'Edit') {\n const { project, customerID } = this.props;\n const params = { project_id: project.project_id, customer_id: customerID };\n this.props.updateOrdersEditCustomer(params);\n }\n };\n\n handleSubmitModal = (visible) => {\n this.setState({\n modalSubmit: visible\n });\n };\n\n render() {\n const { formValues, updateCustomer } = this.props;\n const customStyles = {\n textAlign: 'center',\n top: '40%',\n }\n if (this.state.submit && this.state.modalSubmit === false) {\n window.location = config.baseUrl + \"/shop/\" + this.props.project.project_encrypt;\n }\n return (\n
    \n
    \n \n updateCustomer(formValues)}\n onShowSubmitModal={this.showSubmitModal}\n openModel={this.openModal}\n closeModal={this.closeModal}\n disabled={this.checkMode()} />\n this.handleOrderModal(false, \"View\")}\n onOK={() => this.handleOrderModal(false, \"Edit\")}\n showCancel={true}\n title=\"\"\n subTitle={msg.custCancelOrder}\n detail=\"\" />\n this.handleSubmitModal(false)}\n title=\"\" subTitle={this.state.message} detail=\"\" />\n \n \n \n {' ' + msg.register}\n \n \n
    \n
    \n );\n }\n}\n\nregisterPage.propTypes = {\n fetchCustomer: PropTypes.func.isRequired,\n updateCustomer: PropTypes.func.isRequired,\n updateOrdersEditCustomer: PropTypes.func.isRequired,\n fetchTitles: PropTypes.func.isRequired,\n isFetching: PropTypes.bool\n};\n\nconst mapStateToProps = state => ({\n formValues: state.form.register ? state.form.register.values : null,\n project: state.project.info,\n orders: state.orders.items,\n customer: state.customer.data,\n titles: state.titles,\n customerID: state.login ? state.login.customerID : \"cus001\",\n isFetching: state.customer.isFetching\n});\n\nexport default connect(mapStateToProps, {\n fetchCustomer,\n updateCustomer,\n updateOrdersEditCustomer,\n fetchTitles,\n fetchAddressProject,\n fetchAddressCompany\n})(registerPage);","import CallApi from \"../../util/CallApi\";\n\nexport const FETCH_ADDRESS = \"FETCH_ADDRESS\";\nexport const FETCH_ADDRESS_SUCCESS = \"FETCH_BRANDS_SUCCESS\";\nexport const FETCH_ADDRESS_FAILURE = \"FETCH_ADDRESS_FAILURE\";\n\nconst callApi = new CallApi();\n\nexport const fetchAddress = params => dispatch => {\n dispatch({ type: FETCH_ADDRESS });\n return callApi\n .postSecurity(\"/query/address\", params)\n .then(data => {\n dispatch({ type: FETCH_ADDRESS_SUCCESS, payload: data });\n })\n .catch(error => dispatch({ type: FETCH_ADDRESS_FAILURE }));\n};\n","import React, { Component } from \"react\";\n\nimport { Modal } from \"reactstrap\";\n\nclass modal extends Component {\n state = {\n modal: this.props.modal\n };\n\n componentWillReceiveProps(next) {\n // console.log(\"output: modal -> componentWillReceiveProps -> next\", next);\n if (next.modal === \"click\") {\n this.setState(prevState => ({\n modal: !prevState.modal\n }));\n }\n }\n\n toggle = () => {\n this.setState(prevState => ({\n modal: !prevState.modal\n }));\n };\n\n render() {\n return (\n \n
    \n
    \n

    {this.props.text}

    \n
    \n
    \n \n ตกลง\n \n
    \n
    \n \n );\n }\n}\nexport default modal;\n","import React, { Component } from \"react\";\n\nimport { Modal } from \"reactstrap\";\nimport { config, msg } from \"../../constants\";\nimport CallApi from \"../../util/CallApi\";\nimport { connect } from \"react-redux\";\nimport PropTypes from \"prop-types\";\nimport { fetchOrders } from \"../../store/orders/ordersAction\";\nimport { toggleDetailModal, updateDetail } from \"../../store/orders/ordersAction\";\nimport { fetchProjectAddrLabel, fetchProjectMsisdn } from \"../../store/project/projectAction\";\nimport { toggleAlert } from \"../../store/alertbox/alertboxAction\";\nimport axios from \"axios\";\n\nconst callApi = new CallApi();\nconst locale = require(\"react-redux-i18n\").I18n;\n\nclass DetailModal extends Component {\n\n state = {\n normalMode: true,\n msisdnList: [],\n msisdnSelect: '',\n msisdnValiCode: '',\n msisdnValiDate: false,\n msisdnValiMsg: msg.custErrExistMsisdn,\n detailModal: this.props.modal,\n addressDelively: this.props.address_delivery ? \"at006\" : \"at003\",\n addressBill: 'at002',\n IRModal: false,\n existNumModal: false,\n provinceBillId: 0,\n districtBillId: 0,\n subDistrictBillId: 0,\n msisdnData: [],\n orderDetail: {\n msisdn_type: \"new\",\n msisdn: \"\",\n ir_flag: false,\n address_delivery: {\n address_type: this.props.address_delivery ? \"at006\" : \"at003\",\n building_name: '',\n floors: '',\n moo: '',\n houseno: '',\n room_no: '',\n soi: '',\n streetname: '',\n city: '',\n amphur: '',\n tumbon: '',\n zip: ''\n },\n address_bill: {\n address_type: \"at002\",\n building_name: '',\n floors: '',\n moo: '',\n houseno: '',\n room_no: '',\n soi: '',\n streetname: '',\n city: '',\n amphur: '',\n tumbon: '',\n zip: ''\n }\n },\n msisdn: '',\n ir_flag: false,\n msisdn_type: '',\n provinceDeliveryId: 0,\n districtDeliveryId: 0,\n subDistrictDeliveryId: 0,\n checkMsisdn: \"\",\n errors: {\n address_delivery: {\n city: \"\",\n amphur: \"\",\n tumbon: \"\",\n zip: \"\"\n },\n address_bill: {\n city: \"\",\n amphur: \"\",\n tumbon: \"\",\n zip: \"\"\n }\n }\n };\n\n componentDidMount = async () => {\n\n let resp = await axios.post(config.apiUrl + \"/login/gtkn\", {});\n\n // if (parseInt(resp.data.code) === 200) {\n // localStorage.setItem('sys_token', resp.data.token);\n // }\n\n this.props.fetchProjectAddrLabel();\n }\n\n // componentWillMount() {\n // this.props.fetchProjectAddrLabel();\n // }\n\n\n componentWillReceiveProps(next) {\n if (next.order.order_detail) {\n console.log('have new order')\n const orderDetail = next.order.order_detail;\n delete orderDetail[\"msisdn_display\"];\n delete orderDetail[\"address_bill_type\"];\n delete orderDetail[\"address_delivery_type\"];\n delete orderDetail[\"address_bill_display\"];\n delete orderDetail[\"address_delivery_display\"];\n\n if (orderDetail.address_delivery !== '' && orderDetail.hasOwnProperty('address_delivery')) {\n if (typeof orderDetail.address_delivery.address_type !== \"undefined\") {\n this.setState({ addressDelively: orderDetail.address_delivery.address_type });\n }\n }\n if (orderDetail.address_bill !== '' && orderDetail.hasOwnProperty('address_bill')) {\n if (typeof orderDetail.address_bill.address_type !== \"undefined\") {\n this.setState({ addressBill: orderDetail.address_bill.address_type });\n }\n }\n if (orderDetail.hasOwnProperty('address_delivery') && orderDetail.hasOwnProperty('address_bill')) {\n if (orderDetail.address_delivery.address_type !== 'at004' && orderDetail.address_bill.address_type !== 'at004') {\n\n this.setState({\n msisdnData: next.order.msisdn_selected || [],\n orderDetail: {\n ...orderDetail,\n address_delivery: {\n ...orderDetail.address_delivery,\n address_type: this.state.orderDetail.address_delivery.address_type,\n building_name: '',\n floors: '',\n moo: '',\n houseno: '',\n room_no: '',\n soi: '',\n streetname: '',\n city: '',\n amphur: '',\n tumbon: '',\n zip: ''\n },\n address_bill: {\n ...orderDetail.address_bill,\n address_type: this.state.orderDetail.address_bill.address_type,\n building_name: '',\n floors: '',\n moo: '',\n houseno: '',\n room_no: '',\n soi: '',\n streetname: '',\n city: '',\n amphur: '',\n tumbon: '',\n zip: ''\n }\n }\n });\n }\n else if (orderDetail.address_delivery.address_type === 'at004' && orderDetail.address_bill.address_type !== 'at004') {\n this.setState({\n orderDetail: {\n ...orderDetail,\n address_delivery: {\n ...orderDetail.address_delivery\n },\n address_bill: {\n ...orderDetail.address_bill,\n address_type: this.state.orderDetail.address_bill.address_type,\n building_name: '',\n floors: '',\n moo: '',\n houseno: '',\n room_no: '',\n soi: '',\n streetname: '',\n city: '',\n amphur: '',\n tumbon: '',\n zip: ''\n }\n }\n });\n }\n else if (orderDetail.address_delivery.address_type !== 'at004' && orderDetail.address_bill.address_type === 'at004') {\n this.setState({\n orderDetail: {\n ...orderDetail,\n address_delivery: {\n ...orderDetail.address_delivery,\n address_type: this.state.orderDetail.address_delivery.address_type,\n building_name: '',\n floors: '',\n moo: '',\n houseno: '',\n room_no: '',\n soi: '',\n streetname: '',\n city: '',\n amphur: '',\n tumbon: '',\n zip: ''\n },\n address_bill: {\n ...orderDetail.address_bill\n }\n }\n });\n }\n else {\n this.setState({ ...this.state.orderDetail, orderDetail });\n }\n\n }\n\n if (orderDetail.hasOwnProperty('address_delivery') && orderDetail.address_delivery.address_type === \"at004\") {\n const provinceName = orderDetail.address_delivery.city;\n const province = next.provincesData.find(province => province.name === provinceName);\n\n const districtName = orderDetail.address_delivery.amphur;\n const district = next.districtsData.find(district => district.name === districtName);\n\n const subDistrictName = orderDetail.address_delivery.tumbon;\n const subDistrict = next.subDistrictsData.find(sdistrict => sdistrict.name === subDistrictName);\n\n if (typeof province !== 'undefined' && typeof district !== 'undefined' && typeof subDistrict !== 'undefined') {\n this.setState({\n provinceDeliveryId: province.id,\n districtDeliveryId: district.id,\n subDistrictDeliveryId: subDistrict.id,\n });\n }\n }\n\n if (orderDetail.hasOwnProperty('address_bill') && orderDetail.address_bill.address_type === \"at004\") {\n const provinceName = orderDetail.address_bill.city;\n const province = next.provincesData.find(province => province.name === provinceName);\n const districtName = orderDetail.address_bill.amphur;\n const district = next.districtsData.find(district => district.name === districtName);\n const subDistrictName = orderDetail.address_bill.tumbon;\n const subDistrict = next.subDistrictsData.find(sdistrict => sdistrict.name === subDistrictName);\n if (typeof province !== 'undefined' && typeof district !== 'undefined' && typeof subDistrict !== 'undefined') {\n this.setState({\n provinceBillId: province.id,\n districtBillId: district.id,\n subDistrictBillId: subDistrict.id,\n });\n }\n }\n }\n if (next.project.billaddress_type_id === 'bt002') {\n this.setState({\n addressBill: 'at003',\n orderDetail: {\n ...this.state.orderDetail,\n address_bill: {\n ...this.state.orderDetail.address_bill,\n address_type: 'at003'\n }\n }\n })\n }\n }\n\n toggleIRBox = async (e) => {\n const { checked } = e.target;\n await this.setState({\n orderDetail: {\n ...this.state.orderDetail,\n ir_flag: checked\n }\n });\n if (checked) {\n this.setState({\n IRModal: !this.state.IRModal,\n existNumModal: false\n });\n }\n }\n\n closeModal = () => {\n this.setState({\n IRModal: false,\n existNumModal: false\n });\n }\n\n toggleExistNumber = (e) => {\n const { checked, name, value } = e.target;\n if (checked) {\n this.setState({\n existNumModal: !this.state.existNumModal,\n IRModal: false,\n orderDetail: {\n ...this.state.orderDetail,\n [name]: value\n }\n });\n }\n }\n\n changeAddressType = e => {\n const { value, name } = e.target;\n const addrType = e.target.getAttribute('addr_type');\n let addressDetail = { ...this.state.orderDetail[addrType], address_type: value };\n this.setState({\n [name]: value,\n orderDetail: {\n ...this.state.orderDetail,\n address_bill: {\n ...this.state.orderDetail.address_bill\n },\n address_delivery: {\n ...this.state.orderDetail.address_delivery\n },\n [addrType]: addressDetail\n\n\n }\n });\n }\n\n selectMsisdn = (msisdn) => {\n this.setState({\n msisdnSelect: msisdn\n })\n }\n\n toggle = () => {\n this.setState({\n checkMsisdn: '',\n normalMode: true,\n msisdnList: [],\n msisdnSelect: '',\n })\n this.props.toggleDetailModal({});\n };\n\n getDistrict = type => {\n if (type === 'delivery') {\n return this.props.districtsData.filter(district =>\n district.provinceID === this.state.provinceDeliveryId\n )\n }\n else if (type === 'bill') {\n return this.props.districtsData.filter(district =>\n district.provinceID === this.state.provinceBillId\n )\n }\n };\n\n getSubDistrict = type => {\n if (type === 'delivery') {\n return this.props.subDistrictsData.filter(subDistrict =>\n subDistrict.provinceID === this.state.provinceDeliveryId && subDistrict.districtID === this.state.districtDeliveryId\n )\n }\n else if (type === 'bill') {\n return this.props.subDistrictsData.filter(subDistrict =>\n subDistrict.provinceID === this.state.provinceBillId && subDistrict.districtID === this.state.districtBillId\n )\n }\n };\n\n getZipcode = type => {\n if (type === 'delivery') {\n return this.props.zipcodesData.filter(zipcode =>\n zipcode.provinceID === this.state.provinceDeliveryId && zipcode.districtID === this.state.districtDeliveryId && zipcode.subDistrictID === this.state.subDistrictDeliveryId\n )\n }\n else if (type === 'bill') {\n return this.props.zipcodesData.filter(zipcode =>\n zipcode.provinceID === this.state.provinceBillId && zipcode.districtID === this.state.districtBillId && zipcode.subDistrictID === this.state.subDistrictBillId\n )\n }\n };\n\n onProvinceChange = ({ target }) => {\n const selectedIndex = target.options.selectedIndex;\n const id = target.options[selectedIndex].getAttribute('id');\n const type = target.options[selectedIndex].getAttribute('type');\n const addrType = \"address_\" + type;\n const provinceType = \"province\" + type.charAt(0).toUpperCase() + type.slice(1) + \"Id\";\n this.setState({\n [provinceType]: id,\n districtId: 0,\n subDistrictId: 0,\n orderDetail: {\n ...this.state.orderDetail,\n [addrType]: {\n ...this.state.orderDetail[addrType],\n city: target.value,\n amphur: \"\",\n tumbon: \"\",\n zip: \"\"\n }\n }\n });\n if (target.value !== '') {\n this.setState({\n errors: {\n address_delivery: {\n ...this.state.errors.address_delivery,\n },\n address_bill: {\n ...this.state.errors.address_bill,\n },\n [addrType]: {\n ...this.state.errors[addrType],\n city: ''\n }\n }\n });\n }\n };\n\n onDistrictChange = ({ target }) => {\n const selectedIndex = target.options.selectedIndex;\n const id = target.options[selectedIndex].getAttribute('id');\n const type = target.options[selectedIndex].getAttribute('type');\n const addrType = \"address_\" + type;\n const districtType = \"district\" + type.charAt(0).toUpperCase() + type.slice(1) + \"Id\";\n this.setState({\n [districtType]: id,\n subDistrictId: 0,\n orderDetail: {\n ...this.state.orderDetail,\n [addrType]: {\n ...this.state.orderDetail[addrType],\n amphur: target.value,\n tumbon: \"\",\n zip: \"\"\n }\n }\n });\n if (target.value !== '') {\n this.setState({\n errors: {\n address_delivery: {\n ...this.state.errors.address_delivery,\n },\n address_bill: {\n ...this.state.errors.address_bill,\n },\n [addrType]: {\n ...this.state.errors[addrType],\n amphur: ''\n }\n }\n });\n }\n }\n\n onSubDistrictChange = ({ target }) => {\n const selectedIndex = target.options.selectedIndex;\n const id = target.options[selectedIndex].getAttribute('id');\n const type = target.options[selectedIndex].getAttribute('type');\n const addrType = \"address_\" + type;\n const subDistrictType = \"subDistrict\" + type.charAt(0).toUpperCase() + type.slice(1) + \"Id\";\n this.setState({\n [subDistrictType]: id,\n orderDetail: {\n ...this.state.orderDetail,\n [addrType]: {\n ...this.state.orderDetail[addrType],\n tumbon: target.value\n }\n }\n });\n\n if (target.value !== '') {\n this.setState({\n errors: {\n address_delivery: {\n ...this.state.errors.address_delivery,\n },\n address_bill: {\n ...this.state.errors.address_bill,\n },\n [addrType]: {\n ...this.state.errors[addrType],\n tumbon: ''\n }\n }\n });\n }\n }\n\n handleMChange = e => {\n const { target } = e;\n const value = target.type === 'checkbox' ? target.checked : target.value;\n const { name } = target;\n var orderDetail = {}\n orderDetail[name] = value;\n this.setState({\n orderDetail\n });\n }\n\n handleOrderChange = e => {\n const { target } = e;\n const value = target.type === 'checkbox' ? target.checked : target.value;\n const { name } = target;\n this.setState({\n checkMsisdn: '',\n msisdnValiCode: '',\n msisdnValiDate: false,\n orderDetail: {\n ...this.state.orderDetail,\n msisdn: '',\n [name]: value\n }\n });\n }\n\n handleInputAddrChange = e => {\n const { target } = e;\n const value = target.type === 'checkbox' ? target.checked : target.value;\n const { name } = target;\n const typeAddr = target.getAttribute('typeaddr');\n const address = 'address_' + typeAddr;\n let orderDetail = { ...this.state.orderDetail };\n orderDetail[address][name] = value;\n this.setState({\n orderDetail\n });\n\n if (name === \"zip\" && target.value !== '') {\n this.setState({\n errors: {\n address_delivery: {\n ...this.state.errors.address_delivery,\n },\n address_bill: {\n ...this.state.errors.address_bill,\n },\n [address]: {\n ...this.state.errors[address],\n zip: ''\n }\n }\n });\n }\n }\n\n chkStatusDisable = () => {\n if (this.props.order.order_status === 'N' || this.props.order.order_status === 'W') {\n if (this.props.project.order_status === 'A') {\n return false\n } else {\n return true\n }\n } else {\n return true\n }\n }\n\n checkedBoxIrFlag = () => {\n return this.props.order.ir_flag === 1 ? true : false;\n }\n\n\n\n onVerifyMsisdn = () => {\n const msisdn = this.state.orderDetail.msisdn;\n const mock = false;\n const pass = true;\n if (msisdn === '') {\n return false\n }\n if (mock) {\n if (pass) {\n this.setState({ checkMsisdn: 'pass' });\n }\n else {\n this.setState({ checkMsisdn: 'fail' });\n }\n }\n else {\n callApi.postSecurity(\"/verifynumber\", {\n project_id: this.props.project.project_id,\n msisdn: msisdn,\n order_id: this.props.order.order_id\n })\n .then(data => {\n this.setState({\n msisdnValiDate: true\n });\n if (data.code === \"0000\") {\n this.setState({\n msisdnValiCode: data.code,\n checkMsisdn: 'pass'\n });\n }\n else {\n this.setState({\n msisdnValiCode: data.code,\n checkMsisdn: 'fail',\n msisdnValiMsg: data.text ? data.text : this.state.msisdnValiMsg\n });\n }\n })\n .catch(error => {\n alert(msg.errMessage);\n });\n }\n }\n\n validateOrderDetail = () => {\n let passValidate = true;\n let addrType = [];\n const state = this.state;\n\n\n if (this.state.addressDelively === \"at004\") {\n addrType.push(\"address_delivery\");\n }\n if (this.state.addressBill === \"at004\") {\n addrType.push(\"address_bill\");\n }\n let errors = {\n msisdnEmpty: \"\",\n address_delivery: {\n city: \"\",\n amphur: \"\",\n tumbon: \"\",\n zip: \"\"\n },\n address_bill: {\n city: \"\",\n amphur: \"\",\n tumbon: \"\",\n zip: \"\"\n }\n }\n addrType.forEach(function (v) {\n if (state.orderDetail[v].city === \"\" || typeof state.orderDetail[v].city == \"undefined\") {\n passValidate = false;\n errors[v].city = locale.t(\"validateRequire\");\n }\n if (state.orderDetail[v].amphur === \"\" || typeof state.orderDetail[v].amphur == \"undefined\") {\n passValidate = false;\n errors[v].amphur = locale.t(\"validateRequire\");\n }\n if (state.orderDetail[v].tumbon === \"\" || typeof state.orderDetail[v].tumbon == \"undefined\") {\n passValidate = false;\n errors[v].tumbon = locale.t(\"validateRequire\");\n\n }\n if (state.orderDetail[v].zip === \"\" || typeof state.orderDetail[v].zip == \"undefined\") {\n passValidate = false;\n errors[v].zip = locale.t(\"validateRequire\");\n }\n });\n\n if (state.orderDetail.msisdn_type === \"existing\" && (state.orderDetail.msisdn === \"\" || state.orderDetail.msisdn === undefined || state.orderDetail.msisdn === null)) {\n passValidate = false;\n errors.msisdnEmpty = locale.t(\"validateRequire\");\n }\n if (state.orderDetail.msisdn_type === \"existing\" && state.checkMsisdn === '') {\n passValidate = false;\n state.checkMsisdn = 'check'\n }\n if (state.orderDetail.msisdn_type === \"existing\" && state.checkMsisdn === 'fail') {\n passValidate = true;\n }\n this.setState({\n ...this.state,\n errors\n })\n return passValidate;\n }\n\n clickChooseMsisdn = () => {\n this.loadMsisdn()\n // console.log('choose Msisdn')\n this.setState({\n normalMode: false\n })\n }\n\n loadMsisdn = () => {\n const thisComp = this\n callApi.postSecurity(\"/project/msisdn/\" + this.props.project.project_id, {\n x: 1\n })\n .then(data => {\n console.log('/project/msisdn/data', data)\n thisComp.setState({\n\n msisdnList: data,\n })\n }).catch(error => {\n console.log(error)\n });\n }\n\n blackToNormal = () => {\n // console.log('choose Msisdn')\n this.setState({\n normalMode: true\n })\n }\n\n sentMarkMsisdn = () => {\n const thisComp = this\n console.log('sentMarkMsisdn log prop ', thisComp.props)\n // console.log('sentMarkMsisdn log state ',thisComp.state)\n const msisdnSelect = this.state.msisdnSelect\n const sentParam = {\n project_id: this.props.project.project_id,\n msisdn: msisdnSelect,\n order_id: this.props.order.order_id\n }\n\n callApi.postSecurity(\"/order/add/msisdn/\", sentParam)\n .then(data => {\n console.log('/order/add/msisdn/', data)\n\n this.props.fetchOrders({\n project_id: this.props.project.project_id,\n customer_id: this.props.customerID\n });\n\n thisComp.setState({\n msisdnData: [{ msisdn: msisdnSelect }],\n msisdnSelect: '',\n normalMode: true\n })\n\n }).catch(error => {\n console.log(error)\n });\n }\n\n handleChangeInput = event => {\n const { value, maxLength } = event.target;\n const message = value.slice(0, maxLength);\n this.setState({\n checkMsisdn: '',\n orderDetail: {\n ...this.state.orderDetail,\n msisdn: message\n }\n });\n };\n\n handleSubmit = () => {\n\n if (this.validateOrderDetail()) {\n const $state = this.state;\n const addrTypeDelivery = this.props.addressLabel.find(function (val) {\n return val.address_type_id === $state.orderDetail.address_delivery.address_type;\n });\n var addrTypeBill = {};\n if ($state.addressBill === 'at003') {\n addrTypeBill = this.props.projectAddrData\n } else {\n addrTypeBill = this.props.addressLabel.find(function (val) {\n return val.address_type_id === $state.orderDetail.address_bill.address_type;\n });\n }\n const emptyAddress = {\n building_name: '',\n floors: '',\n moo: '',\n houseno: '',\n room_no: '',\n soi: '',\n streetname: '',\n city: '',\n amphur: '',\n tumbon: '',\n zip: ''\n }\n let address_delivery = { ...this.state.orderDetail.address_delivery, address_name: addrTypeDelivery.address_type_id };\n let address_bill = { ...this.state.orderDetail.address_bill, address_name: addrTypeBill.address_type_id }\n if (this.state.orderDetail.address_delivery.address_type !== 'at004') {\n address_delivery = { ...address_delivery, ...emptyAddress }\n }\n if (this.state.orderDetail.address_bill.address_type !== 'at004') {\n address_bill = { ...address_bill, ...emptyAddress }\n }\n\n this.setState({\n orderDetail: {\n ...this.state.orderDetail,\n project_id: this.props.order.project_id,\n customer_id: this.props.customerID,\n product_id: this.props.order.product_id,\n address_bill: address_bill,\n address_delivery: address_delivery,\n msisdn_type: this.state.orderDetail.msisdn_type === null ? 'new' : this.state.orderDetail.msisdn_type,\n ir_flag: this.state.orderDetail.ir_flag !== undefined ?\n this.state.orderDetail.ir_flag\n :\n this.props.order.ir_flag ?\n this.props.order.ir_flag === 1 ? true : false\n : false,\n msisdnValiCode: this.state.msisdnValiCode,\n msisdnValiDate: this.state.msisdnValiDate\n }\n }, async () => {\n const orderData = { ...this.props.order, order_detail: this.state.orderDetail };\n await this.props.updateDetail(orderData);\n this.props.toggleDetailModal({});\n window.location.reload();\n });\n } else {\n this.props.toggleAlert(msg.custRequireFiled);\n }\n }\n\n render() {\n const addrType = this.props.addressLabel;\n let addrTypeBill;\n if (this.props.projectData.billaddress_type_id === \"bt002\") {\n addrTypeBill = addrType.find(function (addr) {\n return addr.address_type_id === 'at003';\n });\n addrTypeBill = addrTypeBill ? [addrTypeBill] : [];\n }\n else {\n addrTypeBill = addrType;\n }\n return (\n <>\n \n {(!this.state.normalMode) ?
    \n
    \n
    {'กรุณาเลือกหมายเลขโทรศัพท์ที่ท่านต้องการ'}
    \n \n
    \n
    \n
    \n
    \n
    {'***ในขั้นตอนการเลือกหมายเลขใหม่ แจ้งกรณีต้องการเปลี่ยนหมายเลข จะต้องลบ Order และจองสินค้าใหม่***'}
    \n
    \n
    \n
    \n
    \n {this.state.msisdnList.map(m => (parseInt(m.cn) !== 0) ? null :
    {\n this.selectMsisdn(m.msisdn)\n }} style={{ cursor: 'pointer', padding: '5px', textAlign: 'center', margin: '5px', backgroundColor: (parseInt(this.state.msisdnSelect) === parseInt(m.msisdn)) ? '#E91D25' : '#666666' }}>{m.msisdn}
    )}\n
    \n
    \n
    \n
    \n \n \n
    \n
    :
    \n
    \n
    {locale.t(\"detail\")}
    \n \n
    \n
    \n
    \n\n
    \n \n
    \n {/*
    \n \n {addrType.map((addr) =>\n \n )}\n\n \n
    */}\n\n {this.state.addressDelively === 'at002' && (\n \n )}\n {this.state.addressDelively === 'at003' && (\n \n )}\n {this.state.addressDelively === 'at004' && (\n \n )}\n {this.state.addressDelively === 'at005' && (\n \n )}\n {this.state.addressDelively === 'at006' && (\n \n )}\n\n\n
    \n
    \n
    \n \n
    \n {addrTypeBill.length !== 0 &&\n
    \n \n {addrTypeBill.map((addr) =>\n \n )}\n\n \n
    \n }\n {this.state.addressBill === 'at002' && (\n \n )}\n {this.state.addressBill === 'at003' && (\n \n )}\n {this.state.addressBill === 'at004' && (\n \n )}\n {this.state.addressBill === 'at005' && (\n \n )}\n {this.state.addressBill === 'at006' && (\n \n )}\n
    \n
    \n
    \n
    \n

    {locale.t(\"telNumberService\")}

    \n
    \n
    \n {(this.props.projectData.number_type_id === 'nt001' || this.props.projectData.number_type_id === 'nt004') &&\n <>\n \n {(this.props.projectData.number_type_id === 'nt004') ? ((this.state.msisdnData.length > 0) ? (
    {this.state.msisdnData[0].msisdn}
    ) :\n )\n : null}\n \n }\n {this.props.projectData.number_type_id === 'nt002' &&\n \n }\n\n {(this.props.projectData.number_type_id === 'nt003' || this.props.projectData.number_type_id === 'nt005') &&\n <>\n \n {(this.props.projectData.number_type_id === 'nt005') ? ((this.state.msisdnData.length > 0) ? (
    {this.state.msisdnData[0].msisdn}
    ) :\n )\n : null}\n \n \n }\n\n
    \n {(this.props.projectData.number_type_id === 'nt002' || this.props.projectData.number_type_id === 'nt003' || this.props.projectData.number_type_id === 'nt005') &&\n
    \n
    \n
    \n \n \n {(this.state.checkMsisdn === \"pass\" &&\n {msg.custSuccessExistMsisdn}\n )}\n {(this.state.checkMsisdn === \"fail\" &&\n {this.state.msisdnValiMsg} \n )}\n {(this.state.checkMsisdn === \"empty\" &&\n {locale.t(\"validateRequire\")}\n )}\n {(this.state.checkMsisdn === \"check\" &&\n {locale.t(\"validateCheck\")}\n )}\n\n \n ตรวจสอบ\n \n
    \n
    \n
    \n }\n\n\n
    \n {this.props.projectData.flag_ir === 1 ? (\n
    \n \n
    \n ) : ('')}\n\n
    \n
    \n \n\n
    \n

    {this.props.projectData.txt_ir_msg}

    \n
    \n
    \n \n {locale.t(\"ok\")}\n \n\n
    \n
    \n \n\n
    \n

    {this.props.projectData.txt_mnp_msg}

    \n
    \n
    \n \n {locale.t(\"ok\")}\n \n\n
    \n
    \n
    \n
    \n \n \n
    \n
    }\n
    \n\n \n );\n }\n}\n\nconst ThaiIDAddr = (props) => {\n\n const { title, firstname, lastname } = props.profile.user;\n const { address_name, building_name, houseno, moo, floors, soi, streetname, tumbon, amphur, city, zip } =\n props.address_type === 'at005' ?\n props.profile.address_company : props.address_type === 'at006' ? props.profile.address_delivery : props.profile.user.address;\n return (\n
    \n

    {title} {firstname} {lastname}

    \n

    {address_name}

    \n

    เลขที่ {houseno ? houseno : '-'} หมู่บ้าน/อาคาร {building_name ? building_name : '-'}\n {\" \"}ชั้น {floors ? floors : '-'}\n {\" \"}หมู่ {moo ? moo : '-'} ตรอก/ซอย {soi ? soi : '-'} ถนน {streetname ? streetname : '-'}\n {\" \"}ตำบล/แขวง {tumbon ? tumbon : '-'} อำเภอ/เขต {amphur ? amphur : '-'}\n {\" \"}จังหวัด {city ? city : '-'} รหัสไปรษณีย์ {zip ? zip : '-'}\n

    \n
    \n );\n}\n\nconst OfficeAddr = (props) => {\n const { title, firstname, lastname } = props.profile;\n const { address_name, building_name, houseno, moo, floors, soi, streetname, tumbon, amphur, city, zip } = props.address;\n return (\n
    \n

    {title} {firstname} {lastname}

    \n

    {address_name}

    \n

    เลขที่ {houseno ? houseno : '-'} หมู่บ้าน/อาคาร {building_name ? building_name : '-'}\n {\" \"}ชั้น {floors ? floors : '-'}\n {\" \"}หมู่ {moo ? moo : '-'} ตรอก/ซอย {soi ? soi : '-'} ถนน {streetname ? streetname : '-'}\n {\" \"}ตำบล/แขวง {tumbon ? tumbon : '-'} อำเภอ/เขต {amphur ? amphur : '-'}\n {\" \"}จังหวัด {city ? city : '-'} รหัสไปรษณีย์ {zip ? zip : '-'}\n

    \n
    \n );\n}\n\nconst CustomAddr = (props) => {\n const { provinces, getDistrict, getSubDistrict, getZipcode, onProvinceChange, onDistrictChange, onSubDistrictChange, addressDetail, handleInputAddrChange, type, errors } = props;\n const err_type = 'address_' + type\n\n const provinceItems = provinces.map((province) =>\n \n );\n provinceItems.unshift(\n \n );\n\n const districtItems = getDistrict(type).map((district) =>\n \n );\n districtItems.unshift(\n \n );\n\n const subDistrictItems = getSubDistrict(type).map((subDistrict) =>\n \n );\n subDistrictItems.unshift(\n \n );\n\n const zipcodeItems = getZipcode(type).map((zipcode) =>\n \n );\n zipcodeItems.unshift(\n \n );\n\n return (\n
    \n
    \n \n
    \n \n
    \n
    \n\n
    \n \n
    \n \n
    \n
    \n\n
    \n \n
    \n \n
    \n
    \n\n
    \n \n
    \n \n
    \n
    \n\n
    \n \n
    \n \n
    \n
    \n\n
    \n \n
    \n \n
    \n
    \n\n
    \n \n
    \n
    \n \n
    \n
    {errors[err_type].city}
    \n
    \n
    \n\n
    \n \n
    \n
    \n \n
    \n
    {errors[err_type].amphur}
    \n
    \n
    \n\n
    \n \n
    \n
    \n \n
    \n
    {errors[err_type].tumbon}
    \n
    \n
    \n\n
    \n \n
    \n
    \n \n
    \n
    {errors[err_type].zip}
    \n
    \n
    \n
    \n )\n}\n\nDetailModal.propTypes = {\n fetchOrders: PropTypes.func.isRequired,\n orders: PropTypes.array.isRequired,\n isFetching: PropTypes.bool\n};\n\nconst mapStateToProps = state => ({\n isDetailModalOpen: state.orders.isDetailModalOpen,\n toggleDetailModal: state.orders.toggleDetailModal,\n order: state.orders.order,\n addressLabel: state.project.address_label,\n address_company: state.project.address_company,\n address_delivery: state.project.address_delivery,\n project: state.project.info,\n customerID: state.login.customerID,\n user: state.customer.data,\n toggleAlert: PropTypes.func.isRequired,\n l: state.i18n.locale\n});\n\nexport default connect(mapStateToProps, {\n toggleDetailModal,\n fetchProjectAddrLabel,\n fetchProjectMsisdn,\n fetchOrders,\n toggleAlert,\n updateDetail\n})(DetailModal);","export const globalConstants = {\n IMPORT_DOCUMENT: 7,// MB.\n};","/* eslint-disable jsx-a11y/anchor-is-valid */\n/* eslint-disable jsx-a11y/alt-text */\nimport React, { Component } from \"react\";\n\nimport { Modal, ModalHeader, ModalBody, ModalFooter, Spinner } from \"reactstrap\";\nimport FileUploadProgress from \"react-fileupload-progress\";\nimport { connect } from \"react-redux\";\nimport PropTypes from \"prop-types\";\nimport {\n toggleDocModal,\n updateDoc,\n orderApprove\n} from \"../../store/orders/ordersAction\";\nimport { toggleAlert } from \"../../store/alertbox/alertboxAction\";\nimport { config, msg } from \"../../constants\";\nimport { globalConstants } from \"../../global-configs\";\n\nclass OrderModal extends Component {\n constructor(props) {\n super(props);\n // console.log('modalDoc------------------------', props);\n const docSets = (typeof props.order.doc_structures === 'undefined' || props.order.doc_structures === null || props.order.doc_structures === '') ? [] : JSON.parse(props.order.doc_structures);\n // console.log(docSets);\n this.state = {\n mainDocId: [1, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18],\n previewModal: false,\n previewUrl: null,\n pdfModal: false,\n acceptTerm: false,\n acceptTermInput: false,\n cssSpinner: '',\n cssSpinnerSubmit: '',\n thePdfId: '',\n pdfBlob: null,\n rawBlob: null,\n getFile: false,\n docSets: docSets,\n order: props.order,\n idx: props.idx,\n updatedoc: props.updatedoc,\n maxMB: globalConstants.IMPORT_DOCUMENT,\n alertModal: false,\n alertMsg: '',\n };\n };\n\n componentWillMount() {\n this.setState({\n cssSpinner: 'hide',\n cssSpinnerSubmit: 'hide'\n })\n }\n\n componentWillReceiveProps(next) {\n const docSets = (typeof next.order.doc_structures === 'undefined' || next.order.doc_structures === null || next.order.doc_structures === '') ? [] : JSON.parse(next.order.doc_structures);\n this.setState({\n order: next.order,\n docSets: docSets,\n idx: next.idx,\n updatedoc: next.updatedoc,\n alertModal: false,\n alertMsg: '',\n });\n }\n\n toggleTermInput = () => {\n this.setState(prevState => ({\n acceptTermInput: !prevState.acceptTermInput\n }));\n };\n\n\n togglePDFModal = async () => {\n var chkError = false\n this.setState({\n cssSpinner: ''\n })\n\n let thePdfUrl = `${config.generateUrlNew}/${this.state.order.project_id}/${this.state.order.order_id}`\n\n let thePdfId = 0;\n\n const docLoop = this.state.docSets.map(val => {\n if (this.state.mainDocId.indexOf(parseInt(val.id)) !== -1) {\n thePdfId = parseInt(val.id)\n }\n })\n\n console.log('this.state.mainDocId', this.state.mainDocId);\n console.log('this.state.docSets', this.state.docSets);\n\n switch (thePdfId) {\n case 1:\n case 8:\n case 9:\n case 10:\n thePdfUrl = `${config.generateUrlNew}/${this.state.order.project_id}/${this.state.order.order_id}`\n break\n case 11:\n thePdfUrl = `${config.generateUrlNew}/payroll/postpaid/${this.state.order.project_id}/${this.state.order.order_id}`\n break\n case 12:\n thePdfUrl = `${config.generateUrlNew}/payroll/hybrid/${this.state.order.project_id}/${this.state.order.order_id}`\n break\n case 13:\n thePdfUrl = `${config.generateUrlNew}/simonly/postpaid/${this.state.order.project_id}/${this.state.order.order_id}`\n break\n case 14:\n thePdfUrl = `${config.generateUrlNew}/simonly/hybrid/${this.state.order.project_id}/${this.state.order.order_id}`\n break\n case 15:\n thePdfUrl = `${config.generateUrlNew}/onetime/postpaid/${this.state.order.project_id}/${this.state.order.order_id}`\n break\n case 16:\n thePdfUrl = `${config.generateUrlNew}/onetime/hybrid/${this.state.order.project_id}/${this.state.order.order_id}`\n break\n case 17:\n thePdfUrl = `${config.generateUrlNew}/payroll/postpaid2/${this.state.order.project_id}/${this.state.order.order_id}`\n break\n case 18:\n thePdfUrl = `${config.generateUrlNew}/payroll/hybrid2/${this.state.order.project_id}/${this.state.order.order_id}`\n break\n default:\n\n }\n\n console.log('thePdfId', thePdfId)\n console.log('thePdfUrl', thePdfUrl)\n\n\n await fetch(thePdfUrl,\n {\n // method: \"GET\",\n method: \"POST\",\n headers: {\n Authorization: \"Bearer \" + localStorage.getItem(\"access_token\"),\n \"Access-Control-Allow-Origin\": \"*\",\n \"Access-Control-Allow-Headers\": \"Origin, X-Requested-With\",\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({ customer_id: this.state.order.customer_id })\n }\n ).then(res => res.blob()\n ).then(blob => {\n const objectURL = URL.createObjectURL(blob);\n this.setState({\n thePdfId: thePdfId,\n pdfBlob: objectURL,\n rawBlob: blob\n });\n }).catch(error => {\n chkError = true\n console.log(error);\n // this.props.toggleAlert(`ขออภัย ระบบไม่สามารถใช้งานได้ในขณะนี้ กรุณาลองใหม่ในภายหลัง`);\n this.openAlertModal('ขออภัย ระบบไม่สามารถใช้งานได้ในขณะนี้ กรุณาลองใหม่ในภายหลัง');\n });\n this.setState({\n cssSpinner: 'hide'\n })\n if (!chkError) {\n this.setState(prevState => ({\n pdfModal: !prevState.pdfModal\n }));\n\n if (!this.state.pdfModal) {\n setTimeout(() => {\n if (document.getElementById(\"idPDFModal\")) {\n document\n .getElementById(\"idPDFModal\")\n .parentElement.classList.add(\"modal-full\");\n }\n }, 400);\n }\n\n }\n };\n\n togglePreviewModal = async () => {\n const thisComp = this;\n thisComp.setState({\n previewModal: !thisComp.state.previewModal\n });\n };\n\n uploadBlobFile = () => {\n console.log('uploadBlobFile--------');\n document.getElementById('finalBtn').style.display = \"none\"\n this.setState({\n cssSpinnerSubmit: ''\n })\n var fd = new FormData();\n fd.append(\"file\", this.state.rawBlob, this.state.order.order_id + \".pdf\");\n const docSets = this.state.docSets;\n this.state.order.document_all.forEach(val => {\n // if (val.doc_type_id === 1 || val.doc_type_id === 8) {\n\n console.log('val.doc_type_id', val.doc_type_id)\n if (this.state.mainDocId.indexOf(parseInt(this.state.thePdfId)) !== -1 && parseInt(val.doc_type_id) === parseInt(this.state.thePdfId)) {\n console.log('this.state.thePdfId', this.state.thePdfId)\n const docSetFound = docSets.filter(v => (v.id === this.state.thePdfId));\n const docCode = (docSetFound.length > 0) ? docSetFound[0].code : '';\n const docId = (docSetFound.length > 0) ? docSetFound[0].id : '';\n console.log('docSetFound', docSetFound)\n\n const uploadUrlFull = `${config.uploadFileUrl}/project/doc/upload/bycode/${docCode}/${val.cdc_filetype_code}/${this.state.order.order_id}/${this.state.order.customer_id_card}`\n\n console.log('uploadUrlFull', uploadUrlFull)\n\n fetch(\n uploadUrlFull,\n {\n method: \"POST\",\n headers: {\n \"Access-Control-Allow-Origin\": \"*\",\n Authorization: \"Bearer \" + localStorage.getItem(\"access_token\")\n },\n body: fd\n }\n ).then(res => res.json()).then(data => {\n val.value = this.state.order.order_id + \".pdf\";\n val.key_id = data.file_id;\n var param = {\n ...val,\n code: docCode,\n doc_type_id: docId,\n doc_id: this.state.order.doc_id,\n order_id: this.state.order.order_id,\n value: this.state.order.order_id + \".pdf\",\n key_id: data.file_id,\n file_id: data.file_id,\n doc_code: data.doc_code,\n project_id: this.state.order.project_id,\n customer_id: this.state.order.customer_id\n };\n // this.props.updateDoc(param);\n\n var url = `${config.uploadFileUrl}/document/${this.state.order.order_id}`;\n // console.log('----------------End -------------------------');\n this.updateDoc(url, param);\n this.setState({\n cssSpinnerSubmit: '',\n thePdfId: 0\n })\n this.setState(prevState => ({\n pdfModal: !prevState.pdfModal\n }));\n });\n }\n });\n };\n\n onCloseModal = () => {\n this.setState({\n acceptTerm: false,\n acceptTermInput: false\n });\n this.props.toggleDocModal({});\n };\n\n onCancelModal = () => {\n this.onCloseModal();\n window.location.reload()\n };\n\n getterForm = id => {\n return new FormData(document.getElementById(`form_${id}`));\n };\n\n addToken = xhr => {\n xhr.setRequestHeader(\"Access-Control-Allow-Origin\", \"*\");\n xhr.setRequestHeader(\"Authorization\", \"Bearer \" + localStorage.getItem(\"access_token\"));\n return xhr;\n };\n\n progressBar = (index, progress, hasError, cancelHandler) => {\n const thisComp = this;\n // console.log('progressBar-----', hasError, progress, thisComp.state.uploadErrorText);\n if (hasError || progress > -1) {\n let barStyle = {};\n barStyle.width = progress + \"%\";\n\n let message = \"\";\n if (hasError) {\n barStyle.backgroundColor = \"#d9534f\";\n message = (Failed to upload);\n }\n\n return (hasError) ? null : (\n
    \n
    \n {!hasError ?\n \n : ''}\n
    \n \n {message ?
    {message}
    : \"\"}\n
    \n
    \n );\n } else {\n return null;\n }\n };\n\n onSubmitFile = (responseText, name, index) => {\n document.getElementById('cssSpinner' + index).style.display = 'none';\n document.getElementById('uploadFormSection').style.display = 'none';\n\n const thisComp = this;\n\n const response = JSON.parse(responseText);\n\n const docSets = thisComp.state.docSets;\n if (parseInt(response.code) === 200) {\n docSets.forEach(val => {\n // console.log(val.code);\n if (val.code === response.doc_code) {\n console.log(val.code + '===' + response.doc_code);\n\n val.file_id = response.file_id;\n var fileName = response.file_name;\n\n var sendingData = {\n ...val,\n doc_type_id: val.id,\n doc_id: thisComp.state.order.doc_id,\n key_id: response.file_id,\n file_id: response.file_id,\n value: fileName,\n doc_code: response.doc_code,\n project_id: thisComp.state.order.project_id,\n customer_id: thisComp.state.order.customer_id,\n order_id: thisComp.state.order.order_id\n };\n\n var url = `${config.uploadFileUrl}/document/${thisComp.state.order.order_id}`;\n // console.log('----------------End -------------------------');\n thisComp.updateDoc(url, sendingData);\n }\n });\n\n } else {\n thisComp.openAlertModal('Upload Document Error : '+response.description);\n }\n };\n\n updateDoc = async (url, params) => {\n // console.log('updateDoc-----');\n const thisComp = this;\n var myHeaders = new Headers();\n myHeaders.append(\"Content-Type\", \"application/json\");\n\n var raw = JSON.stringify(params);\n\n var requestOptions = {\n method: 'POST',\n headers: myHeaders,\n body: raw,\n redirect: 'follow'\n };\n\n const resp = await fetch(url, requestOptions)\n .then(response => response.json())\n .then(result => {\n // console.log(result);\n // console.log('idx >> ', thisComp.state.idx);\n if (parseInt(result.code) === 200) {\n thisComp.state.updatedoc(thisComp.state.idx, result.data);\n } else {\n thisComp.openAlertModal('Update Document Error');\n }\n\n return result\n })\n .catch(error => console.log(error));\n\n return resp;\n };\n\n onChangeFile = (e, val, onSubmit) => {\n const thisComp = this;\n\n const fileName = e.target.value.substring(\n e.target.value.lastIndexOf(\"\\\\\") + 1,\n e.target.value.length\n );\n\n // const doc_type_id = val.doc_type_id;\n // console.log('onChangeFile-----', fileName);\n if (e.target.value) {\n // console.log('onSubmit', e);\n onSubmit(e);\n }\n\n };\n\n finalBtn = () => {\n const thisComp = this;\n // console.log(thisComp.state.order);\n // console.log(thisComp.state.docSets);\n const documentItems = thisComp.state.order.document_items.filter(d => (d.order_id === thisComp.state.order.order_id));\n const docReq = thisComp.state.docSets.filter(val => {\n const docFound = documentItems.filter(d => (d.doc_type_id === val.id && d.doc_code === val.code));\n return (docFound.length === 0 && val.req);\n });\n\n // console.log(docReq);\n if (docReq.length > 0) {\n thisComp.openAlertModal('กรุณาอัพโหลดเอกสารให้ครบถ้วน');\n } else {\n // console.log('Close Modal--');\n this.onCloseModal(this.state.order);\n\n // console.log('Open Modal 01');\n orderApprove(this.state.order);\n\n // console.log('Open Modal 00');\n this.props.toggleAlert(msg.docOrderApprove, \"1\");\n // this.openAlertModal(msg.docOrderApprove);\n\n }\n };\n\n customForm = (onSubmit, val, i) => {\n const thisComp = this;\n const documentItems = thisComp.state.order.document_items.filter(d => (d.order_id === thisComp.state.order.order_id));\n const docFound = documentItems.filter(d => (d.doc_type_id === val.id && d.doc_code === val.code));\n return (\n
    \n
    \n
    \n

    \n {val.label}{' '}{(val.req) ? (Req) : (null)}\n

    \n
    \n
    \n

    {(docFound.length > 0) ? thisComp.onLoadDocument(val)}\n onClick={() => {\n thisComp.previewFile(docFound[0]);\n }}\n >{docFound[0].file_name} : ''}

    \n
    \n
    \n
    \n 0 && (docFound[0].doc_type_id === 1 || docFound[0].doc_type_id === 8))}\n disabled={(this.state.mainDocId.indexOf(parseInt(val.id)) !== -1 || (docFound.length > 0 && this.state.mainDocId.indexOf(parseInt(docFound[0].doc_type_id)) !== -1))}\n accept=\"image/png, image/jpeg, application/pdf, application/msword, .doc, .docx\"\n onChange={e => {\n if (e.target.value !== '') {\n if (e.target.files[0].size > (thisComp.state.maxMB * 1024 * 1024)) {\n thisComp.openAlertModal(\"กรุณาตรวจสอบประเภทไฟล์ข้อมูลและขนาดต้องไม่เกิน \" + thisComp.state.maxMB + \" MB.\");\n } else {\n thisComp.onChangeFile(e, val, onSubmit);\n }\n }\n }}\n />\n {(this.state.mainDocId.indexOf(parseInt(val.id)) !== -1 || (docFound.length > 0 && this.state.mainDocId.indexOf(parseInt(docFound[0].doc_type_id)) !== -1)) ? (\n // \n // \n //

    {val.label}

    \n // \n // \n <>\n ) : (\n \n

    {val.label}

    \n \n )}\n
    \n
    \n
    \n
    \n \n );\n };\n\n getFILE = async (file_id) => {\n await fetch(`${config.uploadFileUrl}/getfile/${file_id}`,\n {\n // method: \"GET\",\n method: \"POST\",\n headers: {\n \"Access-Control-Allow-Origin\": \"*\",\n Authorization: \"Bearer \" + localStorage.getItem(\"access_token\")\n },\n })\n .then(res => res.blob())\n .then(blob => {\n const objectURL = URL.createObjectURL(blob);\n this.setState({\n pdfBlob: objectURL,\n rawBlob: blob,\n getFile: true\n });\n });\n }\n\n getFileNew = async (file_type, file_id) => {\n var objectURL = `${config.uploadFileUrl}/project/doc/write/${file_type}/${file_id}`;\n\n this.setState({\n pdfBlob: objectURL,\n getFile: true\n });\n }\n\n previewFile = async (val) => {\n // console.log(val);\n const thisComp = this;\n const file_id = val.file_id;\n const file_type = val.file_name.split(\".\")[1] ? val.file_name.split(\".\")[1] : \"txt\";\n var objectURL = `${config.uploadFileUrl}/project/doc/write/${file_type}/${file_id}`;\n\n thisComp.setState({\n previewUrl: objectURL,\n previewModal: !thisComp.state.previewModal\n }, () => {\n // document.getElementById(\"idPreviewModal\").parentElement.classList.add(\"modal-full\");\n });\n }\n\n previewStartFile = async (val) => {\n const thisComp = this;\n const file_id = val.file_id;\n const file_type = val.value.split(\".\")[1] ? val.value.split(\".\")[1] : \"txt\";\n var objectURL = `${config.uploadFileUrl}/project/doc/write/${file_type}/${file_id}`;\n\n thisComp.setState({\n previewUrl: objectURL,\n previewModal: !thisComp.state.previewModal,\n getFile: true\n }, () => {\n // document.getElementById(\"idPreviewModal\").parentElement.classList.add(\"modal-full\");\n });\n }\n\n toggleAlertModal = () => {\n // console.log('togglePDFModal-----');\n this.setState({\n alertModal: !this.state.alertModal\n });\n };\n\n openAlertModal = msg => {\n console.log(msg);\n this.setState({\n alertModal: true,\n alertMsg: msg\n });\n };\n\n render() {\n const thisComp = this;\n // console.log('render>>', thisComp.state.docSets);\n if (thisComp.state.order.document_detail && thisComp.state.order.document_detail[0]) {\n if (thisComp.state.order.document_detail[0].file_id && !thisComp.state.getFile) {\n thisComp.previewStartFile(thisComp.state.order.document_detail[0]);\n }\n } else {\n thisComp.state.order.document_detail = []\n }\n const closeBtn = ;\n\n const docSets = thisComp.state.docSets;\n return (\n <>\n \n ยืนยันการสั่งซื้อ\n \n

    อัพโหลดเอกสาร

    \n
    \n {\n docSets.map((val, i) => {\n const docFound = thisComp.state.order.document_all.filter(d => (d.doc_type_id === val.id));\n const cdcFiletypeCode = (docFound.length > 0) ? docFound[0].cdc_filetype_code : '';\n return (\n { thisComp.onSubmitFile(request.response, val.name, i); }}\n onError={(e, request) => {\n const requestResponse = JSON.parse(request.response);\n const errorMessage = requestResponse.description || '';\n thisComp.openAlertModal('Upload File failed (' + errorMessage + ')');\n console.log(\"error\", e, request);\n }}\n formGetter={() => { return thisComp.getterForm(i); }}\n formRenderer={onSubmit => { return thisComp.customForm(onSubmit, val, i); }}\n progressRenderer={thisComp.progressBar.bind(thisComp, i)}\n beforeSend={thisComp.addToken}\n />\n )\n })}\n
    \n

    \n แนบเอกสาร (ไฟล์ประเภท PDF, JPG, PNG, DOC, DOCX) ขนาดไม่เกิน {thisComp.state.maxMB} MB. เท่านั้น\n

    \n {thisComp.state.acceptTermInput ? (\n \"\"\n ) : (\n
    \n \n \n อ่านยอมรับเงื่อนไขและสัญญาการรับสิทธิ{\" \"}\n \n
    \n )}\n {thisComp.state.acceptTermInput ? (\n
    \n
    \n \n  ข้าพเจ้ายอมรับเงื่อนไขและสัญญา\n
    \n

    \n ทางบริษัทฯ ขอสงวนสิทธิในการเปลี่ยนแปลงการสั่งจองสินค้า{\" \"}\n
    \n ควรตรวจสอบข้อมูลให้เรียบร้อยก่อนกดยืนยันสั่งซื้อ\n

    \n
    \n ) : (\n \"\"\n )}\n
    \n \n \n ยกเลิก\n \n \n ยืนยันการสั่งซื้อ\n \n \n \n\n \n \n
    \n \n \n
    \n \n
    \n \n \n \n ยกเลิก\n \n \n ตกลง\n \n \n \n \n\n\n \n
    \n \n
    \n
    \n
    \n \n
    \n
    \n
    \n \n ปิด\n \n
    \n \n\n \n
    {this.state.alertMsg}
    \n
    \n \n ปิด\n \n
    \n \n \n );\n }\n}\n\nOrderModal.propTypes = {\n isDocModalOpen: PropTypes.bool.isRequired,\n toggleDocModal: PropTypes.func.isRequired,\n toggleAlert: PropTypes.func.isRequired,\n updateDoc: PropTypes.func.isRequired,\n orderApprove: PropTypes.func.isRequired,\n order: PropTypes.object\n};\n\nconst mapStateToProps = state => ({\n isDocModalOpen: state.orders.isDocModalOpen,\n order: state.orders.order\n});\n\nexport default connect(\n mapStateToProps,\n {\n toggleDocModal,\n updateDoc,\n orderApprove,\n toggleAlert\n }\n)(OrderModal);\n","import React, { Component } from \"react\";\n\nimport { connect } from \"react-redux\";\nimport PropTypes from \"prop-types\";\nimport { config, msg } from \"../../constants\";\nimport {\n fetchOrders,\n deleteOrders,\n toggleDocModal,\n toggleDetailModal\n} from \"../../store/orders/ordersAction\";\nimport { fetchProjectAddr, fetchAddressDelivery, fetchAddressCompany } from \"../../store/project/projectAction\";\nimport { fetchAddress } from \"../../store/address/addressAction\";\nimport { fetchCustomer } from \"../../store/register/customerAction\";\nimport {\n fetchProvinces,\n fetchDistricts,\n fetchSubDistricts,\n fetchZipCodes\n} from \"../../store/register/addressAction\";\nimport { toggleAlert } from \"../../store/alertbox/alertboxAction\";\n\nimport ModalConfirm from \"./modal\";\nimport { Modal, ModalBody, Spinner } from 'reactstrap';\nimport DetailModal from \"./detail-modal\";\nimport OrderModal from \"./order-modal\";\n\nimport axios from 'axios';\n\nvar numeral = require(\"numeral\");\nconst locale = require(\"react-redux-i18n\").I18n;\n\nclass cartPage extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n modal: false,\n detailModal: false,\n orderModal: false,\n orders: [],\n orderDetail: [],\n fetchCustomerFirst: true,\n fetchProjectAddrFirst: true,\n fetchOrdersFirst: true,\n modalIsOpen: false,\n previewModal: false,\n previewUrl: null,\n orders: props.orders,\n orderIdx: null\n }\n }\n\n // state = {\n // modal: false,\n // detailModal: false,\n // orderModal: false,\n // orders: [],\n // orderDetail: [],\n // fetchCustomerFirst: true,\n // fetchProjectAddrFirst: true,\n // fetchOrdersFirst: true,\n // modalIsOpen: false,\n // previewModal: false,\n // previewUrl: null,\n // orders: props.orders\n // };\n\n async componentDidMount() {\n let resp = await axios.post(config.apiUrl + \"/login/gtkn\", {});\n\n // if (parseInt(resp.data.code) === 200) {\n // localStorage.setItem('sys_token', resp.data.token);\n // }\n this.openModal()\n this.props.fetchProvinces();\n this.props.fetchDistricts();\n this.props.fetchSubDistricts();\n this.props.fetchZipCodes();\n this.props.fetchAddress();\n // this.closeModal();\n }\n\n componentWillReceiveProps(next) {\n this.setState({\n orders: next.orders\n });\n\n if (next.provinces.length !== 0\n && next.districts.length !== 0\n && next.subDistricts.length !== 0\n && next.zipcodes.length !== 0\n ) {\n this.closeModal();\n }\n\n if (\n this.state.fetchCustomerFirst &&\n next.project.project_id &&\n next.customerID\n ) {\n // console.log('fetchOrders 02');\n this.props.fetchOrders({\n project_id: next.project.project_id,\n customer_id: next.customerID\n });\n this.setState({ fetchOrdersFirst: false });\n }\n\n if (\n this.state.fetchProjectAddrFirst &&\n next.project.project_id &&\n next.customerID\n ) {\n this.props.fetchProjectAddr({\n customer_id: next.customerID,\n project_id: next.project.project_id,\n address_type: \"at003\"\n });\n this.props.fetchAddressCompany({\n customer_id: next.customerID,\n project_id: next.project.project_id,\n address_type: \"at005\"\n });\n this.props.fetchAddressDelivery({\n customer_id: next.customerID,\n project_id: next.project.project_id,\n address_type: \"at006\"\n });\n this.setState({ fetchProjectAddrFirst: false });\n }\n\n if (\n this.state.fetchCustomerFirst &&\n next.project.project_id &&\n next.customerID\n ) {\n this.props.fetchCustomer({\n project_id: next.project.project_id,\n customer_id: next.customerID\n });\n this.setState({ fetchCustomerFirst: false });\n }\n }\n\n updateDocUi = (idx, docItems) => {\n const thisComp = this;\n //document_all\n // console.log('updateDocUi', idx);\n // console.log(docItems);\n let orderItems = thisComp.state.orders;\n orderItems[idx].document_items = docItems;\n // console.log(orderItems);\n this.props.toggleDocModal({});\n thisComp.setState({\n orders: orderItems\n }, () => {\n thisComp.orderModal(thisComp.state.orders[idx], idx);\n alert('เพิ่มเอกสารเสร็จสิ้น');\n });\n\n };\n\n modal = () => {\n this.props.toggleAlert(this.props.project.txt_how_to);\n };\n\n detailModal = order => {\n this.props.toggleDetailModal(order);\n };\n\n orderModal = (order, idx) => {\n this.setState({\n orderIdx: idx\n });\n this.props.toggleDocModal(order);\n };\n\n deleteOrders = orderId => {\n this.props.deleteOrders(orderId, this.props.customerID);\n };\n\n orderStatus(status) {\n if (status === \"A\") {\n return {locale.t(\"approve\")};\n } else if (status === \"N\") {\n return {locale.t(\"waitconfirm\")};\n } else if (status === \"R\") {\n return {locale.t(\"reject\")};\n } else if (status === \"E\") {\n return {locale.t(\"waitSend\")};\n } else if (status === \"S\") {\n return {locale.t(\"send\")};\n } else {\n return {locale.t(\"waitapprove\")};\n }\n }\n HomePage = () => {\n return config.baseUrl + \"/shop/\" + this.props.project.project_encrypt;\n };\n\n openModal() {\n this.setState({ modalIsOpen: true });\n }\n\n closeModal() {\n this.setState({ modalIsOpen: false });\n }\n\n previewFile = async (val) => {\n // console.log(val);\n let resp = await axios.post(config.apiUrl + \"/login/gtkn\", {});\n const thisComp = this;\n const file_id = val.file_id;\n const file_type = val.file_name.split(\".\")[1] ? val.file_name.split(\".\")[1] : \"txt\";\n var objectURL = `${config.uploadFileUrl}/project/doc/write/${file_type}/${file_id}`;\n\n thisComp.setState({\n previewUrl: objectURL,\n previewModal: !thisComp.state.previewModal\n }, () => {\n // document.getElementById(\"idPreviewModal\").parentElement.classList.add(\"modal-full\");\n });\n }\n\n togglePreviewModal = async () => {\n const thisComp = this;\n thisComp.setState({\n previewModal: !thisComp.state.previewModal\n });\n };\n\n render() {\n const customStyles = {\n textAlign: 'center',\n top: '40%',\n }\n\n // console.log('in ORDER Rendors ',this.state.orders);\n\n const orders = this.state.orders.map((orderItem, orderIdx) => {\n let order = orderItem;\n const docSets = (typeof order.doc_structures === 'undefined' || order.doc_structures === null || order.doc_structures === '') ? [] : JSON.parse(order.doc_structures);\n // console.log('----------------------------' + order.order_id + '--------------------------------');\n const documentItems = (typeof order.document_items === 'undefined') ? [] : order.document_items.filter(d => (d.order_id === order.order_id));\n\n if (typeof order.product_detail === 'undefined') {\n order = {\n ...order, ...{\n product_detail: {\n model_img: '',\n matcode: '',\n model_name: '',\n model_desc: '',\n }\n }\n }\n }\n\n if (typeof order.order_detail === 'undefined') {\n order = {\n ...order, ...{\n order_detail: {\n address_delivery_type: '',\n msisdn_type: '',\n msisdn_display: '',\n }\n }\n }\n }\n\n // console.log(order)\n return (\n \n \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n

    \n {order.product_detail.model_name || ''}\n

    \n

    {order.product_detail.model_desc || ''}

    \n
    \n
    \n
    \n
    \n
      \n
    • \n {locale.t(\"color\")}: {order.product_detail.color || ''}\n
    • \n
    • \n Code: {order.product_detail.matcode || ''}\n
    • \n
    • \n ID: {order.order_id || ''}\n \n this.deleteOrders(order.order_id)}\n >\n {locale.t(\"deleteOrder\")}\n \n
    \n \n \n
    \n
    \n
    \n \n \n \n ฿{numeral(order.price_vat).format(\"0,0\")}\n \n {order.flag_show === 1 ? (\n \n ฿{numeral(order.price_total).format(\"0,0\")}\n \n ) : ('')}\n {this.orderStatus(order.order_status)}\n \n
    \n
      \n {/* {order.order_detail.address_delivery ? (\n
    • \n {order.order_detail.address_delivery_type}\n
    • \n ) : (\n
    • จัดส่งที่อยู่สำนักงานของคุณ
    • \n )} */}\n \n {locale.t(\"addrDelivery\")}:{\" \"}\n {order.order_detail.address_delivery_type ? order.order_detail.address_delivery.address_name : '-'}\n \n\n \n {locale.t(\"number\")}:{\" \"}\n {!order.order_detail.msisdn_type && \"-\"}\n {order.order_detail.msisdn_type === \"new\" && \"เบอร์ใหม่\"}\n {order.order_detail.msisdn_type === \"existing\" && order.order_detail.msisdn_display}\n \n\n \n {locale.t(\"IRservice\")}:{\" \"}\n {!order.ir_flag && !order.order_detail.msisdn_type && \"-\"}\n {order.ir_flag === 1 && order.order_detail.msisdn_type !== null && \"เปิด\"}\n {order.ir_flag !== 1 && order.order_detail.msisdn_type !== null && \"ไม่เปิด\"}\n \n\n \n {locale.t(\"addrBill\")}:{\" \"}\n {/* {!order.ir_flag && !order.order_detail.msisdn_type && \"-\"}\n {order.ir_flag === 1 && order.order_detail.msisdn_type !== null && \"เปิด\"}\n {order.ir_flag !== 1 && order.order_detail.msisdn_type !== null && \"ไม่เปิด\"} */}\n {order.order_detail.address_bill_type ? order.order_detail.address_bill.address_name : '-'}\n \n {/* {order.order_detail.msisdn_type ? (\n
    • {order.order_detail.msisdn_display}
    • \n ) : (\n
    • เปิดหมายเลขใหม่
    • \n )}\n {order.order_detail.ir_flag ? (\n
    • เปิดใช้บริการเสริม
    • \n ) : (\n
    • ยังไม่เปิดใช้บริการเสริม
    • \n )} */}\n
    \n {\n this.detailModal(order);\n }}\n style={((order.address_bill !== null && order.address_bill !== '') ? { backgroundColor: 'green' } : {})}\n >\n {(order.address_bill !== null && order.address_bill !== '') ? 'เปลี่ยนแปลงข้อมูล' : 'กรุณาระบุข้อมูลข้างต้นให้ครบถ้วน'}\n \n
    \n \n \n
    \n
      \n {/* {order.document_detail.map((doc, index) => (\n
    • \n {\" \"}\n {doc.name}{\" \"}\n
    • \n ))} */}\n {docSets.map((docItem, index) => {\n const doc = docItem;\n // console.log(doc);\n const docFound = documentItems.filter(d => (d.doc_type_id === doc.id && d.doc_code === doc.code));\n const theLiStyle = (index === (docSets.length - 1)) ? { paddingTop: '6px', paddingBottom: '6px', textDecoration: 'none', listStyle: 'none' } : { borderBottom: '1px #CCC solid', paddingTop: '6px', paddingBottom: '6px', textDecoration: 'none', listStyle: 'none' };\n return (docFound.length > 0) ? (\n
    • \n {\n this.previewFile(docFound[0]);\n }} style={{ fontWeight: 'bold', color: '#447E16' }}>{doc.label}{' '}{(doc.req) ? (Req) : (null)}\n
    • \n ) : (\n
    • \n {doc.label}{' '}{(doc.req) ? (Req) : (null)}\n
    • \n )\n }\n )}\n
    \n {\n this.orderModal(order, orderIdx);\n }}\n disabled={\n order.order_status === \"N\" || order.order_status === \"W\" ?\n order.order_detail.address_delivery_type !== \"\" ?\n this.props.project.order_status === 'A' ?\n false : true\n : true\n : true\n }\n >\n {locale.t(\"confirmOrder\")}\n \n
    \n \n \n );\n });\n\n return (\n <>\n
    \n

    \n {locale.t(\"cart\")} \n

    \n
    \n
    \n \n \n \n \n {locale.t(\"howToOrder\")}\n \n
    \n
    \n
    \n \n \n \n \n \n {this.state.orders[0] ?\n this.state.orders[0].flag_show === 1 ?\n (\n \n )\n : ('') : ('')}\n < th scope=\"col\" width=\"5%\">{locale.t(\"status\")}\n \n \n \n \n {orders}\n
    \n {locale.t(\"orderList\")}\n \n {locale.t(\"pricePermonth\")}\n \n {locale.t(\"allPrice\")}\n
    \n {locale.t(\"allContact\")}\n
    \n {locale.t(\"detail\")}\n \n {locale.t(\"confirmOrder\")}\n
    \n
    \n
    \n
    \n
    \n\n \n \n \n \n \n \n {' ' + msg.register}\n \n \n\n \n
    \n \n
    \n
    \n
    \n \n
    \n
    \n
    \n \n ปิด\n \n
    \n \n \n );\n }\n}\n\ncartPage.propTypes = {\n fetchOrders: PropTypes.func.isRequired,\n fetchAddress: PropTypes.func.isRequired,\n deleteOrders: PropTypes.func.isRequired,\n toggleDocModal: PropTypes.func.isRequired,\n orders: PropTypes.array.isRequired,\n isFetching: PropTypes.bool\n};\n\nconst mapStateToProps = state => ({\n orders: state.orders.items,\n isFetching: state.orders.isFetching,\n toggleDocModal: state.orders.toggleDocModal,\n toggleDetailModal: state.orders.toggleDetailModal,\n project: state.project.info,\n projectAddr: state.project.address,\n address_company: state.project.address_company,\n address_delivery: state.project.address_delivery,\n customerProfile: state.customer.data,\n toggleAlert: PropTypes.func.isRequired,\n provinces: state.address.provinces,\n districts: state.address.districts,\n subDistricts: state.address.subDistricts,\n zipcodes: state.address.zipCodes,\n customerID: state.login.customerID,\n user: state.login.info,\n l: state.i18n.locale\n});\n\nexport default connect(\n mapStateToProps,\n {\n fetchOrders,\n fetchAddress,\n deleteOrders,\n fetchProjectAddr,\n fetchCustomer,\n fetchProvinces,\n fetchDistricts,\n fetchSubDistricts,\n toggleAlert,\n fetchZipCodes,\n toggleDocModal,\n toggleDetailModal,\n fetchAddressDelivery,\n fetchAddressCompany\n }\n)(cartPage);\n","import React, { Component } from \"react\";\nimport { connect } from \"react-redux\";\n//import Loading from \"../layout/loading\";\n\nclass projectname extends Component {\n render() {\n const projectStatus = this.props.project.project_status;\n //console.log(projectStatus);\n // if (projectStatus !== \"A\") {\n // return (\n // <>\n // \n // \n // );\n // }\n return (\n <>\n {projectStatus === \"A\" && (\n
    \n
    \n

    {this.props.project.project_name}

    \n
    \n
    \n )}\n \n );\n }\n}\nconst mapStateToProps = state => ({\n project: state.project.info\n});\nexport default connect(\n mapStateToProps,\n null\n)(projectname);\n","import React, { Component } from \"react\";\nimport queryString from \"query-string\";\nimport axios from \"axios\";\n\nimport { config } from \"../../constants\";\nconst jwt = require(\"jsonwebtoken\");\nconst moment = require(\"moment\");\n\n// import axios from 'axios';\n\nexport class loginCallback extends Component {\n\n componentDidMount = async () => {\n\n let resp = await axios.post(config.apiUrl + \"/login/gtkn\", {});\n\n // if (parseInt(resp.data.code) === 200) {\n // localStorage.setItem('sys_token', resp.data.token);\n // }\n //console.log(window.location.search);\n const parsed = queryString.parse(window.location.search);\n //console.log(parsed);\n const code = parsed.code;\n const project = parsed.param;\n //console.log(code);\n var details = {\n code: code\n };\n var formBody = [];\n for (var property in details) {\n var encodedKey = encodeURIComponent(property);\n var encodedValue = encodeURIComponent(details[property]);\n formBody.push(encodedKey + \"=\" + encodedValue);\n }\n formBody = formBody.join(\"&\");\n // console.log(formBody);\n // const moment = require(\"moment\");\n fetch(config.apiUrl + \"/trueid/login\", {\n method: \"POST\",\n mode: \"cors\", // no-cors, cors, *same-origin\n cache: \"no-cache\",\n headers: {\n \"Access-Control-Allow-Origin\": \"*\",\n \"Access-Control-Allow-Headers\": \"Origin, X-Requested-With\",\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n // \"X-Custom-Header\": (localStorage.getItem(\"sys_token\") || '')\n },\n //redirect: \"follow\", // manual, *follow, error\n //referrer: \"no-referrer\", // no-referrer, *client\n body: JSON.stringify(details)\n })\n .then(response => response.json())\n .then(json => {\n if (json.access_token) {\n // console.log(json);\n const userData = jwt.decode(json.access_token);\n const getProfileBody = { ssoid: userData.sub, token: json.access_token };\n fetch(config.apiUrl + \"/trueid/profile\", {\n method: \"POST\",\n mode: \"cors\", // no-cors, cors, *same-origin\n cache: \"no-cache\",\n headers: {\n \"Access-Control-Allow-Origin\": \"*\",\n \"Access-Control-Allow-Headers\": \"Origin, X-Requested-With\",\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n // \"X-Custom-Header\": (localStorage.getItem(\"sys_token\") || '')\n },\n body: JSON.stringify(getProfileBody)\n })\n .then(response => response.json())\n .then(profile => {\n\n if (parseInt(profile.code) === 200) {\n const expires_at = moment().add(json.expires_in - 600, \"s\").format();\n localStorage.setItem(\"access_token\", json.access_token);\n localStorage.setItem(\"user_login\", profile.login_account);\n localStorage.setItem(\"expires_in\", json.expires_in);\n localStorage.setItem(\"refresh_token\", json.refresh_token);\n localStorage.setItem(\"expires_at\", expires_at);\n window.location = config.baseUrl + \"/shop/\" + project;\n\n } else {\n alert(\"ขออภัยค่ะ ไม่สามารถเรียก Profile ได้\");\n console.error(\"Error 3 :\", profile);\n }\n })\n .catch(error2 => {\n alert(\"ไม่สามารถเรียก Profile ได้\");\n //window.location = \"/shop/\" + project;\n console.error(\"Error 2 :\", error2);\n });\n } else {\n alert(\"ขออภัยค่ะ ไม่สามารถ login ได้\");\n console.error(\"Error 4:\", json);\n }\n })\n .catch(error => {\n alert(\"ไม่สามารถ login ได้\");\n //window.location = \"/shop/\" + project;\n console.error(\"Error:\", error);\n });\n };\n render() {\n return <>Please Wait...;\n }\n}\n\nexport default loginCallback;\n","import { connect } from \"react-redux\";\nimport { Modal } from \"reactstrap\";\nimport PropTypes from \"prop-types\";\nimport React, { Component } from \"react\";\nimport { msg } from \"../../constants\";\n\nimport { toggleAlert } from \"../../store/alertbox/alertboxAction\";\n\nclass Alertbox extends Component {\n onCloseModal = () => {\n this.props.toggleAlert(\"\");\n if (this.props.message.isReload === '1') {\n // console.log('set Reload');\n window.location.reload();\n }\n };\n\n render() {\n // console.log('in Alertbox');\n // console.log(this.props);\n return (\n \n {this.props.message.isReload === '1' && (\n
    \n
    {msg.HeaderDocOrderApprove}
    \n
    \n )}\n
    \n
    \n

    \n

    \n
    \n
    \n \n ตกลง\n \n
    \n
    \n \n );\n }\n}\n\nAlertbox.propTypes = {\n isAlertOn: PropTypes.bool,\n message: PropTypes.string,\n toggleAlert: PropTypes.func\n};\n\nconst mapStateToProps = state => ({\n isAlertOn: state.alertbox.isAlertOn,\n message: state.alertbox.message,\n});\n\nexport default connect(\n mapStateToProps,\n {\n toggleAlert\n }\n)(Alertbox);\n","import {\n FETCH_BRANDS,\n FETCH_BRANDS_SUCCESS,\n FETCH_BRANDS_FAILURE\n} from \"./brandsAction\";\n\nconst initialState = {\n items: [],\n isFetching: false\n};\n\nexport default function(state = initialState, action) {\n switch (action.type) {\n case FETCH_BRANDS:\n return {\n ...state,\n items: [],\n isFetching: true\n };\n case FETCH_BRANDS_SUCCESS:\n return {\n ...state,\n items: action.payload,\n isFetching: false\n };\n case FETCH_BRANDS_FAILURE:\n return {\n ...state,\n items: [],\n isFetching: false\n };\n default:\n return state;\n }\n}\n","import {\n FETCH_PRODUCT,\n FETCH_PRODUCT_SUCCESS,\n FETCH_PRODUCT_FAILURE,\n FILTER_PRODUCT\n} from \"./productsAction\";\n\nconst initialState = {\n items: [],\n allItems: [],\n isFetching: false\n};\n\nexport default function(state = initialState, action) {\n switch (action.type) {\n case FETCH_PRODUCT:\n return {\n ...state,\n items: [],\n allItems: [],\n isFetching: true\n };\n case FETCH_PRODUCT_SUCCESS:\n return {\n ...state,\n items: action.payload,\n allItems: action.payload,\n isFetching: false\n };\n case FETCH_PRODUCT_FAILURE:\n return {\n ...state,\n items: [],\n allItems: [],\n isFetching: false\n };\n case FILTER_PRODUCT:\n let items = state.allItems;\n if (action.payload.length > 0) {\n items = state.allItems.filter(val =>\n action.payload.includes(val.brand)\n );\n }\n return {\n ...state,\n items: items,\n isFetching: false\n };\n default:\n return state;\n }\n}\n","import {\n FETCH_ORDERS,\n FETCH_ORDERS_SUCCESS,\n FETCH_ORDERS_FAILURE,\n DELETE_ORDERS,\n DELETE_ORDERS_SUCCESS,\n DELETE_ORDERS_FAILURE,\n TOGGLE_DOC_MODAL,\n TOGGLE_DETAIL_MODAL,\n UPDATE_DOC,\n UPDATE_DOC_SUCCESS,\n ORDER_APPROVE_SUCCESS,\n UPDATE_DOC_FAILURE,\n ADD_ORDER_ITEM,\n ADD_ORDER_ITEM_SUCCESS,\n ADD_ORDER_ITEM_FAILURE,\n UPDATE_DETAIL,\n UPDATE_DETAIL_SUCCESS,\n UPDATE_DETAIL_FAILURE\n} from \"./ordersAction\";\n\nconst initialState = {\n items: [],\n isFetching: false,\n isDocModalOpen: false,\n isDetailModalOpen: false,\n order: {}\n};\n\nexport default function (state = initialState, action) {\n switch (action.type) {\n case FETCH_ORDERS:\n return {\n ...state,\n isFetching: true\n };\n case FETCH_ORDERS_SUCCESS:\n return {\n ...state,\n items: action.payload,\n isFetching: false\n };\n case FETCH_ORDERS_FAILURE:\n return {\n ...state,\n items: [],\n isFetching: false\n };\n case DELETE_ORDERS:\n return {\n ...state,\n isFetching: true\n };\n case DELETE_ORDERS_SUCCESS:\n //console.log(action.payload);\n let items = state.items.filter(obj => obj.order_id !== action.payload);\n //console.log();\n return {\n ...state,\n items: items,\n isFetching: false\n };\n case DELETE_ORDERS_FAILURE:\n return {\n ...state,\n isFetching: false\n };\n case TOGGLE_DOC_MODAL:\n return {\n ...state,\n isDocModalOpen: !state.isDocModalOpen,\n order: action.payload\n };\n case TOGGLE_DETAIL_MODAL:\n return {\n ...state,\n isDetailModalOpen: !state.isDetailModalOpen,\n order: action.payload\n };\n case UPDATE_DOC:\n return {\n ...state,\n isFetching: true\n };\n case UPDATE_DOC_SUCCESS:\n const temp_items = state.items.map(val => {\n if (val.order_id === action.payload.order_id) {\n return action.payload;\n }\n return { ...val };\n });\n return {\n ...state,\n order: {},\n items: temp_items,\n isFetching: false\n };\n case ORDER_APPROVE_SUCCESS:\n console.log('reduce ORDER_APPROVE_SUCCESS');\n return state\n\n case UPDATE_DOC_FAILURE:\n return {\n ...state,\n isFetching: false\n };\n case ADD_ORDER_ITEM:\n return {\n ...state,\n isFetching: true\n };\n case ADD_ORDER_ITEM_SUCCESS:\n return {\n ...state,\n isFetching: false\n };\n case ADD_ORDER_ITEM_FAILURE:\n return {\n ...state,\n isFetching: false\n };\n case UPDATE_DETAIL:\n return {\n ...state,\n isFetching: true\n };\n case UPDATE_DETAIL_SUCCESS:\n const temp_order_items = state.items.map(val => {\n if (val.order_id === action.payload.order_id) {\n return action.payload;\n }\n return { ...val };\n });\n return {\n ...state,\n order: {},\n items: temp_order_items,\n isFetching: false\n };\n case UPDATE_DETAIL_FAILURE:\n return {\n ...state,\n isFetching: false\n };\n default:\n return state;\n }\n}\n","import {\n FETCH_PROJECT,\n FETCH_PROJECT_SUCCESS,\n FETCH_PROJECT_FAILURE,\n FETCH_PROJECT_ADDR,\n FETCH_PROJECT_ADDR_SUCCESS,\n FETCH_PROJECT_ADDR_FAILURE,\n FETCH_PROJECT_ADDR_LABEL,\n FETCH_PROJECT_ADDR_LABEL_SUCCESS,\n FETCH_PROJECT_ADDR_LABEL_FAILURE,\n FETCH_ADDRESS_COMPANY,\n FETCH_ADDRESS_COMPANY_SUCCESS,\n FETCH_ADDRESS_COMPANY_FAILURE,\n FETCH_ADDRESS_DELIVERY,\n FETCH_ADDRESS_DELIVERY_SUCCESS,\n FETCH_ADDRESS_DELIVERY_FAILURE,\n} from \"./projectAction\";\n\nconst initialState = {\n info: {},\n address: {},\n address_company: {},\n address_delivery: {},\n address_label: [],\n isFetching: false,\n projectNotfound: false\n};\n\nexport default function (state = initialState, action) {\n switch (action.type) {\n case FETCH_PROJECT:\n return {\n ...state,\n isFetching: true\n };\n case FETCH_PROJECT_SUCCESS:\n return {\n ...state,\n info: action.payload,\n isFetching: false\n };\n case FETCH_PROJECT_FAILURE:\n return {\n ...state,\n info: {},\n isFetching: false,\n projectNotfound: true\n };\n case FETCH_PROJECT_ADDR:\n return {\n ...state,\n isFetching: true\n };\n case FETCH_PROJECT_ADDR_SUCCESS:\n return {\n ...state,\n address: action.payload,\n isFetching: false\n };\n case FETCH_PROJECT_ADDR_FAILURE:\n return {\n ...state,\n address: {},\n isFetching: false\n };\n case FETCH_PROJECT_ADDR_LABEL:\n return {\n ...state,\n isFetching: true\n };\n case FETCH_PROJECT_ADDR_LABEL_SUCCESS:\n return {\n ...state,\n address_label: action.payload,\n isFetching: false\n };\n case FETCH_PROJECT_ADDR_LABEL_FAILURE:\n return {\n ...state,\n address_label: [],\n isFetching: false\n };\n case FETCH_ADDRESS_COMPANY:\n return {\n ...state,\n isFetching: true\n };\n case FETCH_ADDRESS_COMPANY_SUCCESS:\n return {\n ...state,\n address_company: action.payload,\n isFetching: false\n };\n case FETCH_ADDRESS_COMPANY_FAILURE:\n return {\n ...state,\n address_company: {},\n isFetching: false\n };\n case FETCH_ADDRESS_DELIVERY:\n return {\n ...state,\n isFetching: true\n };\n case FETCH_ADDRESS_DELIVERY_SUCCESS:\n return {\n ...state,\n address_delivery: action.payload,\n isFetching: false\n };\n case FETCH_ADDRESS_DELIVERY_FAILURE:\n return {\n ...state,\n address_delivery: {},\n isFetching: false\n };\n default:\n return state;\n }\n}\n","import {\n FETCH_TITLES,\n FETCH_TITLES_SUCCESS,\n FETCH_TITLES_FAILURE,\n FETCH_ADDRESS_PROJECT,\n FETCH_ADDRESS_PROJECT_SUCCESS,\n FETCH_ADDRESS_PROJECT_FAILURE,\n FETCH_PROJECT_COMPANY,\n FETCH_PROJECT_COMPANY_SUCCESS,\n FETCH_PROJECT_COMPANY_FAILURE,\n} from \"./queryAction\";\n\nconst initialState = {\n items: [],\n delivery: [],\n company: [],\n isFetching: false\n};\n\nexport default function(state = initialState, action) {\n switch (action.type) {\n case FETCH_TITLES:\n return {\n ...state,\n items: [],\n isFetching: true\n };\n case FETCH_TITLES_SUCCESS:\n return {\n ...state,\n items: action.payload,\n isFetching: false\n };\n case FETCH_TITLES_FAILURE:\n return {\n ...state,\n items: [],\n isFetching: false\n };\n case FETCH_ADDRESS_PROJECT:\n return {\n ...state,\n delivery: [],\n isFetching: true\n };\n case FETCH_ADDRESS_PROJECT_SUCCESS:\n return {\n ...state,\n delivery: action.payload,\n isFetching: false\n };\n case FETCH_ADDRESS_PROJECT_FAILURE:\n return {\n ...state,\n delivery: [],\n isFetching: false\n };\n case FETCH_PROJECT_COMPANY:\n return {\n ...state,\n company: [],\n isFetching: true\n };\n case FETCH_PROJECT_COMPANY_SUCCESS:\n return {\n ...state,\n company: action.payload,\n isFetching: false\n };\n case FETCH_PROJECT_COMPANY_FAILURE:\n return {\n ...state,\n company: [],\n isFetching: false\n };\n default:\n return state;\n }\n}\n","import {\n FETCH_BANNERS,\n FETCH_BANNERS_SUCCESS,\n FETCH_BANNERS_FAILURE\n} from \"./bannersAction\";\n\nconst initialState = {\n items: [],\n isFetching: false\n};\n\nexport default function(state = initialState, action) {\n switch (action.type) {\n case FETCH_BANNERS:\n return {\n ...state,\n items: [],\n isFetching: true\n };\n case FETCH_BANNERS_SUCCESS:\n return {\n ...state,\n items: action.payload,\n isFetching: false\n };\n case FETCH_BANNERS_FAILURE:\n return {\n ...state,\n items: [],\n isFetching: false\n };\n default:\n return state;\n }\n}\n","import {\n FETCH_CUSTOMER,\n FETCH_CUSTOMER_SUCCESS,\n FETCH_CUSTOMER_FAILURE,\n UPDATE_CUSTOMER,\n UPDATE_CUSTOMER_SUCCESS,\n UPDATE_CUSTOMER_FAILURE\n} from \"./customerAction\";\n\nconst initialState = {\n data: {},\n updated: {},\n isFetching: false\n};\n\nexport default function (state = initialState, action) {\n switch (action.type) {\n case FETCH_CUSTOMER:\n return {\n ...state,\n data: null,\n isFetching: true\n };\n case FETCH_CUSTOMER_SUCCESS:\n return {\n ...state,\n data: action.payload,\n isFetching: false\n };\n case FETCH_CUSTOMER_FAILURE:\n return {\n ...state,\n data: action.payload,\n isFetching: false\n };\n case UPDATE_CUSTOMER:\n return {\n ...state,\n updated: null,\n isFetching: true\n };\n case UPDATE_CUSTOMER_SUCCESS:\n return {\n ...state,\n updated: action.payload,\n isFetching: false\n };\n case UPDATE_CUSTOMER_FAILURE:\n return {\n ...state,\n updated: action.payload,\n isFetching: false\n };\n default:\n return state;\n }\n}","import {\n\tFETCH_PROVINCES,\n\tFETCH_PROVINCES_SUCCESS,\n\tFETCH_PROVINCES_FAILURE,\n\tFETCH_DISTRICTS,\n\tFETCH_DISTRICTS_SUCCESS,\n\tFETCH_DISTRICTS_FAILURE,\n\tFETCH_SUBDISTRICTS,\n\tFETCH_SUBDISTRICTS_SUCCESS,\n\tFETCH_SUBDISTRICTS_FAILURE,\n\tFETCH_ZIPCODES,\n\tFETCH_ZIPCODES_SUCCESS,\n\tFETCH_ZIPCODES_FAILURE\n} from \"./addressAction\";\n\nconst initialState = {\n\tprovinces: [],\n\tdistricts: [],\n\tsubDistricts: [],\n\tzipCodes: [],\n\tisFetching: false\n};\n\nexport default function (state = initialState, action) {\n\tswitch (action.type) {\n\t\tcase FETCH_PROVINCES:\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tprovinces: [],\n\t\t\t\tisFetching: true\n\t\t\t};\n\t\tcase FETCH_PROVINCES_SUCCESS:\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tprovinces: action.payload,\n\t\t\t\tisFetching: false\n\t\t\t};\n\t\tcase FETCH_PROVINCES_FAILURE:\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tprovinces: [],\n\t\t\t\tisFetching: false\n\t\t\t};\n\t\tcase FETCH_DISTRICTS:\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tdistricts: [],\n\t\t\t\tisFetching: true\n\t\t\t};\n\t\tcase FETCH_DISTRICTS_SUCCESS:\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tdistricts: action.payload,\n\t\t\t\tisFetching: false\n\t\t\t};\n\t\tcase FETCH_DISTRICTS_FAILURE:\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tdistricts: [],\n\t\t\t\tisFetching: false\n\t\t\t};\n\t\tcase FETCH_SUBDISTRICTS:\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tsubDistricts: [],\n\t\t\t\tisFetching: true\n\t\t\t};\n\t\tcase FETCH_SUBDISTRICTS_SUCCESS:\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tsubDistricts: action.payload,\n\t\t\t\tisFetching: false\n\t\t\t};\n\t\tcase FETCH_SUBDISTRICTS_FAILURE:\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tsubDistricts: [],\n\t\t\t\tisFetching: false\n\t\t\t};\n\t\tcase FETCH_ZIPCODES:\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tzipCodes: [],\n\t\t\t\tisFetching: true\n\t\t\t};\n\t\tcase FETCH_ZIPCODES_SUCCESS:\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tzipCodes: action.payload,\n\t\t\t\tisFetching: false\n\t\t\t};\n\t\tcase FETCH_ZIPCODES_FAILURE:\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tzipCodes: [],\n\t\t\t\tisFetching: false\n\t\t\t};\n\t\tdefault:\n\t\t\treturn state;\n\t}\n}\n","import {\n LOGIN_CUSTOMER,\n LOGIN_CUSTOMER_SUCCESS,\n LOGIN_CUSTOMER_FAILURE\n} from \"./loginAction\";\n\nconst initialState = {\n customerID: \"\",\n info : {},\n isFetching: false\n};\n\nexport default function(state = initialState, action) {\n switch (action.type) {\n case LOGIN_CUSTOMER:\n return {\n ...state,\n isFetching: true\n };\n case LOGIN_CUSTOMER_SUCCESS:\n return {\n ...state,\n customerID: action.payload.customer_id,\n info : action.payload,\n isFetching: false\n };\n case LOGIN_CUSTOMER_FAILURE:\n return {\n ...state,\n customerID: action.payload.customer_id,\n isFetching: false\n };\n default:\n return state;\n }\n}\n","import { TOGGLE_ALERT } from \"./alertboxAction\";\n\nconst initialState = {\n isAlertOn: false,\n message: \"\"\n};\n\nexport default function(state = initialState, action) {\n switch (action.type) {\n case TOGGLE_ALERT:\n console.log('in TOGGLE_ALERT');\n console.log(state.isAlertOn);\n return {\n ...state,\n isAlertOn: !state.isAlertOn,\n message: action.payload\n };\n default:\n return state;\n }\n}\n","import { applyMiddleware, createStore, compose } from \"redux\";\nimport { combineReducers } from \"redux\";\nimport thunk from \"redux-thunk\";\nimport { reducer as reduxFormReducer } from \"redux-form\";\nimport { loadTranslations, setLocale, syncTranslationWithStore, i18nReducer } from 'react-redux-i18n';\nimport brandsReducer from \"./brands/brandsReducer\";\nimport productsReducer from \"./products/productsReducer\";\nimport ordersReducer from \"./orders/ordersReducer\";\nimport projectReducer from \"./project/projectReducer\";\nimport titlesReducer from \"./query/queryReducer\";\nimport bannersReducer from \"./banners/bannersReducer\";\nimport customerReducer from \"./register/customerReducer\";\nimport addressReducer from \"./register/addressReducer\";\nimport loginReducer from \"./login/loginReducer\";\nimport alertBoxReducer from \"./alertbox/alertboxReducer\";\nimport { langTH } from \"../locale/th\";\nimport { langEN } from \"../locale/en\";\n\nconst translationsObject = {\n th: langTH,\n en: langEN\n}\n\nconst reducers = combineReducers({\n products: productsReducer,\n brands: brandsReducer,\n orders: ordersReducer,\n project: projectReducer,\n titles: titlesReducer,\n banners: bannersReducer,\n customer: customerReducer,\n address: addressReducer,\n form: reduxFormReducer,\n login: loginReducer,\n alertbox: alertBoxReducer,\n i18n: i18nReducer\n});\n\nconst initialState = {};\n\nconst middleware = [thunk];\n\nconst composeEnhancers =\n typeof window === \"object\" && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__\n ? window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__({})\n : compose;\n\nconst enhancer = composeEnhancers(applyMiddleware(...middleware));\n\nconst store = createStore(\n reducers,\n initialState,\n compose(\n applyMiddleware(...middleware),\n enhancer\n )\n);\n\nsyncTranslationWithStore(store);\nstore.dispatch(loadTranslations(translationsObject));\nstore.dispatch(setLocale('th'));\n\nexport default store;\n","export const langTH = {\n trueIdrec:\"True ID ผู้แนะนำ\",\n brandLabel: \"ยี่ห้อ\",\n bathMonth: \"บาท/เดือน \",\n payVat: \"(ราคาขายรวมภาษีมูลค่าเพิ่ม)\",\n orderPrduct: \"สั่งจองสินค้า\",\n conditionPrice: \" *ราคาที่แสดงเป็นราคาต่อเดือนที่รวมภาษีมูลค่าเพิ่ม 7% แล้ว\",\n dataProfile: \"ข้อมูลส่วนตัว\",\n logout: \"ออกจากระบบ\",\n editProdile: \"แก้ไขรายละเอียด\",\n approve: \"อนุมัติ\",\n // waitconfirm: \"รอยืนยัน\",\n waitconfirm: \"รอการตรวจสอบ\",\n reject: \"ไม่อนุมัติ\",\n waitSend: \"รอส่งของ\",\n send: \"ส่งของแล้ว\",\n waitapprove: \"รออนุมัติ\",\n pending: \"รอดำเนินการ\",\n color: \"สี\",\n deleteOrder: \"ลบรายการ\",\n pricePermonth: \"ราคา/เดือน\",\n priceVat: \"(รวมภาษีมูลค่าเพิ่ม 7%)\",\n contact: \"ระยะสัญญา\",\n allPrice: \"ราคารวม\",\n allContact: \"ทั้งระยะสัญญา\",\n addrDelivery: \"ที่อยู่จัดส่งสินค้า\",\n number: \"หมายเลข\",\n IRservice: \" บริการเสริม (IR/IDD)\",\n editOrder: \"กรุณาระบุข้อมูลให้ครบถ้วน\",\n orderProduct: \"สั่งซื้อ\",\n cart: \"ตะกร้าสินค้า\",\n backToHome: \"กลับหน้าหลัก\",\n howToOrder: \"วิธีการสั่งซื้อ\",\n orderList: \"รายการจองสิทธิ\",\n detail: \"รายละเอียด\",\n status: \"สถานะ\",\n confirmOrder: \"ยืนยันการสั่งซื้อ\",\n addrBill: \"ที่อยู่จัดส่งใบแจ้งค่าบริการ\",\n telNumberService: \"หมายเลขโทรศัพท์ และบริการเสริม\",\n newNumber: \"ประสงค์ใช้หมายเลขโทรศัพท์ใหม่\",\n existNumber: \"ประสงค์ใช้หมายเลขโทรศัพท์เดิม\",\n verifyNumber: \"ตรวจสอบหมายเลขโทรศัพท์\",\n validateRequire: \"กรุณากรอกข้อมูล\",\n validateCheck: \"กรุณากดปุ่มตรวจสอบก่อนทำการบันทึก\",\n verify: \"ตรวจสอบ\",\n IR: \"ประสงค์ใช้บริการข้ามประเทศ (IR) และ\",\n IDD: \"บริการโทรทางไกลระหว่างประเทศ (IDD)\",\n ok: \"ตกลง\",\n cancel: \"ยกเลิก\",\n save: \"บันทึก\",\n login: \"เข้าสู่ระบบ/ลงทะเบียน\",\n validateProfile: \"กรุณาใส่ข้อมูลส่วนตัวให้ครบถ้วน\",\n validateQuota: \"คุณได้ใช้สิทธิ์ครบจำนวนโควต้าแล้ว\",\n\n formEmail: \"อีเมล์\",\n formTel: \"เบอร์โทรติดต่อ\",\n formPosition: \"ตำแหน่ง\",\n formCompany: \"หน่วยงานต้นสังกัด/บริษัท\",\n formAddress_delivery: \"ที่อยู่จัดส่งสินค้า\",\n formTitle: \"คำนำหน้า\",\n formFName: \"ชื่อจริง\",\n formLName: \"นามสกุล\",\n formIDCard: \"เลขที่บัตรประชาชน\",\n formexpireIDCard: \"วันหมดอายุบัตร\",\n formDOB: \"วันเกิด\",\n formAddrIDCard: \"ที่อยุ่ตามบัตรประชาชน\",\n formBuilding: \"หมู่บ้าน/อาคาร\",\n formFloors: \"ชั้น\",\n formMoo: \"หมู่\",\n formSoi: \"ตรอก/ซอย\",\n formStreet: \"ถนน\",\n formProvince: \"จังหวัด\",\n formAmpur: \"อำเภอ/เขต\",\n formTumbon: \"ตำบล/แขวง\",\n formZip: \"รหัสไปรษณีย์\",\n formSelAddress_company: \"เลือกหน่วยงานต้นสังกัด/บริษัท\",\n formSelAddress_delivery: \"เลือกที่อยู่จัดส่งสินค้า\",\n formSelTitle: \"เลือกคำนำหน้า\",\n formSelProvince: \"เลือกจังหวัด\",\n formSelAmpur: \"เลือกอำเภอ/เขต\",\n formSelTumbon: \"เลือกตำบล/แขวง\",\n formSelZip: \"เลือกรหัสไปรษณีย์\",\n edit: \"แก้ไข\",\n editExpire: \"หมดเขตการจองสิทธิไม่สามารถแก้ไขข้อมูลส่วนตัว\",\n orderExpire: \"หมดเขตการสั่งจองสินค้าแล้วค่ะ\",\n agreeProfile: \"ยอมรับและยืนยันตัวตน\",\n clickToAgree:\n \"หากกดปุ่มด้านล่างจะถือเป็นการยอมรับข้อกำหนด และเงื่อนไข กรุณาอ่าน\",\n detaiHere: \"รายละเอียดที่นี่\",\n beforeEdit: \"ก่อนเริ่มทำรายการ\"\n};\n","export const langEN = {\n trueIdrec:\"True ID ผู้แนะนำ en\",\n brandLabel: \"Brands\",\n bathMonth: \"บาท/เดือน en \",\n payVat: \"(ราคาขายรวมภาษีมูลค่าเพิ่ม) en\",\n orderPrduct: \"สั่งจองสินค้า en\",\n conditionPrice:\n \" *ราคาที่แสดงเป็นราคาต่อเดือนที่รวมภาษีมูลค่าเพิ่ม 7% แล้ว en\",\n dataProfile: \"Profile\",\n logout: \"Logout\",\n editProdile: \"แก้ไขรายละเอียด en\",\n approve: \"อนุมัติ en\",\n // waitconfirm: \"รอยืนยัน en\",\n waitconfirm: \"รอการตรวจสอบ en\",\n reject: \"ไม่อนุมัติ en\",\n waitSend: \"รอส่งของ en\",\n send: \"ส่งของแล้ว en\",\n waitapprove: \"รออนุมัติ en\",\n pending: \"รอดำเนินการ en\",\n color: \"Color\",\n deleteOrder: \"Delete\",\n pricePermonth: \"ราคา/เดือน en\",\n priceVat: \"(รวมภาษีมูลค่าเพิ่ม 7%) en\",\n contact: \"ระยะสัญญา en\",\n allPrice: \"ราคารวม\",\n allContact: \"ทั้งระยะสัญญา\",\n addrDelivery: \"ที่อยู่จัดส่งสินค้า en\",\n IRservice: \" บริการเสริม (IR/IDD) en\",\n editOrder: \"กรุณาระบุข้อมูลให้ครบถ้วน en\",\n orderProduct: \"สั่งซื้อ en\",\n cart: \"Cart\",\n backToHome: \"กลับหน้าหลัก en\",\n howToOrder: \"วิธีการสั่งซื้อ en\",\n orderList: \"รายการจองสิทธิ en\",\n detail: \"รายละเอียด en\",\n status: \"สถานะ en\",\n confirmOrder: \"ยืนยันการสั่งซื้อ en\",\n addrBill: \"ที่อยู่จัดส่งใบแจ้งค่าบริการ en\",\n telNumberService: \"หมายเลขโทรศัพท์ และบริการเสริม en\",\n newNumber: \"ประสงค์ใช้หมายเลขโทรศัพท์ใหม่ en\",\n existNumber: \"ประสงค์ใช้หมายเลขโทรศัพท์เดิม en\",\n verifyNumber: \"ตรวจสอบหมายเลขโทรศัพท์ en\",\n validateRequire: \"กรุณากรอกข้อมูล en\",\n validateCheck: \"กรุณากดปุ่มตรวจสอบก่อนทำการบันทึก\",\n verify: \"ตรวจสอบ en\",\n IR: \"ประสงค์ใช้บริการข้ามประเทศ (IR) และ en\",\n IDD: \"บริการโทรทางไกลระหว่างประเทศ (IDD) en\",\n ok: \"ตกลง en\",\n cancel: \"ยกเลิก en\",\n save: \"บันทึก en\",\n login: \"Login/Register\",\n validateProfile: \"กรุณาใส่ข้อมูลส่วนตัวให้ครบถ้วน en\",\n validateQuota: \"คุณได้ใช้สิทธิ์ครบจำนวนโควต้าแล้ว en\",\n\n formEmail: \"อีเมล์ en\",\n formTel: \"เบอร์โทรติดต่อ en\",\n formPosition: \"ตำแหน่ง en\",\n formCompany: \"หน่วยงานต้นสังกัด/บริษัท en\",\n formAddress_delivery: \"ที่อยู่จัดส่งสินค้า en\",\n formTitle: \"คำนำหน้า en\",\n formFName: \"ชื่อจริง en\",\n formLName: \"นามสกุล en\",\n formIDCard: \"เลขที่บัตรประชาชน en\",\n formexpireIDCard: \"วันหมดอายุบัตร en\",\n formDOB: \"วันเกิด en\",\n formAddrIDCard: \"ที่อยุ่ตามบัตรประชาชน en\",\n formBuilding: \"หมู่บ้าน/อาคาร en\",\n formFloors: \"ชั้น en\",\n formMoo: \"หมู่ en\",\n formSoi: \"ตรอก/ซอย en\",\n formStreet: \"ถนน en\",\n formProvince: \"จังหวัด en\",\n formAmpur: \"อำเภอ/เขต en\",\n formTumbon: \"ตำบล/แขวง en\",\n formZip: \"รหัสไปรษณีย์ en\",\n formSelAddress_company: \"เลือกหน่วยงานต้นสังกัด/บริษัท en\",\n formSelAddress_delivery: \"เลือกที่อยู่จัดส่งสินค้า en\",\n formSelTitle: \"เลือกคำนำหน้า en\",\n formSelProvince: \"เลือกจังหวัด en\",\n formSelAmpur: \"เลือกอำเภอ/เขต en\",\n formSelTumbon: \"เลือกตำบล/แขวง en\",\n formSelZip: \"เลือกรหัสไปรษณีย์ en\",\n edit: \"แก้ไข en\",\n editExpire: \"หมดเขตการจองสิทธิไม่สามารถแก้ไขข้อมูลส่วนตัว en\",\n orderExpire: \"หมดเขตการสั่งจองสินค้าแล้วค่ะ en\",\n agreeProfile: \"ยอมรับและยืนยันตัวตน en\",\n clickToAgree:\n \"หากกดปุ่มด้านล่างจะถือเป็นการยอมรับข้อกำหนด และเงื่อนไข กรุณาอ่าน en\",\n detaiHere: \"รายละเอียดที่นี่ en\",\n beforeEdit: \"ก่อนเริ่มทำรายการ en\"\n};\n","import {\n BrowserRouter as Router,\n Route,\n Redirect,\n Switch\n} from \"react-router-dom\";\nimport { Provider } from \"react-redux\";\nimport React from \"react\";\n\nimport Footer from \"./components/layout/footer\";\nimport Header from \"./components/layout/header\";\nimport IndexPage from \"./components/index/index-page\";\nimport Register from \"./components/register/register-page\";\nimport Cart from \"./components/cart/cart-page\";\nimport Project from \"./components/index/projectname\";\nimport Loading from \"./components/layout/loading\";\nimport Outtime from \"./components/outtime/outtime\";\nimport LoginCallback from \"./components/login/login-callback\";\nimport AlertBox from \"./components/layout/alertbox\";\nimport Notfound from \"./components/outtime/notfound\";\n\nimport store from \"./store\";\n\n// import CallApi from \"./util/CallApi\";\n\n// const callApi = new CallApi();\n\nfunction checkLogin() {\n console.log('checkLogin first')\n if (localStorage.getItem(\"access_token\")) {\n return true;\n } else {\n return false;\n }\n}\n\nfunction App() {\n\n let path = \"/notfound\";\n if (localStorage.getItem(\"project_id\")) {\n path = \"/shop/\" + localStorage.getItem(\"project_id\");\n }\n\n const PrivateRoute = ({ component: Component, ...rest }) => {\n console.log('Set Init PrivateRoute');\n // const gtknResp = callApi.setSysToken().then(data => {\n // if (parseInt(data.code) === 200) {\n // localStorage.setItem('sys_token', data.token);\n // }\n\n // return data;\n // });\n\n // const gtknResp = callApi.post(\"/login/gtkn\", {}).then(data => {\n // if (parseInt(data.code) === 200) {\n // localStorage.setItem('sys_token', data.token);\n // }\n\n // return data;\n // });\n\n // console.log(gtknResp);\n\n return (\n \n checkLogin() ? ( /// condition login\n \n ) : (\n \n )\n }\n />\n )\n };\n\n const GeneralRoute = ({ component: Component, ...rest }) => {\n console.log('Set Init GeneralRoute');\n // const gtknResp = callApi.setSysToken().then(data => {\n // if (parseInt(data.code) === 200) {\n // localStorage.setItem('sys_token', data.token);\n // }\n // });\n // const gtknResp = callApi.post(\"/login/gtkn\", {}).then(data => {\n // if (parseInt(data.code) === 200) {\n // localStorage.setItem('sys_token', data.token);\n // }\n\n // return data;\n // });\n\n // console.log(gtknResp);\n\n return (\n ()}\n />\n )\n };\n\n return (\n \n \n \n
    \n \n \n
    \n \n \n {/* */}\n \n \n \n \n ไม่พบหน้านี้}\n />\n ไม่พบหน้านี้} />\n \n
    \n \n