{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/common/Common.js","webpack:///./src/stores/loginSlice.js","webpack:///./src/stores/paylaterAPI.js","webpack:///external \"provinces\"","webpack:///./src/stores/paylaterSlice.js","webpack:///./src/common/Component.js","webpack:///./src/store.js","webpack:///./src/Login/Index.css?2363","webpack:///./src/Login/Index.css","webpack:///./src/Login/Common.js","webpack:///./src/Login/Login.js","webpack:///./src/Login/Register.js","webpack:///./src/Login/ProfileSetting.js","webpack:///./src/Login/Index.js","webpack:///./src/stores/propertySlice.js","webpack:///./src/common/SearchHeader.js","webpack:///./src/common/Header.js","webpack:///external \"configs\""],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","API_URL","process","Config","backendPFSURL","searchPagePath","_Config$pagesLink","pagesLink","search","$","mapipingForFriendlyUrl","gotoSearchPage","args","keys","queryParams","forEach","field","fieldName","from","to","indexOf","concat","unitToValue","values","split","location","option","filter","x","JSON","stringify","join","getUTM","num","multiple","parseFloat","replace","addSearchUrlParameter","obj","history","pushState","param","paramKeys","paramValues","_paramValues$i","_toConsumableArray","newurl","protocol","host","searchFilter","path","addCommas","nStr","z","x1","x2","rgx","test","undefined","isNaN","repeat","toFixed","utmParam","temp","getURLParameter","toLowerCase","decodeURIComponent","RegExp","exec","getPropertyType","_property$PropertyTyp","propertyType","PropertyTypeName","trim","getPropertyTypeEn","_property$PropertyTyp2","getArea","typeCode","hasValue","UseableArea","unit","AreaValue","Area","Rai","Ngan","SquareArea","formattedString","showBedAndBath","showAreaValue","showUseableAreaValue","val","isMobile","navigator","userAgent","postApiDataAsync","_ref","_asyncToGenerator","_regeneratorRuntime","mark","_callee","apiUrl","wrap","_context","prev","next","objRequest","abrupt","axios","post","urlPath","then","parse","Success","Data","error","success","errorMsg","errorCode","response","status","stop","_x","arguments","getApiDataAsync","_ref2","_callee2","_context2","params","headers","unused","sent","_x2","kloader","loader","removeClass","addClass","hasClass","valueRangeMaxMin","copyObject","getPathFromUrl","url","questionMarkIndex","sharpIndex","endIndex","areEqualObjValue","a","b","valid","index","_a$key$option","_b$key$option","noSpecialChar","scrollToValue","document","body","scrollTop","documentElement","setCookie","cname","cvalue","exdays","Date","setTime","getTime","expires","toUTCString","cookie","getCookie","ca","charAt","substring","after","times","func","this","setLikeProperty","PropertyID","like","favProp","includes","e","getCookieData","targetList","Promise","resolve","Items","PageSize","FavMaxPropertyReturnCount","CurrentPageIndex","PropertyIds","commonSearchDataChange","dispatch","payload","searchDataChange","OnsearchListChange","list","find","child","timeInRangeList","rangeList","time","some","range","dmyHmsToDateObj","str","dateTimeParts","dateParts","timeParts","getDateTimeFormat","date","hasTime","toLocaleDateString","year","month","day","toLocaleTimeString","hour","minute","groupDataBy","array","propertyName","reduce","acc","addQueryString","queryString","URLSearchParams","toString","getQueryStringParameter","addToFavoriteProperty","id","currentFavorites","updatedFavorites","Array","Set","removeFromFavoriteProperty","favorite","loginSlice","createSlice","initialState","customerInfo","fullName","required","errorMessage","label","placeholder","maxLength","phone","inputmode","email","otp","otpRef","otpID","token","IsActive","searchCriteria","customerSubscribeId","criteriaName","province","placeholderSearch","dropdownParent","district","subDistrict","housetype","code","group","land","townhouse","condo","commercialbuilding","warehouse","factory","apartment","office","resort","houseother","rangePrice","min","max","from_value","to_value","step","count","areaRange","useableAreaRange","frequency","submitFavEnable","AutoID","criteriaList","loading","reducers","searchCriteriaDataChange","state","action","searchCriteriaValidateChange","searchCriteriaListChange","searchCriteriaIonRangeChange","searchCriteriaIonRangeListChange","updateCriteriaIonRange","CheckBoxCriteriaChange","groupLength","entries","map","item","ClearSearchCriteria","addObjToCriteriaList","_action$payload","_action$payload2","_action$payload3","_provinceData$find","_action$payload4","_district$option$find","_action$payload5","_action$payload6","_action$payload7","_action$payload8","_action$payload9","provinceData","M","removeObjInCriteriaList","fillFromObjCriteriaList","assign","keyCheckBox","_typeof","searchCriteriaValidate","formsCusInfoDataChange","ClearCusInfo","_loginSlice$actions","actions","merchantAPI","createApi","reducerPath","baseQuery","fetchBaseQuery","baseUrl","endpoints","builder","getMerchants","query","cacheTime","useGetMerchantsQuery","provinces","paylaterSlice","merchants","categories","subcategories","cate_relation","cate_logo","default_popular","selected_category","selected_subcategory","filter_popular_merchants","filter_merchants","search_popular_merchants","search_all_merchants","setMerchants","keysArray","_objectSpread","sortedArray","sort","seq","parseInt","cate_th","subcat","subcate","popular","fg","unshift","self","findIndex","relation","temp2","arr","setSelectedCategory","setSelectedSubCategory","unselectedCategory","filterCategory","_state$subcategories","setSearch","nm_en","nm_th","clearSearch","filterSubCategory","_paylaterSlice$action","updateMerchants","SelectList","_React$Component","props","_this","_classCallCheck","_callSuper","className","templateSelection","minimumResultsForSearch","handleChange","handleOpen","_inherits","_createClass","clearOption","OnformsDataChange","preventDefault","$el","select2","prop","el","select2Setting","allowClear","templateResult","idioma","$span","text","title","one","on","prevProps","trigger","_this2","React","createElement","ref","readOnly","notShowEmptyOption","isArray","renderChild","Component","IonRange","_React$Component2","_this3","size","ionRangeSlider","skin","type","grid","hide_from_to","hide_min_max","onFinish","update","destroy","_this4","RangeInput","_useState","useState","_useState2","_slicedToArray","Start","setStartValue","_useState3","_useState4","setEndValue","_useState5","_useState6","StartList","_useState7","_useState8","EndList","setEndListValue","dropdown","createRef","setStart","current","setEnd","renderStartChild","onClick","startClick","renderEndChild","endClick","classnames","CounterInput","CheckBoxIonInput","Fragment","checked","hidden","CheckBoxCustomInput","spanText","dangerouslySetInnerHTML","__html","DropLeadSelectList","_React$Component4","_this7","dropdownCssClass","_this8","style","display","DropLeadInputField","onChange","target","onBlur","formsBlur","inputMode","configureStore","reducer","_defineProperty","propertyReducer","login","loginReducer","paylater","paylaterReducer","middleware","getDefaultMiddleware","devTools","api","content","default","options","locals","___CSS_LOADER_EXPORT___","regexForReplace","freeze","thaiEngWithSpace","numberOnly","emojiRegEx","calcHeight","that","heightDropDown","innerHeight","heightPopup","newPositionDropDown","parents","position","top","css","useEffect","LoginInputField","useDispatch","_useSelector","useSelector","VaridateCustomerDataField","thaiEngNonNumberRegEx","validateField","setSubmitEnable","errMsg","every","CustomerInfoDataChange","CustomerInfoBlur","onKeyDown","additionBtn","RequestOtpBtn","mtCustomerSubscribeToPayload","MtCustomerSubscribe","MIN_PRICE","MAX_PRICE","MIN_AREA","MAX_AREA","MIN_USEABLE_AREA","MAX_USEABLE_AREA","CUSTOMER_SUBSCRIBE_ID","CRITERIA_NAME","PROVINCE","AMPHUR","TAMBON","PROPERTY_TYPES","FREQUENCY","Login","submitEnable","requestOtp","request","MailTO","OTPReference","VerifyOtpID","showPop","ErrorCode","ErrorMessage","_extends","event","submit","href","disable","class","goToStep","Register","ProfileSetting","_useSelector2","deleteIndex","showFavPop","setShowFavPop","swalDeleteButtons","Swal","mixin","customClass","confirmButton","cancelButton","popup","buttonsStyling","swalAlertButtons","OnRadioCheck","OnSearchDataChange","IonRangeDataChange","RangeInputDataChange","FavTableRowList","DeleteDataRow","fire","html","showCancelButton","showCloseButton","confirmButtonText","cancelButtonText","reverseButtons","isConfirmed","CallApiDelete","dismiss","DismissReason","cancel","DeleteSwal","OpenAddPopUp","EditDataRow","CustomerSubscribeId","CriteriaName","PropertyTypes","Frequency","addToken","icon","CreateNewFav","OnUnsubscribe","bootstrap","Tab","show","role","hide","colSpan","margin","handleChangeCheckBoxCusInfo","Fullname","Telno","Email","reload","magnificPopup","close","CancelDelete","ConfirmDelete","paddingRight","paddingLeft","htmlFor","getRangeValue","Province","Amphur","Tambon","MinPrice","MaxPrice","MinArea","MaxArea","MinUseableArea","MaxUseableArea","mtCustomerSubscribeRequestToPayload","SaveFav","store","ReCAPTCHASiteKey","App","Page","setPage","recaptchaRef","_submit","callFrom","_recaptchaRef$current","reset","executeAsync","recapchaResult","t0","OTPVerifyNo","TokenResponse","AccessToken","MtCustomer","FULLNAME","TELNO","IS_ACTIVE","MT_CUSTOMER_SUBSCRIBEs","element","ReCAPTCHA","sitekey","message","open","items","src","overflowY","closeMarkup","autoFocusLast","fixedContentPos","ReactDOM","render","Provider","HeaderWithSearch","searchBtn","hideDesktop","getElementById","propertySlice","keyword","station","order","rangeField","areaField","useableAreaField","bedroom","bathroom","assetTypes","propertybank","propertywaitsale","partnership","expand","searchResult","resultLength","Allow_Cookies","showTab","newProperty","pageIndex","hasMore","isLoading","TotalRows","promoProperty","popularProperty","favoriteProperty","favoritePropertyList","recentlyviewedProperty","suggestProperty","propertyDetail","AssetInfoTH","AddressNoTH","BuildingTH","FloorTH","VillageTH","SoiTH","RoadTH","TambonName","AmphurName","ProvinceName","Bedroom","Bathroom","CarParking","SellPrice","PromotionPrice","AdjustPrice","PromotionName","PromotionRemark","PropertyIDFormat","ShowAreaValue","ShowUseableArea","PropertyMediaes","GAScore","Like","IsNew","CategoryGroup","CategoryDetail","AIImg","dropleadDetail","usertype","juJuristicId","juFirstName","juLastName","confirmphone","naCitizenId","consentCheck","juCompanyName","naFirstName","naLastName","naCareer","naSalary","availableTime","calcDetail","propertyTypeID","decoration","definedPropertyPrice","appraisalPrice","calcTypes","Home","Land","SME","appliedCalcTypes","forStay","forBusiness","smePropertyType","calculatorHomeLoanSetting","calculatorLandSetting","calculatorSMESetting","stayTotalInstallmentPerMonth","stayTotalLimitAmount","stayInstallmentYear","maxDigit","maxValue","note","stayPropertyLimitAmount","stayPropertyInstallmentPerMonth","stayDecorationLimitAmount","stayDecorationInstallmentPerMonth","stayIncomePerMonth","minValue","stayDebtBurdenPerMonth","stayCanTakeDecoration","businessTotalInstallmentPerMonth","businessTotalLimitAmount","businessInstallmentYear","businessPropertyLimitAmount","businessPropertyInstallmentPerMonth","businessDecorationLimitAmount","businessDecorationInstallmentPerMonth","businessIncomePerMonth","businessDebtBurdenPerMonth","stayValidateFields","businessValidateFields","searchListChange","searchIonRangeChange","searchIonRangeListChange","updateIonRange","CheckBoxChange","ClearSearch","updateSearchResultList","suggest","likePropertyList","PropertyObjTemp","PropertyObj","listName","likeList","updateLikeInList","PropertyLikeList","updatesearchFilterCheckBox","valueCode","toUpdate","searchResultDataChange","OnPropertyListLoading","searchResultPageIndexChange","updatePropertyDetail","formsCalcDataChange","visible","CalcValidateChange","formsCalcRangeInputChange","formsCalcPropsChange","formsDropleadDataChange","DropleadValidateChange","DropleadListChange","_propertySlice$action","priceFilter","provinceFilter","propertyTypeFilter","areEqual","nextProps","PopUpSearch","memo","OnInputChange","GoToSearch","rangeMin","setRangeMin","rangeMax","setRangeMax","areaMin","setAreaMin","areaMax","setAreaMax","_useState9","_useState10","useableAreaMin","setUseableAreaMin","_useState11","_useState12","useableAreaMax","setUseableAreaMax","handleRadioChange","minMaxString","onRangeChange","onAreaChange","onUseableAreaChange","onKeyPress","renderAssetTypesCheckBox","renderCheckBox","HeaderNav","Body","alt","attr","home","promotion","tutorial","faq","querySelectorAll","addEventListener","dataLayer","event_category","event_action","event_label","innerText","MobileNav","tabIndex","height","marginRight","Header","StationNameTH","StationID","PlaceType","Latitude","Longitude","localeCompare","setTimeout","querySelector","noti","search_text","search_location","search_filter_1","search_filter_2","eventCategory","eventAction","eventLabel","dimension49","dimension7","dimension50","dimension51","configs"],"mappings":"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","file":"Login.bundle.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t7: 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([365,0]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","import Config from \"config\";\r\nimport axios from \"axios\";\r\n\r\nconst backendPFSURL = Config?.backendPFSURL;\r\nconst API_URL = process.env.API_ROOT_URL + backendPFSURL;\r\nconst searchPagePath = Config?.pagesLink?.search;\r\nconst $ = window.$;\r\n\r\nconst mapipingForFriendlyUrl = {\r\n \"Tab=popularProperty\": \"/th/propertyforsale/search/popular-propert\",\r\n \"Tab=newProperty\": \"/th/propertyforsale/search/new-property\",\r\n \"Tab=promoProperty\": \"/th/propertyforsale/search/promotion\",\r\n \"propertyType=01\": \"/th/propertyforsale/search/land\",\r\n \"propertyType=02\": \"/th/propertyforsale/search/house\",\r\n \"propertyType=03\": \"/th/propertyforsale/search/townhouse\",\r\n \"propertyType=05\": \"/th/propertyforsale/search/condominium\",\r\n \"propertyType=04\": \"/th/propertyforsale/search/commercial-building\",\r\n \"propertyType=12\": \"/th/propertyforsale/search/warehouse\",\r\n \"propertyType=09\": \"/th/propertyforsale/search/factory\",\r\n \"propertyType=15\": \"/th/propertyforsale/search/apartment\",\r\n \"propertyType=10\": \"/th/propertyforsale/search/office-building\",\r\n \"propertyType=20\": \"/th/propertyforsale/search/resort\",\r\n \"province=10\": \"/th/propertyforsale/search/bangkok\",\r\n \"province=12\": \"/th/propertyforsale/search/nonthaburi\",\r\n \"province=13\": \"/th/propertyforsale/search/pathumthani\",\r\n \"province=11\": \"/th/propertyforsale/search/samutprakan\",\r\n \"province=73\": \"/th/propertyforsale/search/nakhonpathom\",\r\n \"province=50\": \"/th/propertyforsale/search/chiangmai\",\r\n \"province=20\": \"/th/propertyforsale/search/chonburi\",\r\n \"province=40\": \"/th/propertyforsale/search/khonkaen\",\r\n \"province=30\": \"/th/propertyforsale/search/nakhonratchasima\",\r\n \"province=83\": \"/th/propertyforsale/search/phuket\",\r\n \"rangePrice=0,1000000\": \"/th/propertyforsale/search/price-0-1m\",\r\n \"rangePrice=1000000,3000000\": \"/th/propertyforsale/search/price-1-3m\",\r\n \"rangePrice=3000000,5000000\": \"/th/propertyforsale/search/price-3-5m\",\r\n \"rangePrice=5000000,10000000\": \"/th/propertyforsale/search/price-5-10m\",\r\n \"rangePrice=10000000,20000000\": \"/th/propertyforsale/search/price-10-20m\",\r\n \"rangePrice=20000000\": \"/th/propertyforsale/search/price-over20m\",\r\n};\r\n\r\nexport const gotoSearchPage = (args) => {\r\n // Province\r\n // District\r\n // SubDistrict\r\n // PropertyType\r\n // RangePrice\r\n // AreaRange\r\n // UseableAreaRange\r\n // Bedroom\r\n //bathroom\r\n // Station\r\n // Keyword\r\n // AssetTypes\r\n\r\n if (Object.keys(args).length === 0) {\r\n return searchPagePath;\r\n }\r\n\r\n let queryParams = [];\r\n Object.keys(args).forEach(function (key) {\r\n var field = args[key].fieldName;\r\n if (args[key].value) {\r\n if (key === \"rangePrice\" || key === \"areaRange\" || key === \"useableAreaRange\") {\r\n let value = args[key].value;\r\n let from = \"0\";\r\n let to = \"0\";\r\n\r\n if (value.indexOf(\"สูงสุด\") !== -1) {\r\n to = value;\r\n value = `${unitToValue(from)},${unitToValue(to)}`;\r\n } else if (value.indexOf(\"เริ่มต้น\") !== -1) {\r\n from = value;\r\n to = args[key].values.slice(-1)[0];\r\n value = `${unitToValue(from)}`;\r\n } else {\r\n from = value.split(\"-\")[0];\r\n to = value.split(\"-\")[1];\r\n value = `${unitToValue(from)},${unitToValue(to)}`;\r\n }\r\n\r\n // value = `${unitToValue(from)},${unitToValue(to)}`;\r\n queryParams.push(`${field}=${value}`);\r\n } else if (key === \"order\") {\r\n } else if (key === \"station\") {\r\n queryParams.push(`${field}=${args[key].value}`);\r\n var location = args[key].option.filter((x) => x.value == args[key].value)[0];\r\n if (location) {\r\n queryParams.push(`Nearby=${JSON.stringify(location.location)}`);\r\n }\r\n } else {\r\n queryParams.push(`${field}=${args[key].value}`);\r\n }\r\n } else if (typeof args[key] === \"string\" && args[key]) {\r\n queryParams.push(`${field}=${args[key]}`);\r\n }\r\n });\r\n if (mapipingForFriendlyUrl[queryParams.join(\"&\")]) {\r\n return mapipingForFriendlyUrl[queryParams.join(\"&\")] + \"?\";\r\n }\r\n return searchPagePath + \"?\" + queryParams.join(\"&\") + \"&\" + getUTM();\r\n};\r\n\r\nexport function unitToValue(num) {\r\n const multiple = num.indexOf(\"บาท\") !== -1 ? 1000000 : num.indexOf(\"ไร่\") !== -1 ? 400 : 1;\r\n const value = parseFloat(num.replace(/\\D+/g, \"\"));\r\n // console.log(\"float\", num, value)\r\n return value * multiple;\r\n}\r\n\r\nexport function addSearchUrlParameter(obj, property) {\r\n if (history.pushState) {\r\n let param = [];\r\n\r\n const paramKeys = Object.keys(obj);\r\n const paramValues = Object.values(obj);\r\n\r\n for (const i in paramKeys) {\r\n param = [...param, `${paramKeys[i]}=${paramValues[i] ?? \"\"}`];\r\n }\r\n\r\n var newurl =\r\n window.location.protocol +\r\n \"//\" +\r\n window.location.host +\r\n gotoSearchPage(property.searchFilter) +\r\n (param.length > 0 && `${param.join(\"&\")}`);\r\n window.history.pushState({ path: newurl }, \"\", newurl);\r\n }\r\n}\r\n\r\nexport function addCommas(nStr, z) {\r\n nStr += \"\";\r\n nStr = nStr.replace(/,/g, \"\");\r\n let x = nStr.split(\".\");\r\n let x1 = x[0];\r\n let x2 = x.length > 1 ? \".\" + x[1] : \"\";\r\n let rgx = /(\\d+)(\\d{3})/;\r\n while (rgx.test(x1)) {\r\n x1 = x1.replace(rgx, \"$1\" + \",\" + \"$2\");\r\n }\r\n if (z !== undefined) {\r\n if (z === 0) {\r\n x2 = \"\";\r\n } else {\r\n x2 = isNaN(parseFloat(x2)) ? \".\" + \"0\".repeat(z) : parseFloat(x2).toFixed(z).slice(1);\r\n }\r\n }\r\n return x1 + x2;\r\n}\r\n\r\nexport function getUTM() {\r\n let utmParam = \"\";\r\n [\"utm_source\", \"utm_medium\", \"utm_campaign\", \"utm_content\", \"utm_term\"].forEach((x) => {\r\n var temp = getURLParameter(x);\r\n if (temp) {\r\n utmParam += \"&\" + x + \"=\" + temp;\r\n }\r\n });\r\n return utmParam.length > 1 ? utmParam.slice(1) : utmParam;\r\n}\r\n\r\nexport function getURLParameter(name) {\r\n name = name.toLowerCase();\r\n return (\r\n decodeURIComponent(\r\n (new RegExp(\"[?|&]\" + name + \"=\" + \"([^&;]+?)(&|#|;|$)\").exec(\r\n location.search.toLowerCase()\r\n ) || [, \"\"])[1].replace(/\\+/g, \"%20\")\r\n ) || null\r\n );\r\n}\r\n\r\nexport function getPropertyType(property) {\r\n var propertyType = (property.PropertyTypeName ?? \"\")\r\n .trim()\r\n .replace(/ +(?= )/g, \"\")\r\n .split(\" \")[1];\r\n\r\n if (propertyType === \"บ้านพักอาศัย\") {\r\n return \"บ้านเดี่ยว\";\r\n } else if (propertyType === \"ห้องชุดพักอาศัย\") {\r\n return \"คอนโดมิเนียม\";\r\n } else if (propertyType === \"ที่ดินว่างเปล่า\") {\r\n return \"ที่ดิน\";\r\n } else if (propertyType === \"อาคารโรงงาน\") {\r\n return \"โรงงาน\";\r\n } else {\r\n return propertyType;\r\n }\r\n}\r\n\r\nexport function getPropertyTypeEn(property) {\r\n var propertyType = (property.PropertyTypeName ?? \"\")\r\n .trim()\r\n .replace(/ +(?= )/g, \"\")\r\n .split(\" \")[0];\r\n\r\n switch (propertyType) {\r\n case \"15\":\r\n return \"apartment\"; \r\n case \"05\":\r\n return \"condo\"; \r\n case \"02\":\r\n return \"house\"; \r\n case \"01\":\r\n return \"land\"; \r\n case \"99\":\r\n return \"manufactured\"; \r\n case \"03\":\r\n return \"townhouse\";\r\n default:\r\n return \"other\";\r\n }\r\n}\r\n\r\nexport function getArea(property) {\r\n var typeCode;\r\n\r\n if (hasValue(property.PropertyTypeName)) {\r\n typeCode = property.PropertyTypeName.trim().split(\" \")[0];\r\n } else {\r\n typeCode = null;\r\n }\r\n\r\n if (typeCode === \"05\") {\r\n //condo\r\n if (hasValue(property.UseableArea) && property.UseableArea !== 0) {\r\n return {\r\n value: property.UseableArea.toFixed(2),\r\n unit: \"ตร.ม.\",\r\n };\r\n } else if (hasValue(property.AreaValue) && property.AreaValue !== 0) {\r\n return {\r\n value: property.AreaValue.toFixed(2),\r\n unit: \"ตร.ม.\",\r\n };\r\n } else {\r\n return null;\r\n }\r\n } else if (typeCode === \"17\") {\r\n //Office suite\r\n if (hasValue(property.UseableArea) && property.UseableArea !== 0) {\r\n return {\r\n value: property.UseableArea.toFixed(2),\r\n unit: \"ตร.ม.\",\r\n };\r\n } else if (hasValue(property.AreaValue) && property.AreaValue !== 0) {\r\n return {\r\n value: property.AreaValue.toFixed(2),\r\n unit: \"ตร.ม.\",\r\n };\r\n } else {\r\n return null;\r\n }\r\n } else if (typeCode === \"02\" || typeCode === \"03\" || typeCode === \"04\" || typeCode === \"15\") {\r\n // House , Townhouse , Commercial building , Apartment\r\n if (hasValue(property.AreaValue) && property.AreaValue !== 0) {\r\n return {\r\n value: property.AreaValue.toFixed(2),\r\n unit: \"ตร.ว.\",\r\n };\r\n } else {\r\n return null;\r\n }\r\n } else if (typeCode === \"99\") {\r\n // Machine\r\n return null;\r\n } else {\r\n //other\r\n if (hasValue(property.Area) && property.Area !== \"0-0-0.00\") {\r\n return {\r\n value: property.Area,\r\n unit: \"ไร่\",\r\n };\r\n } else if (hasValue(property.Rai) && hasValue(property.Ngan) && hasValue(property.SquareArea)) {\r\n const formattedString = `${property.Rai}-${property.Ngan}-${\r\n property.SquareArea.toFixed(2) || \"0.00\"\r\n }`;\r\n if (formattedString == \"0-0-0.00\") {\r\n return null;\r\n }\r\n return {\r\n value: formattedString,\r\n unit: \"ไร่\",\r\n };\r\n } else {\r\n return null;\r\n }\r\n }\r\n}\r\n\r\nexport function showBedAndBath(property) {\r\n var typeCode;\r\n\r\n if (hasValue(property.PropertyTypeName)) {\r\n typeCode = property.PropertyTypeName.trim().split(\" \")[0];\r\n } else {\r\n typeCode = null;\r\n }\r\n\r\n if (\r\n typeCode === \"02\" ||\r\n typeCode === \"03\" ||\r\n typeCode === \"04\" ||\r\n typeCode === \"15\" ||\r\n typeCode === \"05\" ||\r\n typeCode === \"20\" ||\r\n typeCode === \"08\"\r\n ) {\r\n //show bedroom and bathroom icon\r\n return true;\r\n } else {\r\n //other\r\n return false;\r\n }\r\n}\r\n\r\nexport function showAreaValue(property) {\r\n var typeCode;\r\n\r\n if (hasValue(property.PropertyTypeName)) {\r\n typeCode = property.PropertyTypeName.trim().split(\" \")[0];\r\n } else {\r\n typeCode = null;\r\n }\r\n\r\n if (typeCode === \"05\" || typeCode === \"17\") {\r\n //not show Area icon\r\n return false;\r\n } else {\r\n //other\r\n return true;\r\n }\r\n}\r\n\r\nexport function showUseableAreaValue(property) {\r\n const showUseableArea = [\"02\", \"03\", \"04\", \"15\", \"05\", \"17\"];\r\n var typeCode;\r\n\r\n if (hasValue(property.PropertyTypeName)) {\r\n typeCode = property.PropertyTypeName.trim().split(\" \")[0];\r\n } else {\r\n typeCode = null;\r\n }\r\n\r\n if (showUseableArea.indexOf(typeCode) !== -1) {\r\n //show UseableArea icon\r\n return true;\r\n } else {\r\n //other\r\n return false;\r\n }\r\n}\r\n\r\nfunction hasValue(val) {\r\n if (val === null || val === \"\" || val === undefined) {\r\n return false;\r\n }\r\n\r\n return true;\r\n}\r\n\r\nexport function isMobile() {\r\n return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\r\n}\r\n\r\nexport const postApiDataAsync = async (args) => {\r\n let objRequest = args.objRequest;\r\n console.log(\"in async (post) \", args.urlPath, objRequest);\r\n\r\n let apiUrl = API_URL;\r\n\r\n if (args.apiUrl) {\r\n apiUrl = process.env.API_ROOT_URL + args.apiUrl;\r\n }\r\n\r\n return axios.post(`${apiUrl}${args.urlPath}`, args.objRequest).then(\r\n function (data) {\r\n const result = JSON.parse(data.data.d);\r\n if (result.Success) {\r\n return result.Data;\r\n }\r\n throw result;\r\n },\r\n function (error) {\r\n throw {\r\n success: false,\r\n errorMsg: \"ไม่สามารถดำเนินการได้ในขณะนี้ โปรดลองใหม่ในภายหลัง\",\r\n errorCode: error.response ? error.response.status : error,\r\n };\r\n }\r\n );\r\n};\r\n\r\nexport const getApiDataAsync = async (args) => {\r\n console.log(\"in async (get) \", args.urlPath, args.params);\r\n\r\n let apiUrl = API_URL;\r\n\r\n if (args.apiUrl) {\r\n apiUrl = process.env.API_ROOT_URL + args.apiUrl;\r\n }\r\n\r\n return await axios\r\n .get(`${apiUrl}${args.urlPath}`, {\r\n params: args.params,\r\n headers: {\r\n \"Content-Type\": \"application/json;charset=utf-8\",\r\n },\r\n data: { unused: 0 },\r\n })\r\n .then(\r\n function (data) {\r\n const result = JSON.parse(data.data.d);\r\n if (result.Success) {\r\n return result.Data;\r\n }\r\n throw result;\r\n },\r\n function (error) {\r\n throw {\r\n success: false,\r\n errorMsg: \"ไม่สามารถดำเนินการได้ในขณะนี้ โปรดลองใหม่ในภายหลัง\",\r\n errorCode: error.response ? error.response.status : error,\r\n };\r\n }\r\n );\r\n};\r\n\r\nexport const tempgetApiDataAsync = async (args) => {\r\n return await axios\r\n .get(\"\\\\SiteCollectionDocuments\\\\assets\\\\PFS2022\\\\constants.json\", {\r\n headers: {\r\n \"Content-Type\": \"application/json;charset=utf-8\",\r\n },\r\n data: { unused: 0 },\r\n })\r\n .then(\r\n function (data) {\r\n const result = data.data.d;\r\n if (result.Success) {\r\n return result.Data;\r\n }\r\n throw result;\r\n },\r\n function (error) {\r\n throw {\r\n success: false,\r\n errorMsg: \"ไม่สามารถดำเนินการได้ในขณะนี้ โปรดลองใหม่ในภายหลัง\",\r\n errorCode: error.response ? error.response.status : error,\r\n };\r\n }\r\n );\r\n};\r\n\r\nexport function kloader(value) {\r\n const loader = $(\"#loadFormDiv\");\r\n\r\n if (typeof value !== \"undefined\") {\r\n if (value) {\r\n console.log(\"kloader start\");\r\n loader.removeClass(\"hide\");\r\n } else {\r\n console.log(\"kloader stop\");\r\n $(loader).addClass(\"hide\");\r\n }\r\n } else {\r\n if (loader.hasClass(\"hide\")) {\r\n console.log(\"kloader start\");\r\n loader.removeClass(\"hide\");\r\n } else {\r\n console.log(\"kloader stop\");\r\n $(loader).addClass(\"hide\");\r\n }\r\n }\r\n}\r\n\r\nexport function valueRangeMaxMin(fieldName, from, to) {\r\n let value = \"\";\r\n if (from === \"ไม่ระบุ\" && to === \"ไม่ระบุ\") {\r\n value = \"\";\r\n } else if (from === \"ไม่ระบุ\" || from === \"\") {\r\n value = \"สูงสุด \" + to;\r\n } else if (to === \"ไม่ระบุ\" || to === \"\") {\r\n value = \"เริ่มต้น \" + from;\r\n to = \"MAX\";\r\n } else {\r\n value = `${from} - ${to}`;\r\n }\r\n\r\n return { fieldName, value, from, to };\r\n}\r\n\r\nexport function copyObject(obj) {\r\n return JSON.parse(JSON.stringify(obj));\r\n}\r\n\r\nexport function getPathFromUrl(url) {\r\n var questionMarkIndex = url.indexOf(\"?\");\r\n var sharpIndex = url.indexOf(\"#\");\r\n\r\n if (questionMarkIndex === -1 && sharpIndex === -1) {\r\n return url;\r\n }\r\n\r\n var endIndex = url.length;\r\n\r\n if (questionMarkIndex !== -1 && questionMarkIndex < endIndex) {\r\n endIndex = questionMarkIndex;\r\n }\r\n\r\n if (sharpIndex !== -1 && sharpIndex < endIndex) {\r\n endIndex = sharpIndex;\r\n }\r\n\r\n return url.slice(0, endIndex);\r\n}\r\n\r\nexport function areEqualObjValue(a, b) {\r\n var valid = true;\r\n Object.keys(a).forEach((key, index) => {\r\n if (!a[key] || !b[key]) {\r\n return;\r\n }\r\n if (a[key].value !== b[key].value) {\r\n valid = false;\r\n return;\r\n }\r\n if (a[key].option?.length !== b[key].option?.length) {\r\n valid = false;\r\n return;\r\n }\r\n });\r\n return valid;\r\n}\r\n\r\nexport function noSpecialChar(value) {\r\n const noSpecialRegEx = /[^A-Za-z0-9\\u0E01-\\u0E3A\\u0E40-\\u0E4D\\-\\s]/g;\r\n return value.replace(noSpecialRegEx, \"\");\r\n}\r\n\r\nexport function scrollToValue(value) {\r\n document.body.scrollTop = value; // For Safari\r\n document.documentElement.scrollTop = value; // For Chrome, Firefox, IE and Opera\r\n}\r\n\r\nexport function setCookie(cname, cvalue, exdays) {\r\n console.log(\"react setCookie\" + cvalue);\r\n const d = new Date();\r\n d.setTime(d.getTime() + exdays * 24 * 60 * 60 * 1000);\r\n let expires = \"expires=\" + d.toUTCString();\r\n document.cookie = cname + \"=\" + cvalue + \";\" + expires + \";path=/\";\r\n}\r\n\r\nexport function getCookie(cname) {\r\n let name = cname + \"=\";\r\n let decodedCookie = decodeURIComponent(document.cookie);\r\n let ca = decodedCookie.split(\";\");\r\n for (let i = 0; i < ca.length; i++) {\r\n let c = ca[i];\r\n while (c.charAt(0) == \" \") {\r\n c = c.substring(1);\r\n }\r\n if (c.indexOf(name) == 0) {\r\n return c.substring(name.length, c.length);\r\n }\r\n }\r\n return \"\";\r\n}\r\n\r\nfunction containThai(value) {\r\n const isThai = /([\\u0E00-\\u0E7F]+)/g;\r\n return isThai.test(value);\r\n}\r\n\r\nfunction encodeURIThaiObject(obj) {\r\n if (typeof obj !== \"object\" || Array.isArray(obj)) {\r\n return;\r\n }\r\n\r\n Object.keys(obj).forEach(function (key) {\r\n if (typeof obj[key] === \"string\" && containThai(obj[key])) {\r\n obj[key] = encodeURIComponent(obj[key]);\r\n } else if (Array.isArray(obj[key])) {\r\n obj[key].map((x) => {\r\n return encodeURIThaiObject(x);\r\n });\r\n }\r\n });\r\n return obj;\r\n}\r\n\r\nexport function encodeThai(obj) {\r\n obj = JSON.parse(JSON.stringify(obj));\r\n obj = encodeURIThaiObject(obj);\r\n return obj;\r\n}\r\n\r\nexport function after(times, func) {\r\n return function () {\r\n if (--times < 1) {\r\n return func.apply(this, arguments);\r\n }\r\n };\r\n}\r\n\r\nexport function setLikeProperty(PropertyID, like) {\r\n var favProp = getCookie(\"favoriteProperty\");\r\n if (like) {\r\n if (!favProp.split(\",\").includes(PropertyID)) {\r\n setCookie(\r\n \"favoriteProperty\",\r\n favProp\r\n .split(\",\")\r\n .concat(PropertyID)\r\n .filter((x) => x)\r\n .join(\",\"),\r\n 30\r\n );\r\n }\r\n } else {\r\n if (favProp) {\r\n setCookie(\r\n \"favoriteProperty\",\r\n favProp\r\n .split(\",\")\r\n .filter((e) => e != PropertyID)\r\n .join(\",\"),\r\n 30\r\n );\r\n }\r\n }\r\n}\r\n\r\nexport const getCookieData = (targetList) => {\r\n if (targetList.length === 0) return Promise.resolve({ Items: [] });\r\n return postApiDataAsync({\r\n urlPath: \"/GetProperties\",\r\n objRequest: {\r\n filter: {\r\n PageSize: Config.FavMaxPropertyReturnCount,\r\n CurrentPageIndex: 1,\r\n PropertyIds: targetList,\r\n },\r\n },\r\n });\r\n};\r\n\r\nexport const commonSearchDataChange = (\r\n dispatch,\r\n payload,\r\n searchFilter,\r\n searchDataChange,\r\n OnsearchListChange\r\n) => {\r\n const field = payload.field;\r\n\r\n if (field === \"province\") {\r\n const list = searchFilter[field].option.find((x) => x.value == payload.value);\r\n OnsearchListChange({ field: \"district\", value: list?.child || [] });\r\n OnsearchListChange({ field: \"subDistrict\", value: [] });\r\n } else if (field === \"district\") {\r\n const list = searchFilter[field].option.find((x) => x.value == payload.value);\r\n\r\n OnsearchListChange({ field: \"subDistrict\", value: list?.child || [] });\r\n }\r\n dispatch(searchDataChange(payload));\r\n};\r\n\r\nexport function timeInRangeList(rangeList, time = new Date()) {\r\n var result = null;\r\n rangeList.some((range) => {\r\n return time >= range[0] && time <= range[1] ? ((result = range), true) : false;\r\n });\r\n return result;\r\n}\r\n\r\nexport function dmyHmsToDateObj(str) {\r\n var dateTimeParts = str.split(\"T\");\r\n var dateParts = dateTimeParts[0].split(\"-\");\r\n var timeParts = dateTimeParts[1].split(\":\");\r\n\r\n return new Date(\r\n +dateParts[0],\r\n +dateParts[1] - 1,\r\n +dateParts[2],\r\n +timeParts[0],\r\n +timeParts[1],\r\n +timeParts[2]\r\n );\r\n}\r\nexport function getDateTimeFormat(date, hasTime = true) {\r\n var str = date.toLocaleDateString(\"th-TH\", {\r\n year: \"numeric\",\r\n month: \"long\",\r\n day: \"numeric\",\r\n });\r\n if (hasTime) {\r\n str +=\r\n \" เวลา \" +\r\n date.toLocaleTimeString(\"th-TH\", {\r\n hour: \"2-digit\",\r\n minute: \"2-digit\",\r\n }) +\r\n \" น.\";\r\n }\r\n\r\n return str;\r\n}\r\n\r\n// Global favorite func\r\nwindow.addToFavoriteProperty = function (id) {\r\n // Retrieve existing 'favoriteProperty' cookie value\r\n const existingFavorites = getCookie(\"favoriteProperty\") || \"\";\r\n\r\n // Split the existing favorites by commas\r\n const currentFavorites = existingFavorites.split(\",\");\r\n\r\n // Add the new ID to the existing favorites\r\n const updatedFavorites = [...currentFavorites, id];\r\n\r\n // Deduplicate the array by converting it to a Set and then back to an array\r\n const uniqueFavorites = Array.from(new Set(updatedFavorites));\r\n\r\n // Join the unique ids into a comma-separated string\r\n const updatedFavoritesString = uniqueFavorites.join(\",\");\r\n\r\n // Set the 'favoriteProperty' cookie with the updated value\r\n setCookie(\"favoriteProperty\", updatedFavoritesString, 30); // Change 30 to the desired expiration time in days\r\n};\r\n\r\nwindow.removeFromFavoriteProperty = function (id) {\r\n // Retrieve existing 'favoriteProperty' cookie value\r\n const existingFavorites = getCookie(\"favoriteProperty\") || \"\";\r\n\r\n // Split the existing favorites by commas\r\n const currentFavorites = existingFavorites.split(\",\");\r\n\r\n // Remove the specified ID from the existing favorites\r\n const updatedFavorites = currentFavorites.filter((favorite) => favorite !== id);\r\n\r\n // Join the remaining favorites into a comma-separated string\r\n const updatedFavoritesString = updatedFavorites.join(\",\");\r\n\r\n // Set the 'favoriteProperty' cookie with the updated value\r\n setCookie(\"favoriteProperty\", updatedFavoritesString, 30); // Change 30 to the desired expiration time in days\r\n};\r\n\r\nexport function groupDataBy(array, propertyName) {\r\n if (array) {\r\n return array.reduce((acc, obj) => {\r\n const key = obj[propertyName];\r\n if (!acc[key]) {\r\n acc[key] = [];\r\n }\r\n acc[key].push(obj);\r\n return acc;\r\n }, {});\r\n }else{\r\n return [];\r\n }\r\n}\r\n\r\nexport function addQueryString(queryParams) {\r\n const queryString = new URLSearchParams(queryParams).toString();\r\n return `?${queryString}`;\r\n}\r\n\r\nexport function getQueryStringParameter(param) {\r\n // Get the full query string from the URL\r\n const queryString = window.location.search;\r\n\r\n // Create a URLSearchParams object\r\n const urlParams = new URLSearchParams(queryString);\r\n\r\n // Get the value of the specified parameter\r\n return urlParams.get(param);\r\n}","import { createSlice } from '@reduxjs/toolkit'\r\nimport { noSpecialChar, valueRangeMaxMin } from '../common/Common'\r\nimport provinceData from 'province';\r\n\r\nexport const loginSlice = createSlice({\r\n name: \"counter\",\r\n initialState: {\r\n customerInfo: {\r\n fullName: { value: '', required: true, errorMessage: '', fieldName: 'fullName', label: 'ชื่อ-นามสกุล', placeholder: \"ชื่อ-นามสกุล\", maxLength: 250 },\r\n phone: { value: '', required: true, errorMessage: '', fieldName: 'phone', label: 'เบอร์โทรศัพท์', placeholder: \"เบอร์โทรศัพท์\", maxLength: 10, inputmode: \"numeric\" },\r\n email: { value: '', required: true, errorMessage: '', fieldName: 'email', label: 'อีเมล', placeholder: \"อีเมล\", maxLength: 100 },\r\n otp: { value: '', required: true, errorMessage: '', fieldName: 'otp', label: 'OTP', placeholder: \"กรุณากรอก OTP\", maxLength: 10, inputmode: \"numeric\" },\r\n otpRef: { value: '' },\r\n otpID: { value: '' },\r\n token: { value: '' },\r\n IsActive: { value: true },\r\n },\r\n searchCriteria: {\r\n customerSubscribeId: { value: '' },\r\n criteriaName: { value: '', required: true, errorMessage: '', fieldName: 'criteriaName', label: '', placeholder: \"กรอกตั้งชื่อการแจ้งเตือน\", maxLength: 250 },\r\n province: {\r\n value: \"\", fieldName: \"province\", placeholderSearch: \"ชื่อจังหวัด\", placeholder: \"จังหวัด\", dropdownParent: \"#favorite-popup\",\r\n option: []\r\n },\r\n district: {\r\n value: \"\", fieldName: \"district\", placeholderSearch: \"ชื่อเขต/อำเภอ\", placeholder: \"เขต/อำเภอ\", dropdownParent: \"#favorite-popup\",\r\n option: []\r\n },\r\n subDistrict: {\r\n value: \"\", fieldName: \"subDistrict\", placeholderSearch: \"ชื่อแขวง/ตำบล\", placeholder: \"แขวง/ตำบล\", dropdownParent: \"#favorite-popup\",\r\n option: []\r\n },\r\n\r\n propertyType: {\r\n value: \"\", fieldName: \"propertyType\", errorMessage: '', required: true,\r\n housetype: { value: false, code: \"02\", name: \"บ้านเดี่ยว\", fieldName: \"housetype\", group: \"propertyType\" },\r\n land: { value: false, code: \"01\", name: \"ที่ดิน\", fieldName: \"land\", group: \"propertyType\" },\r\n townhouse: { value: false, code: \"03\", name: \"ทาวน์เฮ้าส์\", fieldName: \"townhouse\", group: \"propertyType\" },\r\n condo: { value: false, code: \"05\", name: \"คอนโดมิเนียม\", fieldName: \"condo\", group: \"propertyType\" },\r\n commercialbuilding: { value: false, code: \"04\", name: \"อาคารพาณิชย์\", fieldName: \"commercialbuilding\", group: \"propertyType\" },\r\n warehouse: { value: false, code: \"12\", name: \"โกดัง\", fieldName: \"warehouse\", group: \"propertyType\" },\r\n factory: { value: false, code: \"09\", name: \"โรงงาน\", fieldName: \"factory\", group: \"propertyType\" },\r\n apartment: { value: false, code: \"15\", name: \"อพาร์ทเม้นท์\", fieldName: \"apartment\", group: \"propertyType\" },\r\n office: { value: false, code: \"10\", name: \"อาคารสำนักงาน\", fieldName: \"office\", group: \"propertyType\" },\r\n resort: { value: false, code: \"20\", name: \"รีสอร์ท\", fieldName: \"resort\", group: \"propertyType\" },\r\n houseother: { value: false, code: \"19\", name: \"อื่น ๆ\", fieldName: \"houseother\", group: \"propertyType\" },\r\n },\r\n rangePrice: {\r\n value: \"\", fieldName: \"rangePrice\", min: 0, max: 11, from: 0, from_value: 0, to: 0, to_value: 0, step: 1, count: 0, placeholder: \"ราคาเริ่มต้น - สิ้นสุด\",\r\n values: [\r\n \"ไม่ระบุ\", \"1 ล้านบาท\", \"3 ล้านบาท\", \"5 ล้านบาท\", \"10 ล้านบาท\", \"20 ล้านบาท\", \"50 ล้านบาท\"\r\n ]\r\n },\r\n areaRange: {\r\n value: \"\", fieldName: \"areaRange\", min: 0, max: 8, from: 0, to: 0, step: 1, count: 0, placeholder: \"เนื้อที่เริ่มต้น - สิ้นสุด\",\r\n values: [\r\n \"ไม่ระบุ\", \"50 ตร.ว.\", \"100 ตร.ว.\", \"200 ตร.ว.\", \"300 ตร.ว.\", \"1 ไร่\", \"5 ไร่\", \"10 ไร่\", \"50 ไร่\"\r\n ]\r\n },\r\n useableAreaRange: {\r\n value: \"\", fieldName: \"useableAreaRange\", min: 0, max: 6, from: 0, to: 0, step: 1, count: 0, placeholder: \"พื้นที่เริ่มต้น - สิ้นสุด\",\r\n values: [\r\n \"ไม่ระบุ\", \"30 ตร.ม.\", \"50 ตร.ม.\", \"100 ตร.ม.\", \"200 ตร.ม.\", \"500 ตร.ม.\",\r\n ]\r\n },\r\n frequency: { value: 'D' },\r\n },\r\n submitFavEnable: {\r\n value: false\r\n },\r\n AutoID: \"\",\r\n criteriaList: [],\r\n loading: null,\r\n },\r\n reducers: {\r\n searchCriteriaDataChange: (state, action) => {\r\n const field = action.payload.field;\r\n const value = action.payload.value;\r\n const errorMessage = action.payload.errorMessage;\r\n\r\n state.searchCriteria[field].value = value;\r\n\r\n state.searchCriteria[field].errorMessage = errorMessage;\r\n },\r\n searchCriteriaValidateChange: (state, action) => {\r\n const field = action.payload.field;\r\n const errorMessage = action.payload.errorMessage;\r\n state.searchCriteria[field].errorMessage = errorMessage;\r\n },\r\n searchCriteriaListChange: (state, action) => {\r\n const field = action.payload.field;\r\n const value = action.payload.value;\r\n\r\n state.searchCriteria[field].value = \"\";\r\n state.searchCriteria[field].option = value;\r\n },\r\n searchCriteriaIonRangeChange: (state, action) => {\r\n const field = action.payload.fieldName;\r\n const value = action.payload.value;\r\n const from = action.payload.from;\r\n const to = action.payload.to;\r\n\r\n state.searchCriteria[field].value = value;\r\n state.searchCriteria[field].from = state.searchCriteria[field].values.indexOf(from);\r\n if (to === \"MAX\") {\r\n state.searchCriteria[field].to = state.searchCriteria[field].max;\r\n }\r\n else {\r\n state.searchCriteria[field].to = state.searchCriteria[field].values.indexOf(to);\r\n }\r\n },\r\n searchCriteriaIonRangeListChange: (state, action) => {\r\n const field = action.payload.fieldName;\r\n const value = action.payload.value;\r\n\r\n state.searchCriteria[field].values = value;\r\n },\r\n updateCriteriaIonRange: (state, action) => {\r\n const field = action.payload.fieldName;\r\n\r\n state.searchCriteria[field].count += 1;\r\n },\r\n CheckBoxCriteriaChange: (state, action) => {\r\n const field = action.payload.fieldName;\r\n const value = action.payload.value;\r\n const group = action.payload.group;\r\n\r\n const groupLength = Object.keys(state.searchCriteria[group]).length - 2\r\n\r\n state.searchCriteria[group][field].value = value;\r\n\r\n const temp = Object.entries(state.searchCriteria[group]).map((item) => {\r\n if (item[0] !== \"fieldName\" && item[0] !== \"value\" && item[1].value) {\r\n return item[1].code\r\n }\r\n }).filter(x => x);\r\n\r\n state.searchCriteria[group].value = temp.length === groupLength ? \"\" : temp.join(',');\r\n state.searchCriteria[group].errorMessage = ''\r\n },\r\n ClearSearchCriteria: (state, action) => {\r\n console.log(\"clear dis\")\r\n Object.keys(state.searchCriteria).forEach(function (key) {\r\n if (key === \"bathroom\" || key === \"bedroom\") {\r\n state.searchCriteria[key].value = 0\r\n } else if (key === \"frequency\") {\r\n state.searchCriteria[key].value = \"D\"\r\n } else {\r\n state.searchCriteria[key].value = \"\"\r\n }\r\n });\r\n\r\n state.searchCriteria.criteriaName.errorMessage = \"\";\r\n state.searchCriteria.propertyType.errorMessage = \"\";\r\n\r\n state.searchCriteria.propertyType.housetype.value = false\r\n state.searchCriteria.propertyType.land.value = false\r\n state.searchCriteria.propertyType.townhouse.value = false\r\n state.searchCriteria.propertyType.condo.value = false\r\n state.searchCriteria.propertyType.commercialbuilding.value = false\r\n state.searchCriteria.propertyType.warehouse.value = false\r\n state.searchCriteria.propertyType.factory.value = false\r\n state.searchCriteria.propertyType.apartment.value = false\r\n state.searchCriteria.propertyType.office.value = false\r\n state.searchCriteria.propertyType.resort.value = false\r\n state.searchCriteria.propertyType.houseother.value = false\r\n\r\n state.searchCriteria.rangePrice.from = 0\r\n state.searchCriteria.rangePrice.to = 0\r\n state.searchCriteria.rangePrice.count += 1\r\n state.searchCriteria.areaRange.from = 0\r\n state.searchCriteria.areaRange.to = 0\r\n state.searchCriteria.areaRange.count += 1\r\n state.searchCriteria.useableAreaRange.from = 0\r\n state.searchCriteria.useableAreaRange.to = 0\r\n state.searchCriteria.useableAreaRange.count += 1\r\n\r\n state.submitFavEnable.value = false\r\n\r\n },\r\n addObjToCriteriaList: (state, action) => {\r\n let customerSubscribeId = { value: action.payload.customerSubscribeId || \"\" };\r\n let criteriaName = { value: action.payload?.criteriaName || \"\" };\r\n let province = { value: action.payload?.province || \"\" };\r\n let district = { value: action.payload?.district || \"\", option: provinceData.find(x => x.value == province.value)?.child || [] };\r\n let subDistrict = { value: action.payload?.subDistrict || \"\", option: district.option.find(x => x.value == district.value)?.child || [] };\r\n let propertyType = { value: action.payload?.propertyType || \"\" };\r\n let rangePrice = { value: action.payload?.rangePrice || \"\" };\r\n let areaRange = { value: action.payload?.areaRange || \"\" };\r\n let useableAreaRange = { value: action.payload?.useableAreaRange || \"\" };\r\n let frequency = { value: action.payload?.frequency || \"D\" };\r\n\r\n if (propertyType.value) {\r\n var propertyTypeValueName = propertyType.value.split(\",\").map((code) => {\r\n return Object.keys(state.searchCriteria.propertyType).filter((key) => {\r\n return state.searchCriteria.propertyType[key].code === code\r\n })[0]\r\n }).filter((x) => x)\r\n\r\n // console.log(\"propertyTypeValueName\", propertyTypeValueName)\r\n\r\n propertyTypeValueName.map((field) => {\r\n propertyType[field] = { value: true };\r\n })\r\n }\r\n\r\n if (rangePrice.value) {\r\n rangePrice.value = rangePrice.value + \"\"\r\n const M = 1000000\r\n let from = rangePrice.value.split(',')[0];\r\n let to = rangePrice.value.split(',')[1];\r\n\r\n if (from === \"0\") {\r\n from = 'ไม่ระบุ'\r\n } else {\r\n from = (parseFloat(from) / M) + \" ล้านบาท\"\r\n }\r\n if (to) {\r\n to = (parseFloat(to) / M) + \" ล้านบาท\"\r\n } else {\r\n to = 'ไม่ระบุ'\r\n }\r\n\r\n rangePrice = valueRangeMaxMin(\"rangePrice\", from, to)\r\n rangePrice.from = state.searchCriteria.rangePrice.values.indexOf(rangePrice.from);\r\n rangePrice.to = rangePrice.to === \"MAX\" ?\r\n state.searchCriteria.rangePrice.max :\r\n state.searchCriteria.rangePrice.values.indexOf(rangePrice.to);\r\n }\r\n if (areaRange.value) {\r\n areaRange.value = areaRange.value + \"\"\r\n let from = areaRange.value.split(',')[0];\r\n let to = areaRange.value.split(',')[1];\r\n\r\n if (from === \"0\") {\r\n from = 'ไม่ระบุ'\r\n } else {\r\n from = parseFloat(from)\r\n if (from >= 400) {\r\n from = (from / 400) + ' ไร่'\r\n } else {\r\n from = from + ' ตร.ว.'\r\n }\r\n }\r\n if (to) {\r\n to = parseFloat(to)\r\n if (to >= 400) {\r\n to = (to / 400) + ' ไร่'\r\n } else {\r\n to = to + ' ตร.ว.'\r\n }\r\n } else {\r\n to = 'ไม่ระบุ'\r\n }\r\n\r\n areaRange = valueRangeMaxMin(\"areaRange\", from, to)\r\n areaRange.from = state.searchCriteria.areaRange.values.indexOf(areaRange.from);\r\n areaRange.to = areaRange.to === \"MAX\" ?\r\n state.searchCriteria.areaRange.max :\r\n state.searchCriteria.areaRange.values.indexOf(areaRange.to);\r\n }\r\n if (useableAreaRange.value) {\r\n useableAreaRange.value = useableAreaRange.value + \"\"\r\n let from = useableAreaRange.value.split(',')[0];\r\n let to = useableAreaRange.value.split(',')[1];\r\n\r\n if (from === \"0\") {\r\n from = 'ไม่ระบุ'\r\n } else {\r\n from = parseFloat(from) + \" ตร.ม.\"\r\n }\r\n if (to) {\r\n to = parseFloat(to) + \" ตร.ม.\"\r\n } else {\r\n to = 'ไม่ระบุ'\r\n }\r\n\r\n useableAreaRange = valueRangeMaxMin(\"useableAreaRange\", from, to)\r\n useableAreaRange.from = state.searchCriteria.useableAreaRange.values.indexOf(useableAreaRange.from);\r\n useableAreaRange.to = useableAreaRange.to === \"MAX\" ?\r\n state.searchCriteria.useableAreaRange.max :\r\n state.searchCriteria.useableAreaRange.values.indexOf(useableAreaRange.to);\r\n }\r\n\r\n const obj = {\r\n customerSubscribeId: customerSubscribeId,\r\n criteriaName: criteriaName,\r\n province: province,\r\n district: district,\r\n subDistrict: subDistrict,\r\n propertyType: propertyType,\r\n rangePrice: rangePrice,\r\n areaRange: areaRange,\r\n useableAreaRange: useableAreaRange,\r\n frequency: frequency,\r\n };\r\n state.criteriaList = [...state.criteriaList.filter(x => x.customerSubscribeId.value != customerSubscribeId.value), obj];\r\n },\r\n removeObjInCriteriaList: (state, action) => {\r\n const index = action.payload.index;\r\n\r\n if (index > -1) {\r\n state.criteriaList.splice(index, 1);\r\n }\r\n },\r\n fillFromObjCriteriaList: (state, action) => {\r\n const index = action.payload.index;\r\n\r\n Object.keys(state.searchCriteria).forEach((key) => {\r\n if (key != \"propertyType\") {\r\n Object.assign(state.searchCriteria[key], state.criteriaList[index][key]);\r\n } else {\r\n Object.keys(state.criteriaList[index][key]).forEach((keyCheckBox) => {\r\n if (typeof state.criteriaList[index][key][keyCheckBox] === 'object') {\r\n Object.assign(state.searchCriteria[key][keyCheckBox], state.criteriaList[index][key][keyCheckBox]);\r\n } else {\r\n state.searchCriteria[key][keyCheckBox] = state.criteriaList[index][key][keyCheckBox];\r\n }\r\n\r\n })\r\n }\r\n\r\n if ([\"rangePrice\", \"areaRange\", \"useableAreaRange\"].includes(key)) {\r\n state.searchCriteria[key].count += 1;\r\n }\r\n })\r\n },\r\n searchCriteriaValidate: (state, action) => {\r\n if (state.searchCriteria.criteriaName.value &&\r\n state.searchCriteria.propertyType.value &&\r\n state.searchCriteria.frequency.value) {\r\n state.submitFavEnable.value = true\r\n } else {\r\n state.submitFavEnable.value = false\r\n }\r\n },\r\n formsCusInfoDataChange: (state, action) => {\r\n const field = action.payload.field;\r\n const value = action.payload.value;\r\n const errorMessage = action.payload.errorMessage;\r\n if (state.customerInfo[field].maxLength) {\r\n state.customerInfo[field].value = value.slice(0, state.customerInfo[field].maxLength);\r\n } else {\r\n state.customerInfo[field].value = value;\r\n }\r\n\r\n state.customerInfo[field].errorMessage = errorMessage;\r\n },\r\n ClearCusInfo: (state, action) => {\r\n Object.keys(state.customerInfo).forEach(function (key) {\r\n if (key === \"bathroom\" || key === \"bedroom\") {\r\n state.customerInfo[key].value = 0\r\n } else if (key === \"order\") {\r\n // state.customerInfo[key].value = \"new\"\r\n } else {\r\n state.customerInfo[key].value = \"\"\r\n }\r\n });\r\n },\r\n },\r\n})\r\n\r\n// Action creators are generated for each case reducer function\r\nexport const { searchCriteriaDataChange, searchCriteriaListChange, searchCriteriaIonRangeChange, searchCriteriaIonRangeListChange, updateCriteriaIonRange, CheckBoxCriteriaChange, ClearSearchCriteria,\r\n addObjToCriteriaList, fillFromObjCriteriaList, searchCriteriaValidateChange, removeObjInCriteriaList, searchCriteriaValidate,\r\n formsCusInfoDataChange, ClearCusInfo,\r\n} = loginSlice.actions\r\n\r\nexport default loginSlice.reducer","import { createApi, fetchBaseQuery } from \"@reduxjs/toolkit/query/react\";\r\n\r\n// Define a service using a base URL and expected endpoints\r\nexport const merchantAPI = createApi({\r\n reducerPath: \"merchantAPI\",\r\n baseQuery: fetchBaseQuery({\r\n baseUrl:\r\n \"/th/KpaylaterConsoleDoc/\",\r\n // \"/SiteCollectionDocuments/personal/loan/personal-loan/paylater-map/json/\",\r\n }),\r\n endpoints: (builder) => ({\r\n getMerchants: builder.query({\r\n query: () => \"merchant.txt?limit=10\",\r\n cacheTime: 60000,\r\n }),\r\n }),\r\n});\r\n\r\n// Export hooks for usage in functional components, which are\r\n// auto-generated based on the defined endpoints\r\nexport const { useGetMerchantsQuery } = merchantAPI;\r\n","module.exports = provinces;","import { createSlice } from \"@reduxjs/toolkit\";\r\n\r\nexport const paylaterSlice = createSlice({\r\n name: \"merchant\",\r\n initialState: {\r\n merchants: [],\r\n categories: [],\r\n subcategories: [],\r\n cate_relation: [],\r\n cate_logo: [],\r\n default_popular: null,\r\n search: \"\",\r\n selected_category: null,\r\n selected_subcategory: \"\",\r\n loading: null,\r\n filter_popular_merchants: null,\r\n filter_merchants: null,\r\n search_popular_merchants: null,\r\n search_all_merchants: null,\r\n },\r\n reducers: {\r\n setMerchants: (state, action) => {\r\n const data = action.payload.data.map((m) => {\r\n const keysArray = m.keys.split(\";\");\r\n return { ...m, keys: keysArray };\r\n });\r\n state.merchants = data;\r\n const temp = action.payload.data;\r\n\r\n // state.merchants?.sort((a, b) => a.seq - b.seq);\r\n // const sortedArray = [...state.merchants].sort((a, b) => a.seq - b.seq);\r\n const sortedArray = [...state.merchants].sort((a, b) => {\r\n if (a.seq !== \"\" && b.seq !== \"\") {\r\n return parseInt(a.seq) - parseInt(b.seq);\r\n } else if (a.seq !== \"\") {\r\n return -1; // a.seq is not empty, so it comes before b.seq\r\n } else if (b.seq !== \"\") {\r\n return 1; // b.seq is not empty, so it comes before a.seq\r\n } else {\r\n return 0; // both a.seq and b.seq are empty, no preference in order\r\n }\r\n });\r\n state.merchants = sortedArray;\r\n // let cat = state.merchants.map((m) => m.cate_th);\r\n let cate_logo = state.merchants.map(({ cate_th, cate_logo }) => ({\r\n cate_th,\r\n cate_logo,\r\n }));\r\n\r\n // let subcat = state.merchants.map((m) => m.subcate);\r\n let subcat = state.merchants.map((m) => m.subcate).filter((x) => x);\r\n let popular = state.merchants.filter((m) => m.fg == \"Y\");\r\n let all = { cate_th: \"ร้านค้ายอดนิยม\", cate_logo: \"popular\" };\r\n cate_logo.unshift(all);\r\n state.categories = [...new Set(cate_logo)];\r\n const uniqueData = Array.from(new Set(state.categories.map(JSON.stringify))).map(JSON.parse);\r\n\r\n const result = uniqueData.filter(\r\n (obj, index, self) =>\r\n index ===\r\n self.findIndex((o) => o.cate_th === obj.cate_th && o.cate_logo === obj.cate_logo)\r\n );\r\n state.categories = result;\r\n state.subcategories = [...new Set(subcat)];\r\n\r\n state.default_popular = [...new Set(popular)];\r\n // state.sort = [...new Set(cate_logo)];\r\n let relation = state.categories.map((c) => {\r\n let temp = state.merchants.filter((m) => m.cate_th == c);\r\n let temp2 = temp.map((t) => t.subcate);\r\n let arr = [];\r\n arr[c] = [...new Set(temp2)];\r\n return arr;\r\n });\r\n\r\n state.cate_relation = relation;\r\n },\r\n setSelectedCategory: (state, action) => {\r\n state.selected_category = action.payload;\r\n },\r\n setSelectedSubCategory: (state, action) => {\r\n if (action.payload == \"ทั้งหมด\") {\r\n state.selected_subcategory = null;\r\n } else {\r\n state.selected_subcategory = action.payload;\r\n }\r\n },\r\n unselectedCategory: (state, action) => {\r\n state.selected_category = null;\r\n state.selected_subcategory = null;\r\n state.filter_popular_merchants = null;\r\n state.filter_merchants = null;\r\n },\r\n filterCategory: (state, action) => {\r\n state.filter_merchants = state.merchants.filter((m) => m.cate_th == state.selected_category);\r\n state.filter_popular_merchants = state.filter_merchants.filter((m) => m.fg == \"Y\");\r\n\r\n if (state.selected_category != \"ร้านค้ายอดนิยม\") {\r\n let temp = state.filter_merchants.map((m) => m.subcate).filter((x) => x);\r\n // let temp = state.filter_merchants.map((m) => m.subcate);\r\n\r\n if (temp != 0) {\r\n state.subcategories = [...new Set(temp)];\r\n } else {\r\n state.subcategories = null;\r\n }\r\n } else {\r\n let subcat = state.merchants.map((m) => m.subcate);\r\n state.subcategories = [...new Set(subcat)];\r\n }\r\n let s = state.subcategories?.length ? state.subcategories : [];\r\n state.subcategories = s;\r\n },\r\n setSearch: (state, action) => {\r\n state.search = action.payload;\r\n if (state.selected_category != null) {\r\n state.filter_merchants = state.filter_merchants.filter(\r\n (m) =>\r\n m.nm_en.toLowerCase().includes(action.payload.toLowerCase()) ||\r\n m.nm_th.includes(action.payload) ||\r\n m.keys.includes(action.payload)\r\n );\r\n } else {\r\n state.filter_merchants = state.merchants.filter(\r\n (m) =>\r\n m.nm_en.toLowerCase().includes(action.payload.toLowerCase()) ||\r\n m.nm_th.includes(action.payload) ||\r\n m.keys.includes(action.payload)\r\n );\r\n }\r\n state.filter_merchants = state.filter_merchants.filter(\r\n (m) =>\r\n m.nm_en.toLowerCase().includes(action.payload.toLowerCase()) ||\r\n m.nm_th.includes(action.payload) ||\r\n m.keys.includes(action.payload)\r\n );\r\n\r\n console.log(\"🚀 ------------------------------------------------------------------------------🚀\")\r\n console.log(\"🚀 ~ file: paylaterSlice.js:128 ~ tate.filter_merchants:\", state.filter_merchants)\r\n console.log(\"🚀 ------------------------------------------------------------------------------🚀\")\r\n\r\n state.filter_popular_merchants = state.filter_merchants.filter((m) => m.fg == \"Y\");\r\n },\r\n clearSearch: (state, action) => {\r\n state.search = \"\";\r\n state.filter_merchants = null;\r\n state.filter_popular_merchants = null;\r\n state.selected_category = null;\r\n state.selected_subcategory = \"\";\r\n },\r\n filterSubCategory: (state, action) => {\r\n if (state.selected_subcategory != null) {\r\n state.filter_merchants = state.merchants.filter(\r\n (m) => m.subcate == state.selected_subcategory\r\n );\r\n\r\n state.filter_popular_merchants = state.filter_merchants.filter((m) => m.fg == \"Y\");\r\n } else {\r\n state.filter_merchants = state.merchants.filter(\r\n (m) => m.cate_th == state.selected_category\r\n );\r\n state.filter_popular_merchants = state.filter_merchants.filter((m) => m.fg == \"Y\");\r\n }\r\n },\r\n },\r\n});\r\n\r\n// Action creators are generated for each case reducer function\r\nexport const {\r\n setMerchants,\r\n setSelectedCategory,\r\n setSelectedSubCategory,\r\n updateMerchants,\r\n filterCategory,\r\n filterSubCategory,\r\n setSearch,\r\n clearSearch,\r\n unselectedCategory,\r\n} = paylaterSlice.actions;\r\n\r\nexport default paylaterSlice.reducer;\r\n","import classnames from \"classnames/bind\";\r\nimport Config from \"config\";\r\nimport React, { createRef, useEffect, useState } from \"react\";\r\n\r\nconst $ = window.$;\r\nexport class SelectList extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n if (this.props.className) {\r\n this.className = this.props.className;\r\n } else {\r\n this.className = \"select-field mb-3\";\r\n }\r\n\r\n if (this.props.templateSelection) {\r\n this.templateSelection = this.props.templateSelection;\r\n } else {\r\n this.templateSelection = \"\";\r\n }\r\n\r\n this.minimumResultsForSearch = this.props.minimumResultsForSearch;\r\n\r\n // console.log(\"select name\",this.className)\r\n this.handleChange = this.handleChange.bind(this);\r\n this.handleOpen = this.handleOpen.bind(this);\r\n }\r\n\r\n handleChange(e) {\r\n // console.log(e)\r\n\r\n if (this.props.clearOption && e.params.args.data.id == \"clear\") {\r\n this.props.OnformsDataChange({\r\n field: this.props.fieldName,\r\n value: \"\",\r\n });\r\n } else {\r\n this.props.OnformsDataChange({\r\n field: this.props.fieldName,\r\n value: e.params.args.data.id,\r\n });\r\n }\r\n\r\n e.preventDefault();\r\n this.$el.select2(\"close\");\r\n }\r\n\r\n handleOpen() {\r\n console.log(\"this.props.placeholderSearch\", this.props.placeholderSearch);\r\n $(\"input.select2-search__field\").prop(\r\n \"placeholder\",\r\n this.props.placeholderSearch\r\n );\r\n }\r\n\r\n componentDidMount() {\r\n //const props = this.props\r\n this.$el = $(this.el);\r\n\r\n if (this.$el.data(\"select2\")) {\r\n this.$el.select2(\"destroy\");\r\n }\r\n\r\n this.select2Setting = {\r\n placeholder: this.props.placeholder,\r\n allowClear: true,\r\n //onChange: this.handleChange\r\n };\r\n\r\n if (this.props.dropdownParent) {\r\n this.select2Setting.dropdownParent = $(this.props.dropdownParent);\r\n }\r\n\r\n if (this.props.fieldName === \"station\") {\r\n this.select2Setting.templateResult = function (idioma) {\r\n if (idioma.id === \"clear\") {\r\n var $span = $(\r\n \"\" +\r\n idioma.text +\r\n \"\"\r\n );\r\n }\r\n else if (idioma.title == \"bts\") {\r\n var $span = $(\r\n \"\" +\r\n idioma.text +\r\n \"\"\r\n );\r\n } else {\r\n var $span = $(\r\n \"\" +\r\n idioma.text +\r\n \"\"\r\n );\r\n }\r\n return $span;\r\n };\r\n\r\n this.select2Setting.templateSelection = function (idioma) {\r\n if (idioma.id) {\r\n if (idioma.title == \"bts\") {\r\n var $span = $(\r\n \"\" +\r\n idioma.text +\r\n \"\"\r\n );\r\n } else {\r\n var $span = $(\r\n \"\" +\r\n idioma.text +\r\n \"\"\r\n );\r\n }\r\n } else {\r\n var $span = $(\"\" + idioma.text + \"\");\r\n }\r\n return $span;\r\n };\r\n }\r\n\r\n if (this.props.templateSelection) {\r\n this.select2Setting.templateSelection = this.props.templateSelection;\r\n }\r\n\r\n if (this.props.minimumResultsForSearch) {\r\n this.select2Setting.minimumResultsForSearch =\r\n this.props.minimumResultsForSearch;\r\n }\r\n\r\n // console.log(this.select2Setting)\r\n this.$el\r\n .select2(this.select2Setting)\r\n .one(\"select2:open\", this.handleOpen)\r\n .on(\"select2:selecting\", this.handleChange);\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n if (prevProps.option !== this.props.option) {\r\n this.$el.select2(\"destroy\");\r\n this.$el\r\n .select2(\r\n this.select2Setting\r\n // {\r\n // placeholder: this.props.placeholder,\r\n // allowClear: true,\r\n // //onChange: this.handleChange\r\n // }\r\n )\r\n .one(\"select2:open\", this.handleOpen)\r\n .on(\"select2:selecting\", this.handleChange);\r\n // console.log(`SelectList ${this.props.fieldName} Updated`)\r\n }\r\n if (prevProps.value !== this.props.value) {\r\n this.$el.trigger(\"change.select2\");\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n (this.el = el)}\r\n readOnly\r\n >\r\n {!this.props.notShowEmptyOption && }\r\n {this.props.clearOption && }\r\n {Array.isArray(this.props.option) &&\r\n this.props.option.map((item, index) => renderChild(item, index))}\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nfunction renderChild(item, index) {\r\n return (\r\n \r\n );\r\n}\r\n\r\nexport class IonRange extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n //this.formsDataChange = props.formsDataChange;\r\n //this = props;\r\n // Don't call this.setState() here!\r\n // this.state = { counter: 0 };\r\n // this.handleClick = this.handleClick.bind(this);\r\n this.handleChange = this.handleChange.bind(this);\r\n }\r\n\r\n handleChange(data) {\r\n this.props.OnformsDataChange(\r\n this.props.fieldName,\r\n data.from_value,\r\n (new Set([data.from, data.to, data.max]).size === 1) ? \"\" : data.to_value\r\n );\r\n }\r\n\r\n componentDidMount() {\r\n //const props = this.props\r\n // console.log(this.props, \" <--slider value\");\r\n this.$el = $(this.el);\r\n this.$el.ionRangeSlider({\r\n skin: \"big\",\r\n type: \"double\",\r\n grid: false,\r\n min: this.props.min,\r\n max: this.props.max,\r\n from: this.props.from,\r\n to: this.props.to,\r\n step: this.props.step,\r\n values: this.props.values,\r\n hide_from_to: true,\r\n hide_min_max: true,\r\n // skin: \"round\",\r\n // prettify_separator: \",\",\r\n //onChange: this.handleChange\r\n onFinish: this.handleChange,\r\n });\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n // Typical usage (don't forget to compare props):\r\n if (\r\n this.props.max !== prevProps.max ||\r\n this.props.min !== prevProps.min ||\r\n this.props.step !== prevProps.step ||\r\n this.props.count !== prevProps.count\r\n ) {\r\n this.$el.data(\"ionRangeSlider\").update({\r\n min: this.props.min,\r\n max: this.props.max,\r\n step: this.props.step,\r\n from: this.props.from,\r\n to: this.props.to,\r\n });\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n this.$el.data(\"ionRangeSlider\").destroy();\r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n (this.el = el)} />\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport const RangeInput = (props) => {\r\n const [Start, setStartValue] = useState(\"\");\r\n const [End, setEndValue] = useState(\"\");\r\n const [StartList, setStartListValue] = useState(props.values);\r\n const [EndList, setEndListValue] = useState(props.values);\r\n const dropdown = createRef();\r\n\r\n function clickRangeInput() {\r\n if ($(\".range-dropdown.active\").length > 0) {\r\n $(\".range-dropdown.active\").removeClass(\"active\");\r\n }\r\n $(dropdown.current).addClass(\"active\");\r\n setStart();\r\n }\r\n\r\n function setStart() {\r\n $(dropdown.current).addClass(\"start\");\r\n $(dropdown.current).removeClass(\"end\");\r\n }\r\n\r\n function setEnd() {\r\n $(dropdown.current).addClass(\"end\");\r\n $(dropdown.current).removeClass(\"start\");\r\n }\r\n\r\n function startClick(item) {\r\n // console.log(\"start\",item)\r\n setStartValue(item);\r\n const index = StartList.indexOf(item);\r\n if (index > 0) {\r\n setEndListValue(\r\n StartList.slice(0, 1).concat(\r\n StartList.slice(StartList.indexOf(item) + 1)\r\n )\r\n );\r\n } else {\r\n setEndListValue(StartList);\r\n }\r\n props.OnformsDataChange(props.fieldName, item, \"\");\r\n setEnd();\r\n }\r\n\r\n function endClick(item) {\r\n // console.log(\"end\",item)\r\n setEndValue(item);\r\n props.OnformsDataChange(props.fieldName, Start, item);\r\n $(dropdown.current).removeClass(\"active\");\r\n }\r\n\r\n function renderStartChild(item, index) {\r\n return (\r\n
  • startClick(item)}>\r\n {item}\r\n
  • \r\n );\r\n }\r\n\r\n function renderEndChild(item, index) {\r\n return (\r\n
  • endClick(item)}>\r\n {item}\r\n
  • \r\n );\r\n }\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n เริ่มต้น\r\n
    \r\n
    -
    \r\n
    \r\n สิ้นสุด\r\n
    \r\n
    \r\n
    \r\n
      \r\n {StartList.map((item, index) => renderStartChild(item, index))}\r\n
    \r\n
      \r\n {EndList.map((item, index) => renderEndChild(item, index))}\r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport const CounterInput = (props) => {\r\n function decrease() {\r\n if (props.value > props.min) {\r\n props.OnformsDataChange({\r\n field: props.fieldName,\r\n value: props.value - 1,\r\n });\r\n }\r\n }\r\n\r\n function increase() {\r\n if (props.value < props.max) {\r\n props.OnformsDataChange({\r\n field: props.fieldName,\r\n value: props.value + 1,\r\n });\r\n }\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport const CheckBoxIonInput = (props) => {\r\n function check() {\r\n props.OnformsDataChange(props.fieldName, !props.value, props.group);\r\n }\r\n\r\n return (\r\n <>\r\n \r\n \r\n

    {props.name}

    \r\n \r\n );\r\n};\r\n\r\nexport const CheckBoxCustomInput = (props) => {\r\n function check() {\r\n props.OnformsDataChange(props.fieldName, !props.value, props.group);\r\n }\r\n\r\n return (\r\n <>\r\n \r\n \r\n

    \r\n \r\n );\r\n};\r\n\r\nexport class CalcSelectList extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n // console.log(\"select name\",this.className)\r\n this.handleChange = this.handleChange.bind(this);\r\n this.renderChild = this.renderChild.bind(this);\r\n }\r\n\r\n handleChange(e) {\r\n // console.log(e)\r\n this.props.OnformsDataChange(this.props.fieldName, e.params.args.data.id);\r\n e.preventDefault();\r\n this.$el.select2(\"close\");\r\n }\r\n\r\n componentDidMount() {\r\n //const props = this.props\r\n this.$el = $(this.el);\r\n\r\n if (this.$el.data(\"select2\")) {\r\n this.$el.select2(\"destroy\");\r\n }\r\n\r\n this.select2Setting = {\r\n placeholder: this.props.placeholder,\r\n allowClear: true,\r\n minimumResultsForSearch: -1,\r\n dropdownCssClass: \"cs-dropdown\",\r\n };\r\n\r\n this.$el\r\n .select2(this.select2Setting)\r\n .on(\"select2:selecting\", this.handleChange);\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n if (prevProps.option !== this.props.option) {\r\n this.$el.select2(\"destroy\");\r\n this.$el\r\n .select2(this.select2Setting)\r\n .on(\"select2:selecting\", this.handleChange);\r\n // console.log(`SelectList ${this.props.fieldName} Updated`)\r\n }\r\n if (prevProps.value !== this.props.value) {\r\n this.$el.trigger(\"change.select2\");\r\n }\r\n }\r\n\r\n renderChild(item) {\r\n return (\r\n \r\n );\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n \r\n (this.el = el)}\r\n readOnly\r\n >\r\n \r\n {Array.isArray(this.props.option) &&\r\n this.props.option.map((item) => this.renderChild(item))}\r\n \r\n {this.props.errorMessage && (\r\n \r\n {this.props.errorMessage}\r\n \r\n )}\r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport const CalcInputField = (props) => {\r\n // console.log(\"InputField Render\",props.fieldName)\r\n\r\n function OnformsDataChange(e) {\r\n console.log(\"on change\", e.target.value);\r\n props.OnformsDataChange(props.fieldName, e.target.value);\r\n }\r\n\r\n function OnformsBlur(e) {\r\n if (props.formsBlur) {\r\n var value = e.target.value;\r\n // if (value === props.placeholder) {\r\n // value = '';\r\n // }\r\n console.log(\"on change\", value);\r\n props.formsBlur(props.fieldName, value);\r\n }\r\n }\r\n\r\n return (\r\n
    \r\n \r\n \r\n {props.errorMessage && (\r\n \r\n {props.errorMessage}\r\n \r\n )}\r\n
    \r\n );\r\n};\r\n\r\nexport class DropLeadSelectList extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n // console.log(\"select name\",this.className)\r\n this.handleChange = this.handleChange.bind(this);\r\n this.renderChild = this.renderChild.bind(this);\r\n }\r\n\r\n handleChange(e) {\r\n // console.log(e)\r\n this.props.OnformsDataChange(this.props.fieldName, e.params.args.data.id);\r\n e.preventDefault();\r\n this.$el.select2(\"close\");\r\n }\r\n\r\n componentDidMount() {\r\n //const props = this.props\r\n this.$el = $(this.el);\r\n\r\n if (this.$el.data(\"select2\")) {\r\n this.$el.select2(\"destroy\");\r\n }\r\n\r\n this.select2Setting = {\r\n placeholder: this.props.placeholder,\r\n allowClear: true,\r\n minimumResultsForSearch: -1,\r\n dropdownCssClass: \"border-dropdown\",\r\n };\r\n\r\n this.$el\r\n .select2(this.select2Setting)\r\n .on(\"select2:selecting\", this.handleChange);\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n if (prevProps.option !== this.props.option) {\r\n this.$el.select2(\"destroy\");\r\n this.$el\r\n .select2(this.select2Setting)\r\n .on(\"select2:selecting\", this.handleChange);\r\n // console.log(`SelectList ${this.props.fieldName} Updated`)\r\n }\r\n if (prevProps.value !== this.props.value) {\r\n this.$el.trigger(\"change.select2\");\r\n }\r\n }\r\n\r\n renderChild(item) {\r\n return (\r\n \r\n );\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n \r\n
    \r\n (this.el = el)}\r\n readOnly\r\n >\r\n \r\n {Array.isArray(this.props.option) &&\r\n this.props.option.map((item) => this.renderChild(item))}\r\n \r\n
    \r\n {this.props.errorMessage && (\r\n \r\n {this.props.errorMessage}\r\n \r\n )}\r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport const DropLeadInputField = (props) => {\r\n // console.log(\"InputField Render\",props.fieldName)\r\n\r\n function OnformsDataChange(e) {\r\n props.OnformsDataChange(props.fieldName, e.target.value);\r\n }\r\n\r\n function OnformsBlur(e) {\r\n if (props.formsBlur) {\r\n var value = e.target.value;\r\n props.formsBlur(props.fieldName, value);\r\n }\r\n }\r\n\r\n return (\r\n
    \r\n \r\n \r\n {props.errorMessage && (\r\n \r\n {props.errorMessage}\r\n \r\n )}\r\n
    \r\n );\r\n};\r\n","import { configureStore } from \"@reduxjs/toolkit\";\r\nimport loginReducer from \"./stores/loginSlice\";\r\nimport { merchantAPI } from \"./stores/paylaterAPI\";\r\nimport paylaterReducer from \"./stores/paylaterSlice\";\r\nimport propertyReducer from \"./stores/propertySlice\";\r\nexport default () =>\r\n configureStore({\r\n reducer: {\r\n property: propertyReducer,\r\n login: loginReducer,\r\n paylater: paylaterReducer,\r\n [merchantAPI.reducerPath]: merchantAPI.reducer,\r\n },\r\n middleware: (getDefaultMiddleware) =>\r\n getDefaultMiddleware().concat(merchantAPI.middleware),\r\n devTools: process.env.NODE_ENV !== \"production\",\r\n });\r\n","var api = require(\"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n var content = require(\"!!../../node_modules/css-loader/dist/cjs.js!./Index.css\");\n\n content = content.__esModule ? content.default : content;\n\n if (typeof content === 'string') {\n content = [[module.id, content, '']];\n }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","// Imports\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(true);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".errorLoginPopup {\\r\\n background: #FFF;\\r\\n max-width: 430px;\\r\\n margin: 0 auto;\\r\\n box-shadow: 0 0 6px rgb(0 0 0 / 15%);\\r\\n border-radius: 10px;\\r\\n padding: 20px;\\r\\n position: relative;\\r\\n overflow: hidden;\\r\\n}\\r\\n\\r\\n.contentCenter {\\r\\n justify-content: center!important;\\r\\n}\\r\\n\\r\\n.mousePointer {\\r\\n cursor: pointer;\\r\\n}\\r\\n\\r\\n.mfp-close.btnGreenWithmfp {\\r\\n border: none;\\r\\n transform: inherit;\\r\\n opacity: inherit;\\r\\n color: #fff;\\r\\n}\\r\\n\\r\\n.myPopUpBg {\\r\\n top: 0;\\r\\n left: 0;\\r\\n width: 100%;\\r\\n height: 100%;\\r\\n z-index: 2042;\\r\\n overflow: hidden;\\r\\n position: fixed;\\r\\n background: #0b0b0b;\\r\\n opacity: .8\\r\\n}\\r\\n\\r\\n.myPopUpWrap {\\r\\n top: 0;\\r\\n left: 0;\\r\\n width: 100%;\\r\\n height: 100%;\\r\\n z-index: 2043;\\r\\n position: fixed;\\r\\n outline: none !important;\\r\\n -webkit-backface-visibility: hidden;\\r\\n overflow: hidden scroll;\\r\\n}\\r\\n\\r\\n.myPopUpContainer {\\r\\n text-align: center;\\r\\n position: absolute;\\r\\n width: 100%;\\r\\n height: 100%;\\r\\n left: 0;\\r\\n top: 0;\\r\\n padding: 0 8px;\\r\\n box-sizing: border-box;\\r\\n}\\r\\n\\r\\n.myPopUpContainer:before {\\r\\n content: '';\\r\\n display: inline-block;\\r\\n height: 100%;\\r\\n vertical-align: middle;\\r\\n}\\r\\n\\r\\n.myPopUpContent {\\r\\n position: relative;\\r\\n display: inline-block;\\r\\n vertical-align: middle;\\r\\n margin: 0 auto;\\r\\n text-align: left;\\r\\n z-index: 2045;\\r\\n width: 100%;\\r\\n padding: 20px;\\r\\n}\\r\\n\\r\\n.myPopUp {\\r\\n background: #FFF;\\r\\n max-width: 1000px;\\r\\n margin: 0 auto;\\r\\n box-shadow: 0 0 6px rgb(0 0 0 / 15%);\\r\\n border-radius: 10px;\\r\\n padding: 20px 20px 40px;\\r\\n position: relative;\\r\\n overflow: hidden;\\r\\n}\\r\\n\\r\\n.myPopUp .box-content {\\r\\n max-width: 560px;\\r\\n margin: 0 auto;\\r\\n padding: 40px 0 20px;\\r\\n border-bottom: 1px solid var(--light-gray-2);\\r\\n margin-bottom: 40px;\\r\\n}\\r\\n\\r\\n.myPopUpContent #favorite-popup .asset-radio {\\r\\n text-align: center;\\r\\n display: inline-block;\\r\\n vertical-align: top;\\r\\n margin-right: 26px;\\r\\n}\\r\\n\\r\\n#favorite-popup .inner-content {\\r\\n padding: 0;\\r\\n margin: 0;\\r\\n max-width: none;\\r\\n}\\r\\n\\r\\n.myPopUpContent .box-btn {\\r\\n display: flex;\\r\\n justify-content: space-between;\\r\\n}\\r\\n\\r\\n.myPopUpContent .btn-close {\\r\\n transform: rotate(45deg);\\r\\n font-size: 15px;\\r\\n color: var(--dark-color-1);\\r\\n overflow: visible;\\r\\n background: transparent;\\r\\n border: 0;\\r\\n -webkit-appearance: none;\\r\\n display: block;\\r\\n outline: 0;\\r\\n padding: 0;\\r\\n z-index: 2046;\\r\\n box-shadow: none;\\r\\n touch-action: manipulation;\\r\\n width: 44px;\\r\\n height: 44px;\\r\\n line-height: 44px;\\r\\n position: absolute;\\r\\n right: 0;\\r\\n top: 0;\\r\\n text-decoration: none;\\r\\n text-align: center;\\r\\n opacity: .65;\\r\\n font-style: normal;\\r\\n font-family: Arial, Baskerville, monospace;\\r\\n user-select: none;\\r\\n text-transform: none;\\r\\n}\\r\\n\\r\\n.myPopUpContent .btn-close i {\\r\\n position: relative;\\r\\n z-index: -1;\\r\\n}\\r\\n\\r\\n.myPopUpContent .wrap-asset {\\r\\n text-align: center;\\r\\n}\\r\\n\\r\\n@media screen and (max-width: 767px) {\\r\\n .myPopUpContent .asset-radio {\\r\\n width: 60px;\\r\\n margin-bottom: 16px;\\r\\n }\\r\\n .myPopUpContent .radio-item {\\r\\n margin-bottom: 6px;\\r\\n }\\r\\n}\\r\\n\\r\\na.link {\\r\\n cursor: pointer;\\r\\n}\", \"\",{\"version\":3,\"sources\":[\"webpack://src/Login/Index.css\"],\"names\":[],\"mappings\":\"AAAA;IACI,gBAAgB;IAChB,gBAAgB;IAChB,cAAc;IACd,oCAAoC;IACpC,mBAAmB;IACnB,aAAa;IACb,kBAAkB;IAClB,gBAAgB;AACpB;;AAEA;IACI,iCAAiC;AACrC;;AAEA;IACI,eAAe;AACnB;;AAEA;IACI,YAAY;IACZ,kBAAkB;IAClB,gBAAgB;IAChB,WAAW;AACf;;AAEA;IACI,MAAM;IACN,OAAO;IACP,WAAW;IACX,YAAY;IACZ,aAAa;IACb,gBAAgB;IAChB,eAAe;IACf,mBAAmB;IACnB;AACJ;;AAEA;IACI,MAAM;IACN,OAAO;IACP,WAAW;IACX,YAAY;IACZ,aAAa;IACb,eAAe;IACf,wBAAwB;IACxB,mCAAmC;IACnC,uBAAuB;AAC3B;;AAEA;IACI,kBAAkB;IAClB,kBAAkB;IAClB,WAAW;IACX,YAAY;IACZ,OAAO;IACP,MAAM;IACN,cAAc;IACd,sBAAsB;AAC1B;;AAEA;IACI,WAAW;IACX,qBAAqB;IACrB,YAAY;IACZ,sBAAsB;AAC1B;;AAEA;IACI,kBAAkB;IAClB,qBAAqB;IACrB,sBAAsB;IACtB,cAAc;IACd,gBAAgB;IAChB,aAAa;IACb,WAAW;IACX,aAAa;AACjB;;AAEA;IACI,gBAAgB;IAChB,iBAAiB;IACjB,cAAc;IACd,oCAAoC;IACpC,mBAAmB;IACnB,uBAAuB;IACvB,kBAAkB;IAClB,gBAAgB;AACpB;;AAEA;IACI,gBAAgB;IAChB,cAAc;IACd,oBAAoB;IACpB,4CAA4C;IAC5C,mBAAmB;AACvB;;AAEA;IACI,kBAAkB;IAClB,qBAAqB;IACrB,mBAAmB;IACnB,kBAAkB;AACtB;;AAEA;IACI,UAAU;IACV,SAAS;IACT,eAAe;AACnB;;AAEA;IACI,aAAa;IACb,8BAA8B;AAClC;;AAEA;IACI,wBAAwB;IACxB,eAAe;IACf,0BAA0B;IAC1B,iBAAiB;IACjB,uBAAuB;IACvB,SAAS;IACT,wBAAwB;IACxB,cAAc;IACd,UAAU;IACV,UAAU;IACV,aAAa;IACb,gBAAgB;IAChB,0BAA0B;IAC1B,WAAW;IACX,YAAY;IACZ,iBAAiB;IACjB,kBAAkB;IAClB,QAAQ;IACR,MAAM;IACN,qBAAqB;IACrB,kBAAkB;IAClB,YAAY;IACZ,kBAAkB;IAClB,0CAA0C;IAC1C,iBAAiB;IACjB,oBAAoB;AACxB;;AAEA;IACI,kBAAkB;IAClB,WAAW;AACf;;AAEA;IACI,kBAAkB;AACtB;;AAEA;IACI;QACI,WAAW;QACX,mBAAmB;IACvB;IACA;QACI,kBAAkB;IACtB;AACJ;;AAEA;IACI,eAAe;AACnB\",\"sourcesContent\":[\".errorLoginPopup {\\r\\n background: #FFF;\\r\\n max-width: 430px;\\r\\n margin: 0 auto;\\r\\n box-shadow: 0 0 6px rgb(0 0 0 / 15%);\\r\\n border-radius: 10px;\\r\\n padding: 20px;\\r\\n position: relative;\\r\\n overflow: hidden;\\r\\n}\\r\\n\\r\\n.contentCenter {\\r\\n justify-content: center!important;\\r\\n}\\r\\n\\r\\n.mousePointer {\\r\\n cursor: pointer;\\r\\n}\\r\\n\\r\\n.mfp-close.btnGreenWithmfp {\\r\\n border: none;\\r\\n transform: inherit;\\r\\n opacity: inherit;\\r\\n color: #fff;\\r\\n}\\r\\n\\r\\n.myPopUpBg {\\r\\n top: 0;\\r\\n left: 0;\\r\\n width: 100%;\\r\\n height: 100%;\\r\\n z-index: 2042;\\r\\n overflow: hidden;\\r\\n position: fixed;\\r\\n background: #0b0b0b;\\r\\n opacity: .8\\r\\n}\\r\\n\\r\\n.myPopUpWrap {\\r\\n top: 0;\\r\\n left: 0;\\r\\n width: 100%;\\r\\n height: 100%;\\r\\n z-index: 2043;\\r\\n position: fixed;\\r\\n outline: none !important;\\r\\n -webkit-backface-visibility: hidden;\\r\\n overflow: hidden scroll;\\r\\n}\\r\\n\\r\\n.myPopUpContainer {\\r\\n text-align: center;\\r\\n position: absolute;\\r\\n width: 100%;\\r\\n height: 100%;\\r\\n left: 0;\\r\\n top: 0;\\r\\n padding: 0 8px;\\r\\n box-sizing: border-box;\\r\\n}\\r\\n\\r\\n.myPopUpContainer:before {\\r\\n content: '';\\r\\n display: inline-block;\\r\\n height: 100%;\\r\\n vertical-align: middle;\\r\\n}\\r\\n\\r\\n.myPopUpContent {\\r\\n position: relative;\\r\\n display: inline-block;\\r\\n vertical-align: middle;\\r\\n margin: 0 auto;\\r\\n text-align: left;\\r\\n z-index: 2045;\\r\\n width: 100%;\\r\\n padding: 20px;\\r\\n}\\r\\n\\r\\n.myPopUp {\\r\\n background: #FFF;\\r\\n max-width: 1000px;\\r\\n margin: 0 auto;\\r\\n box-shadow: 0 0 6px rgb(0 0 0 / 15%);\\r\\n border-radius: 10px;\\r\\n padding: 20px 20px 40px;\\r\\n position: relative;\\r\\n overflow: hidden;\\r\\n}\\r\\n\\r\\n.myPopUp .box-content {\\r\\n max-width: 560px;\\r\\n margin: 0 auto;\\r\\n padding: 40px 0 20px;\\r\\n border-bottom: 1px solid var(--light-gray-2);\\r\\n margin-bottom: 40px;\\r\\n}\\r\\n\\r\\n.myPopUpContent #favorite-popup .asset-radio {\\r\\n text-align: center;\\r\\n display: inline-block;\\r\\n vertical-align: top;\\r\\n margin-right: 26px;\\r\\n}\\r\\n\\r\\n#favorite-popup .inner-content {\\r\\n padding: 0;\\r\\n margin: 0;\\r\\n max-width: none;\\r\\n}\\r\\n\\r\\n.myPopUpContent .box-btn {\\r\\n display: flex;\\r\\n justify-content: space-between;\\r\\n}\\r\\n\\r\\n.myPopUpContent .btn-close {\\r\\n transform: rotate(45deg);\\r\\n font-size: 15px;\\r\\n color: var(--dark-color-1);\\r\\n overflow: visible;\\r\\n background: transparent;\\r\\n border: 0;\\r\\n -webkit-appearance: none;\\r\\n display: block;\\r\\n outline: 0;\\r\\n padding: 0;\\r\\n z-index: 2046;\\r\\n box-shadow: none;\\r\\n touch-action: manipulation;\\r\\n width: 44px;\\r\\n height: 44px;\\r\\n line-height: 44px;\\r\\n position: absolute;\\r\\n right: 0;\\r\\n top: 0;\\r\\n text-decoration: none;\\r\\n text-align: center;\\r\\n opacity: .65;\\r\\n font-style: normal;\\r\\n font-family: Arial, Baskerville, monospace;\\r\\n user-select: none;\\r\\n text-transform: none;\\r\\n}\\r\\n\\r\\n.myPopUpContent .btn-close i {\\r\\n position: relative;\\r\\n z-index: -1;\\r\\n}\\r\\n\\r\\n.myPopUpContent .wrap-asset {\\r\\n text-align: center;\\r\\n}\\r\\n\\r\\n@media screen and (max-width: 767px) {\\r\\n .myPopUpContent .asset-radio {\\r\\n width: 60px;\\r\\n margin-bottom: 16px;\\r\\n }\\r\\n .myPopUpContent .radio-item {\\r\\n margin-bottom: 6px;\\r\\n }\\r\\n}\\r\\n\\r\\na.link {\\r\\n cursor: pointer;\\r\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","import React, { useState, createRef, useEffect } from 'react';\r\nimport { formsCusInfoDataChange } from '../stores/loginSlice';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport classnames from 'classnames/bind';\r\n\r\nconst regexForReplace = Object.freeze({\r\n thaiEngWithSpace: /[^A-Za-z\\u0E01-\\u0E3A\\u0E40-\\u0E4D\\s]/g,\r\n numberOnly: /[^0-9]/g,\r\n emojiRegEx: /([\\uE000-\\uF8FF]|\\uD83C[\\uDC00-\\uDFFF]|\\uD83D[\\uDC00-\\uDFFF]|[\\u2694-\\u2697]|\\uD83E[\\uDD10-\\uDD5D])/g,\r\n\r\n})\r\n\r\nconst $ = window.$\r\n\r\nexport class SelectList extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n if (this.props.className) {\r\n this.className = this.props.className\r\n } else {\r\n this.className = \"select-field mb-3\"\r\n }\r\n\r\n if (this.props.templateSelection) {\r\n this.templateSelection = this.props.templateSelection\r\n } else {\r\n this.templateSelection = \"\"\r\n }\r\n\r\n this.minimumResultsForSearch = this.props.minimumResultsForSearch;\r\n\r\n // console.log(\"select name\",this.className)\r\n this.handleChange = this.handleChange.bind(this);\r\n this.handleOpen = this.handleOpen.bind(this);\r\n }\r\n\r\n handleChange(e) {\r\n // console.log(e)\r\n this.props.OnformsDataChange({ field: this.props.fieldName, value: e.params.args.data.id });\r\n e.preventDefault();\r\n this.$el.select2('close');\r\n }\r\n\r\n handleOpen() {\r\n console.log(\"this.props.placeholderSearch\", this.props.placeholderSearch)\r\n $(\"input.select2-search__field\").prop(\"placeholder\", this.props.placeholderSearch);\r\n }\r\n\r\n componentDidMount() {\r\n //const props = this.props\r\n this.$el = $(this.el);\r\n\r\n if (this.$el.data('select2')) {\r\n this.$el.select2('destroy');\r\n }\r\n\r\n this.select2Setting = {\r\n placeholder: this.props.placeholder,\r\n allowClear: true,\r\n //onChange: this.handleChange\r\n }\r\n\r\n if (this.props.dropdownParent) {\r\n this.select2Setting.dropdownParent = $(this.props.dropdownParent)\r\n }\r\n\r\n if (this.props.templateSelection) {\r\n this.select2Setting.templateSelection = this.props.templateSelection\r\n }\r\n\r\n if (this.props.minimumResultsForSearch) {\r\n this.select2Setting.minimumResultsForSearch = this.props.minimumResultsForSearch\r\n }\r\n\r\n // console.log(this.select2Setting)\r\n this.$el\r\n .select2(this.select2Setting)\r\n .one(\"select2:open\", this.handleOpen)\r\n .on('select2:selecting', this.handleChange)\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n if (prevProps.option !== this.props.option) {\r\n this.$el.select2('destroy');\r\n this.$el.select2(this.select2Setting\r\n // {\r\n // placeholder: this.props.placeholder,\r\n // allowClear: true,\r\n // //onChange: this.handleChange\r\n // }\r\n )\r\n .one(\"select2:open\", this.handleOpen)\r\n .on('select2:selecting', this.handleChange)\r\n // console.log(`SelectList ${this.props.fieldName} Updated`)\r\n }\r\n if (prevProps.value !== this.props.value) {\r\n this.$el.trigger('change.select2');\r\n }\r\n }\r\n\r\n renderChild(item, index) {\r\n return \r\n }\r\n\r\n render() {\r\n return
    \r\n \r\n
    ;\r\n\r\n }\r\n}\r\n\r\nexport class IonRange extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n //this.formsDataChange = props.formsDataChange;\r\n //this = props;\r\n // Don't call this.setState() here!\r\n // this.state = { counter: 0 };\r\n // this.handleClick = this.handleClick.bind(this);\r\n this.handleChange = this.handleChange.bind(this);\r\n }\r\n\r\n handleChange(data) {\r\n this.props.OnformsDataChange(this.props.fieldName, data.from_value, (new Set([data.from, data.to, data.max]).size === 1) ? \"\" : data.to_value);\r\n }\r\n\r\n componentDidMount() {\r\n //const props = this.props\r\n // console.log(this.props, \" <--slider value\");\r\n this.$el = $(this.el);\r\n this.$el.ionRangeSlider({\r\n skin: \"big\",\r\n type: \"double\",\r\n grid: false,\r\n min: this.props.min,\r\n max: this.props.max,\r\n from: this.props.from,\r\n to: this.props.to,\r\n step: this.props.step,\r\n values: this.props.values,\r\n hide_from_to: true,\r\n hide_min_max: true,\r\n // skin: \"round\",\r\n // prettify_separator: \",\",\r\n //onChange: this.handleChange\r\n onFinish: this.handleChange\r\n });\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n // Typical usage (don't forget to compare props):\r\n if (this.props.max !== prevProps.max\r\n || this.props.min !== prevProps.min\r\n || this.props.step !== prevProps.step\r\n || this.props.count !== prevProps.count) {\r\n this.$el.data(\"ionRangeSlider\").update({\r\n min: this.props.min,\r\n max: this.props.max,\r\n step: this.props.step,\r\n from: this.props.from,\r\n to: this.props.to,\r\n });\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n this.$el.data(\"ionRangeSlider\").destroy();\r\n }\r\n\r\n render() {\r\n return
    \r\n this.el = el} />\r\n
    ;\r\n }\r\n}\r\n\r\nexport const RangeInput = (props) => {\r\n const [Start, setStartValue] = useState(\"\");\r\n const [End, setEndValue] = useState(\"\");\r\n const [StartList, setStartListValue] = useState(props.values);\r\n const [EndList, setEndListValue] = useState(props.values);\r\n const dropdown = createRef();\r\n\r\n useEffect(() => {\r\n calcHeight();\r\n })\r\n\r\n function clickRangeInput(e) {\r\n if ($(\".range-dropdown.active\").length > 0) {\r\n $(\".range-dropdown.active\").removeClass(\"active\");\r\n }\r\n $(dropdown.current).addClass('active')\r\n setStart()\r\n }\r\n\r\n function calcHeight() {\r\n var that = dropdown.current;\r\n\r\n var heightDropDown = $(that).innerHeight();\r\n var heightPopup = $('.mfp-content').innerHeight() - 30;\r\n var positionDropdDown = $(that).parents().position().top;\r\n var addTop = 8;\r\n var newPositionDropDown = heightDropDown + addTop;\r\n\r\n if ((positionDropdDown + heightDropDown) > heightPopup) {\r\n $(that).css(\"top\", \"-\" + newPositionDropDown + \"px\");\r\n } else if (parseFloat($(that).css(\"top\")) < 0) {\r\n $(that).css(\"top\", \"-\" + newPositionDropDown + \"px\");\r\n }\r\n }\r\n\r\n function setStart() {\r\n $(dropdown.current).addClass('start')\r\n $(dropdown.current).removeClass('end')\r\n calcHeight();\r\n }\r\n\r\n function setEnd() {\r\n $(dropdown.current).addClass('end')\r\n $(dropdown.current).removeClass('start')\r\n }\r\n\r\n function startClick(item) {\r\n // console.log(\"start\",item)\r\n setStartValue(item)\r\n const index = StartList.indexOf(item)\r\n if (index > 0) {\r\n setEndListValue(StartList.slice(0, 1).concat(StartList.slice(StartList.indexOf(item) + 1)))\r\n } else {\r\n setEndListValue(StartList)\r\n }\r\n props.OnformsDataChange(props.fieldName, item, \"\")\r\n setEnd();\r\n }\r\n\r\n function endClick(item) {\r\n // console.log(\"end\",item)\r\n setEndValue(item)\r\n props.OnformsDataChange(props.fieldName, Start, item)\r\n $(dropdown.current).removeClass('active')\r\n }\r\n\r\n function renderStartChild(item, index) {\r\n return
  • startClick(item)}>{item}
  • \r\n }\r\n\r\n function renderEndChild(item, index) {\r\n return
  • endClick(item)}>{item}
  • \r\n }\r\n\r\n return (
    \r\n \r\n
    \r\n
    \r\n
    เริ่มต้น
    \r\n
    -
    \r\n
    สิ้นสุด
    \r\n
    \r\n
    \r\n
      \r\n {StartList.map((item, index) => renderStartChild(item, index))}\r\n
    \r\n
      \r\n {EndList.map((item, index) => renderEndChild(item, index))}\r\n
    \r\n
    \r\n
    \r\n
    )\r\n}\r\n\r\nexport const CheckBoxIonInput = (props) => {\r\n\r\n function check() {\r\n props.OnformsDataChange(props.fieldName, !props.value, props.group)\r\n }\r\n\r\n return (\r\n <>\r\n \r\n \r\n

    {props.name}

    \r\n )\r\n}\r\n\r\nexport const LoginInputField = (props) => {\r\n\r\n const dispatch = useDispatch()\r\n\r\n const [customerInfo] = useSelector((state) => [\r\n state.login.customerInfo,\r\n ])\r\n\r\n function OnformsDataChange(e) {\r\n CustomerInfoDataChange(props.fieldName, e.target.value);\r\n // props.OnformsDataChange(props.fieldName, e.target.value);\r\n\r\n }\r\n\r\n function OnformsBlur(e) {\r\n CustomerInfoBlur(props.fieldName, e.target.value);\r\n props.formsBlur && props.formsBlur(props.fieldName, e.target.value);\r\n }\r\n\r\n function CustomerInfoDataChange(field, value) {\r\n\r\n let errorMessage = \"\"\r\n switch (field) {\r\n case 'otp':\r\n errorMessage = VaridateCustomerDataField(field, value);\r\n case 'phone':\r\n value = value.replace(regexForReplace.numberOnly, '')\r\n value = value.slice(0, 10);\r\n break;\r\n case 'fullName':\r\n value = value.replace(regexForReplace.thaiEngWithSpace, '')\r\n break;\r\n case 'email':\r\n default:\r\n break;\r\n };\r\n\r\n // console.log('on change', field, value, errorMessage);\r\n dispatch(formsCusInfoDataChange({ field, value, errorMessage }))\r\n\r\n if (props.validateField && props.setSubmitEnable) {\r\n const validates = props.validateField.map(x => {\r\n let errMsg = customerInfo[x].errorMessage\r\n if (x === field) {\r\n errMsg = errorMessage;\r\n }\r\n const result = customerInfo[x].value && !errMsg;\r\n return result;\r\n });\r\n const valid = validates.every(c => c);\r\n\r\n props.setSubmitEnable(valid);\r\n }\r\n }\r\n\r\n function CustomerInfoBlur(field, value) {\r\n value = (value || \"\").trim();\r\n const errorMessage = VaridateCustomerDataField(field, value);\r\n\r\n console.log('on blur', field, value, errorMessage)\r\n dispatch(formsCusInfoDataChange({ field, value, errorMessage }))\r\n\r\n if (props.validateField && props.setSubmitEnable) {\r\n const validates = props.validateField.map(x => {\r\n let errMsg = customerInfo[x].errorMessage\r\n if (x === field) {\r\n errMsg = errorMessage;\r\n }\r\n const result = customerInfo[x].value && !errMsg;\r\n return result;\r\n });\r\n const valid = validates.every(c => c);\r\n\r\n props.setSubmitEnable(valid);\r\n }\r\n }\r\n\r\n function VaridateCustomerDataField(field, value) {\r\n if (typeof (value) == 'boolean') {\r\n value = value.toString()\r\n }\r\n\r\n const formDataField = customerInfo[field];\r\n if (formDataField.required) {\r\n switch (field) {\r\n case 'fullName':\r\n if (value === '') {\r\n return 'กรุณากรอกชื่อ-นามสกุล';\r\n } else if (!isThaiEngNonNumber(value)) {\r\n return 'กรอกข้อมูลชื่อ-นามสกุลให้ถูกต้อง';\r\n }\r\n\r\n return '';\r\n case 'phone':\r\n if (value === '') {\r\n return 'กรุณากรอกเบอร์โทรศัพท์';\r\n } else if (!IsValidMobilePhone(value) || !/^0[869]/.test(value)) {\r\n return 'กรอกข้อมูลเบอร์โทรศัพท์ให้ถูกต้อง';\r\n }\r\n\r\n return '';\r\n case 'otp':\r\n if (value === '') {\r\n return 'กรุณากรอก OTP';\r\n }\r\n else if (value.length !== 6) {\r\n return 'กรอกข้อมูล OTP ให้ถูกต้อง';\r\n }\r\n\r\n return '';\r\n case 'email':\r\n if (value === '') {\r\n return 'กรุณากรอกอีเมล';\r\n } else if (!IsValidEmail(value)) {\r\n return 'กรอกข้อมูลอีเมลให้ถูกต้อง';\r\n }\r\n\r\n return '';\r\n default:\r\n return '';\r\n }\r\n }\r\n else {\r\n return '';\r\n }\r\n }\r\n\r\n return (\r\n
    \r\n
    {props.label ? props.label : ''}{props.required && *}
    \r\n
    \r\n \r\n {props.additionBtn && props.additionBtn}\r\n {/* */}\r\n
    \r\n {props.errorMessage &&
    {props.errorMessage}
    }\r\n
    \r\n );\r\n}\r\n\r\nexport const RequestOtpBtn = (props) => {\r\n function handleOnClick(e) {\r\n props.onClick && props.onClick(e);\r\n }\r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\nvar thaiEngNonNumberRegEx = /^[A-Za-z\\u0E00-\\u0E5F_-\\s]*$/;\r\n\r\nfunction isThaiEngNonNumber(str) {\r\n return thaiEngNonNumberRegEx.test(str);\r\n}\r\n\r\nfunction IsValidEmail(email) {\r\n // the regex works in IE but should be a string (see nnnnn's answer) \r\n // var em= new RegExp(/^[+a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,4}$/i);\r\n var em = /^[+a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,4}$/i; // simpler\r\n return em.test(email);\r\n}\r\n\r\nfunction IsValidMobilePhone(phonenumber) {\r\n return /0[13456789]{1}[0-9]{8}$/.test(phonenumber)// && /^0[869]/.test(phonenumber);\r\n}\r\n\r\nfunction IsNumberOnly(str) {\r\n return /[0123456789]$/.test(str)\r\n}\r\n\r\nexport function valueRangeMaxMin(fieldName, from, to) {\r\n\r\n let value = \"\"\r\n if (from === \"ไม่ระบุ\" && to === \"ไม่ระบุ\") {\r\n value = \"\"\r\n } else if (from === \"ไม่ระบุ\" || from === \"\") {\r\n value = \"สูงสุด \" + to\r\n } else if (to === \"ไม่ระบุ\" || to === \"\") {\r\n value = \"เริ่มต้น \" + from\r\n to = \"MAX\"\r\n }\r\n else {\r\n value = `${from} - ${to}`\r\n }\r\n\r\n return { fieldName, value, from, to }\r\n}\r\n\r\nexport function mtCustomerSubscribeToPayload(MtCustomerSubscribe) {\r\n let rangePrice = MtCustomerSubscribe.MIN_PRICE\r\n if (MtCustomerSubscribe.MAX_PRICE != 0 && MtCustomerSubscribe.MAX_PRICE) {\r\n rangePrice += \",\" + MtCustomerSubscribe.MAX_PRICE\r\n }\r\n let areaRange = MtCustomerSubscribe.MIN_AREA\r\n if (MtCustomerSubscribe.MAX_AREA != 0 && MtCustomerSubscribe.MAX_AREA) {\r\n areaRange += \",\" + MtCustomerSubscribe.MAX_AREA\r\n }\r\n let useableAreaRange = MtCustomerSubscribe.MIN_USEABLE_AREA\r\n if (MtCustomerSubscribe.MAX_USEABLE_AREA != 0 && MtCustomerSubscribe.MAX_USEABLE_AREA) {\r\n useableAreaRange += \",\" + MtCustomerSubscribe.MAX_USEABLE_AREA\r\n }\r\n const payload = {\r\n customerSubscribeId: MtCustomerSubscribe.CUSTOMER_SUBSCRIBE_ID,\r\n criteriaName: MtCustomerSubscribe.CRITERIA_NAME,\r\n province: MtCustomerSubscribe.PROVINCE,\r\n district: MtCustomerSubscribe.AMPHUR,\r\n subDistrict: MtCustomerSubscribe.TAMBON,\r\n propertyType: MtCustomerSubscribe.PROPERTY_TYPES,\r\n rangePrice: rangePrice,\r\n areaRange: areaRange,\r\n useableAreaRange: useableAreaRange,\r\n frequency: MtCustomerSubscribe.FREQUENCY,\r\n }\r\n return payload;\r\n}\r\n\r\nexport function mtCustomerSubscribeRequestToPayload(MtCustomerSubscribe) {\r\n let rangePrice = MtCustomerSubscribe.MinPrice\r\n if (MtCustomerSubscribe.MaxPrice != 0 && MtCustomerSubscribe.MaxPrice) {\r\n rangePrice += \",\" + MtCustomerSubscribe.MaxPrice\r\n }\r\n let areaRange = MtCustomerSubscribe.MinArea\r\n if (MtCustomerSubscribe.MaxArea != 0 && MtCustomerSubscribe.MaxArea) {\r\n areaRange += \",\" + MtCustomerSubscribe.MaxArea\r\n }\r\n let useableAreaRange = MtCustomerSubscribe.MinUseableArea\r\n if (MtCustomerSubscribe.MaxUseableArea != 0 && MtCustomerSubscribe.MaxUseableArea) {\r\n useableAreaRange += \",\" + MtCustomerSubscribe.MaxUseableArea\r\n }\r\n const payload = {\r\n customerSubscribeId: MtCustomerSubscribe.CustomerSubscribeId,\r\n criteriaName: MtCustomerSubscribe.CriteriaName,\r\n province: MtCustomerSubscribe.Province,\r\n district: MtCustomerSubscribe.Amphur,\r\n subDistrict: MtCustomerSubscribe.Tambon,\r\n propertyType: MtCustomerSubscribe.PropertyTypes,\r\n rangePrice: rangePrice,\r\n areaRange: areaRange,\r\n useableAreaRange: useableAreaRange,\r\n frequency: MtCustomerSubscribe.Frequency,\r\n }\r\n return payload;\r\n}\r\n\r\nexport function replaceStrThaiEngWithSpace(value) {\r\n return value.replace(regexForReplace.thaiEngWithSpace, '');\r\n}\r\n","import React, { useState, useEffect } from \"react\";\r\nimport { LoginInputField, RequestOtpBtn, mtCustomerSubscribeToPayload } from \"./Common\";\r\nimport { useSelector, useDispatch } from \"react-redux\";\r\nimport classnames from \"classnames/bind\";\r\nimport { ClearCusInfo, formsCusInfoDataChange, addObjToCriteriaList } from \"../stores/loginSlice\";\r\nimport { postApiDataAsync, kloader } from \"../common/Common\";\r\nimport Config from \"config\";\r\n\r\nexport const Login = (props) => {\r\n const [customerInfo] = useSelector((state) => [state.login.customerInfo]);\r\n const [submitEnable, setSubmitEnable] = useState(false);\r\n const dispatch = useDispatch();\r\n const validateField = [\"email\", \"otp\", \"otpRef\", \"otpID\"];\r\n\r\n useEffect(() => {\r\n dispatch(ClearCusInfo());\r\n }, []);\r\n\r\n function requestOtp(e) {\r\n console.log(\"request otp\");\r\n kloader();\r\n\r\n postApiDataAsync({\r\n urlPath: \"/SendEmailOtp\",\r\n objRequest: {\r\n request: {\r\n MailTO: customerInfo.email.value,\r\n },\r\n },\r\n })\r\n .then((data) => {\r\n console.log(\"data\", data);\r\n dispatch(formsCusInfoDataChange({ field: \"otpRef\", value: data.OTPReference }));\r\n dispatch(formsCusInfoDataChange({ field: \"otpID\", value: data.VerifyOtpID }));\r\n\r\n props.showPop(\"กรุณาเช็คอีเมลเพื่อรับรหัส OTP\");\r\n })\r\n .catch(function (error) {\r\n console.log(error);\r\n switch (error.ErrorCode) {\r\n case \"INVALID_OTP\":\r\n props.showPop(\"รหัส OTP ไม่ถูกต้อง\");\r\n break;\r\n default:\r\n props.showPop(error.ErrorMessage);\r\n break;\r\n }\r\n })\r\n .then(() => {\r\n kloader();\r\n });\r\n }\r\n\r\n const handleKeyDownEmail = (event) => {\r\n if (event.key === \"Enter\") {\r\n event.preventDefault();\r\n requestOtp();\r\n }\r\n };\r\n\r\n const handleKeyDown = (event) => {\r\n if (event.key === \"Enter\") {\r\n event.preventDefault();\r\n if (submitEnable) {\r\n props.submit(\"Login\");\r\n }\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n
    \r\n
    \r\n

    \r\n เข้าสู่ระบบการตั้งค่า\r\n
    \r\n รับข้อมูลทรัพย์มือสองแนะนำ\r\n

    \r\n
    \r\n }\r\n validateField={validateField}\r\n setSubmitEnable={setSubmitEnable}\r\n onKeyDown={handleKeyDownEmail}\r\n />\r\n \r\n
    \r\n ธนาคารจะเก็บรวบรวม ใช้ เปิดเผยข้อมูลส่วนบุคคลของท่านเพื่อติดต่อ{\" \"}\r\n
    นำเสนอและประชาสัมพันธ์ผลิตภัณฑ์และบริการที่คุณสนใจ\r\n โปรดศึกษา
    รายละเอียดและสิทธิใน{\" \"}\r\n \r\n นโยบายการคุ้มครองข้อมูลส่วนบุคคล\r\n \r\n
    \r\n
    \r\n props.submit(\"Login\")}\r\n className={classnames([\"btn-green mousePointer pxtm-click-linkClick\", { disable: !submitEnable }])}\r\n >\r\n เข้าสู่ระบบตั้งค่า\r\n \r\n \r\n หากท่านยังไม่เคยลงทะเบียนตั้งค่า
    \r\n props.goToStep(1)} className=\"link\">\r\n กรุณาลงทะเบียนก่อนเข้าสู่ระบบ\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n );\r\n};\r\n","import React, { useState, useEffect } from \"react\";\r\nimport { LoginInputField, RequestOtpBtn, mtCustomerSubscribeToPayload } from \"./Common\";\r\nimport { useSelector, useDispatch } from \"react-redux\";\r\nimport classnames from \"classnames/bind\";\r\nimport { ClearCusInfo, formsCusInfoDataChange, addObjToCriteriaList } from \"../stores/loginSlice\";\r\nimport { postApiDataAsync, kloader } from \"../common/Common\";\r\nimport Config from \"config\";\r\n\r\nexport const Register = (props) => {\r\n const [customerInfo] = useSelector((state) => [state.login.customerInfo]);\r\n const [submitEnable, setSubmitEnable] = useState(false);\r\n const dispatch = useDispatch();\r\n const validateField = [\"email\", \"otp\", \"fullName\", \"phone\"];\r\n\r\n useEffect(() => {\r\n //For otpref and otpID\r\n dispatch(ClearCusInfo());\r\n }, []);\r\n\r\n function requestOtp(e) {\r\n console.log(\"request otp\");\r\n kloader();\r\n\r\n postApiDataAsync({\r\n urlPath: \"/SendEmailOtp\",\r\n objRequest: {\r\n request: {\r\n MailTO: customerInfo.email.value,\r\n },\r\n },\r\n })\r\n .then((data) => {\r\n console.log(\"data\", data);\r\n dispatch(formsCusInfoDataChange({ field: \"otpRef\", value: data.OTPReference }));\r\n dispatch(formsCusInfoDataChange({ field: \"otpID\", value: data.VerifyOtpID }));\r\n\r\n props.showPop(\"กรุณาเช็คอีเมลเพื่อรับรหัส OTP\");\r\n })\r\n .catch(function (error) {\r\n console.log(error);\r\n switch (error.ErrorCode) {\r\n case \"INVALID_OTP\":\r\n props.showPop(\"รหัส OTP ไม่ถูกต้อง\");\r\n break;\r\n default:\r\n props.showPop(error.ErrorMessage);\r\n break;\r\n }\r\n })\r\n .then(() => {\r\n kloader();\r\n });\r\n }\r\n\r\n const handleKeyDownEmail = (event) => {\r\n if (event.key === \"Enter\") {\r\n event.preventDefault();\r\n requestOtp();\r\n }\r\n };\r\n\r\n const handleKeyDown = (event) => {\r\n if (event.key === \"Enter\") {\r\n event.preventDefault();\r\n if (submitEnable) {\r\n props.submit(\"Login\");\r\n }\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n
    \r\n
    \r\n

    ลงทะเบียนเพื่อรับอีเมลทรัพย์มือสองแนะนำ

    \r\n

    \r\n กรอกรายละเอียดทรัพย์\r\n
    และทำเลที่สนใจ\r\n

    \r\n
    \r\n \r\n \r\n }\r\n validateField={validateField}\r\n setSubmitEnable={setSubmitEnable}\r\n onKeyDown={handleKeyDownEmail}\r\n />\r\n \r\n
    \r\n ธนาคารจะเก็บรวบรวม ใช้ เปิดเผยข้อมูลส่วนบุคคลของท่านเพื่อติดต่อ{\" \"}\r\n
    \r\n นำเสนอและประชาสัมพันธ์ผลิตภัณฑ์และบริการที่คุณสนใจ โปรดศึกษา{\" \"}\r\n
    \r\n รายละเอียดและสิทธิใน{\" \"}\r\n \r\n นโยบายการคุ้มครองข้อมูลส่วนบุคคล\r\n \r\n
    \r\n
    \r\n props.submit(\"Register\")}\r\n className={classnames([\"btn-green mousePointer\", { disable: !submitEnable }])}\r\n >\r\n บันทึก\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n );\r\n};\r\n","import React, { useState, useEffect } from \"react\";\r\nimport {\r\n LoginInputField,\r\n RequestOtpBtn,\r\n CheckBoxIonInput,\r\n SelectList,\r\n RangeInput,\r\n IonRange,\r\n valueRangeMaxMin,\r\n mtCustomerSubscribeToPayload,\r\n replaceStrThaiEngWithSpace,\r\n mtCustomerSubscribeRequestToPayload,\r\n} from \"./Common\";\r\nimport { unitToValue, postApiDataAsync, kloader } from \"../common/Common\";\r\nimport { useSelector, useDispatch } from \"react-redux\";\r\nimport classnames from \"classnames/bind\";\r\nimport {\r\n ClearCusInfo,\r\n formsCusInfoDataChange,\r\n ClearSearchCriteria,\r\n fillFromObjCriteriaList,\r\n searchCriteriaValidateChange,\r\n searchCriteriaValidate,\r\n removeObjInCriteriaList,\r\n addObjToCriteriaList,\r\n searchCriteriaDataChange,\r\n searchCriteriaListChange,\r\n searchCriteriaIonRangeChange,\r\n updateCriteriaIonRange,\r\n CheckBoxCriteriaChange,\r\n} from \"../stores/loginSlice\";\r\nimport province from \"province\";\r\nimport Swal from \"sweetalert2\";\r\n\r\nconst $ = window.$;\r\nexport const ProfileSetting = (props) => {\r\n const [customerInfo, searchCriteria, criteriaList, submitFavEnable] = useSelector((state) => [\r\n state.login.customerInfo,\r\n state.login.searchCriteria,\r\n state.login.criteriaList,\r\n state.login.submitFavEnable,\r\n ]);\r\n const [submitEnable, setSubmitEnable] = useState(true);\r\n const [deleteIndex, setDeleteIndex] = useState(false);\r\n const [showFavPop, setShowFavPop] = useState(false);\r\n\r\n const formConfig = {\r\n type: \"inline\",\r\n preloader: false,\r\n focus: \"#name\",\r\n };\r\n\r\n const dispatch = useDispatch();\r\n const validateField = [\"fullName\", \"phone\"];\r\n\r\n const swalDeleteButtons = Swal.mixin({\r\n customClass: {\r\n confirmButton: \"btn-green btn-confirm\",\r\n cancelButton: \"btn-red btn-cancel\",\r\n popup: \"mfp-content white-popup icw\",\r\n actions: \"mt-0\",\r\n },\r\n buttonsStyling: false,\r\n });\r\n\r\n const swalAlertButtons = Swal.mixin({\r\n customClass: {\r\n confirmButton: \"btn-green btn-confirm\",\r\n cancelButton: \"btn-red btn-cancel\",\r\n popup: \"mfp-content white-popup icw\",\r\n // actions: 'mt-0'\r\n },\r\n buttonsStyling: false,\r\n });\r\n\r\n useEffect(() => {\r\n // // Data Test\r\n // dispatch(addObjToCriteriaList({\r\n // customerSubscribeId: \"win guid\",\r\n // criteriaName: \"forTest\",\r\n // province: \"81\",\r\n // district: \"8102\",\r\n // subDistrict: \"810201\",\r\n // propertyType: \"01,02,03\",\r\n // rangePrice: \"0,1000000\",\r\n // areaRange: \"400\",\r\n // useableAreaRange: \"30,100\",\r\n // }));\r\n dispatch(searchCriteriaListChange({ field: \"province\", value: province }));\r\n }, []);\r\n\r\n // console.log(\"criteriaList\", criteriaList);\r\n // console.log(\"searchCriteria\", searchCriteria);\r\n\r\n function OnRadioCheck(fieldName, value, group) {\r\n console.log(fieldName, value, group);\r\n dispatch(CheckBoxCriteriaChange({ fieldName, value, group }));\r\n dispatch(searchCriteriaValidate());\r\n }\r\n\r\n function OnSearchDataChange(payload) {\r\n console.log(payload);\r\n const field = payload.field;\r\n if (field === \"province\") {\r\n const list = searchCriteria[field].option.find((x) => x.value == payload.value);\r\n\r\n OnsearchListChange({ field: \"district\", value: list.child });\r\n OnsearchListChange({ field: \"subDistrict\", value: [] });\r\n } else if (field === \"district\") {\r\n const list = searchCriteria[field].option.find((x) => x.value == payload.value);\r\n\r\n OnsearchListChange({ field: \"subDistrict\", value: list.child });\r\n }\r\n // else if (field === \"criteriaName\") {\r\n // payload.value = replaceStrThaiEngWithSpace(payload.value);\r\n // }\r\n dispatch(searchCriteriaDataChange(payload));\r\n dispatch(searchCriteriaValidate());\r\n }\r\n\r\n function OnsearchListChange(payload) {\r\n dispatch(searchCriteriaListChange(payload));\r\n }\r\n\r\n function IonRangeDataChange(fieldName, from, to) {\r\n const payload = valueRangeMaxMin(fieldName, from, to);\r\n console.log(fieldName, payload.value);\r\n dispatch(searchCriteriaIonRangeChange(payload));\r\n }\r\n\r\n function RangeInputDataChange(fieldName, from, to) {\r\n const payload = valueRangeMaxMin(fieldName, from, to);\r\n console.log(fieldName, payload.value);\r\n dispatch(searchCriteriaIonRangeChange(payload));\r\n dispatch(updateCriteriaIonRange({ fieldName }));\r\n }\r\n\r\n function handleChangeCheckBoxCusInfo(e, field) {\r\n dispatch(formsCusInfoDataChange({ field: field, value: e.target.checked }));\r\n }\r\n\r\n const FavTableRowList = (props) => {\r\n function EditDataRow(index) {\r\n dispatch(ClearSearchCriteria());\r\n dispatch(fillFromObjCriteriaList({ index: index }));\r\n dispatch(searchCriteriaValidate());\r\n\r\n OpenAddPopUp();\r\n }\r\n function DeleteDataRow(index) {\r\n // setDeleteIndex(index);\r\n //OpenDeletePopUp();\r\n DeleteSwal(index);\r\n }\r\n\r\n function DeleteSwal(index) {\r\n swalDeleteButtons\r\n .fire({\r\n html: `\r\n
    \r\n \r\n
    ยืนยันลบข้อมูลการตั้งค่า
    \r\n
    \r\n `,\r\n showCancelButton: true,\r\n showCloseButton: true,\r\n confirmButtonText: \"ยืนยัน\",\r\n cancelButtonText: \"ยกเลิก\",\r\n reverseButtons: true,\r\n })\r\n .then((result) => {\r\n if (result.isConfirmed) {\r\n CallApiDelete(index);\r\n } else if (\r\n /* Read more about handling dismissals below */\r\n result.dismiss === Swal.DismissReason.cancel\r\n ) {\r\n // swalWithBootstrapButtons.fire({\r\n // title: \"Cancelled\",\r\n // text: \"Your imaginary file is safe :)\",\r\n // icon: \"error\"\r\n // });\r\n }\r\n });\r\n }\r\n\r\n const result = props.list.map((obj, index) => {\r\n return (\r\n \r\n {`${index + 1}. ${obj.criteriaName.value}`}\r\n \r\n
    EditDataRow(index)}>\r\n \r\n แก้ไข\r\n
    \r\n
    \r\n
    DeleteDataRow(index)}>\r\n \r\n ลบ\r\n
    \r\n \r\n \r\n );\r\n });\r\n return result;\r\n };\r\n\r\n function OpenAddPopUp() {\r\n setShowFavPop(true);\r\n\r\n // const favoritePoppup = $('#favorite-popup');\r\n\r\n // if ($.magnificPopup) {\r\n // $.magnificPopup.open({\r\n // items: [\r\n // {\r\n // src: favoritePoppup\r\n // }\r\n // ],\r\n // type: \"inline\",\r\n // overflowY: \"scroll\",\r\n // closeMarkup: '',\r\n // autoFocusLast: false,\r\n // fixedContentPos: true,\r\n // })\r\n // }\r\n }\r\n\r\n function OpenDeletePopUp() {\r\n const favoritePoppup = $(\"#delete-favorite-popup\");\r\n\r\n if ($.magnificPopup) {\r\n $.magnificPopup.open({\r\n items: [\r\n {\r\n src: favoritePoppup,\r\n },\r\n ],\r\n type: \"inline\",\r\n overflowY: \"scroll\",\r\n closeMarkup:\r\n '',\r\n autoFocusLast: false,\r\n fixedContentPos: true,\r\n });\r\n }\r\n }\r\n\r\n function CancelDelete(e) {\r\n e.preventDefault();\r\n $.magnificPopup.close();\r\n }\r\n\r\n function ConfirmDelete(e) {\r\n e?.preventDefault();\r\n $.magnificPopup.close();\r\n var customerSubscribeId = criteriaList[deleteIndex].customerSubscribeId.value;\r\n console.log(\"delete\", customerSubscribeId);\r\n\r\n const objRequest = {\r\n CustomerSubscribeId: customerSubscribeId,\r\n CriteriaName: \"\",\r\n PropertyTypes: \"\",\r\n Frequency: \"\",\r\n };\r\n\r\n kloader();\r\n\r\n postApiDataAsync({\r\n urlPath: \"/DeleteSubscribe\",\r\n objRequest: addToken(objRequest),\r\n })\r\n .then((data) => {\r\n console.log(\"Delete Success\", data);\r\n dispatch(removeObjInCriteriaList({ index: deleteIndex }));\r\n })\r\n .catch(function (error) {\r\n console.log(error);\r\n switch (error.ErrorCode) {\r\n case \"ErrorCode\":\r\n default:\r\n props.showPop(error.ErrorMessage);\r\n break;\r\n }\r\n })\r\n .then(() => {\r\n kloader();\r\n });\r\n }\r\n\r\n function CallApiDelete(index) {\r\n var customerSubscribeId = criteriaList[index].customerSubscribeId.value;\r\n console.log(\"delete\", customerSubscribeId);\r\n\r\n const objRequest = {\r\n CustomerSubscribeId: customerSubscribeId,\r\n CriteriaName: \"\",\r\n PropertyTypes: \"\",\r\n Frequency: \"\",\r\n };\r\n\r\n kloader();\r\n\r\n postApiDataAsync({\r\n urlPath: \"/DeleteSubscribe\",\r\n objRequest: addToken(objRequest),\r\n })\r\n .then((data) => {\r\n dispatch(removeObjInCriteriaList({ index: index }));\r\n swalAlertButtons.fire({\r\n title: \"สำเร็จ\",\r\n icon: \"success\",\r\n });\r\n })\r\n .catch(function (error) {\r\n console.log(error);\r\n switch (error.ErrorCode) {\r\n case \"ErrorCode\":\r\n default:\r\n props.showPop(error.ErrorMessage);\r\n break;\r\n }\r\n })\r\n .then(() => {\r\n kloader();\r\n });\r\n }\r\n\r\n function CreateNewFav(e) {\r\n e.preventDefault();\r\n dispatch(ClearSearchCriteria());\r\n OpenAddPopUp();\r\n }\r\n\r\n function SaveFav(e) {\r\n e.preventDefault();\r\n const validateField = [\"criteriaName\", \"propertyType\", \"frequency\"];\r\n const validates = validateField.map((x) => {\r\n let errMsg = searchCriteria[x].value ? \"\" : \"กรุณาระบุข้อมูล\";\r\n if (errMsg) {\r\n dispatch(searchCriteriaValidateChange({ field: x, errorMessage: errMsg }));\r\n }\r\n const result = searchCriteria[x].value && !errMsg;\r\n return result;\r\n });\r\n const valid = validates.every((c) => c);\r\n\r\n if (!valid) {\r\n return;\r\n }\r\n\r\n console.log(`SaveFav customerSubscribeId : [${searchCriteria.customerSubscribeId.value}]`);\r\n\r\n const rangePrice = getRangeValue(searchCriteria.rangePrice);\r\n const areaRange = getRangeValue(searchCriteria.areaRange);\r\n const useableAreaRange = getRangeValue(searchCriteria.useableAreaRange);\r\n\r\n const objRequest = {\r\n CustomerSubscribeId: searchCriteria.customerSubscribeId.value,\r\n CriteriaName: searchCriteria.criteriaName.value,\r\n PropertyTypes: searchCriteria.propertyType.value,\r\n Province: searchCriteria.province.value ? searchCriteria.province.value : null,\r\n Amphur: searchCriteria.district.value ? searchCriteria.district.value : null,\r\n Tambon: searchCriteria.subDistrict.value ? searchCriteria.subDistrict.value : null,\r\n MinPrice: rangePrice.min,\r\n MaxPrice: rangePrice.max,\r\n MinArea: areaRange.min,\r\n MaxArea: areaRange.max,\r\n MinUseableArea: useableAreaRange.min,\r\n MaxUseableArea: useableAreaRange.max,\r\n Frequency: searchCriteria.frequency.value,\r\n };\r\n\r\n kloader();\r\n\r\n postApiDataAsync({\r\n urlPath: \"/SaveSubscribe\",\r\n objRequest: addToken(objRequest),\r\n })\r\n .then((data) => {\r\n console.log(\"Save Success\", data);\r\n var temp = { ...objRequest };\r\n temp.CustomerSubscribeId = data.CustomerSubscribeId;\r\n dispatch(addObjToCriteriaList(mtCustomerSubscribeRequestToPayload(temp)));\r\n $.magnificPopup.close();\r\n swalAlertButtons.fire({\r\n title: \"สำเร็จ\",\r\n icon: \"success\",\r\n });\r\n })\r\n .catch(function (error) {\r\n $.magnificPopup.close();\r\n console.log(error);\r\n switch (error.ErrorCode) {\r\n case \"ErrorCode\":\r\n default:\r\n props.showPop(error.ErrorMessage);\r\n break;\r\n }\r\n })\r\n .then(() => {\r\n kloader();\r\n setShowFavPop(false);\r\n });\r\n }\r\n\r\n function SaveProfileClick(e) {\r\n console.log(\"SaveProfileClick\");\r\n\r\n const objRequest = {\r\n Fullname: customerInfo.fullName.value,\r\n Telno: customerInfo.phone.value,\r\n Email: customerInfo.email.value,\r\n IsActive: customerInfo.IsActive.value,\r\n };\r\n\r\n kloader();\r\n\r\n postApiDataAsync({\r\n urlPath: \"/UpdateCustomer\",\r\n objRequest: addToken(objRequest),\r\n })\r\n .then((data) => {\r\n console.log(\"Save Success\", data);\r\n })\r\n .catch(function (error) {\r\n console.log(error);\r\n switch (error.ErrorCode) {\r\n case \"ErrorCode\":\r\n default:\r\n props.showPop(error.ErrorMessage);\r\n break;\r\n }\r\n })\r\n .then(() => {\r\n kloader();\r\n });\r\n }\r\n\r\n function LogoutClick(e) {\r\n location.reload(true);\r\n }\r\n\r\n function addToken(obj) {\r\n return {\r\n request: {\r\n token: customerInfo.token.value,\r\n ...obj,\r\n },\r\n };\r\n }\r\n\r\n function OnUnsubscribe() {\r\n // unsubscribe in setting page click\r\n\r\n // go to profilesettingpage\r\n new bootstrap.Tab($(\"ul.profile-nav li:nth-child(2) a\")).show();\r\n return;\r\n kloader();\r\n postApiDataAsync({\r\n urlPath: \"/CustomerSetSubscribe\",\r\n objRequest: addToken({\r\n SetSubscribe: false,\r\n }),\r\n })\r\n .then((data) => {\r\n console.log(\"Save Success\", data);\r\n })\r\n .catch(function (error) {\r\n console.log(error);\r\n switch (error.ErrorCode) {\r\n case \"ErrorCode\":\r\n default:\r\n props.showPop(error.ErrorMessage);\r\n break;\r\n }\r\n })\r\n .then(() => {\r\n dispatch(formsCusInfoDataChange({ field: \"IsActive\", value: false }));\r\n kloader();\r\n });\r\n }\r\n\r\n return (\r\n <>\r\n
    \r\n
    \r\n
      \r\n
    • \r\n \r\n \r\n ข้อมูลการตั้งค่า\r\n \r\n
    • \r\n
    • \r\n \r\n \r\n ประวัติ\r\n \r\n
    • \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    ตั้งค่าแจ้งเตือนดำเนินการ
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n  สร้างใหม่\r\n \r\n \r\n
    \r\n\r\n
    0 }])}>\r\n
    \r\n
    \r\n \r\n
    \r\n

    ไม่พบข้อมูลการตั้งค่า

    \r\n \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n

    แก้ไขข้อมูลส่วนตัว

    \r\n
    \r\n \r\n \r\n
    \r\n
    อีเมล
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n SaveProfileClick(e)}\r\n className={classnames([\"btn-green\", { disable: !submitEnable }])}\r\n >\r\n บันทึก\r\n \r\n LogoutClick(e)} className=\"btn-logout\">\r\n \r\n ออกจากระบบ\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    ยืนยันลบข้อมูลการตั้งค่า
    \r\n
    \r\n
    \r\n CancelDelete(e)} className=\"btn-red btn-cancel\">\r\n ยกเลิก\r\n \r\n ConfirmDelete(e)} className=\"btn-green btn-confirm\">\r\n ยืนยัน\r\n \r\n
    \r\n
    \r\n {showFavPop && (\r\n <>\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    ลงทะเบียนเพื่อรับอีเมลทรัพย์มือสองแนะนำ
    \r\n
    \r\n กรอกรายละเอียดทรัพย์\r\n
    \r\n และทำเลที่สนใจ\r\n
    \r\n
    \r\n
    \r\n
    \r\n ตั้งชื่อรายการแจ้งเตือน*\r\n
    \r\n
    \r\n {\r\n console.log(e);\r\n OnSearchDataChange({\r\n field: \"criteriaName\",\r\n value: e.target.value,\r\n });\r\n }}\r\n />\r\n
    \r\n
    กรอกตั้งชื่อการแจ้งเตือน
    \r\n
    \r\n\r\n
    \r\n
    \r\n ประเภททรัพย์*\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    กรุณาระบุประเภททรัพย์
    \r\n
    \r\n
    \r\n
    ทำเลที่ตั้ง
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    ช่วงราคา (บาท)
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    เนื้อที่ (ตร.ว.)
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    พื้นที่ใช้สอย (ตร.ม.)
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n ความถี่ในการรับอีเมลรายการทรัพย์แนะนำ*\r\n
    \r\n
    \r\n \r\n OnSearchDataChange({ field: \"frequency\", value: \"D\" })\r\n }\r\n >\r\n
    \r\n \r\n
    \r\n \r\n
    \r\n \r\n OnSearchDataChange({ field: \"frequency\", value: \"W\" })\r\n }\r\n >\r\n
    \r\n \r\n
    \r\n \r\n
    \r\n \r\n OnSearchDataChange({ field: \"frequency\", value: \"M\" })\r\n }\r\n >\r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    กรุณากรอกความถี่ในการรับอีเมล
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n SaveFav(e)}\r\n className={classnames([\r\n \"btn-green btn-confirm mousePointer\",\r\n { disable: !submitFavEnable.value },\r\n ])}\r\n >\r\n บันทึก\r\n \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n \r\n \r\n )}\r\n {/*
    \r\n
    \r\n
    \r\n
    ลงทะเบียนเพื่อรับอีเมลทรัพย์มือสองแนะนำ
    \r\n
    กรอกรายละเอียดทรัพย์
    และทำเลที่สนใจ
    \r\n
    \r\n
    \r\n
    ตั้งชื่อรายการแจ้งเตือน*
    \r\n
    \r\n { console.log(e); OnSearchDataChange({ field: 'criteriaName', value: e.target.value }) }}\r\n />\r\n\r\n
    \r\n
    กรอกตั้งชื่อการแจ้งเตือน
    \r\n
    \r\n\r\n
    \r\n
    ประเภททรัพย์*
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    กรุณาระบุประเภททรัพย์
    \r\n
    \r\n
    \r\n
    ทำเลที่ตั้ง
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    ช่วงราคา (บาท)
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    เนื้อที่ (ตร.ว.)
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    พื้นที่ใช้สอย (ตร.ม.)
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    ความถี่ในการรับอีเมลรายการทรัพย์แนะนำ*
    \r\n
    \r\n
    OnSearchDataChange({ field: \"frequency\", value: \"D\" })}>\r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    OnSearchDataChange({ field: \"frequency\", value: \"W\" })}>\r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    OnSearchDataChange({ field: \"frequency\", value: \"M\" })}>\r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    กรุณากรอกความถี่ในการรับอีเมล
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n SaveFav(e)} className={classnames([\"btn-green btn-confirm mousePointer\", { \"disable\": !submitFavEnable.value }])}>บันทึก\r\n
    \r\n
    \r\n
    */}\r\n \r\n );\r\n};\r\n\r\nfunction getRangeValue(item) {\r\n let value = item.value;\r\n let from = \"0\";\r\n let to = \"0\";\r\n\r\n if (!value) {\r\n from = null;\r\n to = null;\r\n } else if (value.indexOf(\"สูงสุด\") !== -1) {\r\n to = value;\r\n } else if (value.indexOf(\"เริ่มต้น\") !== -1) {\r\n from = value;\r\n to = null;\r\n } else {\r\n from = value.split(\"-\")[0];\r\n to = value.split(\"-\")[1];\r\n }\r\n return { min: from !== null ? unitToValue(from) : from, max: to !== null ? unitToValue(to) : to };\r\n}\r\n","import React, { useState, useEffect, createRef, forwardRef } from \"react\";\r\nimport ReactDOM from \"react-dom\";\r\nimport { Provider } from \"react-redux\";\r\nimport configureStore from \"../store\";\r\nimport { useSelector, useDispatch } from \"react-redux\";\r\nimport axios from \"axios\";\r\nimport Config from \"config\";\r\nimport { postApiDataAsync, kloader } from \"../common/Common\";\r\nimport { HeaderNav, MobileNav, HeaderWithSearch } from \"../common/Header\";\r\nimport { ClearCusInfo, formsCusInfoDataChange, addObjToCriteriaList } from \"../stores/loginSlice\";\r\nimport { LoginInputField, RequestOtpBtn, mtCustomerSubscribeToPayload } from \"./Common\";\r\nimport ReCAPTCHA from \"react-google-recaptcha\";\r\n\r\nimport { Login } from \"./Login\";\r\nimport { Register } from \"./Register\";\r\nimport { ProfileSetting } from \"./ProfileSetting\";\r\n\r\nimport \"./Index.css\";\r\nconst store = configureStore();\r\n\r\nconst ReCAPTCHASiteKey = Config.ReCAPTCHASiteKey;\r\n\r\n// axios.defaults.headers.common['Authorization'] = store.getState().Token;\r\n//process.env.API_ROOT_URL\r\n\r\nconst pagesLink = Config.pagesLink;\r\nconst $ = window.$;\r\n\r\nconst App = () => {\r\n const [Page, setPage] = useState(0);\r\n const [login, searchFilter, customerInfo] = useSelector((state) => [\r\n state.login,\r\n state.login.searchFilter,\r\n state.login.customerInfo,\r\n ]);\r\n const dispatch = useDispatch();\r\n\r\n const recaptchaRef = React.createRef();\r\n\r\n async function submit(callFrom) {\r\n if (!customerInfo.otpRef.value || !customerInfo.otpID.value) return;\r\n kloader();\r\n\r\n var objRequest = {};\r\n\r\n var urlPath = \"/\";\r\n\r\n if (callFrom == \"Login\") {\r\n urlPath = \"/Login\";\r\n } else if (callFrom == \"Register\") {\r\n urlPath = \"/Register\";\r\n }\r\n\r\n try {\r\n recaptchaRef.current?.reset();\r\n const token = await recaptchaRef.current.executeAsync();\r\n objRequest.recapchaResult = token;\r\n } catch (error) {}\r\n\r\n postApiDataAsync({\r\n urlPath: urlPath,\r\n objRequest: {\r\n request: {\r\n token: objRequest.recapchaResult,\r\n MailTO: customerInfo.email.value,\r\n VerifyOtpID: customerInfo.otpID.value,\r\n OTPReference: customerInfo.otpRef.value,\r\n OTPVerifyNo: customerInfo.otp.value,\r\n Fullname: customerInfo.fullName.value,\r\n Telno: customerInfo.phone.value,\r\n },\r\n },\r\n })\r\n .then((data) => {\r\n console.log(\"data\", data);\r\n if (!data.TokenResponse.AccessToken) {\r\n throw \"No Token\";\r\n }\r\n\r\n dispatch(\r\n formsCusInfoDataChange({ field: \"token\", value: data.TokenResponse.AccessToken })\r\n );\r\n\r\n // init info\r\n dispatch(formsCusInfoDataChange({ field: \"fullName\", value: data.MtCustomer.FULLNAME }));\r\n dispatch(formsCusInfoDataChange({ field: \"phone\", value: data.MtCustomer.TELNO }));\r\n dispatch(formsCusInfoDataChange({ field: \"IsActive\", value: data.MtCustomer.IS_ACTIVE }));\r\n\r\n // init MtCustomerSubscribe\r\n if (data.MtCustomer.MT_CUSTOMER_SUBSCRIBEs && data.MtCustomer.MT_CUSTOMER_SUBSCRIBEs.length > 0) {\r\n data.MtCustomer.MT_CUSTOMER_SUBSCRIBEs.forEach((element) => {\r\n const payload = mtCustomerSubscribeToPayload(element);\r\n dispatch(addObjToCriteriaList(payload));\r\n });\r\n }\r\n\r\n setPage(2);\r\n })\r\n .catch(function (error) {\r\n console.log(error);\r\n switch (error.ErrorCode) {\r\n case \"ACCOUNT_EXIST\":\r\n setPage(0);\r\n showPop(\"อีเมลนี้เคยลงทะเบียนแล้ว\");\r\n break;\r\n case \"INVALID_CREDENTIAL\":\r\n setPage(1);\r\n showPop(\"ไม่พบอีเมลในระบบ กรุณาลงทะเบียน\");\r\n break;\r\n case \"INVALID_OTP\":\r\n showPop(\"รหัส OTP ไม่ถูกต้อง\");\r\n break;\r\n default:\r\n showPop(error.ErrorMessage);\r\n break;\r\n }\r\n })\r\n .then(() => {\r\n kloader();\r\n });\r\n }\r\n\r\n return (\r\n <>\r\n {/* \r\n */}\r\n\r\n \r\n\r\n {Page === 0 && }\r\n {Page === 1 && }\r\n {Page === 2 && }\r\n\r\n
    \r\n
    \r\n \r\n
    \r\n เกิดข้อผิดพลาด\r\n
    \r\n
    \r\n
    \r\n {\r\n e.preventDefault();\r\n $.magnificPopup.close();\r\n }}\r\n className=\"btn-green btn-confirm mousePointer mfp-close btnGreenWithmfp\"\r\n >\r\n ยืนยัน\r\n \r\n
    \r\n
    \r\n \r\n );\r\n};\r\n\r\nfunction showPop(message) {\r\n $(\"#errorMsg\").html(message);\r\n const popup = $(\"#errorPopUp\");\r\n if ($.magnificPopup) {\r\n $.magnificPopup.open({\r\n items: [\r\n {\r\n src: popup,\r\n },\r\n ],\r\n type: \"inline\",\r\n overflowY: \"scroll\",\r\n closeMarkup:\r\n '',\r\n autoFocusLast: false,\r\n fixedContentPos: true,\r\n });\r\n }\r\n}\r\n\r\nReactDOM.render(\r\n \r\n {/*
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n */}\r\n \r\n
    \r\n \r\n
    \r\n
    ,\r\n document.getElementById(\"react-app-login\")\r\n);\r\n\r\nif (module.hot) {\r\n module.hot.accept();\r\n}\r\n\r\nconsole.log(\"react app login start\");\r\n","import { createSlice } from '@reduxjs/toolkit'\r\n\r\nexport const propertySlice = createSlice({\r\n name: \"counter\",\r\n initialState: {\r\n searchFilter: {\r\n keyword: { value: \"\", fieldName: \"keyword\" },\r\n\r\n province: {\r\n value: \"\", fieldName: \"province\", placeholderSearch: \"ชื่อจังหวัด\", placeholder: \"จังหวัด\", clearOption: true,\r\n option: []\r\n },\r\n district: {\r\n value: \"\", fieldName: \"district\", placeholderSearch: \"ชื่อเขต/อำเภอ\", placeholder: \"เขต/อำเภอ\", clearOption: true,\r\n option: []\r\n },\r\n subDistrict: {\r\n value: \"\", fieldName: \"subDistrict\", placeholderSearch: \"ชื่อแขวง/ตำบล\", placeholder: \"แขวง/ตำบล\", clearOption: true,\r\n option: []\r\n },\r\n station: {\r\n value: \"\", fieldName: \"station\", placeholderSearch: \"ชื่อสถานี\", placeholder: \"เลือกสถานีใกล้เคียง\", clearOption: true,\r\n option: []\r\n },\r\n\r\n order: {\r\n value: \"hot\", fieldName: \"order\", minimumResultsForSearch: -1, notShowEmptyOption: true, option: [\r\n { text: \"ทรัพย์ยอดนิยม\", value: \"hot\" },\r\n { text: \"ทรัพย์มาใหม่\", value: \"new\" },\r\n { text: \"ราคา (น้อย-มาก)\", value: \"min-max\" },\r\n { text: \"ราคา (มาก-น้อย)\", value: \"max-min\" },\r\n { text: \"พื้นที่ (น้อย-มาก)\", value: \"min-max-area\" },\r\n { text: \"พื้นที่ (มาก-น้อย)\", value: \"max-min-area\" },\r\n ]\r\n },\r\n\r\n propertyType: {\r\n value: \"\", fieldName: \"propertyType\",\r\n housetype: { value: false, code: \"02\", name: \"บ้านเดี่ยว\", fieldName: \"housetype\", group: \"propertyType\" },\r\n land: { value: false, code: \"01\", name: \"ที่ดิน\", fieldName: \"land\", group: \"propertyType\" },\r\n townhouse: { value: false, code: \"03\", name: \"ทาวน์เฮ้าส์\", fieldName: \"townhouse\", group: \"propertyType\" },\r\n condo: { value: false, code: \"05\", name: \"คอนโดมิเนียม\", fieldName: \"condo\", group: \"propertyType\" },\r\n commercialbuilding: { value: false, code: \"04\", name: \"อาคารพาณิชย์\", fieldName: \"commercialbuilding\", group: \"propertyType\" },\r\n warehouse: { value: false, code: \"12\", name: \"โกดัง\", fieldName: \"warehouse\", group: \"propertyType\" },\r\n factory: { value: false, code: \"09\", name: \"โรงงาน\", fieldName: \"factory\", group: \"propertyType\" },\r\n apartment: { value: false, code: \"15\", name: \"อพาร์ทเม้นท์\", fieldName: \"apartment\", group: \"propertyType\" },\r\n office: { value: false, code: \"10\", name: \"อาคารสำนักงาน\", fieldName: \"office\", group: \"propertyType\" },\r\n resort: { value: false, code: \"20\", name: \"รีสอร์ท\", fieldName: \"resort\", group: \"propertyType\" },\r\n houseother: { value: false, code: \"19\", name: \"อื่น ๆ\", fieldName: \"houseother\", group: \"propertyType\" },\r\n },\r\n rangePrice: {\r\n value: \"\", fieldName: \"rangePrice\", min: 0, max: 11, from: 0, from_value: 0, to: 0, to_value: 0, step: 1, count: 0, placeholder: \"ราคาเริ่มต้น - สิ้นสุด\",\r\n values: [\r\n \"ไม่ระบุ\", \"1 ล้านบาท\", \"3 ล้านบาท\", \"5 ล้านบาท\", \"10 ล้านบาท\", \"20 ล้านบาท\", \"50 ล้านบาท\"\r\n ]\r\n },\r\n areaRange: {\r\n value: \"\", fieldName: \"areaRange\", min: 0, max: 8, from: 0, to: 0, step: 50, count: 0, placeholder: \"เนื้อที่เริ่มต้น - สิ้นสุด\",\r\n values: [\r\n \"ไม่ระบุ\", \"50 ตร.ว.\", \"100 ตร.ว.\", \"200 ตร.ว.\", \"300 ตร.ว.\", \"1 ไร่\", \"5 ไร่\", \"10 ไร่\", \"50 ไร่\"\r\n ]\r\n },\r\n useableAreaRange: {\r\n value: \"\", fieldName: \"useableAreaRange\", min: 0, max: 150, from: 0, to: 0, step: 50, count: 0, placeholder: \"พื้นที่เริ่มต้น - สิ้นสุด\",\r\n values: [\r\n \"ไม่ระบุ\", \"30 ตร.ม.\", \"50 ตร.ม.\", \"100 ตร.ม.\", \"200 ตร.ม.\", \"500 ตร.ม.\",\r\n ]\r\n },\r\n rangeField: {value: \"\", fieldName: \"rangePrice\"},\r\n areaField: {value: \"\", fieldName: \"areaRange\"},\r\n useableAreaField: {value: \"\", fieldName: \"useableAreaRange\"},\r\n bedroom: { value: 0, min: 0, max: 99, fieldName: \"bedroom\" },\r\n bathroom: { value: 0, min: 0, max: 99, fieldName: \"bathroom\" },\r\n assetTypes: {\r\n value: \"\", fieldName: \"assetTypes\",\r\n // PromotionProperties: { value: false, code: \"PromotionProperties\", name: \"บ้านเดี่ยว\", fieldName: \"PromotionProperties\" }, // fieldName is icon classname\r\n propertybank: { value: false, code: \"kbank\", name: \"ทรัพย์
    ธนาคาร\", fieldName: \"propertybank\", group: \"assetTypes\" },\r\n propertywaitsale: { value: false, code: \"npl\", name: \"ทรัพย์
    ฝากขาย\", fieldName: \"propertywaitsale\", group: \"assetTypes\" },\r\n partnership: { value: false, code: \"partner\", name: \"ทรัพย์
    ผู้ขาย\", fieldName: \"partnership\", group: \"assetTypes\", spanText: \"(บุคคลภายนอก)\" },\r\n },\r\n expand: { value: \"\", fieldName: \"expand\" },\r\n },\r\n searchResult: {\r\n keyword: { value: \"\", fieldName: \"keyword\" },\r\n resultLength: { value: 0, fieldName: \"resultLength\" },\r\n Allow_Cookies: { value: true, fieldName: \"Allow_Cookies\" },\r\n showTab: { value: \"newProperty\", fieldName: \"showTab\" },\r\n newProperty: { value: \"\", fieldName: \"newProperty\", list: [], pageIndex: 1, hasMore: true, isLoading: false, TotalRows: 0 },\r\n promoProperty: { value: \"\", fieldName: \"promoProperty\", list: [], pageIndex: 1, hasMore: true, isLoading: false, TotalRows: 0 },\r\n popularProperty: { value: \"\", fieldName: \"popularProperty\", list: [], pageIndex: 1, hasMore: true, isLoading: false, TotalRows: 0 },\r\n favoriteProperty: { value: \"\", fieldName: \"favoriteProperty\", list: [], pageIndex: 1, hasMore: true, isLoading: false, favoritePropertyList: [], TotalRows: 0 },\r\n recentlyviewedProperty: { value: \"\", fieldName: \"recentlyviewedProperty\", list: [], pageIndex: 1, hasMore: true, isLoading: false, TotalRows: 0 },\r\n suggestProperty: { value: \"\", fieldName: \"suggestProperty\", list: [], pageIndex: 1, hasMore: true, isLoading: false },\r\n },\r\n propertyDetail: {\r\n AssetInfoTH: \"\",\r\n AddressNoTH: \"\",\r\n BuildingTH: \"\",\r\n FloorTH: \"\",\r\n VillageTH: \"\",\r\n SoiTH: \"\",\r\n RoadTH: \"\",\r\n TambonName: \"\",\r\n AmphurName: \"\",\r\n ProvinceName: \"\",\r\n location: \"\",\r\n PropertyTypeName: \"\",\r\n Bedroom: \"\",\r\n Bathroom: \"\",\r\n CarParking: \"\",\r\n SellPrice: \"\",\r\n PromotionPrice: \"\",\r\n AdjustPrice: \"\",\r\n PromotionName: \"\",\r\n PromotionRemark: \"\",\r\n PropertyIDFormat: \"\",\r\n PropertyID: \"\",\r\n Area: \"\",\r\n AreaValue: \"\",\r\n UseableArea: \"\",\r\n ShowAreaValue: \"\",\r\n ShowUseableArea: \"\",\r\n PropertyMediaes: [],\r\n GAScore: \"\",\r\n Like: \"\",\r\n IsNew: \"\",\r\n CategoryGroup:\"\",\r\n CategoryDetail: \"\",\r\n AIImg: [],\r\n \r\n // AssetInfoTH: { value: \"\", fieldName: \"AssetInfoTH\" },\r\n // AddressNoTH: { value: \"\", fieldName: \"AddressNoTH\" },\r\n // BuildingTH: { value: \"\", fieldName: \"BuildingTH\" },\r\n // FloorTH: { value: \"\", fieldName: \"FloorTH\" },\r\n // VillageTH: { value: \"\", fieldName: \"VillageTH\" },\r\n // SoiTH: { value: \"\", fieldName: \"SoiTH\" },\r\n // RoadTH: { value: \"\", fieldName: \"RoadTH\" },\r\n // TambonName: { value: \"\", fieldName: \"TambonName\" },\r\n // AmphurName: { value: \"\", fieldName: \"AmphurName\" },\r\n // ProvinceName: { value: \"\", fieldName: \"ProvinceName\" },\r\n // location: { value: \"\", fieldName: \"location\" },\r\n // PropertyTypeName: { value: \"\", fieldName: \"PropertyTypeName\" },\r\n // Bedroom: { value: \"\", fieldName: \"Bedroom\" },\r\n // Bathroom: { value: \"\", fieldName: \"Bathroom\" },\r\n // SellPrice: { value: \"\", fieldName: \"SellPrice\" },\r\n // PromotionPrice: { value: \"\", fieldName: \"PromotionPrice\" },\r\n // AdjustPrice: { value: \"\", fieldName: \"AdjustPrice\" },\r\n // PromotionName: { value: \"\", fieldName: \"PromotionName\" },\r\n // PromotionRemark: { value: \"\", fieldName: \"PromotionRemark\" },\r\n // PropertyIDFormat: { value: \"\", fieldName: \"PropertyIDFormat\" },\r\n // PropertyID: { value: \"\", fieldName: \"PropertyID\" },\r\n // Area: { value: \"\", fieldName: \"Area\" },\r\n // AreaValue: { value: \"\", fieldName: \"AreaValue\" },\r\n // UseableArea: { value: \"\", fieldName: \"UseableArea\" },\r\n // PropertyMediaes: { value: \"\", fieldName: \"PropertyMediaes\" },\r\n // GAScore: { value: \"\", fieldName: \"GAScore\" },\r\n // Like: { value: false, fieldName: \"Like\" },\r\n },\r\n dropleadDetail: {\r\n usertype: { value: 'normal' },\r\n juJuristicId: { value: '', required: true, errorMessage: '', fieldName: 'juJuristicId', label: 'เลขที่นิติบุคคล', placeholder: \"กรุณากรอกเลขที่นิติบุคคล*\", maxLength: 250, inputmode: \"numeric\" },\r\n juFirstName: { value: '', required: true, errorMessage: '', fieldName: 'juFirstName', label: 'ชื่อ', placeholder: \"กรุณากรอกชื่อ*\", maxLength: 250 },\r\n juLastName: { value: '', required: true, errorMessage: '', fieldName: 'juLastName', label: 'นามสกุล', placeholder: \"กรุณากรอกนามสกุล*\", maxLength: 250 },\r\n\r\n phone: { value: '', required: true, errorMessage: '', fieldName: 'phone', label: 'เบอร์มือถือ', placeholder: \"กรุณากรอกเบอร์มือถือ*\", maxLength: 10, inputmode: \"numeric\" },\r\n confirmphone: { value: '', required: true, errorMessage: '', fieldName: 'confirmphone', label: 'ยืนยันเบอร์มือถือ', placeholder: \"กรุณายืนยันเบอร์มือถือ*\", maxLength: 10, inputmode: \"numeric\" },\r\n\r\n naCitizenId: { value: '', required: true, errorMessage: '', fieldName: 'naCitizenId', label: 'เลขบัตรประชาชน', placeholder: \"กรุณากรอกเลขบัตรประชาชน*\", maxLength: 13, inputmode: \"numeric\" },\r\n\r\n email: { value: '', required: true, errorMessage: '', fieldName: 'email', label: 'อีเมล', placeholder: \"กรุณากรอกอีเมล*\", maxLength: 250 },\r\n consentCheck: { value: true, required: true, errorMessage: '', fieldName: 'consentCheck', label: 'สนใจสินเชื่อทรัพย์มือสอง', placeholder: \"0\" },\r\n\r\n juCompanyName: { value: '', required: true, errorMessage: '', fieldName: 'juCompanyName', label: 'ชื่อบริษัท', placeholder: \"ชื่อบริษัท*\", maxLength: 500 },\r\n naFirstName: { value: '', required: true, errorMessage: '', fieldName: 'naFirstName', label: 'ชื่อ', placeholder: \"ชื่อ*\", maxLength: 250 },\r\n naLastName: { value: '', required: true, errorMessage: '', fieldName: 'naLastName', label: 'นามสกุล', placeholder: \"นามสกุล*\", maxLength: 250 },\r\n naCareer: {\r\n value: '', required: true, errorMessage: '', fieldName: 'naCareer', label: 'อาชีพ', placeholder: \"อาชีพ*\",\r\n option: [\r\n ]\r\n },\r\n naSalary: { value: '', required: true, errorMessage: '', fieldName: 'naSalary', label: 'รายได้ต่อเดือน', placeholder: \"รายได้ต่อเดือน*\", maxLength: 250, inputmode: \"numeric\" },\r\n\r\n availableTime: {\r\n value: '', required: true, errorMessage: '', fieldName: 'availableTime', label: 'ช่วงเวลาที่สะดวกให้ติดต่อกลับ', placeholder: \"ช่วงเวลาที่สะดวกให้ติดต่อกลับ*\",\r\n option: [\r\n ]\r\n },\r\n },\r\n calcDetail: {\r\n propertyTypeID: { value: null },\r\n decoration: { value: null },\r\n definedPropertyPrice: { value: 0 },\r\n appraisalPrice: { value: 0 },\r\n calcTypes: {\r\n Home: 'Home Loan',\r\n Land: 'Land',\r\n SME: 'SME'\r\n },\r\n appliedCalcTypes: {\r\n value: {\r\n forStay: null,\r\n forBusiness: null,\r\n },\r\n },\r\n smePropertyType: { value: null },\r\n calculatorHomeLoanSetting: { value: 0, fieldName: \"calculatorHomeLoanSetting\" },\r\n calculatorLandSetting: { value: 0, fieldName: \"calculatorLandSetting\" },\r\n calculatorSMESetting: { value: 0, fieldName: \"calculatorSMESetting\" },\r\n\r\n stayTotalInstallmentPerMonth: { value: 0 },\r\n stayTotalLimitAmount: { value: 0 },\r\n stayInstallmentYear: { value: 0, maxLength: 2, maxDigit: 2, maxValue: 0, errorMessage: '', note: '' },\r\n stayPropertyLimitAmount: { value: 0, maxLength: 11, maxDigit: 9, maxValue: 0, errorMessage: '' },\r\n stayPropertyInstallmentPerMonth: { value: 0 },\r\n stayDecorationLimitAmount: { value: 0, maxLength: 11, maxDigit: 9, maxValue: 0, errorMessage: '' },\r\n stayDecorationInstallmentPerMonth: { value: 0 },\r\n stayIncomePerMonth: { value: 0, maxLength: 11, maxDigit: 9, minValue: 7500, errorMessage: '' },\r\n stayDebtBurdenPerMonth: { value: 0, maxLength: 11, maxDigit: 9, errorMessage: '' },\r\n stayCanTakeDecoration: { value: true },\r\n\r\n businessTotalInstallmentPerMonth: { value: 0 },\r\n businessTotalLimitAmount: { value: 0 },\r\n businessInstallmentYear: { value: 0, maxLength: 2, maxValue: 0, errorMessage: '', note: '' },\r\n businessPropertyLimitAmount: { value: 0, maxLength: 11, maxDigit: 9, maxValue: 0, errorMessage: '' },\r\n businessPropertyInstallmentPerMonth: { value: 0 },\r\n businessDecorationLimitAmount: { value: 0, maxLength: 11, maxDigit: 9, maxValue: 0, errorMessage: '' },\r\n businessDecorationInstallmentPerMonth: { value: 0 },\r\n businessIncomePerMonth: { value: 0, maxLength: 11, maxDigit: 9, errorMessage: '' },\r\n businessDebtBurdenPerMonth: { value: 0, maxLength: 11, maxDigit: 9, errorMessage: '' },\r\n\r\n stayValidateFields: { value: [] },\r\n businessValidateFields: { value: [] },\r\n\r\n // calcType: { value: '' },\r\n // price: { value: '', required: true, errorMessage: '', fieldName: 'price', label: 'ราคาทรัพย์/ราคาเสนอซื้อ (บาท)', placeholder: \"0\" },\r\n // income: { value: '', required: true, errorMessage: '', fieldName: 'income', label: 'รายได้ต่อเดือน (บาท) ตั้งแต่ 7,500 บาท ขึ้นไป', placeholder: \"0\" },\r\n // dept: { value: '', required: false, errorMessage: '', fieldName: 'dept', label: 'ภาระหนี้ต่อเดือน (บาท)', placeholder: \"0\" },\r\n // age: { value: '', required: true, errorMessage: '', fieldName: 'age', label: 'อายุผู้กู้ (ปี)', placeholder: \"0\", maxLength: 2 },\r\n // profit: { value: '', required: true, errorMessage: '', fieldName: 'profit', label: 'กำไรสุทธิต่อเดือน (บาท)', placeholder: \"0\" },\r\n // career: {\r\n // value: '', required: true, errorMessage: '', fieldName: 'career', label: 'อาชีพ', placeholder: \"เลือกอาชีพ\",\r\n // option: [\r\n // { text: 'พนักงานประจำ', value: 'employee' },\r\n // { text: 'เจ้าของกิจการ', value: 'business_owner' }\r\n // ]\r\n\r\n // },\r\n // home: {\r\n // value: '', required: true, errorMessage: '', fieldName: 'home', label: 'เลือกการกู้บ้านหลังที่', placeholder: \"เลือกการกู้บ้านหลังที่\",\r\n // option: [\r\n // { text: 'บ้านหลังที่ 1', value: 'home1' },\r\n // { text: 'บ้านหลังที่ 2 (ผ่อนหลังที่ 1 มาแล้วไม่ถึง 2 ปี)', value: 'home2_with_home1_lessthan_2years' },\r\n // { text: 'บ้านหลังที่ 2 (ผ่อนหลังที่ 1 มาแล้วตั้งแต่ 2 ปี ขึ้นไป)', value: 'home2_with_home1_2years_or_more' },\r\n // { text: 'บ้านหลังที่ 3 เป็นต้นไป', value: 'home3_or_else' },\r\n // ]\r\n\r\n // },\r\n // land: {\r\n // value: '', required: true, errorMessage: '', fieldName: 'land', label: 'เป็นการกู้ซื้อทรัพย์ชิ้นที่', placeholder: \"เลือกการกู้ซื้อทรัพย์ชิ้นที่\",\r\n // option: [\r\n // { text: 'ทรัพย์ชิ้นที่ 1 (ไม่มีภาระสินเชื่อบ้านขณะนี้)', value: 'home1' },\r\n // { text: 'ทรัพย์ชิ้นที่ 2 (ผ่อนหลังที่ 1 มาแล้วไม่ถึง 2 ปี)', value: 'home2_with_home1_lessthan_2years' },\r\n // { text: 'ทรัพย์ชิ้นที่ 2 (ผ่อนหลังที่ 1 มาแล้วตั้งแต่ 2 ปีขึ้นไป)', value: 'home2_with_home1_2years_or_more' },\r\n // { text: 'ทรัพย์ชิ้นที่ 3 เป็นต้นไป', value: 'home3_or_else' },\r\n // ]\r\n\r\n // },\r\n // personType: {\r\n // value: '', required: true, errorMessage: '', fieldName: 'personType', label: 'กู้ในนาม', placeholder: \"เลือกกู้ในนาม\",\r\n // option: [\r\n // { text: 'บุคคลธรรมดา', value: 'natural' },\r\n // { text: 'นิติบุคคล', value: 'juristic' },\r\n // ]\r\n\r\n // },\r\n // businessAge: {\r\n // value: '', required: true, errorMessage: '', fieldName: 'businessAge', label: 'ระยะเวลาดำเนินธุรกิจ(ปี)', placeholder: \"เลือกระยะเวลาดำเนินธุรกิจ\",\r\n // option: [\r\n // { text: 'น้อยกว่า 6 เดือน', value: 'less_than_6m' },\r\n // { text: '6 เดือน แต่ไม่ถึง 1 ปี', value: '6m_to_1y' },\r\n // { text: '1-3 ปี', value: '1y_to_3y' },\r\n // { text: 'มากกว่า 3 ปี', value: 'greater_than_3y' },\r\n // ]\r\n\r\n // },\r\n // loanAmount: { value: \"\", fieldName: \"loanAmount\", min: 0, max: 11, from: 0, step: 1, count: 0 },\r\n // loanPeriod: { value: \"\", fieldName: \"loanPeriod\", min: 0, max: 11, from: 0, step: 1, count: 0 },\r\n // maxLimitResult: { value: 0, fieldName: \"maxLimitResult\" },\r\n // installmentResult: { value: 0, fieldName: \"installmentResult\" },\r\n },\r\n loading: null,\r\n },\r\n reducers: {\r\n searchDataChange: (state, action) => {\r\n const field = action.payload.field;\r\n const value = action.payload.value;\r\n\r\n state.searchFilter[field].value = value;\r\n },\r\n searchListChange: (state, action) => {\r\n const field = action.payload.field;\r\n const value = action.payload.value;\r\n\r\n state.searchFilter[field].value = \"\";\r\n state.searchFilter[field].option = value;\r\n },\r\n searchIonRangeChange: (state, action) => {\r\n const field = action.payload.fieldName;\r\n const value = action.payload.value;\r\n const from = action.payload.from;\r\n const to = action.payload.to;\r\n\r\n state.searchFilter[field].value = value;\r\n state.searchFilter[field].from = state.searchFilter[field].values.indexOf(from);\r\n if (to === \"MAX\") {\r\n state.searchFilter[field].to = state.searchFilter[field].max;\r\n }\r\n else {\r\n state.searchFilter[field].to = state.searchFilter[field].values.indexOf(to);\r\n }\r\n },\r\n searchIonRangeListChange: (state, action) => {\r\n const field = action.payload.fieldName;\r\n const value = action.payload.value;\r\n\r\n state.searchFilter[field].values = value;\r\n },\r\n updateIonRange: (state, action) => {\r\n const field = action.payload.fieldName;\r\n\r\n state.searchFilter[field].count += 1;\r\n },\r\n CheckBoxChange: (state, action) => {\r\n const field = action.payload.fieldName;\r\n const value = action.payload.value;\r\n const group = action.payload.group;\r\n\r\n const groupLength = Object.keys(state.searchFilter[group]).length - 2\r\n\r\n state.searchFilter[group][field].value = value;\r\n\r\n const temp = Object.entries(state.searchFilter[group]).map((item) => {\r\n if (item[0] !== \"fieldName\" && item[0] !== \"value\" && item[1].value) {\r\n return item[1].code\r\n }\r\n }).filter(x => x);\r\n\r\n state.searchFilter[group].value = temp.length === groupLength ? \"\" : temp.join(',');\r\n\r\n },\r\n ClearSearch: (state, action) => {\r\n console.log(\"clear dis\")\r\n Object.keys(state.searchFilter).forEach(function (key) {\r\n if (key === \"bathroom\" || key === \"bedroom\") {\r\n state.searchFilter[key].value = 0\r\n } else if (key === \"order\") {\r\n // state.searchFilter[key].value = \"new\"\r\n } else {\r\n state.searchFilter[key].value = \"\"\r\n }\r\n });\r\n\r\n state.searchFilter.propertyType.housetype.value = false\r\n state.searchFilter.propertyType.land.value = false\r\n state.searchFilter.propertyType.townhouse.value = false\r\n state.searchFilter.propertyType.condo.value = false\r\n state.searchFilter.propertyType.commercialbuilding.value = false\r\n state.searchFilter.propertyType.warehouse.value = false\r\n state.searchFilter.propertyType.factory.value = false\r\n state.searchFilter.propertyType.apartment.value = false\r\n state.searchFilter.propertyType.office.value = false\r\n state.searchFilter.propertyType.resort.value = false\r\n state.searchFilter.propertyType.houseother.value = false\r\n\r\n state.searchFilter.assetTypes.propertybank.value = false\r\n state.searchFilter.assetTypes.propertywaitsale.value = false\r\n state.searchFilter.assetTypes.partnership.value = false\r\n\r\n state.searchFilter.rangePrice.from = 0\r\n state.searchFilter.rangePrice.to = 0\r\n state.searchFilter.rangePrice.count += 1\r\n state.searchFilter.areaRange.from = 0\r\n state.searchFilter.areaRange.to = 0\r\n state.searchFilter.areaRange.count += 1\r\n state.searchFilter.useableAreaRange.from = 0\r\n state.searchFilter.useableAreaRange.to = 0\r\n state.searchFilter.useableAreaRange.count += 1\r\n\r\n },\r\n updateSearchResultList: (state, action) => {\r\n const field = action.payload.fieldName;\r\n const list = action.payload.list;\r\n const hasMore = action.payload.hasMore;\r\n const TotalRows = action.payload.TotalRows;\r\n const suggest = action.payload.suggest;\r\n\r\n state.searchResult[field].list = list\r\n state.searchResult[field].hasMore = hasMore\r\n state.searchResult[field].TotalRows = TotalRows\r\n state.searchResult[field].suggest = suggest\r\n },\r\n likePropertyList: (state, action) => {\r\n let PropertyObjTemp = action.payload.PropertyObj;\r\n const PropertyID = PropertyObjTemp.PropertyID\r\n const listName = action.payload.listName;\r\n\r\n const like = PropertyObjTemp.like ? false : true\r\n\r\n let likeList = state.searchResult.favoriteProperty.value.split(',')\r\n\r\n if (like && !likeList.includes(PropertyID)) {\r\n state.searchResult.favoriteProperty.value = [...likeList, PropertyID].filter(x => x).join(',')\r\n\r\n } else if (!like && likeList.includes(PropertyID)) {\r\n state.searchResult.favoriteProperty.value = likeList.filter(x => x !== PropertyID).join(',')\r\n }\r\n\r\n var target = state.searchResult[listName].list.find(x => x.PropertyID === PropertyID)\r\n if (target) target.like = like\r\n\r\n\r\n // const PropertyObj = { ...PropertyObjTemp, like: like }\r\n\r\n // var target = state.searchResult.newProperty.list.find(x => x.PropertyID === PropertyID)\r\n // if (target) target.like = like\r\n // target = state.searchResult.promoProperty.list.find(x => x.PropertyID === PropertyID)\r\n // if (target) target.like = like\r\n // target = state.searchResult.popularProperty.list.find(x => x.PropertyID === PropertyID)\r\n // if (target) target.like = like\r\n // target = state.searchResult.recentlyviewedProperty.list.find(x => x.PropertyID === PropertyID)\r\n // if (target) target.like = like\r\n\r\n // // var target = state.searchResult[listName].list.find(x => x.PropertyID === PropertyID)\r\n // // if(target)target.like = like\r\n\r\n\r\n // if (like && !state.searchResult.favoriteProperty.list.find(x => x.PropertyID === PropertyID)) {\r\n // state.searchResult.favoriteProperty.list.push(PropertyObj)\r\n // } else if (!like) {\r\n // state.searchResult.favoriteProperty.list = state.searchResult.favoriteProperty.list.filter(function (obj) {\r\n // return obj.PropertyID !== PropertyID;\r\n // });\r\n // }\r\n\r\n // state.searchResult.favoriteProperty.value = state.searchResult.favoriteProperty.list.map(x => x.PropertyID).join(',')\r\n },\r\n updateLikeInList: (state, action) => {\r\n const listName = action.payload.listName;\r\n const PropertyLikeList = action.payload.PropertyLikeList\r\n const targetList = state.searchResult[listName].list\r\n\r\n if (PropertyLikeList && targetList.length > 0) {\r\n const list = PropertyLikeList.split(',')\r\n Array.from(targetList, x => {\r\n if (list.includes(x.PropertyID)) {\r\n x.like = true\r\n } else {\r\n x.like = false\r\n }\r\n })\r\n }\r\n\r\n },\r\n updatesearchFilterCheckBox: (state, action) => {\r\n const field = action.payload.field;\r\n const value = action.payload.value;\r\n\r\n state.searchFilter[field].value = value\r\n\r\n value.split(',').forEach((valueCode) => {\r\n let toUpdate = Object.keys(state.searchFilter[field]).find(x => state.searchFilter[field][x].code === valueCode)\r\n if (state.searchFilter[field][toUpdate]) {\r\n state.searchFilter[field][toUpdate].value = true\r\n }\r\n })\r\n\r\n Object.keys(state.searchFilter[field]).forEach((key) => {\r\n if (key !== \"fieldName\" && key !== \"value\" && state.searchFilter[field][key].code === value) {\r\n state.searchFilter[field][key].value = true\r\n }\r\n });\r\n },\r\n searchResultDataChange: (state, action) => {\r\n const field = action.payload.field;\r\n const value = action.payload.value;\r\n\r\n state.searchResult[field].value = value;\r\n },\r\n OnPropertyListLoading: (state, action) => {\r\n const field = action.payload.field;\r\n const value = action.payload.value;\r\n\r\n state.searchResult[field].isLoading = value;\r\n },\r\n searchResultPageIndexChange: (state, action) => {\r\n const field = action.payload.field;\r\n const value = action.payload.value;\r\n\r\n state.searchResult[field].pageIndex = value;\r\n },\r\n updatePropertyDetail: (state, action) => {\r\n const value = action.payload.value;\r\n state.propertyDetail = value\r\n\r\n // Object.keys(value).forEach((key)=>{\r\n // if(state.propertyDetail[key]){\r\n // state.propertyDetail[key].value = value[key];\r\n // }\r\n // })\r\n },\r\n formsCalcDataChange: (state, action) => {\r\n const field = action.payload.field;\r\n const value = action.payload.value;\r\n const maxValue = action.payload.maxValue;\r\n const minValue = action.payload.minValue;\r\n const errorMessage = action.payload.errorMessage;\r\n const visible = action.payload.visible;\r\n const note = action.payload.note;\r\n\r\n // if (state.calcDetail[field].maxLength) {\r\n // state.calcDetail[field].value = value.slice(0, state.calcDetail[field].maxLength);\r\n // } else {\r\n // state.calcDetail[field].value = value;\r\n // }\r\n\r\n if (value !== undefined) {\r\n state.calcDetail[field].value = value;\r\n }\r\n\r\n if (maxValue !== undefined) {\r\n state.calcDetail[field].maxValue = maxValue;\r\n }\r\n\r\n if (minValue !== undefined) {\r\n state.calcDetail[field].minValue = minValue;\r\n }\r\n\r\n if (errorMessage !== undefined) {\r\n state.calcDetail[field].errorMessage = errorMessage;\r\n }\r\n\r\n if (visible !== undefined) {\r\n state.calcDetail[field].visible = visible;\r\n }\r\n\r\n if (note !== undefined) {\r\n state.calcDetail[field].note = note;\r\n }\r\n },\r\n CalcValidateChange: (state, action) => {\r\n const field = action.payload.field;\r\n const errorMessage = action.payload.errorMessage;\r\n state.calcDetail[field].errorMessage = errorMessage;\r\n },\r\n formsCalcRangeInputChange: (state, action) => {\r\n const field = action.payload.field;\r\n const value = action.payload.value;\r\n\r\n if (state.calcDetail[field].maxLength) {\r\n state.calcDetail[field].value = value.slice(0, state.calcDetail[field].maxLength);\r\n } else {\r\n state.calcDetail[field].value = value;\r\n }\r\n state.calcDetail[field].count += 1;\r\n },\r\n formsCalcPropsChange: (state, action) => {\r\n const field = action.payload.field;\r\n const value = action.payload.value;\r\n\r\n state.calcDetail[field] = value;\r\n console.log(field, value)\r\n },\r\n formsDropleadDataChange: (state, action) => {\r\n const field = action.payload.field;\r\n const value = action.payload.value;\r\n const errorMessage = action.payload.errorMessage;\r\n if (state.dropleadDetail[field].maxLength) {\r\n state.dropleadDetail[field].value = value.slice(0, state.dropleadDetail[field].maxLength);\r\n } else {\r\n state.dropleadDetail[field].value = value;\r\n }\r\n\r\n state.dropleadDetail[field].errorMessage = errorMessage;\r\n },\r\n DropleadValidateChange: (state, action) => {\r\n const field = action.payload.field;\r\n const errorMessage = action.payload.errorMessage;\r\n state.dropleadDetail[field].errorMessage = errorMessage;\r\n },\r\n DropleadListChange: (state, action) => {\r\n const field = action.payload.field;\r\n const value = action.payload.value;\r\n\r\n state.dropleadDetail[field].option = value;\r\n },\r\n },\r\n})\r\n\r\n// Action creators are generated for each case reducer function\r\nexport const { searchDataChange, searchListChange, searchIonRangeChange, searchIonRangeListChange, updateIonRange, CheckBoxChange, ClearSearch,\r\n updateSearchResultList, likePropertyList, updatesearchFilterCheckBox, searchResultDataChange, OnPropertyListLoading,\r\n updateLikeInList, searchResultPageIndexChange, updatePropertyDetail,\r\n formsCalcDataChange, CalcValidateChange, formsCalcRangeInputChange, formsCalcPropsChange,\r\n formsDropleadDataChange, DropleadValidateChange, DropleadListChange } = propertySlice.actions\r\n\r\nexport default propertySlice.reducer","import React, { useState } from \"react\";\r\nimport { gotoSearchPage, areEqualObjValue } from \"./Common\";\r\nimport {\r\n SelectList,\r\n IonRange,\r\n RangeInput,\r\n CounterInput,\r\n CheckBoxIonInput,\r\n CheckBoxCustomInput,\r\n} from \"./Component\";\r\n\r\nimport Config from \"config\";\r\n\r\nconst priceFilter = Config.priceFilter;\r\nconst provinceFilter = Config.provinceFilter;\r\nconst propertyTypeFilter = Config.propertyTypeFilter;\r\n\r\n// axios.defaults.headers.common['Authorization'] = store.getState().Token;\r\n//process.env.API_ROOT_URL\r\n\r\nexport const DeskTopSearch = React.memo((props) => {\r\n const searchFilter = props;\r\n const searchDataChange = props.searchDataChange;\r\n const IonRangeDataChange = props.IonRangeDataChange;\r\n const RangeInputDataChange = props.RangeInputDataChange;\r\n const OnRadioCheck = props.OnRadioCheck;\r\n const GoToSearch = props.GoToSearch;\r\n const ClearSearch = props.ClearSearch;\r\n const OnInputChange = props.OnInputChange;\r\n const hideDesktop = props.hideDesktop;\r\n\r\n const renderAssetTypesCheckBox = (item, index) => {\r\n if (item[0] !== \"fieldName\" && item[0] !== \"value\") {\r\n const fieldName = item[0];\r\n const data = item[1];\r\n // console.log('item', fieldName, data,item[1]);\r\n // console.log(\"asset-type-m\" + index)\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n }\r\n };\r\n\r\n // console.log(\"Desktop Search render\")\r\n\r\n return (\r\n
    \r\n
    \r\n

    ทรัพย์มือสองทำเลดี ทั่วไทย

    \r\n
    \r\n
    \r\n OnInputChange(\"keyword\", e.target.value)}\r\n onKeyPress={(e) => e.key === \"Enter\" && GoToSearch()}\r\n />\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n

    ค้นหาอย่างละเอียด

    \r\n
    \r\n
    \r\n
    \r\n {/*
    \r\n \r\n
    \r\n
    \r\n \r\n
    */}\r\n {Object.entries(searchFilter.assetTypes).map((item, index) =>\r\n renderAssetTypesCheckBox(item, index)\r\n )}\r\n
    \r\n

    ประเภททรัพย์

    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n

    ทำเลที่ตั้ง

    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n

    ช่วงราคา (บาท)

    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n

    เนื้อที่ (ตร.ว.)

    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n

    พื้นที่ใช้สอย (ตร.ม.)

    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    ห้องนอน

    \r\n \r\n
    \r\n
    \r\n

    ห้องน้ำ

    \r\n \r\n
    \r\n
    \r\n
    \r\n

    สถานีใกล้เคียง BTS/MRT

    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n );\r\n}, areEqual);\r\n\r\nfunction areEqual(prevProps, nextProps) {\r\n return areEqualObjValue(prevProps, nextProps);\r\n}\r\n\r\nexport const MobileSearch = React.memo((props) => {\r\n const searchFilter = props;\r\n const searchDataChange = props.searchDataChange;\r\n const IonRangeDataChange = props.IonRangeDataChange;\r\n const RangeInputDataChange = props.RangeInputDataChange;\r\n const OnRadioCheck = props.OnRadioCheck;\r\n const GoToSearch = props.GoToSearch;\r\n const ClearSearch = props.ClearSearch;\r\n const OnInputChange = props.OnInputChange;\r\n\r\n const renderCheckBox = (item, index) => {\r\n if (item[0] !== \"fieldName\" && item[0] !== \"value\") {\r\n const fieldName = item[0];\r\n const data = item[1];\r\n // console.log('item', fieldName, data,item[1]);\r\n // console.log(\"property-type-m\" + index)\r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n );\r\n }\r\n };\r\n\r\n const renderAssetTypesCheckBox = (item, index) => {\r\n if (item[0] !== \"fieldName\" && item[0] !== \"value\") {\r\n const fieldName = item[0];\r\n const data = item[1];\r\n // console.log('item', fieldName, data,item[1]);\r\n // console.log(\"asset-type-m\" + index)\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n }\r\n };\r\n\r\n // console.log(\"mobileSearch render\")\r\n\r\n return (\r\n
    \r\n
    \r\n

    \r\n ค้นหาอย่างละเอียด\r\n

    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n OnInputChange(\"keyword\", e.target.value)}\r\n onKeyPress={(e) => e.key === \"Enter\" && GoToSearch()}\r\n />\r\n
    \r\n
    \r\n {Object.entries(searchFilter.assetTypes).map((item, index) =>\r\n renderAssetTypesCheckBox(item, index)\r\n )}\r\n
    \r\n
    \r\n

    ทำเลที่ตั้ง

    \r\n \r\n \r\n \r\n
    \r\n
    \r\n

    ประเภททรัพย์

    \r\n
    \r\n
    \r\n {Object.entries(searchFilter.propertyType).map((item, index) =>\r\n renderCheckBox(item, index)\r\n )}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    ช่วงราคา (บาท)

    \r\n \r\n \r\n
    \r\n
    \r\n

    เนื้อที่ (ตร.ว.)

    \r\n \r\n \r\n
    \r\n
    \r\n

    พื้นที่ใช้สอย (ตร.ม.)

    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n

    ห้องนอน

    \r\n \r\n
    \r\n
    \r\n

    ห้องน้ำ

    \r\n \r\n
    \r\n
    \r\n
    \r\n

    สถานีใกล้เคียง BTS/MRT

    \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n}, areEqual);\r\n\r\nexport const TabSearch = (props) => {\r\n const hideDesktop = props.hideDesktop;\r\n\r\n const priceTab = (priceFilter) => {\r\n priceFilter = priceFilter.map((x, index) => {\r\n const M = 1000000;\r\n const begin = x.start ? 0 : x.price * M;\r\n const end = x.start ? x.price * M : x.end ? 0 : x.price2 * M;\r\n const range = begin + (end === 0 ? \"\" : \",\" + end);\r\n\r\n return (\r\n \r\n );\r\n });\r\n\r\n return priceFilter;\r\n };\r\n\r\n const provinceTab = (provinceFilter) => {\r\n provinceFilter = provinceFilter.map((x, index) => {\r\n return (\r\n \r\n );\r\n });\r\n\r\n return provinceFilter;\r\n };\r\n\r\n const propertyTypeTab = (propertyTypeFilter) => {\r\n propertyTypeFilter = propertyTypeFilter.map((x, index) => {\r\n if (x.propertyTypeCode != \"19\") {\r\n return (\r\n \r\n );\r\n }\r\n });\r\n\r\n return propertyTypeFilter;\r\n };\r\n\r\n return (\r\n \r\n
    \r\n
      \r\n
    • \r\n \r\n \r\n ประเภททรัพย์\r\n \r\n
    • \r\n
    • \r\n \r\n \r\n พื้นที่ยอดนิยม\r\n \r\n
    • \r\n
    • \r\n \r\n \r\n ช่วงราคา\r\n \r\n
    • \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    {propertyTypeTab(propertyTypeFilter)}
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    {provinceTab(provinceFilter)}
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    {priceTab(priceFilter)}
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport const PopUpSearch = React.memo((props) => {\r\n //Popup Addanve search\r\n const searchFilter = props;\r\n const OnInputChange = props.OnInputChange;\r\n const searchDataChange = props.searchDataChange;\r\n const IonRangeDataChange = props.IonRangeDataChange;\r\n const RangeInputDataChange = props.RangeInputDataChange;\r\n const OnRadioCheck = props.OnRadioCheck;\r\n const GoToSearch = props.GoToSearch;\r\n const ClearSearch = props.ClearSearch;\r\n\r\n const [rangeMin, setRangeMin] = useState(\"\");\r\n const [rangeMax, setRangeMax] = useState(\"\");\r\n const [areaMin, setAreaMin] = useState(\"\");\r\n const [areaMax, setAreaMax] = useState(\"\");\r\n const [useableAreaMin, setUseableAreaMin] = useState(\"\");\r\n const [useableAreaMax, setUseableAreaMax] = useState(\"\");\r\n\r\n// const [bedroom, setBedroom] = useState(\"\");\r\n// const [bathroom, setBathroom] = useState(\"\");\r\n\r\n const handleRadioChange = (type, value) => {\r\n if (type === \"bedroom\") {\r\n // setBedroom(value);\r\n OnInputChange(\"bedroom\", value)\r\n } else if (type === \"bathroom\") {\r\n // setBathroom(value);\r\n OnInputChange(\"bathroom\", value)\r\n }\r\n // Call any other function or logic you want here\r\n };\r\n\r\n const minMaxString = (min, max) => {\r\n console.log(min, max);\r\n if (!min && !max) {\r\n return \"\";\r\n } else if (!min) {\r\n return `0,${max}`;\r\n } else if (!max) {\r\n return min;\r\n } else {\r\n return `${min},${max}`;\r\n }\r\n };\r\n\r\n const onRangeChange = (field, value) => {\r\n if (field == \"min\") {\r\n setRangeMin(value);\r\n OnInputChange(\"rangeField\", minMaxString(value, rangeMax));\r\n } else {\r\n setRangeMax(value);\r\n OnInputChange(\"rangeField\", minMaxString(rangeMin, value));\r\n }\r\n };\r\n\r\n const onAreaChange = (field, value) => {\r\n if (field == \"min\") {\r\n setAreaMin(value);\r\n OnInputChange(\"areaField\", minMaxString(value, areaMax));\r\n } else {\r\n setAreaMax(value);\r\n OnInputChange(\"areaField\", minMaxString(areaMin, value));\r\n }\r\n };\r\n\r\n const onUseableAreaChange = (field, value) => {\r\n if (field == \"min\") {\r\n setUseableAreaMin(value);\r\n OnInputChange(\"useableAreaField\", minMaxString(value, useableAreaMax));\r\n } else {\r\n setUseableAreaMax(value);\r\n OnInputChange(\"useableAreaField\", minMaxString(useableAreaMin, value));\r\n }\r\n };\r\n\r\n const handleClearSearch = () => {\r\n setRangeMin(\"\");\r\n setRangeMax(\"\");\r\n setAreaMin(\"\");\r\n setAreaMax(\"\");\r\n setUseableAreaMin(\"\");\r\n setUseableAreaMax(\"\");\r\n ClearSearch();\r\n };\r\n\r\n const renderCheckBox = (item, index) => {\r\n if (item[0] !== \"fieldName\" && item[0] !== \"value\") {\r\n const fieldName = item[0];\r\n const data = item[1];\r\n // console.log('item', fieldName, data,item[1]);\r\n // console.log(\"property-type-m\" + index)\r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n );\r\n }\r\n };\r\n\r\n const renderAssetTypesCheckBox = (item, index) => {\r\n if (item[0] !== \"fieldName\" && item[0] !== \"value\") {\r\n const fieldName = item[0];\r\n const data = item[1];\r\n // console.log('item', fieldName, data,item[1]);\r\n // console.log(\"asset-type-m\" + index)\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n
    \r\n
    \r\n
    \r\n

    ค้นหาอย่างละเอียด

    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n OnInputChange(\"keyword\", e.target.value)}\r\n onKeyPress={(e) => e.key === \"Enter\" && GoToSearch()}\r\n />\r\n \r\n
    \r\n
    \r\n {Object.entries(searchFilter.assetTypes).map((item, index) =>\r\n renderAssetTypesCheckBox(item, index)\r\n )}\r\n
    \r\n
    \r\n

    ทำเลที่ตั้ง

    \r\n \r\n \r\n \r\n
    \r\n
    \r\n

    ประเภททรัพย์

    \r\n
    \r\n
    \r\n {Object.entries(searchFilter.propertyType).map((item, index) =>\r\n renderCheckBox(item, index)\r\n )}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    ช่วงราคา

    \r\n
    \r\n onRangeChange(\"min\", e.target.value)}\r\n />\r\n -\r\n onRangeChange(\"max\", e.target.value)}\r\n />\r\n
    \r\n
    \r\n
    \r\n

    เนื้อที่

    \r\n
    \r\n onAreaChange(\"min\", e.target.value)}\r\n />\r\n -\r\n onAreaChange(\"max\", e.target.value)}\r\n />\r\n
    \r\n
    \r\n
    \r\n

    พื้นที่ใช้สอย

    \r\n
    \r\n onUseableAreaChange(\"min\", e.target.value)}\r\n />\r\n -\r\n onUseableAreaChange(\"max\", e.target.value)}\r\n />\r\n
    \r\n
    \r\n
    \r\n

    ห้องนอน

    \r\n
    \r\n
    \r\n handleRadioChange(\"bedroom\", \"1\")}\r\n checked={searchFilter.bedroom.value === \"1\"}\r\n />\r\n \r\n
    \r\n
    \r\n handleRadioChange(\"bedroom\", \"2\")}\r\n checked={searchFilter.bedroom.value === \"2\"}\r\n />\r\n \r\n
    \r\n
    \r\n handleRadioChange(\"bedroom\", \"3\")}\r\n checked={searchFilter.bedroom.value === \"3\"}\r\n />\r\n \r\n
    \r\n
    \r\n handleRadioChange(\"bedroom\", \"4\")}\r\n checked={searchFilter.bedroom.value === \"4\"}\r\n />\r\n \r\n
    \r\n
    \r\n handleRadioChange(\"bedroom\", \"5\")}\r\n checked={searchFilter.bedroom.value === \"5\"}\r\n />\r\n \r\n
    \r\n
    \r\n handleRadioChange(\"bedroom\", \"\")}\r\n checked={searchFilter.bedroom.value === \"\"}\r\n />\r\n \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n

    ห้องน้ำ

    \r\n
    \r\n
    \r\n handleRadioChange(\"bathroom\", \"1\")}\r\n checked={searchFilter.bathroom.value === \"1\"}\r\n />\r\n \r\n
    \r\n
    \r\n handleRadioChange(\"bathroom\", \"2\")}\r\n checked={searchFilter.bathroom.value === \"2\"}\r\n />\r\n \r\n
    \r\n
    \r\n handleRadioChange(\"bathroom\", \"3\")}\r\n checked={searchFilter.bathroom.value === \"3\"}\r\n />\r\n \r\n
    \r\n
    \r\n handleRadioChange(\"bathroom\", \"4\")}\r\n checked={searchFilter.bathroom.value === \"4\"}\r\n />\r\n \r\n
    \r\n
    \r\n handleRadioChange(\"bathroom\", \"5\")}\r\n checked={searchFilter.bathroom.value === \"5\"}\r\n />\r\n \r\n
    \r\n
    \r\n handleRadioChange(\"bathroom\", \"\")}\r\n checked={searchFilter.bathroom.value === \"\"}\r\n />\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n );\r\n}, areEqual);\r\n","import React, { useEffect } from \"react\";\r\nimport Config from \"config\";\r\n\r\nimport { useSelector, useDispatch } from \"react-redux\";\r\n\r\nimport { DeskTopSearch, MobileSearch, TabSearch, PopUpSearch } from \"./SearchHeader\";\r\nimport {\r\n searchDataChange,\r\n searchIonRangeChange,\r\n searchListChange,\r\n updateIonRange,\r\n CheckBoxChange,\r\n ClearSearch,\r\n} from \"../stores/propertySlice\";\r\nimport {\r\n gotoSearchPage,\r\n getApiDataAsync,\r\n areEqualObjValue,\r\n valueRangeMaxMin,\r\n commonSearchDataChange,\r\n} from \"./Common\";\r\nimport province from \"province\";\r\n\r\nconst pagesLink = Config.pagesLink;\r\nconst $ = window.$;\r\n\r\nexport const HeaderNav = (props) => {\r\n const Body = (props) => {\r\n let searchBtn;\r\n if (false && props.searchBtn) {\r\n searchBtn = (\r\n
    \r\n {/* \r\n */}\r\n\r\n \r\n \r\n \r\n
    \r\n );\r\n useEffect(() => {\r\n $(\".open-search\").on(\"click\", function () {\r\n $(\".close-search\").removeClass(\"d-none\");\r\n $(\".open-search\").addClass(\"d-none\");\r\n $(\"#search-wrapper\").removeClass(\"d-none\");\r\n $(\"#property-tab-search\").removeClass(\"d-none\");\r\n // var galleryContainerPos = document.querySelector(\".gallery-container\").getBoundingClientRect().bottom;\r\n // if (galleryContainerPos <= 0) {\r\n // $(\"#header-placeholder\").height($(\"#header\").height());\r\n // }\r\n $(\"#header\").addClass(\"fixed\");\r\n // $(\"#icw\").append(\r\n // '
    '\r\n // );\r\n $(\"body\").css({\r\n height: \"100%\",\r\n overflow: \"hidden\",\r\n position: \"relative\",\r\n touchAction: \"none\",\r\n \"-ms-touch-action\": \"none\",\r\n });\r\n });\r\n\r\n $(\".close-search\").on(\"click\", function () {\r\n var scrollPos = $(window).scrollTop();\r\n $(\".close-search\").addClass(\"d-none\");\r\n $(\".open-search\").removeClass(\"d-none\");\r\n $(\"#search-wrapper\").addClass(\"d-none\");\r\n $(\"#property-tab-search\").addClass(\"d-none\");\r\n\r\n if (scrollPos <= 0) {\r\n $(\"#header\").removeClass(\"fixed\");\r\n }\r\n $(\"#more-filter-desktop\").height(0);\r\n $(\"#header-placeholder\").height(0);\r\n $(\".more-filter-btn.close\").css({ display: \"\" });\r\n $(\".more-filter-btn.desktop\").css({ display: \"\" });\r\n $(\"#backdrop\").remove();\r\n $(\"body\").css({\r\n height: \"auto\",\r\n overflow: \"auto\",\r\n position: \"initial\",\r\n touchAction: \"auto\",\r\n \"-ms-touch-action\": \"auto\",\r\n });\r\n $(\"#icw #header\").css({\r\n height: \"\",\r\n overflow: \"\",\r\n });\r\n });\r\n }, []);\r\n } else {\r\n searchBtn = (\r\n
    \r\n \r\n \"Search\"/\r\n \r\n {/* \r\n */}\r\n \r\n
    \r\n );\r\n // useEffect(() => {\r\n // $(\".open-search\").on(\"click\", function () {\r\n // $(\".search-section\").removeClass(\"d-none\");\r\n\r\n // // $(\"#header-placeholder\").height($(\"#header\").height());\r\n // $(\"#inner-header-placeholder\").height(0);\r\n // $(\"#inner-header\").removeClass(\"fixed\");\r\n // $(\"#header\").addClass(\"fixed\");\r\n // $(\".open-search\").addClass(\"d-none\");\r\n // $(\".close-search\").removeClass(\"d-none\");\r\n\r\n // // $(\"#icw\").append(\r\n // // '
    '\r\n // // );\r\n // $(\"body\").css({\r\n // height: \"100%\",\r\n // overflow: \"hidden\",\r\n // position: \"relative\",\r\n // touchAction: \"none\",\r\n // \"-ms-touch-action\": \"none\",\r\n // });\r\n // });\r\n\r\n // $(\".close-search\").on(\"click\", function () {\r\n // $(\".search-section\").addClass(\"d-none\")\r\n\r\n // $(\"#inner-header-placeholder\").height($(\"#inner-header\").height());\r\n // // $(\"#header-placeholder\").height(0);\r\n // $(\"#inner-header\").addClass(\"fixed\");\r\n // $(\"#header\").removeClass(\"fixed\");\r\n // $(\".open-search\").removeClass(\"d-none\");\r\n // $(\".close-search\").addClass(\"d-none\");\r\n\r\n // $(\"#backdrop\").remove();\r\n // $(\"body\").css({\r\n // height: \"auto\",\r\n // overflow: \"auto\",\r\n // position: \"initial\",\r\n // touchAction: \"auto\",\r\n // \"-ms-touch-action\": \"auto\",\r\n // });\r\n\r\n // // Close more filter on desktop\r\n // if (window.innerWidth >= 1025) {\r\n // $(\"#icw #header\").css({\r\n // backgroundImage: \"\",\r\n // // padding: 0,\r\n // height: \"\",\r\n // overflow: \"hidden\",\r\n // });\r\n\r\n // $(\"#more-filter-desktop\").animate({ height: 0 });\r\n // $(\".more-filter-btn.close\").css({ display: \"\" });\r\n // $(\".more-filter-btn.desktop\").css({ display: \"\" });\r\n // }\r\n // });\r\n // }, []);\r\n }\r\n\r\n useEffect(() => {\r\n $('link[href*=\"/_catalogs/masterpage/KWeb2016/assets/css/style-en.css\"]').attr('disabled', 'disabled');\r\n }, []);\r\n\r\n return (\r\n <>\r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
      \r\n
    • \r\n \r\n สินเชื่อเพื่อที่อยู่อาศัย\r\n \r\n \r\n
    • \r\n
    • \r\n \r\n สินเชื่อเพื่อลงทุนในสินทรัพย์ถาวร\r\n \r\n \r\n
    • \r\n
    \r\n \r\n {/*
  • \r\n สินเชื่อบ้านมือสอง\r\n
  • */}\r\n
  • \r\n คำถามที่พบบ่อย\r\n
  • \r\n \r\n \r\n {searchBtn}\r\n \r\n );\r\n };\r\n\r\n useEffect(() => {\r\n //hamburger menu\r\n document.querySelectorAll(\"#inner-header .logo-wrap a\").forEach(function (item) {\r\n item.addEventListener(\"click\", function (e) {\r\n dataLayer.push({\r\n event: \"track_event\",\r\n event_category: \"header\",\r\n event_action: \"click\",\r\n event_label: e.target.alt,\r\n });\r\n });\r\n });\r\n\r\n //header menu\r\n document.querySelectorAll(\"#inner-header .header-center a\").forEach(function (item) {\r\n item.addEventListener(\"click\", function (e) {\r\n dataLayer.push({\r\n event: \"track_event\",\r\n event_category: \"header\",\r\n event_action: \"click\",\r\n event_label: e.target.innerText,\r\n });\r\n });\r\n });\r\n });\r\n\r\n if (props.wrap) {\r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n );\r\n }\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n};\r\n\r\nexport const MobileNav = () => {\r\n useEffect(() => {\r\n //ทราบจำนวนคลิกในส่วน header\r\n document.querySelectorAll(\"#mobile-menu > div.offcanvas-body > ul\").forEach(function (item) {\r\n item.addEventListener(\"click\", function (e) {\r\n window.dataLayer.push({\r\n event: \"track_event\",\r\n event_category: \"header\",\r\n event_action: \"click\",\r\n event_label: e.target.innerText,\r\n });\r\n });\r\n });\r\n }, []);\r\n return (\r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n \r\n \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
      \r\n
    • \r\n \r\n สินเชื่อเพื่อที่อยู่อาศัย\r\n \r\n
    • \r\n
    • \r\n \r\n สินเชื่อเพื่อลงทุนในสินทรัพย์ถาวร\r\n \r\n
    • \r\n
    \r\n \r\n {/*
  • \r\n สินเชื่อบ้านมือสอง\r\n
  • */}\r\n
  • \r\n คำถามที่พบบ่อย\r\n
  • \r\n
  • \r\n \r\n {\" \"}\r\n หน้าหลัก{\" \"}\r\n \r\n
  • \r\n \r\n \r\n
    \r\n \r\n
    \r\n \r\n );\r\n};\r\n\r\nexport const HeaderWithSearch = (props) => {\r\n const [searchFilter] = useSelector((state) => [state.property.searchFilter]);\r\n\r\n return (\r\n <>\r\n
    \r\n \r\n );\r\n};\r\n\r\nconst Header = React.memo((props) => {\r\n const searchFilter = props;\r\n\r\n const dispatch = useDispatch();\r\n\r\n useEffect(() => {\r\n getApiDataAsync({\r\n urlPath: \"/RequestStations\",\r\n })\r\n .then((data) => {\r\n var list = Array.from(data, (x) => {\r\n return {\r\n text: x.StationNameTH,\r\n value: x.StationID,\r\n title: x.PlaceType,\r\n location: { Latitude: x.Latitude, Longitude: x.Longitude },\r\n };\r\n });\r\n\r\n list = [...list].sort(function (a, b) {\r\n return a.text.localeCompare(b.text);\r\n });\r\n\r\n dispatch(searchListChange({ field: \"station\", value: list }));\r\n })\r\n .catch(function (error) {\r\n console.log(error);\r\n // alertErrorAsync(error);\r\n })\r\n .then(() => {\r\n dispatch(searchListChange({ field: \"province\", value: province }));\r\n });\r\n\r\n //Tagging\r\n PDT_Header();\r\n }, []);\r\n\r\n function OnSearchDataChange(payload) {\r\n commonSearchDataChange(dispatch, payload, searchFilter, searchDataChange, OnsearchListChange);\r\n // const field = payload.field;\r\n // if (field === \"province\") {\r\n // const list = searchFilter[field].option.find(x => x.value == payload.value)\r\n\r\n // OnsearchListChange({ field: \"district\", value: list.child })\r\n // OnsearchListChange({ field: \"subDistrict\", value: [] })\r\n // } else if (field === \"district\") {\r\n // const list = searchFilter[field].option.find(x => x.value == payload.value)\r\n\r\n // OnsearchListChange({ field: \"subDistrict\", value: list.child })\r\n // }\r\n // dispatch(searchDataChange(payload))\r\n }\r\n\r\n function OnsearchListChange(payload) {\r\n dispatch(searchListChange(payload));\r\n }\r\n\r\n function OnInputChange(fieldName, value) {\r\n // const value = e.target.value\r\n dispatch(searchDataChange({ field: fieldName, value: value }));\r\n }\r\n\r\n function OnIonRangeDataChange(fieldName, from, to) {\r\n const payload = valueRangeMaxMin(fieldName, from, to);\r\n console.log(fieldName, payload.value);\r\n dispatch(searchIonRangeChange(payload));\r\n }\r\n\r\n function OnRangeInputDataChange(fieldName, from, to) {\r\n const payload = valueRangeMaxMin(fieldName, from, to);\r\n console.log(fieldName, payload.value);\r\n dispatch(searchIonRangeChange(payload));\r\n dispatch(updateIonRange({ fieldName }));\r\n }\r\n\r\n function OnRadioCheck(fieldName, value, group) {\r\n console.log(fieldName, value, group);\r\n dispatch(CheckBoxChange({ fieldName, value, group }));\r\n }\r\n\r\n function GoToSearch() {\r\n console.log(\"search\", isExpand());\r\n\r\n var url = \"\";\r\n window.dataLayer = window.dataLayer || [];\r\n\r\n if (isExpand()) {\r\n url = gotoSearchPage(searchFilter);\r\n var search_text = searchFilter.keyword.value;\r\n\r\n var search_location = [\r\n searchFilter.province.value,\r\n searchFilter.district.value,\r\n searchFilter.subDistrict.value,\r\n ]\r\n .filter((x) => x)\r\n .join(\",\");\r\n\r\n var search_filter_1 = [\r\n searchFilter.propertyType.value,\r\n searchFilter.rangePrice.value,\r\n searchFilter.areaRange.value,\r\n searchFilter.useableAreaRange.value,\r\n searchFilter.bedroom.value,\r\n searchFilter.bathroom.value,\r\n searchFilter.station.value,\r\n ]\r\n .filter((x) => x)\r\n .join(\",\");\r\n\r\n var search_filter_2 = searchFilter.assetTypes.value;\r\n window.dataLayer.push({\r\n event: \"submitSearch\",\r\n eventCategory: \"search\",\r\n eventAction: \"submit_filters_NPA\",\r\n eventLabel: `ค้นหาทรัพย์มือสองทำเลดีทั่วไทย`, //`ค้นหาทรัพย์มือสองทำเลดีทั่วไทย_${url}`, //หน้าที่ค้นหา\r\n dimension49: `${search_text}`, //คำค้นหา\r\n dimension7: `${search_location}`, //จังหวัด,อำเภอ,ตำบล\r\n dimension50: `${search_filter_1}`, //ประเภททรัพย์,ช่วงราคา,เนื้อที่,พื้นที่ใช้สอย,ห้องนอน,ห้องน้ำ,สถานีใกล้เคียง\r\n dimension51: `${search_filter_2}`, //ทรัพย์โปรโมชั่น,ทรัพย์ฝากขาย\r\n });\r\n } else {\r\n url = gotoSearchPage({ keyword: searchFilter.keyword.value });\r\n window.dataLayer.push({\r\n event: \"submitSearch\",\r\n eventCategory: \"search\",\r\n eventAction: \"submit_filters_NPA\",\r\n eventLabel: `ค้นหาทรัพย์มือสองทำเลดีทั่วไทย`, //`ค้นหาทรัพย์มือสองทำเลดีทั่วไทย_${url}`, //หน้าที่ค้นหา\r\n dimension49: `${searchFilter.keyword.value}`, //คำค้นหา\r\n dimension7: \"\", //จังหวัด,อำเภอ,ตำบล\r\n dimension50: \"\", //ประเภททรัพย์,ช่วงราคา,เนื้อที่,พื้นที่ใช้สอย,ห้องนอน,ห้องน้ำ,สถานีใกล้เคียง\r\n dimension51: \"\", //ทรัพย์โปรโมชั่น,ทรัพย์ฝากขาย\r\n });\r\n }\r\n\r\n console.log(url);\r\n window.open(url, \"_self\");\r\n }\r\n\r\n function OnClearSearch() {\r\n console.log(\"Clear Filter\");\r\n window.dataLayer.push({\r\n event: \"track_event\",\r\n event_category: \"NPA-MAIN-2022\",\r\n event_action: \"event_click\",\r\n event_label: \"ล้างการค้นหา\",\r\n });\r\n dispatch(ClearSearch());\r\n }\r\n\r\n function isExpand() {\r\n return (\r\n $(\"#more-filter-desktop\").css(\"height\") != \"0px\" || $(\"#more-filter-mobile\").hasClass(\"show\")\r\n );\r\n }\r\n\r\n console.log(\"Header Render\");\r\n\r\n return (\r\n <>\r\n
    \r\n
    \r\n \r\n
    \r\n {/* < DeskTopSearch hideDesktop={props.hideDesktop} {...searchFilter} searchDataChange={OnSearchDataChange} IonRangeDataChange={OnIonRangeDataChange} RangeInputDataChange={OnRangeInputDataChange} OnRadioCheck={OnRadioCheck} GoToSearch={GoToSearch} ClearSearch={OnClearSearch} OnInputChange={OnInputChange} /> */}\r\n
    \r\n {/* */}\r\n
    \r\n \r\n \r\n {/* */}\r\n \r\n );\r\n}, areEqualObjValue);\r\n\r\nfunction PDT_Header() {\r\n window.dataLayer = window.dataLayer || [];\r\n //advance search filter\r\n document\r\n .querySelectorAll(\".more-filter-btn.mobile,.more-filter-btn.desktop\")\r\n .forEach(function (item) {\r\n item.addEventListener(\"click\", function (e) {\r\n window.dataLayer.push({\r\n event: \"track_event\",\r\n event_category: \"search_filter\",\r\n event_action: \"event_click\",\r\n event_label: \"เลือกวิธีการค้นหาขั้นสูง\",\r\n });\r\n });\r\n });\r\n\r\n //clear advanced filter\r\n document\r\n .querySelectorAll(\"#more-filter-desktop > div > div.row.mt-3 > div > div > button.clear-data\")\r\n .forEach(function (item) {\r\n item.addEventListener(\"click\", function (e) {\r\n window.dataLayer.push({\r\n event: \"track_event\",\r\n event_category: \"NPAhome2022\",\r\n event_action: \"event_click\",\r\n event_label: \"ล้างการค้นหา\",\r\n });\r\n });\r\n });\r\n\r\n //correct filter tab content ถ้าไม่หน่วงเวลา ช่วงราคาจะไม่ขึ้น\r\n document.querySelectorAll(\"#property-tab-search .property-nav-wrap a\").forEach(function (item) {\r\n item.addEventListener(\"click\", function (e) {\r\n setTimeout(\r\n window.dataLayer.push({\r\n event: \"track_event\",\r\n event_category: \"Tab_content\",\r\n event_action: \"click\",\r\n event_label: e.target.innerText,\r\n }),\r\n 3000\r\n );\r\n });\r\n });\r\n\r\n //correct property filter selected\r\n document\r\n .querySelectorAll(\r\n \"#assets-type-tabs .swiper-slide a,#assets-type-tabs2 .swiper-slide a,#assets-type-tabs3 .swiper-slide a\"\r\n )\r\n .forEach(function (item) {\r\n item.addEventListener(\"click\", function (e) {\r\n window.dataLayer.push({\r\n event: \"track_event\",\r\n event_category: document.querySelector(\"#property-tab-search .nav-item .nav-link.active\")\r\n .innerText,\r\n event_action: \"click\",\r\n event_label: e.target.innerText.replace(/\\s/g, \"\"),\r\n });\r\n });\r\n });\r\n}\r\n","module.exports = configs;"],"sourceRoot":""}