{"version":3,"sources":["components/BaseSelectFile/styles.module.scss","views/Home/items/Introduce/styles.module.scss","views/Home/items/Chart/styles/CustomerOverview.module.scss","constants/firebase.js","stores/alert/selectors.alert.js","stores/alert/slice.alert.js","hook/AlertProvider.js","api/axiosClient.js","api/url.js","api/appConfig.js","stores/config/config.slice.js","utils/helper.js","api/appApi.js","utils/i18n.js","api/homeApi.js","constants/pathKeys.js","configs/redux/initialState.js","views/Home/HomeReducer.js","views/App/AppReducer.js","views/Home/HomeActions.js","views/Home/items/loading/index.js","images/logo.png","images/logo-mini.png","images/loading.svg","images/favicon.ico","images/gift-box.png","images/index.js","images/background.png","images/background-inte.png","images/boxmail.svg","images/call.svg","images/chat.svg","images/close.svg","images/web.svg","images/messenger.svg","components/Loading.js","stores/loading/selectors.loading.js","components/Flex/index.js","components/Button.js","constants/types.js","views/Sidebar/SidebarView.js","views/Sidebar/SidebarReducer.js","views/Sidebar/SidebarActions.js","views/Sidebar/SidebarSelectors.js","views/Sidebar/index.js","views/Sidebar/SidebarContainer.js","components/FormDialog.js","stores/config/config.selector.js","views/Scenario/components/CampaignStatusLabel.js","components/ListCampaign.js","views/Home/items/DialogVerifyPhone/index.js","views/Home/items/Chart/index.js","views/Home/items/AccountInfo/index.js","views/Home/items/Chart/BombotTagChart.js","components/Form/BaseDatePicker2/index.js","views/Home/items/Chart/LegendItem.js","views/Home/items/Chart/CampaignChart.js","views/Home/items/Chart/CustomerChart.js","api/customerApi.js","components/FiltersContainer/index.js","views/Home/items/Chart/CustomerOverview.js","views/Home/items/Chart/FanpageChart.js","views/Home/items/Chart/FanpageTagChart.js","views/Home/items/Chart/GenAIChart.js","views/Home/items/Chart/MessageChart.js","views/Home/items/Chart/ScenarioChart.js","views/Home/items/Chart/Dashboard.js","components/ButtonLoading/index.js","views/Home/HomeSelectors.js","assets/images/code.jpg","views/Home/items/DialogAlertPoints/index.js","views/Home/items/Introduce/index.js","views/Home/items/MessengerButton/index.js","components/CampaignStatusLabel/index.js","components/LoadingWrapper/index.js","components/CoppyIcon.js","api/scenarioApi.js","components/ConfirmModal/index.js","stores/loading/slice.loading.js","components/TimeLabel/index.js","components/ConfirmModal2/index.js","components/ListScenario.js","views/Home/HomeView.js","views/Login/LoginSelectors.js","views/App/AppSelectors.js","api/campaignApi.js","views/Campaign/CampaignReducer.js","views/Campaign/CampaignActions.js","views/Campaign/CampaignSelectors.js","views/Home/HomeContainer.js","components/UserAvatar/index.js","views/Header/HeaderView.js","api/accountApi.js","views/Login/LoginReducer.js","views/Login/LoginActions.js","views/Header/HeaderContainer.js","views/Header/index.js","components/ChangeLanguage/index.js","views/MainLayout/MainLayoutView.js","views/MainLayout/index.js","views/MainLayout/MainLayoutContainer.js","views/Campaign/CampaignView.js","views/Campaign/index.js","views/Campaign/CampaignContainer.js","api/fanpageApi.js","views/Customer/CustomerReducer.js","views/Customer/CustomerActions.js","views/Customer/CustomerSelectors.js","components/Modals/AddTags.js","stores/toast/slice.toast.js","components/Modals/ModalTagsBombot.js","components/Form/BaseSelect/index.js","constants/helper.js","components/Form/BaseInput/index.js","components/Form/BaseAutocomplete/index.js","components/Form/BaseDatePicker/index.js","hook/useEffectIgnoreFirst.js","components/FilterCustomer/ConditionItem.js","components/FilterCustomer/index.js","components/TagPreviewItem/index.js","components/TagPreviewModal/index.js","components/Modals/Confirm.js","hook/useDebouce.js","components/CustomersInTagModal/CustomersInBomBotTagModal.js","components/RenameTagModal/index.js","components/TagsManagementModal/BombotTagsManagement.js","components/CustomersInTagModal/CustomersInFBTagModal.js","components/TagsManagementModal/FbTagsManagement.js","components/TagsManagementModal/TagsManagementModal.js","components/ListCustomer.js","views/Fanpage/FanpageReducer.js","views/Fanpage/FanpageActions.js","components/BaseSelectFile/index.js","views/Customer/item/ModalResultImport.js","components/VirtualScroll/index.js","views/Customer/CustomerView.js","views/Fanpage/FanpageSelectors.js","views/Customer/index.js","views/Customer/CustomerContainer.js","components/ListFanpage.js","views/Fanpage/FanpageView.js","views/Fanpage/index.js","views/Fanpage/FanpageContainer.js","views/Home/index.js","views/Invite/InviteView.js","api/inviteApi.js","views/Invite/InviteReducer.js","views/App/AppActions.js","views/Invite/InviteSelectors.js","views/Invite/index.js","views/Invite/InviteContainer.js","views/Invite/InviteActions.js","views/Login/LoginView.js","views/Login/index.js","views/Login/LoginContainer.js","views/NotiPermission/index.js","views/Scenario/ScenarioSelectors.js","views/Scenario/ScenarioReducer.js","views/Scenario/components/CoppyIcon.js","views/Scenario/components/TimeLabel.js","views/Scenario/components/ScenarioList.js","views/Scenario/ScenarioView.js","views/Scenario/ScenarioContainer.js","views/Scenario/index.js","components/ListHistory.js","components/ListAccount.js","views/DialogPolicyPoint/DialogPolicyPointView.js","api/whatYouNeedApi.js","views/DialogPolicyPoint/DialogPolicyPointReducer.js","views/DialogPolicyPoint/DialogPolicyPointSelectors.js","views/DialogPolicyPoint/index.js","views/DialogPolicyPoint/DialogPolicyPointContainer.js","views/DialogPolicyPoint/DialogPolicyPointActions.js","components/TransferAcc/index.js","views/SettingAccount/SettingAccountView.js","views/SettingAccount/SettingAccountReducer.js","views/SettingAccount/SettingAccountSelectors.js","views/SettingAccount/index.js","views/SettingAccount/SettingAccountContainer.js","views/SettingAccount/SettingAccountActions.js","views/Tag/TagView.js","api/tagApi.js","views/Tag/TagReducer.js","views/Tag/TagContainer.js","views/Tag/index.js","views/Tag/TagActions.js","components/Toast/index.js","components/ToastContainer/index.js","stores/toast/selectors.toast.js","views/App/AppView.js","views/App/index.js","views/App/AppContainer.js","GlobalStyles.js","theme.js","components/NotiPermission/index.js","Root.js","utils/history.js","configs/redux/rootReducer.js","configs/redux/store.js","serviceWorker.js","configs/init-facebook-sdk.js","index.js","views/Home/styles.module.scss"],"names":["module","exports","vapidKey","selectAlert","state","alert","initialState","type","message","alertSlice","createSlice","name","reducers","resetAlert","showError","action","payload","showInfo","showSuccess","actions","Alert","props","elevation","variant","AlertProvider","children","dispatch","useDispatch","useSelector","reset","Snackbar","anchorOrigin","vertical","horizontal","open","autoHideDuration","onClose","severity","axiosClient","axios","create","baseURL","process","headers","localStorage","getItem","authorization","undefined","paramsSerializer","params","queryString","stringify","interceptors","request","use","a","config","i18n","language","lang","substring","retry","response","data","error","errorCode","status","debug","console","log","removeItem","window","location","reload","AppConfigAPI","recordLog","baseUrl","shared","getWhatYouNeed","getDashboard","dashboard","getMessageStatistic","getCampaignStatistic","getScenarioStatistic","getCustomerStatistic","getGenAIStatistic","getFanpageStatistic","getTagBombotStatistic","getTagFacebookStatistic","appConfig","api","addLog","user","loginSocial","login","verifyPhone","getOTP","changePassword","getInviteCode","confirmInviteCode","forgotPassword","redeemPoints","unlink","fanpageApi","reportPage","fanPageDetail","campaignApi","campaign","scenarioApi","scenario","customerApi","customer","addCampainByPart","addCampaignNoScenario","createCustomer","addMultiCustomersBombotTags","deleteMultiCustomersBombotTags","synchronizeApi","updatePSIDCustomer","syncPancakeToBombot","getHistorySync","getGuide","get","urlApi","post","getCountry","configSlice","loading","guides","countries","startGetGuide","getGuideSuccess","getGuideFailed","startGetCountries","getCountriesSuccess","getCountriesFailed","GUIDE_KEY","GUIDE_TYPE_ENUM","GUIDE_DEFAULT","account_manager","customer_manager","fanpage_manager","overview","video_introduce","tag_manager","campaign_manager","scenario_manager","isGetGuideData","JSON","parse","Object","keys","some","key","setItem","getIsGuideByKey","setIsGuideByKey","removeVNLang","str","toLowerCase","replace","trim","handleUpgrade","id","url","obj","clear_cart","full_name","ref","province_id","company","phone","email","substr","link","document","createElement","target","href","click","openNewTab","appApi","getUser","uid","LanguageDetector","Backend","initReactI18next","init","fallbackLng","interpolation","escapeValue","then","Error","changeLanguage","homeApi","updateUser","put","verifyNumberPhone","appReducer","loginReducer","account","statusLogined","homeReducer","share","verifyNumberPhoneError","sidebarReducer","menu","dehaze","campaignReducer","fanpageReducer","fanpageFull","settingAccountReducer","messageUnlink","whatYouNeed","inviteCode","messageInviteError","dialogPolicyPointReducer","customerReducer","createCustomerSucss","customerAll","detail","selected","fanpageSelected","tagFacebookSelectedAll","selectTagFacebook","setLoadingImport","importSuccess","customerCheck","messageImport","inviteReducer","showLoading","hideLoading","setUser","setLoading","setShare","res","useStyles","makeStyles","theme","container","display","flexDirection","justifyContent","alignItems","height","width","backgroundColor","position","top","left","zIndex","logo","marginBottom","progressContainer","maxWidth","borderRadius","overflow","progressBar","animation","CommonLoading","classes","className","src","alt","BACKGROUND","BACKGROUND_INTE","LOGO","LOADING","FAVICON","LOGO_MINI","GIFT_BOX","BOXMAIL","CALL","CHAT","CLOSE","WEV","FB","wrapperLoading","background","Loading","IMAGES","defaultProps","selectLoading","Container","styled","div","auto","column","align","justify","flexWrap","gap","Flex","restProps","root","fontSize","disabled","ButtonComponent","title","color","icon","handleClickButton","times","size","rest","Button","cn","style","onClick","marginRight","_","isNumber","marginLeft","PENDING","RUNNING","DONE","CANCEL","PAGE","SIZE","TUTORIAL","FACEBOOK","EXTENSION","DETAIL","EDIT","FILTER","MALE","FEMALE","HOME","NAME","LINK","CUSTOMER","FANPAGE","CAMPAGIGN","TAG","SCENARIO","SETTING_ACCOUNT","SYNCHRONIZE","list","listDehaze","overflowX","fullList","logoDehaze","textAlign","margin","right","text","button","bottom","wrapperSidebar","active","dehazeIcon","paddingLeft","paddingRight","cursor","dehazeIconDehaze","transform","logoIconDehaze","dehazeList","setMenu","setDehaze","getMenu","createSelector","SidebarPage","withRouter","connect","selectorsSidebar","onMenu","actionsSidebar","onDehaze","value","history","useHistory","t","useTranslation","React","useState","activeMenu","setActiveMenu","types","useEffect","url_string","pathname","URL","handleMenu","item","push","handleClickTutorial","handleClickExtension","handleSubmitOpenExtension","handleDehazeIcon","rel","List","map","index","ListItem","ListItemIcon","ListItemText","primary","dehazeLink","form","formControl","marginTop","spacing","minWidth","formControlLabel","close","CustomizedDialogs","isOpen","handleClose","transitionDelay","withoutHeader","Dialog","TransitionProps","selectConfig","configs","selectGuideList","selectGuideListByKey","selectCountries","selectCountriesOnly","e","countryName","base","padding","pending","running","cancel","done","small","medium","large","textsmall","textmedium","textlarge","CampaignStatusLabel","statusClass","IconComponent","HourglassEmpty","PlayCircleFilled","PauseCircleFilled","CheckCircle","sizeClass","textStatusClass","campaignStatusDir","paper","boxShadow","border","table","tableHead","tableHeadCell","fontWeight","tableCell","whiteSpace","textOverflow","ordNumberCell","idCell","nameCell","pageNameCell","creatorCell","dateTimeCell","statusCell","numberCell","copyButton","wrapperSearch","noData","clickableRow","actionCell","borderLeft","actionButton","transition","actionBtnDetail","actionTitle","buttonSearch","textField","p0","witdhOrd","f600","heightHeader","rowItem","headCells","numeric","disablePadding","label","EnhancedTableHead","TableHead","borderBottom","TableRow","headCell","TableCell","TableSortLabel","hideSortIcon","ListCampaign","getCampaign","handleGetCampaign","isPagination","isSearch","isShowFilter","rows","content","dataStatus","page","setPage","rowsPerPage","setRowsPerPage","search","setSearch","copied","setCopied","sortNameOrder","setSortNameOrder","tempSortNameOrder","setTempSortNameOrder","sortDateRangeOrder","setSortDateRangeOrder","tempSortDateRangeOrder","setTempSortDateRangeOrder","s","selectedStatus","setSelectedStatus","tempSelectedStatus","setTempSelectedStatus","setIsOpen","openSortModal","setOpenSortModal","openFilterModal","setOpenFilterModal","sortModalRef","useRef","filterModalRef","filterPopupRef","startDate","setStartDate","endDate","setEndDate","tempStartDate","setTempStartDate","tempEndDate","setTempEndDate","useOutsideAlerter","handleFuncs","handleClickOutside","event","current","contains","forEach","func","addEventListener","removeEventListener","handleSortName","order","handleSortDateRange","handleCopy","useCallback","navigator","clipboard","writeText","setTimeout","handleSubmitApply","createParams","searchParams","length","join","sortOptions","sort","onViewCampaign","campaignId","pageId","handleSelect","prev","includes","newSelected","filter","searchVal","pageVal","sizeVal","startdate","enddate","selectedstatus","sortnameorder","sortdaterangeorder","TextField","onChange","placeholder","fullWidth","onKeyDown","InputProps","startAdornment","InputAdornment","endAdornment","IconButton","SortRounded","borderWidth","borderStyle","borderColor","onMouseEnter","currentTarget","onMouseLeave","textTransform","buttonFilter","flexShrink","flex","CheckOutlined","fill","Paper","TableContainer","overflowY","Table","stickyHeader","TableBody","row","totalCus","hover","role","tabIndex","number","Tooltip","stopPropagation","pageName","userFullName","moment","createdAt","format","beginTime","isValid","totalScenario","totalCustomersDone","totalCustomersError","totalCustomersNotSend","totalMes","totalSuccess","totalFail","totalNotSend","minHeight","TablePagination","rowsPerPageOptions","component","count","Math","ceil","numberOfElements","onChangeRowsPerPage","newRowsPerPage","parseInt","labelRowsPerPage","Pagination","totalMatch","appVerifier","interval","option_default","responsive","maintainAspectRatio","animateRotate","animateScale","cutout","plugins","legend","labels","usePointStyle","generateLabels","chart","dataset","datasets","datasetIndex","fillStyle","strokeStyle","lineWidth","options_status","options_result","DashboardEmpty","Skeleton","Chart","data_status","useMemo","totalCampaignDone","totalCampaignPending","totalCampaignRunning","totalCampaignCancel","data_result","fanpage","textCampaign","beforeDatasetsDraw","args","pluginOptions","ctx","save","font","textBaseline","fillText","totalCampaigns","getDatasetMeta","x","y","textMessage","totalSent","styles","box","chart_container","chart_status","options","chart_result","box__action","to","pathKeys","card","AccountInfo","account__info","Card","CardContent","info","info__table","giftPoint","expiredAt","numRef","totalPage","BombotTagChart","setData","selectedDate","chartCustomerPerFanpages","tagName","indexAxis","scales","beginAtZero","inputPicker","delimiter","adornedEnd","BaseDatePicker2","control","defaultValue","rules","render","field","LocalizationProvider","dateAdapter","DateFnsUtils","maxDate","Date","inputFormat","date","renderInput","startProps","endProps","helperText","pointerEvents","LegendItem","legendColor","percent","CampaignChart","useForm","defaultValues","subtract","toDate","watch","prevDate","currentDate","from","dataCampaigns","hoverBackgroundColor","textOverlay","isEmpty","fontStyle","parseFloat","toFixed","CustomerChart","totalCustomers","dataCustomers","totalCustomersFail","totalCustomersSuccess","getCustomersStatistic","downloadExcel","getListCustomersInTag","unlinkBombotTag","delete","edit","removeMultiCustomersBombotTags","unAttachTags","export","api_path","responseType","import","formData","FormData","append","file","FiltersContainer","selectedFilter","handleFilterChange","ButtonGroup","option","options_result_phone_num","options_result_gender","total","reduce","b","centerX","chartArea","centerY","toString","restore","dateRange","LAST_30D","clone","LAST_3M","LAST_6M","LAST_12M","CustomerOverview","handleSubmit","setValue","formState","errors","customerStatistic","setCustomerStatistic","customersData","genderData","totalMale","totalFemale","totalOther","phoneNumberData","totalHavePhone","totalNotHavePhone","setSelectedFilter","wrapper","statsChartWrapper","overallNumber","chartItem","chartItemContent","statsTitle","statsNumber","statsPercent","percentMale","percentFemale","percentOther","phoneNumChart","percentHavePhone","percentNotHavePhone","FanpageChart","barOptions","ticks","callback","floor","FBTagChart","filteredData","uniqueTags","dataValues","values","GenAIChart","totalMessages","totalCreatedMessages","totalFormattedMessages","totalSelectedMessages","dataGenAI","numeral","sum","property","MessageChart","dataMessages","totalMessagesFail","totalMessagesNotSend","totalMessagesSuccess","ScenarioChart","totalScenarios","dataScenarios","totalScenarioCancel","totalScenarioPending","totalScenarioDone","totalScenarioRunning","button_try_it_now","stars","opacity","star","star1","animationDelay","button_try_it_now_hover","DashboardChart","campaigns","messages","isShowTooltip","scenarios","onDateChange","tourOverview","tourConfig","setTourConfig","steps","closeWithMask","lastStepNextButton","accentColor","onRequestClose","paddingTop","maxHeight","objectFit","ButtonLoading","isLoading","selectErrorVerifyPhone","getVerifyNumberPhone","verify","DialogAlertPoints","point","useTheme","wrapAccount","giftBox","listStyle","handleClosePopup","sx","secondRef","DialogVerifyPhone","handleBackVerify","handleVerify","handleVerifyOtpVoice","isShowInputVerify","setIsShowInputVerify","code","setCode","loadingVerify","setLoadingVerify","loadingCaptcha","setLoadingCaptcha","seconds","setSeconds","captchaArea","setCaptchaArea","errorVerify","typeReceive","setTypeReceive","onRefChange","node","firebase","auth","RecaptchaVerifier","onSignInSubmit","receiveCode","setErrorVerify","signInWithPhoneNumber","confirmationResult","setInterval","old","clearInterval","catch","err","resetCount","handleCodeResquestVoice","isError","FormControl","smsExample","inputStyle","outline","otp","numInputs","separator","confirm","resend","instructions","step","stepper","StepContent","videoId","link_video","Introduce","activeStep","setActiveStep","Set","skipped","setSkipped","contentRef","introduceData","isStepSkipped","has","PaperProps","Stepper","stepProps","completed","Step","StepLabel","prevActiveStep","newSkipped","MessengerButton","chatBox","btnItem","closeBtn","onOpen","LoadingWrapper","CircularProgress","CoppyIcon","viewBox","d","deleteScenario","scenarioId","visuallyHidden","clip","paddingBottom","buttonIEA","avatar","titlePopup","wrapButtonPopup","ConfirmModal","handleCancel","wrapChangePassword","loadingSlice","openLoading","closeLoading","TimeLabel","displayText","sendTime","now","targetTime","determineTimeStatus","colors","textColor","getStatusColors","timeRemaining","diff","hours","minutes","calculateTimeRemaining","formattedSendTime","toLocaleString","dialog","palette","main","ConfirmModal2","onConfirm","confirmText","cancelText","confirmColor","cancelColor","DialogTitle","DialogContent","Typography","DialogActions","collapseBtn","witdhId","widthName","widthCreator","widthDate","widthStatisticBtn","widthStatistic","widthActions","widthStatus","actionBtnRemove","shape","actionSend","actionAdd","actionBtnSearch","actionIcon","sortFields","LAST_7D","NEXT_24H","add","NEXT_3D","NEXT_7D","NEXT_14D","NEXT_30D","ScenarioManagement","withStyles","tooltip","isCopiedId","setIsCopiedId","removingScenario","setRemovingScenario","isLoadingList","setIsLoadingList","subScenarios","scenarioList","setScenarioList","limit","getScenarioList","handleDeleteScenario","onViewScenario","totalSubScenario","scenarioRefId","KeyboardArrowDown","KeyboardArrowUp","pageable","pageNumber","customerSuccess","customerFailed","customerNotSend","messageSuccess","messageFailed","messageNotSend","totalClickSent","schedule","scheduleTime","reverse","subRow","subIndex","isNull","sidebar","float","wrapperCampaignHistory","contentRight","userName","input","buttonVerify","select","formVerify","wrapSelectLabel","wrapperMain","wrapperBoxInfo","boxInfoCampaign","lineHeight","wrapperTable","wrapAutocomplete","HomeView","getAccount","onVerifyNumberPhone","onGetOtp","onWhatYouNeed","onDashboard","onVerifyNumberPhoneVoice","setName","setPhone","setEmail","setCompany","business","setBusiness","country","setCountry","giftPoints","setGiftPoints","isAlertPoints","setIsAlertPoints","province","setProvince","isInfo","setIsInfo","isVerify","setIsVerify","nameError","setNameError","phoneError","setPhoneError","emailError","setEmailError","countryError","setCountryError","isVisibleIntroduce","setIsVisibleIntroduce","setUID","countriesOnly","isNavigateUpdateRef","isShowDashboardTooltip","setIsShowDashboardTooltip","toISOString","split","setSelectedDate","setDailyData","dateData","dailyData","find","test","bus","package","handleChange","providerOptions","countrySelected","c","provinces","validate","RegExp","checkedIcon","startOf","endOf","LAST_1M","MainLayout","Avatar","defaultCountry","Autocomplete","multiple","disableCloseOnSelect","getOptionLabel","renderOption","Checkbox","checked","v","warn","Dashboard","selectUser","setCampaign","mapStateToProps","selectorsLogin","selectorsHome","selectorsApp","selectorsCampaign","selectShare","actionsHome","fields","actionsCampaign","UserAvatar","memo","initials","charAt","toUpperCase","getInitials","ArrowDropDown","StyledMenu","Menu","getContentAnchorEl","transformOrigin","StyledMenuItem","common","white","MenuItem","header","flexGrow","headerDehaze","menuButton","breakpoints","up","fade","searchIcon","inputRoot","inputInput","transitions","sectionDesktop","sectionMobile","button_upgrade","wrapperHeader","wrapperAvatar","wrapVersion","accountApi","Promise","resolve","reject","getLoginStatus","getMeFacebook","me","apiAuthenticate","authResponse","auth_type","scope","enable_profile_selector","return_scopes","onSubmitEmail","logout","transferToAccount","updateNotiPermissionToken","userID","picture","fbAccessToken","accessToken","partnerId","setAccount","setStatusLogined","setForgotPassword","token","HeaderPage","onLogout","anchorEl","setAnchorEl","setTitleMenu","isPopupVersion","setIsPopupVersion","titlePage","setTitlePage","AppBar","Toolbar","image","keepMounted","Boolean","grow","titleVersion","dangerouslySetInnerHTML","__html","version","ChangeLanguage","isUser","currentLanguage","updateLngUser","lng","disableScrollLock","handleChangeLanguage","borderRight","sidebarDehaze","backgroundSize","contentRightDehaze","footer","footerDehaze","textDecoration","MainLayoutView","page_id","app_id","Sidebar","MainLayoutPage","CampaignView","campaignData","setCampaignData","CampaignPage","getDetailFanpage","searchBombotTags","getBomBotTagList","getFbTagList","deleteBomBotTagList","renameTag","fanpageId","tagId","search_obj","search_string","search_arr","loading_add_tag","is_show_modal_add","tagsSelected","importResult","searchUidName","setCustomer","setDetail","setFanpageSelected","setTagFacebookSelectedAll","setSelectTagFacebook","loadingImport","setImportSuccess","setFanPageDetail","setCustomerAll","setCustomerCheck","concat","remove","n","setRestCustomerCheck","setCreateCustomerSucss","setMessageImport","setFilter","setSearchUidName","setSearchTagName","searchTagName","startAddTags","addTagsSuccess","addTagsFailed","toggleModalAdd","clearImportResult","setTagSelected","setEdit","onExport","excludes","exclude","filename","blob","fileName","createObjectURL","anchorElem","download","body","appendChild","removeChild","revokeObjectURL","saveAs","Blob","parseJSONfromParam","inputString","keyValuePairs","resultObject","pair","slice","selectImportResult","getCustomerAll","items","getCustomer","getListTagFacebook","fanpageSelectedData","fbTags","getListTagBombot","bombotTags","getDetail","selectCustomer","selectFilterCus","selectSearchUidName","selectFanpageSelected","selectBombotTags","selectAddTagLoading","selectIsShowModal","selectTagsPageSelected","pancakeTags","otherTags","tag","system","tags","fbTagsObj","bombotTagsObj","pancakeTagsObj","AddTags","fanpage_selected","messageAddTag","setMessageAddTag","txtValue","setTxtValue","allTags","filtered","el","dataBombotTag","facebookTags","onAddTags","toastSlice","toasts","openToast","uniqueId","closeToast","removedId","toast","ModalTagsBombot","isRemove","setMessageType","customerAfterFilter","tagSelected","showModalCreate","customerExclude","setIsLoading","tagSelectedIds","onSave","searchParam","URLSearchParams","getQuery","customerDifferent","filteredCustomer","cus","toggleModalCreate","selectOnFocus","clearOnBlur","renderTags","getTagProps","Chip","placement","BaseSelect","Select","opt","FIELD_OPTIONS","OPERATION_OPTION_NAME","OPERATION_TAGS_OPTION","GENDER_OPTION","OPERATION_OPTION","OPERATION_TIME_OPTION","OPERATION_PHONE_OPTION","GENDER_OPTIONS","PHONE_OPTIONS","BaseInput","BaseAutocomplete","BaseDatePicker","startText","endText","useEffectIgnoreFirst","dependencies","isFirstRun","RenderValue","fieldSelected","pageSelected","selectOptions","filterSelectedOptions","RenderOperation","selectedFields","OPTIONS","operation","ConditionItem","useWatch","flexBasic","customStyles","Modal","setAppElement","FilterCustomerModal","onSubmitFilter","filter_value","conditions","useFieldArray","ariaHideApp","onSubmit","Array","isArray","filterArr","condition","encodeURIComponent","customerFilter","gender","selectedTags","customerTagIds","flatMap","selectedTag","lastInboxTime","set","paddingCon","iconSize","removedOverlay","backgroundImage","TagPreviewItem","styleText","onRemove","onUnRemove","sizeStyles","isRemoved","setIsRemoved","selectedSize","Box","noWrap","wordBreak","saveButton","cancelButton","TagsModal","tagsObj","handleRemoveTags","removingTags","setRemovingTags","onSubmitRemoveTags","tagContent","prevTmp","confirmButton","dialogActions","Confirm","autoFocus","useDebounce","iconCheck","classTags","wrapBox","inputAdd","wrapButton","buttonLoadMore","witdhSeq","witdhCheckBox","witdhUid","widthGender","widthPhone","widthLinkFB","witdhAction","widthTag","witdhUidErr","checkBoxPadding","dialogTitle","backButton","closeButton","submitBtn","numCusInp","footerContainer","paginationBottom","appearance","boxSizing","fontFamily","userSelect","WebkitUserSelect","touchAction","verticalAlign","CustomersInBomBotTagModal","customerData","setCustomerData","setSearchVal","checkedList","setCheckedList","openConfirm","setOpenConfirm","getListCustomers","searchValue","searchQuery","handleSearch","handleDelete","include","widthCheckBox","FormControlLabel","every","isChecked","checkListTmp","handleCheckAllTag","handleCheckTag","upperCase","lastCustomerInboxTime","totalElements","newPage","handleChangePage","dialogContent","description","inputWrapper","submitButton","buttonProgress","RenameTagModal","renameSelected","val","setVal","inputProps","maxLength","widthSeq","widthId","widthCreatedAt","widthCreatedBy","widthQuantityCus","tagType","CellSticky","BombotTagsManagement","getData","getFanpage","tabVal","bombotTagData","setBombotTagData","openConfirmDelete","setOpenConfirmDelete","setRenameSelected","setSelectedTag","selectedCount","setSelectedCount","getBombotTags","handleDeleteTags","handleRenameTag","newName","prevData","currentPageTags","pRow","PeopleAltOutlined","CustomersInFBTagModal","totalPages","FbTagsManagement","fbTagData","setFbTagData","getFbTags","TagsManagementModal","setTabVal","Tabs","newVal","Tab","onSelectAllClick","numSelected","rowCount","checkBoxSelectAll","isEmptyCheckItem","indeterminate","EnhancedTable","handleGetData","handleExport","handleImport","onCreate","handleFilter","onCustomerCheck","onCustomerCheckReset","paramsFilter","paramsPagination","setCheckBoxSelectAll","setRows","isCreateCampaign","setIsCreateCampaign","titleCampaign","setTitleCampaign","isCheckedAllPage","setSeletedTags","isUseCheckedAllPage","setCustomerAllState","typeModalTag","setTypeModalTag","setError","typeMessage","setTypeMessage","setcustomerAfterFilter","showModalAllTags","setshowModalAllTags","selectedModalTags","setSelectedModalTags","isOpenModalManageTag","setIsOpenModalManageTag","isOpenModalFilter","setIsOpenModalFilter","toNumber","totalNumber","filterCus","nameText","handleSubmitSearch","getSearch","newSearchParam","createSearchQuery","handleCloseMenu","openModalTag","renderTagsCell","tagList","fanpageTags","filterTags","tagsContainer","result","buttonChange","handleSubmitCreateCampaign","idx","checkArr","indexOf","labelId","handleSelectCheckBox","lastSyncTime","handleEdit","onChangePage","buttonImport","buttonExport","buttonAdd","FilterCustomer","f","setFanpage","setFanpageFull","loading_page_detail","getFanpageFull","getFanpageDetail","BaseSelectFile","classCssLoading","fileNameSelected","file_loading","file_input","file__name","ModalResultImport","handleClosePoup","updateSuccessful","updateFailed","VirtualScroll","rowHeight","totalItems","visibleItemsLength","containerHeight","totalHeight","scrollTop","setScrollTop","startNodeElem","visibleItems","offsetY","onScroll","wrapSelectFanpage","wrapSelect","outlineOffset","wrapRadioGroup","formControlCheckbox","wrapButtonImport","importInput","inboxDate","inboxTime","inboxTimeLast","addTag","wrapCheckbox","tagFormGroup","fromToIcon","StyledRadio","Radio","disableRipple","clsx","CustomerView","onDetail","onEdit","onFanpageSelected","fileUpload","onSubmitAddTag","resetCustomer","isPopup","setIsPopup","setDetailState","listTagFacebook","setListTagFacebook","listTagBombot","setListTagBombot","tagFbSelectedAll","setTagFbSelectedAll","tagBbSelectedAll","setTagBbSelectedAll","isActions","setIsActions","setFile","isImportPopup","setIsImportPopup","setUid","nameFacebook","setNameFacebook","setLastInboxTime","lastInboxTimeTo","setLastInboxTimeTo","setGender","pagination","setPagination","isAddTag","setIsAddTag","setAddTag","isConfirmDeleteTag","setIsConfirmDeleteTag","itemDelete","setItemDelete","setParamsFilter","setUrlSearchParamPageId","urlSearchParamSearch","setUrlSearchParamSearch","urlSearchParamPage","setUrlSearchParamPage","urlSearchParamSize","setUrlSearchParamSize","lastCustomerInboxTimeTo","setLastCustomerInboxTimeTo","setLastCustomerInboxTime","urlSearchParamSort","setUrlSearchParamSort","setMessage","typeIdentif","setTypeIdentif","selectedPageId","setSelectedPageId","fanpageCurrent","listTagBombotTmp","sortListTag","listTagFbTmp","updatedAt","handleCloseImport","listTag","noTag","attachedTags","unattachedTags","localeCompare","handleSubmitAddTag","it","handleConfirmDeleteTag","handleDownloadExcel","accept","files","RadioGroup","freeSolo","handleChangeFanpage","handleDetail","excludeArr","handleParamsPagination","wrapperPopup","Grid","xs","radioGroup","FormLabel","FormGroup","updatedTags","handleCheckedTagFacebook","handleCheckedTagBombot","handleDeteleTag","fbTagsArr","bombotTagsArr","fbTagsArrAll","bombotTagsArrAll","notInTagBombot","notInTagFacebook","paramsSearch","handleSubmitActions","CustomerPage","selectorsFanpage","selectorsCustomer","actionsFanpage","actionsCustomer","onTagFacebookSelectedAll","onSelectTagFacebook","createCustomerParams","query","delayTime","tableContainer","nameFanpage","dense","FanpageView","FanpagePage","HomePage","wrapperLogin","InvitePageView","onGetUser","statusConfirmInviteCode","inviteCodeData","setInviteCodeData","handleSubmitButton","inviteApi","confirmInvite","onUnlink","setConfirmInviteCode","InvitePage","selectorsInvite","actionsLogin","actionsApp","down","secondary","mobileWrapperLogin","whiteLogo","bottomTitle","textTitle","appTitle","letterSpacing","botIcon","facebook","iconFacebook","titleChangePassword","inputForgotPassword","wrapForgotPasswordInput","success","banner","LoginView","handleSubmitEmail","onSubmitForgotPassword","password","setPassword","isForgotPasswordPopup","setIsForgotPasswordPopup","emailForgotPassword","setEmailForgotPassword","handleClickButtonFacebook","handleForgotPasswordPopup","fixed","Input","LoginPage","isObject","NotiPermission","messaging","serviceWorker","register","registration","getToken","currentToken","notiToken","userId","getUserIdFromURL","defaultSizeGetScenario","ScenarioList","setCampaignSelected","getScenario","createdByUserId","setCampaignId","ScenarioPage","ScenarioView","ListHistoryjs","amount","method","handleInviteCode","handleUnlink","statusUnlink","handleOpenTransferConfirm","setTransferedId","handleOpenTransfer","users","setUnlink","isUnlink","setIsUnlink","showStatus","setShowStatus","handleCloseStatus","reason","lastLogin","usedWithUserId","handleSubmitUnlink","TabPanel","other","hidden","p","a11yProps","DialogPolicyPointView","onRedeemPoints","MuiAppBarColorPrimary","PointPannel","PointPannel3","giftPointLogo","columTask","columReward","handleRedeemPoints","bgcolor","newValue","TabIndicatorProps","axis","direction","onChangeIndex","dir","myAffId","CardActionArea","CardMedia","gutterBottom","CardActions","whatYouNeedApi","DialogPolicyPointPage","selectorDialogPolicyPoint","TransferAcc","transferedId","validateInput","wrapInfo","gridTemplateColumns","textFieldFirst","wrapAvatar","viewPolicyPoint","wrapPolicyPoint","time","service","accounts","formChangePassword","changePasswordButton","wrapTextareaCopy","changePasswordSucc","changePasswordErr","changePasswordStatus","textarea","resize","copySuccess","errorInput","col6","col12","wrapButtonChange","SettingAccountView","onSubmitChangePassword","onChangePasswordStatus","onGetInviteCode","passwordOld","setPasswordOld","passwordNew","setPasswordNew","passwordNew2","setPasswordNew2","isChangePassword","setIsChangePassword","isChangePasswordSucss","setIsChangePasswordSucss","isViewPolicyPoint","setIsViewPolicyPoint","setCopySuccess","textAreaRef","errorPassword","setErrorPassword","isInviteCodePopup","setIsInviteCodePopup","isSubmitChangePassword","setIsSubmitChangePassword","getOpenPoits","setGetOpenPoits","updateInfoError","setUpdateInfoError","updateInfoSuccess","setUpdateInfoSuccess","isOpenTransfer","setIsOpenTransfer","isShowConfirmTransfer","setIsShowConfirmTransfer","origin","handleChangePassword","user_business","handleTransferAccount","mainUserId","linkedUserId","autocomplete","handleSubmitChangeInfo","noPwSet","autoComplete","execCommand","DialogPolicyPoint","setInviteCode","setMessageUnlink","setMessageInviteError","SettingAccountPage","selectorSettingAccount","actionsSettingAccount","TagView","tagApi","tagReducer","setTag","TagPage","getTag","actionsTag","Toast","toastStyle","ToastContainer","timers","timer","clearTimeout","selectToast","apps","initializeApp","apiKey","authDomain","projectId","storageBucket","messagingSenderId","appId","measurementId","analytics","App","userApp","getCountries","getLang","getRef","getElementById","parseHTML","onclick","classList","html","innerHTML","cloneNode","fallback","exact","path","Login","Scenario","Home","Fanpage","Customer","Campaign","Tag","Invite","SynchronizePageView","SettingAccount","AppView","withTheme","createMuiTheme","shadows","warning","light","dark","tonalOffset","xl","lg","md","sm","typography","useNextVariants","htmlFontSize","tokenBrowser","Root","store","responsiveFSTheme","responsiveFontSizes","CssBaseline","GlobalStyles","createHistory","require","createBrowserHistory","rootReducer","combineReducers","router","connectRouter","toastr","toastrReducer","reducer","configureStore","middleware","getDefaultMiddleware","devTools","hostname","match","fbAsyncInit","cookie","xfbml","js","fjs","getElementsByTagName","parentNode","insertBefore","ReactDOM","ready","unregister"],"mappings":"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","file":"static/js/main.278a28c8.chunk.js","sourcesContent":["// extracted by mini-css-extract-plugin\nmodule.exports = {\"file_loading\":\"styles_file_loading__35yRc\",\"container\":\"styles_container__2vlKX\",\"file_input\":\"styles_file_input__34lll\",\"file__name\":\"styles_file__name__IDgQ5\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"step\":\"styles_step__3xGJB\",\"content\":\"styles_content__2DoYX\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"wrapper\":\"CustomerOverview_wrapper__2Ypoo\",\"header\":\"CustomerOverview_header__e3SrC\",\"openListBtn\":\"CustomerOverview_openListBtn__2w2yv\",\"openListBtnWrapper\":\"CustomerOverview_openListBtnWrapper__1biCC\",\"openListIcon\":\"CustomerOverview_openListIcon__3HD1s\",\"openListTitle\":\"CustomerOverview_openListTitle__mrpx3\",\"statsChartWrapper\":\"CustomerOverview_statsChartWrapper__3_EjR\",\"overallTitle\":\"CustomerOverview_overallTitle__20yTx\",\"overallNumber\":\"CustomerOverview_overallNumber__yXkIs\",\"chartItem\":\"CustomerOverview_chartItem__298RZ\",\"chartItemContent\":\"CustomerOverview_chartItemContent__2snQV\",\"statsTitle\":\"CustomerOverview_statsTitle__17hBf\",\"statsNumber\":\"CustomerOverview_statsNumber__2FJp_\",\"statsPercent\":\"CustomerOverview_statsPercent__2wPpa\",\"chart\":\"CustomerOverview_chart__3KJbZ\",\"phoneNumChart\":\"CustomerOverview_phoneNumChart__2XhdU\"};","export const FirebaseConfig = {\n apiKey: 'AIzaSyAXT7RncitAtPwbTck9UBYtYyY_vxYSS94',\n authDomain: 'bombot-13368.firebaseapp.com',\n projectId: 'bombot-13368',\n storageBucket: 'bombot-13368.appspot.com',\n messagingSenderId: '566498998743',\n appId: '1:566498998743:web:adae2e0623bc157fde3392',\n measurementId: 'G-7227W64HF5',\n}\n\nexport const vapidKey =\n 'BEdVrkl_sB-fT48WQPCNtmAhjrnkjRLOR6jhlcYxcXcEitpRVEQIX2C6rXjAV7xgNzwDsotaW6XZ5mJABCQrNG0'\n","export const selectAlert = (state) => state.alert\n","import { createSlice } from '@reduxjs/toolkit'\n\nconst initialState = {\n type: 'info',\n message: null,\n}\n\nconst alertSlice = createSlice({\n name: 'alert',\n initialState,\n reducers: {\n resetAlert: () => initialState,\n showError: (state, action) => {\n state.type = 'error'\n state.message = action.payload\n },\n showInfo: (state, action) => {\n state.type = 'info'\n state.message = action.payload\n },\n showSuccess: (state, action) => {\n state.type = 'success'\n state.message = action.payload\n },\n },\n})\n\nexport const {\n resetAlert,\n showError,\n showInfo,\n showSuccess,\n} = alertSlice.actions\n\nexport default alertSlice\n","import React from \"react\";\nimport Snackbar from \"@material-ui/core/Snackbar\";\nimport MuiAlert from \"@material-ui/lab/Alert\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { selectAlert } from \"stores/alert/selectors.alert\";\nimport { resetAlert } from \"stores/alert/slice.alert\";\n\nfunction Alert(props) {\n return ;\n}\n\nconst AlertProvider = ({ children }) => {\n const dispatch = useDispatch();\n\n const alert = useSelector(selectAlert);\n\n const reset = () => dispatch(resetAlert());\n\n return (\n
\n \n \n {alert?.message}\n \n \n {children}\n
\n );\n};\n\nexport default AlertProvider;\n","import axios from 'axios'\nimport queryString from 'query-string'\nimport AppConfigAPI from './appConfig'\nimport i18n from 'i18next'\n\n// Set up default config for http requests here\n// Please have a look at here `https://github.com/axios/axios#request- config` for the full list of configs\nconst axiosClient = axios.create({\n baseURL: process.env.REACT_APP_API_URL,\n headers: localStorage.getItem('token')\n ? {\n 'content-type': 'application/json',\n authorization: localStorage.getItem('token') || undefined,\n }\n : {\n 'content-type': 'application/json',\n },\n paramsSerializer: (params) => queryString.stringify(params),\n})\n\naxiosClient.interceptors.request.use(async (config) => {\n // Handle token here ...\n if (i18n.language) {\n config.headers.lang = i18n.language?.substring(0, 2)\n }\n\n if (localStorage.getItem('token')) {\n config.headers.authorization = localStorage.getItem('token')\n }\n return config\n})\n\nlet retry = 0\n\naxiosClient.interceptors.response.use(\n (response) => {\n if (response && response.data) {\n return response.data\n }\n retry = 0\n return response\n },\n async (error) => {\n const payload = {\n errorCode: error?.response?.status || 0,\n message: 'webapp',\n }\n if (error.response?.data?.error?.message) {\n error.message = error.response.data.error.message\n payload.debug = error.response.data.error.message\n } else {\n payload.debug = error.message\n }\n if (error && error.response && error.response.status === 401) {\n console.log('error 401', error)\n localStorage.removeItem('token')\n localStorage.removeItem('id')\n window.location.reload(true)\n }\n if (retry === 0) AppConfigAPI.recordLog([payload])\n retry++\n // Handle errors\n throw error\n }\n)\n\nexport default axiosClient\n","const baseUrl = `${process.env.REACT_APP_API_URL}`\n\n// eslint-disable-next-line import/no-anonymous-default-export\nexport default {\n shared: {\n getWhatYouNeed: `${baseUrl}api/v1.0/shared/getWhatYouNeed`, // get\n getDashboard: `${baseUrl}api/v1.0/shared/dashboard` // get\n },\n dashboard: {\n getMessageStatistic: `${baseUrl}api/v1.0/getStatistic/message`, // get\n getCampaignStatistic: `${baseUrl}api/v1.0/getStatistic/campaign`, // get\n getScenarioStatistic: `${baseUrl}api/v1.0/getStatistic/scenario`, // get\n getCustomerStatistic: `${baseUrl}api/v1.0/getStatistic/customer`, // get\n getGenAIStatistic: `${baseUrl}api/v1.0/genAI/getStatistic`, // get\n getFanpageStatistic: `${baseUrl}api/v1.0/fanPage/reportPage`, // get\n getTagBombotStatistic: `${baseUrl}api/v1.0/bombotTags/getStatistic`, // get\n getTagFacebookStatistic: `${baseUrl}api/v1.0/facebookTags/getStatistic` // get\n },\n appConfig: {\n api: `${baseUrl}api/v1.0/appConfig`, // get\n addLog: `${baseUrl}api/v1.0/log` // post\n },\n user: {\n loginSocial: `${baseUrl}api/v1.0/user/login_social`, // get\n user: `${baseUrl}api/v1.0/user`, // put\n login: `${baseUrl}api/v1.0/user/login`, // get\n verifyPhone: `${baseUrl}api/v1.0/user/verify`, // get\n getOTP: `${baseUrl}api/v1.0/user/getOTP`, // get\n changePassword: `${baseUrl}api/v1.0/user/changePassword`, // get\n getInviteCode: `${baseUrl}api/v1.0/user/getInviteCode`, // get\n confirmInviteCode: `${baseUrl}api/v1.0/user/confirmInviteCode`, // get\n forgotPassword: `${baseUrl}api/v1.0/user/resetPassword`, // get\n redeemPoints: `${baseUrl}api/v1.0/user/redeemPoints`, // get, doi diem\n unlink: `${baseUrl}api/v1.0/user/unlink` // DELETE\n },\n fanpageApi: {\n reportPage: `${baseUrl}api/v1.0/fanPage/reportPage`, // get\n fanPageDetail: `${baseUrl}api/v1.0/fanPageDetail` // post\n },\n campaignApi: {\n campaign: `${baseUrl}api/v1.0/campaign` // get\n },\n scenarioApi: {\n scenario: `${baseUrl}api/v1.0/campaign/857636ce-e9f7-48c9-8474-9ae5fa309392/scenario?id=857636ce-e9f7-48c9-8474-9ae5fa309392&page=0&sort=createdAt,asc` // get\n },\n customerApi: {\n customer: `${baseUrl}api/v1.0/customer`, // get\n create: `${baseUrl}api/v1.0/campaign`, // post\n addCampainByPart: `${baseUrl}api/v1.0/campaign/addCampainByPart`, // post\n addCampaignNoScenario: `${baseUrl}api/v1.0/campaign/addCampaignNoScenario`, // post\n createCustomer: `${baseUrl}api/v1.0/campaignCustomer`, // post\n addMultiCustomersBombotTags: `${baseUrl}api/v1.0/customer/customersBombotTags`, // post\n deleteMultiCustomersBombotTags: `${baseUrl}api/v1.0/customer/customersBombotTags` // delete\n },\n synchronizeApi: {\n updatePSIDCustomer: `${baseUrl}api/v1.0/updatePSIDCustomer`, // post\n syncPancakeToBombot: `${baseUrl}api/v1.0/pancake/syncPancakeToBombot`, // post\n getHistorySync: `${baseUrl}api/v1.0/getHistorySync` // get\n }\n};\n","import axiosClient from \"./axiosClient\";\nimport urlApi from \"./url\";\n\nconst getGuide = (params) => {\n return axiosClient.get(`${urlApi.appConfig.api}/guide_webapp`, { params });\n};\n\nconst getCountry = (params) => {\n return axiosClient.get(`${urlApi.appConfig.api}/country`, { params });\n};\n\nconst recordLog = (payload) => {\n return axiosClient.post(urlApi.appConfig.addLog, payload);\n};\nconst AppConfigAPI = {\n getGuide,\n recordLog,\n getCountry,\n};\n\nexport default AppConfigAPI;\n","import { createSlice } from '@reduxjs/toolkit'\nimport AppConfigAPI from 'api/appConfig'\n\nexport const configSlice = createSlice({\n name: 'configs',\n initialState: {\n loading: false,\n error: null,\n guides: null,\n countries: [],\n },\n reducers: {\n startGetGuide: (state) => {\n state.loading = true\n state.error = false\n },\n getGuideSuccess: (state, action) => {\n state.loading = false\n state.guides = action.payload\n },\n getGuideFailed: (state) => {\n state.loading = false\n },\n startGetCountries: (state) => {\n state.loading = true\n state.error = false\n },\n getCountriesSuccess: (state, action) => {\n state.loading = false\n state.countries = action.payload || []\n },\n getCountriesFailed: (state) => {\n state.loading = false\n },\n },\n})\n\nexport const {\n startGetGuide,\n getGuideSuccess,\n getGuideFailed,\n startGetCountries,\n getCountriesSuccess,\n getCountriesFailed,\n} = configSlice.actions\n\nexport const getGuide = (params) => async (dispatch) => {\n try {\n dispatch(startGetGuide())\n const res = await AppConfigAPI.getGuide(params)\n dispatch(getGuideSuccess(res.content?.value))\n } catch (error) {\n dispatch(getGuideFailed(error))\n }\n}\n\nexport const getCountries = (params) => async (dispatch) => {\n try {\n dispatch(startGetCountries())\n const res = await AppConfigAPI.getCountry(params)\n dispatch(getCountriesSuccess(res.content?.value))\n } catch (error) {\n dispatch(getCountriesFailed(error))\n }\n}\n\nexport default configSlice.reducer\n","import { showError } from 'stores/alert/slice.alert'\nimport queryString from 'query-string'\nimport moment from 'moment'\nimport _ from 'lodash'\n\nexport const GUIDE_KEY = 'guide'\nexport const GUIDE_TYPE_ENUM = {\n account_manager: 'account_manager',\n customer_manager: 'customer_manager',\n fanpage_manager: 'fanpage_manager',\n overview: 'overview',\n video_introduce: 'video_introduce',\n tag_manager: 'tag_manager',\n campaign_manager: 'campaign_manager',\n scenario_manager: 'scenario_manager',\n dashboard: 'dashboard',\n}\nconst GUIDE_DEFAULT = {\n account_manager: true,\n customer_manager: true,\n fanpage_manager: true,\n overview: true,\n video_introduce: true,\n tag_manager: true,\n campaign_manager: true,\n scenario_manager: true,\n dashboard: true,\n}\n\nexport const initGuide = () => {\n let data = localStorage.getItem(GUIDE_KEY)\n if (!data) {\n localStorage.setItem(GUIDE_KEY, JSON.stringify(GUIDE_DEFAULT))\n }\n}\n\nexport const isGetGuideData = () => {\n let data = localStorage.getItem(GUIDE_KEY)\n if (!data) {\n initGuide()\n return true\n }\n data = JSON.parse(data)\n return Object.keys(data).some((key) => data[key])\n}\n\nexport const getIsGuideByKey = (key) => {\n let data = localStorage.getItem(GUIDE_KEY)\n if (!data) return false\n data = JSON.parse(data)\n return data[key]\n}\n\nexport const setIsGuideByKey = (key) => {\n let data = localStorage.getItem(GUIDE_KEY)\n if (!data) return false\n data = JSON.parse(data)\n data = {\n ...data,\n [key]: false,\n }\n localStorage.setItem(GUIDE_KEY, JSON.stringify(data))\n}\n\nexport const removeVNLang = (str) => {\n if (str) {\n str = str.toLowerCase()\n str = str.replace(/à|á|ạ|ả|ã|â|ầ|ấ|ậ|ẩ|ẫ|ă|ằ|ắ|ặ|ẳ|ẵ/g, 'a')\n str = str.replace(/è|é|ẹ|ẻ|ẽ|ê|ề|ế|ệ|ể|ễ/g, 'e')\n str = str.replace(/ì|í|ị|ỉ|ĩ/g, 'i')\n str = str.replace(/ò|ó|ọ|ỏ|õ|ô|ồ|ố|ộ|ổ|ỗ|ơ|ờ|ớ|ợ|ở|ỡ/g, 'o')\n str = str.replace(/ù|ú|ụ|ủ|ũ|ư|ừ|ứ|ự|ử|ữ/g, 'u')\n str = str.replace(/ỳ|ý|ỵ|ỷ|ỹ/g, 'y')\n str = str.replace(/đ/g, 'd')\n // str = str.replace(/!|@|%|\\^|\\*|\\(|\\)|\\+|\\=|\\<|\\>|\\?|\\/|,|\\.|\\:|\\;|\\'|\\\"|\\&|\\#|\\[|\\]|~|\\$|_|`|-|{|}|\\||\\\\/g, \" \");\n str = str.replace(/ + /g, ' ')\n str = str.trim()\n }\n return str\n}\n\nexport const openNewTab = (url) => {\n var link = document.createElement('a')\n link.target = '_blank'\n link.href = url\n link.click()\n}\n\nexport const handleUpgrade = ({ i18n, user, dispatch }) => {\n if (!user?.id) {\n dispatch(\n showError(\n 'Có lỗi xảy ra, vui lòng liên hệ với BOMBOT!. (An error has occurred, please contact BOMBOT!).'\n )\n )\n return\n }\n if (i18n.language) {\n let url\n const obj = {\n clear_cart: true || '',\n full_name: user.name || '',\n ref: user.id || '',\n province_id: 50,\n company: user.company || '',\n phone: user.phone || '',\n email: user.email || '',\n }\n const params = queryString.stringify(obj)\n\n switch (i18n.language?.substr(0, 2)) {\n case 'vi': {\n url = `https://bombot.vn?${params}#bang-gia`\n break\n }\n case 'kh': {\n url = `https://bombot.vn/km/home?${params}#kh-pricing`\n break\n }\n default: {\n // default en\n url = `https://bombot.vn/en/home?${params}#pricing`\n break\n }\n }\n\n openNewTab(url)\n }\n}\n\nexport const createSearchQuery = (values) => {\n if (_.isEmpty(values)) return ''\n\n const filtered = values.filter(\n (e) => e.value && !(Array.isArray(e.value) && e.value.length === 0)\n )\n let payload = ''\n\n filtered.forEach((condition) => {\n if (condition.operation === '==' || condition.operation === '!=') {\n payload +=\n condition.field +\n condition.operation +\n encodeURIComponent(condition.value) +\n ';'\n } else {\n switch (condition.field) {\n case 'bombotTags':\n case 'fbTags':\n payload +=\n condition.field +\n '=' +\n condition.operation +\n '=' +\n condition.value?.map((v) => v.value).toString() +\n ';'\n break\n case 'phone':\n case 'gender':\n payload +=\n condition.field +\n '=' +\n condition.operation +\n '=' +\n encodeURIComponent(removeVNLang(condition.value)) +\n ';'\n break\n case 'uid':\n case 'name':\n payload +=\n condition.field +\n '=' +\n condition.operation +\n '=' +\n removeVNLang(condition.value) +\n ';'\n break\n case 'lastInboxTime':\n payload +=\n condition.field +\n '=' +\n condition.operation +\n '=' +\n condition.value\n .map((v) => moment(v).format('YYYY-MM-DD'))\n .toString() +\n ';'\n break\n case 'lastCustomerInboxTime':\n payload +=\n condition.field +\n '=' +\n condition.operation +\n '=' +\n condition.value\n .map((v) => moment(v).format('YYYY-MM-DD'))\n .toString() +\n ';'\n break\n default:\n break\n }\n }\n })\n\n return payload\n}\n","import axiosClient from \"./axiosClient\";\nimport urlApi from \"./url\";\nconst appApi = {\n getUser: (uid) => {\n return axiosClient.get(`${urlApi.user.user}/${uid}`);\n },\n forgotPassword: (params) => {\n return axiosClient.get(`${urlApi.user.forgotPassword}`, {params});\n },\n \n};\n\nexport default appApi;\n","import i18n from 'i18next'\nimport LanguageDetector from 'i18next-browser-languagedetector'\nimport { initReactI18next } from 'react-i18next'\nimport Backend from 'i18next-http-backend'\nimport appApi from 'api/appApi'\ni18n\n .use(LanguageDetector)\n .use(Backend)\n .use(initReactI18next)\n // init i18next\n // for all options read: https://www.i18next.com/overview/configuration-options\n .init({\n // debug: true,\n fallbackLng: 'en',\n interpolation: {\n escapeValue: false,\n },\n })\n .then(async () => {\n try {\n const uid = localStorage.getItem('id')\n if (!uid) throw new Error('new client')\n const user = await appApi.getUser(uid)\n if (!user.lang) {\n if (!uid) throw new Error('new client')\n }\n i18n.changeLanguage(user.lang)\n } catch (error) {\n // i18n.changeLanguage(\"vi\");\n }\n })\n\nexport default i18n\n","import i18n from 'utils/i18n'\nimport axiosClient from './axiosClient'\nimport urlApi from './url'\nconst homeApi = {\n updateUser: (params, uid) => {\n return axiosClient.put(`${urlApi.user.user}/${uid}`, params);\n },\n verifyNumberPhone: (params) => {\n return axiosClient.get(`${urlApi.user.verifyPhone}`, { params });\n },\n getOTP: (params) => {\n return axiosClient.get(`${urlApi.user.getOTP}`, { params });\n },\n getWhatYouNeed: (params) => {\n return axiosClient.get(`${urlApi.shared.getWhatYouNeed}`, {\n params: {\n ...params,\n lang:\n i18n?.language === \"en-US\" || !i18n?.language ? \"en\" : i18n?.language\n }\n });\n },\n getDashboard: (params) => {\n return axiosClient.get(`${urlApi.shared.getDashboard}`, { params });\n },\n\n getTagBombotStatistic: (params) => {\n return axiosClient.get(`${urlApi.dashboard.getTagBombotStatistic}`, {\n params\n });\n },\n\n getTagFacebookStatistic: (params) => {\n return axiosClient.get(`${urlApi.dashboard.getTagFacebookStatistic}`, {\n params\n });\n },\n\n getMessageStatistic: (params) => {\n return axiosClient.get(`${urlApi.dashboard.getMessageStatistic}`, {\n params\n });\n },\n\n getCampaignStatistic: (params) => {\n return axiosClient.get(`${urlApi.dashboard.getCampaignStatistic}`, {\n params\n });\n },\n\n getScenarioStatistic: (params) => {\n return axiosClient.get(`${urlApi.dashboard.getScenarioStatistic}`, {\n params\n });\n },\n\n getFanpageStatistic: (params) => {\n return axiosClient.get(`${urlApi.dashboard.getFanpageStatistic}`, {\n params\n });\n },\n\n getCustomerStatistic: (params) => {\n return axiosClient.get(`${urlApi.dashboard.getCustomerStatistic}`, {\n params\n });\n },\n\n getGenAIStatistic: (params) => {\n return axiosClient.get(`${urlApi.dashboard.getGenAIStatistic}`, {\n params\n });\n }\n};\n\nexport default homeApi\n","export default {\n LOGIN: \"/dang-nhap\",\n HOME: \"/trang-chu\",\n FANPAGE: \"/quan-ly-fan-page\",\n CUSTOMER: \"/quan-ly-khach-hang\",\n SCENARIO: \"/quan-ly-kich-ban\",\n CAMPAIGN: \"/quan-ly-chien-dich\",\n TAG: \"/quan-ly-tag\",\n SETTING_ACCOUNT: \"/quan-ly-tai-khoan\",\n SYNCHRONIZE: \"/dong-bo\",\n INVITE: \"/invite-code\",\n NOTI_PERMISSION: \"/noti-permisson\"\n};\n","import { pathKeys } from \"../../constants\";\nexport default {\n appReducer: {\n user: {},\n loading: false,\n },\n loginReducer: {\n account: {},\n statusLogined: null,\n forgotPassword: null,\n },\n homeReducer: {\n verifyNumberPhone: false,\n share: [],\n dashboard: {},\n verifyNumberPhoneError: false,\n },\n sidebarReducer: {\n menu: `Tổng quan`,\n dehaze: false\n },\n campaignReducer: {},\n fanpageReducer: {\n fanpageFull: [],\n },\n settingAccountReducer: {\n messageUnlink: \"\",\n whatYouNeed: {},\n changePassword: null,\n inviteCode: {},\n unlink: false,\n messageInviteError: \"\"\n },\n dialogPolicyPointReducer:{\n whatYouNeed: {},\n redeemPoints: {},\n },\n customerReducer: {\n createCustomerSucss: false,\n customerAll: [],\n customer: null,\n detail: {},\n // edit: {},\n selected: {},\n fanpageSelected: {},\n tagFacebookSelectedAll: false,\n selectTagFacebook: {},\n setLoadingImport: false,\n importSuccess: false,\n fanPageDetail: {},\n customerCheck: [],\n messageImport: \"\"\n },\n inviteReducer: {\n confirmInviteCode: null,\n },\n};\n","import { createSlice } from \"@reduxjs/toolkit\";\nimport initialState from \"../../configs/redux/initialState\";\n\nconst homeReducer = createSlice({\n name: \"home\",\n initialState: initialState.homeReducer,\n reducers: {\n verifyNumberPhone: (state, action) => {\n state.verifyNumberPhone = action.payload;\n },\n share: (state, action) => {\n state.share = action.payload;\n },\n dashboard: (state, action) => {\n state.dashboard = action.payload;\n },\n verifyNumberPhoneError: (state, action) => {\n state.verifyNumberPhoneError = action.payload;\n },\n \n }\n});\n\nexport const {\n verifyNumberPhone,\n share,\n dashboard,\n verifyNumberPhoneError\n} = homeReducer.actions;\n\nexport default homeReducer.reducer;\n","import { createSlice } from \"@reduxjs/toolkit\";\nimport initialState from \"../../configs/redux/initialState\";\n\n// IMPORTANT: Note that with @reduxjs/toolkit, you can change state directly.\n\nconst appReducer = createSlice({\n name: \"app\",\n initialState: {\n ...initialState.appReducer,\n share: null,\n },\n reducers: {\n showLoading(state, action) {\n state.loading = true;\n },\n hideLoading(state, action) {\n state.loading = false;\n },\n setUser(state, action) {\n state.user = action.payload;\n },\n setLoading(state, action) {\n state.loading = action.payload;\n },\n setShare(state, action) {\n state.share = action.payload;\n },\n },\n});\n\nexport const { showLoading, hideLoading, setUser, setLoading, setShare } =\n appReducer.actions;\n\nexport default appReducer.reducer;\n","import homeApi from \"../../api/homeApi\";\nimport {\n verifyNumberPhone,\n share,\n dashboard,\n verifyNumberPhoneError,\n} from \"./HomeReducer\";\nimport { setUser, setLoading } from \"../App/AppReducer\";\nimport _ from \"lodash\";\nimport { showError } from \"stores/alert/slice.alert\";\n\nexport function updateUser(data, uid) {\n return (dispatch) => {\n dispatch(setLoading(true));\n return homeApi.updateUser(data, uid).then(\n (res) => {\n dispatch(setUser(res));\n dispatch(setLoading(false));\n return res;\n },\n (error) => {\n dispatch(setLoading(false));\n return error;\n }\n );\n };\n}\n\nexport function onVerifyNumberPhone(verify, data, uid) {\n return (dispatch) => {\n dispatch(setLoading(true));\n return dispatch(\n updateUser(\n {\n ...data,\n verify: true,\n },\n uid\n )\n );\n };\n}\n\nexport function onVerifyNumberPhoneVoice(verify, data, uid) {\n const params = {\n phone: verify.phone,\n otp: verify.otp,\n };\n return (dispatch) => {\n dispatch(setLoading(true));\n return homeApi.verifyNumberPhone(params).then(\n (res) => {\n dispatch(setLoading(false));\n dispatch(verifyNumberPhoneError(false));\n\n dispatch(verifyNumberPhone(true));\n return dispatch(updateUser(data, uid));\n },\n () => {\n dispatch(setLoading(false));\n if (verify.otp) {\n dispatch(verifyNumberPhoneError(true));\n }\n dispatch(verifyNumberPhone(false));\n }\n );\n };\n}\n\nexport function onGetOtp(data) {\n const params = {\n phone: data.phone,\n type: data.type,\n };\n return (dispatch) => {\n dispatch(setLoading(true));\n dispatch(verifyNumberPhoneError(false));\n dispatch(setLoading(false));\n return homeApi.getOTP(params).then(\n (res) => {\n dispatch(setLoading(false));\n },\n (error) => {\n dispatch(showError(error.message));\n dispatch(setLoading(false));\n }\n );\n };\n}\n\nexport function onWhatYouNeed() {\n const params = {\n fields: \"user,users,package,history,version,versions,business,province\",\n };\n return (dispatch) => {\n dispatch(setLoading(true));\n return homeApi.getWhatYouNeed(params).then(\n (res) => {\n dispatch(share(res));\n dispatch(setLoading(false));\n },\n (error) => {\n dispatch(setLoading(false));\n }\n );\n };\n}\n\nexport function onDashboard() {\n return (dispatch) => {\n dispatch(setLoading(true));\n return homeApi.getDashboard().then(\n (res) => {\n dispatch(dashboard(res));\n dispatch(setLoading(false));\n },\n (error) => {\n dispatch(setLoading(false));\n }\n );\n };\n}\n","import React from \"react\";\nimport { makeStyles } from \"@material-ui/core/styles\";\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n display: \"flex\",\n flexDirection: \"column\", \n justifyContent: \"center\",\n alignItems: \"center\",\n height: \"100vh\", \n width: \"100%\",\n backgroundColor: \"rgba(255, 255, 255, 0.8)\", \n position: \"fixed\",\n top: 0,\n left: 0,\n zIndex: 9999 \n },\n logo: {\n width: \"60px\", \n marginBottom: \"20px\" \n },\n progressContainer: {\n maxWidth: \"200px\",\n width: \"100%\", \n height: \"10px\", \n backgroundColor: \"#ccc\", \n borderRadius: \"5px\", \n overflow: \"hidden\" \n },\n progressBar: {\n height: \"100%\", \n width: \"0%\", \n backgroundColor: \"#02A351\", \n animation: \"$loading 2s linear infinite\" \n },\n \"@keyframes loading\": {\n \"0%\": {\n width: \"0%\"\n },\n \"100%\": {\n width: \"100%\" \n }\n }\n}));\n\nconst CommonLoading = (props) => {\n const classes = useStyles();\n\n return (\n
\n \"logo\"\n
\n
\n
\n
\n );\n};\n\nexport default CommonLoading;\n","export default __webpack_public_path__ + \"static/media/logo.86a3af26.png\";","export default __webpack_public_path__ + \"static/media/logo-mini.e9bec0d6.png\";","export default __webpack_public_path__ + \"static/media/loading.8a82d174.svg\";","export default __webpack_public_path__ + \"static/media/favicon.ec700054.ico\";","export default __webpack_public_path__ + \"static/media/gift-box.df3f27c8.png\";","import LOGO from './logo.png';\nimport LOGO_MINI from './logo-mini.png';\nimport LOADING from './loading.svg';\nimport FAVICON from './favicon.ico';\nimport GIFT_BOX from './gift-box.png';\nimport BACKGROUND from \"./background.png\";\nimport BACKGROUND_INTE from \"./background-inte.png\";\nimport BOXMAIL from './boxmail.svg';\nimport CALL from './call.svg';\nimport CHAT from './chat.svg';\nimport CLOSE from './close.svg';\nimport WEV from './web.svg';\nimport FB from './messenger.svg';\n\nexport default {\n BACKGROUND,\n BACKGROUND_INTE,\n LOGO,\n LOADING,\n FAVICON,\n LOGO_MINI,\n GIFT_BOX,\n BOXMAIL,\n CALL,\n CHAT,\n CLOSE,\n WEV,\n FB\n};\n","export default __webpack_public_path__ + \"static/media/background.039298cf.png\";","export default __webpack_public_path__ + \"static/media/background-inte.31a2a365.png\";","export default __webpack_public_path__ + \"static/media/boxmail.21822a3e.svg\";","export default __webpack_public_path__ + \"static/media/call.88771016.svg\";","export default __webpack_public_path__ + \"static/media/chat.4dbb4651.svg\";","export default __webpack_public_path__ + \"static/media/close.4bcb9a0b.svg\";","export default __webpack_public_path__ + \"static/media/web.16f2eb8e.svg\";","export default __webpack_public_path__ + \"static/media/messenger.19626b2f.svg\";","import React from \"react\";\nimport _ from \"lodash\";\nimport PropTypes from \"prop-types\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport Button from \"@material-ui/core/Button\";\nimport cn from \"classnames\";\nimport IMAGES from \"../images\";\nconst useStyles = makeStyles((theme) => ({\n wrapperLoading: {\n width: \"100%\",\n height: \"100%\",\n position: 'fixed',\n left: '0px',\n top: '0px',\n background: 'rgba(0,0,0,.2)',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n zIndex: '9999',\n },\n}));\n\nexport default function Loading(props) {\n const classes = useStyles();\n\n return (\n
\n \n
\n );\n}\n\nLoading.propTypes = {};\n\nLoading.defaultProps = {};\n","export const selectLoading = (state) => state.loading.loading\n","// @flow\nimport React from 'react'\nimport styled from 'styled-components'\n\ntype JustifyValues =\n | 'center'\n | 'space-around'\n | 'space-between'\n | 'flex-start'\n | 'flex-end'\n\ntype AlignValues = 'stretch' | 'center' | 'baseline' | 'flex-start' | 'flex-end'\n\ntype FlexWrapValues = 'nowrap' | 'wrap' | 'wrap-reverse' | 'unset'\n\ntype Props = {\n column?: ?boolean,\n align?: AlignValues,\n justify?: JustifyValues,\n auto?: ?boolean,\n className?: string,\n children?: React$Element<*>,\n flexWrap: FlexWrapValues,\n}\n\nconst Flex = (props: Props) => {\n const { children, ...restProps } = props\n return {children}\n}\n\nconst Container = styled.div`\n display: flex;\n flex: ${({ auto }) => (auto ? '1 1 auto' : 'initial')};\n flex-direction: ${({ column }) => (column ? 'column' : 'row')};\n align-items: ${({ align }) => align};\n justify-content: ${({ justify }) => justify};\n flex-wrap: ${({ flexWrap }) => flexWrap};\n`\n\nContainer.defaultProps = {\n gap: 0,\n flexWrap: 'nowrap',\n justify: 'flex-start',\n align: 'flex-start',\n}\n\nexport default Flex\n","import React from \"react\";\nimport _ from \"lodash\";\nimport PropTypes from \"prop-types\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport Button from \"@material-ui/core/Button\";\nimport cn from \"classnames\";\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n fontSize: 15,\n height: 40,\n display: \"flex\", // Sử dụng flex để căn chỉnh các phần tử\n alignItems: \"center\", // Căn giữa icon và title theo chiều dọc\n justifyContent: \"center\" // Căn giữa theo chiều ngang nếu cần\n },\n disabled: {\n background: \"#BDBDBD !important\"\n }\n}));\n\nexport default function ButtonComponent(props) {\n const {\n title,\n backgroundColor,\n color,\n className,\n icon,\n handleClickButton,\n times,\n disabled,\n size,\n ...rest\n } = props;\n const classes = useStyles();\n\n return (\n \n {icon && {icon}}{\" \"}\n {title}\n {_.isNumber(times) && ({times})}\n \n );\n}\n\nButtonComponent.propTypes = {\n times: PropTypes.number,\n disabled: PropTypes.bool,\n icon: PropTypes.node // Thêm prop icon\n};\n\nButtonComponent.defaultProps = {\n times: null,\n disabled: false,\n icon: null // Mặc định không có icon\n};\n","export default {\n STATUS: {\n PENDING: \"pending\",\n RUNNING: \"running\",\n DONE: \"done\",\n CANCEL: \"cancel\"\n },\n PAGINATION: {\n PAGE: 0,\n SIZE: 10\n },\n URL: {\n TUTORIAL: \"https://hotro.bombot.vn/\",\n FACEBOOK: \"https://www.facebook.com/?ref=bombot\",\n EXTENSION: \"https://bombot.short.gy/bombot-extension\"\n },\n PACKAGE: {\n TRIAL: \"trial\"\n },\n ACTIONS: {\n DETAIL: \"DETAIL\",\n EDIT: \"EDIT\",\n FILTER: \"FILTER\"\n },\n OTP: {\n SEC: \"60\"\n },\n GENDER: {\n MALE: \"MALE\",\n FEMALE: \"FEMALE\"\n },\n MENU: {\n HOME: {\n NAME: \"menu.overall\",\n LINK: \"/trang-chu\"\n },\n CUSTOMER: {\n NAME: \"menu.customer\",\n LINK: \"/quan-ly-khach-hang\"\n },\n FANPAGE: {\n NAME: \"menu.fanpage\",\n LINK: \"/quan-ly-fan-page\"\n },\n CAMPAGIGN: {\n NAME: \"menu.campaign\",\n LINK: \"/quan-ly-chien-dich\"\n },\n TAG: {\n NAME: \"menu.tag\",\n LINK: \"/quan-ly-tag\"\n },\n SCENARIO: {\n NAME: \"menu.scenario\",\n LINK: \"/quan-ly-kich-ban\"\n },\n SETTING_ACCOUNT: {\n NAME: \"menu.account\",\n LINK: \"/quan-ly-tai-khoan\"\n },\n SYNCHRONIZE: {\n NAME: \"menu.synchronize\",\n LINK: \"/dong-bo\"\n }\n }\n};\n","import List from '@material-ui/core/List'\nimport ListItem from '@material-ui/core/ListItem'\nimport ListItemIcon from '@material-ui/core/ListItemIcon'\nimport ListItemText from '@material-ui/core/ListItemText'\nimport { makeStyles } from '@material-ui/core/styles'\nimport AddAlertIcon from '@material-ui/icons/AddAlert'\nimport DehazeIcon from '@material-ui/icons/Dehaze'\nimport ForumIcon from '@material-ui/icons/Forum'\nimport GetAppIcon from '@material-ui/icons/GetApp'\nimport cn from 'classnames'\nimport Flex from 'components/Flex'\nimport { CalendarIcon, DownloadIcon, Flag, Gauge, Monitor, Tags, UserIcon } from 'lucide-react'\nimport React, { useEffect } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { useHistory } from 'react-router-dom'\nimport ButtonComponent from '../../components/Button'\nimport types from '../../constants/types'\nimport IMAGES from '../../images'\n\nconst useStyles = makeStyles({\n root: {\n width: 250,\n },\n list: {\n height: '100%',\n position: 'relative',\n overflow: 'hidden',\n },\n listDehaze: {\n height: '100%',\n position: 'relative',\n overflowX: 'hidden',\n },\n fullList: {\n width: 'auto',\n },\n logoDehaze: {\n textAlign: 'right',\n '& img': {\n width: 'auto',\n display: 'inline-block',\n margin: '45px auto 30px',\n position: 'relative',\n right: 8,\n },\n },\n logo: {\n textAlign: 'center',\n '& img': {\n width: '50%',\n display: 'inline-block',\n margin: '30px auto',\n },\n },\n text: {\n '& span': {\n fontSize: 15,\n },\n },\n button: {\n margin: '5px 0px',\n display: 'inline-block',\n width: 'calc(100% - 30px)',\n },\n bottom: {\n textAlign: 'center',\n position: 'absolute',\n bottom: '0px',\n },\n wrapperSidebar: {\n width: 250,\n },\n active: {\n background: '#05AE34',\n color: 'white',\n '& .MuiListItemIcon-root': {\n color: 'white',\n },\n },\n dehazeIcon: {\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n paddingLeft: 12,\n paddingRight: 12,\n '&:hover': {\n cursor: 'pointer',\n },\n },\n dehazeIconDehaze: {\n top: '50%',\n left: '75px',\n position: 'fixed',\n transform: 'translateY(-50%)',\n '&:hover': {\n cursor: 'pointer',\n },\n },\n logoIconDehaze: {\n display: 'none',\n },\n dehazeList: {\n display: 'none',\n },\n container: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: '10px',\n },\n})\n\nexport default function TemporaryDrawer(props) {\n const classes = useStyles()\n const history = useHistory()\n const { t } = useTranslation()\n const { onMenu, getMenu, onDehaze, dehaze } = props\n const [state, setState] = React.useState({\n top: false,\n left: true,\n bottom: false,\n right: false,\n })\n const [activeMenu, setActiveMenu] = React.useState(null)\n const toggleDrawer = (anchor, open) => (event) => {\n if (\n event.type === 'keydown' &&\n (event.key === 'Tab' || event.key === 'Shift')\n ) {\n return\n }\n\n setState({ ...state, [anchor]: open })\n }\n const menu = [\n {\n name: t(types.MENU.HOME.NAME),\n icon: ,\n link: types.MENU.HOME.LINK,\n id: 'overview',\n },\n {\n name: t(types.MENU.FANPAGE.NAME),\n icon: ,\n id: 'fanpage_manager',\n link: types.MENU.FANPAGE.LINK,\n },\n {\n name: t(types.MENU.CUSTOMER.NAME),\n icon: ,\n id: 'customer_manager',\n link: types.MENU.CUSTOMER.LINK,\n },\n {\n name: t(types.MENU.TAG.NAME),\n icon: ,\n id: 'tag_manager',\n link: types.MENU.TAG.LINK,\n },\n {\n name: t(types.MENU.CAMPAGIGN.NAME),\n icon: ,\n id: 'campaign_manager',\n link: types.MENU.CAMPAGIGN.LINK,\n },\n {\n name: t(types.MENU.SCENARIO.NAME),\n icon: ,\n id: 'scenario_manager',\n link: types.MENU.SCENARIO.LINK,\n },\n ]\n\n useEffect(() => {\n const url_string = window.location.href //window.location.href\n const url = new URL(url_string)\n const pathname = url.pathname\n setActiveMenu(pathname)\n }, [])\n\n const handleMenu = (item) => {\n history.push(item.link)\n // onMenu(item.link);\n }\n\n const handleClickTutorial = (url) => {\n window.open(url, '_blank')\n }\n const handleClickExtension = (url) => {\n window.open(url, '_blank')\n }\n\n // link tu quantri sang ext\n const handleSubmitOpenExtension = () => {\n window.open(\n types.URL.FACEBOOK + `&token=${localStorage.getItem('token') || null}`,\n '_blank'\n )\n }\n\n const handleDehazeIcon = () => {\n onDehaze(!dehaze)\n }\n\n const list = () => (\n <>\n
\n
\n
\n
\n \n \n \n
\n
\n handleDehazeIcon()}>\n \n \n
\n
\n
\n\n \n {menu.map((item, index) => (\n handleMenu(item)}\n >\n \n {item.icon}\n \n \n \n ))}\n \n
\n \n handleSubmitOpenExtension()}\n />\n handleClickTutorial(types.URL.TUTORIAL)}\n />\n }\n handleClickButton={() =>\n handleClickExtension(types.URL.EXTENSION)\n }\n />\n \n
\n
\n\n {dehaze && (\n
\n handleDehazeIcon()}\n >\n \n \n
\n \n \n \n
\n\n \n {menu.map((item, index) => (\n handleMenu(item)}\n >\n {item.icon}\n \n ))}\n \n
\n \n handleSubmitOpenExtension()}\n >\n {}\n \n\n handleClickTutorial(types.URL.TUTORIAL)}\n >\n {}\n \n\n handleClickExtension(types.URL.EXTENSION)}\n >\n {}\n \n \n
\n
\n )}\n \n );\n\n // const listDehaze = () => (\n\n // );\n\n return (\n //
\n // {[\"left\", \"right\", \"top\", \"bottom\"].map((anchor) => (\n // \n // \n // {/* */}\n // \n // {list(anchor)}\n // \n // \n // ))}\n //
\n list()\n )\n}\n","import { createSlice } from \"@reduxjs/toolkit\";\nimport initialState from \"../../configs/redux/initialState\";\n\nconst sidebarReducer = createSlice({\n name: \"sidebar\",\n initialState: initialState.sidebarReducer,\n reducers: {\n setMenu: (state, action) => {\n state.menu = action.payload;\n },\n setDehaze: (state, action) => {\n state.dehaze = action.payload;\n },\n \n }\n});\n\nexport const {\n setMenu,\n setDehaze\n} = sidebarReducer.actions;\n\nexport default sidebarReducer.reducer;\n","\n// import { history } from \"../../configs/history\";\nimport {\n setMenu,\n setDehaze\n} from \"./SidebarReducer\";\n\nexport function menu(menu) {\n return dispatch => {\n return dispatch(setMenu(menu));\n \n };\n}\nexport function onDehaze(value) {\n return dispatch => {\n return dispatch(setDehaze(value));\n \n };\n}\n","import { createSelector } from \"@reduxjs/toolkit\";\nexport const menu = state => state.sidebarReducer.menu;\nexport const dehaze = state => state.sidebarReducer.dehaze;\n\nexport const getMenu = createSelector(\n [menu],\n (menu) => {\n return menu;\n }\n);\n","import SidebarPage from \"./SidebarContainer\";\n\nexport default SidebarPage;\n","import { connect } from \"react-redux\";\nimport { withRouter } from 'react-router-dom';\nimport SidebarView from \"./SidebarView\";\nimport * as actionsSidebar from \"./SidebarActions\";\nimport * as selectorsSidebar from \"./SidebarSelectors\";\nconst mapStateToProps = state => {\n return {\n getMenu: selectorsSidebar.getMenu(state),\n dehaze: selectorsSidebar.dehaze(state),\n };\n};\n\nconst mapDispatchToProps = dispatch => ({\n onMenu: (data) => dispatch(actionsSidebar.menu(data)),\n onDehaze: (value) => dispatch(actionsSidebar.onDehaze(value)),\n});\n\nexport default withRouter(connect(mapStateToProps, mapDispatchToProps)(SidebarView));\n","import React from 'react'\nimport { makeStyles } from '@material-ui/core/styles'\nimport Dialog from '@material-ui/core/Dialog'\nimport CloseIcon from '@material-ui/icons/Close'\n\nconst useStyles = makeStyles((theme) => ({\n form: {\n display: 'flex',\n flexDirection: 'column',\n margin: 'auto',\n width: 'fit-content',\n },\n formControl: {\n marginTop: theme.spacing(2),\n minWidth: 120,\n },\n formControlLabel: {\n marginTop: theme.spacing(1),\n },\n close: {\n position: 'absolute',\n top: 15,\n right: 15,\n '&:hover': {\n cursor: 'pointer',\n },\n },\n}))\n\nexport default function CustomizedDialogs(props) {\n const {\n isOpen,\n handleClose,\n children,\n transitionDelay,\n width,\n withoutHeader,\n ...rest\n } = props\n const classes = useStyles()\n return (\n \n {handleClose && !withoutHeader && (\n \n )}\n \n {children}\n
\n \n )\n}\n","import { createSelector } from \"@reduxjs/toolkit\";\n\nexport const selectConfig = (state) => state.configs;\n\nexport const selectGuideList = createSelector(\n selectConfig,\n (state) => state.guides\n);\n\nexport const selectGuideListByKey = (key) =>\n createSelector(selectGuideList, (state) => (state ? state[key] : null));\n\nexport const selectLoading = createSelector(\n selectConfig,\n (state) => state.loading\n);\nexport const selectCountries = createSelector(\n selectConfig,\n (state) => state.countries\n);\n\nexport const selectCountriesOnly = createSelector(selectConfig, (state) =>\n state.countries.map((e) => e.countryName)\n);\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { makeStyles } from '@material-ui/core/styles'\nimport {\n HourglassEmpty,\n PlayCircleFilled,\n PauseCircleFilled,\n CheckCircle,\n} from '@material-ui/icons'\n\n// Styles\nconst useStyles = makeStyles((theme) => ({\n base: {\n padding: theme.spacing(1.5), // Padding mặc định\n borderRadius: '4px',\n margin: theme.spacing(1, 0),\n display: 'flex',\n alignItems: 'center',\n },\n pending: {\n color: 'blue',\n backgroundColor: 'rgba(33, 150, 243, 0.2)', // Xanh dương nhạt\n },\n running: {\n color: 'teal',\n backgroundColor: 'rgba(0, 128, 128, 0.2)', // Màu xanh ngọc nhạt\n },\n cancel: {\n color: 'orange',\n backgroundColor: 'rgba(255, 152, 0, 0.2)', // Cam nhạt\n },\n done: {\n color: 'darkgreen',\n backgroundColor: 'rgba(34, 139, 34, 0.2)', // Xanh lá đậm nhạt\n },\n small: {\n padding: theme.spacing(1), // Padding nhỏ\n fontSize: '12px !important',\n '& $icon': {\n fontSize: '16px !important',\n },\n },\n medium: {\n padding: '8px 12px', // Padding vừa\n fontSize: '14px !important',\n '& $icon': {\n fontSize: '20px !important',\n },\n },\n large: {\n padding: theme.spacing(2), // Padding lớn\n fontSize: '16px !important',\n '& $icon': {\n fontSize: '24px !important',\n },\n },\n icon: {\n marginRight: theme.spacing(1),\n },\n textsmall: {\n fontSize: '12px !important',\n },\n textmedium: {\n fontSize: '14px !important',\n },\n textlarge: {\n fontSize: '16px !important',\n },\n}))\n\n// Component\nconst CampaignStatusLabel = ({ message, type, size = 'medium', ...res }) => {\n const classes = useStyles()\n\n // Map trạng thái sang class\n let statusClass\n let IconComponent\n\n if (type === 'pending' || type === 'init') {\n statusClass = classes.pending\n IconComponent = HourglassEmpty\n } else if (type === 'running') {\n statusClass = classes.running\n IconComponent = PlayCircleFilled\n } else if (type === 'cancel' || type === 'paused') {\n statusClass = classes.cancel\n IconComponent = PauseCircleFilled\n } else if (type === 'done') {\n statusClass = classes.done\n IconComponent = CheckCircle\n }\n\n // Kết hợp class của kích thước\n const sizeClass = classes[size] || classes.medium\n\n let textStatusClass = classes[`text${size}`]\n\n return IconComponent ? (\n \n \n

{message}

\n \n ) : null\n}\n\n// PropTypes\nCampaignStatusLabel.propTypes = {\n message: PropTypes.string.isRequired,\n type: PropTypes.oneOf(['pending', 'running', 'cancel', 'done']).isRequired,\n size: PropTypes.oneOf(['small', 'medium', 'large']),\n}\n\nCampaignStatusLabel.defaultProps = {\n size: 'medium',\n}\n\n// Export trạng thái\nexport const campaignStatusDir = {\n pending: 'Initial',\n running: 'Running',\n cancel: 'Paused',\n done: 'Completed',\n}\n\nexport default CampaignStatusLabel\n","import { Button, IconButton, TextField, Tooltip } from \"@material-ui/core\";\nimport InputAdornment from \"@material-ui/core/InputAdornment\";\nimport Paper from \"@material-ui/core/Paper\";\nimport { makeStyles, styled } from \"@material-ui/core/styles\";\nimport Table from \"@material-ui/core/Table\";\nimport TableBody from \"@material-ui/core/TableBody\";\nimport TableCell from \"@material-ui/core/TableCell\";\nimport TableContainer from \"@material-ui/core/TableContainer\";\nimport TableHead from \"@material-ui/core/TableHead\";\nimport TablePagination from \"@material-ui/core/TablePagination\";\nimport TableRow from \"@material-ui/core/TableRow\";\nimport TableSortLabel from \"@material-ui/core/TableSortLabel\";\nimport { CheckOutlined, SortRounded } from \"@material-ui/icons\";\nimport ClearIcon from \"@material-ui/icons/Clear\";\nimport SearchIcon from \"@material-ui/icons/Search\";\nimport Pagination from \"@material-ui/lab/Pagination\";\nimport cn from \"classnames\";\nimport Flex from \"components/Flex\";\nimport { ChevronDown, FilterIcon } from \"lucide-react\";\nimport moment from \"moment\";\nimport PropTypes from \"prop-types\";\nimport { useCallback, useEffect, useRef, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useHistory } from \"react-router-dom/cjs/react-router-dom.min\";\nimport CampaignStatusLabel from \"views/Scenario/components/CampaignStatusLabel\";\nimport types from \"../constants/types\";\nimport ButtonComponent from \"./Button\";\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n width: \"100%\"\n },\n paper: {\n width: \"100%\",\n // marginBottom: theme.spacing(2),\n boxShadow: \"0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24)\",\n borderRadius: \"0px\",\n overflow: \"hidden\",\n border: \"1px solid rgb(222, 225, 230)\"\n },\n table: {\n minWidth: \"100%\"\n },\n tableHead: {\n backgroundColor: \"#F4F4F4FF\"\n },\n tableHeadCell: {\n fontWeight: \"bold\"\n },\n tableCell: {\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n padding: \"12px 16px\",\n minWidth: \"150px\"\n },\n ordNumberCell: {\n width: \"80px\",\n minWidth: \"80px\"\n },\n idCell: {\n width: \"180px\",\n minWidth: \"180px\"\n },\n nameCell: {\n width: \"250px\",\n minWidth: \"250px\"\n },\n pageNameCell: {\n width: \"200px\",\n minWidth: \"200px\"\n },\n creatorCell: {\n width: \"180px\",\n minWidth: \"180px\"\n },\n dateTimeCell: {\n width: \"160px\",\n minWidth: \"160px\"\n },\n statusCell: {\n width: \"140px\",\n minWidth: \"140px\",\n \"& span\": {\n padding: \"6px 12px\",\n borderRadius: \"4px\",\n fontWeight: \"500\",\n display: \"inline-block\",\n width: \"100%\",\n textAlign: \"center\"\n }\n },\n numberCell: {\n width: \"120px\",\n minWidth: \"120px\"\n },\n copyButton: {\n padding: 4,\n \"&:hover\": {\n backgroundColor: \"rgba(0, 0, 0, 0.04)\"\n }\n },\n wrapperSearch: {\n width: 500,\n marginBottom: theme.spacing(2)\n },\n noData: {\n color: \"rgba(0,0,0,.5)\",\n fontWeight: \"bold\",\n textAlign: \"center\",\n padding: theme.spacing(3)\n },\n clickableRow: {\n cursor: \"pointer\",\n \"&:hover\": {\n backgroundColor: \"rgba(0, 0, 0, 0.04)\"\n }\n },\n actionCell: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n borderLeft: \"0.2px solid rgb(246, 239, 239)\",\n backgroundColor: \"#fafafa\",\n position: \"sticky\",\n right: 0,\n top: 0,\n zIndex: 1\n },\n actionButton: {\n background: \"none\",\n padding: 0,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n color: \"rgb(0, 123, 255)\",\n fontWeight: 600,\n transition: \"all 0.3s ease\",\n \"&:hover\": {\n backgroundColor: \"rgba(33, 150, 243, 0.2)\"\n }\n },\n actionBtnDetail: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n padding: \"6px 10px\",\n borderRadius: \"8px\"\n },\n actionTitle: {\n margin: 0,\n fontSize: \"10px !important\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\"\n },\n buttonSearch: {\n backgroundColor: \"#05AE34\",\n color: \"white\",\n padding: \"6px 16px\",\n \"&:hover\": {\n backgroundColor: \"#048A2D\"\n }\n },\n textField: {\n backgroundColor: \"#ffffff\",\n \"& .MuiOutlinedInput-root\": {}\n },\n p0: {\n padding: \"0\",\n margin: \"0\"\n },\n witdhOrd: {\n minWidth: \"140px\",\n padding: \"0 8px !important\"\n },\n f600: {\n fontWeight: 600\n },\n heightHeader: {\n height: \"52px\"\n },\n rowItem: {\n cursor: \"pointer\"\n }\n}));\n\nconst headCells = [\n {\n id: \"ord_number\",\n numeric: true,\n disablePadding: true,\n label: \"overall.lastest_campaign.ord_number\"\n },\n {\n id: \"id\",\n numeric: true,\n disablePadding: true,\n label: \"overall.lastest_campaign.campaign_id\"\n },\n {\n id: \"name\",\n numeric: true,\n disablePadding: true,\n label: \"overall.lastest_campaign.campaign_name\"\n },\n {\n id: \"fanpage\",\n numeric: true,\n disablePadding: true,\n label: \"overall.lastest_campaign.page_name\"\n },\n {\n id: \"author\",\n numeric: true,\n disablePadding: true,\n label: \"overall.lastest_campaign.creator\"\n },\n {\n id: \"createdAt\",\n numeric: true,\n disablePadding: true,\n label: \"overall.lastest_campaign.create_time\"\n },\n {\n id: \"status\",\n numeric: true,\n disablePadding: true,\n label: \"overall.lastest_campaign.status\"\n },\n {\n id: \"timeStart\",\n numeric: true,\n disablePadding: true,\n label: \"overall.lastest_campaign.start_time\"\n },\n\n {\n id: \"totalScenario\",\n numeric: true,\n disablePadding: true,\n label: \"overall.lastest_campaign.scenario\"\n },\n\n {\n id: \"numberCus\",\n numeric: true,\n disablePadding: true,\n label: \"overall.lastest_campaign.customer\"\n },\n\n {\n id: \"numberCusSuccess\",\n numeric: true,\n disablePadding: true,\n label: \"overall.lastest_campaign.successful_customer\"\n },\n\n {\n id: \"numberCusFailed\",\n numeric: true,\n disablePadding: true,\n label: \"overall.lastest_campaign.failed_customer\"\n },\n\n {\n id: \"numberCusNotSend\",\n numeric: true,\n disablePadding: true,\n label: \"overall.lastest_campaign.pending_customer\"\n },\n\n {\n id: \"totalMess\",\n numeric: true,\n disablePadding: true,\n label: \"overall.lastest_campaign.message\"\n },\n\n {\n id: \"messSuccss\",\n numeric: true,\n disablePadding: true,\n label: \"overall.lastest_campaign.successful_message\"\n },\n {\n id: \"messFail\",\n numeric: true,\n disablePadding: true,\n label: \"overall.lastest_campaign.failed_message\"\n },\n {\n id: \"messNotSend\",\n numeric: true,\n disablePadding: true,\n label: \"overall.lastest_campaign.pending_message\"\n }\n];\n\nfunction EnhancedTableHead(props) {\n const { classes, t } = props;\n\n return (\n \n \n {headCells.map((headCell) => {\n let cellClass = classes.tableCell;\n switch (headCell.id) {\n case \"ord_number\":\n cellClass = cn(classes.tableCell, classes.ordNumberCell);\n break;\n case \"id\":\n cellClass = cn(classes.tableCell, classes.idCell);\n break;\n case \"name\":\n cellClass = cn(classes.tableCell, classes.nameCell);\n break;\n case \"fanpage\":\n cellClass = cn(classes.tableCell, classes.pageNameCell);\n break;\n case \"author\":\n cellClass = cn(classes.tableCell, classes.creatorCell);\n break;\n case \"createdAt\":\n case \"timeStart\":\n cellClass = cn(classes.tableCell, classes.dateTimeCell);\n break;\n case \"status\":\n cellClass = cn(classes.tableCell, classes.statusCell);\n break;\n case \"numberCus\":\n case \"totalMess\":\n case \"messSuccss\":\n case \"messFail\":\n case \"messNotSend\":\n case \"numberCusSuccess\":\n case \"numberCusFailed\":\n case \"numberCusNotSend\":\n case \"totalScenario\":\n cellClass = cn(classes.tableCell, classes.numberCell);\n break;\n default:\n break;\n }\n\n return (\n \n \n {t(headCell.label)}\n \n \n );\n })}\n {/* \n
{t('common.btn.action')}
\n */}\n
\n \n );\n}\n\nconst CellSticky = styled(TableCell)`\n position: sticky;\n background-color: #fff;\n right: 0;\n top: 0;\n z-index: 2;\n box-shadow: -15px 0px 17px -7px #f0eded;\n`;\n\nEnhancedTableHead.propTypes = {\n classes: PropTypes.object.isRequired,\n t: PropTypes.func.isRequired\n};\n\nexport default function ListCampaign(props) {\n const {\n data,\n handleGetCampaign,\n getCampaign,\n isPagination,\n isSearch,\n isShowFilter\n } = props;\n const rows = (data && data.content) || [];\n const classes = useStyles();\n const { t } = useTranslation();\n const history = useHistory();\n\n const dataStatus = [\n { id: 0, name: \"init\", value: t(\"campaign_management.status.init\") },\n { id: 1, name: \"running\", value: t(\"campaign_management.status.running\") },\n { id: 2, name: \"done\", value: t(\"campaign_management.status.done\") },\n { id: 3, name: \"paused\", value: t(\"campaign_management.status.paused\") }\n ];\n\n const [page, setPage] = useState(0);\n const [rowsPerPage, setRowsPerPage] = useState(types.PAGINATION.SIZE);\n const [search, setSearch] = useState(\"\");\n const [copied, setCopied] = useState(false);\n\n const [sortNameOrder, setSortNameOrder] = useState(\"\");\n const [tempSortNameOrder, setTempSortNameOrder] = useState(\"\");\n\n const [sortDateRangeOrder, setSortDateRangeOrder] =\n useState(\"createdAt,desc\");\n const [tempSortDateRangeOrder, setTempSortDateRangeOrder] =\n useState(\"createdAt,desc\");\n\n const [selectedStatus, setSelectedStatus] = useState(\n dataStatus.map((s) => s.name)\n );\n const [tempSelectedStatus, setTempSelectedStatus] = useState(\n dataStatus.map((s) => s.name)\n );\n const [isOpen, setIsOpen] = useState(false);\n\n const [openSortModal, setOpenSortModal] = useState(false);\n const [openFilterModal, setOpenFilterModal] = useState(false);\n const sortModalRef = useRef(null);\n const filterModalRef = useRef(null);\n const filterPopupRef = useRef(null);\n const [startDate, setStartDate] = useState(\"\");\n const [endDate, setEndDate] = useState(\"\");\n\n const [tempStartDate, setTempStartDate] = useState(\"\");\n const [tempEndDate, setTempEndDate] = useState(\"\");\n\n const [searchQuery, setSearchQuery] = useState(\"\");\n\n const handleToggleSortModal = () => {\n setOpenSortModal(!openSortModal);\n };\n\n const handleToggleFilterModal = () => {\n setOpenFilterModal(!openFilterModal);\n };\n\n function useOutsideAlerter(ref, ...handleFuncs) {\n useEffect(() => {\n function handleClickOutside(event) {\n if (ref.current && !ref.current.contains(event.target)) {\n handleFuncs.forEach((func) => func());\n }\n }\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, [ref, handleFuncs]);\n }\n\n useOutsideAlerter(\n filterModalRef,\n () => setOpenFilterModal(false),\n () => setIsOpen(false)\n );\n useOutsideAlerter(sortModalRef, () => setOpenSortModal(false));\n useOutsideAlerter(filterPopupRef, () => setIsOpen(false));\n\n const handleSortName = (order) => {\n setSortNameOrder(order);\n };\n\n const handleSortDateRange = (order) => {\n setSortDateRangeOrder(order);\n };\n\n const handleCopy = useCallback((id) => {\n navigator.clipboard.writeText(id).then(() => {\n setCopied(true);\n setTimeout(() => setCopied(false), 2000);\n });\n }, []);\n\n useEffect(() => {\n handleSubmitApply(search);\n }, []);\n\n useEffect(() => {\n if (openSortModal) {\n setSortNameOrder(tempSortNameOrder);\n setSortDateRangeOrder(tempSortDateRangeOrder);\n }\n }, [openSortModal]);\n\n useEffect(() => {\n if (openFilterModal) {\n setStartDate(tempStartDate);\n setEndDate(tempEndDate);\n setSelectedStatus(tempSelectedStatus);\n }\n }, [openFilterModal]);\n\n const handleChangeRowsPerPage = (event) => {\n const newRowsPerPage = parseInt(event.target.value, 10);\n setRowsPerPage(newRowsPerPage);\n setPage(0);\n handleSubmitApply(search, 0, newRowsPerPage);\n };\n\n const handleChange = (event, value) => {\n setPage(value - 1);\n handleSubmitApply(search, value - 1);\n };\n\n const handleSearch = (event) => {\n setSearch(event.target.value);\n };\n\n const handleSubmitSearch = (search) => {\n handleSubmitApply();\n };\n\n const handleClickFilter = () => {\n handleSubmitApply();\n };\n\n const createParams = (\n selectedStatus,\n startDate,\n endDate,\n sortNameOrder,\n sortDateRangeOrder,\n search,\n page,\n size\n ) => {\n let searchParams = \"\";\n\n if (\n selectedStatus.length > 0 &&\n selectedStatus.length < dataStatus.length\n ) {\n searchParams += `status=in=${selectedStatus.join(\",\")};`;\n }\n\n if (startDate && endDate) {\n searchParams += `createdAt=bw=${startDate},${endDate};`;\n }\n if (search && typeof search === \"string\" && search.trim() !== \"\") {\n searchParams += `name|pageNameText==${search};`;\n }\n\n console.log(\"searchParams ==>\", searchParams);\n\n const sortOptions = [];\n if (sortDateRangeOrder) {\n sortOptions.push(sortDateRangeOrder);\n }\n if (sortNameOrder) {\n sortOptions.push(sortNameOrder);\n }\n\n const sort =\n sortOptions.length > 0 ? sortOptions.join(\";\") : \"createdAt,desc\";\n\n const payload = {\n page: page,\n search: searchParams,\n size: size,\n sort: sort\n };\n\n return payload;\n };\n\n const onViewCampaign = useCallback((campaignId, pageId) => {\n window.open(\n `${types.URL.FACEBOOK}&token=${\n localStorage.getItem(\"token\") || null\n }&campaign=${campaignId}&pageId=${pageId}`,\n \"_blank\"\n );\n }, []);\n\n const onKeyDown = (event) => {\n if (event.key === \"Enter\") {\n handleSubmitApply();\n }\n };\n\n const handleSelect = (status) => {\n if (status === \"all\") {\n if (selectedStatus.length === dataStatus.length) {\n return;\n } else {\n setSelectedStatus(dataStatus.map((s) => s.name));\n }\n } else {\n setSelectedStatus((prev) => {\n if (prev.includes(status)) {\n const newSelected = prev.filter((s) => s !== status);\n if (newSelected.length === 0) {\n return [];\n }\n return newSelected;\n } else {\n const newSelected = [...prev, status];\n if (newSelected.length === dataStatus.length) {\n return newSelected;\n }\n return newSelected;\n }\n });\n }\n };\n\n const handleResetAllSort = () => {\n setSortNameOrder(\"\");\n setSortDateRangeOrder(\"createdAt,desc\");\n handleSubmitApply(\n search,\n 0,\n rowsPerPage,\n startDate,\n endDate,\n selectedStatus,\n \"\",\n \"createdAt,desc\"\n );\n setSortNameOrder(\"\");\n setTempSortNameOrder(\"\");\n setSortDateRangeOrder(\"createdAt,desc\");\n setTempSortDateRangeOrder(\"createdAt,desc\");\n };\n\n const handleResetDateRange = () => {\n setStartDate(\"\");\n setEndDate(\"\");\n };\n\n const handleResetStatus = () => {\n setSelectedStatus(dataStatus.map((status) => status.name));\n };\n\n const handleResetAllFilter = () => {\n setStartDate(\"\");\n setEndDate(\"\");\n setSelectedStatus(dataStatus.map((s) => s.name));\n handleSubmitApply(\n search,\n 0,\n rowsPerPage,\n \"\",\n \"\",\n dataStatus.map((s) => s.name),\n sortNameOrder,\n sortDateRangeOrder\n );\n setTempStartDate(\"\");\n setTempEndDate(\"\");\n setTempSelectedStatus(dataStatus.map((s) => s.name));\n };\n\n const handleSubmitApply = (\n searchVal = search,\n pageVal = page,\n sizeVal = rowsPerPage,\n startdate = startDate,\n enddate = endDate,\n selectedstatus = selectedStatus,\n sortnameorder = sortNameOrder,\n sortdaterangeorder = sortDateRangeOrder\n ) => {\n setTempSortNameOrder(sortNameOrder);\n setTempSortDateRangeOrder(sortDateRangeOrder);\n setTempStartDate(startDate);\n setTempEndDate(endDate);\n setTempSelectedStatus(selectedStatus);\n const params = createParams(\n selectedstatus,\n startdate,\n enddate,\n sortnameorder,\n sortdaterangeorder,\n searchVal,\n pageVal,\n sizeVal\n );\n getCampaign(params);\n setOpenSortModal(false);\n setOpenFilterModal(false);\n };\n\n return (\n <>\n
\n {isSearch && (\n \n \n \n \n ),\n endAdornment: (\n \n {search && (\n {\n setSearch(\"\");\n handleSubmitApply(\"\");\n }}\n size=\"small\"\n >\n \n \n )}\n \n )\n }}\n />\n \n {t(\"common.btn.search\")}\n \n }\n backgroundColor=\"#05AE34\"\n color=\"white\"\n handleClickButton={() => handleSubmitSearch(search)}\n style={{\n minWidth: \"fit-content\",\n padding: \"6px 16px\"\n }}\n />\n \n )}\n\n {isShowFilter && (\n \n \n \n \n

{t(\"common.btn.sort\")}

\n \n }\n backgroundColor=\"#05AE34\"\n color=\"white\"\n handleClickButton={handleToggleSortModal}\n style={{\n minWidth: \"fit-content\",\n padding: \"6px 16px\",\n background: \"#05AE34\"\n }}\n />\n\n {openSortModal && (\n \n

{t(\"campaign_management.name\")}

\n\n {/* name: a-z */}\n
\n \n (e.currentTarget.style.backgroundColor = \"#E1E1E1FF\")\n }\n onMouseLeave={(e) =>\n (e.currentTarget.style.backgroundColor =\n sortNameOrder === \"name,asc\" ? \"#d8fcd2\" : \"#fff\")\n }\n onClick={() => handleSortName(\"name,asc\")}\n className=\"\"\n style={{\n display: \"flex\",\n justifyContent: \"start\",\n alignItems: \"center\",\n width: \"100%\",\n color: \"#333\",\n backgroundColor:\n sortNameOrder === \"name,asc\" ? \"#d8fcd2\" : \"#fff\"\n }}\n >\n \n \n
\n\n
A - Z
\n \n
\n\n {/* name: z-a */}\n
\n \n (e.currentTarget.style.backgroundColor = \"#E1E1E1FF\")\n }\n onMouseLeave={(e) =>\n (e.currentTarget.style.backgroundColor =\n sortNameOrder === \"name,desc\" ? \"#d8fcd2\" : \"#fff\")\n }\n onClick={() => handleSortName(\"name,desc\")}\n style={{\n display: \"flex\",\n justifyContent: \"start\",\n alignItems: \"center\",\n width: \"100%\",\n color: \"#333\",\n backgroundColor:\n sortNameOrder === \"name,desc\" ? \"#d8fcd2\" : \"#fff\"\n }}\n >\n \n \n
\n\n
Z - A
\n \n \n\n \n\n

{t(\"campaign_management.time\")}

\n\n {/* newest-oldest */}\n
\n \n (e.currentTarget.style.backgroundColor = \"#E1E1E1FF\")\n }\n onMouseLeave={(e) =>\n (e.currentTarget.style.backgroundColor =\n sortDateRangeOrder === \"createdAt,desc\"\n ? \"#d8fcd2\"\n : \"#fff\")\n }\n onClick={() => handleSortDateRange(\"createdAt,desc\")}\n className=\"\"\n style={{\n display: \"flex\",\n justifyContent: \"start\",\n alignItems: \"center\",\n width: \"100%\",\n color: \"#333\",\n backgroundColor:\n sortDateRangeOrder === \"createdAt,desc\"\n ? \"#d8fcd2\"\n : \"#fff\"\n }}\n >\n \n \n
\n
\n \n {t(\"campaign_management.newest_oldest\")}\n \n
\n \n \n\n {/* oldest-newest */}\n
\n \n (e.currentTarget.style.backgroundColor = \"#E1E1E1FF\")\n }\n onMouseLeave={(e) =>\n (e.currentTarget.style.backgroundColor =\n sortDateRangeOrder === \"createdAt,asc\"\n ? \"#d8fcd2\"\n : \"#fff\")\n }\n onClick={() => handleSortDateRange(\"createdAt,asc\")}\n className=\"\"\n style={{\n display: \"flex\",\n justifyContent: \"start\",\n alignItems: \"center\",\n width: \"100%\",\n color: \"#333\",\n backgroundColor:\n sortDateRangeOrder === \"createdAt,asc\"\n ? \"#d8fcd2\"\n : \"#fff\"\n }}\n >\n \n \n
\n
\n {\" \"}\n \n {t(\"campaign_management.oldest_newest\")}\n \n
\n \n \n\n \n\n {/* reset va apply ben sort */}\n \n \n {t(\"common.btn.reset\")}\n \n }\n backgroundColor=\"#05AE34\"\n color=\"white\"\n style={{\n minWidth: \"fit-content\",\n padding: \"6px 16px\",\n background: \"#05ae34\"\n }}\n />\n \n {t(\"common.btn.apply\")}\n \n }\n backgroundColor=\"#05AE34\"\n color=\"white\"\n style={{\n minWidth: \"fit-content\",\n padding: \"6px 16px\"\n }}\n />\n \n \n )}\n\n {/* {openSortModal && (\n setOpenSortModal(false)}\n style={{\n // backgroundColor: \"rgba(51, 51, 51, 0.8)\",\n zIndex: 2,\n position: \"fixed\",\n top: 0,\n left: 0,\n right: 0,\n bottom: 0\n }}\n />\n )} */}\n \n\n \n \n \n {\" \"}\n \n {t(\"common.btn.filter\")}\n

\n \n \n }\n backgroundColor=\"#05AE34\"\n color=\"white\"\n handleClickButton={handleToggleFilterModal}\n style={{\n minWidth: \"fit-content\",\n padding: \"6px 16px\",\n background: \"rgb(5, 174, 52)\",\n color: \"white\"\n }}\n />\n\n {openFilterModal && (\n \n \n

{t(\"campaign_management.date_range\")}

\n \n {t(\"common.btn.reset\")}\n

\n \n\n {/* chon ngay */}\n \n setStartDate(e.target.value)}\n style={{\n cursor: \"pointer\",\n flex: 1,\n marginRight: \"8px\",\n padding: \"8px\",\n borderRadius: \"4px\",\n border: \"1px solid #C1C1C1FF\"\n }}\n />\n setEndDate(e.target.value)}\n style={{\n cursor: \"pointer\",\n flex: 1,\n marginLeft: \"8px\",\n padding: \"8px\",\n borderRadius: \"4px\",\n border: \"1px solid #C1C1C1FF\"\n }}\n />\n \n\n {/* duong line */}\n \n\n {/* status */}\n \n

{t(\"campaign_management.status.title\")}

\n \n {t(\"common.btn.reset\")}\n

\n \n\n {/* select status */}\n {/*
*/}\n setIsOpen(true)}\n >\n {isOpen && (\n \n
\n {/* Checkbox for \"All\" option */}\n handleSelect(\"all\")}\n >\n \n {selectedStatus.length === dataStatus.length && (\n \n )}\n
\n {t(\"campaign_management.status.all\")}\n
\n\n {dataStatus.map((status) => (\n handleSelect(status.name)}\n >\n \n {selectedStatus.includes(status.name) && (\n \n )}\n \n {status.value}\n \n ))}\n \n \n )}\n \n \n {selectedStatus.length === 0\n ? t(\"common.btn.choose_status\")\n : selectedStatus.length < dataStatus.length\n ? selectedStatus\n .map((status) =>\n t(`campaign_management.status.${status}`)\n )\n .join(\", \")\n : t(\"campaign_management.status.all\")}\n \n\n \n \n \n {/* */}\n\n \n\n {/* reset va apply all o filter */}\n \n \n {t(\"common.btn.reset_all\")}\n \n }\n backgroundColor=\"#05AE34\"\n color=\"white\"\n style={{\n minWidth: \"fit-content\",\n padding: \"6px 16px\",\n background: \"#05ae34\"\n }}\n />\n \n {t(\"common.btn.apply\")}\n \n }\n backgroundColor=\"#05AE34\"\n color=\"white\"\n style={{\n minWidth: \"fit-content\",\n padding: \"6px 16px\"\n }}\n />\n \n \n )}\n\n {/* {openFilterModal && (\n setOpenFilterModal(false)}\n style={{\n // backgroundColor: \"rgba(51, 51, 51, 0.8)\",\n zIndex: 2,\n position: \"fixed\",\n top: 0,\n left: 0,\n right: 0,\n bottom: 0\n }}\n />\n )} */}\n \n \n )}\n\n \n 0 ? \"calc(100vh - 350px)\" : \"52px\",\n overflowY: rows.length > 0 ? \"auto\" : \"hidden\"\n }}\n >\n \n \n \n {rows.map((row, index) => {\n if (row.totalCus === 0) return null;\n return (\n onViewCampaign(row.id, row.pageId)}\n className={[classes.heightHeader, classes.rowItem]}\n >\n \n {data?.number * rowsPerPage + index + 1}\n \n \n \n {row.id}\n \n {\n e.stopPropagation();\n handleCopy(row.id);\n }}\n size=\"small\"\n >\n \n \n \n \n \n \n {row.name}\n \n \n {row.pageName}\n \n \n {row.userFullName}\n \n \n {moment(row.createdAt).format(\"DD/MM/YYYY HH:mm\")}\n \n \n \n \n \n {/* \n {t(`campaign_management.status.${row.status}`) ||\n row.status}\n */}\n \n \n {moment(row.beginTime).isValid()\n ? moment(row.beginTime).format(\"DD/MM/YYYY HH:mm\")\n : \"\"}\n \n\n \n {row.totalScenario}\n \n\n \n {row.totalCus}\n \n\n \n {row.totalCustomersDone}\n \n\n \n {row.totalCustomersError}\n \n\n \n {row.totalCustomersNotSend}\n \n\n \n {row.totalMes}\n \n \n {row.totalSuccess}\n \n \n {row.totalFail}\n \n\n \n {row.totalNotSend}\n \n\n {/* {\n e.stopPropagation(); // Prevent event bubbling\n onViewScenario(row.id); // Call the function when the cell is clicked\n }}\n >\n \n {\n e.stopPropagation(); // Prevent event bubbling\n onViewScenario(row.id); // Call the function when the button is clicked\n }}\n >\n
\n

\n {t(\"campaign_management.scenario.name\")}\n

\n
\n \n
\n */}\n \n );\n })}\n
\n \n \n {rows?.length === 0 && (\n \n \n {t(\"update.no_data\")}\n

\n \n )}\n
\n {isPagination && rows.length > 0 && (\n \n \n \n \n )}\n \n \n );\n}\n\nListCampaign.propTypes = {\n data: PropTypes.object,\n search: PropTypes.string,\n isSearch: PropTypes.bool,\n isPagination: PropTypes.bool,\n getCampaign: PropTypes.func,\n handleGetCampaign: PropTypes.func\n};\n\nListCampaign.defaultProps = {\n isPagination: true,\n isSearch: true,\n handleGetCampaign: () => {},\n getCampaign: () => {},\n data: {},\n search: null\n};\n","import {\n FormControl,\n Tooltip,\n IconButton,\n makeStyles,\n} from \"@material-ui/core\";\nimport Flex from \"components/Flex\";\nimport React, { useCallback, useEffect, useState } from \"react\";\nimport OtpInput from \"react-otp-input\";\nimport FormDialog from \"../../../../components/FormDialog\";\nimport ArrowBackIcon from \"@material-ui/icons/ArrowBack\";\nimport styles from \"../../styles.module.scss\";\nimport firebase from \"firebase\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport ButtonLoading from \"components/ButtonLoading\";\nimport { Skeleton } from \"@material-ui/lab\";\nimport { verifyNumberPhoneError } from \"views/Home/HomeReducer\";\nimport { selectErrorVerifyPhone } from \"views/Home/HomeSelectors\";\nimport homeApi from \"api/homeApi\";\nimport { setLoading } from \"views/App/AppReducer\";\nimport { showError } from \"stores/alert/slice.alert\";\nimport smsExample from \"../../../../assets/images/code.jpg\";\nimport { useTranslation } from \"react-i18next\";\n\nconst useStyles = makeStyles((theme) => ({\n account: {\n display: \"flex\",\n alignItems: \"center\",\n background: \"#f0f0f0\",\n padding: 15,\n },\n right: {\n marginLeft: 15,\n },\n wrapAccount: {\n padding: 15,\n },\n form: {\n width: \"100%\",\n },\n number: {\n fontWeight: \"bold\",\n },\n errorCode: {\n margin: \"10px 0px 0px 10px\",\n fontSize: \"14px\",\n color: \"red\",\n textAlign: \"center\",\n },\n}));\n\nlet appVerifier,\n interval,\n secondRef = 60;\n\nconst DialogVerifyPhone = ({\n phone,\n handleBackVerify,\n handleVerify,\n handleVerifyOtpVoice,\n}) => {\n const classes = useStyles();\n const dispatch = useDispatch();\n const [isShowInputVerify, setIsShowInputVerify] = useState(false);\n const [code, setCode] = useState(\"\");\n const [loadingVerify, setLoadingVerify] = useState(false);\n const [loadingCaptcha, setLoadingCaptcha] = useState(true);\n const [seconds, setSeconds] = useState(60);\n const [captchaArea, setCaptchaArea] = useState(null);\n const errorVerify = useSelector(selectErrorVerifyPhone);\n const [typeReceive, setTypeReceive] = useState(1);\n const { i18n, t } = useTranslation();\n\n const onRefChange = useCallback((node) => {\n setCaptchaArea(node);\n }, []);\n useEffect(() => {\n if (captchaArea) {\n appVerifier = new firebase.auth.RecaptchaVerifier(captchaArea, {\n size: 200,\n callback: () => {\n onSignInSubmit();\n },\n });\n appVerifier.render().then(() => {\n setLoadingCaptcha(false);\n });\n }\n }, [captchaArea]);\n\n const onSignInSubmit = () => {\n receiveCode();\n };\n\n const receiveCode = () => {\n setErrorVerify(false);\n firebase\n .auth()\n .signInWithPhoneNumber(phone, appVerifier)\n .then((confirmationResult) => {\n console.log('receiveCode confirmationResult', confirmationResult);\n window.confirmationResult = confirmationResult;\n\n interval = setInterval(() => {\n if (secondRef > 0) {\n setSeconds((old) => old - 1);\n secondRef -= 1;\n } else {\n clearInterval(interval);\n }\n }, 1000);\n setIsShowInputVerify(true);\n })\n .catch((err) => {\n console.log('receiveCode err', err);\n dispatch(showError(err.message));\n });\n };\n\n const onConfirm = () => {\n setErrorVerify(false);\n if (typeReceive === 1) {\n setLoadingVerify(true);\n window.confirmationResult\n .confirm(code)\n .then(() => {\n handleVerify(code);\n })\n .catch((error) => {\n console.log(error);\n setErrorVerify(true);\n })\n .then(() => {\n setLoadingVerify(false);\n });\n } else {\n handleVerifyOtpVoice(code);\n }\n };\n\n const resetCount = () => {\n if (interval) clearInterval(interval);\n setSeconds(60);\n secondRef = 60;\n };\n\n const resendCode = () => {\n if (seconds > 0) return;\n setCode(\"\");\n setTypeReceive(1);\n resetCount();\n setLoadingCaptcha(true);\n setIsShowInputVerify(false);\n };\n\n const handleCodeResquestVoice = async () => {\n // if (seconds > 0) return;\n setCode(\"\");\n setTypeReceive(2);\n const params = { phone: phone, type: 2 };\n try {\n dispatch(setLoading(true));\n await homeApi.getOTP(params);\n dispatch(setLoading(false));\n resetCount();\n\n interval = setInterval(() => {\n if (secondRef > 0) {\n setSeconds((old) => old - 1);\n secondRef -= 1;\n } else {\n clearInterval(interval);\n }\n }, 1000);\n } catch (error) {\n dispatch(showError(error.message));\n dispatch(setLoading(false));\n }\n };\n\n const setErrorVerify = (isError) => {\n dispatch(verifyNumberPhoneError(isError));\n };\n\n return (\n \n
\n
\n \n handleBackVerify()}\n color=\"secondary\"\n className=\"btn_icon\"\n >\n \n \n \n
\n

{t(\"phone_verification.title\")}

\n\n

\n {t(\"phone_verification.description\")}{\" \"}\n {phone}\n

\n
\n
\n {isShowInputVerify ? (\n \n \n <>\n {typeReceive === 1 && (\n
\n \n

\n {t(\"phone_verification.sample_sms\")}\n

\n
\n )}\n setCode(otp)}\n numInputs={typeReceive === 1 ? 6 : 4}\n separator={-}\n />\n {errorVerify && (\n

{t(\"noti.otp\")}

\n )}\n onConfirm()}\n type=\"button\"\n isLoading={loadingVerify}\n />\n\n

\n {t(\"phone_verification.not_received_otp\")}\n

\n

\n 0 ? \"not-allowed\" : \"pointer\" }}\n onClick={resendCode}\n >\n {t(\"phone_verification.send_again\")} ({seconds}s)\n \n {i18n.language?.substr(0, 2) === \"vi\" && (\n <>\n {t(\"phone_verification.or\")}\n 0 ? \"not-allowed\" : \"pointer\",\n }}\n className={styles.resend}\n onClick={() => handleCodeResquestVoice()}\n >\n {t(\"phone_verification.send_code_via_call\")} ({seconds}\n s)\n \n \n )}\n

\n \n
\n
\n ) : (\n \n {loadingCaptcha && (\n \n )}\n
\n
\n )}\n
\n
\n );\n};\n\nexport default DialogVerifyPhone;\n","import {\n Card,\n CardContent,\n IconButton,\n makeStyles,\n Tooltip,\n Skeleton // Import from @mui/material\n} from \"@mui/material\"; // Correct import for Skeleton in v5\nimport Flex from \"components/Flex\";\nimport pathKeys from \"constants/pathKeys\";\nimport React, { useMemo } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport styles from \"../../styles.module.scss\";\nimport { Doughnut } from \"react-chartjs-2\";\nimport cn from \"classnames\";\nimport { useTranslation } from \"react-i18next\";\n\nconst option_default = {\n responsive: true,\n maintainAspectRatio: false,\n animation: {\n animateRotate: false,\n animateScale: false\n },\n cutout: 60,\n plugins: {\n legend: {\n position: \"left\",\n align: \"middle\",\n labels: {\n usePointStyle: true,\n generateLabels: function (chart) {\n var labels = chart.data.labels;\n var dataset = chart.data.datasets[0];\n var legend = labels.map(function (label, index) {\n return {\n datasetIndex: 0,\n fillStyle:\n dataset.backgroundColor && dataset.backgroundColor[index],\n strokeStyle: dataset.borderColor && dataset.borderColor[index],\n lineWidth: dataset.borderWidth,\n text: `${label}: ${dataset.data[index]}`\n };\n });\n return legend;\n }\n }\n }\n }\n};\n\nconst options_status = {\n ...option_default\n};\n\nconst options_result = {\n ...option_default,\n plugins: {\n ...option_default.plugins,\n legend: {\n ...option_default.plugins.legend,\n position: \"right\"\n }\n }\n};\n\nexport const DashboardEmpty = () => {\n const { t } = useTranslation();\n return (\n // \n // {t(\"update.no_data\")}\n // \n \n \n \n \n \n \n \n \n \n );\n};\n\nconst Chart = ({ data }) => {\n const { t, i18n } = useTranslation();\n\n const data_status = useMemo(() => {\n if (data) {\n const { campaign } = data;\n\n return {\n labels: [\n t(\"overall.campaign_and_message.sent\"),\n t(\"overall.campaign_and_message.unsent\"),\n t(\"overall.campaign_and_message.sending\"),\n t(\"overall.campaign_and_message.cancel\")\n ],\n datasets: [\n {\n data: [\n campaign?.totalCampaignDone,\n campaign?.totalCampaignPending,\n campaign?.totalCampaignRunning,\n campaign?.totalCampaignCancel\n ],\n backgroundColor: [\"#05ae34\", \"#ffc107\", \"#6610f2\", \"#bdbdbd\"],\n borderWidth: 0\n }\n ]\n };\n }\n return null;\n }, [data, i18n.language]);\n\n const data_result = useMemo(() => {\n if (data) {\n const { fanpage } = data;\n return {\n labels: [\n t(\"overall.campaign_and_message.sent_success\"),\n t(\"overall.campaign_and_message.sent_failed\"),\n t(\"overall.campaign_and_message.unsent\")\n ],\n\n datasets: [\n {\n data: [\n fanpage?.totalSuccess,\n fanpage?.totalFail,\n fanpage?.totalNotSend\n ],\n backgroundColor: [\"#05ae34\", \"#dc3545\", \"#666666\"],\n borderWidth: 0\n }\n ]\n };\n }\n return null;\n }, [data]);\n\n const textCampaign = useMemo(() => {\n return {\n id: \"text-center\",\n beforeDatasetsDraw(chart, args, pluginOptions) {\n const { ctx } = chart;\n\n ctx.save();\n ctx.font = \"600 14px sans-serif\";\n ctx.fillStyle = \"#000000de\";\n ctx.textAlign = \"center\";\n ctx.textBaseline = \"middle\";\n ctx.fillText(\n `${data?.campaign?.totalCampaigns || 0}\\n${t(\"update.campaign\")}`,\n chart.getDatasetMeta(0).data[0].x,\n chart.getDatasetMeta(0).data[0].y\n );\n }\n };\n }, [data?.campaign?.totalCampaigns]);\n\n const textMessage = useMemo(() => {\n return {\n id: \"text-message\",\n beforeDatasetsDraw(chart, args, pluginOptions) {\n const { ctx } = chart;\n\n ctx.save();\n ctx.font = \"600 14px sans-serif\";\n ctx.fillStyle = \"#000000de\";\n ctx.textAlign = \"center\";\n ctx.textBaseline = \"middle\";\n ctx.fillText(\n `${data?.fanpage?.totalSent || 0} ${t(\"update.message\")}`,\n chart.getDatasetMeta(0).data[0].x,\n chart.getDatasetMeta(0).data[0].y\n );\n }\n };\n }, [data?.fanpage?.totalSent]);\n\n return (\n
\n \n \n

{t(\"overall.campaign_and_message.title\")}

\n {!data?.campaign?.totalCampaigns ? (\n \n \n \n
\n ) : (\n
\n \n \n
\n \n
\n
\n \n
\n
\n
\n \n \n {t(\"common.btn.campaign\")}\n \n \n
\n )}\n \n \n \n );\n};\n\nexport default Chart;\n","import {\n Card,\n CardContent,\n IconButton,\n makeStyles,\n Tooltip\n} from '@material-ui/core'\nimport moment from 'moment'\nimport { useCallback, useState } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { Link } from 'react-router-dom'\nimport Flex from '../../../../components/Flex'\nimport { pathKeys } from '../../../../constants'\nimport styles from '../../styles.module.scss'\nimport { DashboardEmpty } from '../Chart'\n\nconst useStyles = makeStyles((theme) => ({\n copyButton: {\n padding: 4,\n \"&:hover\": {\n backgroundColor: \"rgba(0, 0, 0, 0.04)\"\n }\n },\n card: {\n borderRadius: \"12px\" \n }\n}));\n\nconst AccountInfo = ({ data }) => {\n const { t } = useTranslation()\n\n const [copied, setCopied] = useState(false)\n\n const classes = useStyles()\n\n const handleCopy = useCallback((id) => {\n navigator.clipboard.writeText(id).then(() => {\n setCopied(true)\n setTimeout(() => setCopied(false), 2000)\n })\n }, [])\n\n return (\n
\n \n \n \n {t(\"overall.account_info.title\")}\n \n {!data?.info?.id ? (\n \n ) : (\n <>\n \n \n \n \n \n\n {data?.info?.type &&\n (data?.info?.type === \"bombot-eternity\" ||\n data?.info?.type === \"bombot-infinity\" ||\n data?.info?.type === \"bombot-v-nh-vi-n\" ||\n data?.info?.type === \"bombot-v-h-n\") && (\n \n \n \n \n )}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
{t(\"overall.account_info.account_id\")}:\n \n {data?.info?.id}\n\n \n {\n e.stopPropagation();\n handleCopy(data?.info?.id);\n }}\n size=\"small\"\n style={{\n marginLeft: \"12px\"\n }}\n >\n \n \n \n \n
{t(\"overall.account_info.type\")}:\n {t(\"overall.account_info.\" + data?.info?.type)}\n
{t(\"overall.account_info.giftPoint\")}:{data?.info?.giftPoint}
{t(\"overall.account_info.expire_date\")}:\n {data?.info?.expiredAt\n ? data?.info?.expiredAt > \"2100-12-24T05:46:34.304+00:00\"\n ? t(\"overall.account_info.lifetime\")\n : moment(data.info.expiredAt).format(\"DD/MM/YYYY HH:mm\")\n : \"-\"}\n
{t(\"overall.account_info.linked_account\")}:{data?.info?.numRef}
{t(\"overall.account_info.amount_customer\")}:{data?.customer?.totalCus}
{t(\"overall.account_info.amount_fanpage\")}:{data?.fanpage?.totalPage}
\n \n \n {t(\"account_management.label\")}\n \n \n \n )}\n
\n
\n
\n );\n}\n\nexport default AccountInfo\n","import { Card } from '@material-ui/core'\nimport { useEffect, useMemo, useState } from 'react'\nimport { Bar } from 'react-chartjs-2'\nimport { useTranslation } from 'react-i18next'\nimport homeApi from 'api/homeApi'\n\nconst BombotTagChart = ({ style, ...res }) => {\n const { t } = useTranslation()\n const [data, setData] = useState([])\n const [selectedDate, setSelectedDate] = useState(null)\n\n useEffect(() => {\n ;(async () => {\n try {\n const res = await homeApi.getTagBombotStatistic({\n size: 15,\n pageId: '',\n })\n setData(res)\n } catch (error) {\n console.log(error)\n }\n })()\n }, [selectedDate])\n\n const chartCustomerPerFanpages = useMemo(() => {\n return {\n labels: data?.map((item) => item.tagName),\n datasets: [\n {\n label: t(\"dashboard.customer_count\"),\n data: data?.map((item) => item.totalCus) || [],\n backgroundColor: \"#a8d5ba\",\n borderColor: \"#4cae50\",\n borderWidth: 1\n }\n ]\n };\n }, [data])\n\n const barOptions = {\n indexAxis: 'y',\n responsive: true,\n plugins: {\n legend: {\n position: 'top',\n },\n title: {\n display: true,\n },\n },\n scales: {\n x: {\n beginAtZero: true,\n },\n },\n }\n\n return (\n \n \n {t('customer_management.list.bombot_tag')}\n \n\n \n \n \n \n )\n}\n\nexport default BombotTagChart\n","import React from 'react'\nimport { Controller } from 'react-hook-form'\nimport TextField from '@material-ui/core/TextField'\nimport { makeStyles } from '@material-ui/core/styles'\nimport {\n DateRangeDelimiter,\n LocalizationProvider,\n DesktopDateRangePicker,\n} from '@material-ui/pickers'\nimport DateFnsUtils from '@material-ui/pickers/adapter/date-fns'\nimport Flex from 'components/Flex'\nimport { useTranslation } from 'react-i18next'\nimport DateRangeIcon from '@material-ui/icons/DateRange'\n\n// Sử dụng makeStyles để tạo styles\nconst useStyles = makeStyles((theme) => ({\n inputPicker: {\n width: 'full',\n maxWidth: '120px',\n '& input': {\n fontSize: '12px', // Kích thước chữ trong input\n padding: '10px', // Giảm padding\n },\n },\n delimiter: {\n fontSize: '12px',\n margin: '0 8px',\n },\n adornedEnd: {\n paddingRight: 0, // Customize the right padding\n },\n}))\n\nconst BaseDatePicker2 = ({\n control,\n name,\n defaultValue,\n rules,\n styles,\n ...rest\n}) => {\n const { t } = useTranslation()\n const classes = useStyles()\n\n return (\n \n {\n return (\n \n {\n field.onChange(date)\n }}\n value={field.value || [null, null]}\n {...rest}\n renderInput={(startProps, endProps) => {\n return (\n <>\n \n {t(\"update.form.from\")}\n \n \n ),\n classes: {\n adornedEnd: classes.adornedEnd\n }\n }}\n />\n \n {t(\"update.form.to\")}\n \n \n ),\n classes: {\n adornedEnd: classes.adornedEnd\n }\n }}\n />\n \n );\n }}\n />\n \n )\n }}\n />\n \n )\n}\n\nexport default BaseDatePicker2\n","import React from 'react'\n\nconst LegendItem = ({ title, legendColor, number, percent }) => {\n return (\n \n \n\n
\n \n {title}\n

\n \n {number}\n

\n \n {percent}\n

\n
\n \n )\n}\n\nexport default LegendItem\n","import React, { useEffect, useMemo, useRef, useState } from 'react'\nimport homeApi from '../../../../api/homeApi'\nimport { Card } from '@material-ui/core'\nimport { Doughnut } from 'react-chartjs-2'\nimport BaseDatePicker2 from '../../../../components/Form/BaseDatePicker2'\nimport { useForm } from 'react-hook-form'\nimport moment from 'moment'\nimport Flex from '../../../../components/Flex'\nimport { useTranslation } from 'react-i18next'\nimport LegendItem from './LegendItem'\nimport { useCallback } from 'react'\nimport { debounce } from 'lodash'\n\nconst CampaignChart = ({ style, ...res }) => {\n const [data, setData] = useState(null);\n const { t } = useTranslation();\n\n const { control, watch } = useForm({\n defaultValues: {\n date: [moment().subtract(30, \"days\").toDate(), new Date()]\n }\n });\n\n // Đoạn code cũ gây duplicate api campaign/from=... bị gọi 2 lần\n // useEffect(() => {\n // ;(async () => {\n // try {\n // const date = watch('date')\n // const res = await homeApi.getCampaignStatistic({\n // from: moment(date[0]).format('YYYY-MM-DD'),\n // to: moment(date[1]).format('YYYY-MM-DD'),\n // })\n // setData(res)\n // } catch (error) {\n // console.log(error)\n // }\n // })()\n // }, [watch('date')])\n\n // ======> FIX lỗi duplicate api\n const prevDate = useRef(watch(\"date\")); // Lưu trữ giá trị date trước đó\n\n useEffect(() => {\n const currentDate = watch(\"date\");\n if (currentDate !== prevDate.current) {\n prevDate.current = currentDate; // Cập nhật giá trị date mới\n (async () => {\n try {\n // console.log(\"Calling API with date:\", currentDate); // Log trước khi gọi API\n const res = await homeApi.getCampaignStatistic({\n from: moment(currentDate[0]).format(\"YYYY-MM-DD\"),\n to: moment(currentDate[1]).format(\"YYYY-MM-DD\")\n });\n setData(res);\n } catch (error) {\n console.log(error);\n }\n })();\n }\n }, [watch(\"date\")]); \n\n const totalCampaigns = data?.totalCampaigns || 0;\n\n const dataCampaigns = useMemo(() => {\n return {\n labels: [\n `${t(\"dashboard.campaign_stopped\")}`, // Stopped\n `${t(\"dashboard.campaign_not_started\")}`, // Not Started\n `${t(\"dashboard.campaign_completed\")}`, // Completed\n `${t(\"dashboard.campaign_running\")}` // Running\n ],\n datasets: [\n {\n data: [\n data?.totalCampaignCancel || 0, // Stopped\n data?.totalCampaignPending || 0, // Not Started\n data?.totalCampaignDone || 0, // Completed\n data?.totalCampaignRunning || 0 // Running\n ],\n backgroundColor: [\"#ff6f91\", \"#ffb74d\", \"#81c784\", \"#64b5f6\"],\n hoverBackgroundColor: [\"#ff3d67\", \"#ff9800\", \"#4caf50\", \"#1e88e5\"]\n }\n ]\n };\n }, [data, t]);\n\n const doughnutOptions = {\n responsive: true,\n maintainAspectRatio: false,\n plugins: {\n legend: {\n display: false\n }\n }\n };\n\n const textOverlay = {\n id: \"text-center\",\n beforeDatasetsDraw(chart) {\n const { ctx } = chart;\n ctx.save();\n ctx.font = \"600 14px sans-serif\";\n ctx.fillStyle = \"#000000de\";\n ctx.textAlign = \"center\";\n ctx.textBaseline = \"middle\";\n ctx.fillText(\n `${totalCampaigns}`,\n chart.getDatasetMeta(0).data[0].x,\n chart.getDatasetMeta(0).data[0].y\n );\n }\n };\n\n const isEmpty = totalCampaigns === 0;\n\n return (\n \n \n

\n {t(\"dashboard.campaign\")}\n

\n\n \n \n \n {t(\"dashboard.campaign_created_from_to\")}\n

\n \n \n\n \n {isEmpty ? (\n \n

\n {t(\"dashboard.no_data\")}\n

\n \n ) : (\n \n
\n \n
\n\n \n \n\n \n\n \n\n \n \n \n )}\n \n
\n );\n}\n\nexport default CampaignChart\n","import React, { useEffect, useMemo, useRef, useState } from 'react'\nimport homeApi from '../../../../api/homeApi'\nimport { Card } from '@material-ui/core'\nimport { Doughnut } from 'react-chartjs-2'\nimport BaseDatePicker2 from '../../../../components/Form/BaseDatePicker2'\nimport { useForm } from 'react-hook-form'\nimport moment from 'moment'\nimport Flex from '../../../../components/Flex'\nimport { useTranslation } from 'react-i18next'\nimport LegendItem from './LegendItem'\n\nconst CustomerChart = ({ style, ...res }) => {\n const [data, setData] = useState(null);\n const { t } = useTranslation();\n\n const { control, watch } = useForm({\n defaultValues: {\n date: [moment().subtract(30, \"days\").toDate(), new Date()]\n }\n });\n\n // Đoạn code cũ gây duplicate api customer?from=... bị gọi 2 lần\n // useEffect(() => {\n // (async () => {\n // try {\n // const date = watch(\"date\");\n // const res = await homeApi.getCustomerStatistic({\n // from: moment(date[0]).format(\"YYYY-MM-DD\"),\n // to: moment(date[1]).format(\"YYYY-MM-DD\")\n // });\n // setData(res);\n // } catch (error) {\n // console.log(error);\n // }\n // })();\n // }, [watch(\"date\")]);\n\n // =========> FIX lỗi trên\n const prevDate = useRef(watch(\"date\")); // Lưu trữ giá trị date trước đó\n\n useEffect(() => {\n const currentDate = watch(\"date\");\n if (currentDate !== prevDate.current) {\n prevDate.current = currentDate; // Cập nhật giá trị date mới\n (async () => {\n try {\n // console.log(\"Calling API with date:\", currentDate); // Log trước khi gọi API\n const res = await homeApi.getCustomerStatistic({\n from: moment(currentDate[0]).format(\"YYYY-MM-DD\"),\n to: moment(currentDate[1]).format(\"YYYY-MM-DD\")\n });\n setData(res);\n } catch (error) {\n console.log(error);\n }\n })();\n }\n }, [watch(\"date\")]); \n\n const totalCustomers = data?.totalCustomers || 0;\n\n const dataCustomers = useMemo(() => {\n return {\n labels: [\n `${t(\"dashboard.failed_customer\")}`,\n `${t(\"dashboard.customer_not_sent\")}`,\n `${t(\"dashboard.successful_customer\")}`\n ],\n datasets: [\n {\n data: [\n data?.totalCustomersFail || 0,\n data?.totalCustomersNotSend || 0,\n data?.totalCustomersSuccess || 0\n ],\n backgroundColor: [\"#ff6f91\", \"#ffb74d\", \"#81c784\"],\n hoverBackgroundColor: [\"#ff3d67\", \"#ff9800\", \"#4caf50\"]\n }\n ]\n };\n }, [data, t]);\n\n const doughnutOptions = {\n responsive: true,\n maintainAspectRatio: false,\n plugins: {\n legend: {\n display: false\n }\n }\n };\n\n const textOverlay = {\n id: \"text-center\",\n beforeDatasetsDraw(chart) {\n const { ctx } = chart;\n ctx.save();\n ctx.font = \"600 14px sans-serif\";\n ctx.fillStyle = \"#000000de\";\n ctx.textAlign = \"center\";\n ctx.textBaseline = \"middle\";\n ctx.fillText(\n `${totalCustomers}`,\n chart.getDatasetMeta(0).data[0].x,\n chart.getDatasetMeta(0).data[0].y\n );\n }\n };\n\n const isEmpty = totalCustomers === 0;\n\n return (\n \n \n

\n {t(\"dashboard.customer\")}\n

\n\n \n \n \n {t(\"dashboard.customer_created_from_to\")}\n

\n \n \n\n \n {isEmpty ? (\n \n

\n {t(\"dashboard.no_data\")}\n

\n \n ) : (\n \n
\n \n
\n\n \n \n\n \n\n \n \n \n )}\n \n
\n );\n}\n\nexport default CustomerChart\n","import axiosClient from './axiosClient'\nimport { post } from 'axios'\nimport urlApi from './url'\nconst customerApi = {\n get: (params) => {\n return axiosClient.get(`${urlApi.customerApi.customer}`, { params })\n },\n getCustomersStatistic: (params) => {\n return axiosClient.get(`api/v1.0/getStatistic/user`, {\n params,\n })\n },\n create: (params) => {\n return axiosClient.post(`${urlApi.customerApi.create}`, params)\n },\n addCampainByPart: (params) => {\n return axiosClient.post(`${urlApi.customerApi.addCampainByPart}`, params)\n },\n addCampaignNoScenario: (payload) => {\n return axiosClient\n .post(`${urlApi.customerApi.addCampaignNoScenario}`, payload)\n .then((res) => res)\n },\n createCustomer: (params) => {\n return axiosClient.post(`${urlApi.customerApi.createCustomer}`, params)\n },\n downloadExcel: () => {\n return axiosClient.get(\n `${urlApi.customerApi.customer}/customer-template.xlsx`\n )\n },\n getListCustomersInTag: (params) => {\n return axiosClient.get(`/api/v1.0/customer`, { params })\n },\n unlinkBombotTag: (payload) => {\n return axiosClient.delete(`/api/v1.0/customer/customersBombotTags`, {\n data: payload,\n })\n },\n edit: (params) => {\n return axiosClient.put(\n `${urlApi.customerApi.customer}/${params.id}`,\n params\n )\n },\n addMultiCustomersBombotTags: (payload) => {\n return axiosClient.post(\n `${urlApi.customerApi.addMultiCustomersBombotTags}`,\n payload\n )\n },\n removeMultiCustomersBombotTags: (payload) => {\n return axiosClient.delete(\n `${urlApi.customerApi.addMultiCustomersBombotTags}`,\n {\n data: payload,\n }\n )\n },\n unAttachTags: (payload) => {\n return axiosClient.delete(\n `${urlApi.customerApi.deleteMultiCustomersBombotTags}`,\n {\n data: payload,\n }\n )\n },\n export: (api_path, params) => {\n return axiosClient.post(\n `${urlApi.customerApi.customer}/${api_path}`,\n params,\n {\n responseType: 'arraybuffer',\n }\n )\n },\n import: (params) => {\n const id = params.fanpage && params.fanpage.id\n const formData = new FormData()\n formData.append('file', params.file)\n formData.append('type', params.type)\n const config = {\n headers: {\n 'content-type': 'multipart/form-data',\n authorization: localStorage.getItem('token') || undefined,\n },\n }\n return post(`${urlApi.customerApi.customer}/${id}/import`, formData, config)\n },\n}\n\nexport default customerApi\n","import { Button, ButtonGroup } from \"@material-ui/core\";\nimport Flex from \"../Flex\";\nimport { useTranslation } from \"react-i18next\";\n\nconst FiltersContainer = ({ options, selectedFilter, handleFilterChange }) => {\n const { t } = useTranslation();\n\n return (\n \n

\n {t(\"common.btn.filter\")}\n

\n \n {options.map((option) => {\n const { color, value, label } = option;\n\n return (\n handleFilterChange(value)}\n variant={selectedFilter === value ? \"contained\" : \"outlined\"}\n style={{\n borderRadius: \"4px\",\n padding: \"4px 8px\",\n fontSize: \"12px\",\n borderColor: \"#e0e0e0\",\n borderWidth: \"1px\",\n boxShadow: \"none\",\n backgroundColor:\n selectedFilter === value ? color || \"#007bff\" : \"#fff\",\n color: selectedFilter === value ? \"#fff\" : color || \"#007bff\"\n }}\n >\n {label}\n \n );\n })}\n \n \n );\n};\n\nexport default FiltersContainer;\n","import { useEffect, useMemo, useRef, useState } from \"react\";\nimport { Doughnut } from \"react-chartjs-2\";\nimport styles from \"./styles/CustomerOverview.module.scss\";\n\nimport { useTranslation } from \"react-i18next\";\nimport customerApi from \"../../../../api/customerApi\";\nimport { Card } from \"@material-ui/core\";\nimport FiltersContainer from \"../../../../components/FiltersContainer\";\nimport BaseDatePicker2 from \"../../../../components/Form/BaseDatePicker2\";\nimport moment from \"moment\";\nimport { useForm } from \"react-hook-form\";\nimport Flex from \"../../../../components/Flex\";\n\nconst options_result_phone_num = {\n responsive: true,\n maintainAspectRatio: false,\n animation: {\n animateRotate: false,\n animateScale: false\n },\n cutout: 40,\n plugins: {\n legend: {\n display: false,\n position: \"bottom\",\n align: \"start\",\n padding: 8, // Thêm khoảng cách giữa các mục trong chú thích (giống margin-top)\n labels: {\n usePointStyle: true,\n generateLabels: function (chart) {\n const labels = chart.data.labels;\n const dataset = chart.data.datasets[0];\n return labels.map((label, index) => ({\n datasetIndex: 0,\n fillStyle:\n dataset.backgroundColor && dataset.backgroundColor[index],\n strokeStyle: dataset.borderColor && dataset.borderColor[index],\n lineWidth: dataset.borderWidth,\n text: `${label}: ${dataset.data[index]}`\n }));\n }\n }\n }\n }\n};\n\nconst options_result_gender = {\n responsive: true,\n maintainAspectRatio: false,\n animation: {\n animateRotate: false,\n animateScale: false\n },\n cutout: 40,\n plugins: {\n legend: {\n display: false,\n position: \"bottom\",\n align: \"start\",\n labels: {\n usePointStyle: true,\n generateLabels: function (chart) {\n const labels = chart.data.labels;\n const dataset = chart.data.datasets[0];\n return labels.map((label, index) => ({\n datasetIndex: 0,\n fillStyle:\n dataset.backgroundColor && dataset.backgroundColor[index],\n strokeStyle: dataset.borderColor && dataset.borderColor[index],\n lineWidth: dataset.borderWidth,\n text: `${label}: ${dataset.data[index]}`\n }));\n }\n }\n }\n }\n};\n\n// const textCampaign = {\n// id: 'text-center',\n// beforeDatasetsDraw(chart, args, pluginOptions) {\n// const { ctx } = chart\n\n// ctx.save()\n// ctx.font = '600 14px sans-serif'\n// ctx.fillStyle = '#000000de'\n// ctx.textAlign = 'center'\n// ctx.textBaseline = 'middle'\n// },\n// }\nconst textCampaign = {\n id: \"text-center\",\n beforeDatasetsDraw(chart) {\n const { ctx } = chart;\n const total = chart.data.datasets[0].data.reduce((a, b) => a + b, 0); // Tính tổng số lượng\n const centerX = (chart.chartArea.left + chart.chartArea.right) / 2; // Tính tọa độ X trung tâm\n const centerY = (chart.chartArea.top + chart.chartArea.bottom) / 2; // Tính tọa độ Y trung tâm\n\n ctx.save();\n ctx.font = \"600 14px sans-serif\";\n ctx.fillStyle = \"#000000de\";\n ctx.textAlign = \"center\";\n ctx.textBaseline = \"middle\";\n ctx.fillText(total.toString(), centerX, centerY); // Vẽ số lượng tổng thể\n ctx.restore();\n }\n};\n\nconst dateRange = {\n LAST_30D: [\n moment().clone().subtract(30, \"days\").format(\"YYYY-MM-DD\"),\n moment().format(\"YYYY-MM-DD\")\n ],\n LAST_3M: [\n moment().clone().subtract(3, \"months\").format(\"YYYY-MM-DD\"),\n moment().format(\"YYYY-MM-DD\")\n ],\n LAST_6M: [\n moment().clone().subtract(6, \"months\").format(\"YYYY-MM-DD\"),\n moment().format(\"YYYY-MM-DD\")\n ],\n LAST_12M: [\n moment().clone().subtract(12, \"months\").format(\"YYYY-MM-DD\"),\n moment().format(\"YYYY-MM-DD\")\n ]\n};\n\nconst CustomerOverview = ({ ...res }) => {\n const { t } = useTranslation();\n\n const {\n handleSubmit,\n control,\n reset,\n setValue,\n watch,\n formState: { errors }\n } = useForm({\n defaultValues: {\n date: dateRange[\"LAST_30D\"]\n }\n });\n\n const [customerStatistic, setCustomerStatistic] = useState({});\n\n // Đoạn code cũ gây duplicate api user?from=... bị gọi 2 lần\n // useEffect(() => {\n // (async () => {\n // // if (!campaignData) return\n\n // const date = watch(\"date\");\n\n // const params = {\n // from: moment(date[0]).format(\"YYYY-MM-DD\"),\n // to: moment(date[1]).format(\"YYYY-MM-DD\")\n // };\n\n // try {\n // const customersData = await customerApi.getCustomersStatistic(params);\n // setCustomerStatistic(customersData);\n // } catch (error) {\n // console.log(\"error ==>\", error);\n // }\n // })();\n // }, [watch(\"date\")]);\n\n // =========> FIX lỗi trên\n const prevDate = useRef(watch(\"date\")); // Lưu trữ giá trị date trước đó\n\n useEffect(() => {\n const currentDate = watch(\"date\");\n if (currentDate !== prevDate.current) {\n prevDate.current = currentDate; // Cập nhật giá trị date mới\n (async () => {\n try {\n // console.log(\"Calling API with date:\", currentDate); // Log trước khi gọi API\n const customersData = await customerApi.getCustomersStatistic({\n from: moment(currentDate[0]).format(\"YYYY-MM-DD\"),\n to: moment(currentDate[1]).format(\"YYYY-MM-DD\")\n });\n setCustomerStatistic(customersData);\n } catch (error) {\n console.log(error);\n }\n })();\n }\n }, [watch(\"date\")]);\n\n const genderData = useMemo(() => {\n return {\n labels: [\n t(\"dashboard.male\"),\n t(\"dashboard.female\"),\n t(\"dashboard.other\")\n ],\n datasets: [\n {\n data: [\n customerStatistic.totalMale,\n customerStatistic.totalFemale,\n customerStatistic.totalOther\n ],\n backgroundColor: [\"#a8d5ba\", \"#4caf50\", \"#81c784\"],\n borderWidth: 0\n }\n ]\n };\n }, [customerStatistic]);\n\n const phoneNumberData = useMemo(() => {\n return {\n labels: [\n t(\"dashboard.have_phone_number\"),\n t(\"dashboard.not_have_phone_number\")\n ],\n datasets: [\n {\n data: [\n customerStatistic.totalHavePhone,\n customerStatistic.totalNotHavePhone\n ],\n backgroundColor: [\"#a8d5ba\", \"#4caf50\"],\n borderWidth: 0\n }\n ]\n };\n }, [customerStatistic]);\n\n const [selectedFilter, setSelectedFilter] = useState(\"LAST_30D\");\n\n const handleFilterChange = (filter) => {\n setSelectedFilter(filter);\n\n if (filter === \"CUSTOM\") {\n return;\n }\n\n setValue(\"date\", dateRange[filter]);\n\n // Gọi hàm để tải lại danh sách kịch bản với bộ lọc mới\n // Ví dụ: loadScenarioList(filter);\n };\n\n return (\n \n \n\n \n \n {t(\"dashboard.customer_statistic_by_time\")}\n \n\n {selectedFilter === \"CUSTOM\" && (\n \n \n \n )}\n\n
\n
\n \n

\n {customerStatistic.totalCus}\n

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

{t(\"dashboard.male\")}

\n

\n {customerStatistic.totalMale}\n

\n \n {customerStatistic.percentMale?.toFixed(2)}%\n

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

{t(\"dashboard.female\")}

\n

\n {customerStatistic.totalFemale}\n

\n \n {customerStatistic.percentFemale?.toFixed(2)}%\n

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

{t(\"dashboard.other\")}

\n

\n {customerStatistic.totalOther}\n

\n \n {customerStatistic.percentOther?.toFixed(2)}%\n

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

\n {t(\"dashboard.have_phone_number\")}\n

\n

\n {customerStatistic.totalHavePhone}\n

\n \n {customerStatistic.percentHavePhone?.toFixed(2)}%\n

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

\n {t(\"dashboard.not_have_phone_number\")}\n

\n

\n {customerStatistic.totalNotHavePhone}\n

\n \n {customerStatistic.percentNotHavePhone?.toFixed(2)}%\n

\n
\n
\n
\n
\n \n \n
\n \n \n \n \n \n \n );\n};\n\nexport default CustomerOverview;\n","import React, { useEffect, useMemo, useState } from \"react\";\nimport homeApi from \"../../../../api/homeApi\";\nimport { Card } from \"@material-ui/core\";\nimport { Bar } from \"react-chartjs-2\";\nimport { useTranslation } from \"react-i18next\";\n\nconst FanpageChart = ({ style, ...res }) => {\n const { t } = useTranslation();\n const [data, setData] = useState(null);\n\n // đoạn code gọi api ...reportPage?page=0&size=15&sort=totalCus%2Cdesc\n useEffect(() => {\n (async () => {\n try {\n const res = await homeApi.getFanpageStatistic({\n page: 0,\n size: 15,\n sort: \"totalCus,desc\"\n });\n setData(res);\n } catch (error) {\n console.log(error);\n }\n })();\n }, []);\n\n const chartCustomerPerFanpages = useMemo(() => {\n return {\n labels: data?.content?.map((item) => item.name) || [],\n datasets: [\n {\n label: t(\"dashboard.customer_count\"),\n data: data?.content?.map((item) => item.totalCus) || [],\n backgroundColor: \"#a8d5ba\",\n borderColor: \"#4cae50\",\n borderWidth: 1\n }\n ]\n };\n }, [data, t]);\n\n const barOptions = {\n indexAxis: \"y\", // This makes the bar chart horizontal\n responsive: true,\n plugins: {\n legend: {\n position: \"top\"\n },\n title: {\n display: true\n }\n },\n scales: {\n x: {\n beginAtZero: true,\n ticks: {\n callback: function (value) {\n return Math.floor(value); // Round down to the nearest whole number\n }\n }\n }\n }\n };\n\n return (\n \n

{t(\"dashboard.customer_fanpage\")}

\n \n \n \n
\n );\n};\n\nexport default FanpageChart;\n","import { Card } from \"@material-ui/core\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport { Bar } from \"react-chartjs-2\";\nimport { useTranslation } from \"react-i18next\";\nimport homeApi from \"../../../../api/homeApi\";\n\nconst FBTagChart = ({ style, ...res }) => {\n const { t } = useTranslation();\n const [data, setData] = useState([]);\n const [selectedDate, setSelectedDate] = useState(null);\n\n // gọi api getStatistic?page=0&size=15&sort=desc\n useEffect(() => {\n (async () => {\n try {\n const res = await homeApi.getTagFacebookStatistic({\n page: 0,\n size: 15,\n sort: \"desc\"\n });\n setData(res);\n } catch (error) {\n console.log(error);\n }\n })();\n }, [selectedDate]);\n\n const chartCustomerPerFanpages = useMemo(() => {\n const filteredData = data.filter(\n (item) => item.tagName && item.totalCus !== undefined\n );\n\n const uniqueTags = {};\n filteredData.forEach((item) => {\n if (!uniqueTags[item.tagName]) {\n uniqueTags[item.tagName] = item.totalCus;\n } else {\n uniqueTags[item.tagName] += item.totalCus;\n }\n });\n\n const labels = Object.keys(uniqueTags);\n const dataValues = Object.values(uniqueTags);\n\n return {\n labels,\n datasets: [\n {\n label: t(\"dashboard.customer_count\"),\n data: dataValues,\n backgroundColor: \"#a8d5ba\",\n borderColor: \"#4cae50\",\n borderWidth: 1\n }\n ]\n };\n }, [data, t]);\n\n const barOptions = {\n indexAxis: \"y\",\n responsive: true,\n plugins: {\n legend: {\n position: \"top\"\n },\n title: {\n display: true\n }\n },\n scales: {\n x: {\n beginAtZero: true\n }\n }\n };\n\n return (\n \n \n {t(\"customer_management.list.facebook_tag\")}\n \n\n \n \n \n \n );\n};\n\nexport default FBTagChart;\n","import React, { useEffect, useMemo, useRef, useState } from 'react'\nimport homeApi from '../../../../api/homeApi'\nimport { Card } from '@material-ui/core'\nimport { Doughnut } from 'react-chartjs-2'\nimport { useForm } from 'react-hook-form'\nimport moment from 'moment'\nimport { useTranslation } from 'react-i18next'\nimport LegendItem from './LegendItem'\nimport numeral from 'numeral'\nimport Flex from '../../../../components/Flex'\n\nconst GenAIChart = ({ style, ...res }) => {\n const [data, setData] = useState(null);\n const { t } = useTranslation();\n\n const { watch } = useForm({\n defaultValues: {\n date: [new Date(), new Date()]\n }\n });\n\n // đoạn code gây ra lỗi duplicate api\n // useEffect(() => {\n // ;(async () => {\n // try {\n // const date = watch('date')\n\n // const res = await homeApi.getGenAIStatistic({\n // from: moment(date[0]).format('YYYY-MM-DD'),\n // to: moment(date[1]).format('YYYY-MM-DD'),\n // })\n\n // setData(res)\n // } catch (error) {\n // console.log(error)\n // }\n // })()\n // }, [watch('date')])\n\n // ======> FIX lỗi duplicate api\n const prevDate = useRef(watch(\"date\")); // Lưu trữ giá trị date trước đó\n\n useEffect(() => {\n const currentDate = watch(\"date\");\n if (currentDate !== prevDate.current) {\n prevDate.current = currentDate; // Cập nhật giá trị date mới\n (async () => {\n try {\n // console.log(\"Calling API with date:\", currentDate); // Log trước khi gọi API\n const res = await homeApi.getGenAIStatistic({\n from: moment(currentDate[0]).format(\"YYYY-MM-DD\"),\n to: moment(currentDate[1]).format(\"YYYY-MM-DD\")\n });\n setData(res);\n } catch (error) {\n console.log(error);\n }\n })();\n }\n }, [watch(\"date\")]);\n\n const totalMessages = useMemo(() => {\n return (\n (data?.totalCreatedMessages || 0) +\n (data?.totalFormattedMessages || 0) +\n (data?.totalSelectedMessages || 0)\n );\n }, [data]);\n\n const dataGenAI = useMemo(() => {\n return {\n labels: [\n `${t(\"dashboard.created_content\")}`,\n `${t(\"dashboard.customized_content\")}`,\n `${t(\"dashboard.selected_content\")}`\n ],\n datasets: [\n {\n data: [\n data?.totalCreatedMessages || 0,\n data?.totalFormattedMessages || 0,\n data?.totalSelectedMessages || 0\n ],\n backgroundColor: [\"#ff6f91\", \"#ffb74d\", \"#81c784\"],\n hoverBackgroundColor: [\"#ff3d67\", \"#ff9800\", \"#4caf50\"]\n }\n ]\n };\n }, [data]);\n\n const doughnutOptions = {\n responsive: true,\n maintainAspectRatio: false,\n plugins: {\n legend: {\n display: false,\n position: \"right\"\n }\n }\n };\n\n const textOverlay = {\n id: \"text-center\",\n beforeDatasetsDraw(chart) {\n const { ctx } = chart;\n ctx.save();\n ctx.font = \"600 14px sans-serif\";\n ctx.fillStyle = \"#000000de\";\n ctx.textAlign = \"center\";\n ctx.textBaseline = \"middle\";\n ctx.fillText(\n `${numeral(totalMessages).format(\"0.[0]a\") || 0}`,\n chart.getDatasetMeta(0).data[0].x,\n chart.getDatasetMeta(0).data[0].y\n );\n ctx.restore();\n }\n };\n\n const isEmpty = useMemo(() => {\n let sum = 0;\n for (const property in data) {\n sum += data[property];\n }\n\n return sum === 0 ? true : false;\n }, [data]);\n\n return (\n \n \n {t(\"BOMBOT GENAI\")}\n \n \n {isEmpty ? (\n \n

{t(\"dashboard.no_data\")}

\n
\n ) : (\n \n \n \n \n\n \n \n\n \n\n \n \n \n )}\n \n
\n );\n}\n\nexport default GenAIChart\n","import React, { useEffect, useMemo, useRef, useState } from \"react\";\nimport homeApi from \"../../../../api/homeApi\";\nimport { Card } from \"@material-ui/core\";\nimport { Doughnut } from \"react-chartjs-2\";\nimport BaseDatePicker2 from \"../../../../components/Form/BaseDatePicker2\";\nimport { useForm } from \"react-hook-form\";\nimport moment from \"moment\";\nimport Flex from \"../../../../components/Flex\";\nimport { useTranslation } from \"react-i18next\";\nimport numeral from \"numeral\";\nimport LegendItem from \"./LegendItem\";\n\nconst MessageChart = ({ style, ...res }) => {\n const [data, setData] = useState(null);\n const { t } = useTranslation();\n const { control, watch } = useForm({\n defaultValues: {\n date: [moment().subtract(30, \"days\").toDate(), new Date()]\n }\n });\n\n // Đoạn code cũ gây duplicate api message?from=... bị gọi 2 lần\n // useEffect(() => {\n // (async () => {\n // const date = watch(\"date\");\n // try {\n // const res = await homeApi.getMessageStatistic({\n // from: moment(date[0]).format(\"YYYY-MM-DD\"),\n // to: moment(date[1]).format(\"YYYY-MM-DD\")\n // });\n // setData(res);\n // } catch (error) {\n // console.log(error);\n // }\n // })();\n // }, [watch(\"date\")]);\n\n // =========> FIX lỗi trên\n const prevDate = useRef(watch(\"date\")); // Lưu trữ giá trị date trước đó\n\n useEffect(() => {\n const currentDate = watch(\"date\");\n if (currentDate !== prevDate.current) {\n prevDate.current = currentDate; // Cập nhật giá trị date mới\n (async () => {\n try {\n // console.log(\"Calling API with date:\", currentDate); // Log trước khi gọi API\n const res = await homeApi.getMessageStatistic({\n from: moment(currentDate[0]).format(\"YYYY-MM-DD\"),\n to: moment(currentDate[1]).format(\"YYYY-MM-DD\")\n });\n setData(res);\n } catch (error) {\n console.log(error);\n }\n })();\n }\n }, [watch(\"date\")]);\n\n const totalMessages = data?.totalMessages || 0;\n\n const dataMessages = useMemo(() => {\n return {\n labels: [\n `${t(\"dashboard.failed_message\")}`,\n `${t(\"dashboard.message_not_sent\")}`,\n `${t(\"dashboard.successful_message\")}`\n ],\n datasets: [\n {\n data: [\n data?.totalMessagesFail || 0,\n data?.totalMessagesNotSend || 0,\n data?.totalMessagesSuccess || 0\n ],\n backgroundColor: [\"#ff6f91\", \"#ffb74d\", \"#81c784\"],\n hoverBackgroundColor: [\"#ff3d67\", \"#ff9800\", \"#4caf50\"]\n }\n ]\n };\n }, [data]);\n\n const doughnutOptions = {\n responsive: true,\n maintainAspectRatio: false,\n plugins: {\n legend: {\n display: false\n }\n }\n };\n\n const textOverlay = useMemo(() => {\n return {\n id: \"text-center\",\n beforeDatasetsDraw(chart) {\n const { ctx } = chart;\n ctx.save();\n ctx.font = \"600 14px sans-serif\";\n ctx.fillStyle = \"#000000de\";\n ctx.textAlign = \"center\";\n ctx.textBaseline = \"middle\";\n ctx.fillText(\n `${numeral(totalMessages).format(\"0.[0]a\") || 0}`,\n chart.getDatasetMeta(0).data[0].x,\n chart.getDatasetMeta(0).data[0].y\n );\n }\n };\n }, [totalMessages]);\n\n const isEmpty = totalMessages === 0;\n\n return (\n \n \n

\n {t(\"dashboard.message\")}\n

\n\n \n \n \n {t(\"dashboard.message_created_from_to\")}\n

\n \n \n\n \n {isEmpty ? (\n \n

\n {t(\"dashboard.no_data\")}\n

\n \n ) : (\n \n
\n \n
\n\n \n \n\n \n\n \n \n \n )}\n \n
\n );\n};\n\nexport default MessageChart;\n","import { Card } from '@material-ui/core'\nimport { useEffect, useMemo, useRef, useState } from 'react'\nimport { Doughnut } from 'react-chartjs-2'\nimport homeApi from '../../../../api/homeApi'\nimport BaseDatePicker2 from 'components/Form/BaseDatePicker2'\nimport { useForm } from 'react-hook-form'\nimport moment from 'moment'\nimport Flex from '../../../../components/Flex'\nimport { useTranslation } from 'react-i18next'\nimport LegendItem from './LegendItem'\n\nconst ScenarioChart = ({ style, ...res }) => {\n const [data, setData] = useState(null);\n const { t } = useTranslation();\n\n const { control, watch } = useForm({\n defaultValues: {\n date: [moment().subtract(30, \"days\").toDate(), new Date()]\n }\n });\n\n // Đoạn code cũ gây duplicate api scenario?from=... bị gọi 2 lần\n // useEffect(() => {\n // (async () => {\n // try {\n // const date = watch(\"date\");\n // const res = await homeApi.getScenarioStatistic({\n // from: moment(date[0]).format(\"YYYY-MM-DD\"),\n // to: moment(date[1]).format(\"YYYY-MM-DD\")\n // });\n // setData(res);\n // } catch (error) {\n // console.log(error);\n // }\n // })();\n // }, [watch(\"date\")]);\n\n // =========> FIX lỗi trên\n const prevDate = useRef(watch(\"date\")); // Lưu trữ giá trị date trước đó\n\n useEffect(() => {\n const currentDate = watch(\"date\");\n if (currentDate !== prevDate.current) {\n prevDate.current = currentDate; // Cập nhật giá trị date mới\n (async () => {\n try {\n // console.log(\"Calling API with date:\", currentDate); // Log trước khi gọi API\n const res = await homeApi.getScenarioStatistic({\n from: moment(currentDate[0]).format(\"YYYY-MM-DD\"),\n to: moment(currentDate[1]).format(\"YYYY-MM-DD\")\n });\n setData(res);\n } catch (error) {\n console.log(error);\n }\n })();\n }\n }, [watch(\"date\")]);\n\n const totalScenarios = data?.totalScenarios || 0;\n\n const dataScenarios = useMemo(() => {\n return {\n labels: [\n `${t(\"dashboard.scenario_stopped\")}`,\n `${t(\"dashboard.scenario_not_started\")}`,\n `${t(\"dashboard.scenario_completed\")}`,\n `${t(\"dashboard.scenario_running\")}`\n ],\n datasets: [\n {\n data: [\n data?.totalScenarioCancel || 0,\n data?.totalScenarioPending || 0,\n data?.totalScenarioDone || 0,\n data?.totalScenarioRunning || 0\n ],\n backgroundColor: [\"#ff6f91\", \"#ffb74d\", \"#81c784\", \"#64b5f6\"],\n hoverBackgroundColor: [\"#ff3d67\", \"#ff9800\", \"#4caf50\", \"#1e88e5\"]\n }\n ]\n };\n }, [data, t]);\n\n const doughnutOptions = {\n responsive: true,\n maintainAspectRatio: false,\n plugins: {\n legend: {\n display: false\n }\n }\n };\n\n const textOverlay = {\n id: \"text-center\",\n beforeDatasetsDraw(chart) {\n const { ctx } = chart;\n ctx.save();\n ctx.font = \"600 14px sans-serif\";\n ctx.fillStyle = \"#000000de\";\n ctx.textAlign = \"center\";\n ctx.textBaseline = \"middle\";\n ctx.fillText(\n `${totalScenarios}`,\n chart.getDatasetMeta(0).data[0].x,\n chart.getDatasetMeta(0).data[0].y\n );\n }\n };\n\n const isEmpty = totalScenarios === 0;\n\n return (\n \n \n

\n {t(\"dashboard.scenario\")}\n

\n\n \n \n \n {t(\"dashboard.script_creation_date_range\")}\n

\n \n \n\n \n {isEmpty ? (\n \n

\n {t(\"dashboard.no_data\")}\n

\n \n ) : (\n \n
\n \n
\n\n \n \n\n \n\n \n\n \n \n \n )}\n \n
\n );\n}\n\nexport default ScenarioChart\n","import { Button } from \"@material-ui/core\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport cn from \"classnames\";\nimport types from \"constants/types\";\nimport { useEffect, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useSelector } from \"react-redux\";\nimport Tour from \"reactour\";\nimport Flex from \"../../../../components/Flex\";\nimport { selectGuideListByKey } from \"../../../../stores/config/config.selector\";\nimport {\n getIsGuideByKey,\n GUIDE_TYPE_ENUM,\n setIsGuideByKey\n} from \"../../../../utils/helper\";\nimport styles from \"../../styles.module.scss\"; // Ensure you have this file\nimport BombotTagChart from \"./BombotTagChart\";\nimport CampaignChart from \"./CampaignChart\";\nimport CustomerChart from \"./CustomerChart\";\nimport CustomerOverview from \"./CustomerOverview\";\nimport FanpageChart from \"./FanpageChart\";\nimport FBTagChart from \"./FanpageTagChart\";\nimport GenAIChart from \"./GenAIChart\";\nimport MessageChart from \"./MessageChart\";\nimport ScenarioChart from \"./ScenarioChart\";\nimport { Skeleton } from \"@mui/material\";\n\nconst useStyles = makeStyles({\n button_try_it_now: {\n position: \"relative\",\n margin: 0,\n background: \"#05AE34\",\n fontSize: 14,\n fontWeight: \"bold\",\n color: \"white\",\n transition: \"transform 0.3s, box-shadow 0.3s\",\n \"&:hover\": {\n transform: \"scale(1.1)\",\n boxShadow: \"0 0 10px rgba(0, 255, 89, 0.5)\"\n }\n },\n stars: {\n position: \"absolute\",\n top: \"-10%\",\n right: \"10%\",\n transform: \"translate(-50%, -50%)\",\n opacity: 0,\n transition: \"opacity 0.3s ease\",\n pointerEvents: \"none\"\n },\n star: {\n position: \"absolute\",\n fontSize: \"18px\",\n animation: \"$twinkle 1s infinite\"\n },\n star1: { top: \"0\", left: \"0\", animationDelay: \"0.02s\" },\n button_try_it_now_hover: {\n \"&:hover $stars\": {\n opacity: 1\n }\n },\n \"@keyframes twinkle\": {\n \"0%\": { transform: \"scale(1)\" },\n \"50%\": { transform: \"scale(1.2)\" },\n \"100%\": { transform: \"scale(1)\" }\n }\n});\n\nconst DashboardChart = ({\n dashboard,\n campaigns,\n messages,\n scenarios,\n selectedDate = null,\n onDateChange,\n isShowTooltip\n}) => {\n const { t } = useTranslation();\n const classes = useStyles();\n\n const dataCampaigns = {\n labels: [\n \"Campaign Running\",\n \"Campaign Pending\",\n \"Campaign Done\",\n \"Campaign Cancelled\"\n ],\n datasets: [\n {\n data: [\n dashboard?.campaign?.totalCampaignRunning || 0,\n dashboard?.campaign?.totalCampaignPending || 0,\n dashboard?.campaign?.totalCampaignDone || 0,\n dashboard?.campaign?.totalCampaignCancel || 0\n ],\n backgroundColor: [\"#82ca9d\", \"#ffc658\", \"#8884d8\", \"#AE1607\"],\n hoverBackgroundColor: [\"#76b89a\", \"#e6b84d\", \"#7a6fb8\", \"#9e1410\"]\n }\n ]\n };\n\n const dataMessages = {\n labels: [\"Message\", \"Message Fail\", \"Message Not Send\", \"Message Success\"],\n datasets: [\n {\n data: [\n messages?.totalMessages || 0,\n messages?.totalMessagesFail || 0,\n messages?.totalMessagesNotSend || 0,\n messages?.totalMessagesSuccess || 0\n ],\n backgroundColor: [\"#82ca9d\", \"#ffc658\", \"#8884d8\", \"#AE1607\"],\n hoverBackgroundColor: [\"#76b89a\", \"#e6b84d\", \"#7a6fb8\", \"#9e1410\"]\n }\n ]\n };\n\n const doughnutOptions = {\n responsive: true,\n maintainAspectRatio: false,\n plugins: {\n legend: {\n position: \"top\"\n }\n }\n };\n\n const tourOverview = useSelector(\n selectGuideListByKey(GUIDE_TYPE_ENUM.dashboard)\n );\n\n const [tourConfig, setTourConfig] = useState(null);\n\n useEffect(() => {\n if (\n getIsGuideByKey(GUIDE_TYPE_ENUM.dashboard) &&\n tourOverview?.length &&\n isShowTooltip\n ) {\n setTourConfig(tourOverview);\n setIsGuideByKey(GUIDE_TYPE_ENUM.dashboard);\n }\n }, [tourOverview, isShowTooltip]);\n\n // link qua ext\n const handleTryItNow = () => {\n console.log(\"thieu truyen param show popup guid\");\n window.open(\n types.URL.FACEBOOK +\n `&token=${\n localStorage.getItem(\"token\") || null\n }&guidBombotGenAI=guidBombotGenAI`,\n \"_blank\"\n );\n };\n\n // Check if dashboard has data\n if (!dashboard || !dashboard.fanpage || !campaigns) {\n return (\n \n \n \n \n\n \n \n \n \n );\n }\n\n return (\n \n \n {t(\"common.btn.close\")}\n \n }\n accentColor=\"#05ae34\"\n onRequestClose={() => setTourConfig(null)}\n />\n\n \n \n\n \n \n\n \n \n \n \n\n \n \n \n
\n
\n {t(\"common.btn.new_feature\")}\n
\n \n BOMBOT GENAI\n
\n {/* */}\n handleTryItNow()}\n >\n {t(\"common.btn.try_it_now\")}\n
\n \n
\n \n \n\n \n \n \n \n \n\n \n\n \n\n \n\n \n \n );\n};\n\nexport default DashboardChart;\n","import React from 'react'\nimport Button from '@material-ui/core/Button'\nimport Flex from '../Flex'\nimport { useTranslation } from \"react-i18next\";\n\nconst ButtonLoading = ({ title, isLoading, ...rest }) => {\n const { t } = useTranslation();\n\n return (\n \n );\n}\n\nexport default ButtonLoading\n","import { createSelector } from \"@reduxjs/toolkit\";\nexport const verifyNumberPhone = (state) => state.homeReducer.verifyNumberPhone;\nexport const share = (state) => state.homeReducer.share;\nexport const dashboard = (state) => state.homeReducer.dashboard;\nexport const verifyNumberPhoneError = (state) =>\n state.homeReducer.verifyNumberPhoneError;\nexport const selectErrorVerifyPhone = (state) =>\n state.homeReducer.verifyNumberPhoneError;\n\nexport const getVerifyNumberPhone = createSelector(\n [verifyNumberPhone],\n (verify) => {\n return verify;\n }\n);\n\nexport const selectUser = createSelector(share, (share) => {\n return share.user;\n});\n","export default __webpack_public_path__ + \"static/media/code.54cff58a.jpg\";","import {\n makeStyles,\n } from \"@material-ui/core\";\n import Flex from \"components/Flex\";\n import React, { useCallback, useEffect, useState } from \"react\";\n import OtpInput from \"react-otp-input\";\n import FormDialog from \"../../../../components/FormDialog\";\n import ArrowBackIcon from \"@material-ui/icons/ArrowBack\";\n import styles from \"../../styles.module.scss\";\n import firebase from \"firebase\";\n import { useDispatch, useSelector } from \"react-redux\";\n import ButtonLoading from \"components/ButtonLoading\";\n import { Skeleton } from \"@material-ui/lab\";\n import { verifyNumberPhoneError } from \"views/Home/HomeReducer\";\n import { selectErrorVerifyPhone } from \"views/Home/HomeSelectors\";\n import homeApi from \"api/homeApi\";\n import { setLoading } from \"views/App/AppReducer\";\n import { showError } from \"stores/alert/slice.alert\";\n import smsExample from \"../../../../assets/images/code.jpg\";\n import { useTranslation } from \"react-i18next\";\n import IMAGES from \"../../../../../src/images\";\n\n import { useTheme } from '@mui/material/styles';\n import Button from '@mui/material/Button';\n import { useHistory } from \"react-router-dom\";\n \n \n \n \n const DialogAlertPoints = ({name, point, handleClose}) => {\n const [giftPoints, setGiftPoints] = useState(0);\n const [alertGiftBox, setAlertGiftBox] = useState(true);\n const history = useHistory();\n const theme = useTheme();\n const useStyles = makeStyles((theme) => ({\n account: {\n display: \"flex\",\n alignItems: \"center\",\n background: \"#f0f0f0\",\n padding: 15,\n },\n right: {\n marginLeft: 15,\n },\n wrapAccount: {\n padding: 15,\n },\n form: {\n width: \"100%\",\n },\n number: {\n fontWeight: \"bold\",\n },\n errorCode: {\n margin: \"10px 0px 0px 10px\",\n fontSize: \"14px\",\n color: \"red\",\n textAlign: \"center\",\n },\n giftBox:{\n padding: \"20px 50px !important\",\n \"& .center\":{\n textAlign: \"center\"\n },\n \"& li\":{\n listStyle: \"none\",\n padding: \"7px\"\n },\n \"& .textUsed\":{\n color: \"#05AE36\",\n },\n \"& .feeText\":{\n color: \"#f6a801\"\n },\n \"& .grey\":{\n color: \"#fff\",\n background: \"grey\",\n \"& :hover\":{\n color: \"#fff\",\n background: \"grey\",\n }\n },\n \"& .grey:hover\":{\n color: \"#fff\",\n background: \"grey\"\n },\n \"& .line-button\":{\n padding: \"3px\"\n }\n },\n }));\n\n const classes = useStyles();\n const { i18n, t } = useTranslation();\n\n const handleMenu = () => {\n history.push(\"/quan-ly-tai-khoan?openPoits=1\");\n };\n\n const handleClosePopup = () => {\n localStorage.setItem(\"alertGiftBox\", false);\n handleClose();\n };\n return (\n \n
    \n
  1. \n
  2. {t(\"account_management.service_information.helloText\")} {name}
  3. \n
  4. {t(\"account_management.service_information.finishText\")} {point<250?1:(point<500?3:6)} {t(\"account_management.service_information.monthText\")} {t(\"account_management.service_information.feeText\")} {t(\"account_management.service_information.usedText\")}
  5. \n
  6. {t(\"account_management.service_information.pointCost\")} {point}{t(\"account_management.service_information.receiverText\")}
  7. \n
  8. \n \n

    \n \n
  9. \n
\n
\n \n );\n };\n \n export default DialogAlertPoints;\n ","import React, { useEffect, useRef, useState } from \"react\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport Stepper from \"@material-ui/core/Stepper\";\nimport Step from \"@material-ui/core/Step\";\nimport StepLabel from \"@material-ui/core/StepLabel\";\nimport Button from \"@material-ui/core/Button\";\nimport { Dialog } from \"@material-ui/core\";\nimport cn from \"classnames\";\nimport Flex from \"components/Flex\";\nimport { useTranslation } from \"react-i18next\";\nimport styles from \"./styles.module.scss\";\nimport {\n getIsGuideByKey,\n GUIDE_TYPE_ENUM,\n setIsGuideByKey\n} from \"utils/helper\";\nimport { useSelector } from \"react-redux\";\nimport { selectGuideListByKey } from \"stores/config/config.selector\";\nimport YouTube from \"react-youtube\";\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n padding: \"8px 24px\",\n backgroundColor: \"#ffffff\",\n borderRadius: \"12px\",\n border: \"none\"\n },\n button: {\n marginRight: theme.spacing(2),\n borderRadius: \"8px\",\n padding: \"8px 16px\"\n },\n instructions: {\n marginTop: theme.spacing(2),\n marginBottom: theme.spacing(2),\n fontSize: \"16px\",\n backgroundColor: \"#ffffff\"\n },\n step: {\n width: \"100%\",\n backgroundColor: \"#ffffff\",\n border: \"none\"\n },\n stepper: {\n width: \"100%\",\n padding: \"0px !important\", \n backgroundColor: \"#ffffff\",\n border: \"none !important\",\n marginBottom: \"16px\"\n },\n content: {\n textAlign: \"center\",\n marginBottom: \"16px\"\n }\n}));\n\nconst StepContent = ({ step, data }) => {\n if (!data?.length) return null;\n return (\n \n
\n \n
\n
\n

\n {data[step]?.title}\n

\n
\n
\n );\n};\n\n\nexport default function Introduce({ handleClose }) {\n const classes = useStyles();\n const [activeStep, setActiveStep] = useState(0);\n const [skipped, setSkipped] = useState(new Set());\n const contentRef = useRef();\n const { t } = useTranslation();\n\n const introduceData = useSelector(\n selectGuideListByKey(GUIDE_TYPE_ENUM.video_introduce)\n );\n const [tourConfig, setTourConfig] = useState([]);\n\n useEffect(() => {\n if (\n getIsGuideByKey(GUIDE_TYPE_ENUM.video_introduce) &&\n introduceData?.length\n ) {\n setTourConfig(introduceData);\n }\n }, [introduceData]);\n\n const isStepSkipped = (step) => {\n return skipped.has(step);\n };\n\n const closeModal = () => {\n setTourConfig([]);\n setIsGuideByKey(GUIDE_TYPE_ENUM.video_introduce);\n handleClose();\n };\n\n const handleNext = () => {\n if (activeStep === tourConfig.length - 1) {\n closeModal();\n }\n let newSkipped = skipped;\n if (isStepSkipped(activeStep)) {\n newSkipped = new Set(newSkipped.values());\n newSkipped.delete(activeStep);\n }\n\n setActiveStep((prevActiveStep) => prevActiveStep + 1);\n setSkipped(newSkipped);\n };\n\n const handleBack = () => {\n setActiveStep((prevActiveStep) => prevActiveStep - 1);\n };\n\n return (\n 0}\n aria-labelledby=\"alert-dialog-title\"\n aria-describedby=\"alert-dialog-description\"\n PaperProps={{\n style: {\n borderRadius: \"12px\",\n padding: \"24px\",\n backgroundColor: \"#ffffff\",\n boxShadow: \"0px 4px 8px rgba(0, 0, 0, 0.1)\"\n }\n }}\n >\n
\n \n
\n \n {tourConfig.map((label, index) => {\n const stepProps = {};\n const labelProps = {};\n if (isStepSkipped(index)) {\n stepProps.completed = false;\n }\n return (\n \n \n \n );\n })}\n \n
\n \n
\n \n \n \n {t(\"update.back\")}\n \n\n \n {activeStep === tourConfig.length - 1\n ? t(\"common.btn.close\")\n : t(\"update.next\")}\n \n \n
\n
\n \n );\n}\n","import React, { useState } from \"react\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport IMAGES from \"../../../../../src/images\";\n\nconst MessengerButton = ({ name, point, handleClose }) => {\n const useStyles = makeStyles((theme) => ({\n root: {},\n\n //\n chatBox: {\n position: \"fixed\",\n bottom: \"80px\",\n right: \"27px\",\n zIndex: 100,\n\n \"& div\": {\n width: \"54px\",\n marginBottom: \"8px\",\n cursor: \"pointer\",\n \"& .image\": {\n \"& img\": {\n width: \"100%\",\n filter: \"drop-shadow(0px 3px 6px rgb(0 0 0 / 0.25))\"\n }\n }\n }\n },\n\n btnItem: {\n position: \"relative\",\n \"& .text-content\": {\n display: \"none\",\n width: \"fit-content\",\n padding: \"10px\",\n backgroundColor: \"white\",\n position: \"absolute\",\n right: \"120%\",\n top: \"50%\",\n borderRadius: \"6px\",\n boxShadow: \"0 1.93465px 7.73859px rgba(0,0,0,.15)\",\n transform: \"translateY(-50%)\"\n },\n \"&:hover .text-content\": {\n display: \"block\"\n }\n },\n closeBtn: {\n transition: \"0.5s linear\",\n \"&:hover\": {\n transform: \"rotate(360deg)\",\n transition: \"0.5s linear\"\n }\n }\n }));\n const classes = useStyles();\n const [isOpen, setIsOpen] = useState(false);\n\n const onOpen = () => {\n setIsOpen(!isOpen);\n };\n return (\n
\n {/* */}\n {isOpen && (\n
\n
\n
\n \n \"\"\n \n
\n
hotro.bombot.vn
\n
\n\n
\n
\n \n \n \n
\n
028.7101.0134
\n
\n\n
\n
\n \n \n \n
\n
mailto:hotro@bombot.vn
\n
\n\n
\n
\n \n \n \n
\n
\n\n
onOpen()}>\n
\n \n
\n
\n
\n )}\n\n {!isOpen && (\n
onOpen()}>\n
\n \n
\n
\n )}\n
\n );\n};\nexport default MessengerButton;\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { makeStyles } from '@material-ui/core/styles'\nimport {\n HourglassEmpty,\n PlayCircleFilled,\n PauseCircleFilled,\n CheckCircle,\n} from '@material-ui/icons'\n\n// Styles\nconst useStyles = makeStyles((theme) => ({\n base: {\n padding: theme.spacing(1.5), // Padding mặc định\n borderRadius: '4px',\n margin: theme.spacing(1, 0),\n display: 'flex',\n alignItems: 'center',\n },\n pending: {\n color: 'blue',\n backgroundColor: 'rgba(33, 150, 243, 0.2)', // Xanh dương nhạt\n },\n running: {\n color: 'teal',\n backgroundColor: 'rgba(0, 128, 128, 0.2)', // Màu xanh ngọc nhạt\n },\n cancel: {\n color: 'orange',\n backgroundColor: 'rgba(255, 152, 0, 0.2)', // Cam nhạt\n },\n done: {\n color: 'darkgreen',\n backgroundColor: 'rgba(34, 139, 34, 0.2)', // Xanh lá đậm nhạt\n },\n small: {\n padding: theme.spacing(1), // Padding nhỏ\n fontSize: '12px !important',\n '& $icon': {\n fontSize: '16px !important',\n },\n },\n medium: {\n padding: '8px 12px', // Padding vừa\n fontSize: '14px !important',\n '& $icon': {\n fontSize: '20px !important',\n },\n },\n large: {\n padding: theme.spacing(2), // Padding lớn\n fontSize: '16px !important',\n '& $icon': {\n fontSize: '24px !important',\n },\n },\n icon: {\n marginRight: theme.spacing(1),\n },\n textsmall: {\n fontSize: '12px !important',\n },\n textmedium: {\n fontSize: '14px !important',\n },\n textlarge: {\n fontSize: '16px !important',\n },\n}))\n\n// Component\nconst CampaignStatusLabel = ({\n message,\n type,\n size = 'medium',\n icon,\n ...res\n}) => {\n const classes = useStyles()\n\n // Map trạng thái sang class\n let statusClass\n let IconComponent\n\n if (type === 'pending') {\n statusClass = classes.pending\n IconComponent = HourglassEmpty\n } else if (type === 'running') {\n statusClass = classes.running\n IconComponent = PlayCircleFilled\n } else if (type === 'cancel') {\n statusClass = classes.cancel\n IconComponent = PauseCircleFilled\n } else if (type === 'done') {\n statusClass = classes.done\n IconComponent = CheckCircle\n }\n\n // Kết hợp class của kích thước\n const sizeClass = classes[size] || classes.medium\n\n let textStatusClass = classes[`text${size}`]\n\n return IconComponent ? (\n \n {icon && }\n

{message}

\n \n ) : null\n}\n\n// PropTypes\nCampaignStatusLabel.propTypes = {\n message: PropTypes.string.isRequired,\n type: PropTypes.oneOf(['pending', 'running', 'cancel', 'done']).isRequired,\n size: PropTypes.oneOf(['small', 'medium', 'large']),\n}\n\nCampaignStatusLabel.defaultProps = {\n size: 'medium',\n}\n\n// Export trạng thái\nexport const campaignStatusDir = {\n pending: 'Initial',\n running: 'Running',\n cancel: 'Paused',\n done: 'Completed',\n}\n\nexport default CampaignStatusLabel\n","import { CircularProgress } from '@material-ui/core'\nimport React from 'react'\n\nconst LoadingWrapper = ({ children, isOpen, style, ...res }) => {\n return (\n
\n {children}\n {isOpen && (\n \n \n
\n )}\n \n )\n}\n\nexport default LoadingWrapper\n","import React from 'react'\n\nconst CoppyIcon = ({ height, width }) => {\n return (\n \n \n \n \n \n )\n}\n\nexport default CoppyIcon\n","import axiosClient from './axiosClient'\nimport urlApi from './url'\n\nconst baseUrl = `${process.env.REACT_APP_API_URL}`\n\nconst scenarioApi = {\n get: (params) => {\n return axiosClient.get(`${baseUrl}api/v1.0/scenario`, { params })\n },\n deleteScenario: (payload) => {\n return axiosClient\n .delete(\n `${baseUrl}api/v1.0/campaign/${payload?.id}/scenario/${payload?.scenarioId}`,\n {\n data: payload,\n }\n )\n .then((res) => res.data)\n },\n}\n\nexport default scenarioApi\n","import React from 'react'\nimport ButtonComponent from '../Button'\nimport { useTranslation } from 'react-i18next'\nimport FormDialog from '../FormDialog'\nimport cn from 'classnames'\nimport { makeStyles } from '@material-ui/core'\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n width: '100%',\n padding: '15px 15px 15px 0px',\n },\n paper: {\n width: '100%',\n marginBottom: theme.spacing(2),\n },\n table: {\n minWidth: '100%',\n },\n visuallyHidden: {\n border: 0,\n clip: 'rect(0 0 0 0)',\n height: 1,\n margin: -1,\n overflow: 'hidden',\n padding: 0,\n position: 'absolute',\n top: 20,\n width: 1,\n },\n noData: {\n color: 'rgba(0,0,0,.5)',\n fontWeight: 'bold',\n textAlign: 'center',\n paddingBottom: 15,\n },\n buttonIEA: {\n width: '100%',\n textAlign: 'right',\n marginRight: '15px',\n paddingRight: '15px',\n '& button': {\n marginLeft: 15,\n },\n },\n avatar: {\n margin: '0px auto',\n },\n titlePopup: {\n textAlign: 'center',\n color: '#05AE34',\n },\n wrapButtonPopup: {\n textAlign: 'center',\n },\n}))\n\nconst ConfirmModal = ({ open, handleSubmit, handleCancel, title }) => {\n const { t } = useTranslation()\n const classes = useStyles()\n\n return (\n \n
\n

\n {title}\n

\n
\n \n \n
\n
\n
\n )\n}\n\nexport default ConfirmModal\n","import { createSlice } from '@reduxjs/toolkit'\n\nconst initialState = {\n loading: false,\n}\n\nconst loadingSlice = createSlice({\n name: 'loading',\n initialState,\n reducers: {\n openLoading: (state, action) => {\n state.loading = true\n },\n closeLoading: (state, action) => {\n state.loading = false\n },\n },\n})\n\nexport const { openLoading, closeLoading } = loadingSlice.actions\n\nexport default loadingSlice\n","import React from 'react'\nimport { useTranslation } from 'react-i18next'\n\n// Hàm tính khoảng thời gian còn lại\nconst calculateTimeRemaining = (sendTime) => {\n const now = new Date()\n const targetTime = new Date(sendTime)\n const diff = targetTime - now\n\n if (diff <= 0) return null // Không cần tính khi đã trễ\n\n const hours = Math.floor(diff / (1000 * 60 * 60))\n const minutes = Math.floor((diff % (1000 * 60 * 60)) / (1000 * 60))\n\n if (hours > 0) {\n return `${hours} hour(s) ${minutes} minute(s)`\n } else {\n return `${minutes} minute(s)`\n }\n}\n\n// Hàm xác định trạng thái thời gian\nconst determineTimeStatus = (sendTime) => {\n if (!sendTime) return 'unscheduled' // Không có thời gian gửi\n const now = new Date()\n const targetTime = new Date(sendTime)\n\n if (targetTime < now) {\n return 'overdue' // Trễ lịch\n } else if ((targetTime - now) / (1000 * 60) <= 30) {\n return 'upcoming' // Sắp tới\n } else {\n return 'scheduled' // Lịch gửi\n }\n}\n\n// Hàm xác định màu sắc dựa trên trạng thái\nconst getStatusColors = (status) => {\n switch (status) {\n case 'overdue':\n return { backgroundColor: '#ffcccc', textColor: '#ff0000' } // Đỏ nhạt\n case 'upcoming':\n return { backgroundColor: '#fff4cc', textColor: '#ffa500' } // Cam nhạt\n case 'scheduled':\n return { backgroundColor: '#ccffcc', textColor: '#008000' } // Xanh lá nhạt\n case 'unscheduled':\n return { backgroundColor: '#e0e0e0', textColor: '#808080' } // Xám\n default:\n return { backgroundColor: '#ffffff', textColor: '#000000' } // Trắng\n }\n}\n\n// Component chính\nconst TimeLabel = ({ sendTime, style }) => {\n const { t } = useTranslation()\n const status = determineTimeStatus(sendTime)\n const colors = getStatusColors(status)\n const timeRemaining = sendTime ? calculateTimeRemaining(sendTime) : null\n\n // Format thời gian gửi\n const formattedSendTime = sendTime\n ? new Date(sendTime).toLocaleString()\n : null\n\n // Nội dung hiển thị\n let displayText\n if (status === 'unscheduled') {\n displayText = t('scenario_detail.no_scheduled_time')\n } else if (status === 'overdue') {\n displayText = t('scenario_detail.overdue')\n } else if (status === 'upcoming') {\n displayText = `${timeRemaining}`\n } else {\n displayText = `${formattedSendTime}`\n }\n\n return (\n \n {displayText}\n \n )\n}\n\nexport default TimeLabel\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { makeStyles } from '@material-ui/core/styles'\nimport {\n Dialog,\n DialogTitle,\n DialogContent,\n DialogActions,\n Button,\n Typography,\n} from '@material-ui/core'\nimport { useTranslation } from 'react-i18next'\n\n// Styles\nconst useStyles = makeStyles((theme) => ({\n dialog: {\n borderRadius: '8px',\n padding: theme.spacing(2),\n },\n title: {\n fontWeight: 'bold',\n fontSize: '20px',\n color: theme.palette.primary.main,\n },\n message: {\n fontSize: '16px',\n color: theme.palette.text.primary,\n marginTop: theme.spacing(1),\n },\n actions: {\n display: 'flex',\n justifyContent: 'space-between',\n padding: theme.spacing(2),\n },\n button: {\n padding: theme.spacing(1, 2),\n textTransform: 'capitalize',\n },\n}))\n\nconst ConfirmModal2 = ({\n open,\n onClose,\n onConfirm,\n title = 'Confirmation',\n message = 'Are you sure?',\n confirmText = 'Confirm',\n cancelText = 'Cancel',\n confirmColor = 'primary',\n cancelColor = 'default',\n}) => {\n const classes = useStyles()\n\n const { t } = useTranslation()\n\n return (\n \n {/* Tiêu đề */}\n \n {title}\n \n\n {/* Nội dung */}\n \n {message}\n \n\n {/* Hành động */}\n \n \n {t('common.btn.cancel')}\n \n \n {t('confirm')}\n \n \n \n )\n}\n\nConfirmModal2.propTypes = {\n open: PropTypes.bool.isRequired, // Modal có hiển thị không\n onClose: PropTypes.func.isRequired, // Hàm đóng modal\n onConfirm: PropTypes.func.isRequired, // Hàm xác nhận hành động\n title: PropTypes.string, // Tiêu đề của modal\n message: PropTypes.string, // Nội dung của modal\n confirmText: PropTypes.string, // Text trên nút xác nhận\n cancelText: PropTypes.string, // Text trên nút hủy\n confirmColor: PropTypes.oneOf(['default', 'primary', 'secondary']), // Màu nút xác nhận\n cancelColor: PropTypes.oneOf(['default', 'primary', 'secondary']), // Màu nút hủy\n}\n\nexport default ConfirmModal2\n","import { useCallback, useEffect, useState } from \"react\";\n\nimport {\n ButtonGroup,\n IconButton,\n makeStyles,\n Paper,\n styled,\n Table,\n TableBody,\n TableCell,\n TableContainer,\n TableHead,\n TableRow,\n TableSortLabel,\n Tooltip,\n withStyles\n} from \"@material-ui/core\";\nimport Button from \"@material-ui/core/Button\";\n\nimport {\n KeyboardArrowDown,\n KeyboardArrowUp,\n RemoveCircleOutlined,\n Send\n} from \"@material-ui/icons\";\nimport { Pagination } from \"@material-ui/lab\";\nimport _ from \"lodash\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport CampaignStatusLabel from \"./CampaignStatusLabel\";\nimport LoadingWrapper from \"./LoadingWrapper\";\nimport CoppyIcon from \"./CoppyIcon\";\n\nimport { showError, showSuccess } from \"../stores/alert/slice.alert\";\nimport moment from \"moment\";\nimport { useTranslation } from \"react-i18next\";\nimport scenarioApi from \"../api/scenarioApi\";\nimport ConfirmModal from \"./ConfirmModal\";\nimport { closeLoading, openLoading } from \"../stores/loading/slice.loading\";\nimport Flex from \"./Flex\";\nimport TimeLabel from \"./TimeLabel\";\nimport { useHistory } from \"react-router-dom/cjs/react-router-dom.min\";\nimport FiltersContainer from \"./FiltersContainer\";\nimport ConfirmModal2 from \"./ConfirmModal2\";\nimport types from \"../constants/types\";\n\nconst useStyles = makeStyles((theme) => ({\n paper: {\n width: \"100%\",\n // marginBottom: theme.spacing(2),\n boxShadow: \"0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24)\",\n borderRadius: \"0px\",\n overflow: \"hidden\",\n border: \"1px solid rgb(222, 225, 230)\"\n },\n collapseBtn: {\n minWidth: \"50px\",\n padding: \"0 8px !important\"\n },\n\n witdhOrd: {\n minWidth: \"60px\",\n padding: \"0 8px !important\"\n },\n\n witdhId: {\n minWidth: \"170px\",\n padding: \"0 8px !important\"\n },\n\n widthName: {\n minWidth: \"160px\",\n padding: \"0 8px !important\"\n },\n\n widthCreator: {\n minWidth: \"160px\",\n padding: \"0 8px !important\"\n },\n\n widthDate: {\n minWidth: \"160px\",\n padding: \"0 8px !important\"\n },\n\n widthStatisticBtn: {\n minWidth: \"170px\",\n padding: \"0 8px !important\"\n },\n\n widthStatistic: {\n minWidth: \"180px\",\n padding: \"0 8px !important\"\n },\n\n widthActions: {\n minWidth: \"160px\",\n padding: \"0 8px !important\"\n },\n\n widthStatus: {\n minWidth: \"130px\",\n padding: \"0 8px !important\"\n },\n\n p0: {\n padding: \"0\",\n margin: \"0\"\n },\n\n heightHeader: {\n height: \"52px\"\n },\n\n f600: {\n fontWeight: 600\n },\n\n actions: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-end\",\n width: \"100%\",\n padding: \"10px 26px 16px 0\"\n },\n\n actionBtnRemove: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n color: \"#ff4d4f\", // Red color for delete button\n fontWeight: 600,\n padding: \"6px 12px\",\n borderRadius: theme.shape.borderRadius,\n transition: \"all 0.3s ease\", // Transition for smooth effect\n \"&:hover\": {\n backgroundColor: \"rgba(255, 77, 79, 0.1)\" // Light red background on hover\n }\n },\n\n actionBtnDetail: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n color: \"rgb(0, 123, 255)\", // Red color for delete button\n fontWeight: 600,\n padding: \"6px 10px\",\n borderRadius: theme.shape.borderRadius,\n transition: \"all 0.3s ease\", // Transition for smooth effect\n \"&:hover\": {\n backgroundColor: \"rgba(33, 150, 243, 0.2)\" // Light red background on hover\n }\n },\n\n actionSend: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n color: \"#52c41a\", // Màu xanh lá cho nút gửi tin nhắn\n fontWeight: 600,\n padding: \"8px 12px\",\n borderRadius: theme.shape.borderRadius,\n transition: \"all 0.3s ease\", // Hiệu ứng chuyển mượt\n \"&:hover\": {\n backgroundColor: \"rgba(82, 196, 26, 0.1)\" // Nền xanh lá nhạt khi hover\n }\n },\n\n actionAdd: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n color: \"#636ae8\", // Màu xanh lá cho nút gửi tin nhắn\n fontWeight: 600,\n padding: theme.spacing(1, 2),\n borderRadius: theme.shape.borderRadius,\n transition: \"all 0.3s ease\", // Hiệu ứng chuyển mượt\n \"&:hover\": {\n backgroundColor: \"rgba(99, 106, 232, 0.1)\" // Nền xanh lá nhạt khi hover\n\n // backgroundColor: 'rgba(82, 196, 26, 0.1)', // Nền xanh lá nhạt khi hover\n }\n },\n\n actionBtnSearch: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n color: \"#007bff\", // Blue color similar to \"Bombot Tags\" text\n fontWeight: 600,\n padding: theme.spacing(1, 2),\n borderRadius: theme.shape.borderRadius,\n transition: \"all 0.3s ease\", // Transition for smooth effect\n backgroundColor: \"rgb(230, 243, 255, 0.5)\",\n \"&:hover\": {\n backgroundColor: \"rgb(230, 243, 255, 0.8)\" // Light blue background color\n },\n border: \"1px solid #a3c1dd\"\n },\n\n actionIcon: {\n fontSize: \"14px\"\n },\n actionTitle: {\n margin: 0,\n fontSize: \"10px !important\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\"\n },\n\n rowItem: {\n cursor: \"pointer\"\n }\n}));\n\nconst sortFields = {\n CREATED_AT: \"createdAt\",\n TIME_SCHEDULE: \"timeSchedule\",\n ALPHABET: \"alphabet\"\n};\n\nconst sortOrd = {\n ASC: \"asc\",\n DESC: \"desc\"\n};\n\nconst dateRange = {\n LAST_7D: [\n moment().clone().subtract(7, \"days\").format(\"YYYY-MM-DD\"),\n moment().format(\"YYYY-MM-DD\")\n ],\n NEXT_24H: [\n moment().format(\"YYYY-MM-DD\"),\n moment().clone().add(1, \"days\").format(\"YYYY-MM-DD\")\n ],\n NEXT_3D: [\n moment().format(\"YYYY-MM-DD\"),\n moment().clone().add(3, \"days\").format(\"YYYY-MM-DD\")\n ],\n NEXT_7D: [\n moment().format(\"YYYY-MM-DD\"),\n moment().clone().add(7, \"days\").format(\"YYYY-MM-DD\")\n ],\n NEXT_14D: [\n moment().format(\"YYYY-MM-DD\"),\n moment().clone().add(14, \"days\").format(\"YYYY-MM-DD\")\n ],\n NEXT_30D: [\n moment().format(\"YYYY-MM-DD\"),\n moment().clone().add(30, \"days\").format(\"YYYY-MM-DD\")\n ]\n};\n\nexport const initSort = {\n [sortFields.CREATED_AT]: \"asc\",\n [sortFields.TIME_SCHEDULE]: \"asc\",\n [sortFields.ALPHABET]: \"asc\"\n};\n\nconst defaultSizeGetScenario = 10;\n\nconst ScenarioManagement = (isPagination) => {\n const classes = useStyles();\n\n const history = useHistory();\n\n const { t } = useTranslation();\n\n const dispatch = useDispatch();\n\n const [isCopiedId, setIsCopiedId] = useState(false);\n const [removingScenario, setRemovingScenario] = useState(null);\n const [isLoadingList, setIsLoadingList] = useState(false);\n\n const [page, setPage] = useState(0);\n const [subScenarios, setCollapsedScenarios] = useState(null);\n const [scenarioList, setScenarioList] = useState(null);\n\n const [selectedFilter, setSelectedFilter] = useState(\"NEXT_7D\");\n\n const handleFilterChange = (filter) => {\n if (filter === \"ALL\") {\n history.push({\n pathname: `/quan-ly-kich-ban`\n });\n }\n setSelectedFilter(filter);\n // Gọi hàm để tải lại danh sách kịch bản với bộ lọc mới\n // Ví dụ: loadScenarioList(filter);\n };\n\n useEffect(() => {\n (async () => {\n setIsLoadingList(true);\n\n const params = {\n page: page,\n size: 10,\n limit: 30,\n search: `scheduleTime=bw=${dateRange[selectedFilter].join(\",\")}`\n };\n\n const res = await getScenarioList(params);\n\n setScenarioList(res);\n\n setIsLoadingList(false);\n })();\n }, [selectedFilter, removingScenario]);\n\n const handleChangePage = async (event, newPage) => {\n setPage(newPage);\n setIsLoadingList(true);\n\n let sort = ``;\n let search = \"\";\n\n const params = {\n page: newPage,\n size: 10,\n limit: 30,\n search: `search=scheduleTime=bw=${dateRange[\"NEXT_3D\"]},${dateRange[\"NEXT_3D\"]}`\n };\n\n const res = await getScenarioList(params);\n\n setScenarioList(res);\n\n setIsLoadingList(false);\n };\n\n const handleDeleteScenario = async (scenarioId, campaignId) => {\n if (!scenarioId || !campaignId) return;\n try {\n dispatch(openLoading());\n const payload = {\n id: campaignId,\n scenarioId\n };\n // await dispatch(deleteScenario(payload))\n\n await scenarioApi.deleteScenario(payload);\n\n const params = {\n page: 0,\n size: 10,\n limit: 30,\n search: `scheduleTime=bw=${dateRange[selectedFilter].join(\",\")}`\n };\n\n const res = await getScenarioList(params);\n\n setScenarioList(res);\n\n dispatch(showSuccess(\"Delete Scenario Successfully\"));\n } catch (error) {\n console.log(\"error ==>\", error);\n dispatch(showError(error.message));\n } finally {\n dispatch(closeLoading());\n }\n };\n\n const getScenarioList = async (params) => {\n return scenarioApi.get(params);\n };\n\n const onViewScenario = useCallback((campaignId, scenarioId, pageId) => {\n window.open(\n `${types.URL.FACEBOOK}&token=${\n localStorage.getItem(\"token\") || null\n }&campaign=${campaignId}&pageId=${pageId}&scenario=${scenarioId}`,\n \"_blank\"\n );\n }, []);\n\n return (\n
\n \n \n\n \n {/* */}\n\n \n \n \n \n \n \n\n \n
{t(\"overall.lastest_scenario.number\")}
\n \n \n
{t(\"overall.lastest_scenario.code\")}
\n \n \n
{t(\"overall.lastest_scenario.name\")}
\n \n {/* \n
Creator
\n */}\n \n
{t(\"overall.lastest_scenario.created_date\")}
\n \n \n
{t(\"overall.lastest_scenario.customers\")}
\n \n \n
{t(\"overall.lastest_scenario.cus_success\")}
\n \n \n
{t(\"overall.lastest_scenario.cus_failed\")}
\n \n \n
{t(\"overall.lastest_scenario.cus_not_send\")}
\n \n \n
{t(\"overall.lastest_scenario.messages\")}
\n \n \n
\n {t(\"overall.lastest_scenario.messages_success\")}\n
\n \n \n
{t(\"overall.lastest_scenario.messages_failed\")}
\n \n \n
\n {t(\"overall.lastest_scenario.messages_not_send\")}\n
\n \n\n \n
\n {t(\"overall.lastest_scenario.message_sent_count\")}\n
\n \n\n \n
{t(\"overall.lastest_scenario.status\")}
\n \n \n
{t(\"overall.lastest_scenario.schedule_send\")}
\n \n\n {/* {scenarioList?.content?.length > 0 && (\n \n
{t(\"overall.lastest_scenario.actions\")}
\n \n )} */}\n \n
\n\n {scenarioList?.content?.length > 0 && (\n \n {scenarioList?.content?.map((row, index) => (\n <>\n \n onViewScenario(row.campaignId, row.id, row.pageId)\n }\n className={[classes.heightHeader, classes.rowItem]}\n >\n \n {row.totalSubScenario ? (\n {\n // if (\n // subScenarios?.length &&\n // subScenarios[0]?.scenarioRefId === row.id\n // ) {\n // handleShowSubScenarios(null)\n // } else {\n // handleShowSubScenarios(row.id)\n // }\n // }}\n >\n {subScenarios?.length &&\n subScenarios[0]?.scenarioRefId === row.id ? (\n \n ) : (\n \n )}\n \n ) : (\n <>\n )}\n \n\n \n
\n {scenarioList?.pageable?.pageNumber *\n defaultSizeGetScenario +\n index +\n 1}\n
\n \n\n \n \n \n \n {row.id}\n \n \n \n {\n e.stopPropagation();\n navigator.clipboard.writeText(row.id);\n setIsCopiedId(true);\n setTimeout(() => {\n setIsCopiedId(false);\n }, 1000);\n }}\n size=\"small\"\n style={{ marginLeft: \"14px\" }}\n >\n \n \n \n \n \n\n \n {row.name ? (\n
{row.name}
\n ) : (\n \n {\"_\"}\n

\n )}\n \n\n \n {row.createdAt ? (\n
\n {moment(row.createdAt).format(\n \"DD/MM/YYYY HH:mm\"\n )}\n
\n ) : (\n \n {\"_\"}\n

\n )}\n \n\n \n {row.totalCus ? (\n \n \n {row.totalCus}\n

\n \n ) : (\n \n {\"_\"}\n

\n )}\n \n\n \n
{row.customerSuccess}
\n \n\n \n
{row.customerFailed}
\n \n\n \n
{row.customerNotSend}
\n \n\n \n
{row.totalMes}
\n \n\n \n
{row.messageSuccess}
\n \n\n \n
{row.messageFailed}
\n \n\n \n
{row.messageNotSend}
\n \n\n \n
{row.totalClickSent}
\n \n\n \n \n \n \n \n\n \n \n \n \n \n\n {/* \n \n \n \n onViewScenario(\n row.campaignId,\n row.id,\n row.pageId\n )\n }\n >\n
\n

\n {t(\"overall.lastest_scenario.see_detail\")}\n

\n
\n \n \n \n */}\n \n\n {subScenarios?.length === 0 &&\n subScenarios[0]?.scenarioRefId === row.id ? (\n subScenarios?.reverse().map((subRow, subIndex) => {\n return (\n \n \n\n \n\n \n \n \n \n {subRow.id}\n \n \n \n {\n e.stopPropagation();\n navigator.clipboard.writeText(\n subRow.id\n );\n setIsCopiedId(true);\n setTimeout(() => {\n setIsCopiedId(false);\n }, 1000);\n }}\n size=\"small\"\n style={{ marginLeft: \"14px\" }}\n >\n \n \n \n \n \n\n \n {subRow.name ? (\n
{subRow.name}
\n ) : (\n \n {\"_\"}\n

\n )}\n \n\n \n {subRow.createdAt ? (\n
\n {moment(subRow.createdAt).format(\n \"DD/MM/YYYY HH:mm\"\n )}\n
\n ) : (\n \n {\"_\"}\n

\n )}\n \n\n \n {subRow.totalCus ? (\n \n \n {subRow.totalCus}\n

\n {/* {\n e.stopPropagation()\n setScenarioCustomerSelected(subRow.id)\n }}\n >\n \n */}\n \n ) : (\n \n {\"_\"}\n

\n )}\n \n\n \n
{subRow.customerSuccess}
\n \n\n \n
{subRow.customerFailed}
\n \n\n \n
{subRow.customerNotSend}
\n \n\n \n
{subRow.totalMes}
\n \n\n \n
{subRow.messageSuccess}
\n \n\n \n
{subRow.messageFailed}
\n \n\n \n
{subRow.messageNotSend}
\n \n\n \n
{subRow.totalClickSent}
\n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n {/* \n {\n e.stopPropagation()\n setRemovingScenario(subRow)\n }}\n >\n
\n \n
\n \n */}\n\n \n \n onViewScenario(\n row.campaignId,\n row.id,\n row.pageId\n )\n }\n >\n \n

\n {t(\"campaign_dashboard.detail\")}\n

\n \n \n \n \n \n \n );\n })\n ) : (\n <> \n )}\n \n ))}\n
\n )}\n
\n \n\n {scenarioList?.content?.length === 0 && (\n \n \n {t(\"update.no_data\")}\n

\n
\n )}\n\n \n \n {/* {isPagination && scenarioList?.content?.length > 0 && (\n <>\n \n \n \n handleChangePage(event, newPage - 1)\n }\n disabled={scenarioList?.numberOfElements === 0}\n color=\"secondary\"\n />\n \n \n \n \n )} */}\n\n {\n setRemovingScenario(null);\n }}\n onConfirm={() => {\n handleDeleteScenario(\n removingScenario?.id,\n removingScenario?.campaignId\n );\n setRemovingScenario(null);\n }}\n title={`Confirm scenario deletion`}\n message={`Are you sure you want to delete the scenario ${removingScenario?.name}?`}\n open={!_.isNull(removingScenario)}\n />\n {/* {isOpenFilter && (\n setIsOpenFilter(false)}\n />\n )} */}\n \n \n );\n};\n\nconst CellSticky = styled(TableCell)`\n position: sticky;\n background-color: #fff;\n right: 0;\n top: 0;\n z-index: 2;\n box-shadow: -15px 0px 17px -7px #f0eded;\n`;\n\nconst HtmlTooltip = withStyles((theme) => ({\n tooltip: {\n backgroundColor: \"transparent\",\n maxWidth: \"none\"\n }\n}))(Tooltip);\n\nexport default ScenarioManagement;\n","import { Button } from '@material-ui/core'\nimport Avatar from '@material-ui/core/Avatar'\nimport Checkbox from '@material-ui/core/Checkbox'\nimport FormControl from '@material-ui/core/FormControl'\nimport { makeStyles } from '@material-ui/core/styles'\nimport TextField from '@material-ui/core/TextField'\nimport CheckBoxIcon from '@material-ui/icons/CheckBox'\nimport CheckBoxOutlineBlankIcon from '@material-ui/icons/CheckBoxOutlineBlank'\nimport Autocomplete from '@material-ui/lab/Autocomplete'\nimport cn from 'classnames'\nimport Flex from 'components/Flex'\nimport _ from 'lodash'\nimport MuiPhoneInput from 'material-ui-phone-number'\nimport { useEffect, useMemo, useRef, useState } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { useDispatch, useSelector } from 'react-redux'\nimport Tour from 'reactour'\nimport {\n selectCountries,\n selectCountriesOnly,\n selectGuideList,\n selectGuideListByKey,\n} from 'stores/config/config.selector'\nimport {\n getIsGuideByKey,\n GUIDE_TYPE_ENUM,\n handleUpgrade,\n setIsGuideByKey,\n} from 'utils/helper'\nimport ButtonComponent from '../../components/Button'\nimport FormDialog from '../../components/FormDialog'\nimport ListCampaignComponent from '../../components/ListCampaign'\nimport Loading from '../../components/Loading'\nimport types from '../../constants/types'\nimport MainLayout from '../MainLayout'\nimport AccountInfo from './items/AccountInfo'\nimport ChartDashboard from './items/Chart'\nimport DashboardChart from './items/Chart/Dashboard'\nimport DialogAlertPoints from './items/DialogAlertPoints'\nimport DialogVerifyPhone from './items/DialogVerifyPhone'\nimport Introduce from './items/Introduce'\nimport MessengerButton from './items/MessengerButton'\nimport ScenarioManagement from '../../components/ListScenario'\nimport FiltersContainer from '../../components/FiltersContainer'\nimport moment from 'moment'\nimport { useHistory } from 'react-router-dom/cjs/react-router-dom.min'\n// import CampaignChart from './items/Chart/Campaign'\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n background: 'red',\n },\n sidebar: {\n width: 250,\n float: 'left',\n height: '100vh',\n overflowY: 'auto',\n boxShadow: '0 4px 8px rgba(0, 0, 0, 0.1)',\n background: 'white',\n },\n wrapperCampaignHistory: {\n borderRadius: 20,\n },\n contentRight: {\n width: \"calc(100vw - 265px)\",\n float: \"right\",\n backgroundColor: \"#ffffff\"\n },\n account: {\n display: 'flex',\n alignItems: 'center',\n background: '#f0f0f0',\n padding: 15,\n },\n userName: {\n fontWeight: 'bold',\n },\n right: {\n marginLeft: 15,\n },\n wrapAccount: {\n padding: 15,\n },\n form: {\n width: '100%',\n // \"& .MuiInputLabel-filled.MuiInputLabel-shrink\": {\n // transform: \"translate(0px, -20px) scale(0.9) !important\",\n // overflow: \"hidden !important\",\n // \"-moz-box-sizing\": \"border-box !important\",\n // \"-webkit-box-orient\": \"vertical !important\",\n // \"-webkit-box-sizing\": \"border-box !important\",\n // \"-webkit-line-clamp\": \"1 !important\",\n // display: \"-webkit-box !important\",\n // /* padding: 0px 20px; */\n // },\n // \"& .MuiInputLabel-filled\": {\n // transform: \"translate(0px, -20px) scale(0.9) !important\",\n // overflow: \"hidden !important\",\n // \"-moz-box-sizing\": \"border-box !important\",\n // \"-webkit-box-orient\": \"vertical !important\",\n // \"-webkit-box-sizing\": \"border-box !important\",\n // \"-webkit-line-clamp\": \"1 !important\",\n // display: \"-webkit-box !important\",\n // /* padding: 0px 20px; */\n // },\n // \"& .MuiFilledInput-input\": {\n // padding: \"10px 12px 10px 2px\",\n // },\n // \"& .MuiAutocomplete-root\": {\n // marginTop: \"30px !important\",\n // marginBottom: \"30px !important\",\n // },\n },\n input: {\n marginBottom: 15,\n },\n button: {\n marginTop: 0,\n },\n buttonVerify: {\n width: 300,\n margin: '5px auto',\n },\n textField: {\n margin: '30px 0px 5px 0px !important',\n },\n select: {\n margin: '10px 0px !important',\n },\n formVerify: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n marginTop: 30,\n marginBottom: 30,\n '& $textField': {\n width: 330,\n },\n '& button': {\n margin: '0px 0px 0px 15px',\n },\n },\n number: {\n fontWeight: 'bold',\n },\n wrapSelectLabel: {\n zIndex: 1,\n fontSize: 16,\n paddingLeft: 10,\n marginTop: -5,\n '&.MuiFormLabel-filled': {\n display: 'none !important',\n },\n '&.Mui-focused': {\n display: 'none !important',\n },\n },\n wrapperMain: {\n paddingRight: \"0\",\n },\n wrapperBoxInfo: {\n display: 'flex',\n justifyContent: 'space-between',\n padding: '15px 15px 15px 0px',\n },\n\n boxInfoCampaign: {\n background: '#FF5757',\n '& h3': {\n background: '#FF7979',\n },\n '& $link': {\n background: '#E64F4F',\n lineHeight: 0.8,\n },\n },\n\n wrapperTable: {\n width: '100%',\n },\n error: {\n margin: '0px',\n fontSize: '13px',\n color: 'red',\n marginTop: '4px',\n marginLeft: '4px',\n },\n errorCode: {\n margin: '10px 0px 0px 10px',\n fontSize: '14px',\n color: 'red',\n textAlign: 'center',\n },\n wrapAutocomplete: {\n marginTop: 10,\n '& .MuiAutocomplete-inputRoot': {\n height: 'auto',\n },\n },\n}))\n\nconst HomeView = (props) => {\n const {\n getAccount,\n onVerifyNumberPhone,\n onGetOtp,\n verifyNumberPhone,\n user,\n onWhatYouNeed,\n onDashboard,\n share,\n dashboard,\n getCampaign,\n campaign,\n verifyNumberPhoneError,\n onVerifyNumberPhoneVoice,\n updateUser,\n loading,\n } = props\n const classes = useStyles()\n const [name, setName] = useState('')\n const [phone, setPhone] = useState('')\n const [email, setEmail] = useState('')\n const [company, setCompany] = useState('')\n const [business, setBusiness] = useState('')\n const [country, setCountry] = useState()\n const [giftPoints, setGiftPoints] = useState(0)\n const [isAlertPoints, setIsAlertPoints] = useState(true)\n\n const [province, setProvince] = useState('')\n const [isInfo, setIsInfo] = useState(true) // true\n const [isVerify, setIsVerify] = useState(false)\n const [nameError, setNameError] = useState('')\n const [phoneError, setPhoneError] = useState('')\n const [emailError, setEmailError] = useState('')\n const [countryError, setCountryError] = useState('')\n // const [proviceError, setProviceError] = useState(\"\");\n const [isVisibleIntroduce, setIsVisibleIntroduce] = useState(true)\n const [uid, setUID] = useState('')\n const tourOverview = useSelector(\n selectGuideListByKey(GUIDE_TYPE_ENUM.overview)\n )\n const [tourConfig, setTourConfig] = useState(null)\n const { t, i18n } = useTranslation()\n\n const countriesOnly = useSelector(selectCountriesOnly)\n const countries = useSelector(selectCountries)\n const dispatch = useDispatch()\n const isNavigateUpdateRef = useRef()\n const [isShowDashboardTooltip, setIsShowDashboardTooltip] = useState(false)\n\n const [selectedDate, setSelectedDate] = useState(\n new Date().toISOString().split('T')[0]\n )\n const [dailyData, setDailyData] = useState({})\n\n const [selectedFilter, setSelectedFilter] = useState('LAST_1M')\n\n const history = useHistory()\n\n const handleFilterChange = (filter) => {\n if (filter === 'ALL') {\n history.push({\n pathname: `/quan-ly-chien-dich`,\n })\n }\n\n setSelectedFilter(filter)\n }\n\n useEffect(() => {\n const dateData = dashboard.dailyData?.find(\n (item) => item.date === selectedDate\n )\n if (dateData) {\n setDailyData(dateData)\n } else {\n setDailyData({\n totalCus: 0,\n totalSent: 0,\n totalSuccess: 0,\n totalFail: 0,\n })\n }\n }, [selectedDate, dashboard])\n\n useEffect(() => {\n checkAlert()\n if (verifyNumberPhone) {\n setIsInfo(false)\n setIsVerify(false)\n }\n }, [verifyNumberPhone])\n /* End Off veriry phone */\n\n useEffect(() => {\n if (user?.id) {\n const url_string = window.location.href //window.location.href\n const url = new URL(url_string)\n const ref = url.searchParams.get('ref')\n const event = url.searchParams.get('event')\n\n if (\n event == 'upgrade' &&\n ref == 'extension' &&\n !isNavigateUpdateRef.current\n ) {\n isNavigateUpdateRef.current = true\n handleUpgrade({ i18n, user, dispatch })\n }\n }\n }, [user])\n\n useEffect(() => {\n onWhatYouNeed()\n onDashboard()\n }, [])\n\n useEffect(() => {\n const params = {\n page: types.PAGINATION.PAGE,\n size: types.PAGINATION.SIZE,\n sort: 'createdAt,desc',\n search: `createdAt=bw=${dateRange[selectedFilter][0]},${dateRange[selectedFilter][1]}`,\n }\n getCampaign(params)\n }, [selectedFilter])\n\n /* not veriry phone */\n useEffect(() => {\n if (user) {\n if (user?.name || getAccount?.name) {\n setName(user.name || getAccount.name)\n }\n if (user?.email || getAccount?.email) {\n setEmail(user.email || getAccount.email)\n }\n if (user?.phone) {\n let phone = user?.phone || getAccount?.phone\n // tạm thoi\n if (/^0/g.test(user?.phone)) {\n phone = user?.phone?.replace(/^0/g, '+84')\n }\n setPhone(phone)\n }\n // setBusiness(user?.business);\n setCompany(user?.company || '')\n\n setUID(user?.id)\n if (user.phone && user.verify) {\n setIsInfo(false)\n setIsVerify(false)\n if (\n !isVisibleIntroduce &&\n getIsGuideByKey(GUIDE_TYPE_ENUM.overview) &&\n tourOverview &&\n tourOverview?.length\n ) {\n setTourConfig(tourOverview)\n setIsGuideByKey(GUIDE_TYPE_ENUM.overview)\n }\n }\n }\n }, [user, tourOverview, isVisibleIntroduce])\n\n useEffect(() => {\n if (user?.business && share.business && !business) {\n let business = _.toString(user.business).split(',')\n const data = business?.map((b) => {\n return share.business.find((bus) => bus.id === b)\n })\n setBusiness(data)\n }\n\n if (countries && user.country) {\n setCountry(user.country)\n setProvince(user?.province)\n }\n\n if (share?.package && share?.package?.giftPoint) {\n setGiftPoints(share.package.giftPoint)\n }\n }, [user, share, countries])\n\n function checkAlert() {\n if (localStorage.getItem('alertGiftBox') != null) {\n setIsAlertPoints(false)\n } else {\n setIsAlertPoints(true)\n }\n }\n\n const handleChange = (key, value) => {\n switch (key) {\n case 'name':\n setName(value)\n break\n case 'phone':\n setPhone(value)\n break\n case 'email':\n setEmail(value)\n break\n case 'company':\n setCompany(value)\n break\n case 'province':\n setProvince(value)\n break\n case 'business':\n setBusiness(value)\n break\n case 'country':\n setCountry(value)\n setProvince('')\n break\n\n default:\n break\n }\n }\n\n const handleDateChange = (event) => {\n setSelectedDate(event.target.value)\n }\n\n const providerOptions = useMemo(() => {\n if (country) {\n const countrySelected = countries.find((c) => c.countryName === country)\n if (countrySelected) return countrySelected?.provinces\n }\n }, [country])\n\n const handleVerify = (otp) => {\n const data = {\n name,\n phone,\n email,\n company,\n business: business ? business?.map((v) => v?.id) : [],\n country,\n province,\n }\n onVerifyNumberPhone({ phone: phone, otp }, data, uid)\n if (verifyNumberPhone) {\n setIsInfo(false)\n }\n }\n\n const handleVerifyOtpVoice = (otp) => {\n console.warn(business)\n const data = {\n name,\n phone,\n email,\n company,\n business: business ? business.map((v) => v.id) : [],\n country,\n province,\n }\n onVerifyNumberPhoneVoice({ phone: phone, otp }, data, uid)\n if (verifyNumberPhone) {\n setIsInfo(false)\n }\n }\n\n const handleSubmit = () => {\n if (validate()) {\n // onGetOtp({ phone: phone, type: \"text\" });\n setIsInfo(false)\n setIsVerify(true)\n }\n }\n\n const validate = () => {\n setNameError('')\n setPhoneError('')\n setEmailError('')\n let isValid = true\n if (!name || !/\\S/.test(name)) {\n isValid = false\n setNameError(t('noti.name_incorrect'))\n }\n if (!email) {\n isValid = false\n setEmailError(t('noti.email'))\n }\n\n if (email) {\n const pattern = new RegExp(\n /^((\"[\\w-\\s]+\")|([\\w-]+(?:\\.[\\w-]+)*)|(\"[\\w-\\s]+\")([\\w-]+(?:\\.[\\w-]+)*))(@((?:[\\w-]+\\.)*\\w[\\w-]{0,66})\\.([a-z]{2,6}(?:\\.[a-z]{2})?)$)|(@\\[?((25[0-5]\\.|2[0-4][0-9]\\.|1[0-9]{2}\\.|[0-9]{1,2}\\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\\]?$)/i\n )\n if (!pattern.test(email)) {\n isValid = false\n setEmailError(t('noti.email_incorrect'))\n }\n }\n\n if (!phone) {\n isValid = false\n setPhoneError(t('noti.phone'))\n }\n if (!phone?.trim() || phone.length < 5 || phone.length > 20) {\n isValid = false\n setPhoneError(t('noti.phone_incorrect'))\n }\n if (!country) {\n isValid = false\n setCountryError(t('update.country_incorrect'))\n } else {\n setCountryError('')\n }\n // if (country && !province) {\n // isValid = false;\n // setProviceError(t(\"update.province_incorrect\"));\n // } else {\n // setCountryError(\"\");\n // }\n return isValid\n }\n\n const handleBackVerify = () => {\n setIsInfo(true)\n setIsVerify(false)\n }\n\n const closeModalIntroduce = () => {\n setIsVisibleIntroduce(false)\n setTourConfig(null)\n }\n\n const closeAlertPoints = () => {\n setIsAlertPoints(false)\n }\n\n const closeTour = () => {\n setIsShowDashboardTooltip(true)\n setTourConfig(null)\n }\n\n const icon = \n const checkedIcon = \n\n const dateRange = {\n LAST_7D: [\n moment().subtract(7, 'days').startOf('day').format('YYYY-MM-DD'),\n moment().subtract(7, 'days').endOf('day').format('YYYY-MM-DD'),\n ],\n LAST_1M: [\n moment().subtract(1, 'months').startOf('month').format('YYYY-MM-DD'),\n moment().subtract(1, 'months').endOf('month').format('YYYY-MM-DD'),\n ],\n LAST_3M: [\n moment().subtract(3, 'months').startOf('month').format('YYYY-MM-DD'),\n moment().subtract(3, 'months').endOf('month').format('YYYY-MM-DD'),\n ],\n }\n\n return (\n \n \n {t('common.btn.close')}\n \n }\n onRequestClose={closeTour}\n />\n {loading && }\n handleCloseOpen(\"info\")}\n >\n
\n
\n
\n {user.avatar ? (\n \n ) : (\n \n )}\n
\n
\n

\n {t('form_collect_info.title')}{' '}\n {user.name}!\n

{' '}\n

{t('form_collect_info.description')}.

\n
\n
\n

{t('form_collect_info.helper')}

\n

{t('form_collect_info.helper_2')}

\n \n
\n handleChange('name', event.target.value)}\n />\n {!_.isEmpty(nameError) && (\n

{nameError}

\n )}\n
\n
\n handleChange('phone', phone)}\n />\n {/* handleChange(\"phone\", event.target.value)}\n /> */}\n {!_.isEmpty(phoneError) && (\n

{phoneError}

\n )}\n
\n
\n handleChange('email', event.target.value)}\n />\n {!_.isEmpty(emailError) && (\n

{emailError}

\n )}\n
\n
\n option?.name || ''}\n onChange={(e, value) => {\n handleChange('business', value)\n }}\n renderInput={(params) => (\n \n )}\n renderOption={(option, { selected }) => (\n <>\n \n {option?.name}\n \n )}\n />\n
\n\n
\n \n handleChange('company', event.target.value)\n }\n />\n
\n
\n handleChange('country', value)}\n renderInput={(params) => (\n \n )}\n />\n {!_.isEmpty(countryError) && (\n

{countryError}

\n )}\n
\n {country && country !== 'Other' && (\n
\n option || ''}\n style={{ marginTop: 10 }}\n value={province || ''}\n onChange={(e, value) => handleChange('province', value)}\n renderInput={(params) => (\n \n )}\n />\n {/* {!_.isEmpty(proviceError) && (\n

{proviceError}

\n )} */}\n
\n )}\n\n \n handleSubmit()}\n />\n \n
\n
\n \n {isVerify && (\n \n )}\n
\n \n \n \n \n\n
\n

{t('overall.statistic')}

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

{t('overall.lastest_campaign.title')}

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

{t('overall.lastest_scenario.title')}

\n
\n \n
\n
\n
\n {isVisibleIntroduce && (\n \n )}\n\n {isAlertPoints && giftPoints > 150 && (\n \n )}\n \n
\n )\n}\n\nHomeView.propTypes = {}\n\nHomeView.defaultProps = {}\n\nexport default HomeView\n","import { createSelector } from \"@reduxjs/toolkit\";\nexport const account = state => state.loginReducer.account;\nexport const statusLogined = state => state.loginReducer.statusLogined;\nexport const forgotPassword = state => state.loginReducer.forgotPassword;\n\nexport const getAccount = createSelector(\n [account],\n (account) => {\n return account;\n }\n);\n","import { createSelector } from \"@reduxjs/toolkit\";\n\nconst selectAppReducer = (state) => state.appReducer;\nexport const user = (state) => state.appReducer.user;\nexport const loading = (state) => state.appReducer.loading;\n\nexport const selectUser = createSelector(user, (user) => {\n return user;\n});\n\nexport const selectShare = createSelector(selectAppReducer, (state) => {\n return state.share;\n});\n","import axiosClient from './axiosClient'\nimport urlApi from './url'\nconst campaignApi = {\n get: (params) => {\n return axiosClient.get(`${urlApi.campaignApi.campaign}`, { params })\n },\n}\n\nexport default campaignApi\n","import { createSlice } from \"@reduxjs/toolkit\";\nimport initialState from \"../../configs/redux/initialState\";\n\nconst campaignReducer = createSlice({\n name: \"campaign\",\n initialState: initialState.campaignReducer,\n reducers: {\n setCampaign: (state, action) => {\n state.campaign = action.payload;\n },\n \n }\n});\n\nexport const {\n setCampaign\n} = campaignReducer.actions;\n\nexport default campaignReducer.reducer;\n","import campaignApi from '../../api/campaignApi';\nimport { setLoading } from \"../App/AppReducer\";\nimport {\n setCampaign,\n} from \"./CampaignReducer\";\n\nexport function getCampaign(params) {\n return dispatch => {\n dispatch(setLoading(true));\n return campaignApi.get(params).then(\n res => {\n dispatch(setCampaign(res));\n dispatch(setLoading(false));\n },\n error => {\n dispatch(setLoading(false));\n }\n );\n };\n}","import { createSelector } from \"@reduxjs/toolkit\";\nexport const campaign = state => state.campaignReducer.campaign;\n","import { connect } from \"react-redux\";\nimport { withRouter } from \"react-router-dom\";\nimport HomeView from \"./HomeView\";\nimport * as actionsHome from \"./HomeActions\";\nimport * as selectorsLogin from \"../Login/LoginSelectors\";\nimport * as selectorsHome from \"./HomeSelectors\";\nimport * as selectorsApp from \"../App/AppSelectors\";\nimport * as actionsCampaign from \"../Campaign/CampaignActions\";\nimport * as selectorsCampaign from \"../Campaign/CampaignSelectors\";\n// import * as selectorsHome from \"./HomeSelectors\";\nconst mapStateToProps = (state) => {\n return {\n getAccount: selectorsLogin.getAccount(state),\n verifyNumberPhone: selectorsHome.getVerifyNumberPhone(state),\n share: selectorsHome.share(state),\n user: selectorsApp.user(state),\n dashboard: selectorsHome.dashboard(state),\n campaign: selectorsCampaign.campaign(state),\n verifyNumberPhoneError: selectorsHome.verifyNumberPhoneError(state),\n loading: selectorsApp.loading(state),\n };\n};\n\nconst mapDispatchToProps = (dispatch) => ({\n updateUser: (data, uid) => dispatch(actionsHome.updateUser(data, uid)),\n onVerifyNumberPhone: (verify, data, uid) =>\n dispatch(actionsHome.onVerifyNumberPhone(verify, data, uid)),\n onVerifyNumberPhoneVoice: (verify, data, uid) =>\n dispatch(actionsHome.onVerifyNumberPhoneVoice(verify, data, uid)),\n onGetOtp: (data) => dispatch(actionsHome.onGetOtp(data)),\n onWhatYouNeed: () => dispatch(actionsHome.onWhatYouNeed()),\n onDashboard: () => dispatch(actionsHome.onDashboard()),\n getCampaign: (params) => dispatch(actionsCampaign.getCampaign(params)),\n});\nexport const selectShare = mapStateToProps;\n\nexport default withRouter(\n connect(mapStateToProps, mapDispatchToProps)(HomeView)\n);\n","import { ArrowDropDown } from \"@material-ui/icons\";\nimport React from \"react\";\n\nconst UserAvatar = React.memo(({ src, name }) => {\n const getInitials = (name) => {\n if (!name) return \"\";\n return name.charAt(0).toUpperCase();\n };\n\n const initials = getInitials(name);\n\n return (\n \n \n {src ? (\n \n ) : (\n \n {initials}\n \n )}\n \n \n {name}\n

\n \n \n );\n});\n\nexport default UserAvatar;\n","import React, { useEffect, useState } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport { fade, makeStyles, withStyles } from \"@material-ui/core/styles\";\nimport { pathKeys } from \"../../constants\";\nimport types from \"../../constants/types\";\nimport AppBar from \"@material-ui/core/AppBar\";\nimport Toolbar from \"@material-ui/core/Toolbar\";\nimport MenuItem from \"@material-ui/core/MenuItem\";\nimport Menu from \"@material-ui/core/Menu\";\nimport ArrowDropDownIcon from \"@material-ui/icons/ArrowDropDown\";\nimport Button from \"@material-ui/core/Button\";\nimport Avatar from \"@material-ui/core/Avatar\";\nimport ExitToAppIcon from \"@material-ui/icons/ExitToApp\";\nimport ListItemIcon from \"@material-ui/core/ListItemIcon\";\nimport ListItemText from \"@material-ui/core/ListItemText\";\nimport AccountCircleIcon from \"@material-ui/icons/AccountCircle\";\nimport InfoIcon from \"@material-ui/icons/Info\";\nimport FormDialog from \"../../components/FormDialog\";\nimport cn from \"classnames\";\nimport Flex from \"components/Flex\";\nimport { useTranslation } from \"react-i18next\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { selectShare } from \"views/Home/HomeContainer\";\nimport { handleUpgrade } from \"utils/helper\";\nimport UserAvatar from \"components/UserAvatar\";\n\nconst StyledMenu = withStyles({\n paper: {\n marginTop: 10,\n border: \"none !important\"\n }\n})((props) => (\n \n));\n\nconst StyledMenuItem = withStyles((theme) => ({\n root: {\n \"& ul\": {\n padding: 0\n },\n \"&:hover\": {\n backgroundColor: \"#05AE34\",\n \"& .MuiListItemIcon-root, & .MuiListItemText-primary\": {\n color: theme.palette.common.white\n }\n },\n border: \"none\"\n }\n}))(MenuItem);\n\nconst useStyles = makeStyles((theme) => ({\n header: {\n flexGrow: 1,\n padding: 0,\n position: \"fixed\",\n top: 0,\n right: 0,\n zIndex: 2,\n width: \"calc(100% - 250px)\",\n border: \"none\",\n \"-webkit-transition\": \"all 0.1s ease-out\"\n },\n headerDehaze: {\n flexGrow: 1,\n padding: 0,\n position: \"fixed\",\n top: 0,\n right: 0,\n border: \"none\",\n boxShadow: \"0 0 2rem 0 rgba(136,152,170,.15)!important\",\n zIndex: 2,\n width: \"calc(100% - 60px)\",\n \"& $sectionDesktop\": {\n marginLeft: 30\n },\n \"-webkit-transition\": \"all 0.09s ease-out\"\n },\n menuButton: {\n marginRight: theme.spacing(2)\n },\n title: {\n display: \"none\",\n [theme.breakpoints.up(\"sm\")]: {\n display: \"block\"\n }\n },\n search: {\n position: \"relative\",\n borderRadius: theme.shape.borderRadius,\n backgroundColor: fade(theme.palette.common.white, 0.15),\n \"&:hover\": {\n backgroundColor: fade(theme.palette.common.white, 0.25)\n },\n marginRight: theme.spacing(2),\n marginLeft: 0,\n width: \"100%\",\n [theme.breakpoints.up(\"sm\")]: {\n marginLeft: theme.spacing(3),\n width: \"auto\"\n }\n },\n searchIcon: {\n padding: theme.spacing(0, 2),\n height: \"100%\",\n position: \"absolute\",\n pointerEvents: \"none\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\"\n },\n inputRoot: {\n color: \"inherit\"\n },\n inputInput: {\n padding: theme.spacing(1, 1, 1, 0),\n paddingLeft: `calc(1em + ${theme.spacing(4)}px)`,\n transition: theme.transitions.create(\"width\"),\n width: \"100%\",\n [theme.breakpoints.up(\"md\")]: {\n width: \"20ch\"\n }\n },\n sectionDesktop: {\n display: \"none\",\n [theme.breakpoints.up(\"md\")]: {\n display: \"flex\"\n }\n },\n sectionMobile: {\n display: \"flex\",\n [theme.breakpoints.up(\"md\")]: {\n display: \"none\"\n }\n },\n account: {\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n float: \"right\"\n },\n button_upgrade: {\n position: \"relative\",\n margin: 0,\n background: \"#FF8000\",\n fontSize: 14,\n fontWeight: \"bold\",\n color: \"white\",\n transition: \"transform 0.3s, box-shadow 0.3s\",\n \"&:hover\": {\n transform: \"scale(1.1)\",\n boxShadow: \"0 0 10px rgba(255, 128, 0, 0.5)\"\n }\n },\n\n \"@keyframes twinkle\": {\n \"0%\": { transform: \"scale(1)\" },\n \"50%\": { transform: \"scale(1.2)\" },\n \"100%\": { transform: \"scale(1)\" }\n },\n wrapperHeader: {\n display: \"flex\",\n border: \"none\",\n boxShadow: \"none\",\n justifyContent: \"space-between\"\n },\n cursor: {\n \"&:hover\": {\n cursor: \"pointer\"\n }\n },\n wrapperAvatar: {\n display: \"flex\",\n alignItems: \"center\"\n },\n wrapVersion: {\n padding: \"0px 15px\",\n \"& h4\": {\n marginBottom: 0,\n padding: 0,\n color: \"#05AE34\"\n },\n \"& h6\": {\n marginTop: 5,\n fontSize: 14,\n color: \"red\"\n }\n }\n}));\n\nexport default function Header(props) {\n const { getMenu, onMenu, onLogout, user, onDehaze, dehaze } = props;\n const classes = useStyles();\n const history = useHistory();\n const [anchorEl, setAnchorEl] = React.useState(null);\n const [titleMenu, setTitleMenu] = React.useState(\"\");\n const [mobileMoreAnchorEl, setMobileMoreAnchorEl] = React.useState(null);\n const [isPopupVersion, setIsPopupVersion] = React.useState(false);\n const [titlePage, setTitlePage] = React.useState(\"\");\n const { t, i18n } = useTranslation();\n const share = useSelector(selectShare)[\"share\"];\n const dispatch = useDispatch();\n\n const [loading, setLoading] = useState(true);\n\n useEffect(() => {\n const url_string = window.location.href;\n const url = new URL(url_string);\n const pathname = url.pathname;\n if (pathname) {\n switch (pathname) {\n case types.MENU.HOME.LINK:\n setTitlePage(t(types.MENU.HOME.NAME));\n break;\n case types.MENU.CUSTOMER.LINK:\n setTitlePage(t(types.MENU.CUSTOMER.NAME));\n break;\n case types.MENU.FANPAGE.LINK:\n setTitlePage(t(types.MENU.FANPAGE.NAME));\n break;\n case types.MENU.CAMPAGIGN.LINK:\n setTitlePage(t(types.MENU.CAMPAGIGN.NAME));\n break;\n case types.MENU.TAG.LINK:\n setTitlePage(t(types.MENU.TAG.NAME));\n break;\n case types.MENU.SETTING_ACCOUNT.LINK:\n setTitlePage(t(types.MENU.SETTING_ACCOUNT.NAME));\n break;\n case types.MENU.SCENARIO.LINK:\n setTitlePage(t(types.MENU.SCENARIO.NAME));\n break;\n case types.MENU.SYNCHRONIZE.LINK:\n setTitlePage(t(types.MENU.SYNCHRONIZE.NAME));\n break;\n default:\n break;\n }\n }\n }, [i18n.language]);\n\n const handleClick = (event) => {\n setAnchorEl(event.currentTarget);\n };\n\n const handleClose = () => {\n setAnchorEl(null);\n };\n\n useEffect(() => {\n setTitleMenu(getMenu);\n }, [getMenu]);\n\n const handleProfileMenuOpen = (event) => {\n setAnchorEl(event.currentTarget);\n };\n\n const handleMobileMenuClose = () => {\n setMobileMoreAnchorEl(null);\n };\n\n const handleMenuClose = () => {\n setAnchorEl(null);\n handleMobileMenuClose();\n };\n\n const handleMobileMenuOpen = (event) => {\n setMobileMoreAnchorEl(event.currentTarget);\n };\n\n const menuId = \"primary-search-account-menu\";\n\n const mobileMenuId = \"primary-search-account-menu-mobile\";\n const handleSettingAccount = () => {\n history.push(pathKeys.SETTING_ACCOUNT);\n onMenu(\"Quản lý tài khoản\");\n };\n\n // const handleSynchronize = () => {\n // history.push(pathKeys.SYNCHRONIZE);\n // onMenu(\"Đồng bộ\");\n // };\n\n const handleLogOut = () => {\n localStorage.removeItem(\"alertGiftBox\");\n onLogout();\n };\n\n const handleClickPay = () => {\n handleUpgrade({ i18n, user, dispatch });\n };\n const handleCloseVersion = () => {\n setIsPopupVersion(false);\n };\n const handleVersion = () => {\n setIsPopupVersion(true);\n };\n\n return (\n
\n \n \n
\n

{titlePage}

\n
\n
\n handleClickPay()}\n >\n {t(\"common.btn.upgrade\")}\n \n \n \n \n \n handleSettingAccount()}>\n \n \n \n \n \n handleVersion()}>\n \n \n \n \n \n {/* handleSynchronize()}>\n \n \n \n \n */}\n handleLogOut()}>\n \n \n \n \n \n \n\n
\n
\n \n \n handleCloseVersion()}\n >\n
\n

{t(\"version.title\")}

\n \n
\n \n
\n );\n}\n","// import { BehaviorSubject } from 'rxjs';\nimport axios from 'axios'\nimport axiosClient from './axiosClient'\nimport urlApi from './url'\nimport { pathKeys } from '../constants'\n\nexport const accountApi = {\n login,\n apiAuthenticate,\n onSubmitEmail,\n changePassword,\n logout,\n getInviteCode,\n transferToAccount,\n updateNotiPermissionToken,\n}\n\nfunction onSubmitEmail(params) {\n return new Promise((resolve, reject) => {\n const response = axiosClient.post(`${urlApi.user.login}`, params)\n if (response) {\n resolve(response)\n } else {\n reject(null)\n }\n })\n}\n\nfunction changePassword(params) {\n return new Promise((resolve, reject) => {\n const response = axiosClient.post(`${urlApi.user.changePassword}`, params)\n if (response) {\n resolve(response)\n } else {\n reject(null)\n }\n })\n}\n\nfunction getInviteCode(params) {\n return new Promise((resolve, reject) => {\n const response = axiosClient.get(`${urlApi.user.getInviteCode}`)\n if (response) {\n resolve(response)\n } else {\n reject(null)\n }\n })\n}\n\nfunction getMeFacebook() {\n return new Promise((resolve, reject) => {\n window.FB.api(\n '/me',\n {\n fields:\n 'id,email,first_name,last_name,name,picture.width(200).height(200)',\n },\n function (response) {\n if (response) {\n resolve(response)\n } else {\n reject(null)\n }\n }\n )\n })\n}\n\nfunction authLoginFacebook() {\n // Hàm api.getUser() trả về một promise object\n return new Promise((resolve, reject) => {\n window.FB.login(\n function (response) {\n if (response) {\n resolve(response);\n } else {\n reject(null);\n }\n },\n {\n auth_type: \"rerequest\",\n scope:\n \"email, public_profile,pages_show_list,pages_messaging,business_management\",\n enable_profile_selector: true,\n return_scopes: true\n }\n // { scope: \"email\" }\n );\n })\n}\n\nfunction apiAuthenticate(authResponse, me, ref) {\n return new Promise((resolve, reject) => {\n const params = {\n id: authResponse.userID,\n name: me.name,\n email: me.email,\n avatar: me.picture.data.url,\n fbAccessToken: authResponse.accessToken,\n }\n if (ref) params.partnerId = ref\n const response = axios.post(`${urlApi.user.loginSocial}`, params)\n if (response) {\n resolve(response)\n } else {\n reject(null)\n }\n })\n}\n\nfunction login(ref) {\n return new Promise((resolve, reject) => {\n window.FB.getLoginStatus(function (response) {\n if (response.status === 'connected') {\n getMeFacebook().then((me) => {\n apiAuthenticate(response.authResponse, me, ref).then(\n (loginSocial) => {\n resolve({ ...loginSocial.data, email: me.email })\n }\n )\n })\n } else {\n authLoginFacebook().then((auth) => {\n if (auth.authResponse) {\n getMeFacebook().then((me) => {\n apiAuthenticate(auth.authResponse, me, ref).then(\n (loginSocial) => {\n resolve({ ...loginSocial.data, email: me.email })\n }\n )\n })\n } else {\n reject(null)\n }\n })\n }\n })\n })\n}\n\nfunction logout() {\n localStorage.removeItem('token')\n localStorage.removeItem('id')\n window.FB.getLoginStatus(function (response) {\n if (response && response.status === 'connected') {\n window.FB.logout(function (response) {\n window.location.href = `${pathKeys.LOGIN}`\n })\n } else if (response.status === 'unknown') {\n window.FB.logout(function (response) {})\n window.location.href = `${pathKeys.LOGIN}`\n }\n window.location.reload(true)\n })\n\n // window.FB.api('/me/permissions', 'delete', null, (res) => {\n // if (res) {\n // window.FB.logout();\n // }\n // window.location.href = `${pathKeys.LOGIN}`;\n // });\n}\n\nfunction transferToAccount(payload) {\n return new Promise((resolve, reject) => {\n const response = axiosClient.post(`/api/v1.0/user/changeMainUser`, payload)\n if (response) {\n resolve(response)\n } else {\n reject(null)\n }\n })\n}\n\nfunction updateNotiPermissionToken(payload) {\n return new Promise((resolve, reject) => {\n const response = axiosClient.post(\n `/api/v1.0/user/subscribeNotification`,\n payload\n )\n if (response) {\n resolve(response)\n } else {\n reject(null)\n }\n })\n}\n","import { createSlice } from \"@reduxjs/toolkit\";\nimport initialState from \"../../configs/redux/initialState\";\n\nconst loginReducer = createSlice({\n name: \"login\",\n initialState: initialState.loginReducer,\n reducers: {\n setAccount: (state, action) => {\n state.account = action.payload;\n },\n setStatusLogined: (state, action) => {\n state.statusLogined = action.payload;\n },\n setForgotPassword: (state, action) => {\n state.forgotPassword = action.payload;\n },\n \n }\n});\n\nexport const {\n setAccount,\n setStatusLogined,\n setForgotPassword\n} = loginReducer.actions;\n\nexport default loginReducer.reducer;\n","import { accountApi } from \"../../api/accountApi\";\nimport appApi from \"../../api/appApi\";\nimport _ from \"lodash\";\nimport {\n setAccount,\n setStatusLogined,\n setForgotPassword,\n} from \"./LoginReducer\";\nimport { setUser, setLoading } from \"../App/AppReducer\";\n\nexport function login(ref) {\n return (dispatch) => {\n dispatch(setLoading(true));\n return accountApi.login(ref).then(\n (res) => {\n localStorage.setItem(\"token\", res.token);\n localStorage.setItem(\"id\", res.id);\n dispatch(setAccount(res));\n dispatch(setUser(res));\n return appApi.getUser(res.id).then(\n (res) => {\n dispatch(setUser(res));\n dispatch(setLoading(false));\n },\n (error) => {\n dispatch(setStatusLogined(false));\n dispatch(setLoading(false));\n }\n );\n },\n (error) => {\n dispatch(setLoading(false));\n }\n );\n };\n}\n\nexport function onSubmitEmail(params) {\n return (dispatch) => {\n dispatch(setLoading(true));\n return accountApi.onSubmitEmail(params).then(\n (res) => {\n if (_.isObject(res) && res.id) {\n localStorage.setItem(\"token\", res.token);\n localStorage.setItem(\"id\", res.id);\n dispatch(setAccount(res));\n dispatch(setUser(res));\n } else {\n dispatch(setStatusLogined(false));\n }\n dispatch(setLoading(false));\n },\n (error) => {\n dispatch(setStatusLogined(false));\n dispatch(setLoading(false));\n }\n );\n };\n}\n\nexport function onLogout() {\n return (dispatch) => {\n return accountApi.logout();\n };\n}\n\nexport function onSubmitForgotPassword(params) {\n return (dispatch) => {\n dispatch(setLoading(true));\n return appApi.forgotPassword(params).then(\n (res) => {\n if (res && !_.isObject(res)) {\n dispatch(setForgotPassword(true));\n } else {\n dispatch(setForgotPassword(false));\n }\n dispatch(setLoading(false));\n },\n (error) => {\n dispatch(setForgotPassword(false));\n dispatch(setLoading(false));\n }\n );\n };\n}\n","import { connect } from \"react-redux\";\nimport { withRouter } from 'react-router-dom';\nimport HeaderView from \"./HeaderView\";\nimport * as selectorsSidebar from \"../Sidebar/SidebarSelectors\";\nimport * as actionsSidebar from \"../Sidebar/SidebarActions\";\nimport * as actionsLogin from \"../Login/LoginActions\";\nimport * as selectorsApp from \"../App/AppSelectors\";\nimport * as selectorsHome from \"../Home/HomeSelectors\";\nconst mapStateToProps = state => {\n return {\n getMenu: selectorsSidebar.getMenu(state),\n user: selectorsApp.user(state),\n share: selectorsHome.share(state),\n dehaze: selectorsSidebar.dehaze(state),\n };\n};\n\nconst mapDispatchToProps = dispatch => ({\n onMenu: (data) => dispatch(actionsSidebar.menu(data)),\n onLogout: () => dispatch(actionsLogin.onLogout()),\n \n \n});\n\nexport default withRouter(connect(mapStateToProps, mapDispatchToProps)(HeaderView));\n","import HeaderPage from \"./HeaderContainer\";\n\nexport default HeaderPage;\n","import React, { useMemo } from 'react'\n\nimport { useTranslation } from 'react-i18next'\nimport { Button, MenuItem, Menu } from '@material-ui/core'\nimport TranslateIcon from '@material-ui/icons/Translate'\nimport Flex from 'components/Flex'\nimport { useDispatch, useSelector } from 'react-redux'\nimport { updateUser } from 'views/Home/HomeActions'\nimport { selectUser } from 'views/App/AppSelectors'\n\nconst ChangeLanguage = ({ isUser }) => {\n const [anchorEl, setAnchorEl] = React.useState(null)\n const { i18n } = useTranslation()\n const dispatch = useDispatch()\n const user = useSelector(selectUser)\n\n const handleChangeLanguage = (lng) => {\n handleClose()\n i18n.changeLanguage(lng)\n if (isUser) {\n updateLngUser(lng)\n }\n }\n const currentLanguage = useMemo(() => {\n if (!i18n?.language) return 'Change language'\n switch (i18n.language?.substring(0, 2)) {\n case 'kh':\n return 'ភាសាខ្មែរ'\n case 'vi':\n return 'Tiếng Việt'\n case 'en':\n return 'English'\n default:\n return 'Change language'\n }\n }, [i18n.language])\n\n const updateLngUser = (lng) => {\n dispatch(\n updateUser(\n {\n ...user,\n lang: lng,\n },\n user.id\n )\n )\n }\n\n const onSelectLanguage = (event) => {\n setAnchorEl(event.currentTarget)\n }\n\n const handleClose = () => {\n setAnchorEl(null)\n }\n\n const languages = [\n {\n label: 'Tiếng Việt',\n value: 'vi',\n },\n {\n label: 'English',\n value: 'en',\n },\n {\n label: 'ភាសាខ្មែរ',\n value: 'kh',\n },\n ]\n\n return (\n <>\n \n \n {languages.map((lng, index) => (\n handleChangeLanguage(lng.value)}\n >\n {lng.label === \"Tiếng Việt\" && (\n \"icon\"\n )}\n {lng.label === \"English\" && (\n \"icon\"\n )}\n {lng.label === \"ភាសាខ្មែរ\" && (\n \"icon\"\n )}\n {lng.label}\n \n ))}\n \n \n );\n}\n\nexport default ChangeLanguage\n","import React, { useMemo } from \"react\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport SidebarContainer from \"../Sidebar\";\nimport HeaderContainer from \"../Header\";\nimport cn from \"classnames\";\nimport { useTranslation } from \"react-i18next\";\nimport ChangeLanguage from \"components/ChangeLanguage\";\n\nconst useStyles = makeStyles((theme) => ({\n root: {},\n sidebar: {\n width: 250,\n float: \"left\",\n height: \"100vh\",\n overflowY: \"auto\",\n background: \"white\",\n position: \"fixed\",\n top: 0,\n left: 0,\n transition: \"width 0.3s ease, left 0.3s ease\",\n borderRight: \"1px solid #efefef\"\n },\n sidebarDehaze: {\n width: 60,\n float: \"left\",\n height: \"100vh\",\n overflowY: \"auto\",\n background: \"white\",\n position: \"fixed\",\n top: 0,\n left: 0,\n zIndex: 10,\n transition: \"width 0.3s ease, left 0.3s ease\",\n borderRight: \"1px solid #efefef\"\n },\n contentRight: {\n width: \"calc(100% - 250px)\",\n height: \"calc(100vh - 70px - 73px)\",\n overflow: \"auto\",\n float: \"right\",\n backgroundColor: 'white',\n // backgroundImage: \"url('image/bg-dashboard.png')\", \n backgroundSize: \"cover\",\n // paddingLeft: 15,\n // paddingRight: 15,\n marginTop: 76,\n transition: \"width 0.3s ease\"\n },\n contentRightDehaze: {\n width: \"calc(100% - 60px)\",\n height: \"calc(100vh - 70px - 73px)\",\n overflow: \"auto\",\n float: \"right\",\n // paddingLeft: 15,\n // paddingRight: 15,\n marginTop: 76,\n transition: \"width 0.3s ease\"\n },\n content: {\n paddingLeft: 15,\n paddingRight: 15,\n },\n footer: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n paddingRight: 15,\n paddingLeft: 15,\n color: \"#05ae34\",\n bottom: 0,\n width: \"calc(100% - 250px)\",\n height: \"70px\",\n background: \"#F6F9FC\",\n position: \"fixed\",\n zIndex: 99,\n transition: \"width 0.3s ease\"\n },\n footerDehaze: {\n height: 70,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n paddingRight: 15,\n paddingLeft: 15,\n color: \"#05ae34\",\n bottom: 0,\n width: \"calc(100% - 60px)\", // Width when sidebar is collapsed\n background: \"#F6F9FC\",\n position: \"fixed\",\n zIndex: 99,\n transition: \"width 0.3s ease\"\n },\n right: {\n display: \"flex\",\n alignItems: \"center\",\n \"& a\": {\n marginLeft: 15,\n color: \"#05ae34\",\n textDecoration: \"none\"\n }\n }\n}));\n\nconst MainLayoutView = (props) => {\n const { children, dehaze } = props;\n const classes = useStyles();\n const { t, i18n } = useTranslation();\n const configPage = useMemo(() => {\n if (i18n.language?.substring(0, 2) === \"kh\") {\n return {\n page_id: \"102636822160260\",\n app_id: \"4087907114572119\"\n };\n } else {\n return {\n page_id: \"103634791744953\",\n app_id: \"4087907114572119\"\n };\n }\n }, [i18n.language]);\n\n return (\n
\n
\n \n
\n \n \n
{children}
\n
\n
\n © 2021{\" \"}\n \n @Bombot.vn\n \n
\n
\n \n \n {t(\"footer.home\")}\n \n \n {t(\"footer.affiliate\")}\n \n \n {t(\"footer.policy\")}\n \n \n {t(\"footer.private_policy\")}\n \n
\n
\n
\n
\n );\n};\n\nMainLayoutView.propTypes = {};\n\nMainLayoutView.defaultProps = {};\n\nexport default MainLayoutView;\n","import MainLayoutPage from \"./MainLayoutContainer\";\n\nexport default MainLayoutPage;\n","import { connect } from \"react-redux\";\nimport { withRouter } from 'react-router-dom';\nimport MainLayoutView from \"./MainLayoutView\";\nimport * as selectorsSidebar from \"../Sidebar/SidebarSelectors\";\nconst mapStateToProps = state => {\n return {\n dehaze: selectorsSidebar.dehaze(state),\n };\n};\n\nconst mapDispatchToProps = dispatch => ({\n \n});\n\nexport default withRouter(connect(mapStateToProps, mapDispatchToProps)(MainLayoutView));\n","import React, { useEffect, useState } from 'react'\nimport { makeStyles } from '@material-ui/core/styles'\nimport MainLayout from '../MainLayout'\nimport ListCampaignComponent from '../../components/ListCampaign'\nimport Loading from '../../components/Loading'\nimport MessengerButton from './../Home/items/MessengerButton'\nimport Tour from 'reactour'\nimport { useSelector } from 'react-redux'\nimport {\n getIsGuideByKey,\n GUIDE_TYPE_ENUM,\n setIsGuideByKey,\n} from '../../utils/helper'\nimport { selectGuideListByKey } from '../../stores/config/config.selector'\nimport { useTranslation } from 'react-i18next'\nimport { Button } from '@material-ui/core'\n\nconst useStyles = makeStyles((theme) => ({}))\nconst CampaignView = (props) => {\n const { getCampaign, campaign, loading } = props\n const [campaignData, setCampaignData] = useState([])\n\n const { t } = useTranslation()\n\n useEffect(() => {\n setCampaignData(campaign)\n }, [campaign])\n\n const handleGetCampaign = (params) => {\n getCampaign(params)\n }\n\n const tourOverview = useSelector(\n selectGuideListByKey(GUIDE_TYPE_ENUM.campaign_manager)\n )\n\n const [tourConfig, setTourConfig] = useState(null)\n\n useEffect(() => {\n if (\n getIsGuideByKey(GUIDE_TYPE_ENUM.campaign_manager) &&\n tourOverview?.length\n ) {\n setTourConfig(tourOverview)\n setIsGuideByKey(GUIDE_TYPE_ENUM.campaign_manager)\n }\n }, [tourOverview])\n\n return (\n \n \n {t('common.btn.close')}\n \n }\n accentColor=\"#05ae34\"\n onRequestClose={() => setTourConfig(null)}\n />\n\n {loading && }\n handleGetCampaign(params)}\n getCampaign={(params) => getCampaign(params)}\n data={campaignData}\n isShowFilter={true}\n />\n \n \n )\n}\n\nCampaignView.propTypes = {}\n\nCampaignView.defaultProps = {}\n\nexport default CampaignView\n","import CampaignPage from \"./CampaignContainer\";\n\nexport default CampaignPage;\n","import { connect } from \"react-redux\";\nimport { withRouter } from 'react-router-dom';\nimport CampaignView from \"./CampaignView\";\nimport * as actionsCampaign from \"./CampaignActions\";\nimport * as selectorsCampaign from \"./CampaignSelectors\";\nimport * as selectorsApp from \"../App/AppSelectors\";\nconst mapStateToProps = state => {\n return {\n campaign: selectorsCampaign.campaign(state),\n loading: selectorsApp.loading(state),\n };\n};\n\nconst mapDispatchToProps = dispatch => ({\n getCampaign: (params) => dispatch(actionsCampaign.getCampaign(params))\n});\n\nexport default withRouter(connect(mapStateToProps, mapDispatchToProps)(CampaignView));\n","import axiosClient from './axiosClient'\nimport urlApi from './url'\nconst fanpageApi = {\n get: (params) => {\n return axiosClient.get(`${urlApi.fanpageApi.reportPage}`, { params })\n },\n fanPageDetail: (params) => {\n return axiosClient.post(`${urlApi.fanpageApi.fanPageDetail}`, params)\n },\n getDetailFanpage: (id) => {\n return axiosClient.get(`/api/v1.0/fanPage/${id}`)\n },\n\n searchBombotTags: (id, params) => {\n return axiosClient.get(`/api/v1.0/fanPage/${id}/fanPagebombotTags`, {\n params,\n })\n },\n\n getBomBotTagList: (id, params) => {\n return axiosClient.get(`/api/v1.0/fanPage/${id}/fanPagebombotTags`, {\n params,\n })\n },\n\n getFbTagList: (id, params) => {\n return axiosClient.get(`/api/v1.0/fanPage/${id}/fanPageFbTags`, {\n params,\n })\n },\n\n deleteBomBotTagList: (id, payload) => {\n return axiosClient.delete(`/api/v1.0/fanPage/${id}/fanPagebombotTags`, {\n data: payload,\n })\n },\n\n renameTag: (fanpageId, tagId, payload) => {\n return axiosClient.post(\n `/api/v1.0/fanPage/${fanpageId}/fanPagebombotTags/${tagId}`,\n payload\n )\n },\n}\n\nexport default fanpageApi\n","import { createSlice } from '@reduxjs/toolkit'\nimport initialState from '../../configs/redux/initialState'\nimport _ from 'lodash'\nconst customerReducer = createSlice({\n name: \"customer\",\n initialState: {\n ...initialState.customerReducer,\n filter: {\n search_obj: {},\n search_string: \"\",\n search_arr: []\n },\n loading_add_tag: false,\n is_show_modal_add: false,\n tagsSelected: [],\n importResult: null,\n\n searchUidName: \"\"\n },\n reducers: {\n setCustomer: (state, action) => {\n state.customer = action.payload;\n },\n // setEdit: (state, action) => {\n // state.edit = action.payload;\n // },\n setDetail: (state, action) => {\n state.detail = action.payload;\n },\n setFanpageSelected: (state, action) => {\n state.fanpageSelected = action.payload;\n },\n setTagFacebookSelectedAll: (state, action) => {\n state.tagFacebookSelectedAll = action.payload;\n },\n setSelectTagFacebook: (state, action) => {\n state.selectTagFacebook = action.payload;\n },\n setLoadingImport: (state, action) => {\n state.loadingImport = action.payload;\n },\n setImportSuccess: (state, action) => {\n state.importSuccess = action.payload;\n },\n setFanPageDetail: (state, action) => {\n state.fanPageDetail = action.payload;\n },\n setCustomerAll: (state, action) => {\n state.customerAll = action.payload;\n },\n setCustomerCheck: (state, action) => {\n if (!action.payload.checked) {\n _.remove(state.customerCheck, function (n) {\n return n.id == action.payload.id;\n });\n state.customerCheck = _.concat(...state.customerCheck);\n } else {\n state.customerCheck = _.concat(...state.customerCheck, action.payload);\n }\n },\n setRestCustomerCheck: (state, action) => {\n state.customerCheck = action.payload;\n },\n setCreateCustomerSucss: (state, action) => {\n state.createCustomerSucss = action.payload;\n },\n setMessageImport: (state, action) => {\n state.messageImport = action.payload;\n },\n setFilter: (state, action) => {\n state.filter = {\n ...state.filter,\n search_arr: JSON.parse(JSON.stringify(action.payload.search_arr)), // Deep copy\n search_string: action.payload.search_string\n };\n },\n setSearchUidName: (state, action) => {\n state.searchUidName = action.payload;\n },\n setSearchTagName: (state, action) => {\n state.searchTagName = action.payload;\n },\n startAddTags: (state, action) => {\n state.error = null;\n state.loading_add_tag = true;\n },\n addTagsSuccess: (state, action) => {\n state.loading_add_tag = false;\n state.fanpageSelected = {\n ...state.fanpageSelected,\n ...action.payload\n };\n state.is_show_modal_add = false;\n },\n addTagsFailed: (state, action) => {\n state.loading_add_tag = false;\n state.error = action.payload;\n },\n toggleModalAdd: (state) => {\n state.is_show_modal_add = !state.is_show_modal_add;\n },\n importResult: (state, action) => {\n state.importResult = action.payload;\n },\n clearImportResult: (state) => {\n state.importResult = null;\n },\n setTagSelected: (state, action) => {\n state.tagsSelected = action.payload;\n }\n }\n});\n\nexport const {\n setCustomer,\n setDetail,\n setEdit,\n setFanpageSelected,\n setTagFacebookSelectedAll,\n setSelectTagFacebook,\n setLoadingImport,\n setImportSuccess,\n setFanPageDetail,\n setCustomerAll,\n setCustomerCheck,\n setRestCustomerCheck,\n setCreateCustomerSucss,\n setMessageImport,\n setFilter,\n setSearchUidName,\n startAddTags,\n addTagsSuccess,\n addTagsFailed,\n toggleModalAdd,\n setTagSelected,\n importResult,\n clearImportResult,\n} = customerReducer.actions\n\nexport default customerReducer.reducer\n","import customerApi from '../../api/customerApi'\nimport fanpageApi from '../../api/fanpageApi'\nimport { setLoading } from '../App/AppReducer'\nimport types from '../../constants/types'\nimport {\n setCustomer,\n setEdit,\n setDetail,\n setFanpageSelected,\n setTagFacebookSelectedAll,\n setSelectTagFacebook,\n setLoadingImport,\n setImportSuccess,\n setFanPageDetail,\n setCustomerAll,\n setCustomerCheck,\n setRestCustomerCheck,\n setCreateCustomerSucss,\n setMessageImport,\n startAddTags,\n addTagsSuccess,\n addTagsFailed,\n importResult,\n} from './CustomerReducer'\n\nexport function getCustomer(params) {\n return (dispatch) => {\n dispatch(setLoading(true))\n return customerApi.get(params).then(\n (res) => {\n dispatch(setCustomer(res))\n dispatch(setLoading(false))\n },\n (error) => {\n dispatch(setLoading(false))\n }\n )\n }\n}\nexport function getCustomerAll(params) {\n return (dispatch) => {\n dispatch(setLoading(true))\n return customerApi.get(params).then(\n (res) => {\n dispatch(setCustomerAll(res))\n dispatch(setLoading(false))\n },\n (error) => {\n dispatch(setLoading(false))\n }\n )\n }\n}\n\nfunction saveAs(blob, fileName) {\n var url = window.URL.createObjectURL(blob)\n\n var anchorElem = document.createElement('a')\n anchorElem.style = 'display: none'\n anchorElem.href = url\n anchorElem.download = fileName\n\n document.body.appendChild(anchorElem)\n anchorElem.click()\n\n document.body.removeChild(anchorElem)\n\n // On Edge, revokeObjectURL should be called only after\n // a.click() has completed, atleast on EdgeHTML 15.15048\n setTimeout(function () {\n window.URL.revokeObjectURL(url)\n }, 1000)\n}\n\nexport function onExport(params) {\n // console.log('params', params)\n return (dispatch) => {\n dispatch(setLoading(true))\n return customerApi\n .export(`${params?.fanpageSelected.id}/export`, {\n excludes: params.exclude,\n })\n .then(\n (res) => {\n dispatch(setLoading(false))\n const filename = `Customer_${\n params?.fanpageSelected.name\n }_${Date.now()}`\n const blob = new Blob([res], {\n type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n })\n return saveAs(blob, filename + '.xlsx')\n },\n (error) => {\n dispatch(setLoading(false))\n }\n )\n }\n}\n\nexport function detail(params) {\n return (dispatch) => {\n dispatch(setDetail(params))\n }\n}\nexport function edit(params) {\n return (dispatch) => {\n return customerApi.edit(params).then(\n (res) => {\n return res\n },\n (error) => {\n throw error\n }\n )\n }\n}\nexport function downloadExcel() {\n return (dispatch) => {\n return customerApi.downloadExcel().then(\n (res) => {\n // console.log('res downloadExcel', res);\n },\n (error) => {\n throw error\n }\n )\n }\n}\n\nexport function onSubmitAddTag(params) {\n return (dispatch) => {\n return fanpageApi.fanPageDetail(params).then(\n (res) => {\n dispatch(setFanPageDetail(res))\n },\n (error) => {\n throw error\n }\n )\n }\n}\n\nfunction parseJSONfromParam(inputString) {\n // Split the string based on semicolon\n const keyValuePairs = inputString.split(';')\n\n // Create an object to store key-value pairs\n const resultObject = {}\n\n // Iterate through each key-value pair and add it to the object\n keyValuePairs.forEach((pair) => {\n const [key, value] = pair.split('==')\n if (value) {\n resultObject[key.trim()] = value.trim()\n } else {\n const split = pair.split('=')\n resultObject[split[0].trim()] = split.slice(1).join('=')\n }\n })\n\n // Convert the result object to JSON\n const resultJSON = JSON.stringify(resultObject)\n\n return resultJSON\n}\nexport function onCreate(paramsFilter, rows, params, data) {\n const searchParam = new URLSearchParams(window.location.search)\n const getQuery = searchParam.get('query')\n let excludeArr = []\n rows.map((item) => {\n if (item.checked) {\n return excludeArr.push(item.uid)\n }\n })\n\n const createCustomerParams = {\n ...params,\n totalCus: data.totalElements - rows.length,\n query: `${\n getQuery ? parseJSONfromParam(getQuery) : `{\"pageId\": \"${params.pageId}\"}`\n }`,\n queryString: getQuery || `pageId==${params.pageId}`,\n exclude: excludeArr,\n bombotTags: [],\n totalMes: 0,\n delayTime: 5,\n status: 'pending',\n }\n\n return (dispatch) => {\n dispatch(setLoading(true))\n return customerApi.addCampaignNoScenario(createCustomerParams).then(\n (res) => {\n dispatch(setLoading(false))\n window.open(\n types.URL.FACEBOOK +\n `&token=${localStorage.getItem('token') || null}&campaign=${\n res?.id\n }&pageId=${res.pageId}`,\n '_blank'\n )\n },\n (error) => {\n dispatch(setLoading(false))\n }\n )\n }\n}\n\nexport function fanpageSelected(params) {\n return (dispatch) => {\n dispatch(setFanpageSelected(params))\n }\n}\n\nexport function onCustomerCheck(params) {\n return (dispatch) => {\n dispatch(setCustomerCheck(params))\n }\n}\nexport function onCustomerCheckReset(params) {\n return (dispatch) => {\n dispatch(setRestCustomerCheck(params))\n }\n}\n\nexport function tagFacebookSelectedAll(params) {\n return (dispatch) => {\n dispatch(setTagFacebookSelectedAll(params))\n }\n}\nexport function selectTagFacebook(params) {\n return (dispatch) => {\n dispatch(setSelectTagFacebook(params))\n }\n}\nexport function fileUpload(params) {\n return (dispatch) => {\n dispatch(setImportSuccess(false))\n dispatch(setLoadingImport(true))\n return customerApi.import(params).then(\n (res) => {\n dispatch(setLoadingImport(false))\n dispatch(setImportSuccess(true))\n dispatch(importResult(res.data))\n // dispatch(setCustomer(res));\n },\n (error) => {\n dispatch(setLoadingImport(false))\n dispatch(setImportSuccess(false))\n dispatch(setMessageImport(error.response.data.error))\n }\n )\n\n // const url = 'http://example.com/file-upload';\n // const formData = new FormData();\n // formData.append('file',file)\n // const config = {\n // headers: {\n // 'content-type': 'multipart/form-data'\n // }\n // }\n // return post(url, formData,config)\n }\n}\nexport function resetCustomer() {\n return (dispatch) => {\n dispatch(setCustomer({}))\n }\n}\n\nexport function onAddTags(params) {\n return (dispatch) => {\n dispatch(startAddTags())\n return fanpageApi.fanPageDetail(params).then(\n (res) => {\n dispatch(addTagsSuccess(res))\n },\n (error) => {\n dispatch(addTagsFailed(error))\n throw error\n }\n )\n }\n}\n","import { createSelector } from \"@reduxjs/toolkit\";\nimport _ from \"lodash\";\nexport const customer = (state) => state.customerReducer.customer;\nexport const edit = (state) => state.customerReducer.edit;\nexport const detail = (state) => state.customerReducer.detail;\nexport const fanpageSelected = (state) => state.customerReducer.fanpageSelected;\nexport const tagFacebookSelectedAll = (state) =>\n state.customerReducer.tagFacebookSelectedAll;\nexport const fanpageFull = (state) => state.fanpageReducer.fanpageFull;\nexport const loadingImport = (state) => state.customerReducer.loadingImport;\nexport const importSuccess = (state) => state.customerReducer.importSuccess;\nexport const fanPageDetail = (state) => state.customerReducer.fanPageDetail;\nexport const customerAll = (state) => state.customerReducer.customerAll;\nexport const customerCheck = (state) => state.customerReducer.customerCheck;\nexport const selectImportResult = (state) => state.customerReducer.importResult;\nexport const createCustomerSucss = (state) =>\n state.customerReducer.createCustomerSucss;\nexport const messageImport = (state) => state.customerReducer.messageImport;\n\nexport const getCustomerAll = createSelector([customerAll], (customerAll) => {\n const items = [];\n if (customerAll && customerAll.length > 0) {\n customerAll.map((item) => {\n items.push({\n ...item,\n checked: true\n });\n });\n }\n return items;\n});\n\nexport const getCustomer = createSelector(\n [customer, customerCheck],\n (customer, customerCheck) => {\n const items = [];\n if (customer && customer.content && customer.content.length > 0) {\n (customer.content || []).map((item) => {\n let obj = _.find(customerCheck, function (obj) {\n return obj.id == item.id;\n });\n if (obj) {\n items.push({\n ...item,\n checked: false\n });\n } else {\n items.push({\n ...item,\n checked: true\n });\n }\n });\n }\n return { ...customer, content: items };\n }\n);\n\nexport const getListTagFacebook = createSelector(\n [fanpageSelected, detail],\n (fanpageSelectedData, detail) => {\n const items = [];\n if (\n fanpageSelectedData &&\n fanpageSelectedData.fbTags &&\n fanpageSelectedData.fbTags.length > 0\n ) {\n let data;\n data = [\n {\n id: \"not_in_tag\",\n name: \"Không có tag\",\n color: \"999\"\n },\n ...fanpageSelectedData.fbTags\n ];\n (data || []).map((item) => {\n let obj = _.find(detail.fbTags, function (obj) {\n return obj == item.id;\n });\n if (obj) {\n items.push({\n ...item,\n checked: true\n });\n } else {\n items.push({\n ...item,\n checked: false\n });\n }\n });\n }\n\n return items;\n }\n);\n\nexport const getListTagBombot = createSelector(\n [fanpageSelected, detail, fanPageDetail],\n (fanpageSelectedData, detail, fanPageDetail) => {\n const items = [];\n if (\n fanpageSelectedData &&\n fanpageSelectedData.bombotTags &&\n fanpageSelectedData.bombotTags.length > 0\n ) {\n let data;\n if (\n fanPageDetail &&\n fanPageDetail.bombotTags &&\n fanPageDetail.bombotTags.length > 0\n ) {\n data = [\n {\n id: \"not_in_tag\",\n name: \"Không có tag\",\n color: \"999\"\n },\n ...fanPageDetail.bombotTags\n ];\n } else {\n data = [\n {\n id: \"not_in_tag\",\n name: \"Không có tag\",\n color: \"999\"\n },\n ...fanpageSelectedData.bombotTags\n ];\n }\n (data || []).map((item) => {\n let obj = _.find(detail.bombotTags, function (obj) {\n return obj == item.id;\n });\n if (obj) {\n items.push({\n ...item,\n checked: true\n });\n } else {\n items.push({\n ...item,\n checked: false\n });\n }\n });\n }\n return items;\n }\n);\n\nexport const getDetail = createSelector([detail], (data) => {\n let fbTags = [];\n let bombotTags = [];\n if (data && data.fbTags && data.fbTags.length > 0) {\n (data.fbTags || []).map((item) => {\n fbTags.push({\n item,\n checked: true\n });\n });\n }\n if (data && data.bombotTags && data.bombotTags.length > 0) {\n (data.bombotTags || []).map((item) => {\n bombotTags.push({\n item,\n checked: true\n });\n });\n }\n\n return { ...data, fbTags: fbTags, bombotTags: bombotTags };\n});\n\n//////// tuan anh code\n\nconst selectCustomer = (state) => state.customerReducer;\n\nexport const selectFilterCus = createSelector(\n selectCustomer,\n (state) => state.filter\n);\n\nexport const selectSearchUidName = createSelector(\n selectCustomer,\n (state) => state.searchUidName\n);\n\nexport const selectFanpageSelected = createSelector(\n selectCustomer,\n (state) => state.fanpageSelected\n);\n\nexport const selectBombotTags = createSelector(\n selectCustomer,\n (state) => state.fanpageSelected?.bombotTags || []\n);\n\nexport const selectAddTagLoading = createSelector(\n selectCustomer,\n (state) => state.loading_add_tag\n);\nexport const selectIsShowModal = createSelector(\n selectCustomer,\n (state) => state.is_show_modal_add\n);\n\nexport const selectTagSelected = createSelector(\n selectCustomer,\n (state) => state.tagsSelected\n);\n\nexport const selectTagsPageSelected = createSelector(\n fanpageSelected,\n (state) => {\n const fbTags = state?.fbTags || [];\n const bombotTags = state?.bombotTags || [];\n const pancakeTags =\n (state?.otherTags || []).find((tag) => tag.system === \"pancake\")?.tags ||\n [];\n\n const fbTagsObj = {};\n const bombotTagsObj = {};\n const pancakeTagsObj = {};\n\n fbTags.forEach((tag) => (fbTagsObj[tag.id] = tag));\n\n bombotTags.forEach((tag) => (bombotTagsObj[tag.id] = tag));\n\n pancakeTags.forEach((tag) => (pancakeTagsObj[tag.id] = tag));\n\n return {\n fbTags: fbTagsObj,\n bombotTags: bombotTagsObj,\n pancakeTags: pancakeTagsObj\n };\n }\n);\n","import React from \"react\";\nimport { Button, Dialog, DialogContent, TextField } from \"@material-ui/core\";\nimport Flex from \"components/Flex\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { useState } from \"react\";\nimport CircularProgress from \"@material-ui/core/CircularProgress\";\nimport { onAddTags } from \"views/Customer/CustomerActions\";\nimport { selectAddTagLoading } from \"views/Customer/CustomerSelectors\";\nimport { useTranslation } from \"react-i18next\";\n\nconst AddTags = ({ handleClose, open = true, fanpage_selected }) => {\n const dispatch = useDispatch();\n const [messageAddTag, setMessageAddTag] = useState();\n const [txtValue, setTxtValue] = useState();\n const loading = useSelector(selectAddTagLoading);\n\n const { t } = useTranslation();\n\n const handleSubmitAddTag = () => {\n const allTags =\n fanpage_selected?.bombotTags?.length > 0\n ? fanpage_selected?.bombotTags\n : [];\n if (!/\\S/.test(txtValue)) {\n setMessageAddTag(t(\"update.noti.enter_tag\"));\n } else {\n setMessageAddTag(\"\");\n const checkAddTag = (obj) => obj.name === txtValue;\n const checkTagExist = allTags.some(checkAddTag);\n if (checkTagExist) {\n setMessageAddTag(t(\"update.noti.tag_existed\"));\n } else {\n const filtered = allTags.filter(function (el) {\n return el.id !== \"not_in_tag\";\n });\n let dataBombotTag = [...filtered, { name: txtValue }];\n let facebookTags =\n fanpage_selected && fanpage_selected.fbTags\n ? fanpage_selected && fanpage_selected.fbTags\n : [];\n const params = {\n id: fanpage_selected.id,\n name: fanpage_selected.name,\n fbTags: facebookTags,\n bombotTags: dataBombotTag,\n };\n dispatch(onAddTags(params));\n }\n }\n };\n\n const changeInput = (event) => {\n setTxtValue(event.target.value);\n };\n\n return (\n \n
\n \n {messageAddTag && (\n

{messageAddTag}

\n )}\n
\n \n \n {t(\"common.btn.close\")}\n \n \n \n {loading && }\n

{t(\"common.btn.create\")}

\n
\n \n
\n
\n );\n};\n\nexport default AddTags;\n","import { createSlice } from \"@reduxjs/toolkit\";\nimport { uniqueId } from \"lodash\";\n\nconst initialState = {\n toasts: []\n};\n\nconst toastItem = {\n id:'',\n type: \"\",\n message: \"\"\n};\n\n\nconst toastSlice = createSlice({\n name: \"toast\",\n initialState,\n reducers: {\n openToast: (state, action) => {\n const { type, message } = action.payload;\n const id = uniqueId()\n state.toasts = [...state.toasts, { id, type, message }];\n\n },\n closeToast: (state, action) => {\n const removedId = action.payload\n state.toasts = state.toasts.filter(toast => toast.id !== removedId)\n }\n }\n});\n\nexport const { openToast, closeToast } = toastSlice.actions;\n\nexport default toastSlice;\n","import {\n Button,\n Chip,\n CircularProgress,\n DialogContent,\n IconButton,\n Snackbar\n} from \"@material-ui/core\";\nimport { Dialog, DialogTitle } from \"@material-ui/core\";\nimport React, { useMemo, useState } from \"react\";\nimport Autocomplete from \"@material-ui/lab/Autocomplete\";\nimport { TextField } from \"@material-ui/core\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport Flex from \"components/Flex\";\nimport AddCircleOutlineIcon from \"@material-ui/icons/AddCircleOutline\";\nimport Tooltip from \"@material-ui/core/Tooltip\";\nimport AddTags from \"./AddTags\";\nimport {\n customerCheck,\n selectBombotTags,\n selectFanpageSelected,\n selectIsShowModal\n} from \"views/Customer/CustomerSelectors\";\nimport customerApi from \"api/customerApi\";\nimport { useHistory } from \"react-router-dom\";\nimport { toggleModalAdd } from \"views/Customer/CustomerReducer\";\nimport { useTranslation } from \"react-i18next\";\nimport { openToast } from \"stores/toast/slice.toast\";\n\nconst ModalTagsBombot = ({\n handleClose,\n open = true,\n isRemove,\n setMessageType,\n customerAfterFilter,\n customerAll\n}) => {\n const fanpage_selected = useSelector(selectFanpageSelected);\n const bombotTags = useSelector(selectBombotTags);\n const dispatch = useDispatch();\n const [tagSelected, setTagSelected] = useState([]);\n const showModalCreate = useSelector(selectIsShowModal);\n const customerExclude = useSelector(customerCheck);\n const [isLoading, setIsLoading] = useState(false);\n const history = useHistory();\n\n const options = useMemo(() => {\n const tagSelectedIds = tagSelected.map((t) => t.id);\n return bombotTags.filter((tag) => !tagSelectedIds.includes(tag.id));\n }, [bombotTags, tagSelected]);\n\n const onChange = (_, tags) => {\n setTagSelected(tags);\n };\n\n const onSave = async () => {\n setIsLoading(true);\n setMessageType(null);\n const searchParam = new URLSearchParams(window.location.search);\n const getQuery = searchParam.get(\"query\");\n let payload = {};\n let customerDifferent = customerAll.filter(function (customer) {\n // Kiểm tra xem customer có trong customerAfterFilter hay không\n let existsInFilter = customerAfterFilter.some(function (\n filteredCustomer\n ) {\n return filteredCustomer.uid === customer.uid;\n });\n // Trả về true nếu không tồn tại trong customerAfterFilter\n return !existsInFilter;\n });\n if (customerAfterFilter.length) {\n payload = {\n search: getQuery || `pageId==${fanpage_selected.pageId}`,\n exclude: customerDifferent.map((cus) => cus.uid),\n bombotTags: tagSelected.map((t) => t.id)\n };\n } else {\n payload = {\n search: getQuery || `pageId==${fanpage_selected.pageId}`,\n exclude: customerExclude.map((cus) => cus.uid),\n bombotTags: tagSelected.map((t) => t.id)\n };\n }\n\n try {\n let res;\n if (isRemove) {\n res = await customerApi.removeMultiCustomersBombotTags(payload);\n } else {\n res = await customerApi.addMultiCustomersBombotTags(payload);\n }\n if (res === true) {\n console.log(\"🚀 ~ onSave ~ res:\", res)\n dispatch(\n openToast({\n type: \"success\",\n message: t(\"customer_management.status.success\") \n })\n);\n handleClose();\n } else {\n setMessageType(\"error\");\n }\n } catch (error) {\n dispatch(\n openToast({\n type: \"error\",\n message: t(\"customer_management.status.error\") \n })\n );\n setMessageType(\"error\");\n } finally {\n setIsLoading(false);\n // fix o day\n window.location.reload();\n }\n };\n\n const toggleModalCreate = () => {\n dispatch(toggleModalAdd());\n };\n\n const { t } = useTranslation();\n\n return (\n
\n \n \n {isRemove\n ? t(\"customer_management.remove_bombot_tag.title\")\n : t(\"customer_management.add_bombot_tag.title\")}\n \n\n \n {!isRemove && (\n
\n {t(\"customer_management.add_bombot_tag.description\")}\n
\n )}\n \n option?.name || \"\"}\n onChange={onChange}\n selectOnFocus\n clearOnBlur\n renderOption={(value) => {\n return (\n {\n if (value.onClick) {\n value.onClick();\n }\n }}\n >\n {value.name}\n

\n );\n }}\n renderTags={(value, getTagProps) => {\n return value.map((option, index) => (\n \n ));\n }}\n renderInput={(params) => (\n \n )}\n />\n {!isRemove && (\n \n \n \n \n \n )}\n
\n \n \n {t(\"common.btn.cancel\")}\n \n\n \n \n {isLoading && }\n

{t(\"common.btn.save\")}

\n
\n \n
\n
\n \n
\n
\n );\n};\n\nexport default ModalTagsBombot;\n","import React from \"react\";\nimport { Controller } from \"react-hook-form\";\nimport { MenuItem, Select } from \"@material-ui/core\";\nimport { useTranslation } from \"react-i18next\";\n\nconst BaseSelect = ({\n errors,\n name,\n options,\n defaultValue,\n control,\n style,\n ...props\n}) => {\n const { t } = useTranslation(0);\n return (\n <>\n {\n return (\n \n {options.map((opt, index) => (\n \n {opt.label}\n \n ))}\n \n );\n }}\n />\n {errors && errors[name] && (\n

{errors[name]?.message}

\n )}\n \n );\n};\n\nexport default BaseSelect;\n","export const FIELD_OPTIONS = [\n {\n label: \"customer_management.list.uid\",\n value: \"uid\"\n },\n {\n label: \"customer_management.list.facebook_name\",\n value: \"name\"\n },\n {\n label: \"customer_management.list.gender\",\n value: \"gender\"\n },\n {\n label: \"customer_management.list.phone\",\n value: \"phone\"\n },\n {\n label: \"customer_management.list.facebook_tag\",\n value: \"fbTags\"\n },\n {\n label: \"customer_management.list.bombot_tag\",\n value: \"bombotTags\"\n },\n // {\n // label: \"customer_management.list.pancake_tag\",\n // value: \"pancakeTags\"\n // },\n {\n label: \"customer_management.list.last_update_time\",\n value: \"lastSyncTime\"\n },\n {\n label: \"customer_management.list.last_inbox_time\",\n value: \"lastInboxTime\"\n },\n {\n label: \"customer_management.list.last_customer_inbox_time\",\n value: \"lastCustomerInboxTime\"\n }\n];\nexport const OPERATION_OPTION_NAME = [\n {\n label: \"customer_management.customer_filter.contain\",\n value: \"contain\"\n },\n {\n label: \"customer_management.customer_filter.not_contain\",\n value: \"ncontain\"\n }\n];\n\nexport const OPERATION_TAGS_OPTION = [\n {\n label: \"update.customer_filter.in\",\n value: \"in\"\n },\n {\n label: \"update.customer_filter.notin\",\n value: \"notin\"\n }\n];\n\nexport const GENDER_OPTION = [\n {\n label: \"customer_management.customer_filter.is\",\n value: \"==\"\n },\n {\n label: \"customer_management.customer_filter.is_not\",\n value: \"!=\"\n }\n];\nexport const OPERATION_OPTION = [...GENDER_OPTION, ...OPERATION_TAGS_OPTION];\n\nexport const OPERATION_TIME_OPTION = [\n {\n label: \"customer_management.customer_filter.range\",\n value: \"bw\"\n }\n];\n\nexport const OPERATION_PHONE_OPTION = [\n {\n label: \"customer_management.customer_filter.is\",\n value: \"exists\"\n }\n];\n\nexport const GENDER_OPTIONS = [\n {\n label: \"update.gender.male\",\n value: \"MALE\"\n },\n {\n label: \"update.gender.female\",\n value: \"FEMALE\"\n },\n {\n label: \"update.gender.other\",\n value: \"NEUTER\"\n }\n];\n\nexport const PHONE_OPTIONS = [\n {\n label: \"update.customer_filter.in\",\n value: \"true\"\n },\n {\n label: \"update.customer_filter.notin\",\n value: \"false\"\n }\n];\n","import React from \"react\";\nimport { TextField } from \"@material-ui/core\";\nimport { Controller } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\n\nconst BaseInput = ({ errors, name, ...props }) => {\n const { t } = useTranslation();\n return (\n <>\n {\n return (\n \n );\n }}\n color=\"secondary\"\n />\n {errors && errors[name] && (\n

{errors[name]?.message}

\n )}\n \n );\n};\n\nexport default BaseInput;\n","import { TextField } from \"@material-ui/core\";\nimport Autocomplete from \"@material-ui/lab/Autocomplete\";\nimport React from \"react\";\nimport { Controller } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\n\nconst BaseAutocomplete = ({\n errors,\n name,\n options,\n defaultValue,\n control,\n inputStyle = {},\n ...props\n}) => {\n const { t } = useTranslation();\n return (\n {\n return (\n field.onChange(tags)}\n options={options}\n getOptionLabel={(option) => option?.label || \"\"}\n selectOnFocus\n clearOnBlur\n renderOption={(value) => {\n return

{value.label}

;\n }}\n value={field.value || []}\n renderInput={(params) => (\n \n )}\n />\n );\n }}\n />\n );\n};\n\nexport default BaseAutocomplete;\n","import React from \"react\";\nimport { Controller } from \"react-hook-form\";\nimport TextField from \"@material-ui/core/TextField\";\nimport {\n DateRangeDelimiter,\n LocalizationProvider,\n DesktopDateRangePicker,\n} from \"@material-ui/pickers\";\nimport DateFnsUtils from \"@material-ui/pickers/adapter/date-fns\";\nimport Flex from \"components/Flex\";\nimport { useTranslation } from \"react-i18next\";\n\nconst BaseDatePicker = ({ control, name, defaultValue, rules, ...rest }) => {\n const { t } = useTranslation();\n return (\n \n {\n return (\n \n {\n field.onChange(date);\n }}\n value={field.value || [null, null]}\n {...rest}\n renderInput={(startProps, endProps) => {\n return (\n <>\n \n \n {t(\"update.form.to\")}\n \n \n \n );\n }}\n />\n \n );\n }}\n />\n \n );\n};\n\nexport default BaseDatePicker;\n","\nimport { useRef, useEffect } from 'react';\n\nfunction useEffectIgnoreFirst(callback: Function, dependencies: Array) {\n const isFirstRun = useRef(true);\n useEffect(() => {\n if (isFirstRun.current) {\n isFirstRun.current = false;\n return;\n }\n return callback()\n }, dependencies)\n}\n\nexport default useEffectIgnoreFirst","import Flex from \"components/Flex\";\nimport BaseSelect from \"components/Form/BaseSelect\";\nimport {\n FIELD_OPTIONS,\n GENDER_OPTION,\n GENDER_OPTIONS,\n OPERATION_OPTION,\n OPERATION_OPTION_NAME,\n OPERATION_PHONE_OPTION,\n OPERATION_TAGS_OPTION,\n OPERATION_TIME_OPTION,\n PHONE_OPTIONS\n} from \"constants/helper\";\nimport React, { useEffect, useMemo } from \"react\";\nimport { useWatch } from \"react-hook-form\";\nimport BaseInput from \"components/Form/BaseInput\";\nimport CloseIcon from \"@material-ui/icons/Close\";\nimport Tooltip from \"@material-ui/core/Tooltip\";\nimport BaseAutocomplete from \"components/Form/BaseAutocomplete\";\nimport BaseDatePicker from \"components/Form/BaseDatePicker\";\nimport { useSelector } from \"react-redux\";\nimport { Chip, IconButton } from \"@material-ui/core\";\nimport { selectFanpageSelected } from \"views/Customer/CustomerSelectors\";\nimport useEffectIgnoreFirst from \"hook/useEffectIgnoreFirst\";\nimport { useTranslation } from \"react-i18next\";\n\nconst RenderValue = ({ fieldSelected, name, control, defaultValue }) => {\n const pageSelected = useSelector(selectFanpageSelected);\n console.log(\"🚀 ~ RenderValue ~ pageSelected:\", pageSelected);\n const { t } = useTranslation();\n const selectOptions = useMemo(() => {\n if (!pageSelected || !pageSelected.bombotTags) return [];\n switch (fieldSelected) {\n case \"bombotTags\":\n return pageSelected.bombotTags?.map((t) => ({\n value: t?.id,\n label: t?.name,\n color: t?.color\n }));\n case \"fbTags\":\n if (!pageSelected.fbTags) {\n return [];\n }\n return pageSelected.fbTags?.map((t) => ({\n value: t?.id,\n label: t?.name,\n color: t?.color\n }));\n // case \"pancakeTags\":\n // const pancakeTags = pageSelected.otherTags.find(\n // (tag) => tag.system === \"pancake\"\n // );\n // return pancakeTags\n // ? pancakeTags.tags.map((t) => ({\n // value: t.id,\n // label: t.name,\n // color: t.color\n // }))\n // : [];\n case \"pancakeTags\":\n const pancakeTags = pageSelected.otherTags.find(\n (tag) => tag.system === \"pancake\"\n );\n return pancakeTags\n ? pancakeTags.tags.map((t) => ({\n value: t.id,\n label: t.name,\n color: t.color\n }))\n : [];\n case \"gender\":\n return GENDER_OPTIONS?.map((e) => ({ ...e, label: t(e.label) }));\n case \"phone\":\n return PHONE_OPTIONS?.map((e) => ({ ...e, label: t(e.label) }));\n default:\n return [];\n }\n }, [fieldSelected, pageSelected]);\n\n switch (fieldSelected) {\n case \"uid\":\n case \"name\":\n return (\n \n );\n case \"gender\":\n case \"phone\":\n return (\n \n );\n case \"pancakeTags\":\n case \"bombotTags\":\n case \"fbTags\":\n return (\n {\n return value?.map((option, index) => (\n \n ));\n }}\n filterSelectedOptions\n disabled={!fieldSelected}\n name={name}\n control={control}\n options={selectOptions}\n />\n );\n case \"lastInboxTime\":\n return (\n \n \n \n );\n case \"lastCustomerInboxTime\":\n return (\n \n \n \n );\n case \"lastSyncTime\":\n return (\n \n \n \n );\n\n default: {\n return (\n \n );\n }\n }\n};\n\nconst RenderOperation = ({\n fieldSelected,\n name,\n control,\n item,\n selectedFields\n}) => {\n const { t } = useTranslation();\n\n const OPTIONS = useMemo(() => {\n switch (fieldSelected) {\n case \"pancakeTags\":\n case \"bombotTags\":\n case \"fbTags\":\n return OPERATION_TAGS_OPTION?.map((e) => ({ ...e, label: t(e.label) }));\n case \"lastInboxTime\":\n return OPERATION_TIME_OPTION?.map((e) => ({ ...e, label: t(e.label) }));\n case \"lastSyncTime\":\n return OPERATION_TIME_OPTION?.map((e) => ({ ...e, label: t(e.label) }));\n case \"lastCustomerInboxTime\":\n return OPERATION_TIME_OPTION?.map((e) => ({ ...e, label: t(e.label) }));\n case \"phone\":\n return OPERATION_PHONE_OPTION?.map((e) => ({\n ...e,\n label: t(e.label)\n }));\n case \"name\":\n case \"uid\":\n return OPERATION_OPTION_NAME?.map((e) => ({ ...e, label: t(e.label) }));\n case \"gender\":\n return GENDER_OPTION?.map((e) => ({ ...e, label: t(e.label) }));\n default:\n return OPERATION_OPTION?.map((e) => ({ ...e, label: t(e.label) }));\n }\n }, [fieldSelected]);\n\n return (\n \n );\n};\n\nconst ConditionItem = ({\n name,\n control,\n item,\n remove,\n setValue,\n index,\n selectedFields\n}) => {\n const { t } = useTranslation();\n\n const fieldSelected = useWatch({\n control,\n name: `${name}.field`\n });\n\n useEffectIgnoreFirst(() => {\n switch (fieldSelected) {\n case \"fieldSelected\":\n setValue(`${name}.value`, [null, null]);\n break;\n case \"pancakeTags\":\n case \"bombotTags\":\n case \"fbTags\":\n setValue(`${name}.value`, []);\n break;\n default:\n setValue(`${name}.value`, \"\");\n break;\n }\n }, [fieldSelected]);\n\n return (\n \n ({ ...e, label: t(e.label) }))}\n defaultValue={item.field}\n />\n
\n \n
\n \n \n {\n remove(index);\n }}\n >\n \n \n \n
\n );\n};\n\nexport default ConditionItem;\n","import React, { useEffect } from \"react\";\nimport { Dialog, DialogTitle } from \"@material-ui/core\";\nimport { Button, DialogContent, DialogActions } from \"@material-ui/core\";\nimport Flex from \"components/Flex\";\nimport { useFieldArray, useForm } from \"react-hook-form\";\nimport ButtonComponent from \"components/Button\";\nimport { useSelector } from \"react-redux\";\nimport moment from \"moment\";\nimport { setFilter } from \"views/Customer/CustomerReducer\";\nimport { useDispatch } from \"react-redux\";\nimport ConditionItem from \"./ConditionItem\";\nimport { useHistory } from \"react-router-dom\";\nimport {\n selectFanpageSelected,\n selectFilterCus\n} from \"views/Customer/CustomerSelectors\";\nimport { removeVNLang } from \"utils/helper\";\nimport Modal from \"react-modal\";\nimport { useTranslation } from \"react-i18next\";\nimport _ from \"lodash\";\nconst customStyles = {\n content: {\n top: \"50%\",\n left: \"50%\",\n right: \"auto\",\n bottom: \"auto\",\n marginRight: \"-50%\",\n padding: 0,\n transform: \"translate(-50%, -50%)\"\n }\n};\nModal.setAppElement(\"body\");\n\nconst FilterCustomerModal = ({\n handleClose,\n isOpen,\n customerAll,\n onSubmitFilter,\n searchVal\n}) => {\n const pageSelected = useSelector(selectFanpageSelected);\n const filter_value = useSelector(selectFilterCus);\n const history = useHistory();\n const dispatch = useDispatch();\n const {\n handleSubmit,\n control,\n reset,\n setValue,\n formState: { errors }\n } = useForm({\n defaultValues: {\n conditions: [\n {\n field: \"\",\n operation: \"\",\n value: \"\"\n }\n ]\n }\n });\n const { fields, append, remove } = useFieldArray({\n control,\n name: \"conditions\"\n });\n\n useEffect(() => {\n if (filter_value?.search_obj?.conditions?.length) {\n reset({\n conditions: filter_value?.search_obj?.conditions\n });\n }\n }, [filter_value?.search_obj?.conditions]);\n\n useEffect(() => {\n reset({\n conditions: [\n {\n field: \"\",\n operation: \"\",\n value: \"\"\n }\n ]\n });\n }, [pageSelected]);\n\n const onSubmit = (values) => {\n const filtered = values.conditions.filter(\n (e) => e.value && !(Array.isArray(e.value) && e.value.length === 0)\n );\n let payload = \"\";\n let filterArr = [];\n\n console.log(\"🚀 ~ onSubmit ~ values\", values);\n\n filtered.forEach((condition) => {\n if (condition.operation === \"==\" || condition.operation === \"!=\") {\n payload +=\n condition.field +\n condition.operation +\n encodeURIComponent(condition.value) +\n \";\";\n } else {\n switch (condition.field) {\n case \"pancakeTags\":\n payload +=\n `otherTags.system==pancake;otherTags.tags` +\n \"=\" +\n condition.operation +\n \"=\" +\n condition.value?.map((v) => v.value).toString() +\n \";\";\n\n break;\n case \"bombotTags\":\n case \"fbTags\":\n payload +=\n condition.field +\n \"=\" +\n condition.operation +\n \"=\" +\n condition.value?.map((v) => v.value).toString() +\n \";\";\n break;\n case \"phone\":\n case \"gender\":\n payload +=\n condition.field +\n \"=\" +\n condition.operation +\n \"=\" +\n encodeURIComponent(removeVNLang(condition.value)) +\n \";\";\n break;\n case \"uid\":\n case \"name\":\n payload +=\n condition.field +\n \"=\" +\n condition.operation +\n \"=\" +\n removeVNLang(condition.value) +\n \";\";\n break;\n case \"lastInboxTime\":\n payload +=\n condition.field +\n \"=\" +\n condition.operation +\n \"=\" +\n condition.value\n .map((v) => moment(v).format(\"YYYY-MM-DD\"))\n .toString() +\n \";\";\n break;\n case \"lastCustomerInboxTime\":\n payload +=\n condition.field +\n \"=\" +\n condition.operation +\n \"=\" +\n condition.value\n .map((v) => moment(v).format(\"YYYY-MM-DD\"))\n .toString() +\n \";\";\n break;\n case \"lastSyncTime\":\n payload +=\n condition.field +\n \"=\" +\n condition.operation +\n \"=\" +\n condition.value\n .map((v) => moment(v).format(\"YYYY-MM-DD\"))\n .toString() +\n \";\";\n break;\n default:\n break;\n }\n }\n });\n\n if (filtered[0]) {\n if (filtered[0].field === \"uid\") {\n if (filtered[0].operation === \"contain\") {\n const customerFilter = customerAll.filter((cus) =>\n cus.uid.includes(filtered[0].value)\n );\n onSubmitFilter(customerFilter);\n } else {\n const customerFilter = customerAll.filter(\n (cus) => !cus.uid.includes(filtered[0].value)\n );\n onSubmitFilter(customerFilter);\n }\n }\n\n if (filtered[0].field === \"name\") {\n if (filtered[0].operation === \"contain\") {\n const customerFilter = customerAll.filter(\n (cus) => cus.name && cus.name.includes(filtered[0].value)\n );\n onSubmitFilter(customerFilter);\n } else {\n const customerFilter = customerAll.filter(\n (cus) => cus.name && !cus.name.includes(filtered[0].value)\n );\n onSubmitFilter(customerFilter);\n }\n }\n\n if (filtered[0].field === \"gender\") {\n if (filtered[0].operation === \"==\") {\n if (filtered[0].value !== \"ALL\") {\n const customerFilter = customerAll.filter(\n (cus) => cus.gender === filtered[0].value\n );\n onSubmitFilter(customerFilter);\n }\n } else {\n if (filtered[0].value !== \"ALL\") {\n const customerFilter = customerAll.filter(\n (cus) => cus.gender !== filtered[0].value\n );\n onSubmitFilter(customerFilter);\n }\n }\n }\n\n if (filtered[0].field === \"phone\") {\n if (filtered[0].operation === \"exists\") {\n if (filtered[0].value === \"true\") {\n const customerFilter = customerAll.filter((cus) => cus.phone);\n onSubmitFilter(customerFilter);\n }\n } else {\n if (filtered[0].value !== \"true\") {\n const customerFilter = customerAll.filter((cus) => !cus.phone);\n onSubmitFilter(customerFilter);\n }\n }\n }\n\n if (filtered[0].field === \"fbTags\") {\n if (filtered[0].operation === \"in\") {\n if (filtered[0].value && filtered[0].value.length !== 0) {\n filtered[0].value.map((e) => filterArr.push(e.value));\n Array.from(new Set(filterArr));\n const customerFilter = customerAll.filter(\n (cus) => JSON.stringify(cus.fbTags) === JSON.stringify(filterArr)\n );\n onSubmitFilter(customerFilter);\n }\n } else {\n if (filtered[0].value && filtered[0].value.length !== 0) {\n filtered[0].value.map((e) => filterArr.push(e.value));\n Array.from(new Set(filterArr));\n const customerFilter = customerAll.filter(\n (cus) => JSON.stringify(cus.fbTags) !== JSON.stringify(filterArr)\n );\n onSubmitFilter(customerFilter);\n }\n }\n }\n\n if (filtered[0].field === \"bombotTags\") {\n if (filtered[0].operation === \"in\") {\n if (filtered[0].value && filtered[0].value.length !== 0) {\n filtered[0].value.map((e) => filterArr.push(e.value));\n Array.from(new Set(filterArr));\n const customerFilter = customerAll.filter(\n (cus) =>\n JSON.stringify(cus.bombotTags) === JSON.stringify(filterArr)\n );\n onSubmitFilter(customerFilter);\n }\n } else {\n if (filtered[0].value && filtered[0].value.length !== 0) {\n filtered[0].value.map((e) => filterArr.push(e.value));\n Array.from(new Set(filterArr));\n const customerFilter = customerAll.filter(\n (cus) =>\n JSON.stringify(cus.bombotTags) !== JSON.stringify(filterArr)\n );\n onSubmitFilter(customerFilter);\n }\n }\n }\n\n // chua check if pancakeTags\n if (filtered[0].field === \"pancakeTags\") {\n const selectedTags = filtered[0].value; // Assuming this is an array of selected tag IDs\n const operation = filtered[0].operation; // Get the operation (e.g., \"in\", \"not in\")\n\n if (operation === \"in\") {\n // Filter customers who have any of the selected pancake tag IDs\n const customerFilter = customerAll.filter((cus) => {\n const customerTagIds = cus.otherTags\n .filter((tag) => tag.system === \"pancake\") // Filter for pancake tags\n .flatMap((tag) => tag.tags.map((t) => t.id)); // Get the IDs of the tags\n\n // Check if any of the selected tags are in the customer's pancake tag IDs\n return selectedTags.some((selectedTag) =>\n customerTagIds.includes(selectedTag)\n );\n });\n onSubmitFilter(customerFilter);\n } else if (operation === \"not in\") {\n // Filter customers who do not have any of the selected pancake tag IDs\n const customerFilter = customerAll.filter((cus) => {\n const customerTagIds = cus.otherTags\n .filter((tag) => tag.system === \"pancake\") // Filter for pancake tags\n .flatMap((tag) => tag.tags.map((t) => t.id)); // Get the IDs of the tags\n\n // Check if none of the selected tags are in the customer's pancake tag IDs\n return !selectedTags.some((selectedTag) =>\n customerTagIds.includes(selectedTag)\n );\n });\n onSubmitFilter(customerFilter);\n }\n }\n\n if (filtered[0].field === \"lastInboxTime\") {\n if (filtered[0].operation === \"bw\") {\n if (filtered[0].value) {\n if (filtered[0].value[0] && filtered[0].value[1]) {\n const customerFilter = customerAll.filter(\n (cus) =>\n new Date(cus.lastInboxTime) >= filtered[0].value[0] &&\n new Date(cus.lastInboxTime) <= filtered[0].value[1]\n );\n onSubmitFilter(customerFilter);\n } else if (filtered[0].value[0] && !filtered[0].value[1]) {\n const customerFilter = customerAll.filter(\n (cus) =>\n new Date(cus.lastInboxTime) >= filtered[0].value[0] &&\n new Date()\n );\n onSubmitFilter(customerFilter);\n } else if (!filtered[0].value[0] && filtered[0].value[1]) {\n const customerFilter = customerAll.filter((cus) => cus);\n onSubmitFilter(customerFilter);\n }\n }\n }\n }\n }\n\n payload += `pageId==${pageSelected.id}`;\n\n dispatch(\n setFilter({\n search_arr: values.conditions,\n search_string: payload\n })\n );\n\n handleClose();\n const searchParam = new URLSearchParams(window.location.search);\n searchParam.set(\"query\", payload);\n history.push({\n pathname: window.location.pathname,\n search: \"?\" + searchParam.toString()\n });\n };\n\n const addCondition = () => {\n append({\n field: \"\",\n operation: \"\",\n value: \"\"\n });\n };\n const { t } = useTranslation();\n return (\n \n \n {t(\"customer_management.customer_filter.title\")}\n \n
\n \n {fields.map((item, index) => (\n
\n \n
\n ))}\n \n \n \n \n \n {t(\"common.btn.cancel\")}\n \n\n \n \n {/* {isLoading && } */}\n

{t(\"common.btn.save\")}

\n
\n \n
\n
\n \n \n );\n};\n\nexport default FilterCustomerModal;\n","import React, { useEffect, useState } from 'react'\nimport { makeStyles } from '@material-ui/core/styles'\nimport CloseIcon from '@material-ui/icons/Close'\nimport { Box, IconButton, Tooltip, Typography } from '@material-ui/core'\n\nconst useStyles = makeStyles({\n container: (props) => ({\n display: 'flex',\n alignItems: 'center',\n backgroundColor: props.backgroundColor,\n borderRadius: '22px',\n border: `1px solid ${props.textColor}20`, // Thêm border với màu tương tự như textColor\n maxWidth: props.maxWidth,\n padding: props.paddingCon,\n width: 'fit-content',\n position: 'relative', // Thêm position để xử lý overlay\n cursor: 'pointer',\n }),\n text: (props) => ({\n fontSize: props.fontSize, // Sử dụng fontSize từ props\n color: props.textColor,\n padding: props.padding, // Sử dụng padding từ props\n }),\n icon: (props) => ({\n fontSize: props.iconSize, // Sử dụng iconSize từ props\n color: '#3A3A3A',\n }),\n\n removedOverlay: {\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n height: '100%',\n backgroundColor: 'rgba(255, 0, 0, 0.5)', // overlay màu đỏ\n borderRadius: '20px',\n pointerEvents: 'none', // Để overlay không cản trở các thao tác\n backgroundImage:\n 'repeating-linear-gradient(45deg, transparent, transparent 10px, rgba(0, 0, 0, 0.1) 10px, rgba(0, 0, 0, 0.1) 20px)', // Thêm sọc chéo\n zIndex: 1, // Đảm bảo overlay ở trên cùng\n },\n})\n\nconst TagPreviewItem = ({\n background,\n color,\n name,\n size = 'medium',\n style,\n styleText,\n onRemove,\n onUnRemove,\n}) => {\n const sizeStyles = {\n small: {\n padding: '2px 6px',\n fontSize: '11px !important',\n iconSize: '16px',\n maxWidth: '200px',\n },\n medium: {\n padding: '4px 8px',\n fontSize: '13px !important',\n iconSize: '20px',\n maxWidth: '220px',\n },\n large: {\n padding: '6px 2px 6px 12px',\n fontSize: '16px !important',\n iconSize: '24px',\n },\n }\n\n const [isRemoved, setIsRemoved] = useState(false)\n\n const selectedSize = sizeStyles[size] || sizeStyles.medium // Mặc định là medium nếu không có size hợp lệ\n\n const classes = useStyles({\n backgroundColor: background,\n textColor: color,\n padding: selectedSize.padding,\n fontSize: selectedSize.fontSize,\n iconSize: selectedSize.iconSize,\n paddingCon: size !== 'small' ? '2px' : '0px',\n })\n\n const handleDelete = () => {\n setIsRemoved(true)\n }\n\n return (\n \n {name}\n \n }\n >\n {\n onUnRemove && onUnRemove()\n setIsRemoved(false)\n }}\n >\n \n {name}\n \n {onRemove && (\n {\n e.stopPropagation()\n onRemove()\n handleDelete()\n }}\n >\n \n \n )}\n {isRemoved &&
}\n \n \n )\n}\n\nexport default TagPreviewItem\n","import React, { useEffect, useState } from 'react'\n\nimport { makeStyles } from '@material-ui/core/styles'\nimport { Button } from '@material-ui/core'\nimport TagPreviewItem from '../TagPreviewItem'\nimport FormDialog from '../FormDialog'\nimport CloseIcon from '@material-ui/icons/Close'\nimport { useDispatch } from 'react-redux'\nimport { showError } from '../../stores/alert/slice.alert'\nimport LoadingWrapper from '../LoadingWrapper'\n\nconst useStyles = makeStyles((theme) => ({\n tag: {\n backgroundColor: '#d32f2f',\n color: 'white',\n padding: '8px 12px',\n fontSize: '12px',\n borderRadius: '15px',\n boxShadow: '0 4px 6px rgba(0, 0, 0, 0.1)',\n transition: 'background-color 0.3s ease',\n },\n\n footer: {\n display: 'flex',\n justifyContent: 'flex-end',\n marginTop: 12,\n marginRight: 12,\n },\n saveButton: {\n backgroundColor: '#E6F4EA' /* Light green background like the tag */,\n color: '#388E3C' /* Green text similar to the tag text */,\n border: '1px solid #afd0b1',\n\n '&:hover': {\n backgroundColor: '#D0E8D6' /* Slightly darker light green on hover */,\n },\n\n width: '100px',\n fontSize: '12px',\n padding: '6px',\n height: 'fit-content',\n },\n cancelButton: {\n backgroundColor: 'rgb(236, 239, 241)',\n color: '#333333' /* Dark gray text */,\n border: '1px solid rgba(96, 125, 139, 0.125)',\n '&:hover': {\n backgroundColor: '#E0E0E0' /* Slightly darker gray on hover */,\n },\n\n width: '80px',\n fontSize: '12px',\n padding: '6px',\n height: 'fit-content',\n\n marginLeft: '24px',\n },\n\n closeBtn: {\n color: 'rgb(96, 125, 139)',\n minWidth: '50px',\n },\n}))\n\nexport const colorDir1 = [\n {\n backgroundColor: '#F0FFF4', // xanh lá nhạt\n textColor: '#008060', // xanh lá đậm\n },\n {\n backgroundColor: '#E6FFFB', // xanh ngọc nhạt\n textColor: '#00796B', // xanh ngọc đậm\n },\n {\n backgroundColor: '#FFF8E1', // vàng nhạt\n textColor: '#FFA000', // vàng cam đậm\n },\n {\n backgroundColor: '#E3F2FD', // xanh dương rất nhạt\n textColor: '#1565C0', // xanh dương đậm\n },\n {\n backgroundColor: '#FCE4EC', // hồng nhạt\n textColor: '#AD1457', // hồng đậm\n },\n {\n backgroundColor: '#FFEBEE', // đỏ nhạt\n textColor: '#C62828', // đỏ đậm\n },\n {\n backgroundColor: '#FFFDE7', // vàng rất nhạt\n textColor: '#F57F17', // vàng đậm\n },\n {\n backgroundColor: '#F3E5F5', // tím nhạt\n textColor: '#6A1B9A', // tím đậm\n },\n {\n backgroundColor: '#E0F7FA', // xanh nhạt\n textColor: '#00838F', // xanh đậm\n },\n {\n backgroundColor: '#FFF9C4', // vàng kem nhạt\n textColor: '#FBC02D', // vàng nghệ đậm\n },\n {\n backgroundColor: '#F1F8E9', // xanh lá nhạt\n textColor: '#558B2F', // xanh lá đậm\n },\n {\n backgroundColor: '#E8F5E9', // xanh lục nhạt\n textColor: '#2E7D32', // xanh lục đậm\n },\n {\n backgroundColor: '#FFFBF1', // vàng kem rất nhạt\n textColor: '#D17F00', // cam đậm\n },\n {\n backgroundColor: '#EDE7F6', // tím nhạt\n textColor: '#5E35B1', // tím đậm\n },\n {\n backgroundColor: '#FCE7F3', // hồng rất nhạt\n textColor: '#880E4F', // hồng đậm\n },\n {\n backgroundColor: '#FFF1E0', // cam nhạt\n textColor: '#D84315', // cam đậm\n },\n {\n backgroundColor: '#EBF1FF', // xanh lam rất nhạt\n textColor: '#1A73E8', // xanh lam đậm\n },\n {\n backgroundColor: '#FFFAF0', // kem nhạt\n textColor: '#CC8500', // vàng đậm\n },\n {\n backgroundColor: '#E7EFF6', // xanh xám nhạt\n textColor: '#455A64', // xanh xám đậm\n },\n {\n backgroundColor: '#FFF3E0', // cam vàng nhạt\n textColor: '#EF6C00', // cam vàng đậm\n },\n {\n backgroundColor: '#E8EAF6', // xanh xám rất nhạt\n textColor: '#3F51B5', // xanh đậm\n },\n {\n backgroundColor: '#F5E8FF', // tím hồng nhạt\n textColor: '#7B1FA2', // tím hồng đậm\n },\n {\n backgroundColor: '#EFF8E1', // xanh lá nhạt\n textColor: '#33691E', // xanh lá rất đậm\n },\n {\n backgroundColor: '#FFEDF0', // đỏ hồng nhạt\n textColor: '#B71C1C', // đỏ rất đậm\n },\n\n {\n backgroundColor: '#FFF5F7', // hồng rất nhạt\n textColor: '#C2185B', // hồng đậm\n },\n {\n backgroundColor: '#F0F4C3', // xanh lá chanh nhạt\n textColor: '#827717', // xanh lá đậm\n },\n {\n backgroundColor: '#FFEBEE', // đỏ nhạt\n textColor: '#D32F2F', // đỏ đậm\n },\n {\n backgroundColor: '#F1F8E9', // xanh lá rất nhạt\n textColor: '#33691E', // xanh lá đậm\n },\n {\n backgroundColor: '#E1F5FE', // xanh dương nhạt\n textColor: '#0277BD', // xanh dương đậm\n },\n {\n backgroundColor: '#FCE4EC', // hồng nhạt\n textColor: '#E91E63', // hồng đậm\n },\n {\n backgroundColor: '#FFF3E0', // vàng cam nhạt\n textColor: '#FB8C00', // cam đậm\n },\n {\n backgroundColor: '#E0F7FA', // xanh ngọc nhạt\n textColor: '#0097A7', // xanh ngọc đậm\n },\n {\n backgroundColor: '#F9FBE7', // vàng xanh rất nhạt\n textColor: '#827717', // vàng xanh đậm\n },\n {\n backgroundColor: '#FFF8E1', // vàng nhạt\n textColor: '#F57C00', // cam đậm\n },\n {\n backgroundColor: '#F1EFFF', // tím rất nhạt\n textColor: '#512DA8', // tím đậm\n },\n\n {\n backgroundColor: '#ECEFF1', // xanh xám nhạt\n textColor: '#607D8B', // xanh xám đậm\n },\n {\n backgroundColor: '#F3E5F5', // tím nhạt\n textColor: '#8E24AA', // tím đậm\n },\n {\n backgroundColor: '#F0F4C3', // vàng xanh nhạt\n textColor: '#9E9D24', // xanh vàng đậm\n },\n {\n backgroundColor: '#E3F2FD', // xanh dương nhạt\n textColor: '#1E88E5', // xanh dương đậm\n },\n {\n backgroundColor: '#E8F5E9', // xanh lục nhạt\n textColor: '#388E3C', // xanh lục đậm\n },\n {\n backgroundColor: '#F9FBE7', // vàng chanh rất nhạt\n textColor: '#C0CA33', // xanh vàng đậm\n },\n {\n backgroundColor: '#FFEBEE', // đỏ nhạt\n textColor: '#D50000', // đỏ đậm\n },\n {\n backgroundColor: '#FCE4EC', // hồng nhạt\n textColor: '#C2185B', // hồng đậm\n },\n {\n backgroundColor: '#E0F2F1', // xanh ngọc nhạt\n textColor: '#00695C', // xanh ngọc đậm\n },\n {\n backgroundColor: '#FFFDE7', // vàng rất nhạt\n textColor: '#FBC02D', // vàng đậm\n },\n {\n backgroundColor: '#FFF3E0', // cam nhạt\n textColor: '#F57C00', // cam đậm\n },\n {\n backgroundColor: '#F3E5F5', // tím nhạt\n textColor: '#AB47BC', // tím đậm\n },\n {\n backgroundColor: '#FFEBEE', // đỏ nhạt\n textColor: '#C62828', // đỏ đậm\n },\n]\n\nexport const getRandomTag = (tagsArray) => {\n const randomIndex = Math.floor(Math.random() * tagsArray.length)\n return tagsArray[randomIndex]\n}\n\nconst TagsModal = ({\n isOpen,\n onClose,\n selectedTags,\n tagsObj,\n customer,\n handleRemoveTags,\n type,\n}) => {\n const [removingTags, setRemovingTags] = useState([])\n const [isLoading, setIsLoading] = useState(false)\n\n const dispatch = useDispatch()\n\n const classes = useStyles()\n\n const onSubmitRemoveTags = async () => {\n try {\n setIsLoading(true)\n await handleRemoveTags(customer, removingTags)\n } catch (error) {\n dispatch(showError(error.message))\n } finally {\n setIsLoading(false)\n onClose()\n }\n }\n\n return (\n \n \n
\n \n \n {type === 'bombotTag' ? 'Bombot Tags' : 'Facebook Tags'}\n \n\n \n
\n \n {selectedTags?.length > 0 &&\n selectedTags.map((tag, index) => {\n const tagContent =\n type === 'bombotTag'\n ? tagsObj.bombotTags[tag]\n : tagsObj.fbTags[tag]\n return (\n {\n setRemovingTags((prev) => {\n const prevTmp = [...prev]\n prevTmp.push(tag)\n return prevTmp\n })\n }\n : null\n }\n onUnRemove={\n type === 'bombotTag'\n ? () => {\n setRemovingTags((prev) => {\n let prevTmp = prev.filter((id) => id !== tag)\n return prevTmp\n })\n }\n : null\n }\n />\n )\n })}\n \n\n
\n {type === 'bombotTag' && (\n \n Save\n \n )}\n \n
\n \n
\n
\n )\n}\n\nexport default TagsModal\n","import React from 'react';\nimport {\n Dialog,\n DialogTitle,\n DialogContent,\n DialogActions,\n Button,\n Typography\n} from '@material-ui/core';\nimport { makeStyles } from '@material-ui/core';\n\nconst useStyles = makeStyles({\n confirmButton: {\n backgroundColor: \"#05AE34\",\n color: \"white\",\n borderRadius: \"20px\",\n textTransform: \"none\",\n \"&:hover\": {\n backgroundColor: \"#049c2f\"\n }\n },\n dialogActions: {\n paddingRight: \"16px\",\n paddingBottom: \"16px\"\n }\n});\n\n/**\n * Custom confirm modal có thể tái sử dụng ở các trang khác\n */\nconst Confirm = ({\n open,\n title,\n content,\n onClose,\n onConfirm,\n confirmText = 'Xác nhận',\n cancelText = 'Hủy'\n}) => {\n const classes = useStyles();\n \n return (\n \n {title && (\n \n {title}\n \n )}\n \n \n {content}\n \n\n \n \n \n \n \n );\n};\n\nexport default Confirm;","import { useEffect } from 'react'\n\nfunction useDebounce(callback, delay, dependencies = []) {\n useEffect(() => {\n const handler = setTimeout(() => {\n callback()\n }, delay)\n\n // Hủy bỏ timeout nếu dependencies thay đổi hoặc khi component unmount\n return () => clearTimeout(handler)\n }, [...dependencies, delay])\n}\n\nexport default useDebounce\n","import React, { useEffect, useMemo, useState } from 'react'\nimport {\n Button,\n Checkbox,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n FormControlLabel,\n IconButton,\n InputAdornment,\n makeStyles,\n Paper,\n Table,\n TableBody,\n TableCell,\n TableContainer,\n TableHead,\n TableRow,\n TextField,\n Tooltip,\n} from '@material-ui/core'\nimport cn from 'classnames'\nimport Flex from 'components/Flex'\nimport { useTranslation } from 'react-i18next'\nimport SearchIcon from '@material-ui/icons/Search'\nimport { Pagination } from '@material-ui/lab'\nimport { useDispatch, useSelector } from 'react-redux'\nimport { selectFanpageSelected } from 'views/Customer/CustomerSelectors'\nimport _ from 'lodash'\nimport ErrorOutlineIcon from '@material-ui/icons/ErrorOutline'\nimport EditIcon from '@material-ui/icons/Edit'\nimport fanpageApi from '../../api/fanpageApi'\nimport styled from 'styled-components'\nimport { X } from 'react-feather'\nimport moment from 'moment'\nimport TagPreviewItem from 'components/TagPreviewItem'\nimport LoadingWrapper from '../LoadingWrapper'\nimport { showError, showSuccess } from '../../stores/alert/slice.alert'\nimport customerApi from '../../api/customerApi'\nimport types from '../../constants/types'\nimport Confirm from 'components/Modals/Confirm'\nimport useDebounce from '../../hook/useDebouce'\nimport { ArrowBack } from '@material-ui/icons'\nimport ButtonComponent from 'components/Button'\nimport { closeLoading, openLoading } from '../../stores/loading/slice.loading'\n\nconst useStyles = makeStyles((theme) => ({\n paper: {\n width: '100%',\n marginBottom: '80px',\n },\n table: {\n minWidth: '100%',\n },\n visuallyHidden: {\n border: 0,\n clip: 'rect(0 0 0 0)',\n height: 1,\n margin: -1,\n overflow: 'hidden',\n padding: 0,\n position: 'absolute',\n top: 20,\n width: 1,\n },\n '.pagination': {\n '& .MuiTablePagination-input': {\n width: 70,\n },\n },\n\n wrapperSearch: {\n position: 'relative',\n },\n\n buttonIEA: {\n width: '100%',\n // marginTop: 10,\n textAlign: 'left',\n marginRight: '15px',\n padding: '20px 15px 15px 0px',\n position: 'fixed',\n bottom: 60,\n background: '#F6F9FC',\n '& button': {\n marginRight: 15,\n },\n },\n noData: {\n color: 'rgba(0,0,0,.5)',\n fontWeight: 'bold',\n textAlign: 'center',\n padding: '24px',\n },\n iconCheck: {\n '& .MuiSvgIcon-root': {\n width: '40',\n height: '40',\n },\n },\n icon: {\n marginLeft: 5,\n cursor: 'pointer',\n '& .MuiSvgIcon-root': {\n width: '40',\n height: '40',\n },\n },\n classTags: {\n '&:last-child': {\n '& span': {\n display: 'none',\n },\n },\n },\n wrapBox: {\n padding: '15px',\n marginBottom: 30,\n },\n inputAdd: {\n width: '100%',\n marginBottom: 15,\n },\n wrapButton: {\n textAlign: 'center',\n },\n buttonLoadMore: {\n border: '0px',\n color: 'var(--primary-color) !important',\n backgroundColor: 'unset',\n },\n\n witdhSeq: {\n minWidth: '120px',\n width: '4%',\n },\n\n witdhCheckBox: {\n minWidth: '60px',\n width: '4%',\n },\n\n witdhUid: {\n minWidth: '160px',\n width: '15%',\n padding: '0 8px !important',\n },\n\n widthName: {\n minWidth: '160px',\n width: '15%',\n padding: '0 8px !important',\n },\n\n widthGender: {\n minWidth: '120px',\n width: '6%',\n padding: '0 8px !important',\n },\n\n widthPhone: {\n minWidth: '160px',\n width: '15%',\n padding: '0 8px !important',\n },\n\n widthDate: {\n minWidth: '200px',\n width: '15%',\n padding: '0 8px !important',\n },\n\n widthLinkFB: {\n minWidth: '120px',\n width: '15%',\n padding: '0 8px !important',\n },\n\n witdhAction: {\n minWidth: '120px',\n width: '4%',\n },\n\n widthTag: {\n minWidth: '140px',\n width: '15%',\n padding: '12px 8px !important',\n },\n\n witdhUidErr: {\n minWidth: '140px',\n width: '20%',\n padding: '0 8px !important',\n },\n\n p0: {\n padding: '0',\n margin: '0',\n },\n\n heightHeader: {\n height: '52px',\n },\n\n f600: {\n fontWeight: 600,\n },\n\n checkBoxPadding: {\n padding: '10px 20px',\n },\n\n actions: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n width: '100%',\n padding: '18px 0 8px',\n },\n\n closeBtn: {\n color: '#ffffff', // Màu chữ trắng\n backgroundColor: '#dc3545', // Màu nền đỏ để nổi bật\n border: '2px solid #dc3545', // Viền có màu giống nền\n padding: '6px 20px', // Padding cho nút\n borderRadius: '4px', // Đường viền tròn cho nút\n cursor: 'pointer', // Con trỏ chuột khi hover\n margin: '0 36px !important',\n '&:hover': {\n backgroundColor: '#c82333', // Màu nền khi hover (đỏ đậm hơn)\n borderColor: '#bd2130', // Màu viền khi hover\n },\n },\n dialogTitle: {\n position: 'relative',\n paddingRight: '48px',\n margin: 0,\n padding: '16px 24px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n },\n backButton: {\n padding: '8px',\n marginRight: '8px',\n color: '#637381',\n '&:hover': {\n color: '#212B36',\n backgroundColor: 'rgba(99, 115, 129, 0.08)',\n },\n },\n closeButton: {\n position: 'absolute',\n right: 0,\n top: '50%',\n transform: 'translateY(-50%)',\n color: '#637381',\n padding: '8px',\n marginRight: '8px',\n '&:hover': {\n color: '#212B36',\n backgroundColor: 'rgba(99, 115, 129, 0.08)',\n borderRadius: '50%',\n },\n },\n\n submitBtn: {\n color: 'white', // Màu chữ\n backgroundColor: '#28a745', // Màu nền\n border: '2px solid #28a745', // Viền\n padding: '6px 26px', // Padding cho nút\n borderRadius: '4px', // Đường viền tròn cho nút\n cursor: 'pointer', // Con trỏ chuột khi hover.\n margin: '0 36px !important',\n '&:hover': {\n backgroundColor: '#218838', // Màu nền khi hover\n borderColor: '#1e7e34', // Màu viền khi hover\n },\n },\n\n numCusInp: {\n fontSize: '14px',\n display: 'flex',\n justifyContent: 'end',\n alignItems: 'center',\n },\n\n footerContainer: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n width: '100%',\n margin: '12px 0',\n minHeight: '48px',\n },\n\n container: {\n flex: 1,\n width: '100%',\n },\n\n paginationBottom: {\n display: 'flex !important',\n justifyContent: 'end !important',\n alignItems: 'center !important',\n },\n\n buttonLoadMore: {\n alignItems: 'center',\n appearance: 'none',\n backgroundColor: '#fff',\n border: '1px solid #dbdbdb',\n borderRadius: '.375em',\n boxShadow: 'none',\n boxSizing: 'border-box',\n color: '#363636',\n cursor: 'pointer',\n display: 'inline-flex',\n fontFamily: `BlinkMacSystemFont, -apple-system, \"Segoe UI\", Roboto, Oxygen, Ubuntu, Cantarell, \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\", Helvetica, Arial, sans-serif`,\n fontSize: '0.8rem',\n height: '1.8em',\n justifyContent: 'center',\n lineHeight: '1.5',\n padding: 'calc(.5em - 1px) 1em',\n position: 'relative',\n textAlign: 'center',\n userSelect: 'none',\n WebkitUserSelect: 'none',\n touchAction: 'manipulation',\n verticalAlign: 'top',\n whiteSpace: 'nowrap',\n width: '100%',\n\n '&:hover': {\n borderColor: '#b5b5b5',\n },\n '&:active': {\n borderColor: '#4a4a4a',\n outline: '0',\n },\n '&:focus': {\n borderColor: '#485fc7',\n outline: '0',\n },\n '&:focus:not(:active)': {\n boxShadow: 'rgba(72, 95, 199, 0.25) 0 0 0 0.125em',\n },\n },\n\n rowItem: {\n cursor: 'pointer',\n },\n\n tagsContainer: {\n display: 'flex',\n flexWrap: 'wrap',\n gap: '4px',\n padding: '4px 0 !important',\n },\n}))\nconst countRowPerPages = 10\n\nconst CustomersInBomBotTagModal = ({ isOpen, handleClose, tagId }) => {\n const { t } = useTranslation()\n const classes = useStyles()\n const pageSelected = useSelector(selectFanpageSelected)\n const [page, setPage] = useState(0)\n const [customerData, setCustomerData] = useState(null)\n const [currentCustomers, setCurrentCustomers] = useState([])\n const [searchVal, setSearchVal] = useState('')\n const [isLoading, setIsLoading] = useState(false)\n const [checkedList, setCheckedList] = useState({})\n const [openConfirm, setOpenConfirm] = useState(false)\n\n const dispatch = useDispatch()\n\n const getListCustomers = async (page, searchValue = '') => {\n let searchQuery = `pageId==${pageSelected?.id};bombotTags=in=${tagId}`\n\n if (searchValue.trim()) {\n searchQuery += `;uid|name==${searchValue}`\n }\n\n return customerApi\n .getListCustomersInTag({\n search: searchQuery,\n page: page,\n size: countRowPerPages,\n })\n .then((res) => {\n setCustomerData(res)\n })\n }\n\n // useDebounce(\n // () => {\n // ;(async () => {\n // setIsLoading(true)\n // try {\n // setPage(0)\n // if (!searchVal.trim()) {\n // await getListCustomers(0)\n // return\n // }\n // await getListCustomers(0, searchVal)\n // } catch (error) {\n // console.log('error', error)\n // dispatch(showError('Có lỗi xảy ra khi tìm kiếm'))\n // } finally {\n // setIsLoading(false)\n // }\n // })()\n // },\n // 500,\n // [searchVal]\n // )\n\n const handleSearch = async () => {\n setIsLoading(true)\n try {\n setPage(0)\n if (!searchVal.trim()) {\n await getListCustomers(0)\n return\n }\n await getListCustomers(0, searchVal)\n } catch (error) {\n console.log('error', error)\n dispatch(showError('Có lỗi xảy ra khi tìm kiếm'))\n } finally {\n setIsLoading(false)\n }\n }\n\n useEffect(() => {\n ;(async () => {\n try {\n setIsLoading(true)\n\n await getListCustomers(page)\n } catch (error) {\n dispatch(showError('Co loi xay ra!'))\n } finally {\n setIsLoading(false)\n }\n })()\n }, [tagId, page])\n\n const handleCheckAllTag = (isChecked) => {\n if (isChecked) {\n let checkListTmp = {}\n customerData?.content.forEach((customer) => {\n checkListTmp[customer.uid] = isChecked\n })\n setCheckedList(checkListTmp)\n } else {\n setCheckedList({})\n }\n }\n\n const handleCheckTag = (isChecked, uid) => {\n let checkListTmp = { ...checkedList }\n\n if (isChecked) {\n setCheckedList((prev) => ({\n ...prev,\n [uid]: isChecked,\n }))\n } else {\n delete checkListTmp[uid]\n setCheckedList(checkListTmp)\n }\n }\n\n const handleDelete = async () => {\n if (!pageSelected?.id) return\n setIsLoading(true)\n try {\n dispatch(openLoading())\n\n const payload = {\n search: `pageId==${pageSelected?.id}`,\n exclude: [],\n include: Object.keys(checkedList),\n bombotTags: [tagId],\n }\n\n await customerApi.unlinkBombotTag(payload)\n await getListCustomers(0)\n setOpenConfirm(false)\n dispatch(\n showSuccess(\n `Đã xóa tag khỏi ${\n Object.keys(checkedList).length\n } khách hàng thành công`\n )\n )\n setCheckedList({})\n } catch (error) {\n console.log('error', error)\n dispatch(showError(error.message))\n } finally {\n setIsLoading(false)\n dispatch(closeLoading())\n }\n }\n\n const handleSubmitDelete = () => {\n if (Object.keys(checkedList).length === 0) {\n dispatch(showError('Vui lòng chọn ít nhất một khách hàng'))\n return\n }\n setOpenConfirm(true)\n }\n\n const handleDeleteSearch = () => {\n setSearchVal('')\n setPage(0)\n }\n\n const handleChangePage = (event, newPage) => {\n setPage(newPage)\n }\n\n return (\n \n \n \n \n {/* \n \n */}\n {t('tag_management.customers.list')}\n \n \n \n \n \n\n \n \n {\n setSearchVal(e.target.value)\n }}\n InputProps={{\n startAdornment: (\n \n \n \n ),\n endAdornment: searchVal && (\n \n \n \n \n \n ),\n style: {\n paddingRight: 8,\n },\n }}\n style={{\n width: '100%',\n marginRight: '10px', // Thêm margin để tạo khoảng cách với button\n }}\n />\n\n \n {t('common.btn.search')}\n \n \n\n \n \n \n \n \n checkedList[cus.uid]\n )}\n onChange={(_, isChecked) => {\n handleCheckAllTag(isChecked)\n }}\n />\n }\n />\n \n \n {t('customer_management.list.ord_number')}\n \n\n \n {t('customer_management.list.uid')}\n \n \n {t('customer_management.list.facebook_name')}\n \n \n {t('customer_management.list.gender')}\n \n\n \n {t('customer_management.list.last_inbox_time')}\n \n\n \n {t('customer_management.list.last_customer_inbox_time')}\n \n\n \n {t('customer_management.list.phone')}\n \n \n \n \n {customerData?.content.map((row, index) => (\n \n \n {\n handleCheckTag(isChecked, row.uid)\n }}\n />\n }\n />\n \n\n \n
{index + 1}
\n \n\n \n {row.uid ? (\n
{row.uid}
\n ) : (\n \n \n

\n )}\n \n\n \n {row.name ? (\n
{row.name}
\n ) : (\n \n \n

\n )}\n \n\n \n {row.gender ? (\n
\n {_.upperCase(row.gender) ==\n _.upperCase(types.GENDER.MALE)\n ? t('update.gender.male')\n : _.upperCase(row.gender) ==\n _.upperCase(types.GENDER.FEMALE)\n ? t('update.gender.female')\n : t('update.gender.other')}\n
\n ) : (\n \n \n

\n )}\n \n\n \n {row.lastInboxTime ? (\n
\n {moment(row.lastInboxTime).format('DD/MM/YYYY HH:mm')}\n
\n ) : (\n \n \n

\n )}\n \n\n \n {row.lastCustomerInboxTime ? (\n
\n {moment(row.lastCustomerInboxTime).format(\n 'DD/MM/YYYY HH:mm'\n )}\n
\n ) : (\n \n

\n )}\n \n\n \n {row.phone ? (\n
{row.phone}
\n ) : (\n \n

\n )}\n \n \n ))}\n
\n
\n\n {customerData?.content?.length === 0 && (\n

{t('update.no_data')}

\n )}\n \n\n \n \n handleChangePage(event, newPage - 1)\n }\n color=\"secondary\"\n />\n \n \n \n

{t('common.btn.delete')}

\n
\n \n
\n
\n
\n \n\n setOpenConfirm(false)}\n onConfirm={handleDelete}\n confirmText=\"Xóa\"\n cancelText=\"Hủy\"\n />\n
\n )\n}\n\nconst CellSticky = styled(TableCell)`\n position: sticky;\n background-color: #fff;\n right: -1px;\n z-index: 2;\n box-shadow: -15px 0px 17px -7px #f0eded;\n`\n\nexport default CustomersInBomBotTagModal\n","import React, { useState } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { makeStyles } from '@material-ui/core/styles'\nimport {\n Dialog,\n DialogTitle,\n DialogContent,\n DialogActions,\n TextField,\n Button,\n Typography,\n CircularProgress,\n} from '@material-ui/core'\nimport { Alert } from '@material-ui/lab'\nimport cn from 'classnames'\n\nconst useStyles = makeStyles((theme) => ({\n dialog: {\n '& .MuiDialog-paper': {\n borderRadius: '8px',\n minWidth: '500px',\n },\n },\n\n dialogTitle: {\n textAlign: 'center',\n '& h2': {\n fontSize: '20px',\n fontWeight: 600,\n color: '#05AE34',\n },\n padding: '20px 24px 0px',\n },\n\n dialogContent: {\n padding: '14px 24px 0px',\n '& .MuiTextField-root': {\n width: '100%',\n },\n },\n\n dialogActions: {\n padding: '12px 24px 24px',\n justifyContent: 'flex-end',\n gap: '12px',\n },\n\n description: {\n fontSize: '14px',\n marginBottom: '20px',\n textAlign: 'left',\n },\n\n inputWrapper: {\n marginBottom: '20px',\n },\n\n button: {\n borderRadius: '8px',\n padding: '6px 16px',\n textTransform: 'none',\n fontWeight: 500,\n minWidth: '100px',\n },\n\n cancelButton: {\n backgroundColor: '#D1D5DB',\n color: 'white',\n '&:hover': {\n backgroundColor: '#9CA3AF',\n },\n },\n\n submitButton: {\n backgroundColor: '#FF8000',\n color: 'white',\n '&:hover': {\n backgroundColor: '#cc6600',\n },\n '&.Mui-disabled': {\n backgroundColor: '#FFB366',\n color: 'white',\n },\n },\n\n error: {\n marginBottom: '16px',\n },\n\n buttonProgress: {\n color: 'white',\n position: 'absolute',\n top: '50%',\n left: '50%',\n marginTop: -12,\n marginLeft: -12,\n },\n}))\n\nconst RenameTagModal = ({\n open,\n handleClose,\n handleSubmit,\n renameSelected,\n}) => {\n const classes = useStyles()\n const { t } = useTranslation()\n\n const [error, setError] = useState('')\n const [loading, setLoading] = useState(false)\n const [val, setVal] = useState(renameSelected.name)\n\n const validateInput = (value) => {\n if (!value.trim()) {\n setError(t('account_management.transfer.error.required'))\n return false\n }\n if (!/^[A-Za-z0-9]+$/.test(value)) {\n setError(t('account_management.service_information.error.invalid_format'))\n return false\n }\n setError('')\n return true\n }\n\n return (\n \n \n {t('tag_management.enter_new_tag_name')}\n \n\n \n {error && (\n \n {error}\n \n )}\n\n
\n setVal(e.target.value)}\n error={!!error}\n helperText={error}\n inputProps={{\n maxLength: 50,\n }}\n />\n
\n
\n\n \n \n {t('common.btn.cancel')}\n \n\n handleSubmit(renameSelected, val)}\n className={cn(classes.button, classes.submitButton)}\n disabled={!val.trim() || loading}\n >\n {loading ? (\n \n ) : (\n t('common.btn.confirm')\n )}\n \n \n
\n )\n}\n\nexport default RenameTagModal\n","import {\n Button,\n Checkbox,\n DialogActions,\n FormControlLabel,\n IconButton,\n InputAdornment,\n makeStyles,\n Paper,\n Table,\n TableBody,\n TableCell,\n TableContainer,\n TableHead,\n TableRow,\n TextField,\n Tooltip\n} from \"@material-ui/core\";\nimport { PeopleAltOutlined } from \"@material-ui/icons\";\nimport EditIcon from \"@material-ui/icons/Edit\";\nimport SearchIcon from \"@material-ui/icons/Search\";\nimport { Pagination } from \"@material-ui/lab\";\nimport cn from \"classnames\";\nimport ButtonComponent from \"components/Button\";\nimport Flex from \"components/Flex\";\nimport TagPreviewItem from \"components/TagPreviewItem\";\nimport _ from \"lodash\";\nimport { useEffect, useState } from \"react\";\nimport { X } from \"react-feather\";\nimport { useTranslation } from \"react-i18next\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport styled from \"styled-components\";\nimport { selectFanpageSelected } from \"views/Customer/CustomerSelectors\";\nimport fanpageApi from \"../../api/fanpageApi\";\nimport { showError, showSuccess } from \"../../stores/alert/slice.alert\";\nimport { closeLoading, openLoading } from \"../../stores/loading/slice.loading\";\nimport CustomersInBomBotTagModal from \"../CustomersInTagModal/CustomersInBomBotTagModal\";\nimport Confirm from \"../Modals/Confirm\";\nimport RenameTagModal from \"../RenameTagModal\";\nimport { Trash2Icon, TrashIcon } from \"lucide-react\";\n\nconst useStyles = makeStyles({\n widthCheckBox: {\n // minWidth: \"60px\",\n height: \"52px\"\n // width: \"4%\"\n },\n widthSeq: {\n minWidth: \"80px\",\n padding: \"0 8px !important\"\n },\n widthId: {\n minWidth: \"146px\",\n padding: \"0 8px !important\"\n },\n widthName: {\n minWidth: \"220px\",\n padding: \"0 8px !important\"\n },\n widthCreatedAt: {\n minWidth: \"220px\",\n padding: \"0 8px !important\"\n },\n widthCreatedBy: {\n minWidth: \"220px\",\n padding: \"0 8px !important\"\n },\n widthQuantityCus: {\n minWidth: \"120px\",\n padding: \"0 8px !important\"\n },\n widthActions: {\n minWidth: \"140px\",\n width: \"6%\",\n padding: \"0 8px !important\"\n },\n p0: {\n padding: \"0\",\n margin: \"0\"\n },\n heightHeader: {\n height: \"52px\"\n },\n f600: {\n fontWeight: 600\n },\n checkBoxPadding: {\n padding: \"10px 20px\"\n },\n actions: {\n display: \"flex\",\n alignItems: \"center\",\n width: \"100%\",\n justifyContent: \"space-between\",\n marginTop: \"10px\"\n },\n closeBtn: {\n color: \"#ffffff\",\n backgroundColor: \"#dc3545\",\n border: \"2px solid #dc3545\",\n padding: \"6px 20px\",\n borderRadius: \"4px\",\n cursor: \"pointer\",\n \"&:hover\": {\n backgroundColor: \"#c82333\",\n borderColor: \"#bd2130\"\n }\n },\n submitBtn: {\n color: \"white\",\n backgroundColor: \"#28a745\",\n border: \"2px solid #28a745\",\n padding: \"6px 26px\",\n borderRadius: \"4px\",\n cursor: \"pointer\",\n margin: \"0 36px !important\",\n \"&:hover\": {\n backgroundColor: \"#218838\",\n borderColor: \"#1e7e34\"\n }\n },\n numCusInp: {\n fontSize: \"14px\",\n display: \"flex\",\n justifyContent: \"end\",\n alignItems: \"center\"\n },\n footerContainer: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n width: \"100%\",\n padding: \"0 26px\",\n margin: \"12px 0\",\n minHeight: \"48px\"\n },\n container: {\n flex: 1,\n width: \"100%\"\n },\n paginationBottom: {\n display: \"flex !important\",\n justifyContent: \"end !important\",\n alignItems: \"center !important\"\n },\n buttonLoadMore: {\n alignItems: \"center\",\n appearance: \"none\",\n backgroundColor: \"#fff\",\n border: \"1px solid #dbdbdb\",\n borderRadius: \".375em\",\n boxShadow: \"none\",\n boxSizing: \"border-box\",\n color: \"#363636\",\n cursor: \"pointer\",\n display: \"inline-flex\",\n fontFamily: `BlinkMacSystemFont, -apple-system, \"Segoe UI\", Roboto, Oxygen, Ubuntu, Cantarell, \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\", Helvetica, Arial, sans-serif`,\n fontSize: \"0.8rem\",\n height: \"1.8em\",\n justifyContent: \"center\",\n lineHeight: \"1.5\",\n padding: \"calc(.5em - 1px) 1em\",\n position: \"relative\",\n textAlign: \"center\",\n userSelect: \"none\",\n WebkitUserSelect: \"none\",\n touchAction: \"manipulation\",\n verticalAlign: \"top\",\n whiteSpace: \"nowrap\",\n \"&:hover\": {\n borderColor: \"#b5b5b5\"\n },\n \"&:active\": {\n borderColor: \"#4a4a4a\",\n outline: \"0\"\n },\n \"&:focus\": {\n borderColor: \"#485fc7\",\n outline: \"0\"\n },\n \"&:focus:not(:active)\": {\n boxShadow: \"rgba(72, 95, 199, 0.25) 0 0 0 0.125em\"\n }\n },\n rowItem: {\n cursor: \"pointer\"\n },\n\n noData: {\n color: \"rgba(0,0,0,.5)\",\n fontWeight: \"bold\",\n textAlign: \"center\",\n padding: \"24px\"\n },\n closeButton: {\n position: \"absolute\",\n right: 0,\n top: \"50%\",\n transform: \"translateY(-50%)\",\n color: \"#637381\",\n padding: \"8px\",\n marginRight: \"8px\",\n \"&:hover\": {\n color: \"#212B36\",\n backgroundColor: \"rgba(99, 115, 129, 0.08)\",\n borderRadius: \"50%\"\n }\n },\n dialogTitle: {\n position: \"relative\",\n paddingRight: \"48px\",\n margin: 0,\n padding: \"16px 24px\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\"\n }\n});\n\nconst countRowPerPages = 10;\n\nexport const tagType = {\n BOMBOT_TAGS: \"BOMBOT_TAGS\",\n FACEBOOK_TAGS: \"FACEBOOK_TAGS\"\n};\n\nconst BombotTagsManagement = ({\n getData,\n getFanpage,\n tabVal,\n setIsLoading\n}) => {\n const { t } = useTranslation();\n const classes = useStyles();\n const pageSelected = useSelector(selectFanpageSelected);\n const [page, setPage] = useState(0);\n const [bombotTagData, setBombotTagData] = useState([]);\n const [searchVal, setSearchVal] = useState(\"\");\n const [openConfirmDelete, setOpenConfirmDelete] = useState(false);\n const [renameSelected, setRenameSelected] = useState(null);\n const [selectedTag, setSelectedTag] = useState(null);\n\n const [checkedList, setCheckedList] = useState({});\n const [selectedCount, setSelectedCount] = useState(0);\n\n const dispatch = useDispatch();\n\n const getBombotTags = async (page) => {\n if (!pageSelected.id) return;\n\n let search = null;\n\n if (searchVal.trim()) {\n search = `id|name==${searchVal}`;\n }\n\n let params = {\n id: pageSelected.id,\n page: page,\n size: countRowPerPages\n };\n\n if (!_.isNull(search)) {\n params = {\n id: pageSelected.id,\n page: page,\n size: countRowPerPages,\n search\n };\n }\n\n return fanpageApi.getBomBotTagList(pageSelected?.id, params).then((res) => {\n setBombotTagData(res);\n return res;\n });\n };\n\n useEffect(() => {\n (async () => {\n try {\n setIsLoading(true);\n\n if (tabVal === tagType.BOMBOT_TAGS) {\n await getBombotTags(page);\n }\n } catch (error) {\n dispatch(showError(\"Co loi xay ra!\"));\n } finally {\n setIsLoading(false);\n }\n })();\n }, [pageSelected, page, tabVal]);\n\n useEffect(() => {\n setSelectedCount(0);\n setCheckedList({});\n }, [pageSelected]);\n\n const handleSearch = async () => {\n setIsLoading(true);\n try {\n setPage(0);\n\n if (tabVal === tagType.BOMBOT_TAGS) {\n await getBombotTags(0);\n }\n } catch (error) {\n dispatch(showError(\"Co loi xay ra!\"));\n } finally {\n setIsLoading(false);\n }\n };\n\n const handleChangePage = (event, newPage) => {\n setPage(newPage);\n };\n\n const handleCheckTag = (isChecked, tagId) => {\n setCheckedList((prev) => ({\n ...prev,\n [tagId]: isChecked\n }));\n\n // Cập nhật selectedCount khi chọn hoặc bỏ chọn tag\n const count =\n Object.keys(checkedList).filter((id) => checkedList[id]).length +\n (isChecked ? 1 : -1);\n setSelectedCount(count);\n };\n\n const handleCheckAllTag = (isChecked) => {\n const currentPageTags = bombotTagData?.content;\n let checkListTmp = {};\n if (isChecked) {\n currentPageTags.forEach((tag) => {\n checkListTmp[tag.id] = true; // Đánh dấu tất cả tag là đã chọn\n });\n setSelectedCount(currentPageTags.length); // Cập nhật selectedCount\n } else {\n currentPageTags.forEach((tag) => {\n checkListTmp[tag.id] = false; // Bỏ chọn tất cả tag\n });\n setSelectedCount(0); // Đặt lại selectedCount\n }\n setCheckedList(checkListTmp);\n };\n\n const handleDeleteSearch = () => {\n setSearchVal(\"\");\n setPage(0);\n };\n\n const handleSubmitDeleteTags = () => {\n const count = Object.keys(checkedList).filter(\n (tagId) => checkedList[tagId]\n ).length;\n if (count === 0) {\n dispatch(showError(\"Vui lòng chọn ít nhất một tag\"));\n return;\n }\n setSelectedCount(count); // Cập nhật selectedCount trước khi mở modal xác nhận\n setOpenConfirmDelete(true);\n };\n\n const handleDeleteTags = async () => {\n try {\n dispatch(openLoading());\n await fanpageApi.deleteBomBotTagList(pageSelected?.id, {\n tagId: Object.keys(checkedList).filter((tagId) => checkedList[tagId])\n });\n\n getFanpage();\n const res = await getBombotTags(page);\n\n if (res && res.content.length === 0 && page > 0) {\n setPage(page - 1);\n }\n\n setOpenConfirmDelete(false);\n dispatch(showSuccess(`Đã xóa ${selectedCount} tag thành công`));\n setCheckedList({});\n setSelectedCount(0); // Reset selectedCount sau khi xóa\n } catch (error) {\n dispatch(showError(error.message));\n } finally {\n dispatch(closeLoading());\n }\n };\n\n const handleRenameTag = async (renameTag, newName) => {\n try {\n dispatch(openLoading());\n\n const payload = {\n name: newName\n };\n\n await fanpageApi.renameTag(pageSelected.id, renameTag.id, payload);\n\n setBombotTagData((prevData) => {\n return {\n ...prevData,\n content: prevData.content.map((tag) => {\n if (tag.id === renameTag.id) {\n return { ...tag, name: newName };\n }\n return tag;\n })\n };\n });\n\n getFanpage();\n } catch (error) {\n console.log(error);\n dispatch(showError(error.message));\n } finally {\n setRenameSelected(null);\n dispatch(closeLoading());\n }\n };\n\n useEffect(() => {\n console.log(\"checkedList ==>\", checkedList);\n }, [checkedList]);\n\n useEffect(() => {\n console.log(\"bombotTagData ==>\", bombotTagData);\n }, [bombotTagData]);\n\n return (\n <>\n \n {\n setSearchVal(e.target.value);\n }}\n InputProps={{\n startAdornment: (\n \n \n \n ),\n endAdornment: searchVal && (\n \n \n \n \n \n ),\n style: {\n paddingRight: 8\n }\n }}\n style={{\n width: \"100%\",\n marginRight: \"10px\"\n }}\n />\n \n {t(\"common.btn.search\")}\n \n }\n backgroundColor=\"#05AE34\"\n color=\"white\"\n handleClickButton={() => handleSearch()}\n style={{\n minWidth: \"fit-content\"\n }}\n />\n \n\n \n \n \n \n \n checkedList[tag.id]\n )\n ? true\n : false\n }\n onChange={(_, isChecked) => {\n handleCheckAllTag(isChecked);\n }}\n />\n }\n />\n \n \n {t(\"tag_management.list.tag_ord_nos\")}\n \n \n {t(\"tag_management.list.tag_id\")}\n \n \n {t(\"tag_management.list.tag_name\")}\n \n \n {t(\"tag_management.list.num_customers\")}\n \n \n {t(\"tag_management.action\")}\n \n \n \n \n {bombotTagData?.content?.length > 0 &&\n bombotTagData?.content?.map((tag, index) => (\n \n \n {\n handleCheckTag(isChecked, tag.id);\n }}\n />\n }\n />\n \n \n {bombotTagData?.number * countRowPerPages + index + 1}\n \n \n {tag?.id}\n \n \n \n \n
\n \n
\n
\n \n \n \n {tag?.totalCus}\n \n {/* \n {tag.createdAt\n ? moment(tag.createdAt).format('DD/MM/YYYY HH:mm')\n : 'N/A'}\n */}\n {/* \n {tag.createdByUserId || 'N/A'}\n */}\n {/* \n {tag.totalCus || 'N/A'}\n */}\n \n \n \n {\n setSelectedTag(tag.id);\n }}\n >\n \n \n \n \n {\n setRenameSelected(tag);\n }}\n >\n \n \n \n \n \n \n ))}\n
\n
\n {bombotTagData?.content?.length === 0 && (\n

{t(\"update.no_data\")}

\n )}\n \n\n {bombotTagData?.content?.length > 0 && (\n \n handleChangePage(event, newPage - 1)}\n color=\"secondary\"\n />\n \n {/* \n \n

{t(\"common.btn.delete\")}

\n
\n */}\n\n \n \n

\n {selectedCount > 0\n ? `${t(\"common.btn.delete\")} (${selectedCount})`\n : t(\"common.btn.delete\")}\n

\n
\n \n
\n
\n )}\n\n setOpenConfirmDelete(false)}\n onConfirm={handleDeleteTags}\n confirmText=\"Xóa\"\n cancelText=\"Hủy\"\n />\n\n {!_.isNull(selectedTag) && (\n setSelectedTag(null)}\n tagId={selectedTag}\n />\n )}\n\n {renameSelected && (\n setRenameSelected(null)}\n handleSubmit={handleRenameTag}\n renameSelected={renameSelected}\n />\n )}\n \n );\n};\n\nconst CellSticky = styled(TableCell)`\n position: sticky;\n background-color: #fff;\n right: -1px;\n z-index: 2;\n box-shadow: -15px 0px 17px -7px #f0eded;\n`;\n\nexport default BombotTagsManagement;\n","import React, { useEffect, useMemo, useState } from 'react'\nimport {\n Button,\n Checkbox,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n FormControlLabel,\n IconButton,\n InputAdornment,\n makeStyles,\n Paper,\n Table,\n TableBody,\n TableCell,\n TableContainer,\n TableHead,\n TableRow,\n TextField,\n Tooltip,\n} from '@material-ui/core'\nimport cn from 'classnames'\nimport Flex from 'components/Flex'\nimport { useTranslation } from 'react-i18next'\nimport SearchIcon from '@material-ui/icons/Search'\nimport { Pagination } from '@material-ui/lab'\nimport { useDispatch, useSelector } from 'react-redux'\nimport { selectFanpageSelected } from 'views/Customer/CustomerSelectors'\nimport _ from 'lodash'\nimport ErrorOutlineIcon from '@material-ui/icons/ErrorOutline'\nimport EditIcon from '@material-ui/icons/Edit'\nimport fanpageApi from '../../api/fanpageApi'\nimport styled from 'styled-components'\nimport { X } from 'react-feather'\nimport moment from 'moment'\nimport TagPreviewItem from 'components/TagPreviewItem'\nimport LoadingWrapper from '../LoadingWrapper'\nimport { showError, showSuccess } from '../../stores/alert/slice.alert'\nimport customerApi from '../../api/customerApi'\nimport types from '../../constants/types'\nimport Confirm from 'components/Modals/Confirm'\nimport useDebounce from '../../hook/useDebouce'\nimport { ArrowBack } from '@material-ui/icons'\nimport ButtonComponent from 'components/Button'\n\nconst useStyles = makeStyles((theme) => ({\n paper: {\n width: '100%',\n marginBottom: '80px',\n },\n table: {\n minWidth: '100%',\n },\n visuallyHidden: {\n border: 0,\n clip: 'rect(0 0 0 0)',\n height: 1,\n margin: -1,\n overflow: 'hidden',\n padding: 0,\n position: 'absolute',\n top: 20,\n width: 1,\n },\n '.pagination': {\n '& .MuiTablePagination-input': {\n width: 70,\n },\n },\n\n wrapperSearch: {\n position: 'relative',\n },\n\n buttonIEA: {\n width: '100%',\n // marginTop: 10,\n textAlign: 'left',\n marginRight: '15px',\n padding: '20px 15px 15px 0px',\n position: 'fixed',\n bottom: 60,\n background: '#F6F9FC',\n '& button': {\n marginRight: 15,\n },\n },\n noData: {\n color: 'rgba(0,0,0,.5)',\n fontWeight: 'bold',\n textAlign: 'center',\n padding: '24px',\n },\n iconCheck: {\n '& .MuiSvgIcon-root': {\n width: '40',\n height: '40',\n },\n },\n icon: {\n marginLeft: 5,\n cursor: 'pointer',\n '& .MuiSvgIcon-root': {\n width: '40',\n height: '40',\n },\n },\n classTags: {\n '&:last-child': {\n '& span': {\n display: 'none',\n },\n },\n },\n wrapBox: {\n padding: '15px',\n marginBottom: 30,\n },\n inputAdd: {\n width: '100%',\n marginBottom: 15,\n },\n wrapButton: {\n textAlign: 'center',\n },\n buttonLoadMore: {\n border: '0px',\n color: 'var(--primary-color) !important',\n backgroundColor: 'unset',\n },\n\n witdhSeq: {\n minWidth: '120px',\n width: '4%',\n },\n\n witdhCheckBox: {\n minWidth: '60px',\n width: '4%',\n },\n\n witdhUid: {\n minWidth: '160px',\n width: '15%',\n padding: '0 8px !important',\n },\n\n widthName: {\n minWidth: '160px',\n width: '15%',\n padding: '0 8px !important',\n },\n\n widthGender: {\n minWidth: '120px',\n width: '6%',\n padding: '0 8px !important',\n },\n\n widthPhone: {\n minWidth: '160px',\n width: '15%',\n padding: '0 8px !important',\n },\n\n widthDate: {\n minWidth: '200px',\n width: '15%',\n padding: '0 8px !important',\n },\n\n widthLinkFB: {\n minWidth: '120px',\n width: '15%',\n padding: '0 8px !important',\n },\n\n witdhAction: {\n minWidth: '120px',\n width: '4%',\n },\n\n widthTag: {\n minWidth: '140px',\n width: '15%',\n padding: '12px 8px !important',\n },\n\n witdhUidErr: {\n minWidth: '140px',\n width: '20%',\n padding: '0 8px !important',\n },\n\n p0: {\n padding: '0',\n margin: '0',\n },\n\n heightHeader: {\n height: '52px',\n },\n\n f600: {\n fontWeight: 600,\n },\n\n checkBoxPadding: {\n padding: '10px 20px',\n },\n\n actions: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n width: '100%',\n padding: '18px 0 8px',\n },\n\n closeBtn: {\n color: '#ffffff', // Màu chữ trắng\n backgroundColor: '#dc3545', // Màu nền đỏ để nổi bật\n border: '2px solid #dc3545', // Viền có màu giống nền\n padding: '6px 20px', // Padding cho nút\n borderRadius: '4px', // Đường viền tròn cho nút\n cursor: 'pointer', // Con trỏ chuột khi hover\n margin: '0 36px !important',\n '&:hover': {\n backgroundColor: '#c82333', // Màu nền khi hover (đỏ đậm hơn)\n borderColor: '#bd2130', // Màu viền khi hover\n },\n },\n dialogTitle: {\n position: 'relative',\n paddingRight: '48px',\n margin: 0,\n padding: '16px 24px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n },\n backButton: {\n padding: '8px',\n marginRight: '8px',\n color: '#637381',\n '&:hover': {\n color: '#212B36',\n backgroundColor: 'rgba(99, 115, 129, 0.08)',\n },\n },\n closeButton: {\n position: 'absolute',\n right: 0,\n top: '50%',\n transform: 'translateY(-50%)',\n color: '#637381',\n padding: '8px',\n marginRight: '8px',\n '&:hover': {\n color: '#212B36',\n backgroundColor: 'rgba(99, 115, 129, 0.08)',\n borderRadius: '50%',\n },\n },\n\n submitBtn: {\n color: 'white', // Màu chữ\n backgroundColor: '#28a745', // Màu nền\n border: '2px solid #28a745', // Viền\n padding: '6px 26px', // Padding cho nút\n borderRadius: '4px', // Đường viền tròn cho nút\n cursor: 'pointer', // Con trỏ chuột khi hover.\n margin: '0 36px !important',\n '&:hover': {\n backgroundColor: '#218838', // Màu nền khi hover\n borderColor: '#1e7e34', // Màu viền khi hover\n },\n },\n\n numCusInp: {\n fontSize: '14px',\n display: 'flex',\n justifyContent: 'end',\n alignItems: 'center',\n },\n\n footerContainer: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n width: '100%',\n margin: '12px 0',\n minHeight: '48px',\n },\n\n container: {\n flex: 1,\n width: '100%',\n },\n\n paginationBottom: {\n display: 'flex !important',\n justifyContent: 'end !important',\n alignItems: 'center !important',\n },\n\n buttonLoadMore: {\n alignItems: 'center',\n appearance: 'none',\n backgroundColor: '#fff',\n border: '1px solid #dbdbdb',\n borderRadius: '.375em',\n boxShadow: 'none',\n boxSizing: 'border-box',\n color: '#363636',\n cursor: 'pointer',\n display: 'inline-flex',\n fontFamily: `BlinkMacSystemFont, -apple-system, \"Segoe UI\", Roboto, Oxygen, Ubuntu, Cantarell, \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\", Helvetica, Arial, sans-serif`,\n fontSize: '0.8rem',\n height: '1.8em',\n justifyContent: 'center',\n lineHeight: '1.5',\n padding: 'calc(.5em - 1px) 1em',\n position: 'relative',\n textAlign: 'center',\n userSelect: 'none',\n WebkitUserSelect: 'none',\n touchAction: 'manipulation',\n verticalAlign: 'top',\n whiteSpace: 'nowrap',\n width: '100%',\n\n '&:hover': {\n borderColor: '#b5b5b5',\n },\n '&:active': {\n borderColor: '#4a4a4a',\n outline: '0',\n },\n '&:focus': {\n borderColor: '#485fc7',\n outline: '0',\n },\n '&:focus:not(:active)': {\n boxShadow: 'rgba(72, 95, 199, 0.25) 0 0 0 0.125em',\n },\n },\n\n rowItem: {\n cursor: 'pointer',\n },\n\n tagsContainer: {\n display: 'flex',\n flexWrap: 'wrap',\n gap: '4px',\n padding: '4px 0 !important',\n },\n}))\nconst countRowPerPages = 10\n\nconst CustomersInFBTagModal = ({ isOpen, handleClose, tagId }) => {\n const { t } = useTranslation()\n const classes = useStyles()\n const pageSelected = useSelector(selectFanpageSelected)\n const [page, setPage] = useState(0)\n const [customerData, setCustomerData] = useState(null)\n const [currentCustomers, setCurrentCustomers] = useState([])\n const [searchVal, setSearchVal] = useState('')\n const [isLoading, setIsLoading] = useState(false)\n const [checkedList, setCheckedList] = useState({})\n const [openConfirm, setOpenConfirm] = useState(false)\n\n const dispatch = useDispatch()\n\n const getListCustomers = async (page, searchValue = '') => {\n let searchQuery = `pageId==${pageSelected?.id};fbTags=in=${tagId}`\n\n if (searchValue.trim()) {\n searchQuery += `;uid|name==${searchValue}`\n }\n\n return customerApi\n .getListCustomersInTag({\n search: searchQuery,\n page: page,\n size: countRowPerPages,\n })\n .then((res) => {\n setCustomerData(res)\n })\n }\n\n // useDebounce(\n // () => {\n // ;(async () => {\n // setIsLoading(true)\n // try {\n // setPage(0)\n // if (!searchVal.trim()) {\n // await getListCustomers(0)\n // return\n // }\n // await getListCustomers(0, searchVal)\n // } catch (error) {\n // console.log('error', error)\n // dispatch(showError('Có lỗi xảy ra khi tìm kiếm'))\n // } finally {\n // setIsLoading(false)\n // }\n // })()\n // },\n // 500,\n // [searchVal]\n // )\n\n const handleSearch = async () => {\n setIsLoading(true)\n try {\n setPage(0)\n if (!searchVal.trim()) {\n await getListCustomers(0)\n return\n }\n await getListCustomers(0, searchVal)\n } catch (error) {\n console.log('error', error)\n dispatch(showError('Có lỗi xảy ra khi tìm kiếm'))\n } finally {\n setIsLoading(false)\n }\n }\n\n useEffect(() => {\n ;(async () => {\n try {\n setIsLoading(true)\n\n await getListCustomers(page)\n } catch (error) {\n dispatch(showError('Co loi xay ra!'))\n } finally {\n setIsLoading(false)\n }\n })()\n }, [tagId, page])\n\n const handleCheckAllTag = (isChecked) => {\n if (isChecked) {\n let checkListTmp = {}\n customerData?.content.forEach((customer) => {\n checkListTmp[customer.uid] = isChecked\n })\n setCheckedList(checkListTmp)\n } else {\n setCheckedList({})\n }\n }\n\n const handleCheckTag = (isChecked, uid) => {\n let checkListTmp = { ...checkedList }\n\n if (isChecked) {\n setCheckedList((prev) => ({\n ...prev,\n [uid]: isChecked,\n }))\n } else {\n delete checkListTmp[uid]\n setCheckedList(checkListTmp)\n }\n }\n\n const handleDelete = async () => {\n if (!pageSelected?.id) return\n setIsLoading(true)\n try {\n const payload = {\n search: `pageId==${pageSelected?.id}`,\n exclude: [],\n include: Object.keys(checkedList),\n fbTags: [tagId],\n }\n\n await customerApi.unlinkBombotTag(payload)\n await getListCustomers(0)\n setOpenConfirm(false)\n dispatch(\n showSuccess(\n `Đã xóa tag khỏi ${\n Object.keys(checkedList).length\n } khách hàng thành công`\n )\n )\n setCheckedList({})\n } catch (error) {\n console.log('error', error)\n dispatch(showError('Xóa tag thất bại. Vui lòng thử lại sau'))\n } finally {\n setIsLoading(false)\n }\n }\n\n const handleSubmitDelete = () => {\n if (Object.keys(checkedList).length === 0) {\n dispatch(showError('Vui lòng chọn ít nhất một khách hàng'))\n return\n }\n setOpenConfirm(true)\n }\n\n const handleDeleteSearch = () => {\n setSearchVal('')\n setPage(0)\n }\n\n const handleChangePage = (event, newPage) => {\n setPage(newPage)\n }\n\n return (\n \n \n \n \n {/* \n \n */}\n {t('tag_management.customers.list')}\n \n \n \n \n \n\n \n \n {\n setSearchVal(e.target.value)\n }}\n InputProps={{\n startAdornment: (\n \n \n \n ),\n endAdornment: searchVal && (\n \n \n \n \n \n ),\n style: {\n paddingRight: 8,\n },\n }}\n style={{\n width: '100%',\n marginRight: '10px', // Thêm margin để tạo khoảng cách với button\n }}\n />\n \n {t('common.btn.search')}\n \n }\n backgroundColor=\"#05AE34\"\n color=\"white\"\n handleClickButton={handleSearch}\n style={{\n minWidth: 'fit-content',\n padding: '6px 16px',\n }}\n />\n \n\n \n \n \n \n \n checkedList[cus.uid]\n )}\n onChange={(_, isChecked) => {\n handleCheckAllTag(isChecked)\n }}\n disabled={true}\n />\n }\n />\n \n \n {t('customer_management.list.ord_number')}\n \n\n \n {t('customer_management.list.uid')}\n \n \n {t('customer_management.list.facebook_name')}\n \n \n {t('customer_management.list.gender')}\n \n\n \n {t('customer_management.list.last_inbox_time')}\n \n\n \n {t('customer_management.list.last_customer_inbox_time')}\n \n\n \n {t('customer_management.list.phone')}\n \n \n \n \n {customerData?.content.map((row, index) => (\n \n \n {\n handleCheckTag(isChecked, row.uid)\n }}\n disabled={true}\n />\n }\n />\n \n\n \n
{index + 1}
\n \n\n \n {row.uid ? (\n
{row.uid}
\n ) : (\n \n {'_'}\n

\n )}\n \n\n \n {row.name ? (\n
{row.name}
\n ) : (\n \n {'_'}\n

\n )}\n \n\n \n {row.gender ? (\n
\n {_.upperCase(row.gender) ==\n _.upperCase(types.GENDER.MALE)\n ? t('update.gender.male')\n : _.upperCase(row.gender) ==\n _.upperCase(types.GENDER.FEMALE)\n ? t('update.gender.female')\n : t('update.gender.other')}\n
\n ) : (\n \n {'_'}\n

\n )}\n \n\n \n {row.lastInboxTime ? (\n
\n {moment(row.lastInboxTime).format('DD/MM/YYYY HH:mm')}\n
\n ) : (\n \n {'_'}\n

\n )}\n \n\n \n {row.lastCustomerInboxTime ? (\n
\n {moment(row.lastCustomerInboxTime).format(\n 'DD/MM/YYYY HH:mm'\n )}\n
\n ) : (\n \n {'_'}\n

\n )}\n \n\n \n {row.phone ? (\n
{row.phone}
\n ) : (\n \n {'_'}\n

\n )}\n \n \n ))}\n
\n
\n\n {customerData?.content?.length === 0 && (\n

{t('update.no_data')}

\n )}\n \n\n \n \n handleChangePage(event, newPage - 1)\n }\n color=\"secondary\"\n />\n \n \n \n \n \n

{t('common.btn.delete')}

\n
\n \n
\n
\n
\n
\n
\n
\n\n setOpenConfirm(false)}\n onConfirm={handleDelete}\n confirmText=\"Xóa\"\n cancelText=\"Hủy\"\n />\n
\n )\n}\n\nconst CellSticky = styled(TableCell)`\n position: sticky;\n background-color: #fff;\n right: -1px;\n z-index: 2;\n box-shadow: -15px 0px 17px -7px #f0eded;\n`\n\nexport default CustomersInFBTagModal\n","import {\n Checkbox,\n DialogActions,\n FormControlLabel,\n IconButton,\n InputAdornment,\n makeStyles,\n Paper,\n Table,\n TableBody,\n TableCell,\n TableContainer,\n TableHead,\n TableRow,\n TextField,\n Tooltip\n} from \"@material-ui/core\";\nimport { PeopleAltOutlined } from \"@material-ui/icons\";\nimport SearchIcon from \"@material-ui/icons/Search\";\nimport { Pagination } from \"@material-ui/lab\";\nimport cn from \"classnames\";\nimport ButtonComponent from \"components/Button\";\nimport Flex from \"components/Flex\";\nimport TagPreviewItem from \"components/TagPreviewItem\";\nimport _ from \"lodash\";\nimport { useEffect, useState } from \"react\";\nimport { X } from \"react-feather\";\nimport { useTranslation } from \"react-i18next\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport styled from \"styled-components\";\nimport { selectFanpageSelected } from \"views/Customer/CustomerSelectors\";\nimport fanpageApi from \"../../api/fanpageApi\";\nimport { showError, showSuccess } from \"../../stores/alert/slice.alert\";\nimport CustomersInFBTagModal from \"../CustomersInTagModal/CustomersInFBTagModal\";\n\nconst useStyles = makeStyles({\n widthCheckBox: {\n height: \"52px\"\n },\n widthSeq: {\n minWidth: \"80px\",\n padding: \"0 8px !important\"\n },\n widthId: {\n minWidth: \"146px\",\n padding: \"0 8px !important\"\n },\n widthName: {\n minWidth: \"220px\",\n padding: \"0 8px !important\"\n },\n widthCreatedAt: {\n minWidth: \"220px\",\n padding: \"0 8px !important\"\n },\n widthCreatedBy: {\n minWidth: \"220px\",\n padding: \"0 8px !important\"\n },\n widthQuantityCus: {\n minWidth: \"120px\",\n padding: \"0 8px !important\"\n },\n widthActions: {\n minWidth: \"140px\",\n width: \"6%\",\n padding: \"0 8px !important\"\n },\n p0: {\n padding: \"0\",\n margin: \"0\"\n },\n heightHeader: {\n height: \"52px\"\n },\n f600: {\n fontWeight: 600\n },\n checkBoxPadding: {\n padding: \"10px 20px\"\n },\n actions: {\n display: \"flex\",\n alignItems: \"center\",\n width: \"100%\",\n justifyContent: \"space-between\",\n marginTop: \"10px\"\n },\n closeBtn: {\n color: \"#ffffff\",\n backgroundColor: \"#dc3545\",\n border: \"2px solid #dc3545\",\n padding: \"6px 20px\",\n borderRadius: \"4px\",\n cursor: \"pointer\",\n \"&:hover\": {\n backgroundColor: \"#c82333\",\n borderColor: \"#bd2130\"\n }\n },\n submitBtn: {\n color: \"white\",\n backgroundColor: \"#28a745\",\n border: \"2px solid #28a745\",\n padding: \"6px 26px\",\n borderRadius: \"4px\",\n cursor: \"pointer\",\n margin: \"0 36px !important\",\n \"&:hover\": {\n backgroundColor: \"#218838\",\n borderColor: \"#1e7e34\"\n }\n },\n numCusInp: {\n fontSize: \"14px\",\n display: \"flex\",\n justifyContent: \"end\",\n alignItems: \"center\"\n },\n footerContainer: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n width: \"100%\",\n padding: \"0 26px\",\n margin: \"12px 0\",\n minHeight: \"48px\"\n },\n container: {\n flex: 1,\n width: \"100%\"\n },\n paginationBottom: {\n display: \"flex !important\",\n justifyContent: \"end !important\",\n alignItems: \"center !important\"\n },\n buttonLoadMore: {\n alignItems: \"center\",\n appearance: \"none\",\n backgroundColor: \"#fff\",\n border: \"1px solid #dbdbdb\",\n borderRadius: \".375em\",\n boxShadow: \"none\",\n boxSizing: \"border-box\",\n color: \"#363636\",\n cursor: \"pointer\",\n display: \"inline-flex\",\n fontFamily: `BlinkMacSystemFont, -apple-system, \"Segoe UI\", Roboto, Oxygen, Ubuntu, Cantarell, \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\", Helvetica, Arial, sans-serif`,\n fontSize: \"0.8rem\",\n height: \"1.8em\",\n justifyContent: \"center\",\n lineHeight: \"1.5\",\n padding: \"calc(.5em - 1px) 1em\",\n position: \"relative\",\n textAlign: \"center\",\n userSelect: \"none\",\n WebkitUserSelect: \"none\",\n touchAction: \"manipulation\",\n verticalAlign: \"top\",\n whiteSpace: \"nowrap\",\n \"&:hover\": {\n borderColor: \"#b5b5b5\"\n },\n \"&:active\": {\n borderColor: \"#4a4a4a\",\n outline: \"0\"\n },\n \"&:focus\": {\n borderColor: \"#485fc7\",\n outline: \"0\"\n },\n \"&:focus:not(:active)\": {\n boxShadow: \"rgba(72, 95, 199, 0.25) 0 0 0 0.125em\"\n }\n },\n rowItem: {\n cursor: \"pointer\"\n },\n\n noData: {\n color: \"rgba(0,0,0,.5)\",\n fontWeight: \"bold\",\n textAlign: \"center\",\n padding: \"24px\"\n },\n closeButton: {\n position: \"absolute\",\n right: 0,\n top: \"50%\",\n transform: \"translateY(-50%)\",\n color: \"#637381\",\n padding: \"8px\",\n marginRight: \"8px\",\n \"&:hover\": {\n color: \"#212B36\",\n backgroundColor: \"rgba(99, 115, 129, 0.08)\",\n borderRadius: \"50%\"\n }\n },\n dialogTitle: {\n position: \"relative\",\n paddingRight: \"48px\",\n margin: 0,\n padding: \"16px 24px\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\"\n }\n});\n\nconst countRowPerPages = 10;\n\nexport const tagType = {\n BOMBOT_TAGS: \"BOMBOT_TAGS\",\n FACEBOOK_TAGS: \"FACEBOOK_TAGS\"\n};\n\nconst FbTagsManagement = ({ getData, getFanpage, tabVal }) => {\n const { t } = useTranslation();\n const classes = useStyles();\n const pageSelected = useSelector(selectFanpageSelected);\n const [page, setPage] = useState(0);\n const [fbTagData, setFbTagData] = useState([]);\n const [checkedList, setCheckedList] = useState({});\n const [searchVal, setSearchVal] = useState(\"\");\n const [isLoading, setIsLoading] = useState(false);\n const [selectedTag, setSelectedTag] = useState(null);\n const [openConfirmDelete, setOpenConfirmDelete] = useState(false);\n const [isOpenRenameModal, setIsOpenRenameModal] = useState(false);\n const [renameSelected, setRenameSelected] = useState(null);\n\n const dispatch = useDispatch();\n\n const getFbTags = async (page) => {\n if (!pageSelected.id) return;\n\n let search = null;\n\n if (searchVal.trim()) {\n search = `id|name==${searchVal}`;\n }\n\n let params = {\n id: pageSelected.id,\n page: page,\n size: countRowPerPages\n };\n\n if (!_.isNull(search)) {\n params = {\n id: pageSelected.id,\n page: page,\n size: countRowPerPages,\n search\n };\n }\n\n return fanpageApi\n .getFbTagList(pageSelected?.id, params)\n .then((res) => setFbTagData(res));\n };\n\n useEffect(() => {\n (async () => {\n try {\n setIsLoading(true);\n\n if (tabVal === tagType.FACEBOOK_TAGS) {\n await getFbTags(page);\n }\n } catch (error) {\n dispatch(showError(\"Co loi xay ra!\"));\n } finally {\n setIsLoading(false);\n }\n })();\n }, [pageSelected, page, tabVal]);\n\n // useDebounce(\n // () => {\n // ;(async () => {\n // setIsLoading(true)\n // try {\n // setPage(0)\n // if (!searchVal.trim()) {\n // await getBombotTags(0)\n // return\n // }\n // const res = await fanpageApi.searchTags(pageSelected?.id, {\n // id: pageSelected.id,\n // page: 0,\n // size: countRowPerPages,\n // search: `name==${searchVal}`,\n // })\n // setTagData(res)\n // } catch (error) {\n // dispatch(showError('Co loi xay ra!'))\n // } finally {\n // setIsLoading(false)\n // }\n // })()\n // },\n // 500,\n // [searchVal]\n // )\n\n const handleSearch = async () => {\n setIsLoading(true);\n try {\n setPage(0);\n if (tabVal === tagType.FACEBOOK_TAGS) {\n await getFbTags(0);\n }\n\n // const res = await fanpageApi.searchBombotTags(pageSelected?.id, {\n // id: pageSelected.id,\n // page: 0,\n // size: countRowPerPages,\n // search: `name==${searchVal}`,\n // })\n // setBombotTagData(res)\n } catch (error) {\n dispatch(showError(\"Co loi xay ra!\"));\n } finally {\n setIsLoading(false);\n }\n };\n\n const handleChangePage = (event, newPage) => {\n setPage(newPage);\n };\n\n const handleCheckAllTag = (isChecked) => {\n const currentPageTags = fbTagData?.content;\n let checkListTmp = { ...checkedList };\n currentPageTags.forEach((tag) => {\n checkListTmp[tag.id] = isChecked;\n });\n setCheckedList(checkListTmp);\n };\n\n const handleCheckTag = (isChecked, tagId) => {\n setCheckedList((prev) => ({\n ...prev,\n [tagId]: isChecked\n }));\n };\n\n const handleDeleteSearch = () => {\n setSearchVal(\"\");\n setPage(0);\n };\n\n const handleSubmitDeleteTags = () => {\n if (Object.keys(checkedList).length === 0) {\n dispatch(showError(\"Vui lòng chọn ít nhất một tag\"));\n return;\n }\n setOpenConfirmDelete(true);\n };\n\n const handleDeleteTags = async () => {\n setIsLoading(true);\n try {\n await fanpageApi.deleteBomBotTagList(pageSelected?.id, {\n tagId: Object.keys(checkedList)\n });\n\n getFanpage();\n getData();\n\n await getFbTags();\n\n setOpenConfirmDelete(false);\n dispatch(\n showSuccess(`Đã xóa ${Object.keys(checkedList).length} tag thành công`)\n );\n setCheckedList({});\n } catch (error) {\n dispatch(showError(\"Xóa tag thất bại. Vui lòng thử lại sau\"));\n } finally {\n setIsLoading(false);\n }\n };\n\n const handleRenameTag = async (renameTag, newName) => {\n try {\n const payload = {\n name: newName\n };\n\n await fanpageApi.renameTag(pageSelected.id, renameTag.id, payload);\n\n getFanpage();\n getData();\n\n await getFbTags();\n } catch (error) {\n console.log(error);\n } finally {\n setRenameSelected(null);\n }\n };\n\n return (\n <>\n \n {\n setSearchVal(e.target.value);\n }}\n InputProps={{\n startAdornment: (\n \n \n \n ),\n endAdornment: searchVal && (\n \n \n \n \n \n ),\n style: {\n paddingRight: 8\n }\n }}\n style={{\n width: \"100%\",\n marginRight: \"10px\"\n }}\n />\n \n {t(\"common.btn.search\")}\n \n }\n backgroundColor=\"#05AE34\"\n color=\"white\"\n handleClickButton={() => handleSearch()}\n style={{\n minWidth: \"fit-content\"\n }}\n />\n \n\n \n \n \n \n \n checkedList[tag.id]\n )}\n onChange={(_, isChecked) => {\n handleCheckAllTag(isChecked);\n }}\n />\n }\n />\n \n \n {t(\"tag_management.list.tag_ord_nos\")}\n \n \n {t(\"tag_management.list.tag_id\")}\n \n \n {t(\"tag_management.list.tag_name\")}\n \n \n {t(\"tag_management.list.num_customers\")}\n \n \n {t(\"tag_management.action\")}\n \n \n \n\n \n {fbTagData?.content?.length > 0 &&\n fbTagData?.content?.map((tag, index) => (\n \n \n {\n handleCheckTag(isChecked, tag.id);\n }}\n />\n }\n />\n \n \n {fbTagData?.number * countRowPerPages + index + 1}\n \n \n {tag?.id}\n \n \n \n \n
\n \n
\n
\n \n \n \n {tag?.totalCus}\n \n {/* \n {tag.createdAt\n ? moment(tag.createdAt).format('DD/MM/YYYY HH:mm')\n : 'N/A'}\n */}\n {/* \n {tag.createdByUserId || 'N/A'}\n */}\n {/* \n {tag.totalCus || 'N/A'}\n */}\n \n \n \n {\n setSelectedTag(tag.id);\n }}\n >\n \n \n \n {/* \n {\n setRenameSelected(tag)\n }}\n >\n \n \n */}\n \n \n \n ))}\n
\n
\n {fbTagData?.content?.length === 0 && (\n

{t(\"update.no_data\")}

\n )}\n \n\n {!_.isNull(selectedTag) && (\n setSelectedTag(null)}\n tagId={selectedTag}\n />\n )}\n\n {fbTagData?.content?.length > 0 && (\n \n handleChangePage(event, newPage - 1)}\n color=\"secondary\"\n />\n \n {/* \n \n

{t('common.btn.delete')}

\n
\n */}\n
\n
\n )}\n \n );\n};\n\nconst CellSticky = styled(TableCell)`\n position: sticky;\n background-color: #fff;\n right: -1px;\n z-index: 2;\n box-shadow: -15px 0px 17px -7px #f0eded;\n top: 0; \n`;\n\nexport default FbTagsManagement;\n","import {\n Dialog,\n DialogContent,\n DialogTitle,\n IconButton,\n makeStyles,\n Tab,\n TableCell,\n Tabs,\n} from '@material-ui/core'\nimport { useState } from 'react'\nimport { X } from 'react-feather'\nimport LoadingWrapper from '../LoadingWrapper'\nimport BombotTagsManagement from './BombotTagsManagement'\nimport FbTagsManagement from './FbTagsManagement'\nimport { useTranslation } from 'react-i18next'\n\nconst useStyles = makeStyles({\n widthCheckBox: {\n minWidth: '60px',\n width: '4%',\n },\n widthSeq: {\n minWidth: '80px',\n padding: '0 8px !important',\n },\n widthId: {\n minWidth: '120px',\n padding: '0 8px !important',\n },\n widthName: {\n minWidth: '220px',\n padding: '0 8px !important',\n },\n widthCreatedAt: {\n minWidth: '220px',\n padding: '0 8px !important',\n },\n widthCreatedBy: {\n minWidth: '220px',\n padding: '0 8px !important',\n },\n widthQuantityCus: {\n minWidth: '120px',\n padding: '0 8px !important',\n },\n widthActions: {\n minWidth: '140px',\n width: '6%',\n padding: '0 8px !important',\n },\n p0: {\n padding: '0',\n margin: '0',\n },\n heightHeader: {\n height: '52px',\n },\n f600: {\n fontWeight: 600,\n },\n checkBoxPadding: {\n padding: '10px 20px',\n },\n actions: {\n display: 'flex',\n alignItems: 'center',\n width: '100%',\n justifyContent: 'space-between',\n marginTop: '10px',\n },\n closeBtn: {\n color: '#ffffff',\n backgroundColor: '#dc3545',\n border: '2px solid #dc3545',\n padding: '6px 20px',\n borderRadius: '4px',\n cursor: 'pointer',\n '&:hover': {\n backgroundColor: '#c82333',\n borderColor: '#bd2130',\n },\n },\n submitBtn: {\n color: 'white',\n backgroundColor: '#28a745',\n border: '2px solid #28a745',\n padding: '6px 26px',\n borderRadius: '4px',\n cursor: 'pointer',\n margin: '0 36px !important',\n '&:hover': {\n backgroundColor: '#218838',\n borderColor: '#1e7e34',\n },\n },\n numCusInp: {\n fontSize: '14px',\n display: 'flex',\n justifyContent: 'end',\n alignItems: 'center',\n },\n footerContainer: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n width: '100%',\n padding: '0 26px',\n margin: '12px 0',\n minHeight: '48px',\n },\n container: {\n flex: 1,\n width: '100%',\n },\n paginationBottom: {\n display: 'flex !important',\n justifyContent: 'end !important',\n alignItems: 'center !important',\n },\n buttonLoadMore: {\n alignItems: 'center',\n appearance: 'none',\n backgroundColor: '#fff',\n border: '1px solid #dbdbdb',\n borderRadius: '.375em',\n boxShadow: 'none',\n boxSizing: 'border-box',\n color: '#363636',\n cursor: 'pointer',\n display: 'inline-flex',\n fontFamily: `BlinkMacSystemFont, -apple-system, \"Segoe UI\", Roboto, Oxygen, Ubuntu, Cantarell, \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\", Helvetica, Arial, sans-serif`,\n fontSize: '0.8rem',\n height: '1.8em',\n justifyContent: 'center',\n lineHeight: '1.5',\n padding: 'calc(.5em - 1px) 1em',\n position: 'relative',\n textAlign: 'center',\n userSelect: 'none',\n WebkitUserSelect: 'none',\n touchAction: 'manipulation',\n verticalAlign: 'top',\n whiteSpace: 'nowrap',\n '&:hover': {\n borderColor: '#b5b5b5',\n },\n '&:active': {\n borderColor: '#4a4a4a',\n outline: '0',\n },\n '&:focus': {\n borderColor: '#485fc7',\n outline: '0',\n },\n '&:focus:not(:active)': {\n boxShadow: 'rgba(72, 95, 199, 0.25) 0 0 0 0.125em',\n },\n },\n rowItem: {\n cursor: 'pointer',\n },\n\n noData: {\n color: 'rgba(0,0,0,.5)',\n fontWeight: 'bold',\n textAlign: 'center',\n padding: '24px',\n },\n closeButton: {\n position: 'absolute',\n right: 0,\n top: '50%',\n transform: 'translateY(-50%)',\n color: '#637381',\n padding: '8px',\n marginRight: '8px',\n '&:hover': {\n color: '#212B36',\n backgroundColor: 'rgba(99, 115, 129, 0.08)',\n borderRadius: '50%',\n },\n },\n dialogTitle: {\n position: 'relative',\n paddingRight: '48px',\n margin: 0,\n padding: '16px 24px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n },\n})\n\nexport const tagType = {\n BOMBOT_TAGS: 'BOMBOT_TAGS',\n FACEBOOK_TAGS: 'FACEBOOK_TAGS',\n}\n\nconst TagsManagementModal = ({\n isOpen,\n handleClose,\n getData,\n getFanpage,\n fanpageSelected\n}) => {\n const classes = useStyles();\n const [isLoading, setIsLoading] = useState(false);\n const [tabVal, setTabVal] = useState(tagType.BOMBOT_TAGS);\n\n const { t } = useTranslation();\n\n const handleChangeTab = (e, newVal) => {\n setTabVal(newVal);\n };\n\n return (\n \n \n \n {t(\"tag_management.label\")}\n \n \n \n \n\n \n \n \n \n\n {tabVal === tagType.BOMBOT_TAGS && (\n \n \n \n )}\n\n {tabVal === tagType.FACEBOOK_TAGS && (\n \n \n \n )}\n \n \n );\n};\n\nexport default TagsManagementModal\n","import React, { useEffect, useRef, useState } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport PropTypes from \"prop-types\";\nimport _ from \"lodash\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport Table from \"@material-ui/core/Table\";\nimport TableBody from \"@material-ui/core/TableBody\";\nimport TableCell from \"@material-ui/core/TableCell\";\nimport TableContainer from \"@material-ui/core/TableContainer\";\nimport TableHead from \"@material-ui/core/TableHead\";\nimport cn from \"classnames\";\nimport TableRow from \"@material-ui/core/TableRow\";\nimport TableSortLabel from \"@material-ui/core/TableSortLabel\";\nimport Paper from \"@material-ui/core/Paper\";\nimport SettingsIcon from \"@material-ui/icons/Settings\";\nimport SearchIcon from \"@material-ui/icons/Search\";\nimport InputAdornment from \"@material-ui/core/InputAdornment\";\nimport Input from \"@material-ui/core/Input\";\nimport Checkbox from \"@material-ui/core/Checkbox\";\nimport ErrorOutlineIcon from \"@material-ui/icons/ErrorOutline\";\nimport EditIcon from \"@material-ui/icons/Edit\";\nimport moment from \"moment\";\nimport types from \"../constants/types\";\nimport ButtonComponent from \"./Button\";\nimport FilterListIcon from \"@material-ui/icons/FilterList\";\nimport Pagination from \"@material-ui/lab/Pagination\";\nimport FormDialog from \"./FormDialog\";\nimport TextField from \"@material-ui/core/TextField\";\nimport Flex from \"./Flex\";\nimport Menu from \"@material-ui/core/Menu\";\nimport MenuItem from \"@material-ui/core/MenuItem\";\nimport ModalTagsBombot from \"../components/Modals/ModalTagsBombot\";\nimport ExitToAppIcon from \"@material-ui/icons/ExitToApp\";\nimport GetAppIcon from \"@material-ui/icons/GetApp\";\nimport AddCircleIcon from \"@material-ui/icons/AddCircle\";\nimport MuiAlert from \"@material-ui/lab/Alert\";\nimport {\n Button,\n FormControlLabel,\n Snackbar,\n TablePagination\n} from \"@material-ui/core\";\nimport FilterCustomerModal from \"./FilterCustomer\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport {\n selectFilterCus,\n selectTagsPageSelected\n} from \"views/Customer/CustomerSelectors\";\nimport useEffectIgnoreFirst from \"hook/useEffectIgnoreFirst\";\nimport { useTranslation } from \"react-i18next\";\nimport { createSearchQuery } from \"../utils/helper\";\nimport { setSearchUidName } from \"../views/Customer/CustomerReducer\";\nimport TagsModal, { colorDir1, getRandomTag } from \"./TagPreviewModal\";\nimport TagPreviewItem from \"./TagPreviewItem\";\nimport { Tag } from \"react-feather\";\nimport ManageTagModal from \"./ManageTag\";\nimport customerApi from \"../api/customerApi\";\nimport { getCustomer } from \"../views/Customer/CustomerActions\";\nimport TagsManagementModal from \"./TagsManagementModal/TagsManagementModal\";\nimport { FilterIcon, Settings2Icon, SlidersHorizontalIcon } from \"lucide-react\";\n\nfunction Alert(props) {\n return ;\n}\n\nconst headCells = [\n // {\n // id: \"actions\",\n // numeric: false,\n // disablePadding: false,\n // label: \"Thao tác\",\n // },\n {\n id: \"ord_num\",\n numeric: false,\n disablePadding: false,\n label: \"customer_management.list.ord_number\"\n },\n {\n id: \"id\",\n numeric: false,\n disablePadding: false,\n label: \"customer_management.list.uid\"\n },\n {\n id: \"name\",\n numeric: false,\n disablePadding: false,\n label: \"customer_management.list.facebook_name\",\n width: 100\n },\n {\n id: \"gt\",\n numeric: false,\n disablePadding: false,\n label: \"customer_management.list.gender\"\n },\n {\n id: \"timeInbox\",\n numeric: false,\n disablePadding: false,\n label: \"customer_management.list.last_inbox_time\"\n },\n {\n id: \"timeCustomerInbox\",\n numeric: false,\n disablePadding: false,\n label: \"customer_management.list.last_customer_inbox_time\"\n },\n {\n id: \"phone\",\n numeric: false,\n disablePadding: false,\n label: \"customer_management.list.phone\"\n },\n {\n id: \"tagF\",\n numeric: false,\n disablePadding: false,\n label: \"customer_management.list.facebook_tag\"\n },\n {\n id: \"tagB\",\n numeric: false,\n disablePadding: false,\n label: \"customer_management.list.bombot_tag\"\n },\n // {\n // id: \"tagP\",\n // numeric: false,\n // disablePadding: false,\n // label: \"customer_management.list.pancake_tag\"\n // },\n {\n id: \"TimeLast\",\n numeric: false,\n disablePadding: false,\n label: \"customer_management.list.last_update_time\"\n },\n {\n id: \"actions\",\n numeric: false,\n disablePadding: false,\n label: \"customer_management.list.action\"\n }\n];\n\nfunction EnhancedTableHead(props) {\n const {\n classes,\n onSelectAllClick,\n numSelected,\n rowCount,\n checkBoxSelectAll,\n isEmptyCheckItem\n } = props;\n const { t } = useTranslation();\n return (\n \n \n \n 0 && numSelected < rowCount}\n checked={isEmptyCheckItem.length > 0 ? false : checkBoxSelectAll}\n onChange={onSelectAllClick}\n inputProps={{ \"aria-label\": \"select all desserts\" }}\n />\n \n {headCells.map((headCell) => (\n \n \n {t(headCell.label)}\n \n \n ))}\n \n \n );\n}\n\nEnhancedTableHead.propTypes = {\n classes: PropTypes.object.isRequired,\n numSelected: PropTypes.number.isRequired,\n onSelectAllClick: PropTypes.func.isRequired,\n rowCount: PropTypes.number.isRequired\n};\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n width: \"100%\",\n padding: \"15px 0px 60px 0px\",\n \"& .MuiTableCell-paddingCheckbox\": {\n width: 130\n }\n },\n paper: {\n width: \"100%\",\n marginBottom: \"80px\"\n },\n table: {\n minWidth: \"100%\"\n },\n visuallyHidden: {\n border: 0,\n clip: \"rect(0 0 0 0)\",\n height: 1,\n margin: -1,\n overflow: \"hidden\",\n padding: 0,\n position: \"absolute\",\n top: 20,\n width: 1\n },\n \".pagination\": {\n \"& .MuiTablePagination-input\": {\n width: 70\n }\n },\n\n wrapperSearch: {\n position: \"relative\"\n },\n\n buttonIEA: {\n display: \"flex\",\n width: \"100%\",\n // marginTop: 10,\n textAlign: \"left\",\n marginRight: \"15px\",\n padding: \"20px 15px 15px 0px\",\n position: \"fixed\",\n bottom: 70,\n // background: '#F6F9FC',\n background: \"#ffffff\",\n \"& button\": {\n marginRight: 15\n }\n },\n noData: {\n color: \"rgba(0,0,0,.5)\",\n fontWeight: \"bold\",\n textAlign: \"center\",\n paddingBottom: 15\n },\n iconCheck: {\n \"& .MuiSvgIcon-root\": {\n width: \"40\",\n height: \"40\"\n }\n },\n icon: {\n marginLeft: 5,\n cursor: \"pointer\",\n \"& .MuiSvgIcon-root\": {\n width: \"40\",\n height: \"40\"\n }\n },\n classTags: {\n \"&:last-child\": {\n \"& span\": {\n display: \"none\"\n }\n }\n },\n wrapBox: {\n padding: \"15px\",\n marginBottom: 30\n },\n inputAdd: {\n width: \"100%\",\n marginBottom: 15\n },\n wrapButton: {\n textAlign: \"center\"\n },\n buttonLoadMore: {\n border: \"0px\",\n color: \"var(--primary-color) !important\",\n backgroundColor: \"unset\"\n },\n\n witdhSeq: {\n minWidth: \"120px\",\n width: \"4%\"\n },\n\n witdhCheckBox: {\n minWidth: \"60px\",\n width: \"4%\"\n },\n\n witdhUid: {\n minWidth: \"60px\",\n width: \"15%\",\n padding: \"0 8px !important\"\n },\n\n widthName: {\n minWidth: \"160px\",\n width: \"15%\",\n padding: \"0 8px !important\"\n },\n\n widthGender: {\n minWidth: \"120px\",\n width: \"6%\",\n padding: \"0 8px !important\"\n },\n\n widthPhone: {\n minWidth: \"120px\",\n width: \"15%\",\n padding: \"0 8px !important\"\n },\n\n widthDate: {\n minWidth: \"180px\",\n width: \"15%\",\n padding: \"0 8px !important\"\n },\n\n widthLinkFB: {\n minWidth: \"120px\",\n width: \"15%\",\n padding: \"0 8px !important\"\n },\n\n witdhAction: {\n minWidth: \"120px\",\n width: \"4%\"\n },\n\n widthTag: {\n minWidth: \"140px\",\n width: \"15%\",\n padding: \"12px 8px !important\"\n },\n\n witdhUidErr: {\n minWidth: \"140px\",\n width: \"20%\",\n padding: \"0 8px !important\"\n },\n\n p0: {\n padding: \"0\",\n margin: \"0\"\n },\n\n heightHeader: {\n height: \"52px\"\n },\n\n f600: {\n fontWeight: 600\n },\n\n checkBoxPadding: {\n padding: \"10px 20px\"\n },\n\n actions: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n width: \"100%\",\n marginBottom: \"10px\"\n },\n\n closeBtn: {\n color: \"#ffffff\", // Màu chữ trắng\n backgroundColor: \"#dc3545\", // Màu nền đỏ để nổi bật\n border: \"2px solid #dc3545\", // Viền có màu giống nền\n padding: \"6px 20px\", // Padding cho nút\n borderRadius: \"4px\", // Đường viền tròn cho nút\n cursor: \"pointer\", // Con trỏ chuột khi hover\n margin: \"0 36px !important\",\n \"&:hover\": {\n backgroundColor: \"#c82333\", // Màu nền khi hover (đỏ đậm hơn)\n borderColor: \"#bd2130\" // Màu viền khi hover\n }\n },\n\n submitBtn: {\n color: \"white\", // Màu chữ\n backgroundColor: \"#28a745\", // Màu nền\n border: \"2px solid #28a745\", // Viền\n padding: \"6px 26px\", // Padding cho nút\n borderRadius: \"4px\", // Đường viền tròn cho nút\n cursor: \"pointer\", // Con trỏ chuột khi hover.\n margin: \"0 36px !important\",\n \"&:hover\": {\n backgroundColor: \"#218838\", // Màu nền khi hover\n borderColor: \"#1e7e34\" // Màu viền khi hover\n }\n },\n\n numCusInp: {\n fontSize: \"14px\",\n display: \"flex\",\n justifyContent: \"end\",\n alignItems: \"center\"\n },\n\n footerContainer: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n width: \"100%\",\n margin: \"12px 0\",\n minHeight: \"48px\"\n },\n\n container: {\n flex: 1,\n width: \"100%\"\n },\n\n paginationBottom: {\n display: \"flex !important\",\n justifyContent: \"end !important\",\n alignItems: \"center !important\"\n },\n\n buttonLoadMore: {\n alignItems: \"center\",\n appearance: \"none\",\n backgroundColor: \"#fff\",\n border: \"1px solid #dbdbdb\",\n borderRadius: \".375em\",\n boxShadow: \"none\",\n boxSizing: \"border-box\",\n color: \"#363636\",\n cursor: \"pointer\",\n display: \"inline-flex\",\n fontFamily: `BlinkMacSystemFont, -apple-system, \"Segoe UI\", Roboto, Oxygen, Ubuntu, Cantarell, \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\", Helvetica, Arial, sans-serif`,\n fontSize: \"0.8rem\",\n height: \"1.8em\",\n justifyContent: \"center\",\n lineHeight: \"1.5\",\n padding: \"calc(.5em - 1px) 1em\",\n position: \"relative\",\n textAlign: \"center\",\n userSelect: \"none\",\n WebkitUserSelect: \"none\",\n touchAction: \"manipulation\",\n verticalAlign: \"top\",\n whiteSpace: \"nowrap\",\n width: \"100%\",\n\n \"&:hover\": {\n borderColor: \"#b5b5b5\"\n },\n \"&:active\": {\n borderColor: \"#4a4a4a\",\n outline: \"0\"\n },\n \"&:focus\": {\n borderColor: \"#485fc7\",\n outline: \"0\"\n },\n \"&:focus:not(:active)\": {\n boxShadow: \"rgba(72, 95, 199, 0.25) 0 0 0 0.125em\"\n }\n },\n\n rowItem: {\n cursor: \"pointer\"\n },\n\n tagsContainer: {\n display: \"flex\",\n flexWrap: \"wrap\",\n gap: \"4px\",\n padding: \"4px 0 !important\"\n }\n}));\nlet timeout = 0;\nexport default function EnhancedTable(props) {\n const {\n data,\n handleGetData,\n getData,\n isPagination,\n isSearch,\n fanpageSelected,\n detail,\n edit,\n handleExport,\n handleImport,\n handleFilter,\n onCreate,\n customerAll,\n onCustomerCheck,\n onCustomerCheckReset,\n customerCheck,\n createCustomerSucss,\n paramsFilter,\n paramsPagination,\n getFanpage\n } = props;\n // const rows = (data && data.content) || [];\n const classes = useStyles();\n const [selected, setSelected] = useState([]);\n const [page, setPage] = useState(types.PAGINATION.PAGE);\n const [dense, setDense] = useState(true);\n const [rowsPerPage, setRowsPerPage] = useState(types.PAGINATION.SIZE);\n const [search, setSearch] = useState(\"\");\n const [checkBoxSelectAll, setCheckBoxSelectAll] = useState(true);\n const [rows, setRows] = useState([]);\n const [isCreateCampaign, setIsCreateCampaign] = useState(false);\n const [titleCampaign, setTitleCampaign] = useState(\"\");\n const [isCheckedAllPage, setIsCheckedAllPage] = useState(true);\n const [selectedTags, setSeletedTags] = useState(null);\n\n const [isUseCheckedAllPage, setIsUseCheckedAllPage] = useState(true);\n\n const [customerAllState, setCustomerAllState] = useState([]);\n const [anchorEl, setAnchorEl] = React.useState(null);\n console.log(\"🚀 ~ EnhancedTable ~ anchorEl:\", anchorEl);\n const [typeModalTag, setTypeModalTag] = useState(null);\n const [error, setError] = useState(\"\");\n const [typeMessage, setTypeMessage] = useState(null);\n const [customerAfterFilter, setcustomerAfterFilter] = useState([]);\n const [showModalAllTags, setshowModalAllTags] = useState(false);\n const [selectedModalTags, setSelectedModalTags] = useState([]);\n const [isOpenModalManageTag, setIsOpenModalManageTag] = useState(false);\n const [isOpenModalFilter, setIsOpenModalFilter] = useState(false);\n\n const tagsObj = useSelector(selectTagsPageSelected);\n console.log(\"🚀 ~ EnhancedTable ~ tagsObj:\", tagsObj);\n\n const dispatch = useDispatch();\n\n const history = useHistory();\n\n useEffect(() => {\n const searchParam = new URLSearchParams(window.location.search);\n const page = searchParam.get(\"page\");\n if (page) {\n setPage(_.toNumber(page) + 1);\n }\n }, [paramsFilter]);\n useEffect(() => {\n if (createCustomerSucss) {\n setIsCreateCampaign(false);\n }\n }, [createCustomerSucss]);\n useEffect(() => {\n setCustomerAllState(customerAll);\n }, [customerAll]);\n\n let totalNumber = data && data.totalElements - customerCheck.length;\n\n useEffect(() => {\n setRows((data && data.content) || []);\n }, [data]);\n\n // useEffect(() => {\n // if (timeout) clearTimeout(timeout)\n // timeout = setTimeout(() => {\n // dispatch(setSearchUidName(search))\n // handleSubmitSearch()\n // }, 300)\n // }, [search, fanpageSelected])\n\n const handleChangePage = (event, newPage) => {\n setPage(newPage);\n getData({\n page: newPage,\n size: rowsPerPage,\n search: `pageId==${fanpageSelected.id};${\n search && `uid|name==` + search\n }`,\n sort: \"lastInboxTime,desc\"\n });\n };\n\n const handleChangeRowsPerPage = (event) => {\n setRowsPerPage(parseInt(event.target.value, types.PAGINATION.SIZE));\n setPage(types.PAGINATION.PAGE);\n getData({\n page: types.PAGINATION.PAGE,\n size: parseInt(event.target.value, types.PAGINATION.SIZE),\n search: `pageId==${fanpageSelected.id};${\n search && `uid|name==` + search\n }`,\n sort: \"lastInboxTime,desc\"\n });\n const searchParam = new URLSearchParams(window.location.search);\n searchParam.set(\n \"size\",\n parseInt(event.target.value, types.PAGINATION.SIZE)\n );\n const newSearchParam = searchParam.toString();\n history.push({\n pathname: window.location.pathname,\n search: newSearchParam\n });\n };\n\n const filterCus = useSelector(selectFilterCus);\n const handleChange = (event, value) => {\n const searchParam = new URLSearchParams(window.location.search);\n searchParam.set(\"page\", value - 1);\n const search = searchParam.get(\"search\");\n const newSearchParam = searchParam.toString();\n history.push({\n pathname: window.location.pathname,\n search: newSearchParam\n });\n paramsPagination({\n page: value,\n size: rowsPerPage,\n pageId: fanpageSelected.id\n });\n //setCheckBoxSelectAll(true);\n setPage(value);\n if (filterCus?.search_string) {\n getData({\n page: value - 1,\n size: 10,\n search: filterCus?.search_string,\n sort: \"lastInboxTime,desc\"\n });\n } else {\n getData({\n page: value - 1,\n size: rowsPerPage,\n search: `${\n search\n ? search\n : `pageId==${fanpageSelected.id};${search && `uid|name==` + search}`\n }`,\n sort: \"lastInboxTime,desc\"\n });\n }\n };\n const handleChangeDense = (event) => {\n setDense(event.target.checked);\n };\n\n const handleSearch = (key, value) => {\n switch (key) {\n case \"search\":\n // setSearch(value)\n // if (value) {\n const customerFilter = customerAll.filter(\n (cus) =>\n (cus.uid && cus.uid.includes(value)) ||\n (cus.nameText && cus.nameText.includes(value))\n );\n setcustomerAfterFilter(customerFilter);\n dispatch(setSearchUidName(search));\n handleSubmitSearch();\n // }\n break;\n default:\n break;\n }\n // setTypeMessage(\"error\");\n };\n\n const handleSubmitSearch = () => {\n if (fanpageSelected?.id) {\n const searchParam = new URLSearchParams(window.location.search);\n searchParam.set(\"page\", types.PAGINATION.PAGE);\n searchParam.set(\"size\", types.PAGINATION.SIZE);\n searchParam.set(\"pageId\", `${fanpageSelected.id}`);\n searchParam.set(\"sort\", \"lastInboxTime,desc\");\n const getSearch = searchParam.get(\"search\");\n const newSearchParam = searchParam.toString();\n history.push({\n pathname: window.location.pathname,\n search: newSearchParam\n });\n paramsPagination({\n page: types.PAGINATION.PAGE,\n size: types.PAGINATION.SIZE,\n pageId: fanpageSelected.id\n });\n if (!_.isEmpty(fanpageSelected)) {\n let searchQuery = createSearchQuery(filterCus?.search_arr || null);\n\n searchQuery += `${\n getSearch ? getSearch : `pageId==${fanpageSelected.id}`\n };${search && `uid|name==` + search}`;\n\n const params = {\n page: types.PAGINATION.PAGE,\n size: types.PAGINATION.SIZE,\n search: searchQuery,\n sort: \"lastInboxTime,desc\"\n };\n getData(params);\n setRowsPerPage(types.PAGINATION.SIZE);\n setPage(types.PAGINATION.PAGE);\n }\n }\n };\n\n const handleSubmitFilter = () => {\n setIsOpenModalFilter(true);\n };\n\n const toggleModalFilter = () => {\n setIsOpenModalFilter(!isOpenModalFilter);\n };\n\n const onSubmitFilter = (data) => {\n setcustomerAfterFilter(data);\n };\n const handleDetail = (item) => {\n detail(item);\n };\n\n const handleEdit = (item) => {\n const searchParam = new URLSearchParams(window.location.search);\n const getSearch = searchParam.get(\"search\");\n const params = {\n page: types.PAGINATION.PAGE,\n size: types.PAGINATION.SIZE,\n search: `${getSearch ? getSearch : `pageId==${fanpageSelected.id}`};${\n search && `uid|name==` + search\n }`,\n sort: \"lastInboxTime,desc\"\n };\n edit(item, params);\n };\n const handleSubmitExport = () => {\n handleExport();\n };\n const handleSubmitImport = () => {\n handleImport();\n };\n const handleOpenExtention = () => {\n window.open(\n types.URL.FACEBOOK + `&token=${localStorage.getItem(\"token\") || null}`,\n \"_blank\"\n );\n };\n const onKeyDown = (event) => {\n if (event.key === \"Enter\") {\n handleSearch(\"search\", search);\n }\n };\n\n const isSelected = (name) => selected.indexOf(name) !== -1;\n\n const handleSelectAllClick = () => {\n let items = [];\n const checkArr = data && data.content.find((item) => item.checked == false);\n if (checkBoxSelectAll && _.isEmpty(checkArr)) {\n (rows || []).map((item) => {\n onCustomerCheck({ ...item, checked: true });\n return items.push({\n ...item,\n checked: true\n });\n });\n setCheckBoxSelectAll(false);\n } else {\n (rows || []).map((item) => {\n onCustomerCheck({ ...item, checked: false });\n return items.push({\n ...item,\n checked: false\n });\n });\n setCheckBoxSelectAll(true);\n }\n setRows(items);\n };\n\n const handleSelectCheckBox = (value) => {\n let items = [];\n (rows || []).map((item) => {\n if (item.id == value.id && value.checked == true) {\n onCustomerCheck(item);\n return items.push({\n ...item,\n checked: false\n });\n } else if (item.id == value.id && value.checked == false) {\n onCustomerCheck(item);\n return items.push({\n ...item,\n checked: true\n });\n } else {\n return items.push({\n ...item\n });\n }\n });\n setRows(items);\n };\n const handleSubmitCreate = () => {\n setIsCreateCampaign(true);\n };\n const handleCloseCreatePopup = () => {\n setIsCreateCampaign(false);\n setError(\"\");\n setTitleCampaign(\"\");\n };\n\n const handleSubmitCreateCampaign = () => {\n const params = {\n name: titleCampaign,\n pageId: fanpageSelected.id\n };\n if (titleCampaign) {\n onCreate(paramsFilter, customerCheck, params, data);\n setError(\"\");\n setTitleCampaign(\"\");\n setIsCreateCampaign(false);\n } else {\n setError(t(\"update.error_msg_name_camp\"));\n }\n };\n\n const handleChangeCampaign = (key, value) => {\n switch (key) {\n case \"titleCampaign\":\n setTitleCampaign(value);\n break;\n default:\n break;\n }\n };\n const handleCheckedAllPage = () => {\n setIsUseCheckedAllPage(true);\n let items = [];\n let customerAll = [];\n if (isCheckedAllPage && customerCheck.length == 0) {\n ((data && data.content) || []).map((item) => {\n return items.push({\n ...item,\n checked: false\n });\n });\n customerAllState.map((item) => {\n return customerAll.push({\n ...item,\n checked: false\n });\n });\n onCustomerCheckReset(customerAllState);\n setIsCheckedAllPage(false);\n setCheckBoxSelectAll(false);\n } else {\n ((data && data.content) || []).map((item) => {\n return items.push({\n ...item,\n checked: true\n });\n });\n customerAllState.map((item) => {\n return customerAll.push({\n ...item,\n checked: true\n });\n });\n onCustomerCheckReset([]);\n setIsCheckedAllPage(true);\n setCheckBoxSelectAll(true);\n }\n setCustomerAllState(customerAllState);\n\n setRows(items);\n };\n let isEmptyCheckItem = [];\n rows.map((item) => {\n if (!item.checked) {\n isEmptyCheckItem.push(item);\n }\n });\n\n const handleClick = (event) => {\n setAnchorEl(event.currentTarget);\n };\n\n const handleCloseMenu = () => {\n setAnchorEl(null);\n };\n\n const openModalTag = (type) => {\n setTypeModalTag(type);\n handleCloseMenu();\n };\n\n const onCloseModal = () => {\n setTypeModalTag(null);\n };\n\n const handleCloseShowModalAllTagsPopup = (tags) => {\n setshowModalAllTags(false);\n setSelectedModalTags([]);\n };\n\n const { t } = useTranslation();\n\n const renderTagsCell = (tagList, type, row) => {\n const fanpageTags =\n type === \"bombotTag\"\n ? tagsObj?.bombotTags \n : type === \"pancakeTag\"\n ? tagsObj?.pancakeTags\n : tagsObj?.fbTags;\n \n\n const filterTags = tagList.filter((tag) => fanpageTags[tag]);\n\n if (type === 'pancakeTag') {\n console.log(\"fanpageTags ==>\", tagList, fanpageTags[3]);\n }\n\n\n return (\n <>\n {filterTags?.length ? (\n \n {filterTags.map((tag, index) => {\n\n return (\n fanpageTags[tag]?.name &&\n parseInt(index) < 3 && (\n \n )\n );\n })}\n \n ) : (\n \n )}\n {(filterTags || []).length > 3 && (\n {\n e.stopPropagation();\n setSeletedTags({\n tagList: filterTags || null,\n customer: row,\n type: type\n });\n }}\n className={classes.buttonLoadMore}\n >\n Xem tất cả ({(filterTags || []).length}) tags\n \n )}\n \n );\n };\n\n const handleRemoveTags = async (customer, removingTags) => {\n const payload = {\n search: `pageId==${customer.pageId}`,\n exclude: [],\n bombotTags: [...removingTags],\n include: [customer.uid]\n };\n\n return customerApi.unAttachTags(payload).then((result) => {\n const searchParam = new URLSearchParams(window.location.search);\n const search = searchParam.get(\"search\");\n\n paramsPagination({\n page: page,\n size: rowsPerPage,\n pageId: fanpageSelected.id\n });\n //setCheckBoxSelectAll(true);\n if (filterCus?.search_string) {\n getData({\n page: page - 1,\n size: 10,\n search: filterCus?.search_string,\n sort: \"lastInboxTime,desc\"\n });\n } else {\n getData({\n page: page - 1,\n size: rowsPerPage,\n search: `${\n search\n ? search\n : `pageId==${fanpageSelected.id};${\n search && `uid|name==` + search\n }`\n }`,\n sort: \"lastInboxTime,desc\"\n });\n }\n\n getFanpage();\n });\n };\n\n return (\n <>\n {typeMessage && (\n setTypeMessage(null)}\n >\n {}} severity={typeMessage}>\n {typeMessage === \"error\"\n ? t(\"update.error_msg\")\n : t(\"customer_management.import_customer.import_result.success\")}\n \n \n )}\n handleCloseCreatePopup()}\n >\n
\n

\n {t(\"customer_management.create_campaign.title\")}\n

\n \n handleChangeCampaign(\"titleCampaign\", event.target.value)\n }\n />\n

{error}

\n
\n handleSubmitCreateCampaign()}\n />\n
\n
\n \n handleCloseShowModalAllTagsPopup()}\n >\n
\n

\n {t(\"customer_management.tags.list_title\")}\n

\n
\n {(selectedModalTags || []).map((item, idx) => {\n let obj = _.find(\n (fanpageSelected && fanpageSelected.bombotTags) || [],\n function (obj) {\n return obj.id === item;\n }\n );\n if (!_.isEmpty(obj)) {\n return (\n
\n \n {obj.name}\n \n
\n );\n }\n })}\n
\n
\n \n {isSearch && (\n
\n \n \n setSearch(event.target.value)}\n placeholder={t(\"customer_management.search\")}\n style={{ maxWidth: 500, width: \"100%\" }}\n id=\"input-with-icon-textfield\"\n className=\"bg-white\"\n onKeyDown={onKeyDown}\n InputProps={{\n startAdornment: (\n \n \n \n )\n }}\n />\n \n {t(\"common.btn.search\")}\n \n }\n backgroundColor=\"#05AE34\"\n color=\"white\"\n handleClickButton={() => handleSearch(\"search\", search)}\n style={{\n minWidth: \"fit-content\",\n padding: \"6px 16px\"\n }}\n />\n \n \n {/* \n \n

{t('common.btn.manage_tag')}

\n
\n }\n backgroundColor=\"#05AE34\"\n color=\"white\"\n disabled={_.isEmpty(fanpageSelected) ? true : false}\n handleClickButton={() => setIsOpenModalManageTag(true)}\n /> */}\n \n \n

{t(\"common.btn.filter_customer\")}

\n
\n }\n backgroundColor=\"#05AE34\"\n color=\"white\"\n disabled={_.isEmpty(fanpageSelected) ? true : false}\n handleClickButton={() => handleSubmitFilter()}\n />\n \n \n

{t(\"common.btn.update_info\")}

\n \n }\n backgroundColor=\"#05AE34\"\n color=\"white\"\n disabled={_.isEmpty(fanpageSelected) ? true : false}\n handleClickButton={handleClick}\n />\n \n \n
\n )}\n\n \n openModalTag(\"add\")}>\n {t(\"customer_management.add_bombot_tag.title\")}\n \n openModalTag(\"edit\")}>\n {t(\"customer_management.remove_bombot_tag.title\")}\n \n \n\n {rows.length > 0 && (\n <>\n

\n {t(\"customer_management.list.amount_customer\")}:\n \n {!isCheckedAllPage && isUseCheckedAllPage\n ? 0\n : totalNumber <= 0\n ? 0\n : totalNumber}\n \n \n /{parseInt(data && data.totalElements)}\n \n

\n \n )}\n
\n \n \n \n \n {(rows || []).map((row, index) => {\n console.log(\"🚀 ~ { ~ row:\", row);\n const isItemSelected = isSelected(row.name);\n const labelId = `enhanced-table-checkbox-${index}`;\n return (\n \n \n handleSelectCheckBox(row)}\n />\n }\n />\n \n \n {data?.number * rowsPerPage + index + 1}\n \n \n {row.uid ? (\n
{row.uid}
\n ) : (\n \n )}\n \n \n {row.name ? (\n
{row.name}
\n ) : (\n \n )}\n \n \n {row.gender ? (\n
\n {_.upperCase(row.gender) ==\n _.upperCase(types.GENDER.MALE)\n ? t(\"update.gender.male\")\n : _.upperCase(row.gender) ==\n _.upperCase(types.GENDER.FEMALE)\n ? t(\"update.gender.female\")\n : t(\"update.gender.other\")}\n
\n ) : (\n \n {\"_\"}\n

\n )}\n \n \n {row.lastInboxTime ? (\n
\n {moment(row.lastInboxTime).format(\"DD/MM/YYYY HH:mm\")}\n
\n ) : (\n \n )}\n \n\n \n {row.lastCustomerInboxTime ? (\n
\n {moment(row.lastCustomerInboxTime).format(\n \"DD/MM/YYYY HH:mm\"\n )}\n
\n ) : (\n \n )}\n \n \n {row.phone ? (\n
{row.phone}
\n ) : (\n \n )}\n \n\n \n {renderTagsCell(row?.fbTags, \"fbTag\", row)}\n \n\n \n {renderTagsCell(row?.bombotTags, \"bombotTag\", row)}\n \n\n \n {renderTagsCell(\n row?.otherTags?.find((tag) => tag?.system === \"pancake\")\n ?.tags || [], \n \"pancakeTag\",\n row\n )}\n \n\n \n {row.lastSyncTime ? (\n
\n {moment(row.lastSyncTime).format(\"DD/MM/YYYY HH:mm\")}\n
\n ) : (\n \n )}\n \n \n \n handleDetail(row)}\n >\n \n \n handleEdit(row)}\n >\n \n \n \n \n \n );\n })}\n
\n
\n \n {rows.length == 0 && (\n

{t(\"update.no_data\")}

\n )}\n {isPagination && rows.length > 0 && (\n \n \n \n \n )}\n {/* {rows.length > 0 && (\n }\n label=\"Thay đổi khoảng cách hiển thị gần\"\n />\n )} */}\n\n
\n \n \n {t(\"common.btn.import_customer\")}\n \n }\n backgroundColor=\"#0c0b0b\"\n color=\"white\"\n handleClickButton={() => handleSubmitImport()}\n disabled={_.isEmpty(fanpageSelected) ? true : false}\n />\n \n \n {t(\"common.btn.export_customer\")}\n \n }\n backgroundColor=\"#FF8000\"\n color=\"white\"\n handleClickButton={() => handleSubmitExport()}\n disabled={_.isEmpty(fanpageSelected) ? true : false}\n />\n {/* handleOpenExtention()}\n disabled={_.isEmpty(fanpageSelected) ? true : false}\n /> */}\n \n \n \n {t(\"customer_management.create_campaign.title\")}\n \n \n }\n backgroundColor=\"#05AE34\"\n color=\"white\"\n handleClickButton={() => handleSubmitCreate()}\n disabled={_.isEmpty(fanpageSelected) ? true : false}\n />\n {typeModalTag && (\n \n )}\n \n {/* */}\n {isOpenModalManageTag && (\n setIsOpenModalManageTag(false)}\n getData={() => {\n return getData({\n page: page,\n size: rowsPerPage,\n search: `pageId==${fanpageSelected.id};${\n search && `uid|name==` + search\n }`,\n sort: \"lastInboxTime,desc\"\n });\n }}\n getFanpage={getFanpage}\n fanpageSelected={fanpageSelected}\n />\n )}\n
\n
\n\n {!_.isNull(selectedTags) && (\n setSeletedTags(null)}\n isOpen={!_.isNull(selectedTags)}\n selectedTags={selectedTags?.tagList || []}\n customer={selectedTags?.customer || null}\n type={selectedTags?.type}\n tagsObj={tagsObj}\n handleRemoveTags={handleRemoveTags}\n />\n )}\n \n );\n}\n\nEnhancedTable.propTypes = {\n data: PropTypes.array,\n search: PropTypes.string,\n isSearch: PropTypes.bool,\n isPagination: PropTypes.bool,\n getData: PropTypes.func,\n handleGetData: PropTypes.func\n};\n\nEnhancedTable.defaultProps = {\n isPagination: true,\n isSearch: true,\n handleGetData: (f) => f,\n getData: (f) => f,\n data: [],\n search: null\n};\n","import { createSlice } from \"@reduxjs/toolkit\";\nimport initialState from \"../../configs/redux/initialState\";\n\nconst fanpageReducer = createSlice({\n name: \"fanpage\",\n initialState: {\n ...initialState.fanpageReducer,\n },\n reducers: {\n setFanpage: (state, action) => {\n state.fanpage = action.payload;\n },\n setFanpageFull: (state, action) => {\n state.fanpageFull = action.payload;\n },\n setFanpageSelected: (state, action) => {\n state.loading_page_detail = false;\n state.fanpage_selected = action.payload;\n },\n },\n});\n\nexport const { setFanpage, setFanpageFull, setFanpageSelected } =\n fanpageReducer.actions;\n\nexport default fanpageReducer.reducer;\n","import fanpageApi from \"../../api/fanpageApi\";\nimport { setLoading } from \"../App/AppReducer\";\nimport {\n setFanpageSelected,\n setFanpage,\n setFanpageFull,\n startAddTags,\n addTagsSuccess,\n addTagsFailed,\n} from \"./FanpageReducer\";\n\nexport function getFanpage(params) {\n return (dispatch) => {\n dispatch(setLoading(true));\n return fanpageApi.get(params).then(\n (res) => {\n dispatch(setFanpage(res));\n dispatch(setLoading(false));\n },\n (error) => {\n dispatch(setLoading(false));\n }\n );\n };\n}\n\nexport function getFanpageFull(params) {\n return (dispatch) => {\n dispatch(setLoading(true));\n return fanpageApi.get(params).then(\n (res) => {\n console.log(\"res ==>\", res)\n dispatch(setFanpageFull(res));\n dispatch(setLoading(false));\n },\n (error) => {\n dispatch(setLoading(false));\n }\n );\n };\n}\n\nexport function getFanpageDetail(id) {\n return (dispatch) => {\n dispatch(setLoading(true));\n return fanpageApi.getDetailFanpage(id).then(\n (res) => {\n dispatch(setFanpageSelected(res));\n dispatch(setLoading(false));\n },\n (error) => {\n dispatch(setLoading(false));\n }\n );\n };\n}\n","import React from \"react\";\nimport { Button, CircularProgress } from \"@material-ui/core\";\nimport styles from \"./styles.module.scss\";\nimport cn from \"classnames\";\nimport Flex from \"components/Flex\";\n\nconst BaseSelectFile = ({\n loading,\n onChange,\n className,\n classCssLoading,\n fileNameSelected = \"\",\n ...rest\n}) => {\n if (loading)\n return (\n \n \n \n );\n return (\n \n \n

\n {fileNameSelected}\n

\n
\n );\n};\n\nexport default BaseSelectFile;\n","import React from \"react\";\nimport FormDialog from \"../../../components/FormDialog\";\n\nimport CheckCircleOutlineRoundedIcon from \"@material-ui/icons/CheckCircleOutlineRounded\";\nimport { Button, DialogActions, DialogContent } from \"@material-ui/core\";\nimport { useDispatch } from \"react-redux\";\nimport { clearImportResult } from \"../CustomerReducer\";\nimport Flex from \"components/Flex\";\n\nconst ModalResultImport = ({ data }) => {\n const dispatch = useDispatch();\n\n const handleClosePoup = () => {\n dispatch(clearImportResult());\n };\n return (\n handleClosePoup()}>\n \n \n \n

Đã import khách hàng!

\n
\n
\n

Thành công: {data?.updateSuccessful || 0}

\n

Thất bại: {data?.updateFailed || 0}

\n
\n
\n \n \n OK\n \n \n
\n );\n};\n\nexport default ModalResultImport;\n","import { useState } from 'react'\n\nconst VirtualScroll = ({\n rowHeight,\n totalItems,\n items,\n visibleItemsLength,\n containerHeight,\n}) => {\n // Calculate the total height of the container\n const totalHeight = rowHeight * totalItems\n // Current scroll position of the container\n const [scrollTop, setScrollTop] = useState(0)\n // Get the first element to be displayed\n const startNodeElem = Math.ceil(scrollTop / rowHeight)\n // Get the items to be displayed\n const visibleItems = items?.slice(\n startNodeElem,\n startNodeElem + visibleItemsLength\n )\n // Add padding to the empty space\n const offsetY = startNodeElem * rowHeight\n\n const handleScroll = (e) => {\n // set scrollTop to the current scroll position of the container.\n setScrollTop(e?.currentTarget?.scrollTop)\n }\n\n return (\n \n
\n \n {visibleItems}\n
\n \n \n )\n}\n\nexport default VirtualScroll\n","import React, { useEffect, useMemo, useRef, useState } from 'react'\nimport _ from 'lodash'\nimport { useHistory } from 'react-router-dom'\nimport clsx from 'clsx'\nimport { makeStyles } from '@material-ui/core/styles'\nimport MainLayout from '../MainLayout'\nimport FormControl from '@material-ui/core/FormControl'\nimport GetAppIcon from '@material-ui/icons/GetApp'\nimport ListCustomerComponent from '../../components/ListCustomer'\nimport FormDialog from '../../components/FormDialog'\nimport ButtonComponent from '../../components/Button'\nimport Grid from '@material-ui/core/Grid'\nimport TextField from '@material-ui/core/TextField'\nimport RadioGroup from '@material-ui/core/RadioGroup'\nimport Radio from '@material-ui/core/Radio'\nimport FormLabel from '@material-ui/core/FormLabel'\nimport { Button, Chip } from '@material-ui/core'\nimport SearchIcon from '@material-ui/icons/Search'\nimport FormControlLabel from '@material-ui/core/FormControlLabel'\nimport FormGroup from '@material-ui/core/FormGroup'\nimport Checkbox from '@material-ui/core/Checkbox'\nimport types from '../../constants/types'\nimport moment from 'moment'\nimport IMAGES from '../../images'\nimport Autocomplete from '@material-ui/lab/Autocomplete'\nimport DeleteIcon from '@material-ui/icons/Delete'\nimport Loading from '../../components/Loading'\nimport { getFanpageDetail } from 'views/Fanpage/FanpageActions'\nimport { useDispatch, useSelector } from 'react-redux'\nimport Flex from 'components/Flex'\nimport BaseSelectFile from 'components/BaseSelectFile'\nimport cn from 'classnames'\nimport { selectFilterCus, selectImportResult } from './CustomerSelectors'\nimport Tour from 'reactour'\nimport { selectSearchUidName } from './CustomerSelectors'\nimport { getIsGuideByKey, GUIDE_TYPE_ENUM, setIsGuideByKey } from 'utils/helper'\nimport { selectGuideListByKey } from 'stores/config/config.selector'\nimport ModalResultImport from './item/ModalResultImport'\nimport { useTranslation } from 'react-i18next'\nimport MessengerButton from './../Home/items/MessengerButton'\nimport TagPreviewItem from '../../components/TagPreviewItem'\nimport { colorDir1, getRandomTag } from '../../components/TagPreviewModal'\nimport VirtualScroll from '../../components/VirtualScroll'\n\nconst useStyles = makeStyles((theme) => ({\n wrapSelectFanpage: {\n marginTop: 30,\n // width: 'calc(100% - 15px)',\n width: '100%',\n '& h4': {\n marginBottom: 5,\n color: '#05AE34',\n fontSize: 16,\n },\n },\n wrapSelect: {\n width: '100%',\n marginTop: '12px',\n marginBottom: '12px',\n },\n select: {\n // margin: \"5px 0px !important\",\n },\n wrapSelectLabel: {\n zIndex: 1,\n fontSize: 16,\n paddingLeft: 10,\n marginTop: 7,\n '&.MuiFormLabel-filled': {\n display: 'none !important',\n },\n '&.Mui-focused': {\n display: 'none !important',\n },\n },\n\n root: {\n '&:hover': {\n backgroundColor: 'transparent',\n },\n },\n icon: {\n borderRadius: '50%',\n width: 16,\n height: 16,\n boxShadow:\n 'inset 0 0 0 1px rgba(16,22,26,.2), inset 0 -1px 0 rgba(16,22,26,.1)',\n backgroundColor: '#f5f8fa',\n backgroundImage:\n 'linear-gradient(180deg,hsla(0,0%,100%,.8),hsla(0,0%,100%,0))',\n '$root.Mui-focusVisible &': {\n outline: '2px auto rgba(19,124,189,.6)',\n outlineOffset: 2,\n },\n 'input:hover ~ &': {\n backgroundColor: '#ebf1f5',\n },\n 'input:disabled ~ &': {\n boxShadow: 'none',\n background: 'rgba(206,217,224,.5)',\n },\n },\n checkedIcon: {\n backgroundColor: '#05AE34',\n backgroundImage:\n 'linear-gradient(180deg,hsla(0,0%,100%,.1),hsla(0,0%,100%,0))',\n '&:before': {\n display: 'block',\n width: 16,\n height: 16,\n backgroundImage: 'radial-gradient(#fff,#fff 28%,transparent 32%)',\n content: '\"\"',\n },\n 'input:hover ~ &': {\n backgroundColor: '#106ba3',\n },\n },\n wrapRadioGroup: {\n display: 'inline-block',\n flexWrap: 'inherit',\n flexDirection: 'inherit',\n marginLeft: 15,\n fontSize: '16px',\n marginTop: 10,\n },\n // wrapperPopup: {\n // \"& h4\": {\n // color: \"#05AE34\",\n // paddingLeft: 15,\n // },\n // \"& .MuiInputLabel-filled.MuiInputLabel-shrink\": {\n // top: \"-25px\",\n // color: \"rgba(0, 0, 0, 0.87) !important\",\n // width: \"100%\",\n // fontSize: \"16px\",\n // transform: \"inherit\",\n // },\n // \"& .MuiInputLabel-filled\": {\n // top: \"-25px\",\n // color: \"rgba(0, 0, 0, 0.87) !important\",\n // width: \"100%\",\n // fontSize: \"16px\",\n // transform: \"inherit\",\n // },\n // \"& .MuiFilledInput-input\": {\n // padding: \"10px 12px 10px 2px !important\",\n // },\n // },\n // radioGroup: {\n // flexWrap: \"inherit\",\n // flexDirection: \"inherit\",\n // \"& label\": {\n // float: \"left\",\n // },\n // },\n // textField: {\n // width: \"100%\",\n // padding: \"0px 15px\",\n // margin: \"35px 0px 10px 0px\",\n // \"& .MuiInputLabel-filled\": {\n // marginLeft: 15,\n // },\n // },\n formControlCheckbox: {\n margin: '15px 0px 0px 15px',\n width: 'calc(100% - 30px)',\n '& .MuiFormLabel-root': {\n marginBottom: 5,\n fontSize: 16,\n },\n '& .MuiFormControlLabel-label': {\n fontSize: 16,\n },\n '& .MuiCheckbox-colorSecondary.Mui-checked': {\n color: '#05AE34',\n },\n '& .MuiFormLabel-root': {\n color: 'rgba(0, 0, 0, 0.87)',\n fontSize: 16,\n },\n },\n wrapButton: {\n width: '100%',\n display: 'inline-block',\n },\n button: {\n display: 'inline-block',\n width: 130,\n float: 'right',\n margin: '30px 15px 30px 0px',\n },\n title: {\n color: '#05AE34',\n },\n wrapButtonImport: {\n textAlign: 'right',\n },\n wrapBox: {\n padding: '15px 42px 30px 15px',\n },\n buttonChange: {\n margin: '0px 0px 0px 10px',\n },\n importInput: {\n margin: '15px 0px 30px 0px',\n },\n inboxDate: {\n left: 15,\n top: -5,\n width: 200,\n marginTop: 25,\n // marginwrapperPopupwrapperPopupTop: 25,\n '& label': {\n color: 'rgba(0, 0, 0, 0.87) !important',\n fontSize: '16px',\n transform: 'inherit',\n top: '-10px',\n width: '100%',\n },\n '& .MuiInputBase-formControl': {\n width: 140,\n },\n '& $root': {\n width: 120,\n },\n '& .MuiInputBase-input': {\n width: 120,\n position: 'absolute',\n left: 0,\n top: 0,\n width: '100%',\n height: '100%',\n opacity: 0,\n cursor: 'pointer',\n boxSizing: 'border-box',\n },\n '& .MuiInputBase-input::-webkit-calendar-picker-indicator': {\n position: 'absolute',\n left: 0,\n top: 0,\n width: '100%',\n height: '100%',\n margin: 0,\n padding: 0,\n cursor: 'pointer',\n },\n },\n inboxTime: {\n left: 15,\n top: -5,\n width: 200,\n marginTop: 25,\n // marginwrapperPopupwrapperPopupTop: 25,\n '& label': {\n color: 'rgba(0, 0, 0, 0.87) !important',\n fontSize: '16px',\n transform: 'inherit',\n top: '-10px',\n width: '100%',\n },\n '& .MuiInputBase-formControl': {\n width: 140,\n },\n '& $root': {\n width: 120,\n },\n },\n inboxTimeLast: {\n right: 30,\n position: 'absolute',\n top: -5,\n marginTop: 25,\n // marginwrapperPopupwrapperPopupTop: 25,\n '& label': {\n color: 'rgba(0, 0, 0, 0.87) !important',\n fontSize: '16px',\n transform: 'inherit',\n top: '-10px',\n width: '100%',\n },\n '& .MuiInputBase-formControl': {\n width: 140,\n },\n '& $root': {\n width: 120,\n },\n\n '& .MuiInputBase-input::-webkit-calendar-picker-indicator': {\n position: 'absolute',\n left: 0,\n top: 0,\n width: '100%',\n height: '100%',\n margin: 0,\n padding: 0,\n cursor: 'pointer',\n },\n },\n wrapperLoading: {\n height: 100,\n position: 'relative',\n textAlign: 'center',\n top: -20,\n '& img': {\n height: 100,\n position: 'absolute',\n top: 0,\n left: 'calc(50% - 50px)',\n width: 100,\n },\n '& p': {\n position: 'absolute',\n bottom: -11,\n textAlign: 'center',\n width: '100%',\n },\n },\n noData: {\n marginTop: 15,\n marginBottom: 10,\n color: 'rgba(0, 0, 0, 0.38)',\n },\n addTag: {\n width: '100%',\n marginBottom: 15,\n },\n wrapCheckbox: {\n position: 'relative',\n '&:hover': {\n '& $delete': {\n display: 'inline-block',\n },\n },\n },\n delete: {\n display: 'none',\n position: 'absolute',\n right: '-8%',\n top: '50%',\n transform: 'translateY(-50%)',\n '&:hover': {\n cursor: 'pointer',\n },\n },\n wrapButtonPopup: {\n textAlign: 'right',\n paddingBottom: 30,\n paddingRight: 15,\n },\n tagFormGroup: {\n // height: '200px',\n // overflowY: 'auto',\n // overflowX: 'hidden',\n display: 'initial',\n marginTop: '15px',\n '& .MuiFormControlLabel-root': {\n width: '100%',\n },\n },\n fromToIcon: {\n position: 'absolute',\n top: '45px',\n left: '180px',\n },\n}))\n\nfunction StyledRadio(props) {\n const classes = useStyles()\n\n return (\n }\n icon={}\n {...props}\n />\n )\n}\n\nconst CustomerView = (props) => {\n const classes = useStyles()\n\n const {\n getFanpage,\n getCustomer,\n fanpageFull,\n customer,\n onDetail,\n onEdit,\n detail,\n getListTagFacebook,\n onFanpageSelected,\n fanpageSelected,\n getListTagBombot,\n onExport,\n fileUpload,\n loadingImport,\n importSuccess,\n onSubmitAddTag,\n loading,\n onCreate,\n getCustomerAll,\n customerAll,\n customerCheck,\n onCustomerCheck,\n onCustomerCheckReset,\n createCustomerSucss,\n resetCustomer,\n messageImport,\n } = props\n const [data, setData] = useState([])\n const [isPopup, setIsPopup] = useState(false)\n const [detailState, setDetailState] = useState({})\n const [listTagFacebook, setListTagFacebook] = useState([])\n const [listTagBombot, setListTagBombot] = useState([])\n const [tagFbSelectedAll, setTagFbSelectedAll] = useState(false)\n const [tagBbSelectedAll, setTagBbSelectedAll] = useState(false)\n const [isActions, setIsActions] = useState(null)\n const [file, setFile] = useState({})\n const [isImportPopup, setIsImportPopup] = useState(false)\n \n const [listTagPancake, setListTagPancake] = useState([]);\n\n const [uid, setUid] = useState(null)\n const [nameFacebook, setNameFacebook] = useState(null)\n const [lastInboxTime, setLastInboxTime] = useState(null)\n const [lastInboxTimeTo, setLastInboxTimeTo] = useState(null)\n\n // const [tagFacebook, setTagFacebook] = useState([]);\n // const [tagBombot, setTagBombot] = useState([]);\n const [gender, setGender] = useState(null)\n const [pagination, setPagination] = useState(null)\n const [isAddTag, setIsAddTag] = useState(false)\n const [addTag, setAddTag] = useState('')\n const [listBombotTag, setListBombotTag] = useState([])\n const [isConfirmDeleteTag, setIsConfirmDeleteTag] = useState(false)\n const [itemDelete, setItemDelete] = useState({})\n const [isCreateCampaign, setIsCreateCampaign] = useState(false)\n const [paramsFilter, setParamsFilter] = useState(undefined)\n const [messageAddTag, setMessageAddTag] = useState('')\n const [urlSearchParamPageId, setUrlSearchParamPageId] = useState(undefined)\n const [urlSearchParamSearch, setUrlSearchParamSearch] = useState(undefined)\n const [urlSearchParamPage, setUrlSearchParamPage] = useState(\n types.PAGINATION.PAGE\n )\n const [urlSearchParamSize, setUrlSearchParamSize] = useState(\n types.PAGINATION.SIZE\n )\n\n const [lastCustomerInboxTimeTo, setLastCustomerInboxTimeTo] = useState(null)\n const [lastCustomerInboxTime, setLastCustomerInboxTime] = useState(null)\n\n const importResult = useSelector(selectImportResult)\n const searchUidName = useSelector(selectSearchUidName)\n\n const [urlSearchParamSort, setUrlSearchParamSort] = useState('createdAt,desc')\n const [message, setMessage] = useState('')\n const [typeIdentif, setTypeIdentif] = useState('CONVERSATION_ID')\n const dispatch = useDispatch()\n const history = useHistory()\n const [selectedPageId, setSelectedPageId] = useState(\n fanpageSelected.id || null\n )\n\n const tourOverview = useSelector(\n selectGuideListByKey(GUIDE_TYPE_ENUM.customer_manager)\n )\n\n const { t } = useTranslation()\n\n const [tourConfig, setTourConfig] = useState(null)\n\n useEffect(() => {\n if (\n getIsGuideByKey(GUIDE_TYPE_ENUM.customer_manager) &&\n tourOverview?.length\n ) {\n setTourConfig(tourOverview)\n setIsGuideByKey(GUIDE_TYPE_ENUM.customer_manager)\n }\n }, [tourOverview])\n\n useEffect(() => {\n if (!importSuccess) {\n setMessage(messageImport?.message)\n }\n }, [messageImport])\n\n useEffect(() => {\n if (fanpageFull) {\n const searchParam = new URLSearchParams(window.location.search)\n let pageId = searchParam.get('pageId')\n const page = searchParam.get('page')\n const size = searchParam.get('size')\n const sort = searchParam.get('sort')\n const search = searchParam.get('search')\n if (pageId) {\n setUrlSearchParamPageId(pageId)\n }\n if (!pageId && fanpageFull[0]) {\n pageId = fanpageFull[0].id\n setUrlSearchParamPageId(fanpageFull[0].id)\n }\n if (page) {\n setUrlSearchParamPage(page)\n }\n if (size) {\n setUrlSearchParamSize(size)\n }\n if (sort) {\n setUrlSearchParamSort(sort)\n }\n if (search) {\n setUrlSearchParamSearch(search)\n }\n const fanpageCurrent = fanpageFull.find((item) => item.id == pageId)\n\n if (fanpageCurrent) {\n onFanpageSelected(fanpageCurrent)\n getCustomer({\n page: page,\n size: size,\n search: `${\n urlSearchParamSearch\n ? urlSearchParamSearch\n : `pageId==${fanpageCurrent.id ? fanpageCurrent.id : undefined}`\n }`,\n sort: sort,\n })\n getCustomerAll({\n search: `pageId==${\n fanpageCurrent.id ? fanpageCurrent.id : undefined\n }`,\n sort: 'lastInboxTime,desc',\n })\n } else {\n resetCustomer()\n onFanpageSelected({})\n }\n }\n }, [fanpageFull])\n\n const filterCus = useSelector(selectFilterCus)\n\n useEffect(() => {\n if (filterCus?.search_string) {\n let searchQuery = filterCus?.search_string\n\n if (!_.isEmpty(searchUidName)) {\n searchQuery += `;uid|name==` + searchUidName\n }\n\n getCustomer({\n page: 0,\n size: 10,\n search: searchQuery,\n sort: 'lastInboxTime,desc',\n })\n }\n }, [filterCus?.search_string])\n\n useEffect(() => {\n if (isPopup) {\n let listTagBombotTmp = sortListTag(getListTagBombot)\n setListTagBombot(listTagBombotTmp)\n }\n }, [getListTagBombot, isPopup])\n\n useEffect(() => {\n if (isPopup) {\n let listTagFbTmp = sortListTag(getListTagFacebook)\n setListTagFacebook(listTagFbTmp)\n }\n }, [getListTagFacebook, isPopup])\n\n useEffect(() => {\n if (importSuccess) {\n getCustomer({\n page: types.PAGINATION.PAGE,\n size: types.PAGINATION.SIZE,\n search: `pageId==${fanpageSelected.id}`,\n sort: 'lastInboxTime,desc',\n })\n setIsImportPopup(false)\n }\n }, [importSuccess])\n\n useEffect(() => {\n setData(customer)\n }, [customer])\n\n useEffect(() => {\n setDetailState(detail)\n setUid(detail.uid)\n setNameFacebook(detail.name)\n setLastInboxTime(detail.updatedAt)\n setGender(detail.gender)\n }, [detail])\n\n useEffect(() => {\n const params = {\n // page: page,\n // size: rowsPerPage,\n // search: search ? search : undefined,\n }\n getFanpage(params)\n setData([])\n onCustomerCheckReset([])\n }, [])\n\n const handleChangeFanpage = (key, value) => {\n switch (key) {\n case 'fanpage':\n if (value) {\n onFanpageSelected(value)\n getCustomer({\n page: types.PAGINATION.PAGE,\n size: types.PAGINATION.SIZE,\n search: `pageId==${value.id ? value.id : undefined}`,\n sort: 'lastInboxTime,desc',\n })\n getCustomerAll({\n search: `pageId==${value.id ? value.id : undefined}`,\n sort: 'lastInboxTime,desc',\n })\n\n const searchParam = new URLSearchParams(window.location.search)\n searchParam.set('page', types.PAGINATION.PAGE)\n searchParam.set('size', types.PAGINATION.SIZE)\n searchParam.set('pageId', `${value.id ? value.id : undefined}`)\n searchParam.set('sort', 'lastInboxTime,desc')\n searchParam.delete('search')\n searchParam.delete('query')\n const newSearchParam = searchParam.toString()\n history.push({\n pathname: window.location.pathname,\n search: newSearchParam,\n })\n dispatch(getFanpageDetail(value.id))\n }\n break\n default:\n break\n }\n }\n\n const handleCheckedAllTagFacebook = (event) => {\n const items = []\n if (tagFbSelectedAll) {\n ;(listTagFacebook || []).map((item) => {\n items.push({\n ...item,\n checked: false,\n })\n })\n } else {\n ;(listTagFacebook || []).map((item) => {\n items.push({\n ...item,\n checked: true,\n })\n })\n }\n setListTagFacebook(items)\n setTagFbSelectedAll(!tagFbSelectedAll)\n }\n\n const handleCheckedAllTagBombot = () => {\n if (tagBbSelectedAll) {\n const updatedTags = listTagBombot.map((tag) => ({\n ...tag,\n checked: false,\n }))\n setListTagBombot(updatedTags)\n } else {\n const updatedTags = listTagBombot.map((tag) => ({\n ...tag,\n checked: tag.name !== 'Không có tag',\n }))\n setListTagBombot(updatedTags)\n }\n setTagBbSelectedAll(!tagBbSelectedAll)\n }\n\n const handleCheckedTagBombot = (item) => {\n setTagBbSelectedAll(false)\n\n if (item.name === 'Không có tag') {\n const updatedTags = listTagBombot.map((it) => ({\n ...it,\n checked: it.name === 'Không có tag',\n }))\n setListTagBombot(updatedTags)\n } else {\n const updatedTags = listTagBombot.map((it) => {\n if (it.name === 'Không có tag') {\n return { ...it, checked: false }\n }\n if (it.id === item.id) {\n return { ...it, checked: !it.checked }\n }\n return it\n })\n setListTagBombot(updatedTags)\n }\n }\n\n const handleCheckedTagFacebook = (item) => {\n setTagFbSelectedAll(false)\n\n if (item.name === 'Không có tag') {\n const updatedTags = listTagFacebook.map((it) => ({\n ...it,\n checked: it.name === 'Không có tag',\n }))\n setListTagFacebook(updatedTags)\n } else {\n const updatedTags = listTagFacebook.map((it) => {\n if (it.name === 'Không có tag') {\n return { ...it, checked: false }\n }\n if (it.id === item.id) {\n return { ...it, checked: !it.checked }\n }\n return it\n })\n setListTagFacebook(updatedTags)\n }\n }\n\n const handleClosePoup = () => {\n setIsPopup(false)\n setLastInboxTimeTo(null)\n setLastInboxTime(null)\n setLastCustomerInboxTimeTo(null)\n setLastCustomerInboxTime(null)\n }\n\n const handleDetail = (item) => {\n setIsActions(types.ACTIONS.DETAIL)\n onDetail(item)\n setIsPopup(true)\n }\n\n const handleEdit = (item, pagination) => {\n setIsActions(types.ACTIONS.EDIT)\n onDetail(item)\n setIsPopup(true)\n setPagination(pagination)\n // handleSubmitActions(item)\n }\n\n const handleExport = () => {\n console.log('####handleExport customerCheck', customerCheck)\n if (!_.isEmpty(fanpageSelected)) {\n let excludeArr = []\n customerCheck.map((item) => {\n if (item.checked) {\n return excludeArr.push(item.uid)\n }\n })\n onExport({ fanpageSelected: fanpageSelected, exclude: excludeArr })\n }\n }\n\n const handleImport = () => {\n setIsImportPopup(true)\n setMessage('')\n }\n\n const handleFilter = (pagination) => {\n onDetail({})\n setIsActions(types.ACTIONS.FILTER)\n setIsPopup(true)\n setLastInboxTimeTo(null)\n setLastInboxTime(null)\n setLastCustomerInboxTimeTo(null)\n setLastCustomerInboxTime(null)\n setPagination(pagination)\n }\n const handleDownloadExcel = () => {\n const baseUrl = `${process.env.REACT_APP_API_URL}`\n window.open(`${baseUrl}api/v1.0/customer/customer-template.xlsx`, '_blank')\n }\n const handleCloseImport = () => {\n setIsImportPopup(false)\n }\n\n const sortListTag = (listTag) => {\n const noTag = (listTag || []).find((item) => item.name === 'Không có tag')\n const otherTags = (listTag || []).filter(\n (item) => item.name !== 'Không có tag'\n )\n const attachedTags = otherTags.filter((item) => item.checked)\n const unattachedTags = otherTags.filter((item) => !item.checked)\n\n attachedTags.sort((a, b) => a.name.localeCompare(b.name))\n unattachedTags.sort((a, b) => a.name.localeCompare(b.name))\n\n if (noTag) {\n return [noTag, ...attachedTags, ...unattachedTags]\n }\n\n return [...attachedTags, ...unattachedTags]\n }\n\n const handleSubmitOpenExtension = () => {\n let url =\n types.URL.FACEBOOK +\n `&token=${localStorage.getItem('token') || null}` +\n '&tab=scan'\n\n if (selectedPageId) {\n url += `&pageId=${selectedPageId}`\n }\n\n window.open(url, '_blank')\n }\n\n useEffect(() => {\n if (!fanpageSelected.id || selectedPageId) return\n setSelectedPageId(fanpageSelected.id)\n }, [fanpageSelected])\n\n // WORKING CODE ---------------------\n const handleSubmitImportExcel = (event) => {\n const params = {\n file: file,\n fanpage: fanpageSelected,\n type: typeIdentif,\n }\n fileUpload(params)\n }\n // WORKING CODE ---------------------\n\n const handleFile = (event) => {\n setFile(event.target.files[0])\n }\n\n const handleChange = (key, value) => {\n switch (key) {\n case 'uid':\n setUid(value)\n break\n case 'nameFacebook':\n setNameFacebook(value)\n break\n case 'lastInboxTime':\n setLastInboxTime(value)\n break\n case 'lastInboxTimeTo':\n setLastInboxTimeTo(value)\n break\n case 'lastCustomerInboxTime':\n setLastCustomerInboxTime(value)\n break\n case 'lastCustomerInboxTimeTo':\n setLastCustomerInboxTimeTo(value)\n break\n case 'gender':\n setGender(value)\n break\n case 'addTagBombot':\n setAddTag(value)\n break\n case 'identification':\n setTypeIdentif(value)\n break\n default:\n break\n }\n }\n\n const handleSubmitActions = () => {\n let fbTagsArr = []\n let bombotTagsArr = []\n let fbTagsArrAll = []\n let bombotTagsArrAll = []\n let notInTagBombot = false\n let notInTagFacebook = false\n\n listTagBombot.map((it) => {\n if (it.checked) {\n bombotTagsArr.push(it.id)\n }\n if (it.checked && it.id == 'not_in_tag') {\n notInTagBombot = true\n }\n if (it.id != 'not_in_tag' && !it.checked) {\n bombotTagsArrAll.push(it.id)\n }\n })\n\n listTagFacebook.map((it) => {\n if (it.checked) {\n fbTagsArr.push(it.id)\n }\n if (it.checked && it.id == 'not_in_tag') {\n notInTagFacebook = true\n }\n if (it.id != 'not_in_tag' && !it.checked) {\n fbTagsArrAll.push(it.id)\n }\n })\n // console.log('notInTagFacebook', notInTagBombot, bombotTagsArr, bombotTagsArr.length)\n if (isActions == types.ACTIONS.EDIT) {\n const params = {\n id: detail.id,\n uid: uid,\n name: nameFacebook,\n pageId: detail.pageId,\n gender: gender,\n fbTags: fbTagsArr,\n bombotTags: bombotTagsArr,\n facebookTags: fbTagsArr,\n lastInboxTime: detail.lastInboxTime,\n lastCustomerInboxTime: detail.lastCustomerInboxTime,\n }\n const searchParam = new URLSearchParams(window.location.search)\n const getSearch = searchParam.get('search')\n onEdit(params).then((res) => {\n if (res) {\n getCustomer({\n page: urlSearchParamPage,\n size: urlSearchParamSize,\n search: `${\n getSearch ? getSearch : `pageId==${fanpageSelected.id}`\n }`,\n // search: `pageId==${\n // urlSearchParamPageId ? urlSearchParamPageId : fanpageSelected.id\n // }`,\n sort: urlSearchParamSort\n ? urlSearchParamSort\n : 'lastInboxTime,desc',\n })\n }\n })\n // getCustomer(pagination);\n } else if (isActions == types.ACTIONS.FILTER) {\n let paramsSearch = `pageId==${fanpageSelected.id}`\n if (uid != undefined) {\n paramsSearch = `${paramsSearch};uid==` + uid\n }\n if (nameFacebook != undefined) {\n paramsSearch = `${paramsSearch};name==` + nameFacebook\n }\n if (gender != undefined && gender != 'all') {\n paramsSearch = `${paramsSearch};gender==` + _.upperCase(gender)\n }\n if (lastInboxTime) {\n paramsSearch = `${paramsSearch};lastInboxTime=bw=${lastInboxTime},${\n lastInboxTimeTo ? lastInboxTimeTo : lastInboxTime\n }`\n }\n if (lastCustomerInboxTime) {\n paramsSearch = `${paramsSearch};lastCustomerInboxTime=bw=${lastCustomerInboxTime},${\n lastCustomerInboxTimeTo\n ? lastCustomerInboxTimeTo\n : lastCustomerInboxTime\n }`\n }\n if (fbTagsArr.length > 0 && fbTagsArr.length < listTagFacebook.length) {\n paramsSearch = `${paramsSearch};fbTags=${\n notInTagFacebook ? 'notin' : 'in'\n }=${notInTagFacebook ? fbTagsArrAll.toString() : fbTagsArr.toString()}`\n }\n if (\n bombotTagsArr.length > 0 &&\n bombotTagsArr.length < listTagBombot.length\n ) {\n paramsSearch = `${paramsSearch};bombotTags=${\n notInTagBombot ? 'notin' : 'in'\n }=${\n notInTagBombot\n ? bombotTagsArrAll.toString()\n : bombotTagsArr.toString()\n }`\n }\n const params = {\n page: pagination.page,\n size: pagination.size,\n search: paramsSearch,\n sort: 'lastInboxTime,desc',\n }\n // {\"lastInboxTime\":[\"2020-09-30T17:00:00.000Z\",\"2021-05-10T17:00:00.000Z\"],\"gender\":\"all\",\"bombotTags\":[\"152053205\",\"425833478\"],\"fbTags\":[],\"pageId\":\"472971019831648\"}\n // query: JSON.stringify({\n // lastInboxTime: [lastInboxTime, lastInboxTimeTo],\n // gender: gender,\n // pageId: fanpageSelected.id,\n // bombotTags: Object.keys(bombotTagsArr) || [],\n // fbTags: Object.keys(fbTagsArr) || [],\n // }),\n\n const paramsFilter = JSON.stringify({\n lastInboxTime: [lastInboxTime, lastInboxTimeTo],\n lastCustomerInboxTime: [lastCustomerInboxTime, lastCustomerInboxTimeTo],\n gender: gender,\n pageId: fanpageSelected.id,\n bombotTags: bombotTagsArr || [],\n fbTags: fbTagsArr || [],\n })\n const searchParam = new URLSearchParams(window.location.search)\n searchParam.set('search', paramsSearch)\n searchParam.delete('query')\n searchParam.set('query', paramsFilter)\n searchParam.set('page', pagination.page)\n const newSearchParam = searchParam.toString()\n history.push({\n pathname: window.location.pathname,\n search: newSearchParam,\n })\n setParamsFilter(paramsFilter)\n getCustomer(params)\n }\n setIsPopup(false)\n }\n const handleOpenAddTag = () => {\n setMessageAddTag('')\n setAddTag('')\n setIsAddTag(true)\n }\n const handleCloseAddTag = () => {\n setIsAddTag(false)\n }\n const handleDeteleTag = (item) => {\n setItemDelete(item)\n setIsConfirmDeleteTag(true)\n }\n\n const handleSubmitAddTag = () => {\n if (!/\\S/.test(addTag)) {\n setMessageAddTag(t('update.noti.enter_tag'))\n } else {\n setMessageAddTag('')\n const checkAddTag = (obj) => obj.name === addTag\n const checkTagExist = listTagBombot.some(checkAddTag)\n if (checkTagExist) {\n setMessageAddTag(t('update.noti.tag_existed'))\n } else {\n if (addTag) {\n let bombotTags = listTagBombot.length > 0 ? listTagBombot : []\n const filtered = bombotTags.filter(function (el) {\n return el.id != 'not_in_tag'\n })\n let dataBombotTag = [...filtered, { name: addTag }]\n let facebookTags =\n fanpageSelected && fanpageSelected.fbTags\n ? fanpageSelected && fanpageSelected.fbTags\n : []\n const params = {\n id: fanpageSelected.id,\n name: fanpageSelected.name,\n fbTags: facebookTags,\n bombotTags: dataBombotTag,\n }\n onSubmitAddTag(params)\n setAddTag('')\n setIsAddTag(false)\n }\n }\n }\n\n // if (addTag)\n // if(listTagBombot.indexOf(addTag) !== -1){\n // alert(\"Value exists!\")\n // } else{\n // alert(\"Value does not exists!\")\n // }\n // if (!/\\S/.test(addTag)) {\n // setMessageAddTag(\"Vui lòng nhập tên tag\")\n // } else {\n // setMessageAddTag(\"\")\n // if (addTag) {\n // let bombotTags = listTagBombot.length > 0 ? listTagBombot : [];\n // const filtered = bombotTags.filter(function(el) { return el.id != \"not_in_tag\" });\n // let dataBombotTag = [...filtered, { name: addTag }];\n // let facebookTags =\n // fanpageSelected && fanpageSelected.fbTags\n // ? fanpageSelected && fanpageSelected.fbTags\n // : [];\n // const params = {\n // id: fanpageSelected.id,\n // name: fanpageSelected.name,\n // fbTags: facebookTags,\n // bombotTags: dataBombotTag,\n // };\n // onSubmitAddTag(params);\n // setAddTag(\"\");\n // setIsAddTag(false);\n // }\n // }\n }\n const handleCloseConfirmDeleteTag = () => {\n setIsConfirmDeleteTag(false)\n }\n const handleConfirmDeleteTag = () => {\n let bombotTags = listTagBombot.length > 0 ? listTagBombot : []\n const filtered = bombotTags.filter(function (el) {\n return el.id != 'not_in_tag'\n })\n let dataBombotTag = filtered.filter(function (it) {\n return it.id != itemDelete.id\n })\n let facebookTags =\n fanpageSelected && fanpageSelected.fbTags\n ? fanpageSelected && fanpageSelected.fbTags\n : []\n const params = {\n id: fanpageSelected.id,\n name: fanpageSelected.name,\n fbTags: facebookTags,\n bombotTags: dataBombotTag,\n }\n\n onSubmitAddTag(params)\n setAddTag('')\n setIsAddTag(false)\n setIsConfirmDeleteTag(false)\n }\n\n const handleParamsPagination = (params) => {\n setUrlSearchParamPage(params.page - 1)\n setUrlSearchParamSize(params.size)\n setUrlSearchParamPageId(params.pageId)\n }\n\n return (\n \n \n {t('common.btn.close')}\n \n }\n isOpen={tourConfig != null}\n accentColor=\"#05ae34\"\n onRequestClose={() => setTourConfig(null)}\n />\n {/* */}\n {loading && }\n handleCloseAddTag()}>\n
\n

\n {t('customer_management.add_bombot_tag.insert_tag_name')}\n

\n \n handleChange('addTagBombot', event.target.value)\n }\n />\n {messageAddTag && (\n

{messageAddTag}

\n )}\n
\n handleSubmitAddTag()}\n disabled={loadingImport ? true : false}\n />\n
\n
\n
\n handleCloseInviteCodePopup()}\n >\n
\n {/*

\n Xác nhân\n

*/}\n

\n {t('update.delete_tag.desc')}?\n

\n
\n handleCloseConfirmDeleteTag()}\n />\n handleConfirmDeleteTag()}\n />\n
\n
\n \n handleCloseImport()}\n >\n
\n \n

\n {t('customer_management.import_customer.title')}\n

\n \n \n

{t('common.btn.download_template')}

\n
\n }\n backgroundColor=\"#FF8000\"\n color=\"white\"\n handleClickButton={() => handleDownloadExcel()}\n />\n \n

\n {t('customer_management.import_customer.description')}\n

\n
\n \n
\n {/* */}\n\n \n

\n {t('customer_management.import_customer.choose_option')}\n

\n handleChange('identification', data)}\n >\n }\n label=\"Conversation_ID\"\n />\n\n }\n label={t('customer_management.import_customer.uid')}\n />\n\n }\n label={t('customer_management.import_customer.phone')}\n />\n }\n label={t('customer_management.import_customer.name_gender')}\n />\n }\n label={t('customer_management.import_customer.name_phone')}\n />\n }\n label={t(\n 'customer_management.import_customer.name_last_inbox_time'\n )}\n />\n }\n label={t(\n 'customer_management.import_customer.name_last_customer_inbox_time'\n )}\n />\n \n
\n {loadingImport && (\n
\n \n

{t('update.import_customer.loading')}

\n
\n )}\n {!loadingImport && message && (\n \n {message}\n

\n )}\n
\n handleCloseImport()}\n disabled={loadingImport ? true : false}\n />\n handleSubmitImportExcel()}\n disabled={loadingImport ? true : false}\n />\n
\n
\n \n
\n

Fanpage

\n\n \n \n \n {/* thanh chọn fanpage */}\n {\n setSelectedPageId(data?.id || null)\n handleChangeFanpage('fanpage', data)\n }}\n getOptionLabel={(option) => option?.name || ''}\n value={fanpageSelected || null}\n renderInput={(params) => {\n console.log('params ==>', params)\n return (\n {\n console.log(\n 'event.target.value ==>',\n event.target.value\n )\n }\n // handleChangeFanpage('fanpage', event.target.value)\n }\n />\n )\n }}\n />\n\n {/* button quet khach hang */}\n
\n \n \n {t('common.btn.scan_customer')}\n

\n }\n backgroundColor=\"#05AE34\"\n color=\"white\"\n handleClickButton={() => handleSubmitOpenExtension()}\n />\n
\n
\n\n {/* \n Chọn fanpage\n */}\n {/* \n handleChangeFanpage(\"fanpage\", event.target.value)\n }\n >\n {(fanpageFull || []).map((item, idx) => {\n return (\n \n {item.name}\n \n );\n })}\n */}\n \n \n handleGetData(params)}\n getData={(params) => getCustomer(params)}\n getFanpage={getFanpage}\n data={data}\n fanpageSelected={fanpageSelected}\n detail={(item) => handleDetail(item)}\n edit={(item, params) => handleEdit(item, params)}\n handleExport={() => handleExport()}\n handleImport={() => handleImport()}\n handleFilter={(value) => handleFilter(value)}\n onCreate={(paramsFilter, rows, params, data) =>\n onCreate(paramsFilter, rows, params, data)\n }\n // openCreate={() => openCreate()}\n customerAll={customerAll}\n onCustomerCheck={onCustomerCheck}\n customerCheck={customerCheck}\n onCustomerCheckReset={onCustomerCheckReset}\n createCustomerSucss={createCustomerSucss}\n paramsFilter={paramsFilter}\n paramsPagination={(params) => handleParamsPagination(params)}\n />\n handleClosePoup()}>\n
\n

{`${\n isActions == types.ACTIONS.DETAIL\n ? t('update.cus_info.title_detail')\n : isActions == types.ACTIONS.FILTER\n ? t('customer_management.customer_filter.title')\n : t('update.cus_info.title_edit')\n }`}

\n \n \n handleChange('uid', event.target.value)}\n />\n \n handleChange('nameFacebook', event.target.value)\n }\n />\n \n \n \n \n \n \n {/* gioi tinh */}\n \n \n
\n {t('customer_management.list.gender')}\n
\n }\n style={{\n paddingTop: '6px',\n }}\n label={t('update.all')}\n disabled={\n isActions == types.ACTIONS.DETAIL ||\n isActions == types.ACTIONS.EDIT\n ? true\n : false\n }\n onChange={(event) => handleChange('gender', event.target.value)}\n />\n }\n label={t('update.gender.male')}\n disabled={\n isActions == types.ACTIONS.DETAIL ||\n isActions == types.ACTIONS.EDIT\n ? true\n : false\n }\n style={{\n paddingTop: '6px',\n }}\n onChange={(event) => handleChange('gender', event.target.value)}\n />\n }\n label={t('update.gender.female')}\n disabled={\n isActions == types.ACTIONS.DETAIL ||\n isActions == types.ACTIONS.EDIT\n ? true\n : false\n }\n style={{\n paddingTop: '6px',\n }}\n onChange={(event) => handleChange('gender', event.target.value)}\n />\n }\n label={t('update.gender.other')}\n disabled={\n isActions == types.ACTIONS.DETAIL ||\n isActions == types.ACTIONS.EDIT\n ? true\n : false\n }\n style={{\n paddingTop: '6px',\n }}\n onChange={(event) => handleChange('gender', event.target.value)}\n />\n
\n \n \n \n \n \n \n {t('customer_management.list.facebook_tag')}\n \n {/* {listTagFacebook.length > 0 ? (\n \n \n }\n label={\n \n }\n />\n {(listTagFacebook || []).map((item, idx) => {\n return (\n handleCheckedTagFacebook(item)}\n name={item.id}\n style={{ paddingTop: 0, paddingBottom: 0 }}\n disabled={\n isActions == types.ACTIONS.DETAIL ? true : false\n }\n />\n }\n label={\n 50\n ? `${item.name.slice(0, 50)}...`\n : item.name\n }\n />\n }\n />\n );\n })}\n \n ) : (\n {t(\"update.no_data\")}\n )} */}\n\n \n \n }\n label={\n \n }\n />,\n ...listTagFacebook.map((opt, index) => {\n return (\n \n \n handleCheckedTagFacebook(opt)\n }\n name={opt.id}\n style={{\n paddingTop: 0,\n paddingBottom: 0,\n }}\n // disabled={\n // isActions == types.ACTIONS.DETAIL\n // ? opt.checked\n // : false\n // }\n disabled={true}\n />\n \n }\n label={\n \n }\n />\n )\n }),\n ]}\n visibleItemsLength={50}\n containerHeight={'200px'}\n />\n \n\n {/* {listTagFacebook.length > 0 ? (\n \n \n }\n label={\n \n }\n />\n {(listTagFacebook || []).map((item, idx) => {\n const colorCode = getRandomTag(colorDir1)\n\n return (\n \n \n handleCheckedTagFacebook(item)\n }\n name={item.id}\n style={{ paddingTop: 0, paddingBottom: 0 }}\n // disabled={\n // isActions == types.ACTIONS.DETAIL\n // ? item.checked\n // : false\n // }\n disabled={true}\n />\n \n }\n label={\n \n }\n />\n )\n })}\n \n ) : (\n \n {t('update.no_data')}\n \n )} */}\n \n \n \n \n \n {t('customer_management.list.bombot_tag')}\n \n\n \n \n }\n label={\n \n }\n />,\n ...(listTagBombot || []).map((item, idx) => {\n return (\n
\n \n handleCheckedTagBombot(item)\n }\n name={item.id}\n style={{ paddingTop: 0, paddingBottom: 0 }}\n disabled={\n isActions == types.ACTIONS.DETAIL\n ? true\n : false\n }\n />\n }\n label={\n \n }\n />\n {isActions == types.ACTIONS.EDIT && (\n handleDeteleTag(item)}\n >\n \n \n )}\n
\n )\n }),\n ]}\n visibleItemsLength={50}\n containerHeight={'200px'}\n />\n
\n\n {/* {listTagBombot.length > 0 ? (\n \n \n }\n label={\n \n }\n />\n {(listTagBombot || []).map((item, idx) => {\n return (\n
\n handleCheckedTagBombot(item)}\n name={item.id}\n style={{ paddingTop: 0, paddingBottom: 0 }}\n disabled={\n isActions == types.ACTIONS.DETAIL\n ? true\n : false\n }\n />\n }\n label={\n \n }\n />\n {isActions == types.ACTIONS.EDIT && (\n handleDeteleTag(item)}\n >\n \n \n )}\n
\n )\n })}\n
\n ) : (\n \n {t('update.no_data')}\n \n )} */}\n\n {isActions == types.ACTIONS.EDIT && (\n
\n \n (e.target.style.backgroundColor = '#f0f0f0')\n }\n onMouseLeave={(e) =>\n (e.target.style.backgroundColor = 'white')\n }\n onClick={() => handleOpenAddTag()}\n >\n {t('update.action.add_tag')}\n \n
\n )}\n \n
\n
\n
\n \n {/* \n \n {\"Lưu ý: Tính năng đồng bộ tag fanpages chưa được hỗ trợ\"}\n
\n \n {t(\"common.btn.cancel\")}\n \n }\n color=\"white\"\n handleClickButton={() => handleClosePoup()}\n />\n {isActions != types.ACTIONS.DETAIL && (\n \n {t(\"common.btn.save\")}\n \n }\n color=\"white\"\n handleClickButton={() => handleSubmitActions()}\n />\n )}\n */}\n \n
\n \n {t('dashboard.sync_to_fanpage_not_supported')}\n \n
\n\n \n \n {t('common.btn.save')}\n \n }\n color=\"white\"\n backgroundColor=\"#05AE34\"\n className=\"btn--primary--filled mr-2\"\n handleClickButton={() => handleSubmitActions()}\n style={{\n minWidth: 'fit-content',\n }}\n />\n \n {t('common.btn.cancel')}\n \n }\n color=\"white\"\n handleClickButton={() => handleClosePoup()}\n style={{\n minWidth: 'fit-content',\n }}\n />\n \n
\n \n \n \n {importResult && }\n \n \n )\n}\n\nfunction InputComponent({ defaultValue, inputRef, ...props }) {\n const classes = useStyles()\n const [value, setValue] = React.useState(null)\n const handleChange = (event) => {\n setValue(event.target.value)\n if (props.onChange) {\n props.onChange(event)\n }\n }\n return (\n
\n \n {value != null && moment(value).format('DD/MM/YYYY')}\n
\n \n \n )\n}\n\nCustomerView.propTypes = {}\n\nCustomerView.defaultProps = {}\n\nexport default CustomerView\n","import { createSelector } from \"@reduxjs/toolkit\";\nexport const fanpage = (state) => state.fanpageReducer.fanpage;\n\nconst selectFanpage = (state) => state.fanpageReducer;\nexport const fanpageFull = createSelector(\n selectFanpage,\n (state) => state.fanpageFull\n);\n","import CustomerPage from \"./CustomerContainer\";\n\nexport default CustomerPage;\n","import { connect } from \"react-redux\";\nimport { withRouter } from 'react-router-dom';\nimport CustomerView from \"./CustomerView\";\nimport * as actionsFanpage from \"../Fanpage/FanpageActions\";\nimport * as actionsCustomer from \"./CustomerActions\";\nimport * as selectorsFanpage from \"../Fanpage/FanpageSelectors\";\nimport * as selectorsCustomer from \"./CustomerSelectors\";\nimport * as selectorsApp from \"../App/AppSelectors\";\nconst mapStateToProps = state => {\n return {\n fanpageFull: selectorsFanpage.fanpageFull(state),\n customer: selectorsCustomer.getCustomer(state),\n edit: selectorsCustomer.edit(state),\n detail: selectorsCustomer.getDetail(state),\n getListTagFacebook: selectorsCustomer.getListTagFacebook(state),\n getListTagBombot: selectorsCustomer.getListTagBombot(state),\n fanpageSelected: selectorsCustomer.fanpageSelected(state),\n tagFacebookSelectedAll: selectorsCustomer.tagFacebookSelectedAll(state),\n customerAll: selectorsCustomer.getCustomerAll(state),\n customerCheck: selectorsCustomer.customerCheck(state),\n loadingImport: selectorsCustomer.loadingImport(state),\n importSuccess: selectorsCustomer.importSuccess(state),\n createCustomerSucss: selectorsCustomer.createCustomerSucss(state),\n messageImport: selectorsCustomer.messageImport(state),\n loading: selectorsApp.loading(state),\n \n \n };\n};\n\nconst mapDispatchToProps = dispatch => ({\n getFanpage: (params) => dispatch(actionsFanpage.getFanpageFull(params)),\n getCustomer: (params) => dispatch(actionsCustomer.getCustomer(params)),\n resetCustomer: () => dispatch(actionsCustomer.resetCustomer()),\n getCustomerAll: (params) => dispatch(actionsCustomer.getCustomerAll(params)),\n onDetail: (params) => dispatch(actionsCustomer.detail(params)),\n onEdit: (params) => dispatch(actionsCustomer.edit(params)),\n onFanpageSelected: (params) => dispatch(actionsCustomer.fanpageSelected(params)),\n onTagFacebookSelectedAll: (params) => dispatch(actionsCustomer.tagFacebookSelectedAll(params)),\n onSelectTagFacebook: (params) => dispatch(actionsCustomer.selectTagFacebook(params)),\n onExport: (params) => dispatch(actionsCustomer.onExport(params)),\n fileUpload: (params) => dispatch(actionsCustomer.fileUpload(params)),\n downloadExcel: (params) => dispatch(actionsCustomer.downloadExcel(params)),\n onSubmitAddTag: (params) => dispatch(actionsCustomer.onSubmitAddTag(params)),\n onCreate: (paramsFilter, rows, params, data) => dispatch(actionsCustomer.onCreate(paramsFilter, rows, params, data)),\n onCustomerCheck: (params) => dispatch(actionsCustomer.onCustomerCheck(params)),\n onCustomerCheckReset: (params) => dispatch(actionsCustomer.onCustomerCheckReset(params)),\n});\n\nexport default withRouter(connect(mapStateToProps, mapDispatchToProps)(CustomerView));\n","import React, { useEffect, useState } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { pathKeys } from \"../constants\";\nimport _ from \"lodash\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport { useHistory } from \"react-router-dom\";\nimport Table from \"@material-ui/core/Table\";\nimport TableBody from \"@material-ui/core/TableBody\";\nimport TableCell from \"@material-ui/core/TableCell\";\nimport TableContainer from \"@material-ui/core/TableContainer\";\nimport TableHead from \"@material-ui/core/TableHead\";\nimport TablePagination from \"@material-ui/core/TablePagination\";\nimport TableRow from \"@material-ui/core/TableRow\";\nimport TableSortLabel from \"@material-ui/core/TableSortLabel\";\nimport Paper from \"@material-ui/core/Paper\";\nimport cn from \"classnames\";\nimport SearchIcon from \"@material-ui/icons/Search\";\nimport InputAdornment from \"@material-ui/core/InputAdornment\";\nimport moment from \"moment\";\nimport types from \"../constants/types\";\nimport ButtonComponent from \"./Button\";\nimport Pagination from \"@material-ui/lab/Pagination\";\nimport Flex from \"./Flex\";\nimport { Button, TextField } from \"@material-ui/core\";\nimport Tour from \"reactour\";\nimport {\n getIsGuideByKey,\n GUIDE_TYPE_ENUM,\n setIsGuideByKey\n} from \"utils/helper\";\nimport { useSelector } from \"react-redux\";\nimport { selectGuideListByKey } from \"stores/config/config.selector\";\nimport { useTranslation } from \"react-i18next\";\n\nconst headCells = [\n {\n id: \"ord_number_Fanpage\",\n numeric: true,\n disablePadding: true,\n label: \"fanpage_management.list.ord_number\",\n width: \"10%\" \n },\n {\n id: \"nameFanpage\",\n numeric: true,\n disablePadding: true,\n label: \"fanpage_management.list.page_name\",\n width: \"30%\"\n },\n {\n id: \"id\",\n numeric: true,\n disablePadding: true,\n label: \"fanpage_management.list.page_id\",\n width: \"20%\"\n },\n {\n id: \"time\",\n numeric: true,\n disablePadding: true,\n label: \"fanpage_management.list.last_update_time\",\n width: \"20%\"\n },\n {\n id: \"totalCus\",\n numeric: true,\n disablePadding: true,\n label: \"fanpage_management.list.amount_customer\",\n width: \"20%\"\n }\n];\n\nfunction EnhancedTableHead(props) {\n const { classes } = props;\n const { t } = useTranslation();\n return (\n \n \n {headCells.map((headCell) => (\n \n \n {t(headCell.label)}\n \n \n ))}\n \n \n );\n}\n\nEnhancedTableHead.propTypes = {\n classes: PropTypes.object.isRequired\n};\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n width: \"100%\",\n padding: \"15px 0px 15px 0px\"\n },\n paper: {\n width: \"100%\",\n marginBottom: theme.spacing(2)\n },\n table: {\n minWidth: \"100%\"\n },\n tableContainer: {\n maxHeight: \"calc(100vh - 200px)\", \n overflowY: \"auto\",\n overflowX: \"auto\" \n },\n noData: {\n color: \"rgba(0,0,0,.5)\",\n fontWeight: \"bold\",\n textAlign: \"center\",\n paddingBottom: 15\n },\n buttonFilter: {\n width: \"max-content\",\n marginLeft: \"7px\"\n },\n nameFanpage: {\n cursor: \"pointer\"\n }\n}));\n\n\nlet timeout = 0;\n\nexport default function EnhancedTable(props) {\n const { t } = useTranslation();\n\n const { data, handleGetData, getData, isPagination, isSearch, user } = props;\n const rows = (data && data?.content) || [];\n const classes = useStyles();\n\n const [page, setPage] = React.useState(0);\n const [dense, setDense] = React.useState(true);\n const [rowsPerPage, setRowsPerPage] = React.useState(types.PAGINATION.SIZE);\n const [search, setSearch] = useState(\"\");\n const history = useHistory();\n\n const tourOverview = useSelector(\n selectGuideListByKey(GUIDE_TYPE_ENUM.fanpage_manager)\n );\n const [tourConfig, setTourConfig] = useState(null);\n\n useEffect(() => {\n const params = {\n page: page,\n // size: rowsPerPage,\n size: 10,\n search: search ? search : undefined\n };\n getData(params);\n // }, [page, rowsPerPage, search]);\n }, [page, 10, search]);\n\n\n useEffect(() => {\n if (\n getIsGuideByKey(GUIDE_TYPE_ENUM.fanpage_manager) &&\n tourOverview?.length\n ) {\n setTourConfig(tourOverview);\n setIsGuideByKey(GUIDE_TYPE_ENUM.fanpage_manager);\n }\n }, [tourOverview]);\n\n // useEffect(() => {\n // handleSubmitSearch();\n // }, []);\n\n // const handleChangePage = (event, newPage) => {\n // setPage(newPage);\n // handleGetData({\n // page: newPage,\n // size: rowsPerPage,\n // search: search ? search : undefined,\n // sort: \"name,asc\"\n // });\n // };\n const handleChangePage = (event, newPage) => {\n setPage(newPage);\n handleGetData({\n page: newPage,\n size: rowsPerPage,\n search: search ? search : undefined,\n sort: \"nameText,asc\"\n });\n };\n\n const handleChangeRowsPerPage = (event) => {\n setRowsPerPage(parseInt(event.target.value, types.PAGINATION.SIZE));\n setPage(0);\n handleGetData({\n page: 0,\n size: parseInt(event.target.value, types.PAGINATION.SIZE),\n search: search ? search : undefined,\n sort: \"nameText,asc\"\n });\n };\n\n const handleChangeDense = (event) => {\n setDense(event.target.checked);\n };\n\n const handleSearch = (key, value) => {\n switch (key) {\n case \"search\":\n setSearch(value);\n break;\n default:\n break;\n }\n };\n\n const handleSubmitSearch = () => {\n const params = {\n page: 0,\n size: rowsPerPage,\n sort: \"nameText,asc\"\n };\n if (search) {\n params.search = `id|name==${search}`;\n }\n getData(params);\n };\n \n // const handleSubmitOpenExtension = () => {\n // window.open(\n // types.URL.FACEBOOK + `&token=${localStorage.getItem('token') || null}`,\n // '_blank'\n // )\n // }\n\n const handleSubmitOpenExtension = () => {\n let url =\n types.URL.FACEBOOK +\n `&token=${localStorage.getItem(\"token\") || null}` +\n \"&tab=scan\";\n\n window.open(url, \"_blank\");\n };\n\n const onKeyDown = (event) => {\n if (event.key === \"Enter\") {\n handleSubmitSearch();\n }\n };\n const handleChange = (event, value) => {\n setPage(value);\n handleGetData({\n page: value,\n size: rowsPerPage,\n search: search ? search : undefined,\n sort: \"nameText,asc\"\n });\n };\n\n const handleClickFanpage = (id) => {\n history.push({\n pathname: pathKeys.CUSTOMER,\n search: `?page=0&size=10&pageId=${id}&sort=createdAt%2Cdesc`\n });\n };\n return (\n <>\n \n {t(\"common.btn.close\")}\n \n }\n accentColor=\"#05ae34\"\n onRequestClose={() => setTourConfig(null)}\n />\n
\n \n \n setSearch(event.target.value)}\n placeholder={t(\"fanpage_management.search\")}\n style={{ width: 500 }}\n onKeyDown={onKeyDown}\n InputProps={{\n startAdornment: (\n \n \n \n )\n }}\n />\n \n {t(\"common.btn.search\")}\n \n }\n backgroundColor=\"#05AE34\"\n color=\"white\"\n handleClickButton={() => handleSubmitSearch()}\n style={{\n minWidth: \"fit-content\",\n padding: \"6px 16px\"\n }}\n />\n \n {/* handleSearch(\"search\", event.target.value)}\n startAdornment={\n \n \n \n }\n /> */}\n
\n \n \n {t(\"common.btn.scan_customer\")}\n

\n }\n backgroundColor=\"#05AE34\"\n color=\"white\"\n handleClickButton={() => handleSubmitOpenExtension()}\n />\n
\n
\n
\n
\n \n \n \n \n \n {(rows || []).map((row, index) => {\n return (\n handleClickFanpage(row.id)}\n >\n \n {page * rowsPerPage + index + 1}\n \n \n {row.name}\n \n \n {row.id}\n \n \n {moment(row.updatedAt).format(\"DD/MM/YYYY HH:mm\")}\n \n \n {row.totalCus}\n \n \n );\n })}\n \n \n \n {rows.length == 0 && (\n

{t(\"update.no_data\")}

\n )}\n {isPagination && rows.length > 0 && (\n <>\n \n handleChange(page - 1)}\n />\n \n )}\n \n {/* {rows.length > 0 && (\n }\n label=\"Thay đổi khoảng cách hiển thị gần\"\n />\n )} */}\n
\n \n );\n}\n\nEnhancedTable.propTypes = {\n data: PropTypes.array,\n search: PropTypes.string,\n isSearch: PropTypes.bool,\n isPagination: PropTypes.bool,\n getData: PropTypes.func,\n handleGetData: PropTypes.func\n};\n\nEnhancedTable.defaultProps = {\n isPagination: true,\n isSearch: true,\n handleGetData: (f) => f,\n getData: (f) => f,\n data: [],\n search: null\n};\n","import React, { useEffect, useState } from \"react\";\nimport MainLayout from \"../MainLayout\";\nimport ListFanpageComponent from \"../../components/ListFanpage\";\nimport Loading from \"../../components/Loading\";\nimport MessengerButton from \"./../Home/items/MessengerButton\";\n\nconst FanpageView = (props) => {\n const { getFanpage, fanpage, user, loading } = props;\n const [data, setData] = useState([]);\n\n useEffect(() => {\n setData(fanpage);\n }, [fanpage]);\n\n const handleGetData = (params) => {\n getFanpage(params);\n };\n\n return (\n \n {loading && }\n handleGetData(params)}\n getData={(params) => getFanpage(params)}\n data={data}\n user={user}\n />\n \n \n );\n};\n\nFanpageView.propTypes = {};\n\nFanpageView.defaultProps = {};\n\nexport default FanpageView;\n","import FanpagePage from \"./FanpageContainer\";\n\nexport default FanpagePage;\n","import { connect } from \"react-redux\";\nimport { withRouter } from 'react-router-dom';\nimport FanpageView from \"./FanpageView\";\nimport * as actionsFanpage from \"./FanpageActions\";\nimport * as selectorsFanpage from \"./FanpageSelectors\";\nimport * as selectorsApp from \"../App/AppSelectors\";\n\nconst mapStateToProps = state => {\n return {\n fanpage: selectorsFanpage.fanpage(state),\n user: selectorsApp.user(state),\n loading: selectorsApp.loading(state),\n };\n};\n\nconst mapDispatchToProps = dispatch => ({\n getFanpage: (params) => dispatch(actionsFanpage.getFanpage(params))\n});\n\nexport default withRouter(connect(mapStateToProps, mapDispatchToProps)(FanpageView));\n","import HomePage from \"./HomeContainer\";\n\nexport default HomePage;\n","import React, { useRef, useEffect, useState, useMemo } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport _ from \"lodash\";\nimport { pathKeys } from \"../../constants\";\nimport FormDialog from \"../../components/FormDialog\";\nimport ButtonComponent from \"../../components/Button\";\nimport types from \"../../constants/types\";\nimport IMAGES from \"../../images\";\nimport Loading from \"../../components/Loading\";\nimport { useTranslation } from \"react-i18next\";\nimport i18n from \"utils/i18n\";\nconst useStyles = makeStyles((theme) => ({\n root: {\n background: \"no-repeat top\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n minHeight: \"100vh\",\n backgroundSize: \"cover\"\n },\n wrapperLogin: {\n width: 445,\n minHeight: 500,\n border: \"1px solid #f0f0f0\",\n background: \"#F7FAFC\",\n borderRadius: \".375rem\"\n },\n wrapBox: {\n textAlign: \"center\",\n padding: 30\n },\n error: {\n color: \"red\",\n textAlign: \"center\"\n }\n}));\nconst InvitePageView = (props) => {\n const {\n confirmInviteCode,\n user,\n onGetUser,\n login,\n statusConfirmInviteCode,\n loading\n } = props;\n const classes = useStyles();\n const history = useHistory();\n const [inviteCodeData, setInviteCodeData] = useState(\"\");\n const [isInviteCodePopup, setIsInviteCodePopup] = useState(false);\n const { t } = useTranslation();\n useEffect(() => {\n if (statusConfirmInviteCode) {\n history.push(pathKeys.HOME);\n }\n }, [statusConfirmInviteCode]);\n\n useEffect(() => {\n const uid = localStorage.getItem(\"id\");\n if (uid) {\n onGetUser(uid);\n }\n }, [onGetUser]);\n\n useEffect(() => {\n const url_string = window.location.href; //window.location.href\n const url = new URL(url_string);\n const ref = url.searchParams.get(\"ref\");\n const code = url.searchParams.get(\"code\");\n const pathname = url.pathname;\n console.log(\"code\", code);\n setInviteCodeData(code);\n }, []);\n\n const handleCloseInviteCodePopup = () => {\n // setIsInviteCodePopup(false);\n };\n const handleSubmitInviteCode = () => {\n // onGetInviteCode();\n // setIsInviteCodePopup(true);\n };\n\n const handleSubmitButton = async () => {\n if (_.isEmpty(user)) {\n login();\n } else {\n await confirmInviteCode(inviteCodeData);\n const uid = localStorage.getItem(\"id\");\n if (uid) {\n onGetUser(uid);\n }\n }\n // onGetInviteCode();\n // setIsInviteCodePopup(true);\n };\n\n const background = useMemo(() => {\n return i18n.language?.substr(0, 2) === \"vi\"\n ? IMAGES.BACKGROUND\n : IMAGES.BACKGROUND_INTE;\n }, [i18n.language]);\n\n return (\n \n {loading && }\n
\n handleCloseInviteCodePopup()}\n >\n
\n

{t(\"update.invite\")}

\n {!statusConfirmInviteCode && statusConfirmInviteCode != null && (\n

{t(\"update.error_invite\")}

\n )}\n \n handleSubmitButton()}\n />\n
\n
\n \n \n \n );\n};\n\nInvitePageView.propTypes = {};\n\nInvitePageView.defaultProps = {};\n\nexport default InvitePageView;\n","import axiosClient from \"./axiosClient\";\nimport urlApi from \"./url\";\nconst inviteApi = {\n confirmInvite: (code) => {\n return axiosClient.get(`${urlApi.user.confirmInviteCode}/${code}`);\n },\n onUnlink: (params) => {\n return axiosClient.delete(`${urlApi.user.unlink}/${params.id}`);\n },\n};\n\nexport default inviteApi;\n","import { createSlice } from \"@reduxjs/toolkit\";\nimport initialState from \"../../configs/redux/initialState\";\n\nconst inviteReducer = createSlice({\n name: \"inviteReducer\",\n initialState: initialState.inviteReducer,\n reducers: {\n \n setConfirmInviteCode: (state, action) => {\n state.confirmInviteCode = action.payload;\n },\n }\n});\n\nexport const {\n setConfirmInviteCode\n} = inviteReducer.actions;\n\nexport default inviteReducer.reducer;\n","// import { useHistory } from \"react-router-dom\";\nimport appApi from \"../../api/appApi\";\nimport { setLoading, setShare, setUser } from \"./AppReducer\";\nimport homeApi from \"api/homeApi\";\n// const history = useHistory();\nexport function onGetUser(uid) {\n return (dispatch) => {\n return appApi.getUser(uid).then(\n (res) => {\n dispatch(setUser(res));\n // history.push(pathKeys.HOME);\n },\n (error) => {\n throw error;\n }\n );\n };\n}\n\nexport function onWhatYouNeed() {\n const params = {\n fields: \"user,users,package,history,version,versions,business,province\",\n };\n return (dispatch) => {\n dispatch(setLoading(true));\n return homeApi.getWhatYouNeed(params).then(\n (res) => {\n dispatch(setShare(res));\n dispatch(setLoading(false));\n },\n (error) => {\n dispatch(setLoading(false));\n }\n );\n };\n}\n","\n\nimport { createSelector } from \"@reduxjs/toolkit\";\nexport const confirmInviteCode = state => state.inviteReducer.confirmInviteCode;\n\n","import InvitePage from \"./InviteContainer\";\n\nexport default InvitePage;\n","import { connect } from \"react-redux\";\nimport { withRouter } from 'react-router-dom';\nimport InvitePageView from \"./InviteView\";\nimport * as actionsInvite from \"./InviteActions\";\nimport * as selectorsApp from \"../App/AppSelectors\";\nimport * as actionsApp from \"../App/AppActions\";\nimport * as actionsLogin from \"../Login/LoginActions\";\nimport * as selectorsInvite from \"./InviteSelectors\";\nconst mapStateToProps = state => {\n return {\n user: selectorsApp.user(state),\n statusConfirmInviteCode: selectorsInvite.confirmInviteCode(state),\n loading: selectorsApp.loading(state),\n };\n};\n\nconst mapDispatchToProps = dispatch => ({\n login: () => dispatch(actionsLogin.login()),\n confirmInviteCode: (params) => dispatch(actionsInvite.confirmInviteCode(params)),\n onGetUser: (uid) => dispatch(actionsApp.onGetUser(uid)),\n});\n\nexport default withRouter(connect(mapStateToProps, mapDispatchToProps)(InvitePageView));\n","import inviteApi from \"../../api/inviteApi\";\nimport { setConfirmInviteCode } from \"./InviteReducer\";\nimport { setLoading } from \"../App/AppReducer\";\nimport _ from \"lodash\";\n\nexport function confirmInviteCode(code) {\n return (dispatch) => {\n dispatch(setLoading(true));\n return inviteApi.confirmInvite(code).then(\n (res) => {\n dispatch(setConfirmInviteCode(res));\n dispatch(setLoading(false));\n },\n (error) => {\n dispatch(setConfirmInviteCode(false));\n dispatch(setLoading(false));\n }\n );\n };\n}\n","import React, { useEffect, useMemo, useState } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport IMAGES from \"../../images\";\nimport Container from \"@material-ui/core/Container\";\nimport ButtonComponent from \"../../components/Button\";\nimport Input from \"@material-ui/core/Input\";\nimport InputAdornment from \"@material-ui/core/InputAdornment\";\nimport FormControl from \"@material-ui/core/FormControl\";\nimport EmailIcon from \"@material-ui/icons/Email\";\nimport LockIcon from \"@material-ui/icons/Lock\";\nimport FacebookIcon from \"@material-ui/icons/Facebook\";\nimport { pathKeys } from \"../../constants\";\nimport FormDialog from \"../../components/FormDialog\";\nimport Loading from \"../../components/Loading\";\nimport { useTranslation } from \"react-i18next\";\nimport Flex from \"components/Flex\";\nimport ChangeLanguage from \"components/ChangeLanguage\";\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n minHeight: \"100vh\",\n backgroundSize: \"cover\",\n background: \"no-repeat top\",\n position: \"relative\",\n backgroundColor: \"#1BBB51\",\n [theme.breakpoints.down(\"md\")]: {\n backgroundColor: \"#ffffff\"\n }\n },\n paper: {\n padding: theme.spacing(2),\n textAlign: \"center\",\n color: theme.palette.text.secondary\n },\n\n wrapperLogin: {\n width: \"100%\",\n maxWidth: \"500px\",\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\",\n zIndex: 2,\n [theme.breakpoints.down(\"md\")]: {\n display: \"none\"\n }\n },\n\n mobileWrapperLogin: {\n width: \"100%\",\n maxWidth: \"500px\",\n position: \"absolute\",\n paddingLeft: \"16px\",\n paddingRight: \"16px\",\n top: \"40%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\",\n zIndex: 2,\n display: \"none\",\n [theme.breakpoints.down(\"md\")]: {\n display: \"block\"\n }\n },\n\n whiteLogo: {\n width: \"auto\",\n height: \"100%\",\n transform: \"rotate(20deg)\",\n [theme.breakpoints.down(\"md\")]: {\n display: \"none\"\n }\n },\n\n top: {\n borderBottom: \"1px solid #f0f0f0\",\n padding: \"1.25rem 0 3rem 0\",\n textAlign: \"center\"\n },\n bottomTitle: {\n marginTop: 90,\n marginBottom: 0,\n fontSize: 21,\n color: \"#8898aa\",\n textAlign: \"center\",\n color: \"rgba(41, 39, 39, 0.40)\",\n fontWeight: 400,\n lineHeight: \"130%\",\n letterSpacing: \"-0.18px\",\n textAlign: \"center\"\n },\n textTitle: {\n marginTop: 8,\n marginBottom: 8,\n fontSize: 14,\n color: \"#8898aa\",\n textAlign: \"center\",\n color: \"#292727\",\n fontWeight: 400,\n fontSize: 16,\n lineHeight: \"130%\",\n letterSpacing: \"-0.18px\",\n textAlign: \"center\"\n },\n appTitle: {\n color: \"#292727\",\n fontSize: 24,\n fontWeight: 600,\n lineHeight: \"130%\",\n letterSpacing: \"-0.24px\",\n textAlign: \"center\"\n },\n botIcon: {\n width: \"200px\",\n height: \"auto\",\n display: \"block\",\n margin: \"0 auto\",\n marginTop: 4,\n marginBottom: 12\n },\n form: {\n width: \"100%\"\n },\n input: {\n marginBottom: 20,\n fontSize: 18\n },\n button: {\n marginTop: 40\n },\n facebook: {\n marginBottom: 50,\n borderRadius: \"20px !important\",\n background: \"#EEE\",\n fontSize: 16,\n \"& $iconFacebook\": {\n color: \"#3B5998\"\n },\n \"&:hover\": {\n background: \"#3B5998\",\n color: \"white\",\n \"& $iconFacebook\": {\n color: \"#ffffff\"\n }\n }\n },\n iconFacebook: {\n marginRight: 5,\n display: \"flex\",\n color: \"#3B5998\"\n },\n error: {\n color: \"red\",\n textAlign: \"center\",\n marginBottom: 0,\n marginTop: 12\n },\n forgotPassword: {\n marginTop: 12,\n fontSize: 14,\n color: \"#292727\",\n textAlign: \"center\",\n textDecoration: \"underline\",\n \"&:hover\": {\n color: \"#29272799\",\n cursor: \"pointer\",\n textDecoration: \"underline\"\n }\n },\n wrapChangePassword: {\n padding: \"0px 15px 40px 15px\"\n },\n titleChangePassword: {\n textAlign: \"center\",\n marginTop: 30,\n marginBottom: 15,\n color: \"#05AE34\"\n },\n inputForgotPassword: {\n width: \"300px !important\",\n marginRight: 15,\n position: \"relative\",\n top: 10\n },\n wrapForgotPasswordInput: {\n textAlign: \"center\"\n },\n success: {\n color: \"#05AE34\",\n textAlign: \"center\"\n },\n banner: {\n position: \"fixed\",\n top: 30\n }\n}));\n\nconst LoginView = (props) => {\n const {\n login,\n getAccount,\n handleSubmitEmail,\n statusLogined,\n onSubmitForgotPassword,\n forgotPassword,\n loading\n } = props;\n console.log(\"🚀 ~ LoginView ~ props:\", props)\n const classes = useStyles();\n const history = useHistory();\n const [email, setEmail] = useState(\"\");\n const [password, setPassword] = useState(\"\");\n const [isForgotPasswordPopup, setIsForgotPasswordPopup] = useState(false);\n const [emailForgotPassword, setEmailForgotPassword] = useState(\"\");\n const { t, i18n } = useTranslation();\n\n const token = localStorage.getItem(\"token\");\n useEffect(() => {\n if (token) {\n history.push(pathKeys.HOME);\n } else return;\n }, [token]);\n\n useEffect(() => {\n if (forgotPassword) {\n setEmailForgotPassword(\"\");\n }\n }, [forgotPassword]);\n\n const handleClickButtonFacebook = async () => {\n localStorage.removeItem(\"alertGiftBox\");\n const searchParam = new URLSearchParams(window.location.search);\n const ref = searchParam.get(\"ref\");\n login(ref);\n };\n \n const handleChange = (key, value) => {\n switch (key) {\n case \"email\":\n setEmail(value);\n break;\n case \"password\":\n setPassword(value);\n break;\n default:\n break;\n }\n };\n\n const handleSubmit = () => {\n const searchParam = new URLSearchParams(window.location.search);\n const ref = searchParam.get(\"ref\");\n const payload = { email, password };\n if (ref) payload.ref = ref;\n\n handleSubmitEmail(payload);\n };\n\n const handleForgotPasswordPopup = () => {\n setIsForgotPasswordPopup(true);\n };\n\n const handleCloseForgotPasswordPopup = () => {\n setIsForgotPasswordPopup(false);\n };\n const handleForgotPassword = () => {\n if (emailForgotPassword) {\n const params = {\n email: emailForgotPassword\n };\n onSubmitForgotPassword(params);\n }\n };\n\n const handleChangeForgotPassword = (key, value) => {\n switch (key) {\n case \"emailForgotPassword\":\n setEmailForgotPassword(value);\n break;\n\n default:\n break;\n }\n };\n\n const background = useMemo(() => {\n return i18n.language?.substr(0, 2) === \"vi\"\n ? IMAGES.BACKGROUND\n : IMAGES.BACKGROUND_INTE;\n }, [i18n.language]);\n\n return (\n \n {loading && }\n \n \n \n\n {/* man hinh mobile, tablet */}\n
\n \n \n
\n

{t(\"login.welcom_to\")}

\n

\n {t(\"login.bulk_messaging_application\")}\n

\n \n \n \n handleChange(\"email\", event.target.value)\n }\n startAdornment={\n \n \n \n }\n />\n \n handleChange(\"password\", event.target.value)\n }\n startAdornment={\n \n \n \n }\n />\n handleForgotPasswordPopup()}\n >\n {t(\"login.forgot_password.title\")}\n \n\n handleSubmit()}\n />\n\n \n {t(\"login.or\")}\n

\n\n handleClickButtonFacebook()}\n icon={\n \n \n \n }\n />\n\n {!statusLogined && statusLogined != null && (\n

{t(\"noti.login_error\")}

\n )}\n
\n
\n
\n \n \n \n
\n
\n\n {/* man hinh pc */}\n \n
\n \n\n
\n \n \n
\n

{t(\"login.welcom_to\")}

\n

\n {t(\"login.bulk_messaging_application\")}\n

\n \n \n \n handleChange(\"email\", event.target.value)\n }\n startAdornment={\n \n \n \n }\n />\n \n handleChange(\"password\", event.target.value)\n }\n startAdornment={\n \n \n \n }\n />\n handleForgotPasswordPopup()}\n >\n {t(\"login.forgot_password.title\")}\n \n\n handleSubmit()}\n />\n\n \n {t(\"login.or\")}\n

\n\n handleClickButtonFacebook()}\n icon={\n \n \n \n }\n />\n\n {!statusLogined && statusLogined != null && (\n

{t(\"noti.login_error\")}

\n )}\n
\n
\n
\n \n \n \n
\n
\n
\n \n\n handleCloseForgotPasswordPopup()}\n >\n
\n

\n {t(\"login.forgot_password.title\")}\n

\n

\n {t(\"login.forgot_password.description\")}\n

\n {forgotPassword != null && !forgotPassword && (\n

{t(\"noti.email_not_exist\")}

\n )}\n {forgotPassword != null && forgotPassword && (\n

{t(\"noti.reset_password\")}

\n )}\n
\n \n handleChangeForgotPassword(\n \"emailForgotPassword\",\n event.target.value\n )\n }\n startAdornment={\n \n \n \n }\n />\n handleForgotPassword()}\n />\n
\n
\n \n \n );\n};\n\nLoginView.propTypes = {};\n\nLoginView.defaultProps = {};\n\nexport default LoginView;\n","import LoginPage from \"./LoginContainer\";\n\nexport default LoginPage;\n","import { connect } from \"react-redux\";\nimport { withRouter } from \"react-router-dom\";\nimport LoginView from \"./LoginView\";\nimport * as actionsLogin from \"./LoginActions\";\nimport * as selectorsLogin from \"./LoginSelectors\";\nimport * as selectorsApp from \"../App/AppSelectors\";\nconst mapStateToProps = (state) => {\n return {\n getAccount: selectorsLogin.getAccount(state),\n statusLogined: selectorsLogin.statusLogined(state),\n forgotPassword: selectorsLogin.forgotPassword(state),\n loading: selectorsApp.loading(state),\n };\n};\n\nconst mapDispatchToProps = (dispatch) => ({\n login: (ref) => dispatch(actionsLogin.login(ref)),\n handleSubmitEmail: (params) => dispatch(actionsLogin.onSubmitEmail(params)),\n onSubmitForgotPassword: (params) =>\n dispatch(actionsLogin.onSubmitForgotPassword(params)),\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(LoginView);\n","import React, { useEffect } from 'react'\nimport { showError, showSuccess } from '../../stores/alert/slice.alert'\nimport firebase from 'firebase'\nimport { useDispatch, useSelector } from 'react-redux'\nimport { vapidKey } from '../../constants/firebase'\nimport { useHistory } from 'react-router-dom/cjs/react-router-dom.min'\nimport { pathKeys } from '../../constants'\nimport { accountApi } from '../../api/accountApi'\nimport { selectUser } from '../App/AppSelectors'\n\nconst NotiPermission = () => {\n const messaging = firebase.messaging()\n\n const history = useHistory()\n\n const user = useSelector(selectUser)\n\n const dispatch = useDispatch()\n\n const requestForToken = () => {\n return messaging\n .getToken(messaging, {\n vapidKey: vapidKey,\n })\n .then((currentToken) => {\n return currentToken\n })\n }\n\n function getUserIdFromURL() {\n const url = new URL(window.location.href)\n const params = new URLSearchParams(url.search)\n return params.get('userId')\n }\n\n useEffect(() => {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker\n .register('/firebase-messaging-sw.js')\n .then((registration) => {\n return requestForToken()\n })\n .then((notiToken) => {\n const userId = getUserIdFromURL()\n\n if (!userId) return\n\n const payload = {\n userId,\n token: notiToken,\n }\n\n return accountApi.updateNotiPermissionToken(payload)\n })\n .then((res) => {\n dispatch(showSuccess('Get Notification Permision Successfully'))\n\n history.push(pathKeys.HOME)\n })\n .catch((error) => {\n if (\n error.message ===\n \"Failed to execute 'subscribe' on 'PushManager': Subscription failed - no active Service Worker\"\n ) {\n window.location.reload()\n }\n console.error('Service Worker registration failed:', error)\n\n dispatch(showError('Cannot Get Notification Permision Successfully'))\n })\n }\n }, [])\n\n return <>\n}\n\nexport default NotiPermission\n","import { createSelector } from '@reduxjs/toolkit'\nimport _ from 'lodash'\nexport const customer = (state) => state.customerReducer.customer\nexport const edit = (state) => state.customerReducer.edit\nexport const detail = (state) => state.customerReducer.detail\nexport const fanpageSelected = (state) => state.customerReducer.fanpageSelected\nexport const tagFacebookSelectedAll = (state) =>\n state.customerReducer.tagFacebookSelectedAll\nexport const fanpageFull = (state) => state.fanpageReducer.fanpageFull\nexport const loadingImport = (state) => state.customerReducer.loadingImport\nexport const importSuccess = (state) => state.customerReducer.importSuccess\nexport const fanPageDetail = (state) => state.customerReducer.fanPageDetail\nexport const customerAll = (state) => state.customerReducer.customerAll\nexport const customerCheck = (state) => state.customerReducer.customerCheck\nexport const selectImportResult = (state) => state.customerReducer.importResult\nexport const createCustomerSucss = (state) =>\n state.customerReducer.createCustomerSucss\nexport const messageImport = (state) => state.customerReducer.messageImport\n\nexport const getCustomerAll = createSelector([customerAll], (customerAll) => {\n const items = []\n if (customerAll && customerAll.length > 0) {\n customerAll.map((item) => {\n items.push({\n ...item,\n checked: true,\n })\n })\n }\n return items\n})\n\nexport const getCustomer = createSelector(\n [customer, customerCheck],\n (customer, customerCheck) => {\n const items = []\n if (customer && customer.content && customer.content.length > 0) {\n ;(customer.content || []).map((item) => {\n let obj = _.find(customerCheck, function (obj) {\n return obj.id == item.id\n })\n if (obj) {\n items.push({\n ...item,\n checked: false,\n })\n } else {\n items.push({\n ...item,\n checked: true,\n })\n }\n })\n }\n return { ...customer, content: items }\n }\n)\n\nexport const getListTagFacebook = createSelector(\n [fanpageSelected, detail],\n (fanpageSelectedData, detail) => {\n const items = []\n if (\n fanpageSelectedData &&\n fanpageSelectedData.fbTags &&\n fanpageSelectedData.fbTags.length > 0\n ) {\n let data\n data = [\n {\n id: 'not_in_tag',\n name: 'Không có tag',\n color: '999',\n },\n ...fanpageSelectedData.fbTags,\n ]\n ;(data || []).map((item) => {\n let obj = _.find(detail.fbTags, function (obj) {\n return obj == item.id\n })\n if (obj) {\n items.push({\n ...item,\n checked: true,\n })\n } else {\n items.push({\n ...item,\n checked: false,\n })\n }\n })\n }\n\n return items\n }\n)\n\nexport const getListTagBombot = createSelector(\n [fanpageSelected, detail, fanPageDetail],\n (fanpageSelectedData, detail, fanPageDetail) => {\n const items = []\n if (\n fanpageSelectedData &&\n fanpageSelectedData.bombotTags &&\n fanpageSelectedData.bombotTags.length > 0\n ) {\n let data\n if (\n fanPageDetail &&\n fanPageDetail.bombotTags &&\n fanPageDetail.bombotTags.length > 0\n ) {\n data = [\n {\n id: 'not_in_tag',\n name: 'Không có tag',\n color: '999',\n },\n ...fanPageDetail.bombotTags,\n ]\n } else {\n data = [\n {\n id: 'not_in_tag',\n name: 'Không có tag',\n color: '999',\n },\n ...fanpageSelectedData.bombotTags,\n ]\n }\n ;(data || []).map((item) => {\n let obj = _.find(detail.bombotTags, function (obj) {\n return obj == item.id\n })\n if (obj) {\n items.push({\n ...item,\n checked: true,\n })\n } else {\n items.push({\n ...item,\n checked: false,\n })\n }\n })\n }\n return items\n }\n)\n\nexport const getDetail = createSelector([detail], (data) => {\n let fbTags = []\n let bombotTags = []\n if (data && data.fbTags && data.fbTags.length > 0) {\n ;(data.fbTags || []).map((item) => {\n fbTags.push({\n item,\n checked: true,\n })\n })\n }\n if (data && data.bombotTags && data.bombotTags.length > 0) {\n ;(data.bombotTags || []).map((item) => {\n bombotTags.push({\n item,\n checked: true,\n })\n })\n }\n\n return { ...data, fbTags: fbTags, bombotTags: bombotTags }\n})\n\n//////// tuan anh code\n\nconst selectCustomer = (state) => state.customerReducer\n\nexport const selectFilterCus = createSelector(\n selectCustomer,\n (state) => state.filter\n)\n\nexport const selectSearchUidName = createSelector(\n selectCustomer,\n (state) => state.searchUidName\n)\n\nexport const selectFanpageSelected = createSelector(\n selectCustomer,\n (state) => state.fanpageSelected\n)\n\nexport const selectBombotTags = createSelector(\n selectCustomer,\n (state) => state.fanpageSelected?.bombotTags || []\n)\n\nexport const selectAddTagLoading = createSelector(\n selectCustomer,\n (state) => state.loading_add_tag\n)\nexport const selectIsShowModal = createSelector(\n selectCustomer,\n (state) => state.is_show_modal_add\n)\n\nexport const selectTagSelected = createSelector(\n selectCustomer,\n (state) => state.tagsSelected\n)\n\nexport const selectTagsPageSelected = createSelector(\n fanpageSelected,\n (state) => {\n const fbTags = state?.fbTags\n const bombotTags = state?.bombotTags\n\n const fbTagsObj = {}\n const bombotTagsObj = {}\n\n if (fbTags) {\n fbTags.forEach((tag) => (fbTagsObj[tag.id] = tag))\n }\n if (bombotTags) {\n bombotTags.forEach((tag) => (bombotTagsObj[tag.id] = tag))\n }\n\n return { fbTags: fbTagsObj, bombotTags: bombotTagsObj }\n }\n)\n","import { createSlice } from '@reduxjs/toolkit'\nimport initialState from '../../configs/redux/initialState'\nimport _ from 'lodash'\nconst customerReducer = createSlice({\n name: \"customer\",\n initialState: {\n ...initialState.customerReducer,\n filter: {\n search_obj: {},\n search_string: \"\",\n search_arr: []\n },\n loading_add_tag: false,\n is_show_modal_add: false,\n tagsSelected: [],\n importResult: null,\n\n searchUidName: \"\"\n },\n reducers: {\n setCustomer: (state, action) => {\n state.customer = action.payload;\n },\n // setEdit: (state, action) => {\n // state.edit = action.payload;\n // },\n setDetail: (state, action) => {\n state.detail = action.payload;\n },\n setFanpageSelected: (state, action) => {\n state.fanpageSelected = action.payload;\n },\n setTagFacebookSelectedAll: (state, action) => {\n state.tagFacebookSelectedAll = action.payload;\n },\n setSelectTagFacebook: (state, action) => {\n state.selectTagFacebook = action.payload;\n },\n setLoadingImport: (state, action) => {\n state.loadingImport = action.payload;\n },\n setImportSuccess: (state, action) => {\n state.importSuccess = action.payload;\n },\n setFanPageDetail: (state, action) => {\n state.fanPageDetail = action.payload;\n },\n setCustomerAll: (state, action) => {\n state.customerAll = action.payload;\n },\n setCustomerCheck: (state, action) => {\n if (!action.payload.checked) {\n _.remove(state.customerCheck, function (n) {\n return n.id == action.payload.id;\n });\n state.customerCheck = _.concat(...state.customerCheck);\n } else {\n state.customerCheck = _.concat(...state.customerCheck, action.payload);\n }\n },\n setRestCustomerCheck: (state, action) => {\n state.customerCheck = action.payload;\n },\n setCreateCustomerSucss: (state, action) => {\n state.createCustomerSucss = action.payload;\n },\n setMessageImport: (state, action) => {\n state.messageImport = action.payload;\n },\n setFilter: (state, action) => {\n state.filter = {\n ...state.filter,\n search_arr: JSON.parse(JSON.stringify(action.payload.search_arr)), // Deep copy\n search_string: action.payload.search_string\n };\n },\n setSearchUidName: (state, action) => {\n state.searchUidName = action.payload;\n },\n setSearchTagName: (state, action) => {\n state.searchTagName = action.payload;\n },\n startAddTags: (state, action) => {\n state.error = null;\n state.loading_add_tag = true;\n },\n addTagsSuccess: (state, action) => {\n state.loading_add_tag = false;\n state.fanpageSelected = {\n ...state.fanpageSelected,\n ...action.payload\n };\n state.is_show_modal_add = false;\n },\n addTagsFailed: (state, action) => {\n state.loading_add_tag = false;\n state.error = action.payload;\n },\n toggleModalAdd: (state) => {\n state.is_show_modal_add = !state.is_show_modal_add;\n },\n importResult: (state, action) => {\n state.importResult = action.payload;\n },\n clearImportResult: (state) => {\n state.importResult = null;\n },\n setTagSelected: (state, action) => {\n state.tagsSelected = action.payload;\n }\n }\n});\n\nexport const {\n setCustomer,\n setDetail,\n setEdit,\n setFanpageSelected,\n setTagFacebookSelectedAll,\n setSelectTagFacebook,\n setLoadingImport,\n setImportSuccess,\n setFanPageDetail,\n setCustomerAll,\n setCustomerCheck,\n setRestCustomerCheck,\n setCreateCustomerSucss,\n setMessageImport,\n setFilter,\n setSearchUidName,\n startAddTags,\n addTagsSuccess,\n addTagsFailed,\n toggleModalAdd,\n setTagSelected,\n importResult,\n clearImportResult,\n} = customerReducer.actions\n\nexport default customerReducer.reducer\n","import React from 'react';\n\nconst CoppyIcon = ({ height, width }) => {\n return (\n \n \n \n \n \n );\n};\n\nexport default CoppyIcon;\n","import React from 'react'\nimport { useTranslation } from 'react-i18next'\n\n// Hàm tính khoảng thời gian còn lại\nconst calculateTimeRemaining = (sendTime) => {\n const now = new Date()\n const targetTime = new Date(sendTime)\n const diff = targetTime - now\n\n if (diff <= 0) return null // Không cần tính khi đã trễ\n\n const hours = Math.floor(diff / (1000 * 60 * 60))\n const minutes = Math.floor((diff % (1000 * 60 * 60)) / (1000 * 60))\n\n if (hours > 0) {\n return `${hours} hour(s) ${minutes} minute(s)`\n } else {\n return `${minutes} minute(s)`\n }\n}\n\n// Hàm xác định trạng thái thời gian\nconst determineTimeStatus = (sendTime) => {\n if (!sendTime) return 'unscheduled' // Không có thời gian gửi\n const now = new Date()\n const targetTime = new Date(sendTime)\n\n if (targetTime < now) {\n return 'overdue' // Trễ lịch\n } else if ((targetTime - now) / (1000 * 60) <= 30) {\n return 'upcoming' // Sắp tới\n } else {\n return 'scheduled' // Lịch gửi\n }\n}\n\n// Hàm xác định màu sắc dựa trên trạng thái\nconst getStatusColors = (status) => {\n switch (status) {\n case 'overdue':\n return { backgroundColor: '#ffcccc', textColor: '#ff0000' } // Đỏ nhạt\n case 'upcoming':\n return { backgroundColor: '#fff4cc', textColor: '#ffa500' } // Cam nhạt\n case 'scheduled':\n return { backgroundColor: '#ccffcc', textColor: '#008000' } // Xanh lá nhạt\n case 'unscheduled':\n return { backgroundColor: '#e0e0e0', textColor: '#808080' } // Xám\n default:\n return { backgroundColor: '#ffffff', textColor: '#000000' } // Trắng\n }\n}\n\n// Component chính\nconst TimeLabel = ({ sendTime, style }) => {\n const { t } = useTranslation();\n const status = determineTimeStatus(sendTime)\n const colors = getStatusColors(status)\n const timeRemaining = sendTime ? calculateTimeRemaining(sendTime) : null\n\n // Format thời gian gửi\n const formattedSendTime = sendTime\n ? new Date(sendTime).toLocaleString()\n : null\n\n // Nội dung hiển thị\n let displayText\n if (status === 'unscheduled') {\n displayText = `${t(\"campaign_management.scenario.no_scheduled_time\")}`;\n } else if (status === 'overdue') {\n displayText = `${t(\"campaign_management.scenario.overdue\")}`;\n } else if (status === 'upcoming') {\n displayText = `${t(\n \"campaign_management.scenario.upcoming\"\n )}: ${timeRemaining}`;\n } else {\n displayText = `${t(\n \"campaign_management.scenario.scheduled_at\"\n )}: ${formattedSendTime}`;\n }\n\n return (\n \n {displayText}\n \n )\n}\n\nexport default TimeLabel\n","import { useCallback, useEffect, useRef, useState } from \"react\";\nimport scenarioApi from \"../../../api/scenarioApi\";\n\nimport {\n IconButton,\n InputAdornment,\n makeStyles,\n Paper,\n styled,\n Table,\n TableBody,\n TableCell,\n TableContainer,\n TableHead,\n TablePagination,\n TableRow,\n TextField,\n Tooltip\n} from \"@material-ui/core\";\nimport Button from \"@material-ui/core/Button\";\nimport ClearIcon from \"@material-ui/icons/Clear\";\n\nimport { Pagination } from \"@material-ui/lab\";\nimport CampaignStatusLabel, { campaignStatusDir } from \"./CampaignStatusLabel\";\nimport CoppyIcon from \"./CoppyIcon\";\n\nimport { CheckOutlined, SortRounded } from \"@material-ui/icons\";\nimport cn from \"classnames\";\nimport { ChevronDown, FilterIcon, SearchIcon } from \"lucide-react\";\nimport moment from \"moment\";\nimport { useTranslation } from \"react-i18next\";\nimport ButtonComponent from \"../../../components/Button\";\nimport Flex from \"../../../components/Flex\";\nimport LoadingWrapper from \"../../../components/LoadingWrapper\";\nimport types from \"../../../constants/types\";\nimport TimeLabel from \"./TimeLabel\";\n\nconst defaultSizeGetScenario = types.PAGINATION.SIZE;\n\nconst useStyles = makeStyles((theme) => ({\n witdhOrd: {\n minWidth: \"140px\",\n padding: \"0 8px !important\"\n },\n\n witdhId: {\n minWidth: \"170px\",\n padding: \"0 8px !important\"\n },\n\n widthName: {\n minWidth: \"160px\",\n padding: \"0 8px !important\"\n },\n\n widthCreator: {\n minWidth: \"160px\",\n padding: \"0 8px !important\"\n },\n\n widthDate: {\n minWidth: \"160px\",\n padding: \"0 8px !important\"\n },\n\n widthStatisticBtn: {\n minWidth: \"170px\",\n padding: \"0 8px !important\"\n },\n\n widthStatistic: {\n minWidth: \"180px\",\n padding: \"0 8px !important\"\n },\n\n widthActions: {\n minWidth: \"120px\",\n padding: \"0 8px !important\"\n },\n\n widthStatus: {\n minWidth: \"130px\",\n padding: \"0 8px !important\"\n },\n\n p0: {\n padding: \"0\",\n margin: \"0\"\n },\n\n heightHeader: {\n height: \"52px\"\n },\n\n f600: {\n fontWeight: 600\n },\n\n actions: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-end\",\n width: \"100%\",\n padding: \"10px 26px 16px 0\"\n },\n\n actionBtnRemove: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n color: \"#ff4d4f\", // Red color for delete button\n fontWeight: 600,\n padding: \"6px 12px\",\n borderRadius: theme.shape.borderRadius,\n transition: \"all 0.3s ease\", // Transition for smooth effect\n \"&:hover\": {\n backgroundColor: \"rgba(255, 77, 79, 0.1)\" // Light red background on hover\n }\n },\n\n actionBtnDetail: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n color: \"rgb(0, 123, 255)\", // Red color for delete button\n fontWeight: 600,\n padding: \"6px 10px\",\n borderRadius: theme.shape.borderRadius,\n transition: \"all 0.3s ease\", // Transition for smooth effect\n \"&:hover\": {\n backgroundColor: \"rgba(33, 150, 243, 0.2)\" // Light red background on hover\n }\n },\n\n actionSend: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n color: \"#52c41a\", // Màu xanh lá cho nút gửi tin nhắn\n fontWeight: 600,\n padding: \"8px 12px\",\n borderRadius: theme.shape.borderRadius,\n transition: \"all 0.3s ease\", // Hiệu ứng chuyển mượt\n \"&:hover\": {\n backgroundColor: \"rgba(82, 196, 26, 0.1)\" // Nền xanh lá nhạt khi hover\n }\n },\n\n actionAdd: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n color: \"#636ae8\", // Màu xanh lá cho nút gửi tin nhắn\n fontWeight: 600,\n padding: theme.spacing(1, 2),\n borderRadius: theme.shape.borderRadius,\n transition: \"all 0.3s ease\", // Hiệu ứng chuyển mượt\n \"&:hover\": {\n backgroundColor: \"rgba(99, 106, 232, 0.1)\" // Nền xanh lá nhạt khi hover\n\n // backgroundColor: 'rgba(82, 196, 26, 0.1)', // Nền xanh lá nhạt khi hover\n }\n },\n\n actionBtnSearch: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n color: \"#007bff\", // Blue color similar to \"Bombot Tags\" text\n fontWeight: 600,\n padding: theme.spacing(1, 2),\n borderRadius: theme.shape.borderRadius,\n transition: \"all 0.3s ease\", // Transition for smooth effect\n backgroundColor: \"rgb(230, 243, 255, 0.5)\",\n \"&:hover\": {\n backgroundColor: \"rgb(230, 243, 255, 0.8)\" // Light blue background color\n },\n border: \"1px solid #a3c1dd\"\n },\n\n actionIcon: {\n fontSize: \"14px\"\n },\n actionTitle: {\n margin: 0,\n fontSize: \"10px !important\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\"\n },\n\n rowItem: {\n cursor: \"pointer\"\n },\n clickableRow: {\n cursor: \"pointer\",\n \"&:hover\": {\n backgroundColor: \"rgba(0, 0, 0, 0.04)\"\n }\n }\n}));\n\nconst ScenarioList = ({ campaignId, isShowFilter, isPagination, isSearch }) => {\n const sortModalRef = useRef(null);\n const filterModalRef = useRef(null);\n const filterPopupRef = useRef(null);\n\n function useOutsideAlerter(ref, ...handleFuncs) {\n useEffect(() => {\n function handleClickOutside(event) {\n if (ref.current && !ref.current.contains(event.target)) {\n handleFuncs.forEach((func) => func());\n }\n }\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, [ref, handleFuncs]);\n }\n\n useOutsideAlerter(\n filterModalRef,\n () => setOpenFilterModal(false),\n () => setIsOpen(false)\n );\n useOutsideAlerter(sortModalRef, () => setOpenSortModal(false));\n useOutsideAlerter(filterPopupRef, () => setIsOpen(false));\n\n const classes = useStyles();\n const { t } = useTranslation();\n\n const [scenarioList, setScenarioList] = useState(null);\n const [isCopiedId, setIsCopiedId] = useState(false);\n const [page, setPage] = useState(0);\n const [campaignSelected, setCampaignSelected] = useState(campaignId);\n\n const [sortNameOrder, setSortNameOrder] = useState(\"\");\n const [tempSortNameOrder, setTempSortNameOrder] = useState(\"\");\n\n const [sortDateRangeOrder, setSortDateRangeOrder] =\n useState(\"createdAt,desc\");\n const [tempSortDateRangeOrder, setTempSortDateRangeOrder] =\n useState(\"createdAt,desc\");\n\n const [isOpen, setIsOpen] = useState(false);\n\n const [startDate, setStartDate] = useState(\"\");\n const [endDate, setEndDate] = useState(\"\");\n const [tempStartDate, setTempStartDate] = useState(\"\");\n const [tempEndDate, setTempEndDate] = useState(\"\");\n\n const [search, setSearch] = useState(\"\");\n const [searchQuery, setSearchQuery] = useState(\"\");\n\n const [rowsPerPage, setRowsPerPage] = useState(types.PAGINATION.SIZE);\n const [isLoadingList, setIsLoadingList] = useState(false);\n\n const [openSortModal, setOpenSortModal] = useState(false);\n const [openFilterModal, setOpenFilterModal] = useState(false);\n\n const dataStatus = [\n {\n id: 0,\n name: \"pending\",\n value: t(\"campaign_management.scenario.status.pending\")\n },\n {\n id: 1,\n name: \"running\",\n value: t(\"campaign_management.scenario.status.running\")\n },\n {\n id: 2,\n name: \"done\",\n value: t(\"campaign_management.scenario.status.done\")\n },\n {\n id: 3,\n name: \"cancel\",\n value: t(\"campaign_management.scenario.status.cancel\")\n }\n ];\n\n const [selectedStatus, setSelectedStatus] = useState(\n dataStatus.map((s) => s.name)\n );\n const [tempSelectedStatus, setTempSelectedStatus] = useState(\n dataStatus.map((s) => s.name)\n );\n\n // useEffect(() => {\n // (async () => {\n // const params = createParams(\n // selectedStatus,\n // startDate,\n // endDate,\n // sortNameOrder,\n // sortDateRangeOrder,\n // search\n // );\n // const res = await getScenario(params);\n // })();\n // }, [page]);\n\n useEffect(() => {\n handleSubmitApply(search);\n }, []);\n\n const handleSortName = (order) => {\n setSortNameOrder(order);\n };\n\n const handleSortDateRange = (order) => {\n setSortDateRangeOrder(order);\n };\n\n useEffect(() => {\n if (openSortModal) {\n setSortNameOrder(tempSortNameOrder);\n setSortDateRangeOrder(tempSortDateRangeOrder);\n }\n }, [openSortModal]);\n\n useEffect(() => {\n if (openFilterModal) {\n setStartDate(tempStartDate);\n setEndDate(tempEndDate);\n setSelectedStatus(tempSelectedStatus);\n }\n }, [openFilterModal]);\n\n const getScenario = async (params) => {\n try {\n setIsLoadingList(true);\n const res = await scenarioApi.get(params);\n setScenarioList(res);\n return res;\n } catch (error) {\n console.log(error);\n } finally {\n setIsLoadingList(false);\n }\n };\n\n useEffect(() => {\n setCampaignSelected(campaignId);\n }, [campaignId]);\n\n const onViewScenario = useCallback((campaignId, scenarioId, pageId) => {\n window.open(\n `${types.URL.FACEBOOK}&token=${\n localStorage.getItem(\"token\") || null\n }&campaign=${campaignId}&pageId=${pageId}&scenario=${scenarioId}`,\n \"_blank\"\n );\n }, []);\n\n const handleChangePage = async (event, newPage) => {\n setPage(newPage);\n };\n\n const handleResetDateRange = () => {\n setStartDate(\"\");\n setEndDate(\"\");\n };\n\n const handleResetStatus = () => {\n setSelectedStatus(dataStatus.map((status) => status.name));\n };\n\n const handleResetAllFilter = () => {\n setStartDate(\"\");\n setEndDate(\"\");\n setSelectedStatus(dataStatus.map((s) => s.name));\n handleSubmitApply(\n search,\n 0,\n rowsPerPage,\n \"\",\n \"\",\n dataStatus.map((s) => s.name),\n sortNameOrder,\n sortDateRangeOrder\n );\n setTempStartDate(\"\");\n setTempEndDate(\"\");\n setTempSelectedStatus(dataStatus.map((s) => s.name));\n };\n\n const handleSubmitApply = (\n searchVal = search,\n pageVal = page,\n sizeVal = rowsPerPage,\n startdate = startDate,\n enddate = endDate,\n selectedstatus = selectedStatus,\n sortnameorder = sortNameOrder,\n sortdaterangeorder = sortDateRangeOrder\n ) => {\n setTempSortNameOrder(sortNameOrder);\n setTempSortDateRangeOrder(sortDateRangeOrder);\n setTempStartDate(startDate);\n setTempEndDate(endDate);\n setTempSelectedStatus(selectedStatus);\n const params = createParams(\n selectedstatus,\n startdate,\n enddate,\n sortnameorder,\n sortdaterangeorder,\n searchVal,\n pageVal,\n sizeVal\n );\n getScenario(params);\n setOpenSortModal(false);\n setOpenFilterModal(false);\n };\n\n const createParams = (\n selectedStatus,\n startDate,\n endDate,\n sortNameOrder,\n sortDateRangeOrder,\n search,\n page,\n size\n ) => {\n let searchParams = \"\";\n\n if (\n selectedStatus.length > 0 &&\n selectedStatus.length < dataStatus.length\n ) {\n searchParams += `scenario.status=in=${selectedStatus.join(\",\")};`;\n }\n\n if (startDate && endDate) {\n searchParams += `scenario.createdAt=bw=${startDate},${endDate};`;\n }\n if (search && typeof search === \"string\" && search.trim() !== \"\") {\n searchParams += `scenario.name=contain=${search};`;\n }\n\n console.log(\"searchParams ==>\", searchParams);\n\n const sortOptions = [];\n if (sortDateRangeOrder) {\n sortOptions.push(sortDateRangeOrder);\n }\n if (sortNameOrder) {\n sortOptions.push(sortNameOrder);\n }\n\n const sort =\n sortOptions.length > 0 ? sortOptions.join(\";\") : \"createdAt,desc\";\n\n const payload = {\n page: page,\n search: searchParams,\n size: size,\n sort: sort\n };\n\n return payload;\n };\n\n const handleSearch = (event) => {\n setSearch(event.target.value);\n };\n\n const onKeyDown = (event) => {\n if (event.key === \"Enter\") {\n handleSubmitApply();\n }\n };\n\n const handleResetAllSort = () => {\n setSortNameOrder(\"\");\n setSortDateRangeOrder(\"createdAt,desc\");\n handleSubmitApply(\n search,\n 0,\n rowsPerPage,\n startDate,\n endDate,\n selectedStatus,\n \"\",\n \"createdAt,desc\"\n );\n setSortNameOrder(\"\");\n setTempSortNameOrder(\"\");\n setSortDateRangeOrder(\"createdAt,desc\");\n setTempSortDateRangeOrder(\"createdAt,desc\");\n };\n\n const handleToggleSortModal = () => {\n setOpenSortModal(!openSortModal);\n };\n\n const handleToggleFilterModal = () => {\n setOpenFilterModal(!openFilterModal);\n };\n\n const handleSelect = (status) => {\n if (status === \"all\") {\n if (selectedStatus.length === dataStatus.length) {\n return;\n } else {\n setSelectedStatus(dataStatus.map((s) => s.name));\n }\n } else {\n setSelectedStatus((prev) => {\n if (prev.includes(status)) {\n const newSelected = prev.filter((s) => s !== status);\n if (newSelected.length === 0) {\n return [];\n }\n return newSelected;\n } else {\n const newSelected = [...prev, status];\n if (newSelected.length === dataStatus.length) {\n return newSelected;\n }\n return newSelected;\n }\n });\n }\n };\n\n const handleClickFilter = () => {\n handleSubmitApply();\n };\n\n const handleChangeRowsPerPage = (event) => {\n const newRowsPerPage = parseInt(event.target.value, 10);\n setRowsPerPage(newRowsPerPage);\n setPage(0);\n handleSubmitApply(search, 0, newRowsPerPage);\n };\n\n const handleChange = (event, value) => {\n setPage(value - 1);\n handleSubmitApply(search, value - 1);\n };\n\n const handleSubmitSearch = (search) => {\n handleSubmitApply();\n };\n\n return (\n \n \n \n \n \n ),\n endAdornment: (\n \n {search && (\n {\n setSearch(\"\");\n handleSubmitApply(\"\");\n }}\n size=\"small\"\n >\n \n \n )}\n \n )\n }}\n />\n \n {t(\"common.btn.search\")}\n \n }\n backgroundColor=\"#05AE34\"\n color=\"white\"\n handleClickButton={() => handleSubmitSearch(search)}\n style={{\n minWidth: \"fit-content\",\n padding: \"6px 16px\"\n }}\n />\n \n\n {/* open modal sort & filter */}\n {/* {isShowFilter && ( */}\n \n \n \n \n

{t(\"common.btn.sort\")}

\n \n }\n backgroundColor=\"#05AE34\"\n color=\"white\"\n handleClickButton={handleToggleSortModal}\n style={{\n minWidth: \"fit-content\",\n padding: \"6px 16px\",\n background: \"#05AE34\"\n }}\n />\n\n {openSortModal && (\n \n

{t(\"campaign_management.name\")}

\n\n {/* name: a-z */}\n
\n \n (e.currentTarget.style.backgroundColor = \"#E1E1E1FF\")\n }\n onMouseLeave={(e) =>\n (e.currentTarget.style.backgroundColor =\n sortNameOrder === \"name,asc\" ? \"#d8fcd2\" : \"#fff\")\n }\n onClick={() => handleSortName(\"name,asc\")}\n className=\"\"\n style={{\n display: \"flex\",\n justifyContent: \"start\",\n alignItems: \"center\",\n width: \"100%\",\n color: \"#333\",\n backgroundColor:\n sortNameOrder === \"name,asc\" ? \"#d8fcd2\" : \"#fff\"\n }}\n >\n \n \n
\n\n
A - Z
\n \n \n\n {/* name: z-a */}\n
\n \n (e.currentTarget.style.backgroundColor = \"#E1E1E1FF\")\n }\n onMouseLeave={(e) =>\n (e.currentTarget.style.backgroundColor =\n sortNameOrder === \"name,desc\" ? \"#d8fcd2\" : \"#fff\")\n }\n onClick={() => handleSortName(\"name,desc\")}\n style={{\n display: \"flex\",\n justifyContent: \"start\",\n alignItems: \"center\",\n width: \"100%\",\n color: \"#333\",\n backgroundColor:\n sortNameOrder === \"name,desc\" ? \"#d8fcd2\" : \"#fff\"\n }}\n >\n \n \n
\n\n
Z - A
\n \n \n\n \n\n

{t(\"campaign_management.time\")}

\n\n {/* newest-oldest */}\n
\n \n (e.currentTarget.style.backgroundColor = \"#E1E1E1FF\")\n }\n onMouseLeave={(e) =>\n (e.currentTarget.style.backgroundColor =\n sortDateRangeOrder === \"createdAt,desc\"\n ? \"#d8fcd2\"\n : \"#fff\")\n }\n onClick={() => handleSortDateRange(\"createdAt,desc\")}\n className=\"\"\n style={{\n display: \"flex\",\n justifyContent: \"start\",\n alignItems: \"center\",\n width: \"100%\",\n color: \"#333\",\n backgroundColor:\n sortDateRangeOrder === \"createdAt,desc\"\n ? \"#d8fcd2\"\n : \"#fff\"\n }}\n >\n \n \n
\n
\n \n {t(\"campaign_management.newest_oldest\")}\n \n
\n \n \n\n {/* oldest-newest */}\n
\n \n (e.currentTarget.style.backgroundColor = \"#E1E1E1FF\")\n }\n onMouseLeave={(e) =>\n (e.currentTarget.style.backgroundColor =\n sortDateRangeOrder === \"createdAt,asc\"\n ? \"#d8fcd2\"\n : \"#fff\")\n }\n onClick={() => handleSortDateRange(\"createdAt,asc\")}\n className=\"\"\n style={{\n display: \"flex\",\n justifyContent: \"start\",\n alignItems: \"center\",\n width: \"100%\",\n color: \"#333\",\n backgroundColor:\n sortDateRangeOrder === \"createdAt,asc\"\n ? \"#d8fcd2\"\n : \"#fff\"\n }}\n >\n \n \n
\n
\n {\" \"}\n \n {t(\"campaign_management.oldest_newest\")}\n \n
\n \n \n\n \n\n {/* reset va apply ben sort */}\n \n \n {t(\"common.btn.reset\")}\n \n }\n backgroundColor=\"#05AE34\"\n color=\"white\"\n style={{\n minWidth: \"fit-content\",\n padding: \"6px 16px\",\n background: \"#05ae34\"\n }}\n />\n \n {t(\"common.btn.apply\")}\n \n }\n backgroundColor=\"#05AE34\"\n color=\"white\"\n style={{\n minWidth: \"fit-content\",\n padding: \"6px 16px\"\n }}\n />\n \n \n )}\n\n {/* {openSortModal && (\n setOpenSortModal(false)}\n style={{\n // backgroundColor: \"rgba(51, 51, 51, 0.8)\",\n zIndex: 2,\n position: \"fixed\",\n top: 0,\n left: 0,\n right: 0,\n bottom: 0\n }}\n />\n )} */}\n \n\n \n \n \n {\" \"}\n \n {t(\"common.btn.filter\")}\n

\n \n \n }\n backgroundColor=\"#05AE34\"\n color=\"white\"\n handleClickButton={handleToggleFilterModal}\n style={{\n minWidth: \"fit-content\",\n padding: \"6px 16px\",\n background: \"rgb(5, 174, 52)\",\n color: \"white\"\n }}\n />\n\n {openFilterModal && (\n \n \n

{t(\"campaign_management.date_range\")}

\n \n {t(\"common.btn.reset\")}\n

\n \n\n {/* chon ngay */}\n \n setStartDate(e.target.value)}\n style={{\n cursor: \"pointer\",\n flex: 1,\n marginRight: \"8px\",\n padding: \"8px\",\n borderRadius: \"4px\",\n border: \"1px solid #C1C1C1FF\"\n }}\n />\n setEndDate(e.target.value)}\n style={{\n cursor: \"pointer\",\n flex: 1,\n marginLeft: \"8px\",\n padding: \"8px\",\n borderRadius: \"4px\",\n border: \"1px solid #C1C1C1FF\"\n }}\n />\n \n\n {/* duong line */}\n \n\n {/* status */}\n \n

{t(\"campaign_management.status.title\")}

\n \n {t(\"common.btn.reset\")}\n

\n \n\n {/* select status */}\n {/*
*/}\n setIsOpen(true)}\n >\n {isOpen && (\n setIsOpen(false)}\n style={{\n position: \"absolute\",\n top: \"100%\",\n left: 0,\n zIndex: 3,\n width: \"100%\",\n backgroundColor: \"white\",\n border: \"1px solid #D1D5DB\",\n borderRadius: \"0.375rem\",\n boxShadow: \"0 1px 2px rgba(0, 0, 0, 0.1)\",\n marginTop: \"4px\"\n }}\n >\n
\n {/* Checkbox for \"All\" option */}\n handleSelect(\"all\")}\n >\n \n {selectedStatus.length === dataStatus.length && (\n \n \n
\n )}\n
\n {t(\"campaign_management.status.all\")}\n \n\n {dataStatus.map((status) => (\n handleSelect(status.name)}\n >\n \n {selectedStatus.includes(status.name) && (\n \n \n \n )}\n \n {status.value}\n \n ))}\n \n \n )}\n \n \n {selectedStatus.length === 0\n ? t(\"common.btn.choose_status\")\n : selectedStatus.length < dataStatus.length\n ? selectedStatus\n .map((status) =>\n t(`campaign_management.status.${status}`)\n )\n .join(\", \")\n : t(\"campaign_management.status.all\")}\n \n\n \n \n \n {/* */}\n\n \n\n {/* reset va apply all o filter */}\n \n \n {t(\"common.btn.reset_all\")}\n \n }\n backgroundColor=\"#05AE34\"\n color=\"white\"\n style={{\n minWidth: \"fit-content\",\n padding: \"6px 16px\",\n background: \"#05ae34\"\n }}\n />\n \n {t(\"common.btn.apply\")}\n \n }\n backgroundColor=\"#05AE34\"\n color=\"white\"\n style={{\n minWidth: \"fit-content\",\n padding: \"6px 16px\"\n }}\n />\n \n \n )}\n\n {/* {openFilterModal && (\n setOpenFilterModal(false)}\n style={{\n // backgroundColor: \"rgba(51, 51, 51, 0.8)\",\n zIndex: 2,\n position: \"fixed\",\n top: 0,\n left: 0,\n right: 0,\n bottom: 0\n }}\n />\n )} */}\n \n \n {/* )} */}\n \n \n \n \n \n \n
{t(\"campaign_management.scenario.ord_number\")}
\n \n \n
{t(\"campaign_management.scenario.id\")}
\n \n \n
{t(\"campaign_management.scenario.name_scenrio\")}
\n \n \n
{t(\"campaign_management.scenario.creator\")}
\n \n \n
{t(\"campaign_management.scenario.created_at\")}
\n \n \n
{t(\"campaign_management.scenario.customers\")}
\n \n \n
\n {t(\"campaign_management.scenario.customers_success\")}\n
\n \n \n
\n {t(\"campaign_management.scenario.customers_failed\")}\n
\n \n \n
\n {t(\"campaign_management.scenario.customers_not_send\")}\n
\n \n \n
{t(\"campaign_management.scenario.messages\")}
\n \n \n
\n {t(\"campaign_management.scenario.messages_success\")}\n
\n \n \n
{t(\"campaign_management.scenario.messages_failed\")}
\n \n \n
\n {t(\"campaign_management.scenario.messages_not_send\")}\n
\n \n {/* \n
{t(\"campaign_management.scenario.sending_status\")}
\n */}\n\n \n \n \n {t(\"campaign_management.scenario.sending_status\")}\n \n \n {t(\"campaign_management.scenario.schedule_status\")}\n \n \n \n \n
\n\n \n {scenarioList?.content?.map((row, index) => {\n return (\n \n onViewScenario(row.campaignId, row.id, row.pageId)\n }\n key={row.id}\n className={[\n classes.heightHeader,\n classes.rowItem,\n classes.clickableRow\n ]}\n >\n \n
\n {scenarioList?.pageable?.pageNumber *\n defaultSizeGetScenario +\n index +\n 1}\n
\n \n\n \n \n \n \n {row.id}\n \n \n \n {\n e.stopPropagation();\n navigator.clipboard.writeText(row.id);\n setIsCopiedId(true);\n setTimeout(() => {\n setIsCopiedId(false);\n }, 1000);\n }}\n size=\"small\"\n style={{ marginLeft: \"14px\" }}\n >\n \n \n \n \n \n\n \n {row.name ? (\n
{row.name}
\n ) : (\n \n {\"\"}\n

\n )}\n \n\n \n {row.createdByUserId ? (\n \n \n {row.userFullName}\n

\n {/* {\n e.stopPropagation()\n setCreatorShowUp(null)\n }}\n >\n \n }\n PopperProps={{\n disablePortal: true,\n }}\n disableFocusListener\n disableHoverListener\n >\n {\n e.stopPropagation()\n console.log(row.createdByUserId)\n setCreatorShowUp((prev) => {\n if (row?.id === prev?.scenarioId) {\n return null\n }\n return {\n id: row.createdByUserId,\n scenarioId: row.id,\n }\n })\n }}\n >\n \n \n \n */}\n \n ) : (\n \n {\"_\"}\n

\n )}\n \n\n \n {row.createdAt ? (\n
\n {moment(row.createdAt).format(\"DD/MM/YYYY HH:mm\")}\n
\n ) : (\n \n {\"\"}\n

\n )}\n \n\n \n {row.totalCus ? (\n \n \n {row.totalCus}\n

\n {/* {\n e.stopPropagation()\n setScenarioCustomerSelected(row.id)\n }}\n >\n \n */}\n \n ) : (\n \n {\"\"}\n

\n )}\n \n\n \n
{row.customerSuccess}
\n \n\n \n
{row.customerFailed}
\n \n\n \n
{row.customerNotSend}
\n \n\n \n
{row.totalMes}
\n \n\n \n
{row.messageSuccess}
\n \n\n \n
{row.messageFailed}
\n \n\n \n
{row.messageNotSend}
\n \n\n {/* \n \n \n \n \n \n
\n \n
\n */}\n \n \n \n \n \n \n \n \n \n \n\n {/* action detail */}\n {/* \n \n \n \n onViewScenario(row.campaignId, row.id, row.pageId)\n }\n >\n
\n

\n {t(\"common.btn.detail\")}\n

\n
\n \n
\n \n */}\n \n );\n })}\n
\n
\n \n \n {/* \n \n handleChangePage(event, newPage - 1)}\n disabled={scenarioList?.totalMatch === 0}\n color=\"secondary\"\n />\n \n */}\n {/* {rows.length === 0 && (\n

{t(\"update.no_data\")}

\n )} */}\n {/* {isPagination && rows.length > 0 && ( */}\n \n \n \n \n {/* )} */}\n \n );\n};\n\nconst CellSticky = styled(TableCell)`\n position: sticky;\n background-color: #fff;\n right: 0;\n top: 0;\n z-index: 2;\n box-shadow: -15px 0px 17px -7px #f0eded;\n`;\n\nexport default ScenarioList;\n","import React, { useEffect, useMemo, useRef, useState } from 'react'\nimport _ from 'lodash'\nimport { useHistory } from 'react-router-dom'\nimport clsx from 'clsx'\nimport { makeStyles } from '@material-ui/core/styles'\nimport MainLayout from '../MainLayout'\nimport FormControl from '@material-ui/core/FormControl'\nimport GetAppIcon from '@material-ui/icons/GetApp'\nimport ListCustomerComponent from '../../components/ListCustomer'\nimport FormDialog from '../../components/FormDialog'\nimport ButtonComponent from '../../components/Button'\nimport Grid from '@material-ui/core/Grid'\nimport TextField from '@material-ui/core/TextField'\nimport RadioGroup from '@material-ui/core/RadioGroup'\nimport Radio from '@material-ui/core/Radio'\nimport FormLabel from '@material-ui/core/FormLabel'\nimport { Button, Chip } from '@material-ui/core'\nimport SearchIcon from '@material-ui/icons/Search'\nimport FormControlLabel from '@material-ui/core/FormControlLabel'\nimport FormGroup from '@material-ui/core/FormGroup'\nimport Checkbox from '@material-ui/core/Checkbox'\nimport types from '../../constants/types'\nimport moment from 'moment'\nimport IMAGES from '../../images'\nimport Autocomplete from '@material-ui/lab/Autocomplete'\nimport DeleteIcon from '@material-ui/icons/Delete'\nimport Loading from '../../components/Loading'\nimport { getFanpageDetail } from 'views/Fanpage/FanpageActions'\nimport { useDispatch, useSelector } from 'react-redux'\nimport Flex from 'components/Flex'\nimport BaseSelectFile from 'components/BaseSelectFile'\nimport cn from 'classnames'\nimport { selectFilterCus, selectImportResult } from './ScenarioSelectors'\nimport Tour from 'reactour'\nimport { selectSearchUidName } from './ScenarioSelectors'\nimport { getIsGuideByKey, GUIDE_TYPE_ENUM, setIsGuideByKey } from 'utils/helper'\nimport { selectGuideListByKey } from 'stores/config/config.selector'\nimport ModalResultImport from './item/ModalResultImport'\nimport { useTranslation } from 'react-i18next'\nimport MessengerButton from '../Home/items/MessengerButton'\nimport TagPreviewItem from '../../components/TagPreviewItem'\nimport { colorDir1, getRandomTag } from '../../components/TagPreviewModal'\nimport ScenarioList from './components/ScenarioList'\n\nconst useStyles = makeStyles((theme) => ({\n wrapSelectFanpage: {\n marginTop: 30,\n width: 'calc(100% - 15px)',\n '& h4': {\n marginBottom: 5,\n color: '#05AE34',\n fontSize: 16,\n },\n },\n wrapSelect: {\n width: '100%',\n },\n select: {\n // margin: \"5px 0px !important\",\n },\n wrapSelectLabel: {\n zIndex: 1,\n fontSize: 16,\n paddingLeft: 10,\n marginTop: 7,\n '&.MuiFormLabel-filled': {\n display: 'none !important',\n },\n '&.Mui-focused': {\n display: 'none !important',\n },\n },\n\n root: {\n '&:hover': {\n backgroundColor: 'transparent',\n },\n },\n icon: {\n borderRadius: '50%',\n width: 16,\n height: 16,\n boxShadow:\n 'inset 0 0 0 1px rgba(16,22,26,.2), inset 0 -1px 0 rgba(16,22,26,.1)',\n backgroundColor: '#f5f8fa',\n backgroundImage:\n 'linear-gradient(180deg,hsla(0,0%,100%,.8),hsla(0,0%,100%,0))',\n '$root.Mui-focusVisible &': {\n outline: '2px auto rgba(19,124,189,.6)',\n outlineOffset: 2,\n },\n 'input:hover ~ &': {\n backgroundColor: '#ebf1f5',\n },\n 'input:disabled ~ &': {\n boxShadow: 'none',\n background: 'rgba(206,217,224,.5)',\n },\n },\n checkedIcon: {\n backgroundColor: '#05AE34',\n backgroundImage:\n 'linear-gradient(180deg,hsla(0,0%,100%,.1),hsla(0,0%,100%,0))',\n '&:before': {\n display: 'block',\n width: 16,\n height: 16,\n backgroundImage: 'radial-gradient(#fff,#fff 28%,transparent 32%)',\n content: '\"\"',\n },\n 'input:hover ~ &': {\n backgroundColor: '#106ba3',\n },\n },\n wrapRadioGroup: {\n display: 'inline-block',\n flexWrap: 'inherit',\n flexDirection: 'inherit',\n marginLeft: 15,\n fontSize: '16px',\n marginTop: 10,\n },\n // wrapperPopup: {\n // \"& h4\": {\n // color: \"#05AE34\",\n // paddingLeft: 15,\n // },\n // \"& .MuiInputLabel-filled.MuiInputLabel-shrink\": {\n // top: \"-25px\",\n // color: \"rgba(0, 0, 0, 0.87) !important\",\n // width: \"100%\",\n // fontSize: \"16px\",\n // transform: \"inherit\",\n // },\n // \"& .MuiInputLabel-filled\": {\n // top: \"-25px\",\n // color: \"rgba(0, 0, 0, 0.87) !important\",\n // width: \"100%\",\n // fontSize: \"16px\",\n // transform: \"inherit\",\n // },\n // \"& .MuiFilledInput-input\": {\n // padding: \"10px 12px 10px 2px !important\",\n // },\n // },\n // radioGroup: {\n // flexWrap: \"inherit\",\n // flexDirection: \"inherit\",\n // \"& label\": {\n // float: \"left\",\n // },\n // },\n // textField: {\n // width: \"100%\",\n // padding: \"0px 15px\",\n // margin: \"35px 0px 10px 0px\",\n // \"& .MuiInputLabel-filled\": {\n // marginLeft: 15,\n // },\n // },\n formControlCheckbox: {\n margin: '15px 0px 0px 15px',\n width: 'calc(100% - 30px)',\n '& .MuiFormLabel-root': {\n marginBottom: 5,\n fontSize: 16,\n },\n '& .MuiFormControlLabel-label': {\n fontSize: 16,\n },\n '& .MuiCheckbox-colorSecondary.Mui-checked': {\n color: '#05AE34',\n },\n '& .MuiFormLabel-root': {\n color: 'rgba(0, 0, 0, 0.87)',\n fontSize: 16,\n },\n },\n wrapButton: {\n width: '100%',\n display: 'inline-block',\n },\n button: {\n display: 'inline-block',\n width: 130,\n float: 'right',\n margin: '30px 15px 30px 0px',\n },\n title: {\n color: '#05AE34',\n },\n wrapButtonImport: {\n textAlign: 'right',\n },\n wrapBox: {\n padding: '15px 42px 30px 15px',\n },\n buttonChange: {\n margin: '0px 0px 0px 10px',\n },\n importInput: {\n margin: '15px 0px 30px 0px',\n },\n inboxDate: {\n left: 15,\n top: -5,\n width: 200,\n marginTop: 25,\n // marginwrapperPopupwrapperPopupTop: 25,\n '& label': {\n color: 'rgba(0, 0, 0, 0.87) !important',\n fontSize: '16px',\n transform: 'inherit',\n top: '-10px',\n width: '100%',\n },\n '& .MuiInputBase-formControl': {\n width: 140,\n },\n '& $root': {\n width: 120,\n },\n '& .MuiInputBase-input': {\n width: 120,\n position: 'absolute',\n left: 0,\n top: 0,\n width: '100%',\n height: '100%',\n opacity: 0,\n cursor: 'pointer',\n boxSizing: 'border-box',\n },\n '& .MuiInputBase-input::-webkit-calendar-picker-indicator': {\n position: 'absolute',\n left: 0,\n top: 0,\n width: '100%',\n height: '100%',\n margin: 0,\n padding: 0,\n cursor: 'pointer',\n },\n },\n inboxTime: {\n left: 15,\n top: -5,\n width: 200,\n marginTop: 25,\n // marginwrapperPopupwrapperPopupTop: 25,\n '& label': {\n color: 'rgba(0, 0, 0, 0.87) !important',\n fontSize: '16px',\n transform: 'inherit',\n top: '-10px',\n width: '100%',\n },\n '& .MuiInputBase-formControl': {\n width: 140,\n },\n '& $root': {\n width: 120,\n },\n },\n inboxTimeLast: {\n right: 30,\n position: 'absolute',\n top: -5,\n marginTop: 25,\n // marginwrapperPopupwrapperPopupTop: 25,\n '& label': {\n color: 'rgba(0, 0, 0, 0.87) !important',\n fontSize: '16px',\n transform: 'inherit',\n top: '-10px',\n width: '100%',\n },\n '& .MuiInputBase-formControl': {\n width: 140,\n },\n '& $root': {\n width: 120,\n },\n\n '& .MuiInputBase-input::-webkit-calendar-picker-indicator': {\n position: 'absolute',\n left: 0,\n top: 0,\n width: '100%',\n height: '100%',\n margin: 0,\n padding: 0,\n cursor: 'pointer',\n },\n },\n wrapperLoading: {\n height: 100,\n position: 'relative',\n textAlign: 'center',\n top: -20,\n '& img': {\n height: 100,\n position: 'absolute',\n top: 0,\n left: 'calc(50% - 50px)',\n width: 100,\n },\n '& p': {\n position: 'absolute',\n bottom: -11,\n textAlign: 'center',\n width: '100%',\n },\n },\n noData: {\n marginTop: 15,\n marginBottom: 10,\n color: 'rgba(0, 0, 0, 0.38)',\n },\n addTag: {\n width: '100%',\n marginBottom: 15,\n },\n wrapCheckbox: {\n position: 'relative',\n '&:hover': {\n '& $delete': {\n display: 'inline-block',\n },\n },\n },\n delete: {\n display: 'none',\n position: 'absolute',\n right: 0,\n top: 0,\n '&:hover': {\n cursor: 'pointer',\n },\n },\n wrapButtonPopup: {\n textAlign: 'right',\n paddingBottom: 30,\n paddingRight: 15,\n },\n tagFormGroup: {\n height: '200px',\n overflowY: 'auto',\n overflowX: 'hidden',\n display: 'initial',\n marginTop: '15px',\n '& .MuiFormControlLabel-root': {\n width: '100%',\n },\n },\n fromToIcon: {\n position: 'absolute',\n top: '45px',\n left: '180px',\n },\n}))\n\nfunction StyledRadio(props) {\n const classes = useStyles()\n\n return (\n }\n icon={}\n {...props}\n />\n )\n}\n\nconst CustomerView = (props) => {\n const classes = useStyles()\n\n const { t } = useTranslation()\n\n const [campaignId, setCampaignId] = useState(null)\n\n const {} = props\n\n useEffect(() => {\n const searchParam = new URLSearchParams(window.location.search)\n\n setCampaignId(searchParam.get('campaignId'))\n }, [])\n\n const tourOverview = useSelector(\n selectGuideListByKey(GUIDE_TYPE_ENUM.scenario_manager)\n )\n\n const [tourConfig, setTourConfig] = useState(null)\n\n useEffect(() => {\n if (\n getIsGuideByKey(GUIDE_TYPE_ENUM.scenario_manager) &&\n tourOverview?.length\n ) {\n setTourConfig(tourOverview)\n setIsGuideByKey(GUIDE_TYPE_ENUM.scenario_manager)\n }\n }, [tourOverview])\n\n return (\n \n \n {t('common.btn.close')}\n \n }\n accentColor=\"#05ae34\"\n onRequestClose={() => setTourConfig(null)}\n />\n {/* */}\n {/* {loading && } */}\n \n \n )\n}\n\nCustomerView.propTypes = {}\n\nCustomerView.defaultProps = {}\n\nexport default CustomerView\n","import { connect } from 'react-redux'\nimport { withRouter } from 'react-router-dom'\nimport ScenarioView from './ScenarioView'\nimport * as actionsFanpage from '../Fanpage/FanpageActions'\nimport * as actionsCustomer from './ScenarioActions'\nimport * as selectorsFanpage from '../Fanpage/FanpageSelectors'\nimport * as selectorsCustomer from './ScenarioSelectors'\nimport * as selectorsApp from '../App/AppSelectors'\nconst mapStateToProps = (state) => {\n return {}\n}\n\nconst mapDispatchToProps = (dispatch) => ({})\n\nexport default withRouter(\n connect(mapStateToProps, mapDispatchToProps)(ScenarioView)\n)\n","import ScenarioPage from './ScenarioContainer'\n\nexport default ScenarioPage\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport _ from \"lodash\";\nimport Table from \"@material-ui/core/Table\";\nimport TableBody from \"@material-ui/core/TableBody\";\nimport TableCell from \"@material-ui/core/TableCell\";\nimport TableContainer from \"@material-ui/core/TableContainer\";\nimport TableHead from \"@material-ui/core/TableHead\";\nimport TableRow from \"@material-ui/core/TableRow\";\nimport TableSortLabel from \"@material-ui/core/TableSortLabel\";\nimport Paper from \"@material-ui/core/Paper\";\nimport moment from \"moment\";\nimport types from \"../constants/types\";\nimport { useTranslation } from \"react-i18next\";\nconst headCells = [\n {\n id: \"time\",\n numeric: true,\n disablePadding: true,\n label: \"account_management.payment_history.time\",\n },\n {\n id: \"code\",\n numeric: true,\n disablePadding: true,\n label: \"account_management.payment_history.order_code\",\n },\n {\n id: \"product\",\n numeric: true,\n disablePadding: true,\n label: \"account_management.payment_history.package\",\n },\n {\n id: \"totalPrice\",\n numeric: true,\n disablePadding: true,\n label: \"account_management.payment_history.total\",\n },\n {\n id: \"pay\",\n numeric: true,\n disablePadding: true,\n label: \"account_management.payment_history.method\",\n },\n {\n id: \"status\",\n numeric: true,\n disablePadding: true,\n label: \"account_management.payment_history.status\",\n },\n];\n\nfunction EnhancedTableHead(props) {\n const { t } = useTranslation();\n return (\n \n \n {headCells.map((headCell) => (\n \n \n {t(headCell.label)}\n \n \n ))}\n \n \n );\n}\n\nEnhancedTableHead.propTypes = {\n classes: PropTypes.object.isRequired,\n rowCount: PropTypes.number.isRequired,\n};\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n width: \"100%\",\n padding: \"15px 15px 15px 0px\",\n },\n paper: {\n width: \"100%\",\n marginBottom: theme.spacing(2),\n },\n table: {\n minWidth: \"100%\",\n },\n visuallyHidden: {\n border: 0,\n clip: \"rect(0 0 0 0)\",\n height: 1,\n margin: -1,\n overflow: \"hidden\",\n padding: 0,\n position: \"absolute\",\n top: 20,\n width: 1,\n },\n noData: {\n color: \"rgba(0,0,0,.5)\",\n fontWeight: \"bold\",\n textAlign: \"center\",\n paddingBottom: 15,\n },\n}));\n\nexport default function ListHistoryjs(props) {\n const { data } = props;\n const rows = (data && data.history) || [];\n const classes = useStyles();\n const [dense, setDense] = React.useState(true);\n const { t } = useTranslation();\n\n return (\n
\n \n \n \n \n \n {(rows || []).map((row, index) => {\n return (\n \n \n {moment(row.updatedAt).format(\"DD/MM/YYYY HH:mm\")}\n \n {row.id}\n {row.name}\n {row.amount}\n {row.method}\n \n {_.upperCase(row.status) == _.upperCase(types.STATUS.DONE)\n ? \"Hoàn thành\"\n : _.upperCase(row.status) ==\n _.upperCase(types.STATUS.PENDING)\n ? \"Chưa chạy\"\n : \"Đang chạy\"}\n \n \n );\n })}\n \n \n \n {rows.length == 0 && (\n

{t(\"update.no_data\")}

\n )}\n {/* */}\n
\n {/* {rows.length > 0 && (\n }\n label=\"Thay đổi khoảng cách hiển thị gần\"\n />\n )} */}\n
\n );\n}\n","import React, { useEffect, useState } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport _ from \"lodash\";\nimport {\n Table,\n TableBody,\n TableCell,\n TableContainer,\n TableHead,\n TableRow,\n TableSortLabel,\n Paper,\n Avatar,\n FormControlLabel,\n Switch\n} from \"@material-ui/core\";\nimport { Button, Tooltip, Snackbar, Alert } from \"@mui/material\";\nimport moment from \"moment\";\nimport cn from \"classnames\";\nimport ButtonComponent from \"./Button\";\nimport FormDialog from \"./FormDialog\";\nimport { useTranslation } from \"react-i18next\";\nimport { BiTransfer } from \"react-icons/bi\";\n\nconst headCells = [\n {\n id: \"avatar\",\n numeric: true,\n disablePadding: true,\n label: \"account_management.linked_account.avatar\"\n },\n {\n id: \"accountName\",\n numeric: true,\n disablePadding: true,\n label: \"account_management.linked_account.name\"\n },\n {\n id: \"sdt\",\n numeric: true,\n disablePadding: true,\n label: \"account_management.linked_account.phone\"\n },\n {\n id: \"email\",\n numeric: true,\n disablePadding: true,\n label: \"account_management.linked_account.email\"\n },\n {\n id: \"lastTime\",\n numeric: true,\n disablePadding: true,\n label: \"account_management.linked_account.last_logged_in\"\n },\n {\n id: \"account_type\",\n numeric: true,\n disablePadding: true,\n label: \"account_management.linked_account.type\"\n },\n {\n id: \"action\",\n numeric: true,\n disablePadding: true,\n label: \"account_management.linked_account.action\"\n }\n];\n\nfunction EnhancedTableHead(props) {\n const { t } = useTranslation();\n return (\n \n \n {headCells.map((headCell) => (\n \n \n {t(headCell.label)}\n \n \n ))}\n \n \n );\n}\n\nEnhancedTableHead.propTypes = {\n classes: PropTypes.object.isRequired,\n rowCount: PropTypes.number.isRequired\n};\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n width: \"100%\",\n padding: \"15px 15px 15px 0px\"\n },\n paper: {\n width: \"100%\"\n },\n table: {\n minWidth: \"100%\"\n },\n visuallyHidden: {\n border: 0,\n clip: \"rect(0 0 0 0)\",\n height: 1,\n margin: -1,\n overflow: \"hidden\",\n padding: 0,\n position: \"absolute\",\n top: 20,\n width: 1\n },\n noData: {\n color: \"rgba(0,0,0,.5)\",\n fontWeight: \"bold\",\n textAlign: \"center\",\n paddingBottom: 15\n },\n buttonIEA: {\n width: \"100%\",\n textAlign: \"right\",\n marginRight: \"15px\",\n paddingRight: \"15px\",\n \"& button\": {\n marginLeft: 15\n }\n },\n avatar: {\n margin: \"0px auto\"\n },\n titlePopup: {\n textAlign: \"center\",\n color: \"#05AE34\"\n },\n wrapButtonPopup: {\n textAlign: \"center\"\n }\n}));\n\nexport default function ListHistoryjs(props) {\n const {\n data,\n handleInviteCode,\n handleUnlink,\n messageUnlink,\n statusUnlink,\n messageInviteError,\n user,\n handleOpenTransferConfirm,\n setTransferedId,\n handleOpenTransfer\n } = props;\n const rows = (data && data.users) || [];\n const classes = useStyles();\n const [page, setPage] = useState(0);\n const [dense, setDense] = useState(true);\n const [unlink, setUnlink] = useState({});\n const [isUnlink, setIsUnlink] = useState(false);\n const [showStatus, setShowStatus] = useState({\n open: false,\n type: \"success\",\n message: \"\"\n });\n const { t } = useTranslation();\n\n useEffect(() => {\n if (statusUnlink) {\n setIsUnlink(false);\n setShowStatus({\n open: true,\n type: \"success\",\n message: t(\"account_management.linked_account.unlink_success\")\n });\n } else if (messageUnlink.message) {\n setShowStatus({\n open: true,\n type: \"error\",\n message: t(\"update.error_unlink\")\n });\n }\n }, [messageUnlink, statusUnlink, messageInviteError]);\n\n const handleChangeDense = (event) => {\n setDense(event.target.checked);\n };\n\n const handleSubmitInviteCode = () => {\n handleInviteCode();\n };\n\n const handleSubmitUnlink = (row) => {\n setIsUnlink(true);\n setUnlink(row);\n };\n\n const handleConfirmUnlink = () => {\n handleUnlink(unlink);\n };\n\n const handleCloseUnlink = () => {\n setIsUnlink(false);\n };\n\n const handleCloseStatus = (event, reason) => {\n if (reason === \"clickaway\") {\n return;\n }\n setShowStatus((prev) => ({\n ...prev,\n open: false\n }));\n };\n\n return (\n <>\n
\n \n \n \n \n \n {(rows || []).map((row, index) => {\n return (\n \n \n {row.avatar ? (\n \n ) : (\n \n )}\n \n {row.name}\n {row.phone}\n {row.email}\n \n {moment(row.lastLogin).format(\"DD/MM/YYYY HH:mm\")}\n \n \n {row.usedWithUserId\n ? t(\"overall.account_info.linked_account\")\n : t(\"overall.account_info.main_account\")}\n \n \n {row.usedWithUserId ? (\n \n handleSubmitUnlink(row)}\n />\n\n {!user.usedWithUserId && (\n \n \n
\n }\n className=\"btn--rounder\"\n backgroundColor=\"#05ae34\"\n color=\"white\"\n style={{\n height: \"32px\",\n padding: \"6px 16px\",\n minWidth: \"40px\" // Width nhỏ hơn cho button icon\n }}\n handleClickButton={() => {\n setTransferedId(row.id);\n handleOpenTransferConfirm(true);\n }}\n />\n )}\n \n ) : (\n \n \n \n \n \n )}\n \n \n );\n })}\n \n \n \n {rows.length === 0 && (\n

{t(\"update.no_data\")}

\n )}\n \n \n\n
\n \n \n \n {t(\"common.btn.add_account\")}\n \n \n \n\n \n {t(\"account_management.service_information.transfer_main_account\")}\n \n
\n\n \n
\n

\n {t(\"account_management.linked_account.unlink\")}\n

\n
\n \n \n
\n
\n
\n\n \n \n {showStatus.message}\n \n \n \n );\n}\n","import * as React from 'react';\nimport { useEffect, useState } from \"react\";\nimport PropTypes from 'prop-types';\nimport SwipeableViews from 'react-swipeable-views';\nimport { useTheme } from '@mui/material/styles';\nimport AppBar from '@mui/material/AppBar';\nimport Tabs from '@mui/material/Tabs';\nimport Tab from '@mui/material/Tab';\nimport Typography from '@mui/material/Typography';\nimport Box from '@mui/material/Box';\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport { useTranslation } from \"react-i18next\";\nimport _ from \"lodash\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport IMAGES from \"../../../src/images\";\nimport Loading from \"../../components/Loading\";\n\nimport Card from '@mui/material/Card';\nimport CardContent from '@mui/material/CardContent';\nimport CardMedia from '@mui/material/CardMedia';\nimport { Button, CardActionArea, CardActions } from '@mui/material';\nimport { Snackbar, TablePagination } from \"@material-ui/core\";\nimport MuiAlert from \"@material-ui/lab/Alert\";\n\n\nfunction Alert(props) {\n return ;\n}\n\nfunction TabPanel(props) {\n const { children, value, index, ...other } = props;\n\n return (\n