{"version":3,"sources":["services/storage/index.js","services/storage/token.js","services/storage/user.js","services/storage/site.js","helpers/index.js","services/storage/refreshToken.js","services/http/index.js","store/auth/index.js","store/app/helpers.js","store/app/index.js","store/users/index.js","store/reducers.js","store/sagas.js","store/configureStore.js","router/ProtectedRoute/index.js","components/TopBar/index.js","components/SideBar/config.js","components/SideBar/styled.js","components/SideBar/index.js","components/MainContainer/index.js","pages/LoginPage/index.js","pages/DashboardPage/components/DashBoard/styled.js","services/signalR/index.js","pages/DashboardPage/components/DashBoard/CardBlock.js","pages/DashboardPage/components/DashBoard/index.js","pages/MainPage/index.js","components/modals/AlertModal/index.js","components/Deactivate/index.js","pages/SitesPage/components/SitesTable/styled.js","pages/SitesPage/components/SitesTable/index.js","pages/SitesPage/index.js","configs/index.js","pages/CreateSitePage/components/CreateSite/index.js","pages/CreateSitePage/index.js","constants/index.js","pages/UsersPage/components/UsersTable/styled.js","pages/UsersPage/components/UsersTable/index.js","pages/UsersPage/index.js","pages/CreateUserPage/components/CreateUser/index.js","pages/CreateUserPage/index.js","components/DateInput/styled.js","components/DateInput/index.js","hooks/useDateScrollHeader.js","pages/StatsPage/components/Stats/index.js","pages/StatsPage/styled.js","pages/StatsPage/index.js","pages/PartnerReport1Page/components/PartnerReport/index.js","pages/PartnerReport1Page/styled.js","pages/PartnerReport1Page/index.js","pages/PartnerReport2Page/components/PartnerReport/index.js","pages/PartnerReport2Page/styled.js","pages/PartnerReport2Page/index.js","pages/PartnerReport4Page/components/PartnerReport/index.js","pages/PartnerReport4Page/styled.js","pages/PartnerReport4Page/index.js","pages/PartnerReport5Page/components/PartnerReport/styled.js","pages/PartnerReport5Page/utils.js","pages/PartnerReport5Page/components/PartnerReport/constants.js","pages/PartnerReport5Page/components/BaseTable/styled.js","pages/PartnerReport5Page/components/PartnerReport/useLocalStorageState.js","pages/PartnerReport5Page/components/BaseTable/index.js","pages/PartnerReport5Page/components/PartnerReport/PartnerTable.js","pages/PartnerReport5Page/components/PartnerReport/useContextMenu.js","pages/PartnerReport5Page/components/PartnerReport/LinksTable.js","pages/PartnerReport5Page/components/PartnerReport/WebsTable.js","pages/PartnerReport5Page/components/PartnerReport/SubsTable.js","pages/PartnerReport5Page/components/PartnerReport/index.js","pages/PartnerReport5Page/styled.js","pages/PartnerReport5Page/index.js","services/http/affiliates.js","pages/AffDataPage/components/Download/index.js","pages/AffDataPage/components/CommentField/index.js","pages/AffDataPage/components/AffTable/styled.js","pages/AffDataPage/components/AffTable/index.js","pages/AffDataPage/styled.js","pages/AffDataPage/index.js","components/SearchInput/styled.js","components/SearchInput/index.js","pages/ManualActionsPage/components/ManualActionsTable/styled.js","pages/ManualActionsPage/components/ManualActionsTable/index.js","pages/ManualActionsPage/styled.js","pages/ManualActionsPage/index.js","pages/CuratorsPage/components/CuratorsTable/index.js","pages/CuratorsPage/styled.js","pages/CuratorsPage/index.js","pages/PartnerDealsPage/components/PartnerDealsTable/styled.js","pages/PartnerDealsPage/components/helpers.js","pages/PartnerDealsPage/components/TestModal/index.js","pages/PartnerDealsPage/components/SubRow/CreateSub.js","pages/PartnerDealsPage/components/SubRow/index.js","pages/PartnerDealsPage/components/WebRow/CreateWeb.js","pages/PartnerDealsPage/components/WebRow/index.js","pages/PartnerDealsPage/components/TableRow/index.js","pages/PartnerDealsPage/components/AddRow/index.js","pages/PartnerDealsPage/components/PartnerDealsTable/index.js","pages/PartnerDealsPage/styled.js","pages/PartnerDealsPage/index.js","pages/PartnerWebPage/components/PartnerWebTable/styled.js","pages/PartnerWebPage/components/TableRow/index.js","pages/PartnerWebPage/components/PartnerWebTable/index.js","pages/PartnerWebPage/styled.js","pages/PartnerWebPage/index.js","pages/MegaChatPage/components/MegaChatTable/styled.js","pages/MegaChatPage/components/TableRow/index.js","pages/MegaChatPage/components/MegaChatTable/index.js","pages/MegaChatPage/styled.js","pages/MegaChatPage/index.js","pages/AffBalancePage/components/AffBalanceTable/index.js","pages/AffBalancePage/styled.js","pages/AffBalancePage/index.js","pages/AffLinksPage/components/Download/index.js","pages/AffLinksPage/components/AffLinksTable/index.js","pages/AffLinksPage/styled.js","pages/AffLinksPage/index.js","pages/ActionsPage/styled.js","pages/ActionsPage/components/ChangePassword/index.js","pages/ActionsPage/components/CheckUser/index.js","pages/ActionsPage/components/CheckBalance/SurePopup.js","pages/ActionsPage/components/CheckBalance/index.js","pages/ActionsPage/index.js","pages/AllPage/components/DashBoard/styled.js","pages/AllPage/components/DashBoard/index.js","pages/AllPage/components/SumBoard/styled.js","pages/AllPage/components/SumBoard/index.js","pages/AllPage/components/DateFilter/index.js","pages/AllPage/index.js","pages/ReportPage/components/Dashboard/styled.js","pages/ReportPage/components/Dashboard/index.js","pages/HighRollersPage/Download.js","pages/ReportPage/index.js","pages/HighRollersPage/Table.js","pages/HighRollersPage/index.js","pages/AffSales/Table.js","pages/AffSales/index.js","pages/OptimizationPage/components/styled.js","pages/OptimizationPage/components/OptimizationTable.js","pages/OptimizationPage/index.js","pages/PaymentsPage/components/PaymentsTable/styled.js","pages/PaymentsPage/components/PaymentsTable/index.js","pages/PaymentsPage/index.js","pages/StatisticsPage/components/Statistics/configs.js","pages/StatisticsPage/components/Statistics/graphOptions.js","pages/StatisticsPage/components/Statistics/styled.js","services/storage/cache.js","pages/StatisticsPage/components/Statistics/SettingsModal.js","pages/StatisticsPage/components/Statistics/index.js","pages/StatisticsPage/index.js","pages/MonthlyReport/styled.js","pages/MonthlyReport/index.js","pages/PartnerStatsPage/utils.js","pages/PartnerStatsPage/components/AgeFilter/index.js","pages/PartnerStatsPage/components/ConditionFilter/index.js","components/renderLoadingContent.js","pages/PartnerStatsPage/PartnerStats/styled.js","pages/PartnerStatsPage/PartnerStats/index.js","pages/PartnerStatsPage/index.js","pages/ForgotPasswordPage/index.js","pages/ChangePasswordPage/index.js","pages/LinksPage/index.js","pages/NewStatisticsPage/Filters.js","pages/NewStatisticsPage/config.js","pages/NewStatisticsPage/styled.js","pages/NewStatisticsPage/CommonTableRow.js","pages/NewStatisticsPage/ThirdLayerRow.js","pages/NewStatisticsPage/SecondLayerRow.js","pages/NewStatisticsPage/StatisticsTable.js","pages/NewStatisticsPage/SettingsModal.js","pages/NewStatisticsPage/index.js","router/AppRoute/index.js","index.js"],"names":["Storage","type","get","item","localStorage","getItem","JSON","parse","save","setItem","stringify","delete","removeItem","this","getRoleFromToken","token","base64","split","replace","jsonPayload","decodeURIComponent","atob","map","c","charCodeAt","toString","slice","join","parsed","findRole","Object","keys","find","key","includes","getEmailFromToken","getIdFromToken","baseURL","http","axios","create","withCredentials","headers","interceptors","request","use","a","TokenStorage","newRequest","Authorization","error","Promise","reject","response","undefined","err","status","config","__isRetryRequest","payload","refreshToken","resolve","post","then","catch","RefreshTokenStorage","data","accessToken","signIn","logOut","watchSignIn","watchLogOut","SIGNIN_REQUEST","SIGNIN_SUCCESS","SIGNIN_FAILURE","LOGOUT_REQUEST","LOGOUT_SUCCESS","initialState","authenticated","authError","loading","user","role","id","call","UserStorage","email","put","SiteStorage","takeEvery","formNavigation","state","field","navigation","isOpen","TOGGLE_SIDEBAR","TOGGLE_FOLDER","CHOOSE_SITE","TOGGLE_HEADER_DATE","sidebarIsOpen","choosedSiteId","isDateHeaderShow","dateHeader","icon","name","toggleHeaderDate","date","flag","SET_PARTNERS","partners","rootReducer","combineReducers","auth","action","app","users","root","all","fork","authWatchers","createReduxStore","createStore","sagaMiddleware","createSagaMiddleware","middleware","ProtectedRoute","Component","component","rest","render","props","to","pathname","from","location","TopBar","setChooseSite","siteId","chooseSite","collapse","sites","onClick","bind","toggle","handleToggleClickA","setState","dropdownOpen","onSideNavToggleClick","site","prevProps","navStyle","paddingLeft","transition","requestLogOut","className","light","expand","scrolling","fixed","style","zIndex","lineHeight","marginleft","verticalAlign","cursor","color","size","right","flexDirection","nav","caret","minWidth","maxHeight","overflowY","active","mapDispatchToProps","toggleSideBar","connect","obj","url","Container","styled","div","NavLink","isSelected","Link","L","isactive","SideNavigation","reports","affiliates","onFolderClick","renderSiteFolder","navigationConfig","k","getUserRole","renderNavsDependRole","push","folder","Fragment","renderLink","text","onLinkClick","bg","mask","breakWidth","triggerOpening","React","withRouter","MainContainer","children","fluid","middle","center","md","LoginPage","password","onBtnPress","requestSignIn","onInputChange","value","inputType","handleForgotPassword","history","openSnackbar","onChange","e","target","required","label","group","validate","success","textDecoration","withSnackbar","backgroundColor","SignalR","onNewMessage","allSitesConnected","useState","connection","setConnection","useSelector","isRetried","setRetried","setupSignalRConnect","newConnection","signalR","withUrl","accessTokenFactory","configureLogging","build","useEffect","start","result","invoke","on","message","refresh","stop","mounted","useRef","current","unubscribeSiteId","CardBlock","todayAmount","yesterdayAmount","xl","tag","floating","padding","col","GRAPH_OPTIONS","fill","lineTension","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","pointBorderColor","pointBackgroundColor","pointBorderWidth","pointHoverRadius","pointHoverBackgroundColor","pointHoverBorderColor","pointHoverBorderWidth","pointRadius","pointHitRadius","Dashboard","dataLine","labels","datasets","borderColor","dataLine1","todayPurchase","todayPurchaseLoading","todayFillProfile","todayFillProfileLoading","yesterdayPurchase","yesterdayPurchaseLoading","yesterdayFillProfile","yesterdayFillProfileLoading","yesterdayTotalAmount","yesterdayTotalAmountLoading","todayTotalAmount","todayTotalAmountLoading","todayConfirmedEmails","todayConfirmedEmailsLoading","yesterdayConfirmedEmails","conversationInfo","yesterdayFpEc","todayFpEc","FpEc","yesterdayEcFb","todayEcFb","EcFb","yesterdayFbRb","todayFbRb","FbRb","fetchInfo","params","SiteId","ActionType","Date","moment","subtract","format","count","fillCount","purchaseCount","yesterdayTotal","todayTotal","amount","From","To","Action1","Action2","conversationInfo1","conversion","reverse","conversationInfo2","conversationInfo3","prevState","m","cascade","height","options","responsive","MainPage","AlertModal","onDelete","onClose","visible","Deactivate","isModalVisible","setModalVisible","domElement","SitesTable","deleteSite","activeTab","activeItem","isDeleted","domain","uid","SitesPage","succesOptions","failureOptions","siteUrlsConfig","3","8","37","sitesConfig","initialSiteForm","CreateSite","useSnackbar","openSuccessSnackbar","openFailureSnackbar","siteForm","setSiteForm","createSite","console","log","CreateSitePage","ROLES","0","1","2","4","rub_to_usd","UsersTable","deleteUser","setActiveTab","sortedUsers","_","orderBy","u","classicTabs","tabId","filter","roles","r","Boolean","isRoleFit","UsersPage","userId","initialUserForm","CreateUser","formSites","setFormSites","userForm","setUserForm","createUser","createdUser","i","s","getValue","val","parseInt","selected","multiple","param","checked","CreateUserPage","length","Input","ItemsContainer","Option","defaultFormat","startOf","endOf","DateInput","loadData","ref","setOpen","selectedLabel","setSelectedLabel","prevOpen","usePrevious","o","handleClickOutside","event","contains","handleClose","document","addEventListener","removeEventListener","onCustomChange","lg","option","useDateScrollHeader","deps","dispatch","useDispatch","handleScroll","window","scrollY","sortedBySending","setSortedBySending","columns","rows","stats","setStats","setLoading","initialLoading","setInitialLoading","dateForm","setDateForm","Param","Param2","form","setForm","totalCount","sales","sumBy","coins","fillProfiles","money","registrations","confirmed","ftd","fontWeight","width","fontStyle","getTextContent","isSearchable","styles","control","marginTop","placeholder","p","isClearable","narrow","noBottomColumns","displayEntries","searching","finallRows","sortBy","param2","sortedData","infoLabel","entries","info","onSort","sortObj","column","direction","StatsPage","isAdmin","setUsers","partnersUsers","getUsers","UserId","sortable","paging","PartnerReport1Page","formatData","purchases","fillProfilesPayout","PartnerReport2Page","PartnerReport4Page","StepLink","span","css","RoiCell","td","roi","typeColors","TypeCell","Menu","top","left","str","isNaN","parseFloat","Number","countRoi","turnover","investment","payoutCurrency","turnoverCurrency","investmentInUsd","turnOverInUsd","toLowerCase","toFixed","convertDataToUsd","valueKey","currencyKey","countTotals","countPayload","totals","currency","countAverageRoi","turnoversInUsd","investmentsInUsd","turnoverSum","sum","investmentSum","convertCurrencyToSymbol","partnerHeaders","linksTableHeaders","websTableHeaders","subsTableHeaders","Th","th","isSorting","useLocalStorageState","initialValue","storedValue","BaseTable","rowRender","initialSort","rowKey","sorting","setSorting","striped","header","onSortClick","PartnerTable","onSelectPartner","formattedData","partnerEmail","partnerTotals","ffd","onDoubleClick","useContextMenu","clicked","setClicked","x","y","points","setPoints","handleClick","handleContainerClick","preventDefault","nativeEvent","layerX","layerY","LinksTable","onSelectLink","selectedPartner","RowComp","linkItem","isActive","position","linkId","linkUid","onContextMenu","open","origin","linkName","actionName","countAll","dailyLimit","payout","WebsTable","onSelectWeb","selectedLink","selectedLinkUid","webItem","web","SubsTable","selectedWeb","subItem","sub","steps","PartnerReport","setInfo","currentStep","setCurrentStep","setSelectedPartner","setSelectedLink","setSelectedLinkUid","webData","setWebData","setSelectedWeb","subData","setSubData","useLocation","queryParams","URLSearchParams","search","step","webId","PartnerLinkId","onLoad","payoutWithoutCurrency","onClickApply","grouped","groupBy","userEmail","filteredByFillProfiles","filteredByPurchases","totalFillProfiles","totalPurchases","formatted","link","WebId","onWebToggle","onLinkToggle","onPartnerToggle","PartnerReport5Page","ExcelFile","ReactExport","ExcelSheet","ExcelColumn","Download","getCuratorsString","curators","forEach","index","filename","element","isEditing","setEditing","inputValue","setInputValue","comment","onSaveClick","small","RowsTest","Index","allData","setAllData","setCurators","affData","setAffData","curatorName","recalculateTotal","onDropChange","itemCurators","curatorsData","addedElements","difference","deletedElements","renderDropDownWithmultiple","dropParams","curator","filteredData","avgPerDayWeek","Math","round","avgPerDayMonth","sort","add","formattedWithCurators","curatorsDrop","commentField","getRows","sm","Array","AffDataPage","SearchContainer","SearchInput","setData","totalSum","setTotalSum","searchText","setSearchText","textAlign","sortedByOnline","setSortedByOnline","setFinalData","renderSendButton","sending","onButtonPress","renderOnlineStatus","borderRadius","online","renderDropDown","batch","items","sendingButton","batchDrop","onlineStatus","profileId","sentToday","dataWithFormattedBatch","filteredBySearch","filteredRows","ManualActionsPage","ManualActionsTable","setError","getCurators","createCurator","deleteCurator","display","CuratorsPage","AddButton","disabled","AddText","CollapseButton","getOperatorText","operatorValue","operators","getRestrictionByType","restrictions","propertyName","renderRestrictionEdit","onRestrictionChange","clearRestriction","alignItems","operatorText","getOperatorValue","propertyOperator","operator","propertyValue","border","mapRestrictionToLabel","ipinfo_country","TestModal","onSave","actionType","testLink","setTestLink","onSubmit","opacity","geoOperators","ageOperators","CreateSub","partnerDealId","refetch","finalRestrictions","setFinalRestrictions","subId","onFormChange","property","testRestrictions","restrictionIndex","findIndex","newRestriction","isNew","onRestrictionClear","filtered","onSavePress","alert","objectId","branch","parent","restriction","colSpan","maxWidth","renderPayoutEdit","renderStatusEdit","renderDailyLimitEdit","findValue","SubRow","subs","selectedUserId","refetchSubs","isCreate","setIsCreate","setRestrictions","deletedRestrictions","setDeletedRestrictions","row","setRow","filterSubId","setFilterSubId","getSubStatus","saveStatus","dailyLimitRestriction","patch","body","deletedPromises","deletedRestriction","addedRestrictions","addPromises","addedRestriction","changedRestrictions","changedPromises","changedRestriction","deleted","flex","justifyContent","marginRight","editSub","onEditClick","CreateWeb","WebRow","webs","newRestrictions","subRestrictions","setSubs","expandedWeb","setExpandedWeb","initialRestrictions","setInitialRestrictions","filterWebId","setFilterWebId","finalWebs","setFinalWebs","onFieldChange","innerProp","getRowStatus","changedWebIndex","handleOpenSub","editWeb","w","currencies","TableRow","landings","getInfo","onCopyClick","actions","isEditable","setEditable","isTestModalOpen","setTestModalOpen","isExpanded","setIsExpanded","isDeep","outerProp","findRestrictionIndex","saveRestrictions","changed","added","oldResctrictions","differenceBy","addedPromises","actionTypeId","partnerLinkId","partnerLink","postback","currencyName","siteLandingId","l","siteLanding","getSitelanding","affLink","navigator","clipboard","writeText","whiteSpace","AddRow","setAdding","copyRow","resetCopyRow","initialRow","links","setLinks","isLinkNameDisabled","setLinkNameDisabled","getLinks","linksData","prop","uniqueDealCheck","isUnique","isExistLink","linkData","formatLandings","setOperators","collapsed","setCollapsed","isAdding","setPartners","setLandings","resize","innerWidth","fetchOperators","payOut","operation","setFilter","loadingInfo","setLoadingInfo","setNewRestrictions","restrictionsSub","setRestrictionsSub","getPartners","getLandings","getActions","setActions","test","getWebs","deals","promises","deal","allSettled","resolved","final","b","localeCompare","indexToCheck","landingData","exclude","webRestrictions","filteredDealsBySiteId","onFilterChange","filterInfo","aValue","bValue","String","setCopyRow","partner","bordered","textWhite","PartnerDealsPage","oldDailyLimit","isDailyLimitValid","dailyLimitSum","createDate","PartnerWebTable","websWithSum","countDailyLimitSum","findDeal","PartnerWebPage","withSorting","PagingContainer","isMessagesShow","setMessagesShow","enabled","setEnabled","limit","setLimit","m1","setM1","m2","setM2","userid","profileid","done","addmethod","onSetEnabled","isLimitEditable","setLimitEditable","limitLoading","setLimitLoading","saveLimit","onCancelEditLimit","parentElement","ind","marginLeft","setSearchTest","currentPage","setCurrentPage","totalPages","setTotalPages","cancelTokenSource","CancelToken","source","cancelToken","megaChatData","ceil","isCancel","fetchData","cancel","isString","toLocaleLowerCase","filtered1","filtered2","filtered3","startsWith","useMemo","pageNumber","h","MegaChatPage","getTypeName","typeid","getPaymentMaleIdName","payment","maleid","end","typeId","paymentMethod","maleProfileId","AffBalancePage","AffLinksPage","ChangePassword","setEmail","setPassword","updatePassword","CheckUser","input","setInput","isFound","setFound","foundUser","setFoundUser","checkUser","src","imgUrl","SurePopup","onConfirm","isLoading","CheckBalance","isResetModalVisible","setResetModalVisible","setType","confirmLoading","setConfirmLoading","addition","setAddition","checkBalance","onAdditionClick","onAddClick","isInteger","onResetBalance","ActionsPage","values","todayConversion","yesterdayConversion","todayFtd","yesterdayFtd","SumBoard","formatSum","total","DateFilter","max","ReportPage","increment","sumed","testValues","getTodayParams","getYesterdayParams","periodDate","isTodayInPeriod","fromDate","toDate","today","isBetween","updateValues","quantity","httpAff","groupedTodayConversion","formattedTodayConversion","countTodayConversion","groupedYesterdayConversion","formattedYesterdayConversion","countYesterdayConversion","getData","HighRollersPage","setItems","day","chats","AffSalesPage","dropdownOptions","dropdownOptions2","OptimizationTable","Name","Value","Param1","isSecondParamClear","Start","End","Cost","calculateRoi","useCallback","moneyAmount","counted","isFormEmpty","param1","emailConfirmed","OptimizationPage","loaded","setLoaded","noDataFound","setNoDataFound","maleId","setMaleId","finallArr","balance","reduce","previousValue","currentValue","currentIndex","fid","href","renderMainTable","PaymentsPage","groupParams","main2","graphOptionsTypes","TABLE_HEADERS","siteIds","selectOptions","LINE_GRAPH_OPTIONS","scales","xAxes","gridLines","yAxes","ticks","callback","beginAtZero","SettingRow","setting","onChangeSetting","isEnabled","marginBottom","settingsInitial","groups","filters","SettingsModal","settingsConfig","toggleAllSelectSettings","settings","isMobile","selectedMobileTab","setSelectedMobileTab","isSelectedAll","currentArray","isGroupSelected","newConfig","minHeight","borderBottom","toUpperCase","onToggleGroupSetting","dataBar","ageOptions","osOptions","Statistics","initialSettingsConfig","setSettingsConfig","partnerOptions","setPartnerOptions","isSettingsVisible","setSettingsVisible","isHided","setIsHided","tabs","t","isToggled","isEmpty","setEmpty","age","linkid","month","sub_id","userrole","utm_campaign","utm_source","web_id","filterForm","setFilterForm","activeGroupParam","setActiveGroupParam","selectedChartType","setSelectedChartType","groupParam","filterId","grouping","countSum","sortByDate","isReverse","floor","urlString","encodeURIComponent","formatDateMonth","withoutDayFormat","lineChartData","barChartData","renderDropdown","renderInput","generateCsv","tableConfig","results","signUps","sms4Plus35","survey","finalResults","isMulti","chartProps","chartData","ColumnLink","nonEmptyFilterForm","query","qs","renderFirstColumn","renderMainContent","configGroup","currentConfigGroup","newSettingsConfig","StatisticsPage","MonthlyReportPage","collapseID","setCollapseID","dates","setDates","convertToUsd","actionPayoutSum","partnerDealCurrency","totalActionSum","groupedByUser","tableRows","fieldName","tagClassName","moneyTotal","payoutTotal","moneyCurrency","payoutTotalInUsd","moneyTotalInUsd","countProfit","AgeFilter","ConditionFilter","setOperator","setValue","finalValue","v","renderLoadingContent","content","PartnerStats","setSites","country","groupingItems","isFiltering","filterParam","redirectParam","setGrouping","getSites","filteredSites","selectedSite","onFilterFormChange","partnerUsers","sorted","Grouping","StartDate","EndDate","PartnerId","Age","Payout","DailyLimit","LinkId","Country","payoutAmount","closeMenuOnSelect","multiValue","sortData","payoutAmountCurrency","moneyAmountCurrency","profit","findGrouping","onGroupingItemClick","firstPurchases","purchaseAmount","PartnerStatsPage","ForgotPasswordPage","handleResetPassword","ChangePasswordPage","repeatPassword","setRepeatPassword","useHistory","code","LinksPage","setIsLoading","newLanding","setNewLanding","types","setTypes","addNewLanding","deleteLanding","landingId","land","gap","weight","overflow","Filters","groupingOptions","loadingGrouping","setIsSettingsVisible","filtersConfig","handleSubmit","fetchPartnerOptions","first","menu","selectedOption","second","third","CommonTableRow","handleRowClick","level","setHidedRows","hidedRows","cells","condition","registration","fillProfile","posted","textTransform","cell","ThirdLayerRow","innerData","setInnerData","baseParams","SecondLayerRow","StatisticsTable","NewStatisticsPage","SubId","UtmCampaign","UtmSource","setGroupingOptions","setLoadingGrouping","loadGrouping","fetchInitialData","groupSettings","fileterdGroupingOptions","AppRouter","windowWidth","sideNavToggled","handleResize","toggleSideNav","getInitialPage","isPartner","isAffiliate","updateOnlineStatus","onLine","dynamicLeftPadding","isManager","SideBar","routeName","margin","path","AllPage","LandingsRotator","PureComponent","store","applyMiddleware","run","rootSaga","configureStore","authInitialState","appInitialState","ReactDOM","StrictMode","AppRoute","getElementById"],"mappings":"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","file":"static/js/main.aea99757.chunk.js","sourcesContent":["export default class Storage {\n constructor(type) {\n this.type = type;\n }\n \n get = () => {\n const item = localStorage.getItem(`MediaMars-${this.type}`);\n \n return JSON.parse(item);\n };\n \n save = item => localStorage.setItem(`MediaMars-${this.type}`, JSON.stringify(item));\n \n delete = () => localStorage.removeItem(`MediaMars-${this.type}`);\n \n }\n ","import Storage from './index';\n\nclass TokenStorage extends Storage {\n constructor() {\n super('Token');\n }\n}\n\nexport default new TokenStorage();\n","import Storage from './index';\n\nclass UserStorage extends Storage {\n constructor() {\n super('User');\n }\n}\n\nexport default new UserStorage();\n","import Storage from './index';\n\nclass SiteStorage extends Storage {\n constructor() {\n super('Site');\n }\n}\n\nexport default new SiteStorage();\n","export const getExpTimeFromToken = (token) => {\n var base64Url = token.split('.')[1];\n var base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');\n var jsonPayload = decodeURIComponent(atob(base64).split('').map(function(c) {\n return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);\n }).join(''));\n const parsed = JSON.parse(jsonPayload)\n return parsed.exp;\n};\n\nexport const getRoleFromToken = (token) => {\n var base64Url = token.split('.')[1];\n var base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');\n var jsonPayload = decodeURIComponent(atob(base64).split('').map(function(c) {\n return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);\n }).join(''));\n const parsed = JSON.parse(jsonPayload)\n const findRole = Object.keys(parsed).find(key => key.includes('/role'));\n if (typeof parsed[findRole] === 'object') {\n return parsed[findRole][0];\n } else {\n return parsed[findRole]\n }\n};\n\nexport const getEmailFromToken = (token) => {\n var base64Url = token.split('.')[1];\n var base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');\n var jsonPayload = decodeURIComponent(atob(base64).split('').map(function(c) {\n return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);\n }).join(''));\n const parsed = JSON.parse(jsonPayload)\n const findName = Object.keys(parsed).find(key => key.includes('/emailaddress'));\n return parsed[findName]\n};\n\nexport const getIdFromToken = (token) => {\n var base64Url = token.split('.')[1];\n var base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');\n var jsonPayload = decodeURIComponent(atob(base64).split('').map(function(c) {\n return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);\n }).join(''));\n const parsed = JSON.parse(jsonPayload)\n const findId = Object.keys(parsed).find(key => key.includes('/nameidentifier'));\n return parsed[findId];\n};\n","import Storage from './index';\n\nclass RefreshTokenStorage extends Storage {\n constructor() {\n super('RefreshToken');\n }\n}\n\nexport default new RefreshTokenStorage();\n","import axios from 'axios';\nimport TokenStorage from '../storage/token';\nimport RefreshTokenStorage from '../storage/refreshToken';\n\nconst urlsConfig = {\n prod: \"https://datasystem.azurewebsites.net\",\n test: \"https://datasystem-dev.azurewebsites.net\",\n}\n\nconst isDev = false;\n\nexport const baseURL = isDev ? urlsConfig.test : urlsConfig.prod;\n\n\nconst http = axios.create({\n withCredentials: false,\n baseURL,\n headers: {'Content-Type': 'application/json'},\n});\n\nconst refreshToken = (token) => {\n const payload = {\n refreshToken: token\n }\n const headers = {\n 'Content-Type': 'application/json'\n }\n return new Promise((resolve, reject) => {\n return axios.post(`${baseURL}/auth/refresh`, payload, { headers: headers }).then(response => {\n resolve(response)\n }).catch((error) => {\n reject(error)\n })\n })\n \n}\n\nhttp.interceptors.request.use(\n async request => {\n const token = TokenStorage.get();\n const newRequest = {...request};\n if (token) {\n newRequest.headers.Authorization = `Bearer ${token}`;\n }\n return newRequest;\n },\n error => {\n return Promise.reject(error)\n },\n);\n\nhttp.interceptors.response.use(undefined, err => {\n const error = err.response;\n if (error?.status===401 && error?.config && \n !error?.config.__isRetryRequest) {\n const refresh = RefreshTokenStorage.get();\n return refreshToken(refresh).then(response => {\n error.config.__isRetryRequest = true;\n TokenStorage.save(response.data.accessToken);\n error.config.headers.Authorization = `Bearer ${response.data.accessToken}`;\n return http(error.config);\n });\n } \n})\n\nexport default http;\n","import {\n takeEvery,\n put,\n call,\n} from 'redux-saga/effects';\nimport { getIdFromToken, getRoleFromToken, getEmailFromToken } from '../../helpers';\nimport http from '../../services/http';\nimport TokenStorage from '../../services/storage/token';\nimport RefreshTokenStorage from '../../services/storage/refreshToken';\nimport UserStorage from '../../services/storage/user';\nimport SiteStorage from '../../services/storage/site';\n\nconst SIGNIN_REQUEST = 'auth/SIGNIN_REQUEST';\nconst SIGNIN_SUCCESS = 'auth/SIGNIN_SUCCESS';\nconst SIGNIN_FAILURE = 'auth/SIGNIN_FAILURE';\n\nconst LOGOUT_REQUEST = 'auth/LOGOUT_REQUEST';\nconst LOGOUT_SUCCESS = 'auth/LOGOUT_SUCCESS';\n\nexport const initialState = {\n authenticated: false,\n authError: 200,\n loading: false,\n user: {\n role: '',\n id: null,\n },\n};\n\nexport default function reducer(state = initialState, action = {}) {\n switch (action.type) {\n case SIGNIN_REQUEST:\n return {...state, authError: 200, loading: true};\n case SIGNIN_SUCCESS:\n return {\n ...state,\n authenticated: true,\n loading: false,\n user: action.user,\n };\n case SIGNIN_FAILURE:\n return {...state, authError: action.status, loading: false};\n\n case LOGOUT_REQUEST:\n return {...state};\n case LOGOUT_SUCCESS:\n return {...initialState, authenticated: false}\n\n default:\n return state;\n }\n}\n\n// <<>>\nexport const requestSignIn = payload => ({\n type: SIGNIN_REQUEST,\n payload,\n});\n\nexport const requestLogOut = () => ({\n type: LOGOUT_REQUEST,\n});\n\n// <<>>\n\nfunction* signIn({payload}) {\n try {\n const {data} = yield call(http.post, '/auth/login', payload);\n yield call(UserStorage.save, {\n // email: payload?.email || '',\n role: getRoleFromToken(data.token),\n id: getIdFromToken(data.token),\n email: getEmailFromToken(data.token),\n });\n yield call(TokenStorage.save, data.token);\n yield call(RefreshTokenStorage.save, data.refreshToken);\n yield put({\n type: SIGNIN_SUCCESS,\n user: {\n role: getRoleFromToken(data.token),\n id: getIdFromToken(data.token),\n email: getEmailFromToken(data.token),\n },\n });\n } catch (error) {\n yield put({\n type: SIGNIN_FAILURE,\n status: error?.response?.status === 400 || error?.response?.status === 401 ? 400 : 500,\n });\n }\n}\n\nfunction* logOut() {\n yield call(TokenStorage.delete);\n yield call(UserStorage.delete);\n yield call(SiteStorage.delete);\n yield put({\n type: LOGOUT_SUCCESS,\n });\n}\n\n// <<>>\nexport function* watchSignIn() {\n yield takeEvery(SIGNIN_REQUEST, signIn);\n}\n\nexport function* watchLogOut() {\n yield takeEvery(LOGOUT_REQUEST, logOut);\n}\n","export const formNavigation = (state, field) => {\n return {\n ...state,\n navigation: {\n ...state.navigation,\n [field]: {\n ...state.navigation[field],\n isOpen: !state.navigation[field].isOpen,\n },\n },\n };\n};","import { formNavigation } from \"./helpers\";\n\nconst TOGGLE_SIDEBAR = 'app/TOGGLE_SIDEBAR';\nconst TOGGLE_FOLDER = 'app/TOGGLE_FOLDER';\nconst CHOOSE_SITE = 'app/CHOOSE_SITE';\nconst TOGGLE_HEADER_DATE = 'app/TOGGLE_HEADER_DATE';\n\nexport const initialState = {\n sidebarIsOpen: false,\n choosedSiteId: 3,\n isDateHeaderShow: false,\n dateHeader: '',\n navigation: {\n 'reports': {\n icon: \"tachometer-alt\",\n name: \"Reports\",\n isOpen: true,\n },\n 'affiliates': {\n icon: \"home\",\n name: \"Affiliates\",\n isOpen: true,\n },\n 'partners': {\n icon: \"user\",\n name: \"Partners\",\n isOpen: true,\n },\n 'users': {\n icon: \"user\",\n name: \"Users\",\n isOpen: true,\n },\n 'sites': {\n icon: \"image\",\n name: \"Sites\",\n isOpen: true,\n },\n }\n};\n\nexport default function reducer(state = initialState, action = {}) {\n switch (action.type) {\n case TOGGLE_SIDEBAR:\n return {...state, sidebarIsOpen: !state.sidebarIsOpen};\n\n case TOGGLE_FOLDER:\n return formNavigation(state, action.field)\n\n case CHOOSE_SITE:\n return {...state, choosedSiteId: action.choosedSiteId}\n \n case TOGGLE_HEADER_DATE:\n return { ...state, dateHeader: action.dateHeader, isDateHeaderShow: action.flag }\n default:\n return state;\n }\n}\n\n// <<>>\nexport const toggleSideBar = () => ({\n type: TOGGLE_SIDEBAR,\n});\n\nexport const toggleFolder = (field) => ({\n type: TOGGLE_FOLDER,\n field,\n});\n\nexport const chooseSite = (siteId) => ({\n type: CHOOSE_SITE,\n choosedSiteId: siteId,\n});\n\nexport const toggleHeaderDate = (date, flag) => ({\n type: TOGGLE_HEADER_DATE,\n dateHeader: date,\n flag\n})\n","const SET_PARTNERS = 'users/SET_PARTNERS';\n\nexport const initialState = {\n partners: [],\n};\n\nexport default function reducer(state = initialState, action = {}) {\n switch (action.type) {\n case SET_PARTNERS:\n return {...state, partners: action.partners};\n\n default:\n return state;\n }\n}\n\n// <<>>\nexport const setPartners = partners => ({\n type: SET_PARTNERS,\n partners,\n});\n\n","import {combineReducers} from 'redux';\n\nimport auth from './auth';\nimport app from './app';\nimport users from './users';\n\nconst rootReducer = combineReducers({\n auth,\n app,\n users,\n});\n\nexport default rootReducer;\n","import {all, fork} from 'redux-saga/effects';\n\nimport * as authWatchers from './auth';\n\nexport default function* root() {\n yield all([\n fork(authWatchers.watchSignIn),\n fork(authWatchers.watchLogOut),\n ]);\n}\n","import {createStore, applyMiddleware} from 'redux';\nimport createSagaMiddleware from 'redux-saga';\n\nimport rootReducer from './reducers';\nimport rootSaga from './sagas';\n\nlet createReduxStore = createStore;\nconst sagaMiddleware = createSagaMiddleware();\n\nconst middleware = [sagaMiddleware];\n\nexport default function configureStore(initialState) {\n const store = createReduxStore(\n rootReducer,\n initialState,\n applyMiddleware(...middleware),\n );\n sagaMiddleware.run(rootSaga);\n return store;\n}","import React from 'react';\nimport { Route, Redirect } from 'react-router-dom';\n\nconst ProtectedRoute = ({ component: Component, authenticated, ...rest }) => (\n {\n if (authenticated) {\n return ;\n }\n return ;\n }}\n />\n);\n\nexport default ProtectedRoute;\n","import React, { Component } from 'react';\nimport { BrowserRouter as Router } from 'react-router-dom';\nimport {\n MDBNavbar,\n MDBNavbarBrand,\n MDBNavbarNav,\n MDBIcon,\n MDBDropdown,\n MDBDropdownToggle,\n MDBDropdownMenu,\n MDBDropdownItem,\n} from 'mdbreact';\nimport { connect } from 'react-redux';\n\nimport SiteStorage from '../../services/storage/site';\nimport { toggleSideBar, chooseSite } from '../../store/app';\nimport { requestLogOut } from '../../store/auth';\n\nimport http from '../../services/http';\n\nclass TopBar extends Component {\n constructor(props) {\n super(props);\n this.state = {\n collapse: false,\n sites: [],\n };\n this.onClick = this.onClick.bind(this);\n this.toggle = this.toggle.bind(this);\n this.handleToggleClickA = this.handleToggleClickA.bind(this);\n }\n\n onClick() {\n this.setState({\n collapse: !this.state.collapse\n });\n }\n\n toggle() {\n this.setState({\n dropdownOpen: !this.state.dropdownOpen\n });\n }\n\n handleToggleClickA() {\n this.props.onSideNavToggleClick();\n }\n async componentDidMount() {\n const {choosedSiteId, chooseSite} = this.props;\n const {data} = await http.get('/sites/foradminpanel');\n this.setState({sites: data});\n if (!(data.find(site => site.id === choosedSiteId))) {\n chooseSite(data[0].id);\n }\n }\n\n async componentDidUpdate(prevProps) {\n if (this.props.authenticated !== prevProps.authenticated) {\n const {data} = await http.get('/sites/foradminpanel');\n this.setState({sites: data});\n }\n }\n\n setChooseSite = (siteId) => {\n const {chooseSite} = this.props;\n SiteStorage.save(siteId);\n chooseSite(siteId)\n };\n\n render() {\n const navStyle = {\n paddingLeft: this.props.toggle ? '16px' : '240px',\n transition: 'padding-left .3s'\n };\n const { requestLogOut, choosedSiteId, isDateHeaderShow, dateHeader } = this.props;\n const {sites} = this.state;\n return (\n \n \n \n \n \n\n \n {sites.find(site => site.id === choosedSiteId)?.name}\n \n {isDateHeaderShow &&
{dateHeader}
}\n \n \n \n {' '}\n Sites\n \n \n {sites.map(site => site.id === choosedSiteId)?.name === site.name} key={site.id} onClick={() => this.setChooseSite(site.id)}>{site.name})}\n \n \n \n \n {' '}\n Profile\n \n \n Log Out\n \n \n \n \n
\n );\n }\n}\n\nconst mapStateToProps = ({auth, app}) => ({\n authenticated: auth.authenticated,\n choosedSiteId: app.choosedSiteId,\n dateHeader: app.dateHeader,\n isDateHeaderShow: app.isDateHeaderShow,\n});\n\nconst mapDispatchToProps = {\n toggleSideBar,\n requestLogOut,\n chooseSite,\n}\nexport default connect(mapStateToProps, mapDispatchToProps)(TopBar);\n","const obj = {\n 'admin': {\n 'reports': [\n {\n name: 'Statistics',\n url: '/',\n },\n \n {\n name: 'Dashboard',\n url: '/dashboard',\n },\n {\n name: 'ByRegDate',\n url: '/by-reg-date',\n },\n {\n name: 'All',\n url: '/all',\n },\n {\n name: 'Optimization',\n url: '/optimization',\n },\n {\n name: 'New statistics',\n url: '/new-statistics',\n },\n ],\n 'partners': [\n // {\n // name: 'Partner stats',\n // url: '/partners/stats',\n // },\n {\n name: 'ROI report',\n url: '/partners/report5',\n },\n {\n name: 'Partner Restrictions',\n url: '/partners/partner-deals',\n },\n {\n name: 'Partner Webs',\n url: '/partners/partner-webs',\n },\n {\n name: 'Monthly report',\n url: '/monthly-report',\n },\n ],\n 'affiliates': [\n {\n name: 'Aff Data',\n url: '/aff-data',\n },\n {\n name: 'Aff Sales',\n url: '/aff-sales',\n },\n {\n name: 'Manual Actions',\n url: '/manual-actions',\n },\n {\n name: 'Curators',\n url: '/curators',\n },\n {\n name: 'Megachat',\n url: '/megachat',\n },\n {\n name: 'Balance',\n url: '/balance',\n },\n {\n name: 'Links',\n url: '/links',\n },\n {\n name: 'Actions',\n url: '/actions',\n },\n {\n name: 'HighRollers',\n url: '/high-rollers',\n },\n {\n name: 'Payments',\n url: '/payments',\n },\n ],\n 'users': [\n {\n name: 'All Users',\n url: '/users',\n },\n {\n name: 'Create User',\n url: '/create-user',\n },\n ],\n 'sites': [\n {\n name: 'All Sites',\n url: '/sites',\n },\n {\n name: 'Create Site',\n url: '/create-site',\n },\n {\n name: 'Landing rotator',\n url: '/landings-rotator'\n }\n ],\n },\n 'manager': {\n 'reports': [\n {\n name: 'Statistics',\n url: '/',\n },\n {\n name: 'ByRegDate',\n url: '/by-reg-date',\n },\n ],\n 'partners': [\n {\n name: 'ROI report',\n url: '/partners/report5',\n },\n {\n name: 'Partner Restrictions',\n url: '/partners/partner-deals',\n },\n {\n name: 'Partner Webs',\n url: '/partners/partner-webs',\n },\n {\n name: 'Monthly report',\n url: '/monthly-report',\n },\n ],\n 'sites': [\n {\n name: 'Landing rotator',\n url: '/landings-rotator'\n }\n ]\n },\n 'affiliate': {\n 'reports': [\n {\n name: 'Statistics',\n url: '/statistics',\n },\n {\n name: 'Report',\n url: '/report',\n },\n {\n name: 'All',\n url: '/all',\n },\n ],\n 'affiliates': [\n {\n name: 'Aff Data',\n url: '/aff-data',\n },\n {\n name: 'Aff Sales',\n url: '/aff-sales',\n },\n {\n name: 'Manual Actions',\n url: '/manual-actions',\n },\n {\n name: 'Megachat',\n url: '/megachat',\n },\n // {\n // name: 'Balance',\n // url: '/balance',\n // },\n {\n name: 'Links',\n url: '/links',\n },\n {\n name: 'Actions',\n url: '/actions',\n },\n {\n name: 'HighRollers',\n url: '/high-rollers',\n },\n {\n name: 'Payments',\n url: '/payments',\n },\n ],\n },\n 'partner': {\n 'reports': [\n {\n name: 'Dashboard',\n url: '/',\n },\n {\n name: 'Total',\n url: '/partners/report1',\n },\n {\n name: 'Daily',\n url: '/partners/report2',\n },\n ],\n },\n 'default': {\n 'reports': [\n {\n name: 'Statistics',\n url: '/',\n },\n {\n name: 'Dashboard',\n url: '/dashboard',\n },\n {\n name: 'ByRegDate',\n url: '/by-reg-date',\n },\n {\n name: 'Partner report 4',\n url: '/partners/report4',\n },\n {\n name: 'Partner report 5',\n url: '/partners/report5',\n },\n {\n name: 'Optimization',\n url: '/optimization',\n }\n ],\n }\n}\n\nexport default obj;","import styled from 'styled-components';\nimport {Link as L} from 'react-router-dom';\n\nexport const Container = styled.div`\n & .nav-link {\n background-color: rgba(0,0,0,0) !important;\n }\n .collapse {\n display: block;\n }\n`;\n\nexport const NavLink = styled.div`\n color: ${({isSelected}) => !isSelected ? '#424242' : '#4285f4'};\n font-size: 13px;\n transition: all 0.3s linear;\n padding-left: 23px;\n font-weight: 400;\n text-decoration: none;\n height: 36px;\n display: flex;\n align-items: center;\n cursor: pointer;\n\n .fa-angle-down {\n position: absolute;\n right: 0;\n margin-right: 1.25rem;\n transition: all .15s ease-in 0s;\n }\n \n .rotate {\n transform: rotate(180deg)\n }\n\n :hover {\n background-color: rgba(0,0,0,0.05);\n }\n`;\n\nexport const Link = styled(L)`\n padding: 0px 0px 0px 47px !important;\n color: ${({ isactive }) => isactive === \"false\" ? '#424242' : '#4285f4'} !important;\n font-size: 13px !important;\n height: 36px !important;\n display: flex !important;\n align-items: center !important;\n :hover {\n color: #4285f4 !important;\n }\n`;","import React from \"react\";\nimport { MDBSideNav, MDBNavbarBrand, MDBIcon } from \"mdbreact\";\nimport { connect } from \"react-redux\";\nimport { withRouter } from \"react-router-dom\";\nimport navigationConfig from \"./config\";\n\nimport * as S from \"./styled\";\n\nclass SideNavigation extends React.Component {\n state = {\n navigation: {\n reports: {\n icon: \"tachometer-alt\",\n name: \"Reports\",\n isOpen: true,\n },\n affiliates: {\n icon: \"home\",\n name: \"Affiliates\",\n isOpen: true,\n },\n partners: {\n icon: \"user\",\n name: \"Partners\",\n isOpen: true,\n },\n users: {\n icon: \"user\",\n name: \"Users\",\n isOpen: true,\n },\n sites: {\n icon: \"image\",\n name: \"Sites\",\n isOpen: true,\n },\n },\n };\n\n renderLink(to, text) {\n const { pathname } = this.props.location;\n return (\n \n {text}\n \n );\n }\n\n onFolderClick = (type) => {\n const { navigation } = this.state;\n navigation[type].isOpen = !navigation[type].isOpen;\n this.setState({\n navigation: { ...navigation },\n });\n };\n\n renderSiteFolder = (type, role) => {\n const { navigation } = this.state;\n const { pathname } = this.props.location;\n const isSelected =\n !navigation[type].isOpen &&\n navigationConfig[role][type].find((k) => k.url === pathname);\n return (\n this.onFolderClick(type)}\n >\n \n {navigation[type].name}\n \n \n );\n };\n\n getUserRole = () => {\n const { user } = this.props;\n const isAdmin = user?.role?.includes(\"Admin\");\n const isPartner = user?.role?.includes(\"Partner\");\n const isAffiliate = user?.role?.includes(\"Affiliate\");\n const isManager = user?.role?.includes(\"Manager\");\n\n let role = \"default\";\n if (isAdmin) {\n role = \"admin\";\n }\n if (isPartner) {\n role = \"partner\";\n }\n if (isAffiliate) {\n role = \"affiliate\";\n }\n if (isManager) {\n role = \"manager\";\n }\n return role;\n };\n\n renderNavsDependRole = () => {\n const { user } = this.props;\n const role = this.getUserRole();\n const { navigation } = this.state;\n if (user?.id === \"133\" && !navigationConfig[role]['affiliates'].find(k => k.name === 'Balance')) { //julia@bk.com\n navigationConfig[role]['affiliates'].push({ url: '/balance', name: 'Balance'})\n }\n if (user?.id === \"130\" && !navigationConfig[role]['affiliates'].find(k => k.name === 'Balance')) { //alena@bk.com\n navigationConfig[role]['affiliates'].push({ url: '/balance', name: 'Balance'})\n }\n if (user?.id === '244') {\n navigationConfig['manager'] = {\n reports: [\n {\n name: 'Statistics',\n url: '/',\n },\n ]\n }\n }\n return Object.keys(navigationConfig[role]).map((folder) => {\n return (\n
\n {this.renderSiteFolder(folder, role)}\n {navigation[folder].isOpen &&\n navigationConfig[role][folder].map((k) =>\n \n {this.renderLink(k.url, k.name)}\n \n )}\n
\n );\n });\n };\n\n render() {\n return (\n \n \n \n MediaMars\n \n {this.renderNavsDependRole()}\n \n \n );\n }\n}\n\nconst mapStateToProps = ({ app, auth }) => ({\n sidebarIsOpen: app.sidebarIsOpen,\n user: auth.user,\n});\n\nexport default withRouter(connect(mapStateToProps, null)(SideNavigation));\n","import React from 'react';\nimport { MDBContainer, MDBCol, MDBRow} from 'mdbreact';\n\nconst MainContainer = ({children}) => (\n \n \n \n {children}\n \n \n \n);\n\nexport default MainContainer;\n","import React from 'react';\nimport { MDBInput, MDBBtn, MDBSpinner } from 'mdbreact';\nimport { withSnackbar } from 'react-simple-snackbar';\nimport { connect } from 'react-redux';\n\nimport { requestSignIn } from '../../store/auth';\n\nimport MainContainer from '../../components/MainContainer';\n\nclass LoginPage extends React.Component {\n state = {\n email: '',\n password: '',\n }\n\n componentDidMount() {\n this.props.history.push('/');\n }\n componentDidUpdate(prevProps) {\n if ((prevProps.authError !== this.props.authError) && this.props.authError === 400) {\n const { openSnackbar } = this.props\n openSnackbar('You entered invalid credentials!', 3000);\n }\n if ((prevProps.authError !== this.props.authError) && this.props.authError === 500) {\n const { openSnackbar } = this.props\n openSnackbar('Something went wrong :(', 3000);\n }\n }\n\n onBtnPress = () => {\n const {email, password} = this.state;\n this.props.requestSignIn({\n email,\n password,\n });\n }\n\n onInputChange = (value, inputType) => this.setState({[inputType]: value});\n\n handleForgotPassword = () => {\n this.props.history.push('/forgot-password');\n }\n render() {\n const {loading} = this.props;\n return (\n \n
\n

Sign in

\n
\n this.onInputChange(e.target.value, 'email')}\n required\n label=\"Type your email\"\n icon=\"envelope\"\n group\n type=\"email\"\n validate\n error=\"wrong\"\n success=\"right\"\n />\n this.onInputChange(e.target.value, 'password')}\n required\n label=\"Type your password\"\n icon=\"lock\"\n group\n type=\"password\"\n validate\n />\n
\n
\n Forgot password?\n
\n
\n {loading ? : Login}\n
\n
\n
\n );\n }\n}\nconst mapStateToProps = ({auth}) => ({\n authError: auth.authError,\n loading: auth.loading,\n})\n\nconst mapDispatchToProps = {\n requestSignIn,\n}\n\nconst options = {\n style: {\n backgroundColor: 'red',\n color: 'white',\n }\n}\n\nexport default withSnackbar(connect(mapStateToProps, mapDispatchToProps)(LoginPage), options);","import styled from 'styled-components';\n\nexport const Container = styled.div`\n .preloader-wrapper.small {\n width: 2.5rem;\n height: 2.5rem;\n }\n .card-block {\n min-height: 178px;\n & .spin {\n margin: auto;\n }\n }\n .card-chart {\n height: 425px;\n & .spin {\n margin: auto;\n }\n }\n`;","import React, { useState, useEffect, useRef } from 'react';\nimport axios from 'axios';\nimport * as signalR from '@microsoft/signalr';\n\nimport TokenStorage from '../storage/token';\nimport RefreshTokenStorage from '../storage/refreshToken';\nimport { baseURL } from '../http';\nimport { useSelector } from 'react-redux';\n\nconst SignalR = ({onNewMessage, allSitesConnected = false}) => {\n const [ connection, setConnection ] = useState(null);\n\n const choosedSiteId = useSelector(state => state.app.choosedSiteId);\n \n const [isRetried, setRetried] = useState(false);\n\n const refreshToken = (token) => {\n const payload = {\n refreshToken: token\n }\n const headers = {\n 'Content-Type': 'application/json'\n }\n return new Promise((resolve, reject) => {\n return axios.post(`${baseURL}/auth/refresh`, payload, { headers: headers }).then(response => {\n resolve(response)\n }).catch((error) => {\n reject(error)\n })\n })\n \n }\n \n const setupSignalRConnect = (token) => {\n const newConnection = new signalR.HubConnectionBuilder()\n .withUrl(`${baseURL}/hubs/actions`, { accessTokenFactory: () => token })\n .configureLogging(2)\n .build();\n setConnection(newConnection);\n }\n\n useEffect(() => {\n const token = TokenStorage.get();\n setupSignalRConnect(token);\n }, []);\n\n useEffect(() => {\n if (connection) {\n connection.start()\n .then(async result => {\n setRetried(false);\n if (!allSitesConnected) {\n connection.invoke(\"Subscribe\", choosedSiteId);\n } else {\n connection.invoke(\"Subscribe\", 3);\n connection.invoke(\"Subscribe\", 8);\n }\n connection.on('Action', message => {\n onNewMessage(message);\n });\n })\n .catch(async e => {\n if (!isRetried && e?.toString().includes('Unauthorized')) {\n setRetried(true);\n const refresh = RefreshTokenStorage.get();\n const response = await refreshToken(refresh);\n TokenStorage.save(response.data.accessToken);\n setupSignalRConnect(response.data.accessToken)\n }\n });\n }\n return () => {\n if (connection) {\n connection.stop();\n }\n }\n }, [connection]);\n\n\n const mounted = useRef();\n useEffect(() => {\n if (!mounted.current) {\n mounted.current = true;\n } else {\n if (!allSitesConnected) {\n let unubscribeSiteId = choosedSiteId === 8 ? 3 : 8;\n connection.invoke(\"Unsubscribe\", unubscribeSiteId)\n connection.invoke(\"Subscribe\", choosedSiteId);\n }\n }\n }, [choosedSiteId]);\n\n return (\n
\n\n
\n );\n};\n\nexport default SignalR;","import React from 'react';\nimport { MDBRow, MDBCol, MDBCard, MDBSpinner, MDBBtn, MDBIcon } from 'mdbreact';\n\nconst CardBlock = ({todayAmount, yesterdayAmount, label, icon, color}) => {\n return (\n \n \n {true ? <>\n \n \n \n \n \n \n \n
{todayAmount}
\n

{label}

\n
\n
\n \n \n

\n Yesterday\n

\n
\n \n

{yesterdayAmount}

\n
\n
\n : }\n
\n
\n )\n}\n\nexport default CardBlock;","import moment from 'moment';\nimport React from 'react';\nimport { connect } from 'react-redux';\nimport { withSnackbar } from 'react-simple-snackbar';\nimport { MDBRow, MDBCol, MDBCard, MDBSpinner, MDBBtn, MDBIcon, MDBCardHeader, MDBCardBody } from 'mdbreact';\nimport { Line } from 'react-chartjs-2';\n\nimport http from '../../../../services/http';\n\nimport * as S from './styled';\nimport SignalR from '../../../../services/signalR';\nimport CardBlock from './CardBlock';\n\nconst GRAPH_OPTIONS = {\n fill: true,\n lineTension: 0.3,\n borderCapStyle: \"butt\",\n borderDash: [],\n borderDashOffset: 0.0,\n borderJoinStyle: \"miter\",\n pointBorderColor: \"rgb(205, 130,1 58)\",\n pointBackgroundColor: \"rgb(255, 255, 255)\",\n pointBorderWidth: 10,\n pointHoverRadius: 5,\n pointHoverBackgroundColor: \"rgb(0, 0, 0)\",\n pointHoverBorderColor: \"rgba(220, 220, 220,1)\",\n pointHoverBorderWidth: 2,\n pointRadius: 1,\n pointHitRadius: 10,\n};\n\nclass Dashboard extends React.Component {\n state = {\n loading: false,\n dataLine: {\n labels: [],\n datasets: [\n {\n ...GRAPH_OPTIONS,\n label: \"Fill profiles\",\n backgroundColor: \"rgba(225, 204, 230, .3)\",\n borderColor: \"rgb(205, 130, 158)\",\n data: []\n },\n ]\n },\n dataLine1: {\n labels: [],\n datasets: [\n {\n ...GRAPH_OPTIONS,\n label: \"Sales\",\n backgroundColor: \"rgba(225, 255 ,230, .3)\",\n borderColor: \"rgb(205, 255, 158)\",\n data: []\n },\n ]\n },\n todayPurchase: 0,\n todayPurchaseLoading: false,\n todayFillProfile: 0,\n todayFillProfileLoading: false,\n yesterdayPurchase: 0,\n yesterdayPurchaseLoading: false,\n yesterdayFillProfile: 0,\n yesterdayFillProfileLoading: false,\n yesterdayTotalAmount: 0,\n yesterdayTotalAmountLoading: false,\n todayTotalAmount: 0,\n todayTotalAmountLoading: false,\n todayConfirmedEmails: 0,\n todayConfirmedEmailsLoading: false,\n yesterdayConfirmedEmails: 0,\n conversationInfo: {\n yesterdayFpEc: 0,\n todayFpEc: 0,\n FpEc: [],\n yesterdayEcFb: 0,\n todayEcFb: 0,\n EcFb: [],\n yesterdayFbRb: 0,\n todayFbRb: 0,\n FbRb: [],\n }\n };\n\n\n async componentDidMount() {\n await this.fetchInfo();\n }\n\n componentDidUpdate(prevProps) {\n if (this.props.choosedSiteId !== prevProps.choosedSiteId) {\n this.fetchInfo();\n }\n }\n\n fetchInfo = async () => {\n try {\n const {dataLine, dataLine1} = this.state;\n const {choosedSiteId} = this.props;\n this.setState({loading: true, todayPurchaseLoading: true, todayFillProfileLoading: true, yesterdayPurchaseLoading: true, yesterdayFillProfileLoading: true, yesterdayTotalAmountLoading: true, todayConfirmedEmailsLoading: true})\n\n //FILL PROFILE FIRST BLOCK\n const {data: yesterdayFillProfile} = await http.get('/reports/report4', {\n params: {\n SiteId: choosedSiteId,\n ActionType: 'FillProfile',\n Date: moment().subtract(1, 'days').format('YYYY-MM-DD'),\n }\n });\n this.setState({yesterdayFillProfile: yesterdayFillProfile.count, yesterdayFillProfileLoading: false});\n\n const {data: todayFillProfile} = await http.get('/reports/report4', {\n params: {\n SiteId: choosedSiteId,\n ActionType: 'FillProfile',\n Date: moment().format('YYYY-MM-DD'),\n }\n });\n this.setState({todayFillProfile: todayFillProfile.count, todayFillProfileLoading: false});\n \n // EMAIL CONFIRMED SECOND BLOCK\n const {data: todayConfirmedEmails} = await http.get('/reports/report4', {\n params: {\n SiteId: choosedSiteId,\n ActionType: 'emailconfirmed',\n Date: moment().format('YYYY-MM-DD'),\n }\n });\n const {data: yesterdayConfirmedEmails} = await http.get('/reports/report4', {\n params: {\n SiteId: choosedSiteId,\n ActionType: 'emailconfirmed',\n Date: moment().subtract(1, 'days').format('YYYY-MM-DD'),\n }\n });\n\n this.setState({todayConfirmedEmails: todayConfirmedEmails.count, yesterdayConfirmedEmails: yesterdayConfirmedEmails.count, todayConfirmedEmailsLoading: false})\n \n // PURCHASE THIRD BLOCK\n const {data: todayPurchase} = await http.get('/reports/report4', {\n params: {\n SiteId: choosedSiteId,\n ActionType: 'Purchase',\n Date: moment().format('YYYY-MM-DD'),\n }\n });\n this.setState({todayPurchase: todayPurchase.count, todayPurchaseLoading: false});\n \n const {data: yesterdayPurchase} = await http.get('/reports/report4', {\n params: {\n SiteId: choosedSiteId,\n ActionType: 'Purchase',\n Date: moment().subtract(1, 'days').format('YYYY-MM-DD'),\n }\n });\n this.setState({yesterdayPurchase: yesterdayPurchase.count, yesterdayPurchaseLoading: false});\n \n const {data: fillCount} = await http.get('/reports/report3', {\n params: {\n SiteId: choosedSiteId,\n ActionType: 'FillProfile',\n }\n })\n\n const {data: purchaseCount} = await http.get('/reports/report3', {\n params: {\n SiteId: choosedSiteId,\n ActionType: 'Purchase',\n }\n })\n \n const [{ data: yesterdayTotal }, { data: todayTotal }] = await Promise.all(\n [\n http.get('/reports/report5', \n {\n params: {\n SiteId: choosedSiteId,\n Date: moment().subtract(1, 'days').format('YYYY-MM-DD'),\n }\n },\n \n ),\n http.get('/reports/report5', {\n params: {\n SiteId: choosedSiteId,\n Date: moment().format('YYYY-MM-DD'),\n }\n })\n ]\n );\n this.setState({yesterdayTotalAmount: yesterdayTotal.amount, todayTotalAmount: todayTotal.amount, yesterdayTotalAmountLoading: false });\n\n this.setState({\n dataLine: {\n ...dataLine,\n labels: fillCount.map(item => moment(item.date).format('DD/MM')),\n datasets: [\n {\n ...dataLine.datasets[0],\n data: fillCount.map(item => item.count),\n },\n ]\n },\n dataLine1: {\n ...dataLine1,\n labels: purchaseCount.map(item => moment(item.date).format('DD/MM')),\n datasets: [\n {\n ...dataLine1.datasets[0],\n data: purchaseCount.map(item => item.count),\n }\n ]\n },\n loading: false,\n })\n\n const {data: conversationInfo1} = await http.get('/reports/report6', {\n params: {\n SiteId: choosedSiteId,\n From: moment().subtract(7, 'days').format('YYYY-MM-DD'),\n To: moment().format('YYYY-MM-DD'),\n Action1: 'EmailConfirmed',\n Action2: 'FillProfile',\n }\n });\n\n this.setState({\n conversationInfo: {\n ...this.state.conversationInfo,\n yesterdayFpEc: conversationInfo1[0].conversion,\n todayFpEc: conversationInfo1[1].conversion,\n FpEc: [...conversationInfo1.reverse()],\n }\n })\n \n const {data: conversationInfo2} = await http.get('/reports/report7', {\n params: {\n SiteId: choosedSiteId,\n From: moment().subtract(7, 'days').format('YYYY-MM-DD'),\n To: moment().format('YYYY-MM-DD'),\n }\n });\n \n this.setState({\n conversationInfo: {\n ...this.state.conversationInfo,\n yesterdayEcFb: conversationInfo2[0].conversion,\n todayEcFb: conversationInfo2[1].conversion,\n EcFb: [...conversationInfo2.reverse()]\n }\n })\n \n const {data: conversationInfo3} = await http.get('/reports/report8', {\n params: {\n SiteId: choosedSiteId,\n From: moment().subtract(7, 'days').format('YYYY-MM-DD'),\n To: moment().format('YYYY-MM-DD'),\n }\n });\n\n this.setState({\n conversationInfo: {\n ...this.state.conversationInfo,\n yesterdayFbRb: conversationInfo3[0].conversion,\n todayFbRb: conversationInfo3[1].conversion,\n FbRb: [...conversationInfo3.reverse()]\n }\n })\n } catch (err) {\n }\n }\n\n onNewMessage = (message) => {\n if (this.props.choosedSiteId !== message.siteId) {\n return;\n }\n if (message.type.name === \"purchase\") {\n this.setState(prevState => {\n return {\n ...prevState,\n todayTotalAmount: prevState.todayTotalAmount + (+message.value),\n todayPurchase: prevState.todayPurchase + 1,\n }\n })\n }\n if (message.type.name === \"emailconfirmed\") {\n this.setState(prevState => {\n return {\n ...prevState,\n todayConfirmedEmails: prevState.todayConfirmedEmails + 1,\n }\n })\n }\n if (message.type.name === \"fillprofile\") {\n this.setState(prevState => {\n return {\n ...prevState,\n todayFillProfile: prevState.todayFillProfile + 1,\n }\n })\n }\n };\n\n render() {\n return (\n \n this.onNewMessage(m)} />\n
\n \n \n \n \n \n \n
\n
\n \n \n \n \n Conversion\n \n \n \n \n \n Day\n {this.state.conversationInfo.FpEc.map(e =>
{moment(e.date).format('DD.MM')}
)}\n
\n \n FP/ EC\n {this.state.conversationInfo.FpEc.map(e =>
{e.conversion}%
)}\n
\n \n EC/ FB\n {this.state.conversationInfo.EcFb.map(e =>
{e.conversion}%
)}\n
\n \n FB/ RB\n {this.state.conversationInfo.FbRb.map(e =>
{e.conversion}%
)}\n
\n
\n
\n
\n
\n
\n
\n
\n \n \n \n {!this.state.loading ? : }\n \n \n \n \n {!this.state.loading ? : }\n \n \n \n
\n
\n )\n }\n}\n\nconst mapStateToProps = ({app}) => ({\n choosedSiteId: app.choosedSiteId,\n});\n\nexport default withSnackbar(connect(mapStateToProps, null)(Dashboard));","import React from 'react';\nimport { MDBContainer} from 'mdbreact';\n\nimport Dashboard from '../DashboardPage/components/DashBoard';\nimport { connect } from 'react-redux';\n\nclass MainPage extends React.Component {\n // componentDidMount() {\n // const { user } = this.props;\n // const isAffiliate = user?.role?.includes('Affiliate');\n // if (isAffiliate) {\n // return;\n // }\n // this.props.history.push('/');\n // }\n\n render() {\n return (\n \n \n \n );\n }\n}\n\nconst mapStateToProps = ({auth}) => ({\n user: auth.user,\n});\n\nexport default connect(mapStateToProps, null)(MainPage);","import React, { Component } from 'react';\nimport { MDBBtn, MDBModal, MDBModalHeader, MDBModalFooter } from 'mdbreact';\n\nclass AlertModal extends Component {\n\nonDelete = () => {\n this.props.onDelete();\n this.props.onClose();\n}\n\nrender() {\n return (\n \n Are you sure want to delete?\n \n Close\n Yes\n \n \n );\n }\n}\n\nexport default AlertModal;","/* eslint-disable jsx-a11y/anchor-is-valid */\nimport React from 'react';\nimport { MDBTooltip} from 'mdbreact';\n\nimport AlertModal from '../modals/AlertModal';\n\nconst Deactivate = ({onDelete}) => {\n const [isModalVisible, setModalVisible] = React.useState(false);\n\n return (\n \n \n setModalVisible(true)}>\n \n \n Deactivate\n \n setModalVisible(false)} />\n \n )\n};\n\nexport default Deactivate;","import styled from 'styled-components';\n\nexport const Container = styled.div`\n & .spin {\n margin: auto;\n }\n`;","import React from 'react';\nimport { MDBTable, MDBTabContent, MDBSpinner } from 'mdbreact';\n\nimport Deactivate from '../../../../components/Deactivate';\n\nimport * as S from './styled';\n\nconst SitesTable = ({sites, loading, deleteSite}) => {\n // eslint-disable-next-line no-unused-vars\n const [activeTab, setActiveTab] = React.useState(\"0\");\n return (\n \n \n {!loading ? \n \n \n ID\n Domain\n Name\n UID\n Deactivate\n \n \n \n {sites.map(site => (\n <>\n {!site.isDeleted && \n {site.id}\n {site.domain}\n {site.name}\n {site.uid}\n deleteSite(site.id)} />\n }\n \n ))}\n \n : }\n \n \n\n )\n}\n\nexport default SitesTable;","import React from 'react';\nimport { MDBContainer } from 'mdbreact';\n\nimport http from '../../services/http';\n\nimport SitesTable from './components/SitesTable';\nimport { withSnackbar } from 'react-simple-snackbar';\n\nclass SitesPage extends React.Component {\n state = {\n sites: [],\n loading: false,\n }\n\n async componentDidMount() {\n this.setState({loading: true});\n const {data} = await http.get('/sites');\n this.setState({sites: data, loading: false});\n }\n\n deleteSite = async (siteId) => {\n const {openSnackbar} = this.props;\n await http.delete(`/sites/${siteId}`);\n const {data} = await http.get('/sites');\n openSnackbar('Site deleted', 3000);\n this.setState({sites: data, loading: false})\n };\n\n render() {\n return (\n \n \n \n );\n }\n}\n\nconst options = {\n style: {\n backgroundColor: 'green',\n color: 'white',\n }\n}\n\nexport default withSnackbar(SitesPage, options);","export const succesOptions = {\n style: {\n backgroundColor: 'green',\n color: 'white',\n }\n}\n\nexport const failureOptions = {\n style: {\n backgroundColor: 'red',\n color: 'white',\n }\n}\n\nexport const siteUrlsConfig = {\n 3: 'bk',\n 8: 'nd',\n 37: 'fd',\n};\n\nexport const sitesConfig = {\n 8: 'https://nataliedate.com/profile/',\n 3: 'https://bez-kompleksov.com/profile/',\n 37: 'https://flirtfordate.com/profile/',\n};\n","/* eslint-disable no-unused-vars */\nimport React from 'react';\nimport {MDBInput, MDBBtn} from 'mdbreact';\nimport { useSnackbar } from 'react-simple-snackbar'\n\nimport http from '../../../../services/http';\nimport { failureOptions, succesOptions } from '../../../../configs';\n\n\nconst initialSiteForm = {\n name: '',\n domain: '',\n};\n\nconst CreateSite = () => {\n const [openSuccessSnackbar] = useSnackbar(succesOptions);\n const [openFailureSnackbar] = useSnackbar(failureOptions)\n\n const [siteForm, setSiteForm] = React.useState(initialSiteForm)\n\n const onInputChange = (value, inputType) => setSiteForm({\n ...siteForm,\n [inputType]: value,\n });\n\n const createSite = async () => {\n try {\n const {data} = await http.post('/sites', siteForm);\n console.log('data', data);\n openSuccessSnackbar('Created');\n } catch (err) {\n console.log('err', err);\n openFailureSnackbar('Failure');\n }\n setSiteForm(initialSiteForm)\n };\n\n return (\n
\n

Create Site Page

\n
\n onInputChange(e.target.value, 'name')}\n value={siteForm.name}\n required\n label=\"Site name\"\n group\n />\n onInputChange(e.target.value, 'domain')}\n value={siteForm.domain}\n required\n label=\"Site domain\"\n group\n />\n
\n
\n Create\n
\n
\n )\n}\n\nexport default CreateSite;","import React from 'react';\n\nimport CreateSite from './components/CreateSite';\nimport MainContainer from '../../components/MainContainer';\n\nclass CreateSitePage extends React.Component {\n\n render() {\n return (\n \n \n \n );\n }\n}\n\nexport default CreateSitePage;","export const ROLES = {\n 0: 'Admin',\n 1: 'Affiliate',\n 2: 'Manager',\n 3: 'Partners',\n 4: 'HR',\n}\n\nconst eur_to_eur = 1;\nconst usd_to_eur = 1;\nconst rub_to_eur = 0.017;\nconst rub_to_usd = 0.017;\n\nexport {\n eur_to_eur,\n usd_to_eur,\n rub_to_eur,\n rub_to_usd,\n}","import styled from 'styled-components';\n\nexport const Container = styled.div`\n & .nav-link.Ripple-parent {\n border-color: red;\n }\n & .nav-link.Ripple-parent.stop.active {\n border-color: green;\n }\n & .spin {\n margin: auto;\n }\n`;\n","import React from \"react\";\nimport _ from 'lodash';\nimport {\n MDBTable,\n MDBContainer,\n MDBRow,\n MDBNav,\n MDBNavItem,\n MDBNavLink,\n MDBTabContent,\n MDBTabPane,\n MDBSpinner,\n} from \"mdbreact\";\n\nimport { ROLES } from \"../../../../constants\";\n\nimport Deactivate from \"../../../../components/Deactivate\";\n\nimport * as S from \"./styled\";\n\nconst UsersTable = ({ users = [], loading, deleteUser }) => {\n const [activeTab, setActiveTab] = React.useState(\"0\");\n\n const isRoleFit = (user) => {\n const findRole = user.roles.find((r) => r.role.toString() === activeTab);\n return Boolean(findRole);\n };\n\n const sortedUsers = _.orderBy(users, (u) => u.email, 'asc');\n\n return (\n \n \n \n \n {Object.keys(ROLES).map((role) => (\n \n {\n setActiveTab(role.toString());\n }}\n >\n {ROLES[role]}\n \n \n ))}\n \n \n {Object.keys(ROLES).map((role) => (\n \n {!loading ? (\n \n \n \n ID\n Email\n Role\n Deactivate\n \n \n \n {sortedUsers\n .filter((u) => isRoleFit(u))\n .map((user) => (\n <>\n {!user.isDeleted && (\n \n {user.id}\n {user.email}\n {ROLES[user.roles[0].role]}\n deleteUser(user.id)}\n />\n \n )}\n \n ))}\n \n \n ) : (\n \n )}\n \n ))}\n \n \n \n \n );\n};\n\nexport default UsersTable;\n","import React from \"react\";\nimport { withSnackbar } from \"react-simple-snackbar\";\n\nimport http from \"../../services/http\";\n\nimport UsersTable from \"./components/UsersTable\";\n\nclass UsersPage extends React.Component {\n state = {\n users: [],\n loading: false,\n };\n\n async componentDidMount() {\n this.setState({ loading: true });\n const { data } = await http.get(\"/users\");\n this.setState({ users: data, loading: false });\n }\n\n deleteUser = async (userId) => {\n const { openSnackbar } = this.props;\n await http.delete(`/users/${userId}`);\n const { data } = await http.get(\"/users\");\n openSnackbar(\"User deleted\", 3000);\n this.setState({ users: data });\n };\n\n render() {\n const { loading } = this.state;\n return (\n \n );\n }\n}\n\nconst options = {\n style: {\n backgroundColor: \"green\",\n color: \"white\",\n },\n};\n\nexport default withSnackbar(UsersPage, options);\n","/* eslint-disable no-unused-vars */\nimport React from 'react';\nimport { MDBInput, MDBBtn, MDBSelect, MDBSelectInput, MDBSelectOption, MDBSelectOptions } from 'mdbreact';\nimport { useSnackbar } from 'react-simple-snackbar'\n\nimport { ROLES } from '../../../../constants';\n\nimport http from '../../../../services/http';\nimport { failureOptions, succesOptions } from '../../../../configs';\n\n\nconst initialUserForm = {\n email: '',\n password: '',\n role: 0,\n};\n\nconst CreateUser = ({sites}) => {\n const [openSuccessSnackbar] = useSnackbar(succesOptions);\n const [openFailureSnackbar] = useSnackbar(failureOptions)\n\n const [formSites, setFormSites] = React.useState([]);\n\n const [userForm, setUserForm] = React.useState({\n ...initialUserForm,\n site: sites[0].id,\n })\n\n const onInputChange = (value, inputType) => {\n setUserForm({\n ...userForm,\n [inputType]: value,\n });\n }\n\n const createUser = async () => {\n try {\n console.log(userForm);\n const {data: user} = await http.post('/users', {\n ...userForm,\n siteId: formSites[0],\n });\n const {data: users} = await http.get('/users');\n const createdUser = users.find(u => u.email === user.email);\n\n const sitesWithoutFirstEl = formSites.filter((_, i) => i > 0);\n sitesWithoutFirstEl.map(async (s) => {\n await http.post(`/users/${createdUser.id}/roles`, {\n role: userForm.role,\n siteId: s,\n }); \n })\n\n openSuccessSnackbar('Created');\n } catch (err) {\n openFailureSnackbar('Failure');\n }\n\n setUserForm({\n ...userForm,\n email: '',\n password: '',\n })\n };\n\n return (\n
\n

Create

\n
\n onInputChange(e.target.value, 'email')}\n value={userForm.email}\n required\n label=\"User email\"\n group\n type=\"email\"\n validate\n error=\"wrong\"\n success=\"right\"\n />\n onInputChange(e.target.value, 'password')}\n value={userForm.password}\n required\n label=\"User password\"\n group\n type=\"password\"\n validate\n />\n
\n onInputChange(parseInt(val), 'role')}\n className='colorful-select dropdown-green'\n >\n \n \n {Object.keys(ROLES).map(role => {ROLES[role]})}\n \n \n setFormSites(val)}\n className='colorful-select dropdown-primary'\n multiple\n \n >\n \n \n {sites.map(param => {param.name})}\n \n \n
\n Create\n
\n \n )\n}\n\nexport default CreateUser;","import React from 'react';\n\nimport http from '../../services/http';\n\nimport CreateUser from './components/CreateUser';\nimport MainContainer from '../../components/MainContainer';\n\nclass CreateUserPage extends React.Component {\n state = {\n sites: [],\n }\n\n async componentDidMount() {\n this.setState({loading: true});\n const {data} = await http.get('/sites/foradminpanel');\n this.setState({sites: data, loading: false});\n }\n\n render() {\n return (\n \n {this.state.sites.length ? : null}\n \n );\n }\n}\n\nexport default CreateUserPage;","import styled from 'styled-components';\n\nexport const Container = styled.div`\n position: relative;\n margin: 1.5rem 0;\n z-index: 1;\n * {\n user-select: none;\n }\n`;\n\nexport const Input = styled.div`\n width: 100%;\n height: 40px;\n border: 1px solid #ced4da;\n border-radius: 4px;\n cursor: pointer;\n padding-left: 10px;\n display: flex;\n align-items: center;\n`;\n\nexport const ItemsContainer = styled.div`\n width: 100%;\n background-color: white;\n border: 1px solid #ced4da;\n position: absolute;\n top: 50px;\n border-radius: 4px;\n padding: 1rem;\n`;\n\nexport const Option = styled.div`\n cursor: pointer;\n width: 100%;\n background-color: ${({ isSelected }) => isSelected ? '#4285f4' : 'rgba(66, 133, 244, 0.2)'};\n border: 1px solid ${({ isSelected }) => !isSelected ? '#4285f4' : 'transparent'};\n margin: 5px 1rem;\n border-radius: 4px;\n padding: 5px 1rem;\n color: ${({ isSelected }) => isSelected ? 'white' : 'black'};\n :hover {\n opacity: 0.8;\n }\n`;\n","import React, { useEffect, useRef, useState } from \"react\";\nimport { MDBCol, MDBRow, MDBInput } from \"mdbreact\";\nimport moment from \"moment\";\n\nimport * as S from \"./styled\";\n\nconst defaultFormat = \"YYYY-MM-DD\";\n\nconst options = [\n {\n label: \"Today\",\n value: {\n from: moment().format(defaultFormat),\n to: moment().format(defaultFormat),\n },\n },\n {\n label: \"Yesterday\",\n value: {\n from: moment().subtract(1, \"days\").format(defaultFormat),\n to: moment().subtract(1, \"days\").format(defaultFormat),\n },\n },\n {\n label: \"Last 7 days\",\n value: {\n from: moment().subtract(6, \"days\").format(defaultFormat),\n to: moment().format(defaultFormat),\n },\n },\n {\n label: \"Last 30 days\",\n value: {\n from: moment().subtract(29, \"days\").format(defaultFormat),\n to: moment().format(defaultFormat),\n },\n },\n {\n label: \"This month\",\n value: {\n from: moment().startOf(\"month\").format(defaultFormat),\n to: moment().format(defaultFormat),\n },\n },\n {\n label: \"Last month\",\n value: {\n from: moment()\n .subtract(1, \"month\")\n .startOf(\"month\")\n .format(defaultFormat),\n to: moment().subtract(1, \"month\").endOf(\"month\").format(defaultFormat),\n },\n },\n {\n label: \"Last 90 days\",\n value: {\n from: moment().subtract(89, \"days\").format(defaultFormat),\n to: moment().format(defaultFormat),\n },\n },\n];\n\nfunction usePrevious(value) {\n const ref = useRef();\n useEffect(() => {\n ref.current = value; //assign the value of ref to the argument\n },[value]); //this code will run when the value of 'value' changes\n return ref.current; //in the end, return the current ref value.\n}\n\nconst DateInput = ({\n value,\n onChange,\n loadData = () => {},\n}) => {\n const ref = useRef(null);\n const [isOpen, setOpen] = useState(false);\n const [selectedLabel, setSelectedLabel] = useState(null);\n const prevOpen = usePrevious(isOpen);\n\n useEffect(() => {\n const selected = options.find(\n (o) => JSON.stringify(value) === JSON.stringify(o.value)\n );\n if (selected) {\n setSelectedLabel(selected.label);\n }\n }, []);\n\n useEffect(() => {\n if (prevOpen && !isOpen) {\n loadData();\n }\n }, [prevOpen, isOpen])\n const handleClickOutside = (event) => {\n if (ref.current && !ref.current.contains(event.target)) {\n handleClose();\n }\n };\n\n useEffect(() => {\n document.addEventListener(\"click\", handleClickOutside, true);\n return () => {\n document.removeEventListener(\"click\", handleClickOutside, true);\n };\n }, []);\n\n const onSelect = (val, label) => {\n onChange(val);\n setSelectedLabel(label);\n };\n\n const onCustomChange = (val, type) => {\n setSelectedLabel(null);\n onChange({\n ...value,\n [type]: val,\n });\n };\n\n const handleClose = () => {\n setOpen(false);\n };\n\n const handleOpen = () => {\n setOpen(true);\n };\n\n return (\n \n \n \n {moment(value.from, defaultFormat).format(\"DD-MM-YYYY\")} -{\" \"}\n {moment(value.to, defaultFormat).format(\"DD-MM-YYYY\")}\n \n {isOpen ? (\n \n \n \n onCustomChange(e.target.value, \"from\")}\n />\n \n \n onCustomChange(e.target.value, \"to\")}\n />\n \n \n {options.map((option) => (\n \n onSelect(option.value, option.label)}\n // isSelected={\n // JSON.stringify(option.value) === JSON.stringify(value)\n // }\n isSelected={selectedLabel === option.label}\n >\n {option.label}\n \n \n ))}\n \n ) : null}\n \n \n );\n};\n\nexport default DateInput;\n","import { useEffect } from \"react\";\nimport { useDispatch } from \"react-redux\";\nimport { toggleHeaderDate } from \"../store/app\";\n\nconst useDateScrollHeader = ({ date }, deps = []) => {\n const dispatch = useDispatch();\n\n const handleScroll = () => {\n if (window.scrollY === 0) {\n dispatch(toggleHeaderDate(null, false));\n } else {\n dispatch(toggleHeaderDate(date, true));\n }\n };\n\n useEffect(() => {\n handleScroll();\n window.addEventListener(\"scroll\", handleScroll);\n return () => {\n dispatch(toggleHeaderDate(null, false))\n window.removeEventListener(\"scroll\", handleScroll);\n }\n }, [...deps]);\n\n return null;\n};\n\nexport default useDateScrollHeader;\n","import React from 'react';\nimport { MDBIcon, MDBSpinner, MDBCardBody, MDBBtn, MDBDataTable, MDBCard, MDBRow, MDBCol, MDBSelect, MDBSelectInput, MDBSelectOptions, MDBSelectOption } from 'mdbreact';\nimport { connect } from 'react-redux';\nimport _ from 'lodash';\nimport moment from 'moment';\nimport Select from \"react-select\";\n\nimport http from '../../../../services/http';\nimport DateInput from '../../../../components/DateInput';\nimport useDateScrollHeader from '../../../../hooks/useDateScrollHeader';\n\nconst params = [\n 'Utm_source',\n 'Utm_campaign',\n 'Utm_term',\n 'Utm_content',\n 'Linkid',\n];\n\nconst Stats = ({ choosedSiteId }) => {\n const [sortedBySending, setSortedBySending] = React.useState('');\n\n const [stats, setStats] = React.useState({\n columns: [],\n rows: [],\n });\n const [loading, setLoading] = React.useState(false);\n const [initialLoading, setInitialLoading] = React.useState(false);\n const [dateForm, setDateForm] = React.useState({\n from: moment().format('YYYY-MM-DD'),\n to: moment().format('YYYY-MM-DD'),\n })\n\n useDateScrollHeader({\n date: `${moment(dateForm.from).format('DD-MM-YYYY')} - ${moment(dateForm.to).format('DD-MM-YYYY')}`,\n }, [dateForm]);\n \n const [form, setForm] = React.useState({\n Param: 'Utm_source',\n Param2: undefined,\n\n });\n\n const onClick = async () => {\n setLoading(true);\n try {\n const {data} = await http.get('/reports/report1_v2', {\n params: {\n SiteId: choosedSiteId,\n ...dateForm,\n ...form,\n }\n })\n \n const totalCount = {\n sales: _.sumBy(data, 'sales'),\n coins: _.sumBy(data, 'coins'),\n fillProfiles: _.sumBy(data, 'fillProfiles'),\n money: _.sumBy(data, 'money'),\n registrations: _.sumBy(data, 'registrations'),\n confirmed: _.sumBy(data, 'confirmed'),\n ftd: _.sumBy(data, 'ftd'),\n };\n \n const columns = [\n {\n label:
Param1
,\n field: 'param',\n width: 150,\n },\n form.Param2 ? {\n label:
Param2
,\n field: 'param2',\n width: 150,\n } : undefined,\n {\n label:
Registrations
({totalCount.registrations})
,\n field: 'registrations',\n width: 150,\n },\n {\n label:
Fill Profiles
({totalCount.fillProfiles})
,\n field: 'fillProfiles',\n width: 270,\n },\n {\n label:
Confirmed
({totalCount.confirmed})
,\n field: 'confirmed',\n width: 150,\n },\n {\n label:
FTD
({totalCount.ftd})
,\n field: 'ftd',\n width: 150,\n },\n {\n label:
Sales
({totalCount.sales})
,\n field: 'sales',\n width: 200,\n },\n {\n label:
Coins
({totalCount.coins})
,\n field: 'coins',\n width: 100,\n },\n {\n label:
Money
({totalCount.money})
,\n field: 'money',\n width: 100,\n },\n ].filter(i => i !== undefined);\n setStats({\n ...stats,\n columns: [\n ...columns,\n ],\n rows: data,\n });\n } catch (err) {\n \n }\n \n setLoading(false);\n }\n React.useEffect(() => {\n onClick();\n setInitialLoading(true);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [initialLoading])\n\n const sortedData = data => {\n const rows = data.rows;\n let finallRows = [];\n if (sortedBySending !== '') {\n if (sortedBySending === 'desc') {\n finallRows = _.sortBy(rows, i => i.param2);\n }\n if (sortedBySending === 'asc') {\n finallRows = _.reverse(_.sortBy(rows, i => i.param2));\n }\n } else {\n finallRows = rows;\n }\n return {\n ...data,\n rows: finallRows,\n };\n };\n\n return (\n <>\n \n \n \n setForm({\n ...form,\n Param: val,\n })}\n className='colorful-select dropdown-primary mx-2'\n >\n \n \n {params.map(param => {param})}\n \n \n \n\n \n ({ ...s, marginTop: 25 }) }}\n placeholder={\"Param2\"}\n options={params.map(p => ({ value: p, label: p }))}\n isClearable\n onChange={(val) =>\n setForm({\n ...form,\n Param2: val?.value || undefined,\n })\n }\n />\n \n \n setDateForm(value)}\n />\n\n \n Show\n \n \n \n \n \n {!loading ? {\n if (sortObj.column === 'param2') {\n setSortedBySending(sortObj.direction);\n } else {\n setSortedBySending('');\n }\n }}\n /> : }\n \n \n \n )\n}\n\nconst mapStateToProps = ({app}) => ({\n choosedSiteId: app.choosedSiteId,\n});\n\nexport default connect(mapStateToProps, null)(Stats);","import styled from 'styled-components';\n\nexport const Container = styled.div`\n .logo {\n padding-left: 20px;\n margin-top: 20px;\n }\n .side-nav.wide .collapsible-body a {\n padding-left: 23px;\n background-color: transparent;\n }\n .preloader-wrapper {\n margin-left: calc(50% - 50px);\n }\n .btn-container {\n display: flex;\n align-items: center;\n }\n`;","import React from 'react';\nimport { MDBContainer } from 'mdbreact';\n\nimport Stats from './components/Stats';\n\nimport * as S from './styled';\n\nclass StatsPage extends React.Component {\n render() {\n return (\n \n \n \n \n \n );\n }\n}\n\nexport default StatsPage;","import React from \"react\";\nimport {\n MDBInput,\n MDBSpinner,\n MDBCardBody,\n MDBBtn,\n MDBDataTable,\n MDBCard,\n MDBRow,\n MDBCol,\n MDBSelect,\n MDBSelectInput,\n MDBSelectOptions,\n MDBSelectOption,\n} from \"mdbreact\";\nimport { connect } from \"react-redux\";\n\nimport moment from \"moment\";\n\nimport http from \"../../../../services/http\";\n\nconst PartnerReport = ({ choosedSiteId, user }) => {\n const isAdmin = user?.role?.includes(\"dmi\");\n const [users, setUsers] = React.useState([]);\n const [stats, setStats] = React.useState({\n columns: [],\n rows: [],\n });\n const [loading, setLoading] = React.useState(false);\n const [initialLoading, setInitialLoading] = React.useState(false);\n const [form, setForm] = React.useState({\n From: moment().format(\"YYYY-MM-01\"),\n To: moment().format(\"YYYY-MM-DD\"),\n });\n\n React.useEffect(() => {\n async function getUsers() {\n const { data } = await http.get(\"/users\");\n const partnersUsers = data.filter((u) =>\n Boolean(u.roles.find((r) => r.role === 3))\n );\n setUsers(partnersUsers);\n }\n if (isAdmin) {\n getUsers();\n }\n }, [users.length]);\n\n const onClick = async () => {\n setLoading(true);\n try {\n const { data } = await http.get(\"/reports/partner1\", {\n params: {\n SiteId: choosedSiteId,\n UserId: isAdmin ? form.UserId : parseInt(user.id),\n ...form,\n },\n });\n\n setStats({\n ...stats,\n columns: [\n {\n label:
Fill Profiles
,\n field: \"fillProfiles\",\n width: 270,\n },\n {\n label:
Purchases
,\n field: \"purchases\",\n width: 200,\n },\n {\n label: (\n
Fill Profiles Payout
\n ),\n field: \"fillProfilesPayout\",\n width: 100,\n },\n ],\n rows: data,\n });\n\n setLoading(false);\n } catch (err) {\n setLoading(false);\n }\n };\n React.useEffect(() => {\n onClick();\n setInitialLoading(true);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [initialLoading]);\n\n return (\n <>\n \n \n {isAdmin ? (\n \n \n setForm({\n ...form,\n UserId: val[0],\n })\n }\n className=\"colorful-select dropdown-primary mx-2\"\n >\n \n \n {users.map((param) => (\n \n {param?.email}\n \n ))}\n \n \n \n ) : null}\n\n \n \n setForm({\n ...form,\n From: e.target.value,\n })\n }\n />\n \n\n \n {\n console.log(e);\n setForm({\n ...form,\n To: e.target.value,\n });\n }}\n />\n \n\n \n Show\n \n \n \n \n \n {!loading ? (\n \n ) : (\n \n )}\n \n \n \n );\n};\n\nconst mapStateToProps = ({ app, auth }) => ({\n choosedSiteId: app.choosedSiteId,\n user: auth.user,\n});\n\nexport default connect(mapStateToProps, null)(PartnerReport);\n","import styled from 'styled-components';\n\nexport const Container = styled.div`\n .logo {\n padding-left: 20px;\n margin-top: 20px;\n }\n .side-nav.wide .collapsible-body a {\n padding-left: 23px;\n background-color: transparent;\n }\n .preloader-wrapper {\n margin-left: calc(50% - 50px);\n }\n .btn-container {\n display: flex;\n align-items: center;\n }\n`;","import React from 'react';\nimport { MDBContainer } from 'mdbreact';\n\nimport PartnerReport from './components/PartnerReport';\n\nimport * as S from './styled';\n\nclass PartnerReport1Page extends React.Component {\n render() {\n return (\n \n \n \n \n \n );\n }\n}\n\nexport default PartnerReport1Page;","import React from 'react';\nimport { MDBInput, MDBSpinner, MDBCardBody, MDBBtn, MDBDataTable, MDBCard, MDBRow, MDBCol } from 'mdbreact';\nimport _ from 'lodash';\nimport { connect } from 'react-redux';\n\nimport moment from 'moment';\n\nimport http from '../../../../services/http';\n\nconst PartnerReport = ({ choosedSiteId, user }) => {\n const [stats, setStats] = React.useState({\n columns: [],\n rows: [],\n });\n const [loading, setLoading] = React.useState(false);\n const [initialLoading, setInitialLoading] = React.useState(false);\n const [form, setForm] = React.useState({\n From: moment().format('YYYY-MM-01'),\n To: moment().format('YYYY-MM-DD'),\n });\n\n const formatData = (data) => {\n return data.map(item => ({\n ...item,\n date: moment(item.date).format('YYYY-MM-DD'),\n }))\n }\n\n const onClick = async () => {\n setLoading(true);\n const {data} = await http.get('/reports/partner2', {\n params: {\n SiteId: choosedSiteId,\n UserId: parseInt(user.id),\n ...form,\n }\n })\n\n const totalCount = {\n purchases: _.sumBy(data, 'purchases'),\n fillProfiles: _.sumBy(data, 'fillProfiles'),\n fillProfilesPayout: _.sumBy(data, 'fillProfilesPayout'),\n };\n\n setStats({\n ...stats,\n columns: [\n {\n label:
Date
,\n field: 'date',\n width: 150,\n },\n {\n label:
Fill Profiles
({totalCount.fillProfiles})
,\n field: 'fillProfiles',\n width: 270,\n },\n {\n label:
Purchases
({totalCount.purchases})
,\n field: 'purchases',\n width: 200,\n },\n {\n label:
Fill Profiles Payout
({totalCount.fillProfilesPayout})
,\n field: 'fillProfilesPayout',\n width: 100,\n },\n ],\n rows: formatData(data),\n });\n \n setLoading(false);\n }\n React.useEffect(() => {\n onClick();\n setInitialLoading(true);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [initialLoading])\n return (\n <>\n \n \n\n \n setForm({\n ...form,\n From: e.target.value,\n })}\n />\n \n\n \n {\n console.log(e);\n setForm({\n ...form,\n To: e.target.value,\n })\n }}\n />\n \n\n \n Show\n \n \n \n \n \n {!loading ? : }\n \n \n \n )\n}\n\nconst mapStateToProps = ({app, auth}) => ({\n choosedSiteId: app.choosedSiteId,\n user: auth.user,\n});\n\nexport default connect(mapStateToProps, null)(PartnerReport);","import styled from 'styled-components';\n\nexport const Container = styled.div`\n .logo {\n padding-left: 20px;\n margin-top: 20px;\n }\n .side-nav.wide .collapsible-body a {\n padding-left: 23px;\n background-color: transparent;\n }\n .preloader-wrapper {\n margin-left: calc(50% - 50px);\n }\n .btn-container {\n display: flex;\n align-items: center;\n }\n`;","import React from 'react';\nimport { MDBContainer } from 'mdbreact';\n\nimport PartnerReport from './components/PartnerReport';\n\nimport * as S from './styled';\n\nclass PartnerReport2Page extends React.Component {\n render() {\n return (\n \n \n \n \n \n );\n }\n}\n\nexport default PartnerReport2Page;","import React from 'react';\nimport { MDBInput, MDBSpinner, MDBCardBody, MDBBtn, MDBDataTable, MDBCard, MDBRow, MDBCol } from 'mdbreact';\nimport { connect } from 'react-redux';\n\nimport moment from 'moment';\n\nimport http from '../../../../services/http';\n\nconst PartnerReport = ({ choosedSiteId, user }) => {\n const [stats, setStats] = React.useState({\n columns: [],\n rows: [],\n });\n const [loading, setLoading] = React.useState(false);\n const [initialLoading, setInitialLoading] = React.useState(false);\n const [form, setForm] = React.useState({\n From: moment().format('YYYY-MM-01'),\n To: moment().format('YYYY-MM-DD'),\n });\n const onClick = async () => {\n setLoading(true);\n try {\n const {data} = await http.get('/reports/partner4', {\n params: {\n SiteId: choosedSiteId,\n ...form,\n }\n })\n console.log('daata', data);\n \n setStats({\n ...stats,\n columns: [\n {\n label:
User Email
,\n field: 'userEmail',\n width: 270,\n },\n {\n label:
Fill Profiles
,\n field: 'fillProfiles',\n width: 270,\n },\n {\n label:
Purchases
,\n field: 'purchases',\n width: 200,\n },\n {\n label:
Fill Profiles Payout
,\n field: 'fillProfilesPayout',\n width: 100,\n },\n ],\n rows: data,\n });\n \n setLoading(false);\n } catch (err) {\n setLoading(false);\n }\n }\n React.useEffect(() => {\n onClick();\n setInitialLoading(true);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [initialLoading])\n console.log('user', user);\n return (\n <>\n \n \n\n \n setForm({\n ...form,\n From: e.target.value,\n })}\n />\n \n\n \n {\n console.log(e);\n setForm({\n ...form,\n To: e.target.value,\n })\n }}\n />\n \n\n \n Show\n \n \n \n \n \n {!loading ? : }\n \n \n \n )\n}\n\nconst mapStateToProps = ({app, auth}) => ({\n choosedSiteId: app.choosedSiteId,\n user: auth.user,\n});\n\nexport default connect(mapStateToProps, null)(PartnerReport);","import styled from 'styled-components';\n\nexport const Container = styled.div`\n .logo {\n padding-left: 20px;\n margin-top: 20px;\n }\n .side-nav.wide .collapsible-body a {\n padding-left: 23px;\n background-color: transparent;\n }\n .preloader-wrapper {\n margin-left: calc(50% - 50px);\n }\n .btn-container {\n display: flex;\n align-items: center;\n }\n`;","import React from 'react';\nimport { MDBContainer } from 'mdbreact';\n\nimport PartnerReport from './components/PartnerReport';\n\nimport * as S from './styled';\n\nclass PartnerReport4Page extends React.Component {\n render() {\n return (\n \n \n \n \n \n );\n }\n}\n\nexport default PartnerReport4Page;","import styled, { css } from \"styled-components\";\n\nexport const Container = styled.div`\n .card-header {\n background-color: transparent;\n }\n`;\n\nexport const StepLink = styled.span`\n ${({ onClick }) => {\n if (onClick) {\n return css`\n cursor: pointer;\n color: blue;\n `;\n }\n }};\n`;\n\nexport const RoiCell = styled.td`\n background-color: ${({ roi }) => roi > 1.5 ? '#b2f2bb' : '#ffc9c9'};\n font-weight: bold;\n color: black;\n`;\n\nconst typeColors = {\n 'fillprofile': '#7c501a',\n 'emailconfirmed': '#339900',\n 'purchase': '#7289da',\n 'firstpurchase': '#ffbf00',\n}\nexport const TypeCell = styled.td`\n font-weight: bold;\n color: ${({ type }) => typeColors[type] || 'black'};\n`;\n\nexport const Menu = styled.div`\n width: 150px;\n height: 50px;\n display: flex;\n justify-content: center;\n align-items: center;\n background-color: white;\n border: 1px solid black;\n border-radius: 5px;\n position: absolute;\n background-color: white;\n z-index: 1111;\n top: ${({ top }) => `${top}px`};\n left: ${({ left }) => `${left}px`};\n color: black;\n &:hover {\n color: rgba(0, 0, 0, 0.4);\n }\n`;\n","import _ from \"lodash\";\n\nimport { usd_to_eur, rub_to_usd } from \"../../constants\";\n\nconst isNumeric = (str) => {\n if (typeof str === \"number\") return true;\n if (typeof str != \"string\") return false;\n return !isNaN(str) && !isNaN(parseFloat(str));\n};\n\nexport const sortBy = (data, field, direction) =>\n _.orderBy(\n data,\n (i) => (isNumeric(i[field]) ? Number(i[field]) : i[field]),\n direction\n );\n\nexport const countRoi = (\n turnover,\n investment,\n payoutCurrency,\n turnoverCurrency\n) => {\n let investmentInUsd = investment;\n let turnOverInUsd = turnover;\n if (turnoverCurrency?.toLowerCase() === \"eur\") {\n turnOverInUsd = turnover * usd_to_eur;\n }\n if (turnoverCurrency?.toLowerCase() === \"rub\") {\n turnOverInUsd = turnover * rub_to_usd;\n }\n if (payoutCurrency?.toLowerCase() === \"eur\") {\n investmentInUsd = investment * usd_to_eur;\n }\n if (payoutCurrency?.toLowerCase() === \"rub\") {\n investmentInUsd = investment * rub_to_usd;\n }\n return Number((turnOverInUsd / investmentInUsd).toFixed(2));\n};\n\nexport const convertDataToUsd = (data, valueKey, currencyKey) => {\n return [...data].map((i) => {\n if (i[currencyKey] === \"Eur\") {\n return {\n ...i,\n [valueKey]: i[valueKey] * usd_to_eur,\n };\n }\n if (i[currencyKey] === \"Rub\") {\n return {\n ...i,\n [valueKey]: i[valueKey] * rub_to_usd,\n };\n }\n return i;\n });\n};\n\n// {\n// investment: \"payoutCurrency\"\n// }\nexport const countTotals = (data, countPayload) => {\n let totals = {};\n Object.keys(countPayload).map((field) => {\n const currency =\n countPayload[field] === \"number\" ? \"usd\" : countPayload[field];\n totals[field] = _.sumBy(\n convertDataToUsd(data, field, currency),\n (i) => i[field]\n ).toFixed(2);\n });\n return totals;\n};\n\n\nexport const countAverageRoi = (data = []) => {\n const turnoversInUsd = convertDataToUsd(\n data,\n \"turnover\",\n \"turnoverCurrency\"\n ).map((i) => i.turnover);\n const investmentsInUsd = convertDataToUsd(\n data,\n \"investment\",\n \"payoutCurrency\"\n ).map((i) => i.investment);\n const turnoverSum = _.sum(turnoversInUsd);\n const investmentSum = _.sum(investmentsInUsd);\n const roi = countRoi(turnoverSum, investmentSum, \"usd\", \"usd\");\n return roi;\n};\n\nexport const convertCurrencyToSymbol = (currency = '') => {\n if (currency?.toLowerCase() === \"usd\") {\n return '$';\n }\n if (currency?.toLowerCase() === \"eur\") {\n return '€';\n }\n if (currency?.toLowerCase() === \"rub\") {\n return '₽';\n }\n return '$';\n}","export const partnerHeaders = [\n {\n label: \"Partner\",\n field: \"partnerEmail\",\n },\n {\n label: \"FTD\",\n field: \"ffd\",\n },\n {\n label: \"Investment\",\n field: \"investment\",\n },\n {\n label: \"Turnover\",\n field: \"turnover\",\n },\n {\n label: \"ROI\",\n field: \"roi\",\n },\n];\n\nexport const linksTableHeaders = [\n {\n label: \"Link\",\n field: \"linkUid\",\n },\n {\n label: \"Type\",\n field: \"actionName\",\n },\n {\n label: \"FTD\",\n field: \"ffd\",\n },\n {\n label: \"CountAll\",\n field: \"countAll\",\n },\n {\n label: \"Posted\",\n field: \"count\",\n },\n {\n label: \"Сoins\",\n field: \"coins\",\n },\n {\n label: \"Limit\",\n field: \"dailyLimit\",\n },\n {\n label: \"Payout\",\n field: \"payout\",\n },\n {\n label: \"Investment\",\n field: \"investment\",\n },\n {\n label: \"Turnover\",\n field: \"turnover\",\n },\n {\n label: \"Roi\",\n field: \"roi\",\n },\n];\n\nexport const websTableHeaders = [\n {\n label: \"Web\",\n field: \"web\",\n },\n {\n label: \"Type\",\n field: \"actionName\",\n },\n {\n label: \"FTD\",\n field: \"ffd\",\n },\n {\n label: \"CountAll\",\n field: \"countAll\",\n },\n {\n label: \"Posted\",\n field: \"count\",\n },\n {\n label: \"Сoins\",\n field: \"coins\",\n },\n {\n label: \"Limit\",\n field: \"dailyLimit\",\n },\n {\n label: \"Payout\",\n field: \"payout\",\n },\n {\n label: \"Investment\",\n field: \"investment\",\n },\n {\n label: \"Turnover\",\n field: \"turnover\",\n },\n {\n label: \"Roi\",\n field: \"roi\",\n },\n];\n\nexport const subsTableHeaders = [\n {\n label: \"Sub\",\n field: \"sub\",\n },\n {\n label: \"Type\",\n field: \"actionName\",\n },\n {\n label: \"FTD\",\n field: \"ffd\",\n },\n {\n label: \"CountAll\",\n field: \"countAll\",\n },\n {\n label: \"Posted\",\n field: \"count\",\n },\n {\n label: \"Сoins\",\n field: \"coins\",\n },\n {\n label: \"Payout\",\n field: \"payout\",\n },\n {\n label: \"Investment\",\n field: \"investment\",\n },\n {\n label: \"Turnover\",\n field: \"turnover\",\n },\n {\n label: \"Roi\",\n field: \"roi\",\n },\n];\n","import styled from \"styled-components\";\n\nexport const Th = styled.th`\n cursor: pointer;\n position: relative;\n padding-right: 30px !important;\n ::after {\n right: 1em;\n font-family: \"Font Awesome\\ 5 Free\", sans-serif;\n font-size: 1rem;\n font-weight: 900;\n content: \"\\f0de\";\n position: absolute;\n bottom: .9em;\n display: block;\n opacity: ${({isSorting, direction}) => (isSorting && direction === 'desc') ? 1 : 0.4}\n }\n ::before {\n right: 16px;\n font-family: \"Font Awesome\\ 5 Free\", sans-serif;\n font-size: 1rem;\n font-weight: 900;\n content: \"\\f0dd\";\n position: absolute;\n bottom: .9em;\n display: block;\n opacity: ${({isSorting, direction}) => (isSorting && direction === 'asc') ? 1 : 0.4}\n }\n`;\n","import { useState, useEffect } from 'react';\n\nfunction useLocalStorageState(key, initialValue) {\n const [state, setState] = useState(() => {\n const storedValue = localStorage.getItem(key);\n return storedValue !== null ? JSON.parse(storedValue) : initialValue;\n });\n\n useEffect(() => {\n localStorage.setItem(key, JSON.stringify(state));\n }, [key, state]);\n\n return [state, setState];\n}\n\nexport default useLocalStorageState;","import React, { useState } from \"react\";\n\nimport { MDBTable, MDBTableHead, MDBTableBody } from \"mdbreact\";\nimport { sortBy } from \"../../utils\";\n\nimport * as S from \"./styled\";\nimport useLocalStorageState from \"../PartnerReport/useLocalStorageState\";\n\nconst BaseTable = ({\n headers,\n rowRender,\n data,\n initialSort = {\n field: \"\",\n direction: \"\",\n },\n rowKey = '',\n type = '',\n}) => {\n const [sorting, setSorting] = useLocalStorageState(type, initialSort);\n\n const onSortClick = (header) => {\n setSorting({\n field: header,\n direction: sorting.direction === \"asc\" ? \"desc\" : \"asc\",\n });\n };\n\n const sortedData = sortBy(data, sorting.field, sorting.direction);\n\n return (\n \n \n \n {headers.map((header) => (\n onSortClick(header.field)}\n >\n {header.label}\n \n ))}\n \n \n \n {sortedData.map((item) => (\n {rowRender(item)}\n ))}\n \n \n );\n};\n\nexport default BaseTable;\n","import React from \"react\";\n\nimport { partnerHeaders } from \"./constants\";\n\nimport { countTotals, countAverageRoi } from \"../../utils\";\n\nimport BaseTable from \"../BaseTable\";\nimport { RoiCell } from \"./styled\";\n\nconst PartnerTable = ({ data = [], onSelectPartner }) => {\n const formattedData = Object.keys(data).map((partnerEmail) => {\n const partnerTotals = countTotals(data[partnerEmail], {\n investment: \"payoutCurrency\",\n turnover: \"turnoverCurrency\",\n coins: \"number\",\n ffd: \"number\",\n });\n return {\n partnerEmail: partnerEmail,\n investment: partnerTotals.investment,\n turnover: partnerTotals.turnover,\n ffd: partnerTotals.ffd,\n roi: countAverageRoi(data[partnerEmail]),\n };\n });\n\n const rowRender = (item) => (\n \n onSelectPartner(item.partnerEmail)}\n >\n \n {item.partnerEmail}\n \n \n {parseInt(item.ffd)}\n {item.investment} $\n {item.turnover} $\n {item.roi}\n \n );\n\n return (\n \n );\n};\n\nexport default PartnerTable;\n","import React, { useEffect, useState } from 'react';\n\nexport const useContextMenu = () => {\n const [clicked, setClicked] = useState(false);\n const [points, setPoints] = useState({\n x: 0,\n y: 0,\n });\n\n useEffect(() => {\n const handleClick = () => setClicked(false);\n document.addEventListener(\"click\", handleClick);\n return () => {\n document.removeEventListener(\"click\", handleClick);\n\n };\n }, [])\n\n const handleContainerClick = (event) => {\n event.preventDefault();\n setPoints({\n x: event.nativeEvent.layerX,\n y: event.nativeEvent.layerY,\n })\n setClicked(true);\n };\n\n return {\n clicked,\n setClicked,\n points,\n setPoints,\n handleContainerClick,\n }\n}","import React, { useEffect, useState } from \"react\";\n\nimport { linksTableHeaders } from \"./constants\";\n\nimport BaseTable from \"../BaseTable\";\nimport { convertCurrencyToSymbol } from \"../../utils\";\nimport { Menu, RoiCell, TypeCell } from \"./styled\";\nimport { useContextMenu } from \"./useContextMenu\";\n\nconst LinksTable = ({ data = [], onSelectLink, selectedPartner }) => {\n const RowComp = ({ linkItem }) => {\n const { handleContainerClick, points, clicked } = useContextMenu();\n\n return (\n \n {\n if (!clicked) {\n onSelectLink(linkItem.linkId, linkItem.linkUid)\n }\n }}\n onContextMenu={handleContainerClick}\n >\n {clicked ? \n \n
{\n e.preventDefault()\n window.open(`${window.location.origin}${window.location.pathname}?step=link&linkId=${linkItem.linkId}&linkUid=${linkItem.linkUid}`, '_blank')\n }}>Open in new window
\n
\n : null}\n \n \n
{selectedPartner}
\n
\n {linkItem.linkUid}({linkItem.linkName})\n
\n
\n
\n \n {linkItem.actionName}\n {parseInt(linkItem.ffd)}\n {linkItem.countAll}\n {linkItem.count}\n {linkItem.coins}\n {linkItem.dailyLimit}\n \n {linkItem.payout} {convertCurrencyToSymbol(linkItem.payoutCurrency)}\n \n \n {linkItem.investment} {convertCurrencyToSymbol(linkItem.payoutCurrency)}\n \n \n {linkItem.turnover} {convertCurrencyToSymbol(linkItem.turnoverCurrency)}\n \n {linkItem.roi}\n \n )\n }\n const rowRender = (linkItem) => {\n return \n };\n\n return (\n \n );\n};\n\nexport default LinksTable;\n","import React from \"react\";\n\nimport { websTableHeaders } from \"./constants\";\n\nimport BaseTable from \"../BaseTable\";\nimport { convertCurrencyToSymbol } from \"../../utils\";\nimport { Menu, RoiCell, TypeCell } from \"./styled\";\nimport { useContextMenu } from \"./useContextMenu\";\n\nconst WebsTable = ({\n data = [],\n onSelectWeb,\n selectedPartner,\n selectedLink,\n selectedLinkUid,\n}) => {\n\n const RowComp = ({ webItem }) => {\n\n const { handleContainerClick, points, clicked } = useContextMenu();\n\n return (\n <>\n \n {\n if (!clicked) {\n onSelectWeb(webItem.web)\n }\n }}\n onContextMenu={handleContainerClick}\n >\n {clicked ? \n \n
window.open(`${window.location.origin}${window.location.pathname}?step=web&webId=${webItem.web}&PartnerLinkId=${selectedLink}`, '_blank')}>Open in new window
\n
\n : null}\n \n \n
{selectedPartner}
\n
{selectedLinkUid}
\n
{webItem.web}
\n
\n
\n \n {webItem.actionName}\n {parseInt(webItem.ffd)}\n {webItem.countAll}\n {webItem.count}\n {webItem.coins}\n {webItem.dailyLimit}\n \n {webItem.payout} {convertCurrencyToSymbol(webItem.payoutCurrency)}\n \n \n {webItem.investment} {convertCurrencyToSymbol(webItem.payoutCurrency)}\n \n \n {webItem.turnover} {convertCurrencyToSymbol(webItem.turnoverCurrency)}\n \n {webItem.roi}\n \n \n )\n }\n const rowRender = (webItem) => \n\n return (\n \n );\n};\n\nexport default WebsTable;\n","import React from \"react\";\n\nimport { subsTableHeaders } from \"./constants\";\n\nimport BaseTable from \"../BaseTable\";\nimport { convertCurrencyToSymbol } from \"../../utils\";\nimport { RoiCell, TypeCell } from \"./styled\";\n\nconst SubsTable = ({\n data = [],\n selectedPartner,\n selectedLink,\n selectedLinkUid,\n selectedWeb,\n}) => {\n const rowRender = (subItem) => (\n \n \n \n \n
{selectedPartner}
\n
{selectedLinkUid}
\n
{selectedWeb}
\n
{subItem.sub}
\n
\n
\n \n {subItem.actionName}\n {parseInt(subItem.ffd)}\n {subItem.countAll}\n {subItem.count}\n {subItem.coins}\n \n {subItem.payout}{' '}\n {convertCurrencyToSymbol(subItem.payoutCurrency)}\n \n \n {subItem.investment}{' '}\n {convertCurrencyToSymbol(subItem.payoutCurrency)}\n \n \n {subItem.turnover}{' '}\n {convertCurrencyToSymbol(subItem.turnoverCurrency)}\n \n {subItem.roi}\n \n );\n\n return (\n \n );\n};\n\nexport default SubsTable;\n","/* eslint-disable react-hooks/exhaustive-deps */\nimport React, { useState, useEffect } from \"react\";\nimport { MDBCardBody, MDBCard, MDBSpinner, MDBBtn, MDBRow } from \"mdbreact\";\nimport { useLocation } from \"react-router-dom\";\n\nimport * as S from \"./styled\";\nimport { useSelector } from \"react-redux\";\nimport _ from \"lodash\";\n\nimport DateInput from \"../../../../components/DateInput\";\n\nimport moment from \"moment\";\n\nimport http from \"../../../../services/http\";\n\nimport { countRoi, countTotals, countAverageRoi } from \"../../utils\";\n\nimport useDateScrollHeader from \"../../../../hooks/useDateScrollHeader\";\nimport PartnerTable from \"./PartnerTable\";\nimport LinksTable from \"./LinksTable\";\nimport WebsTable from \"./WebsTable\";\nimport SubsTable from \"./SubsTable\";\nimport useLocalStorageState from \"./useLocalStorageState\";\n\nconst steps = {\n partner: \"partner\",\n link: \"link\",\n web: \"web\",\n sub: \"sub\",\n};\n\nconst PartnerReport = () => {\n const { choosedSiteId } = useSelector((state) => state.app);\n\n const [loading, setLoading] = useState(false);\n\n const [info, setInfo] = useState([]);\n\n const [currentStep, setCurrentStep] = useState(steps.partner);\n const [selectedPartner, setSelectedPartner] = useState(null);\n const [selectedLink, setSelectedLink] = useState(null);\n const [selectedLinkUid, setSelectedLinkUid] = useState(null);\n\n const [webData, setWebData] = useState([]);\n const [selectedWeb, setSelectedWeb] = useState(null);\n const [subData, setSubData] = useState([]);\n\n const location = useLocation();\n\n const queryParams = new URLSearchParams(location.search);\n\n // const [form, setForm] = useState({\n // From: moment().startOf(\"month\").format(\"YYYY-MM-DD\"),\n // To: moment().format(\"YYYY-MM-DD\"),\n // });\n\n const [form, setForm] = useLocalStorageState('roi-date', {\n From: moment().startOf(\"month\").format(\"YYYY-MM-DD\"),\n To: moment().format(\"YYYY-MM-DD\"),\n });\n\n useEffect(() => {\n const step = queryParams.get('step');\n if (step === steps.link) {\n const linkId = queryParams.get('linkId');\n const linkUid = queryParams.get('linkUid');\n onSelectLink(linkId, linkUid);\n }\n if (step === steps.web) {\n const webId = queryParams.get('webId');\n const PartnerLinkId = queryParams.get('PartnerLinkId');\n setSelectedLink(PartnerLinkId);\n onSelectWeb(webId, PartnerLinkId);\n }\n }, []);\n\n useDateScrollHeader(\n {\n date: `${moment(form.From).format(\"DD-MM-YYYY\")} - ${moment(\n form.To\n ).format(\"DD-MM-YYYY\")}`,\n },\n [form]\n );\n\n const onLoad = async () => {\n setLoading(true);\n try {\n const { data } = await http.get(\"/reports/partner_roi\", {\n params: {\n SiteId: choosedSiteId,\n ...form,\n },\n });\n\n const formattedData = data.map((item) => ({\n ...item,\n payoutWithoutCurrency: item.payout,\n roi: countRoi(\n item.turnover,\n item.investment,\n item.payoutCurrency,\n item.turnoverCurrency\n ),\n }));\n setInfo(formattedData);\n } catch (err) {}\n setLoading(false);\n };\n\n const onClickApply = async () => {\n if (currentStep === steps.partner || currentStep === steps.link) {\n onLoad();\n }\n if (currentStep === steps.web) {\n onSelectLink(selectedLink);\n }\n if (currentStep === steps.sub) {\n onSelectWeb(selectedWeb);\n }\n };\n\n useEffect(() => {\n onLoad();\n setCurrentStep(steps.partner);\n }, [choosedSiteId]);\n\n const grouped = _.groupBy(info, (i) => i.userEmail);\n\n const filteredByFillProfiles = info.filter(\n (i) => i.actionName === \"fillprofile\"\n );\n const filteredByPurchases = info.filter((i) => i.actionName === \"purchase\");\n\n const totalFillProfiles = _.sumBy(filteredByFillProfiles, (i) => i.count);\n const totalPurchases = _.sumBy(filteredByPurchases, (i) => i.count);\n\n const totals = countTotals(info, {\n investment: \"payoutCurrency\",\n turnover: \"turnoverCurrency\",\n coins: \"number\",\n });\n\n useEffect(() => {\n setInfo([]);\n }, [form]);\n\n const onSelectPartner = (partnerEmail) => {\n setCurrentStep(steps.link);\n setSelectedPartner(partnerEmail);\n };\n\n const onSelectLink = async (linkId, linkUid) => {\n setLoading(true);\n const { data } = await http.get(\"/reports/partner_roi_web\", {\n params: {\n SiteId: choosedSiteId,\n PartnerLinkId: linkId,\n ...form,\n },\n });\n\n const formatted = data.map((i) => ({\n ...i,\n roi: countRoi(\n i.turnover,\n i.investment,\n i.payoutCurrency,\n i.turnoverCurrency\n ),\n }));\n setWebData(formatted);\n setSelectedLink(linkId);\n setSelectedLinkUid(linkUid)\n setCurrentStep(steps.web);\n setLoading(false);\n };\n\n const onSelectWeb = async (webId, link = selectedLink) => {\n setLoading(true);\n const { data } = await http.get(\"/reports/partner_roi_sub\", {\n params: {\n SiteId: choosedSiteId,\n PartnerLinkId: link,\n WebId: webId,\n ...form,\n },\n });\n const formatted = data.map((i) => ({\n ...i,\n roi: countRoi(\n i.turnover,\n i.investment,\n i.payoutCurrency,\n i.turnoverCurrency\n ),\n }));\n setSubData(formatted);\n setSelectedWeb(webId);\n setCurrentStep(steps.sub);\n setLoading(false);\n };\n\n const onWebToggle = () => {\n setCurrentStep(steps.web);\n };\n\n const onLinkToggle = () => {\n setCurrentStep(steps.link);\n };\n\n const onPartnerToggle = () => {\n setCurrentStep(steps.partner);\n };\n const renderCurrentStep = () => {\n if (currentStep === steps.sub) {\n return (\n <>\n Partner →{\" \"}\n Link →{\" \"}\n Web →{\" \"}\n Sub\n \n );\n }\n if (currentStep === steps.web) {\n return (\n <>\n Partner →{\" \"}\n Link →{\" \"}\n Web\n \n );\n }\n if (currentStep === steps.link) {\n return (\n <>\n Partner →{\" \"}\n Link\n \n );\n }\n return (\n <>\n Partner\n \n );\n };\n return (\n \n \n \n
\n Total: FillProfiles - {totalFillProfiles}, Sales - {totalPurchases},\n Investment - {totals.investment} $, Coins - {totals.coins}, Turnover -{\" \"}\n {totals.turnover} $, ROI - {countAverageRoi(info)}\n
\n
\n
\n
{renderCurrentStep()}
\n \n \n setForm({\n To: val.to,\n From: val.from,\n })\n }\n value={{\n from: form.From,\n to: form.To,\n }}\n />\n \n Apply\n \n \n \n {loading && }\n {currentStep === steps.partner && (\n \n )}\n {currentStep === steps.link && (\n \n )}\n {currentStep === steps.web && (\n \n )}\n {currentStep === steps.sub && (\n \n )}\n \n
\n );\n};\n\nexport default PartnerReport;\n","import styled from 'styled-components';\n\nexport const Container = styled.div`\n .logo {\n padding-left: 20px;\n margin-top: 20px;\n }\n .side-nav.wide .collapsible-body a {\n padding-left: 23px;\n background-color: transparent;\n }\n .preloader-wrapper {\n margin-left: calc(50% - 50px);\n }\n .btn-container {\n display: flex;\n align-items: center;\n }\n`;","import React from 'react';\nimport { MDBContainer } from 'mdbreact';\n\nimport PartnerReport from './components/PartnerReport';\n\nimport * as S from './styled';\n\nclass PartnerReport5Page extends React.Component {\n render() {\n return (\n \n \n \n \n \n );\n }\n}\n\nexport default PartnerReport5Page;","import axios from 'axios';\nimport TokenStorage from '../storage/token';\nimport RefreshTokenStorage from '../storage/refreshToken';\n\nconst baseURL = 'https://newpashka.azurewebsites.net'\n\nconst http = axios.create({\n withCredentials: false,\n baseURL,\n headers: {'Content-Type': 'application/json'},\n});\n\nconst refreshToken = (token) => {\n const payload = {\n refreshToken: token\n }\n const headers = {\n 'Content-Type': 'application/json'\n }\n return new Promise((resolve, reject) => {\n return axios.post(`${baseURL}/auth/refresh`, payload, { headers: headers }).then(response => {\n resolve(response)\n }).catch((error) => {\n reject(error)\n })\n })\n \n}\n\nhttp.interceptors.request.use(\n async request => {\n const token = TokenStorage.get();\n const newRequest = {...request};\n if (token) {\n newRequest.headers.Authorization = `Bearer ${token}`;\n }\n return newRequest;\n },\n error => {\n return Promise.reject(error)\n },\n);\n\nhttp.interceptors.response.use(undefined, err => {\n const error = err.response;\n if (error?.status===401 && error?.config && \n !error?.config.__isRetryRequest) {\n const refresh = RefreshTokenStorage.get();\n return refreshToken(refresh).then(response => {\n error.config.__isRetryRequest = true;\n TokenStorage.save(response.data.accessToken);\n error.config.headers.Authorization = `Bearer ${response.data.accessToken}`;\n return http(error.config);\n });\n } \n})\n\nexport default http;\n","import { MDBBtn } from \"mdbreact\";\nimport React from \"react\";\nimport ReactExport from \"react-export-excel\";\n\nconst ExcelFile = ReactExport.ExcelFile;\nconst ExcelSheet = ReactExport.ExcelFile.ExcelSheet;\nconst ExcelColumn = ReactExport.ExcelFile.ExcelColumn;\n\nclass Download extends React.Component {\n getCuratorsString = (col) => {\n let str = '';\n col.curators.forEach((c, index) => {\n str += `${c}${index === col.curators.length - 1 ? '' : ', '}`\n })\n return str;\n }\n render() {\n return (\n Download}>\n \n \n \n \n \n \n this.getCuratorsString(col)}/>\n \n \n \n );\n }\n}\n\nexport default Download;","/* eslint-disable react-hooks/exhaustive-deps */\nimport { MDBBtn, MDBCardText, MDBInput, MDBSpinner } from 'mdbreact';\nimport React, { useEffect, useState } from 'react';\nimport { Fragment } from 'react';\nimport { connect } from 'react-redux';\nimport { useSnackbar } from 'react-simple-snackbar';\nimport { failureOptions, siteUrlsConfig, succesOptions } from '../../../../configs';\nimport http from '../../../../services/http/affiliates';\n\nconst CommentField = ({item, choosedSiteId}) => {\n const [isEditing, setEditing] = useState(false);\n const [inputValue, setInputValue] = useState('');\n const [loading, setLoading] = useState(false);\n\n const [openSuccessSnackbar] = useSnackbar(succesOptions);\n const [openFailureSnackbar] = useSnackbar(failureOptions)\n\n useEffect(() => {\n setInputValue(item.comment);\n }, []);\n\n const onEditClick = () => {\n setEditing(true);\n // setInputValue(item.comment);\n }\n\n const onSaveClick = async () => {\n setLoading(true);\n try {\n await http.post(`/api/${siteUrlsConfig[choosedSiteId]}/AddAffComment/${item.userId}/${inputValue || '%20'}`)\n openSuccessSnackbar('Comment has been edited')\n } catch (err) {\n openFailureSnackbar('Something went wrong...')\n }\n setLoading(false);\n setEditing(false);\n }\n\n return (\n \n {\n !isEditing ? (\n \n {inputValue || '-'}\n Edit\n \n ) : (\n \n setInputValue(e.target.value)} value={inputValue} />\n {!loading ? Save : }\n \n )\n } \n \n )\n}\n\nconst mapStateToProps = ({app}) => ({\n choosedSiteId: app.choosedSiteId,\n});\n\nexport default connect(mapStateToProps, null)(CommentField);\n","import styled from 'styled-components';\n\nexport const Container = styled.div`\n tbody {\n tr {\n height: 130px !important;\n }\n }\n`;\nexport const RowsTest = styled.div`\n position: absolute;\n /* left: 0; */\n top: 0;\n width: 2rem;\n height: 100%;\n padding-top: 100px;\n`;\n\nexport const Index = styled.div`\n height: 130px;\n width: 100%;\n display: flex;\n justify-content: center;\n align-items: center;\n`;","/* eslint-disable react-hooks/exhaustive-deps */\nimport React from \"react\";\nimport _ from \"lodash\";\nimport moment from \"moment\";\n\nimport {\n MDBBtn,\n MDBCard,\n MDBCol,\n MDBInput,\n MDBRow,\n MDBCardBody,\n MDBDataTable,\n MDBSpinner,\n MDBSelect,\n MDBSelectInput,\n MDBSelectOptions,\n MDBSelectOption,\n MDBCardText,\n} from \"mdbreact\";\n\nimport http from \"../../../../services/http/affiliates\";\nimport { connect } from \"react-redux\";\nimport { useSnackbar } from \"react-simple-snackbar\";\nimport Download from \"../Download\";\nimport {\n failureOptions,\n siteUrlsConfig,\n succesOptions,\n} from \"../../../../configs\";\n\nimport CommentField from \"../CommentField\";\n\nimport * as S from \"./styled\";\nimport { Fragment } from \"react\";\nimport useDateScrollHeader from \"../../../../hooks/useDateScrollHeader\";\nimport DateInput from \"../../../../components/DateInput\";\n\nconst AffTable = ({ choosedSiteId }) => {\n const [openSuccessSnackbar] = useSnackbar(succesOptions);\n const [openFailureSnackbar] = useSnackbar(failureOptions);\n\n const [allData, setAllData] = React.useState([]);\n const [curators, setCurators] = React.useState([]);\n const [loading, setLoading] = React.useState(false);\n const [affData, setAffData] = React.useState({\n columns: [],\n rows: [],\n });\n\n const [dateForm, setDateForm] = React.useState({\n from: moment().format(\"YYYY-MM-DD\"),\n to: moment().format(\"YYYY-MM-DD\"),\n });\n\n const [form, setForm] = React.useState({\n curatorName: \"\",\n email: \"\",\n comment: \"\",\n });\n\n useDateScrollHeader(\n {\n date: `${moment(dateForm.from).format(\"DD-MM-YYYY\")} - ${moment(\n dateForm.to\n ).format(\"DD-MM-YYYY\")}`,\n },\n [dateForm]\n );\n\n React.useEffect(() => {\n onClick();\n }, [choosedSiteId]);\n\n React.useEffect(() => {\n recalculateTotal();\n }, [form.email, form.curatorName, form.comment]);\n\n const onDropChange = async (value, itemCurators, curatorsData, item) => {\n const addedElements = _.difference(value, itemCurators);\n const deletedElements = _.difference(itemCurators, value);\n if (addedElements.length) {\n try {\n await http.post(\n `/api/${siteUrlsConfig[choosedSiteId]}/AddAffToCuratorMany/${\n item.userId\n }/${curatorsData.find((c) => c.name === addedElements[0]).id}`\n );\n onClick(true);\n openSuccessSnackbar(\"Curator has added\");\n } catch (err) {\n openFailureSnackbar(\"Something went wrong :(\");\n }\n }\n if (deletedElements.length && !deletedElements.includes(null)) {\n try {\n await http.post(\n `/api/${siteUrlsConfig[choosedSiteId]}/RemoveAffFromCuratorMany/${\n item.userId\n }/${curatorsData.find((c) => c.name === deletedElements[0]).id}`\n );\n onClick(true);\n openSuccessSnackbar(\"Curator has removed\");\n } catch (err) {\n openFailureSnackbar(\"Something went wrong :(\");\n }\n }\n };\n\n const renderDropDownWithmultiple = (itemCurators, curatorsData, item) => {\n let dropParams = [];\n if (!itemCurators.length) {\n dropParams = [\n // {\n // name: \"None\",\n // id: null,\n // },\n ...curatorsData,\n ];\n } else {\n dropParams = [...curatorsData];\n }\n return (\n onDropChange(val, itemCurators, curatorsData, item)}\n className=\"colorful-select dropdown-primary mx-2\"\n multiple\n key={JSON.stringify(item)}\n >\n \n \n {dropParams.map((curator) => (\n \n {curator.name}\n \n ))}\n \n \n );\n };\n\n const recalculateTotal = () => {\n const filteredData = allData\n .filter((item) => {\n if (!form.curatorName || form.curatorName === \"All\") {\n return true;\n }\n return item.curators.includes(form.curatorName);\n })\n .filter((r) => r.email.includes(form.email));\n const totalCount = {\n avgPerDayWeek: Math.round(\n _.sumBy(filteredData, \"avgPerDayWeek\") / filteredData.length\n ),\n avgPerDayMonth: Math.round(\n _.sumBy(filteredData, \"avgPerDayMonth\") / filteredData.length\n ),\n sum: _.sumBy(filteredData, \"sum\"),\n money: _.sumBy(filteredData, \"money\"),\n };\n\n setAffData({\n columns: [\n {\n label:
ID
,\n field: \"ind\",\n width: 150,\n sort: \"disabled\",\n },\n {\n label:
Email
,\n field: \"email\",\n width: 150,\n },\n {\n label: (\n
\n
AvgPerDayWeek
\n
\n (\n {isNaN(totalCount.avgPerDayWeek) ? 0 : totalCount.avgPerDayWeek}\n )\n
\n
\n ),\n field: \"avgPerDayWeek\",\n width: 270,\n },\n {\n label: (\n
\n
AvgPerDayMonth
\n
\n (\n {isNaN(totalCount.avgPerDayMonth)\n ? 0\n : totalCount.avgPerDayMonth}\n )\n
\n
\n ),\n field: \"avgPerDayMonth\",\n width: 200,\n },\n {\n label: (\n
\n
Sum
\n
({totalCount.sum})
\n
\n ),\n field: \"sum\",\n width: 100,\n },\n {\n label: (\n
\n
Money
\n
({totalCount.money})
\n
\n ),\n field: \"money\",\n width: 100,\n },\n {\n label:
Curators
,\n field: \"curatorsDrop\",\n width: 100,\n },\n {\n label:
Comment
,\n field: \"commentField\",\n width: 100,\n },\n ],\n rows: [...affData.rows],\n });\n };\n\n const onClick = async (withoutLoading = false) => {\n if (!withoutLoading) {\n setLoading(true);\n }\n const { data: curatorsData } = await http.get(\n `/api/${siteUrlsConfig[choosedSiteId]}/GetCurators/`\n );\n setCurators(curatorsData);\n const { data } = await http.get(\n `/api/${siteUrlsConfig[choosedSiteId]}/GetAffData/${dateForm.from}/${moment(dateForm.to).add(1, 'days').format('YYYY-MM-DD')}`\n );\n\n const grouped = _.groupBy(data, (i) => i.email);\n const formattedWithCurators = Object.keys(grouped).map((key, index) => ({\n email: grouped[key][0].email,\n avgPerDayMonth: grouped[key][0].avgPerDayMonth,\n avgPerDayWeek: grouped[key][0].avgPerDayWeek,\n money: grouped[key][0].money,\n sum: grouped[key][0].sum,\n userId: grouped[key][0].userId,\n curators: grouped[key].map((i) => i.curator),\n curatorsDrop: renderDropDownWithmultiple(\n grouped[key].map((i) => i.curator).filter(i => i !== null),\n curatorsData,\n grouped[key][0]\n ),\n commentField: (\n \n ),\n comment: grouped[key][0].comment || \"\",\n }));\n\n setAllData(\n formattedWithCurators.map((item) => ({\n email: item.email,\n avgPerDayMonth: item.avgPerDayMonth,\n avgPerDayWeek: item.avgPerDayWeek,\n money: item.money,\n sum: item.sum,\n userId: item.userId,\n curators: item.curators,\n comment: item.comment,\n }))\n );\n\n const totalCount = {\n avgPerDayWeek: Math.round(\n _.sumBy(formattedWithCurators, \"avgPerDayWeek\") / data.length\n ),\n avgPerDayMonth: Math.round(\n _.sumBy(formattedWithCurators, \"avgPerDayMonth\") / data.length\n ),\n sum: _.sumBy(formattedWithCurators, \"sum\"),\n money: _.sumBy(formattedWithCurators, \"money\"),\n };\n\n setAffData({\n columns: [\n {\n label:
ID
,\n field: \"ind\",\n width: 150,\n sort: \"disabled\",\n },\n {\n label:
Email
,\n field: \"email\",\n width: 150,\n },\n {\n label: (\n
\n
AvgPerDayWeek
\n
\n (\n {isNaN(totalCount.avgPerDayWeek) ? 0 : totalCount.avgPerDayWeek}\n )\n
\n
\n ),\n field: \"avgPerDayWeek\",\n width: 270,\n },\n {\n label: (\n
\n
AvgPerDayMonth
\n
\n (\n {isNaN(totalCount.avgPerDayMonth)\n ? 0\n : totalCount.avgPerDayMonth}\n )\n
\n
\n ),\n field: \"avgPerDayMonth\",\n width: 200,\n },\n {\n label: (\n
\n
Sum
\n
({totalCount.sum})
\n
\n ),\n field: \"sum\",\n width: 100,\n },\n {\n label: (\n
\n
Money
\n
({totalCount.money})
\n
\n ),\n field: \"money\",\n width: 100,\n },\n {\n label:
Curators
,\n field: \"curatorsDrop\",\n width: 100,\n },\n {\n label:
Comment
,\n field: \"commentField\",\n width: 100,\n },\n ],\n rows: [...formattedWithCurators],\n });\n setLoading(false);\n };\n\n const getRows = (rows) => {\n return rows\n .filter((item) => {\n if (!form.curatorName || form.curatorName === \"All\") {\n return true;\n }\n return item.curators.includes(form.curatorName);\n })\n .filter((r) => r.email.includes(form.email))\n .filter((r) => r.comment.includes(form.comment));\n };\n\n return (\n <>\n \n \n setDateForm(value)}\n />\n\n \n onClick(false)}>Show\n {\n if (!form.curatorName || form.curatorName === \"All\") {\n return true;\n }\n return item.curators.includes(form.curatorName);\n })\n .filter((r) => r.email.includes(form.email))\n .filter((r) => r.comment.includes(form.comment))}\n />\n \n \n \n \n \n Filter:\n \n \n {\n setForm({\n ...form,\n email: e.target.value,\n });\n }}\n label=\"Email\"\n />\n \n\n \n {\n console.log(\"val\", val);\n setForm({\n ...form,\n curatorName: val,\n });\n }}\n label=\"Curator\"\n className=\"colorful-select dropdown-primary mx-2\"\n >\n \n \n {[{ name: \"All\" }, ...curators].map((curator) => (\n \n {curator.name}\n \n ))}\n \n \n \n\n \n {\n setForm({\n ...form,\n comment: e.target.value,\n });\n }}\n label=\"Comment\"\n />\n \n \n \n\n \n \n {!loading ? (\n \n \n {[...Array(+getRows([...affData.rows]).length).keys()].map(\n (i) => (\n {i + 1}\n )\n )}\n \n \n \n \n \n ) : (\n \n )}\n \n \n \n );\n};\n\nconst mapStateToProps = ({ app, auth }) => ({\n choosedSiteId: app.choosedSiteId,\n user: auth.user,\n});\n\nexport default connect(mapStateToProps, null)(AffTable);\n","import styled from 'styled-components';\n\nexport const Container = styled.div`\n .logo {\n padding-left: 20px;\n margin-top: 20px;\n }\n .side-nav.wide .collapsible-body a {\n padding-left: 23px;\n background-color: transparent;\n }\n .preloader-wrapper {\n margin-left: calc(50% - 50px);\n }\n .btn-container {\n display: flex;\n align-items: center;\n }\n .table-responsive {\n overflow-y: visible;\n overflow-x: visible;\n /* .select-dropdown {\n margin: 0;\n text-align: center;\n }\n td {\n text-align: center;\n padding-top: 10px;\n padding-bottom: 10px;\n } */\n }\n`;","import React from 'react';\nimport { MDBContainer } from 'mdbreact';\n\nimport AffTable from './components/AffTable';\n\nimport * as S from './styled';\n\nclass AffDataPage extends React.Component {\n\n render() {\n return (\n \n \n \n \n \n );\n }\n}\n\nexport default AffDataPage;","import styled from 'styled-components';\n\nexport const SearchContainer = styled.div`\n display: flex;\n align-items: center;\n justify-content: flex-start;\n margin-right: auto;\n padding-right: 0;\n input {\n width: 165px;\n }\n`;\n","import React from 'react';\n\nimport * as S from './styled';\n\nconst SearchInput = ({onInputChange = () => {}}) => {\n return (\n \n onInputChange(e.target.value)} placeholder=\"Search\" className=\"form-control form-control-sm ml-0 my-1\" />\n \n )\n};\n\nexport default SearchInput;\n","import styled from 'styled-components';\n\nexport const Container = styled.div`\n tbody {\n tr {\n height: 65px !important;\n }\n }\n`;\nexport const RowsTest = styled.div`\n position: absolute;\n /* left: 0; */\n top: 0;\n width: 2rem;\n height: 100%;\n padding-top: 100px;\n`;\n\nexport const Index = styled.div`\n height: 65px;\n width: 100%;\n display: flex;\n justify-content: center;\n align-items: center;\n`;","/* eslint-disable react-hooks/exhaustive-deps */\nimport React, { useEffect, useState } from 'react';\nimport _ from 'lodash';\n\nimport { MDBSelectOptions, MDBCard, MDBSelectOption, MDBSelectInput, MDBSelect, MDBCardBody, MDBDataTable, MDBBtn, MDBSpinner, MDBCardText } from 'mdbreact';\n\nimport http from '../../../../services/http/affiliates';\nimport { connect } from 'react-redux';\nimport { siteUrlsConfig } from '../../../../configs';\nimport SearchInput from '../../../../components/SearchInput';\n\n\nimport * as S from './styled';\nimport { Fragment } from 'react';\n\nconst AffTable = ({choosedSiteId}) => {\n\n const [data, setData] = useState([]);\n\n const params = [\n 50,\n 200,\n 500,\n 1000,\n 1500,\n 2000,\n 2500,\n 3000,\n ];\n\n const [totalSum, setTotalSum] = React.useState(0);\n const [loading, setLoading] = React.useState(false);\n const [searchText, setSearchText] = React.useState('');\n\n const columns = [\n {\n label:
ID
,\n field: 'ind',\n width: 150,\n sort: 'disabled',\n },\n {\n label:
Email
,\n field: 'email',\n width: 150,\n },\n {\n label:
ProfileId
,\n field: 'profileId',\n width: 270,\n },\n {\n label:
Sending
,\n field: 'sendingButton',\n width: 200,\n },\n {\n label:
Batch
,\n field: 'batchDrop',\n width: 100,\n },\n {\n label:
SentToday({totalSum})
,\n field: 'sentToday',\n width: 100,\n },\n {\n label:
Online
,\n field: 'onlineStatus',\n width: 100,\n },\n ];\n\n const [affData, setAffData] = React.useState({\n columns: [],\n rows: [],\n });\n\n const [sortedBySending, setSortedBySending] = React.useState('');\n const [sortedByOnline, setSortedByOnline] = React.useState('');\n\n useEffect(() => {\n loadData();\n }, [choosedSiteId]);\n\n React.useEffect(() => {\n if (data.length) {\n setFinalData();\n }\n }, [JSON.stringify(data), affData.rows.length]);\n\n const renderSendButton = (item, index) => {\n if (!affData.rows[0]) {\n return null;\n }\n return item.sending ?

Sending..

: onButtonPress(index)}>Send\n }\n\n const renderOnlineStatus = (item) => {\n return
\n }\n \n const renderDropDown = (item, index) => (\n onDropChange(+val, item, index)}\n className='colorful-select dropdown-primary mx-2'\n >\n \n \n {params.map(param => {param})}\n \n \n )\n\n const onDropChange = (val, item, index) => {\n const items = [...affData.rows];\n items[index].batch = +val;\n const formattedData = items.map((item, index) => ({\n ...item,\n sending: item.sending,\n batch: item.batch,\n sendingButton: renderSendButton(item, index),\n batchDrop: renderDropDown(item, index),\n onlineStatus: renderOnlineStatus(item),\n }))\n setAffData({\n columns: columns,\n rows: [...formattedData],\n });\n }\n const onButtonPress = async (index) => {\n const items = [...affData.rows];\n items[index].sending = 1;\n const formattedData = items.map((item, index) => ({\n ...item,\n sending: item.sending,\n batch: item.batch,\n sendingButton: renderSendButton(item, index),\n batchDrop: renderDropDown(item, index),\n onlineStatus: renderOnlineStatus(item),\n }))\n setAffData({\n columns: columns,\n rows: [...formattedData],\n });\n await http.post(`/api/${siteUrlsConfig[choosedSiteId]}/SendAffManualActions`, {\n email: affData.rows[index].email,\n profileId: affData.rows[index].profileId,\n sending: affData.rows[index].sending,\n batch: affData.rows[index].batch,\n sentToday: affData.rows[index].sentToday,\n })\n }\n\n const loadData = async () => {\n setLoading(true);\n const {data} = await http.post(`/api/${siteUrlsConfig[choosedSiteId]}/GetAffManualActions`);\n const dataWithFormattedBatch = data.map(item => ({\n ...item,\n batch: item.batch === 1000 ? 50 : item.batch\n }));\n setData(dataWithFormattedBatch);\n }\n\n const setFinalData = () => {\n if (!siteUrlsConfig[choosedSiteId]) return;\n setLoading(true);\n const formattedData = data.map((item, index) => ({\n ...item,\n sending: item.sending,\n batch: item.batch,\n sendingButton: renderSendButton(item, index),\n batchDrop: renderDropDown(item, index),\n onlineStatus: renderOnlineStatus(item),\n }))\n\n const sum = _.sumBy(data, 'sentToday');\n setTotalSum(sum);\n\n setAffData({\n columns: columns,\n rows: [...formattedData],\n });\n setLoading(false);\n }\n\n const filteredBySearch = data => {\n const filteredRows = data.rows.filter(item => item?.email?.toLowerCase().includes(searchText.toLowerCase()) || `${item?.profileId}`.includes(searchText.toLowerCase()));\n let finallRows = [];\n if (sortedBySending !== '') {\n if (sortedBySending === 'desc') {\n finallRows = _.sortBy(filteredRows, i => i.sending);\n }\n if (sortedBySending === 'asc') {\n finallRows = _.reverse(_.sortBy(filteredRows, i => i.sending));\n }\n } else if (sortedByOnline !== '') {\n if (sortedByOnline === 'desc') {\n finallRows = _.sortBy(filteredRows, i => i.online);\n }\n if (sortedByOnline === 'asc') {\n finallRows = _.reverse(_.sortBy(filteredRows, i => i.online));\n }\n } else {\n finallRows = filteredRows;\n }\n return {\n ...data,\n rows: finallRows,\n };\n };\n \n const onSort = (sortObj) => {\n if (sortObj.column === 'sendingButton') {\n setSortedBySending(sortObj.direction);\n } else {\n setSortedBySending('');\n }\n if (sortObj.column === 'onlineStatus') {\n setSortedByOnline(sortObj.direction);\n } else {\n setSortedByOnline('');\n }\n };\n\n return (\n <>\n \n \n setSearchText(value)} />\n {!loading ? \n \n {\n [...Array(+filteredBySearch(affData).rows.length).keys()].map(i => (\n {i + 1}\n ))\n }\n \n \n \n \n\n : }\n \n \n \n \n )\n}\n\nconst mapStateToProps = ({app, auth}) => ({\n choosedSiteId: app.choosedSiteId,\n user: auth.user,\n});\n\nexport default connect(mapStateToProps, null)(AffTable);","import styled from 'styled-components';\n\nexport const Container = styled.div`\n .logo {\n padding-left: 20px;\n margin-top: 20px;\n }\n .side-nav.wide .collapsible-body a {\n padding-left: 23px;\n background-color: transparent;\n }\n .preloader-wrapper {\n margin-left: calc(50% - 50px);\n }\n .btn-container {\n display: flex;\n align-items: center;\n }\n .md-form {\n margin: 0;\n }\n .table-responsive {\n overflow-y: visible;\n overflow-x: visible;\n .select-dropdown {\n margin: 0;\n text-align: center;\n }\n td {\n text-align: center;\n padding-top: 10px;\n padding-bottom: 10px;\n }\n }\n .filtrable {\n text-align: center;\n }\n\n`;","import React from 'react';\nimport { MDBContainer } from 'mdbreact';\n\nimport ManualActionsTable from './components/ManualActionsTable';\n\nimport * as S from './styled';\n\nclass ManualActionsPage extends React.Component {\n\n render() {\n return (\n \n \n \n \n \n );\n }\n}\n\nexport default ManualActionsPage;","import React from 'react';\n\nimport { MDBBtn, MDBCard, MDBCol, MDBRow, MDBCardBody, MDBDataTable, MDBSpinner, MDBInput, MDBTable } from 'mdbreact';\n\nimport http from '../../../../services/http/affiliates';\nimport { connect } from 'react-redux';\nimport { MDBValidation } from 'mdb-react-ui-kit';\nimport Deactivate from '../../../../components/Deactivate';\nimport { siteUrlsConfig } from '../../../../configs';\n\n\nconst CuratorsTable = ({choosedSiteId}) => {\n\n const [loading, setLoading] = React.useState(false);\n const [curators, setCurators] = React.useState([]);\n const [error, setError] = React.useState(false);\n const [form, setForm] = React.useState({\n name: '',\n });\n\n React.useEffect(() => {\n getCurators();\n }, [choosedSiteId]);\n\n const onInputChange = (value) => {\n setError(false);\n setForm({\n name: value,\n });\n };\n\n const createCurator = async () => {\n if (!form.name) {\n setError(true);\n return;\n }\n setLoading(true);\n await http.post(`/api/${siteUrlsConfig[choosedSiteId]}/CreateCurator/${form.name}`);\n setForm({\n name: '',\n });\n await getCurators();\n };\n\n const deleteCurator = async (name) => {\n await http.post(`/api/${siteUrlsConfig[choosedSiteId]}/DeleteCurator/${name}`)\n const {data} = await http.get(`/api/${siteUrlsConfig[choosedSiteId]}/GetCurators/`);\n setCurators(data);\n }\n const getCurators = async () => {\n setLoading(true);\n const {data} = await http.get(`/api/${siteUrlsConfig[choosedSiteId]}/GetCurators/`);\n setCurators(data);\n setLoading(false);\n }\n return (\n <>\n \n \n\n \n onInputChange(e.target.value)}\n value={form.name}\n label=\"Name\"\n />\n
Curator’s name cannot be empty
\n
\n\n \n Add\n \n
\n
\n\n \n \n {!loading ? \n \n \n ID\n Name\n Deactivate\n \n \n \n {curators.map(curator => (\n <>\n {!curator.isDeleted && \n {curator.id}\n {curator.name}\n deleteCurator(curator.name)} />\n }\n \n ))}\n \n : }\n {/* {!loading ? : } */}\n \n \n \n \n )\n}\n\nconst mapStateToProps = ({app, auth}) => ({\n choosedSiteId: app.choosedSiteId,\n user: auth.user,\n});\n\nexport default connect(mapStateToProps, null)(CuratorsTable);","import styled from 'styled-components';\n\nexport const Container = styled.div`\n .logo {\n padding-left: 20px;\n margin-top: 20px;\n }\n .md-form {\n margin-bottom: 0;\n }\n .side-nav.wide .collapsible-body a {\n padding-left: 23px;\n background-color: transparent;\n }\n .preloader-wrapper {\n margin-left: calc(50% - 50px);\n }\n .btn-container {\n display: flex;\n align-items: center;\n }\n`;","import React from 'react';\nimport { MDBContainer } from 'mdbreact';\n\nimport CuratorsTable from './components/CuratorsTable';\n\nimport * as S from './styled';\n\nclass CuratorsPage extends React.Component {\n\n render() {\n return (\n \n \n \n \n \n );\n }\n}\n\nexport default CuratorsPage;","import styled from 'styled-components';\n\nexport const Container = styled.div`\n .table {\n margin-bottom: 0;\n }\n td {\n vertical-align: middle;\n }\n .table-responsive {\n /* overflow-y: visible;\n overflow-x: visible; */\n }\n`;\n\nexport const AddButton = styled.div`\n width: 100%;\n height: 50px;\n background-color: #00bcd4;\n display: flex;\n justify-content: center;\n align-items: center;\n cursor: pointer;\n opacity: ${({ disabled }) => disabled ? 0.5 : 1};\n :hover {\n opacity: ${({ disabled }) => disabled ? 0.5 : 0.7};\n }\n`;\n\nexport const AddText = styled.span`\n color: white;\n`;\n\nexport const Th = styled.th`\n cursor: pointer;\n position: relative;\n padding-right: 30px !important;\n ::after {\n right: 1em;\n font-family: \"Font Awesome\\ 5 Free\", sans-serif;\n font-size: 1rem;\n font-weight: 900;\n content: \"\\f0de\";\n position: absolute;\n bottom: .9em;\n display: block;\n opacity: ${({isSorting, direction}) => (isSorting && direction === 'desc') ? 1 : 0.4}\n }\n ::before {\n right: 16px;\n font-family: \"Font Awesome\\ 5 Free\", sans-serif;\n font-size: 1rem;\n font-weight: 900;\n content: \"\\f0dd\";\n position: absolute;\n bottom: .9em;\n display: block;\n opacity: ${({isSorting, direction}) => (isSorting && direction === 'asc') ? 1 : 0.4}\n }\n`;\n\nexport const CollapseButton = styled.div`\n display: none;\n padding: 15px;\n cursor: pointer;\n :hover {\n opacity: 0.9;\n }\n @media screen and (max-width: 780px) {\n display: block;\n }\n`;\n","import {\n MDBSelect,\n MDBSelectInput,\n MDBSelectOption,\n MDBSelectOptions,\n MDBBtn,\n MDBTooltip,\n} from \"mdbreact\";\n\nimport React from 'react';\n\nconst getOperatorText = (operatorValue, operators) => operators?.find(o => o.value === operatorValue)?.text;\nconst getOperatorValue = (operatorText, operators) => operators?.find(o => o.text === operatorText)?.value;\nconst getRestrictionByType = (type, restrictions) => restrictions?.find(r => r.propertyName === type);\n\nexport const renderRestrictionEdit = ({\n label,\n type,\n inputType,\n onRestrictionChange = () => {},\n clearRestriction = () => {},\n operators = [],\n restrictions = [],\n}) => (\n
\n {label}:\n onRestrictionChange(type, 'propertyOperator', getOperatorValue(val, operators))}\n className=\"colorful-select dropdown-primary mx-2\"\n style={{ width: 50 }}\n >\n \n \n {operators.map((operator) => (\n \n {operator.text}\n \n ))}\n \n \n onRestrictionChange(type, 'propertyValue', e.target.value)}\n type={inputType}\n style={{ width: 50, height: 41, border: '1px solid #ced4da', borderRadius: '0.2rem' }}\n />\n clearRestriction(type)}>\n \n \n
\n)\n\nexport const mapRestrictionToLabel = {\n ipinfo_country: 'geo',\n};","import React, { useState } from \"react\";\nimport {\n MDBBtn,\n MDBModal,\n MDBModalFooter,\n MDBInput,\n MDBModalBody,\n} from \"mdbreact\";\nimport styled from \"styled-components\";\nimport http from \"../../../../services/http\";\nimport { failureOptions, succesOptions } from \"../../../../configs\";\nimport { useSnackbar } from \"react-simple-snackbar\";\n\nconst TestModal = ({ visible, onClose, onSave, actionType }) => {\n const [testLink, setTestLink] = useState(\"\");\n const [openSuccessSnackbar] = useSnackbar(succesOptions);\n const [openFailureSnackbar] = useSnackbar(failureOptions);\n\n const onSubmit = async () => {\n const { data } = await http.post(\"/actions/test\", {\n url: testLink,\n action: actionType,\n });\n if (data.result === \"Fail\") {\n openFailureSnackbar(\"Fail\");\n } else {\n openSuccessSnackbar('Success');\n }\n onSave();\n onClose();\n };\n\n return (\n \n \n \n Test link\n setTestLink(e.target.value)}\n style={{ marginTop: 0 }}\n />\n Action Type\n \n \n \n \n \n Save and run test\n \n \n Close\n \n \n \n );\n};\n\nconst Container = styled.div`\n .md-form {\n margin-top: 0;\n }\n`;\nexport default TestModal;\n","import React, { useEffect, useState } from 'react';\nimport {\n MDBSelect,\n MDBSelectInput,\n MDBSelectOption,\n MDBSelectOptions,\n MDBBtn,\n MDBIcon \n} from \"mdbreact\";\nimport { useSnackbar } from 'react-simple-snackbar';\nimport http from '../../../../services/http';\n\nconst branch = 7;\n\nconst geoOperators = [\n { value: 0, text: \"=\" },\n { value: 1, text: \"Not\" },\n { value: 6, text: \"In list\" },\n { value: 7, text: \"Not in list\" },\n];\n\nconst ageOperators = [\n { value: 0, text: \"=\" },\n { value: 2, text: \">\" },\n { value: 3, text: \">=\" },\n { value: 4, text: \"<\" },\n { value: 5, text: \"<=\" },\n];\n\nconst getRestrictionByType = (type, restrictions) => restrictions?.find(r => r.propertyName === type);\nconst getOperatorText = (operatorValue, operators) => operators?.find(o => o.value === operatorValue)?.text;\nconst getOperatorValue = (operatorText, operators) => operators?.find(o => o.text === operatorText)?.value;\n\n\nconst renderRestrictionEdit = ({\n label,\n type,\n inputType,\n onRestrictionChange = () => {},\n clearRestriction = () => {},\n operators = [],\n restrictions = [],\n}) => (\n
\n {label}:\n onRestrictionChange(type, 'propertyOperator', getOperatorValue(val, operators))}\n className=\"colorful-select dropdown-primary mx-2\"\n style={{ width: 50 }}\n >\n \n \n {operators.map((operator) => (\n \n {operator.text}\n \n ))}\n \n \n {\n onRestrictionChange(type, 'propertyValue', e.target.value)\n }}\n type={inputType}\n style={{ width: 50, height: 41, border: '1px solid #ced4da', borderRadius: '0.2rem' }}\n />\n clearRestriction(type)}>\n \n \n
\n)\n\nconst CreateSub = ({ partnerDealId, handleClose, webId, refetch }) => {\n\n const [finalRestrictions, setFinalRestrictions] = useState([]);\n\n const [form, setForm] = useState({\n subId: \"\",\n payout: undefined,\n dailyLimit: undefined,\n isActive: \"true\",\n });\n\n const onFormChange = (value, type) => {\n setForm({\n ...form,\n [type]: value,\n })\n };\n\n const onRestrictionChange = (type, property, value) => {\n const testRestrictions = finalRestrictions;\n \n const restrictionIndex = testRestrictions.findIndex(r => r.propertyName === type);\n if (restrictionIndex > -1) {\n testRestrictions[restrictionIndex][property] = value;\n } else {\n const newRestriction = {\n isNew: true,\n propertyName: type,\n [property]: value,\n objectId: form.subId,\n partnerDealId\n }\n testRestrictions.push(newRestriction);\n }\n setFinalRestrictions([...testRestrictions])\n };\n\n const onRestrictionClear = (type) => {\n const filtered = finalRestrictions.filter(r => r.propertyName !== type);\n setFinalRestrictions([...filtered]);\n }\n\n const onSavePress = async () => {\n if (!form.subId) {\n alert('SubId field is required');\n return;\n }\n\n try {\n const { data } = await http.post(`/partnerrestrictions/${partnerDealId}`, {\n objectId: form.subId,\n branch: branch,\n propertyName: \"DailyLimit\",\n propertyValue: form.dailyLimit || \"0\",\n propertyOperator: 0,\n parent: webId,\n })\n console.log('data', data);\n } catch (err) {\n alert('Restriction for this combination of branch, object id and property already exists')\n return;\n }\n \n if (finalRestrictions.length) {\n finalRestrictions.map(restriction => {\n http.post(`/partnerrestrictions/${partnerDealId}`, {\n objectId: form.subId,\n branch: branch,\n propertyName: restriction.propertyName,\n propertyValue: restriction.propertyValue,\n propertyOperator: restriction.propertyOperator,\n parent: webId,\n })\n })\n }\n \n if (form.payout) {\n await http.post(`/partnerrestrictions/${partnerDealId}`, {\n objectId: form.subId,\n branch: branch,\n propertyName: \"Payout\",\n propertyValue: form.payout,\n propertyOperator: 0,\n parent: webId,\n })\n }\n \n // if (form.dailyLimit) {\n // await http.post(`/partnerrestrictions/${partnerDealId}`, {\n // objectId: form.subId,\n // branch: branch,\n // propertyName: \"DailyLimit\",\n // propertyValue: form.dailyLimit,\n // propertyOperator: 0,\n // parent: webId,\n // })\n // }\n refetch();\n handleClose();\n }\n\n return (\n \n \n onFormChange(e.target.value, 'subId')}\n />\n \n \n
\n onFormChange(e.target.value, 'payout')}\n style={{ width: 50, height: 41, border: '1px solid #ced4da', borderRadius: '0.2rem' }}\n />\n onFormChange(undefined, 'payout')}>\n \n \n
\n \n \n onFormChange(e.target.value, 'dailyLimit')}\n />\n \n \n {renderRestrictionEdit({\n label: \"Age\",\n type: \"age\",\n inputType: \"number\",\n onRestrictionChange: onRestrictionChange,\n clearRestriction: onRestrictionClear,\n operators: ageOperators,\n restrictions: finalRestrictions,\n })}\n {renderRestrictionEdit({\n label: \"Geo\",\n type: \"ipinfo_country\",\n inputType: \"text\",\n onRestrictionChange: onRestrictionChange,\n clearRestriction: onRestrictionClear,\n operators: geoOperators,\n restrictions: finalRestrictions,\n })}\n \n \n onFormChange(e, 'isActive')}\n className=\"colorful-select dropdown-primary mx-2\"\n >\n \n \n {[\"true\", \"false\"].map((param) => (\n \n {param}\n \n ))}\n \n \n \n \n \n Save\n \n \n Cancel\n \n \n \n )\n}\n\nexport default CreateSub;","/* eslint-disable react-hooks/exhaustive-deps */\nimport React, { useEffect, useRef, useState } from 'react';\nimport _ from 'lodash';\nimport { MDBSelect,\n MDBSelectInput,\n MDBSelectOption,\n MDBSelectOptions,\n MDBBtn,\n MDBTooltip,\n MDBTableHead,\n MDBIcon } from \"mdbreact\";\nimport http from '../../../../services/http';\nimport CreateSub from './CreateSub';\n\nconst geoOperators = [\n { value: 0, text: \"=\" },\n { value: 1, text: \"Not\" },\n { value: 6, text: \"In list\" },\n { value: 7, text: \"Not in list\" },\n];\n\nconst ageOperators = [\n { value: 0, text: \"=\" },\n { value: 2, text: \">\" },\n { value: 3, text: \">=\" },\n { value: 4, text: \"<\" },\n { value: 5, text: \"<=\" },\n];\n\nconst getOperatorText = (operatorValue, operators) => operators?.find(o => o.value === operatorValue)?.text;\nconst getOperatorValue = (operatorText, operators) => operators?.find(o => o.text === operatorText)?.value;\nconst getRestrictionByType = (type, restrictions) => restrictions?.find(r => r.propertyName === type);\n\nconst renderPayoutEdit = ({\n type,\n inputType,\n onRestrictionChange = () => {},\n clearRestriction = () => {},\n restrictions = [],\n}) => (\n
\n {\n onRestrictionChange(type, 'propertyValue', e.target.value)\n onRestrictionChange(type, 'propertyOperator', 0)\n\n }}\n type={inputType}\n style={{ width: 50, height: 41, border: '1px solid #ced4da', borderRadius: '0.2rem' }}\n />\n clearRestriction(type)}>\n \n \n
\n)\n\nconst renderStatusEdit = ({\n isActive,\n onChange\n}) => {\n return (\n \n \n \n {[\"true\", \"false\"].map((param) => (\n \n {param}\n \n ))}\n \n \n )\n}\n\nconst renderDailyLimitEdit = ({\n type,\n onRestrictionChange = () => {},\n restrictions = [],\n}) => {\n const findValue = getRestrictionByType(type, restrictions)?.propertyValue;\n return (\n onRestrictionChange(type, 'propertyValue', e.target.value)}\n />\n )\n}\n\nconst renderRestrictionEdit = ({\n label,\n type,\n inputType,\n onRestrictionChange = () => {},\n clearRestriction = () => {},\n operators = [],\n restrictions = [],\n}) => (\n
\n {label}:\n onRestrictionChange(type, 'propertyOperator', getOperatorValue(val, operators))}\n className=\"colorful-select dropdown-primary mx-2\"\n style={{ width: 50 }}\n >\n \n \n {operators.map((operator) => (\n \n {operator.text}\n \n ))}\n \n \n {\n onRestrictionChange(type, 'propertyValue', e.target.value)\n }}\n type={inputType}\n style={{ width: 50, height: 41, border: '1px solid #ced4da', borderRadius: '0.2rem' }}\n />\n clearRestriction(type)}>\n \n \n
\n)\n\nconst SubRow = ({ subs, selectedUserId, partnerDealId, operators, webId, refetchSubs }) => {\n const [isCreate, setIsCreate] = useState(false);\n const [restrictions, setRestrictions] = useState([]);\n const [finalRestrictions, setFinalRestrictions] = useState([]);\n const [deletedRestrictions, setDeletedRestrictions] = useState([]);\n\n useEffect(async () => {\n if (selectedUserId) {\n const { data } = await http.get(`/partnerrestrictions/byuser?userId=${selectedUserId}&branch=7`)\n setRestrictions(data);\n }\n }, [selectedUserId])\n\n const [row, setRow] = useState(null);\n\n const [filterSubId, setFilterSubId] = useState('');\n\n const getSubStatus = (sub) => {\n const status = finalRestrictions.find(r => r.objectId === sub.subId && r.partnerDealId === partnerDealId && r?.propertyName === \"DailyLimit\")?.propertyValue === \"-1\" ? 'false' : 'true'\n return status;\n }\n\n useEffect(() => {\n setFinalRestrictions([...restrictions]);\n // setInitialRestrictions([...restrictions]);\n }, [restrictions]);\n\n // useEffect(() => {\n // setFinalSubs(subs)\n // }, [subs]);\n\n // const [openFailureSnackbar] = useSnackbar(failureOptions)\n\n\n const onEditClick = (id) => {\n const editSub = subs.find(s => s.id === id);\n setRow({\n ...editSub,\n isActive: getSubStatus(editSub),\n });\n };\n\n\n const saveStatus = async () => {\n const { data } = await http.get(`/partnerrestrictions/byuser?userId=${selectedUserId}&branch=7`)\n const dailyLimitRestriction = data.find(r => r.objectId === row?.subId && r.partnerDealId === partnerDealId && r.propertyName === \"DailyLimit\");\n\n if (row.isActive === \"true\" && dailyLimitRestriction && (Number(dailyLimitRestriction.propertyValue) < 0)) {\n await http.delete(`/partnerrestrictions/${partnerDealId}/${dailyLimitRestriction.id}`)\n }\n if (row.isActive === \"false\" && dailyLimitRestriction) {\n await http.patch(`/partnerrestrictions/${partnerDealId}/${dailyLimitRestriction.id}`, {\n propertyValue: \"-1\",\n propertyName: \"DailyLimit\",\n propertyOperator: 0,\n parent: webId,\n })\n }\n if (row.isActive === \"false\" && !dailyLimitRestriction) {\n const body = {\n objectId: row?.subId,\n branch: 7,\n propertyName: \"DailyLimit\",\n propertyValue: \"-1\",\n propertyOperator: 0,\n parent: webId,\n }\n await http.post(`/partnerrestrictions/${partnerDealId}`, body);\n }\n }\n const onSavePress = async () => {\n if (deletedRestrictions.length) {\n const deletedPromises = deletedRestrictions.map(deletedRestriction => {\n return http.delete(`/partnerrestrictions/${row?.partnerDealId}/${deletedRestriction.id}`)\n })\n await Promise.all(deletedPromises);\n }\n \n const addedRestrictions = finalRestrictions.filter(r => r.isNew);\n\n const addPromises = addedRestrictions.map((addedRestriction) => {\n const body = {\n objectId: row?.subId,\n branch: 7,\n propertyName: addedRestriction.propertyName,\n propertyValue: addedRestriction.propertyValue,\n propertyOperator: addedRestriction.propertyOperator,\n parent: webId,\n }\n return http.post(`/partnerrestrictions/${partnerDealId}`, body);\n })\n await Promise.all(addPromises);\n\n\n const changedRestrictions = finalRestrictions.filter(r => r.objectId === row?.subId && !r.isNew);\n\n const changedPromises = changedRestrictions.map((changedRestriction) => {\n const body = {\n propertyName: changedRestriction.propertyName,\n propertyValue: changedRestriction.propertyValue,\n propertyOperator: changedRestriction.propertyOperator,\n parent: webId,\n }\n return http.patch(`/partnerrestrictions/${partnerDealId}/${changedRestriction.id}`, body)\n })\n await Promise.all(changedPromises);\n \n await saveStatus();\n setDeletedRestrictions([]);\n setRow(null);\n const { data } = await http.get(`/partnerrestrictions/byuser?userId=${selectedUserId}&branch=7`)\n setRestrictions(data);\n // refetch();\n };\n\n const onRestrictionChange = (type, property, value) => {\n const testRestrictions = finalRestrictions;\n \n const restrictionIndex = testRestrictions.findIndex(r => r.propertyName === type && r.objectId === row?.subId && r.partnerDealId === partnerDealId);\n if (restrictionIndex > -1) {\n testRestrictions[restrictionIndex][property] = value;\n } else {\n const newRestriction = {\n isNew: true,\n propertyName: type,\n [property]: value,\n objectId: row?.subId,\n partnerDealId: row?.partnerDealId,\n }\n testRestrictions.push(newRestriction);\n }\n setFinalRestrictions([...testRestrictions])\n };\n\n const onRestrictionClear = (type) => {\n const deleted = finalRestrictions.filter(r => r.propertyName === type && r.objectId === row?.subId);\n const filtered = finalRestrictions.filter(r => r.objectId === row?.subId ? r.propertyName !== type : true);\n setDeletedRestrictions(deleted);\n setFinalRestrictions([...filtered]);\n }\n\n return (\n <>\n \n \n\n
\n SubId\n
\n setIsCreate(true)} style={{ marginRight: 20 }} color=\"success\" size=\"sm\">\n Create Sub\n \n setFilterSubId(e.target.value)} placeholder='Filter subs' />\n
\n
\n \n Payout\n Limit\n Restrictions\n Is Active\n \n\n \n {isCreate ? \n {\n setIsCreate(false);\n }}\n refetch={async () => {\n const { data } = await http.get(`/partnerrestrictions/byuser?userId=${selectedUserId}&branch=7`)\n setRestrictions(data);\n refetchSubs();\n }}\n partnerDealId={partnerDealId}\n webId={webId}\n /> : null}\n {\n subs.filter(sub => sub.subId.includes(filterSubId)).map(sub => {\n if (row?.id === sub?.id) {\n const restrictions = finalRestrictions.filter(r => r.objectId === sub.subId && r.partnerDealId === partnerDealId);\n return (\n \n {sub.subId}\n \n {renderPayoutEdit({\n type: \"Payout\",\n inputType: \"text\",\n onRestrictionChange: onRestrictionChange,\n clearRestriction: onRestrictionClear,\n operators: geoOperators,\n restrictions: restrictions,\n })}\n \n \n {renderDailyLimitEdit({\n type: \"DailyLimit\",\n onRestrictionChange,\n restrictions: restrictions,\n })}\n \n \n {renderRestrictionEdit({\n label: \"Age\",\n type: \"age\",\n inputType: \"number\",\n onRestrictionChange: onRestrictionChange,\n clearRestriction: onRestrictionClear,\n operators: ageOperators,\n restrictions: restrictions,\n })}\n {renderRestrictionEdit({\n label: \"Geo\",\n type: \"ipinfo_country\",\n inputType: \"text\",\n onRestrictionChange: onRestrictionChange,\n clearRestriction: onRestrictionClear,\n operators: geoOperators,\n restrictions: restrictions,\n })}\n \n \n {/* {renderStatusEdit({\n label: \"Status\",\n type: \"IsActive\",\n onRestrictionChange: onRestrictionChange,\n restrictions: finalRestrictions,\n })} */}\n {renderStatusEdit({\n isActive: row.isActive,\n onChange: (isActive) => setRow({ ...row, isActive })\n })}\n \n \n \n Save\n \n {\n const { data } = await http.get(`/partnerrestrictions/byuser?userId=${selectedUserId}&branch=7`)\n setRestrictions(data);\n setRow(null)\n }}>\n Cancel\n \n \n \n )\n }\n return (\n \n {sub.subId}\n \n {\n finalRestrictions.find(r => r.objectId === sub.subId && r.partnerDealId === partnerDealId && r?.propertyName === \"Payout\")?.propertyValue || ''\n }\n \n \n {\n finalRestrictions.find(r => r.objectId === sub.subId && r.partnerDealId === partnerDealId && r?.propertyName === \"DailyLimit\")?.propertyValue || '0'\n }\n \n \n {finalRestrictions.filter(r => r.objectId === sub.subId && r.partnerDealId === partnerDealId && r?.propertyName !== 'Payout' && r.propertyName !== 'PayoutCurrency' && r.propertyName !== \"IsActive\" && r.propertyName !== \"DailyLimit\").map(restriction => (\n
\n {restriction?.propertyName === 'ipinfo_country' ? 'geo' : restriction?.propertyName} {operators.find(o => o.value === restriction?.propertyOperator)?.text ?? ''} {restriction?.propertyValue}\n
\n ))}\n \n \n {\n finalRestrictions.find(r => r.objectId === sub.subId && r.partnerDealId === partnerDealId && r?.propertyName === \"DailyLimit\")?.propertyValue === \"-1\" ? 'false' : 'true'\n }\n \n onEditClick(sub.id)}>\n
\n \n
\n \n \n )\n })\n }\n \n )\n}\n\nexport default SubRow;","import React, { useEffect, useState } from 'react';\nimport {\n MDBSelect,\n MDBSelectInput,\n MDBSelectOption,\n MDBSelectOptions,\n MDBBtn,\n MDBIcon \n} from \"mdbreact\";\nimport { useSnackbar } from 'react-simple-snackbar';\nimport http from '../../../../services/http';\n\nconst branch = 3;\n\nconst geoOperators = [\n { value: 0, text: \"=\" },\n { value: 1, text: \"Not\" },\n { value: 6, text: \"In list\" },\n { value: 7, text: \"Not in list\" },\n];\n\nconst ageOperators = [\n { value: 0, text: \"=\" },\n { value: 2, text: \">\" },\n { value: 3, text: \">=\" },\n { value: 4, text: \"<\" },\n { value: 5, text: \"<=\" },\n];\n\nconst getRestrictionByType = (type, restrictions) => restrictions?.find(r => r.propertyName === type);\nconst getOperatorText = (operatorValue, operators) => operators?.find(o => o.value === operatorValue)?.text;\nconst getOperatorValue = (operatorText, operators) => operators?.find(o => o.text === operatorText)?.value;\n\n\nconst renderRestrictionEdit = ({\n label,\n type,\n inputType,\n onRestrictionChange = () => {},\n clearRestriction = () => {},\n operators = [],\n restrictions = [],\n}) => (\n
\n {label}:\n onRestrictionChange(type, 'propertyOperator', getOperatorValue(val, operators))}\n className=\"colorful-select dropdown-primary mx-2\"\n style={{ width: 50 }}\n >\n \n \n {operators.map((operator) => (\n \n {operator.text}\n \n ))}\n \n \n {\n onRestrictionChange(type, 'propertyValue', e.target.value)\n }}\n type={inputType}\n style={{ width: 50, height: 41, border: '1px solid #ced4da', borderRadius: '0.2rem' }}\n />\n clearRestriction(type)}>\n \n \n
\n)\n\nconst CreateWeb = ({ partnerDealId, handleClose, refetch }) => {\n\n const [finalRestrictions, setFinalRestrictions] = useState([]);\n\n const [form, setForm] = useState({\n webId: \"\",\n payout: undefined,\n dailyLimit: undefined,\n isActive: \"true\",\n });\n\n const onFormChange = (value, type) => {\n setForm({\n ...form,\n [type]: value,\n })\n };\n\n const onRestrictionChange = (type, property, value) => {\n const testRestrictions = finalRestrictions;\n \n const restrictionIndex = testRestrictions.findIndex(r => r.propertyName === type);\n if (restrictionIndex > -1) {\n testRestrictions[restrictionIndex][property] = value;\n } else {\n const newRestriction = {\n isNew: true,\n propertyName: type,\n [property]: value,\n objectId: form.webId,\n partnerDealId\n }\n testRestrictions.push(newRestriction);\n }\n setFinalRestrictions([...testRestrictions])\n };\n\n const onRestrictionClear = (type) => {\n const filtered = finalRestrictions.filter(r => r.propertyName !== type);\n setFinalRestrictions([...filtered]);\n }\n\n const onSavePress = async () => {\n if (!form.webId) {\n alert('Web Id is required field');\n return;\n }\n\n try {\n const { data } = await http.post(`/partnerdeals/${partnerDealId}/webs`, {\n dailyLimit: form.dailyLimit,\n status: form.isActive === \"true\" ? 1 : 0,\n webId: form.webId,\n });\n console.log('data', data);\n } catch (err) {\n alert('Partner web with WebId already exists');\n return;\n }\n\n if (finalRestrictions.length) {\n finalRestrictions.map(restriction => {\n http.post(`/partnerrestrictions/${partnerDealId}`, {\n objectId: form.webId,\n branch: 3,\n propertyName: restriction.propertyName,\n propertyValue: restriction.propertyValue,\n propertyOperator: restriction.propertyOperator,\n })\n })\n }\n\n if (form.payout) {\n await http.post(`/partnerrestrictions/${partnerDealId}`, {\n objectId: form.webId,\n branch: branch,\n propertyName: \"Payout\",\n propertyValue: form.payout,\n propertyOperator: 0,\n })\n }\n if (form.dailyLimit) {\n await http.post(`/partnerrestrictions/${partnerDealId}`, {\n objectId: form.webId,\n branch: branch,\n propertyName: \"DailyLimit\",\n propertyValue: form.dailyLimit,\n propertyOperator: 0,\n })\n }\n refetch();\n handleClose();\n }\n\n return (\n \n \n onFormChange(e.target.value, 'webId')}\n />\n \n \n
\n onFormChange(e.target.value, 'payout')}\n style={{ width: 50, height: 41, border: '1px solid #ced4da', borderRadius: '0.2rem' }}\n />\n onFormChange(undefined, 'payout')}>\n \n \n
\n \n \n onFormChange(e.target.value, 'dailyLimit')}\n />\n \n \n {renderRestrictionEdit({\n label: \"Age\",\n type: \"age\",\n inputType: \"number\",\n onRestrictionChange: onRestrictionChange,\n clearRestriction: onRestrictionClear,\n operators: ageOperators,\n restrictions: finalRestrictions,\n })}\n {renderRestrictionEdit({\n label: \"Geo\",\n type: \"ipinfo_country\",\n inputType: \"text\",\n onRestrictionChange: onRestrictionChange,\n clearRestriction: onRestrictionClear,\n operators: geoOperators,\n restrictions: finalRestrictions,\n })}\n \n \n onFormChange(e, 'isActive')}\n className=\"colorful-select dropdown-primary mx-2\"\n >\n \n \n {[\"true\", \"false\"].map((param) => (\n \n {param}\n \n ))}\n \n \n \n \n \n Save\n \n \n Cancel\n \n \n \n )\n}\n\nexport default CreateWeb;","import React, { useEffect, useState } from 'react';\nimport {\n MDBSelect,\n MDBSelectInput,\n MDBSelectOption,\n MDBSelectOptions,\n MDBBtn,\n MDBIcon \n} from \"mdbreact\";\nimport { useSnackbar } from 'react-simple-snackbar';\nimport { failureOptions } from '../../../../configs';\nimport http from '../../../../services/http';\nimport SubRow from '../SubRow';\nimport CreateWeb from './CreateWeb';\n\nconst geoOperators = [\n { value: 0, text: \"=\" },\n { value: 1, text: \"Not\" },\n { value: 6, text: \"In list\" },\n { value: 7, text: \"Not in list\" },\n];\n\nconst ageOperators = [\n { value: 0, text: \"=\" },\n { value: 2, text: \">\" },\n { value: 3, text: \">=\" },\n { value: 4, text: \"<\" },\n { value: 5, text: \"<=\" },\n];\n\nconst getOperatorText = (operatorValue, operators) => operators?.find(o => o.value === operatorValue)?.text;\nconst getOperatorValue = (operatorText, operators) => operators?.find(o => o.text === operatorText)?.value;\nconst getRestrictionByType = (type, restrictions) => restrictions?.find(r => r.propertyName === type);\n\nconst renderPayoutEdit = ({\n type,\n inputType,\n onRestrictionChange = () => {},\n clearRestriction = () => {},\n restrictions = [],\n}) => (\n
\n {\n onRestrictionChange(type, 'propertyValue', e.target.value)\n onRestrictionChange(type, 'propertyOperator', 0)\n\n }}\n type={inputType}\n style={{ width: 50, height: 41, border: '1px solid #ced4da', borderRadius: '0.2rem' }}\n />\n clearRestriction(type)}>\n \n \n
\n)\n\nconst renderRestrictionEdit = ({\n label,\n type,\n inputType,\n onRestrictionChange = () => {},\n clearRestriction = () => {},\n operators = [],\n restrictions = [],\n}) => (\n
\n {label}:\n onRestrictionChange(type, 'propertyOperator', getOperatorValue(val, operators))}\n className=\"colorful-select dropdown-primary mx-2\"\n style={{ width: 50 }}\n >\n \n \n {operators.map((operator) => (\n \n {operator.text}\n \n ))}\n \n \n {\n onRestrictionChange(type, 'propertyValue', e.target.value)\n }}\n type={inputType}\n style={{ width: 50, height: 41, border: '1px solid #ced4da', borderRadius: '0.2rem' }}\n />\n clearRestriction(type)}>\n \n \n
\n)\n\nconst WebRow = ({ webs = [], newRestrictions = [], operators = [], subRestrictions, selectedUserId, partnerDealId, refetch }) => {\n const [subs, setSubs] = useState([]);\n const [isCreate, setIsCreate] = useState(false);\n const [expandedWeb, setExpandedWeb] = useState(null);\n\n const [initialRestrictions, setInitialRestrictions] = useState([]);\n\n const [row, setRow] = useState(null);\n\n const [filterWebId, setFilterWebId] = useState('');\n\n const [finalWebs, setFinalWebs] = useState([]);\n\n const [finalRestrictions, setFinalRestrictions] = useState([]);\n const [deletedRestrictions, setDeletedRestrictions] = useState([]);\n\n useEffect(() => {\n setFinalRestrictions([...newRestrictions]);\n setInitialRestrictions([...newRestrictions]);\n }, [newRestrictions]);\n\n useEffect(() => {\n setFinalWebs(webs)\n }, [webs]);\n\n const [openFailureSnackbar] = useSnackbar(failureOptions)\n\n\n const onEditClick = (id) => {\n const editWeb = finalWebs.find(w => w.id === id);\n setRow(editWeb);\n\n };\n\n const onFieldChange = (value, innerProp) => {\n setRow({\n ...row,\n [innerProp]: value,\n });\n };\n\n const getRowStatus = (row) => {\n if (row.status === \"false\") {\n return 0\n }\n if (row.status === \"true\") {\n return 1\n }\n return row.status;\n } \n\n\n const onSavePress = async () => {\n try {\n await http.patch(`/partnerdeals/${row.partnerDealId}/webs/${row.id}`, {\n dailyLimit: row.dailyLimit,\n status: getRowStatus(row),\n })\n const changedWebIndex = finalWebs.findIndex(web => web.id === row.id);\n\n if (changedWebIndex > -1) {\n finalWebs[changedWebIndex] = row;\n }\n setFinalWebs([\n ...finalWebs,\n ])\n } catch (err) {\n\n }\n\n if (deletedRestrictions.length) {\n const deletedPromises = deletedRestrictions.map(deletedRestriction => {\n return http.delete(`/partnerrestrictions/${row?.partnerDealId}/${deletedRestriction.id}`)\n })\n await Promise.all(deletedPromises);\n }\n \n const addedRestrictions = finalRestrictions.filter(r => r.isNew);\n\n const addPromises = addedRestrictions.map((addedRestriction) => {\n const body = {\n objectId: row?.webId,\n branch: 3,\n propertyName: addedRestriction.propertyName,\n propertyValue: addedRestriction.propertyValue,\n propertyOperator: addedRestriction.propertyOperator,\n }\n return http.post(`/partnerrestrictions/${row?.partnerDealId}`, body);\n })\n await Promise.all(addPromises);\n\n\n const changedRestrictions = finalRestrictions.filter(r => r.objectId === row?.webId && !r.isNew);\n\n const changedPromises = changedRestrictions.map((changedRestriction) => {\n const body = {\n // objectId: webs[isEditable]?.webId,\n // branch: 3,\n propertyName: changedRestriction.propertyName,\n propertyValue: changedRestriction.propertyValue,\n propertyOperator: changedRestriction.propertyOperator,\n }\n return http.patch(`/partnerrestrictions/${row?.partnerDealId}/${changedRestriction.id}`, body)\n })\n await Promise.all(changedPromises);\n \n setDeletedRestrictions([]);\n setRow(null);\n // refetch();\n };\n\n const onRestrictionChange = (type, property, value) => {\n const testRestrictions = [...finalRestrictions];\n \n const restrictionIndex = testRestrictions.findIndex(r => r.propertyName === type && r.objectId === row?.webId && r.partnerDealId === row?.partnerDealId);\n if (restrictionIndex > -1) {\n testRestrictions[restrictionIndex][property] = value;\n } else {\n const newRestriction = {\n isNew: true,\n propertyName: type,\n [property]: value,\n objectId: row?.webId,\n partnerDealId: row?.partnerDealId,\n }\n testRestrictions.push(newRestriction);\n }\n setFinalRestrictions([...testRestrictions])\n };\n\n const onRestrictionClear = (type) => {\n const deleted = finalRestrictions.filter(r => r.propertyName === type && r.objectId === row?.webId);\n const filtered = finalRestrictions.filter(r => r.objectId === row?.webId ? r.propertyName !== type : true);\n setDeletedRestrictions(deleted);\n setFinalRestrictions([...filtered]);\n }\n\n const refetchSubs = async (web) => {\n const { data } = await http.get(`/partnerdeals/${web.partnerDealId}/webs/${web.id}/subs`)\n setSubs(data);\n };\n\n const handleOpenSub = async (web) => {\n if (expandedWeb?.id !== web.id) {\n setSubs([]);\n setExpandedWeb(web);\n const { data } = await http.get(`/partnerdeals/${web.partnerDealId}/webs/${web.id}/subs`)\n setSubs(data);\n return;\n }\n if (expandedWeb) {\n setExpandedWeb(null)\n setSubs([]);\n } else {\n setExpandedWeb(web);\n const { data } = await http.get(`/partnerdeals/${web.partnerDealId}/webs/${web.id}/subs`)\n setSubs(data);\n }\n }\n\n return (\n <>\n \n \n
\n WebId\n
\n setIsCreate(true)} style={{ marginRight: 20 }} color=\"success\" size=\"sm\">\n Create Web\n \n setFilterWebId(e.target.value)} />\n
\n
\n \n Payout\n Limit\n Restrictions\n Is Active\n \n\n \n {isCreate ? setIsCreate(false)} partnerDealId={partnerDealId} refetch={refetch} /> : null}\n\n {finalWebs.filter(web => web.webId.includes(filterWebId)).map((web, index) => {\n const restrictions = finalRestrictions.filter(r => r.objectId === web.webId && r.partnerDealId === web.partnerDealId);\n if (web.id === row?.id) {\n return (\n \n {web.webId}\n \n {renderPayoutEdit({\n type: \"Payout\",\n inputType: \"text\",\n onRestrictionChange: onRestrictionChange,\n clearRestriction: onRestrictionClear,\n operators: geoOperators,\n restrictions,\n })}\n \n \n onFieldChange(e.target.value, \"dailyLimit\")}\n />\n \n \n {renderRestrictionEdit({\n label: \"Age\",\n type: \"age\",\n inputType: \"number\",\n onRestrictionChange: onRestrictionChange,\n clearRestriction: onRestrictionClear,\n operators: ageOperators,\n restrictions,\n })}\n {renderRestrictionEdit({\n label: \"Geo\",\n type: \"ipinfo_country\",\n inputType: \"text\",\n onRestrictionChange: onRestrictionChange,\n clearRestriction: onRestrictionClear,\n operators: geoOperators,\n restrictions,\n })}\n \n \n onFieldChange(val, \"status\")}\n >\n \n \n {[{ name: \"true\" }, { name: \"false\" }].map((action) => (\n \n {action.name}\n \n ))}\n \n \n \n \n \n Save\n \n {\n setFinalRestrictions([...initialRestrictions]);\n setRow(null)\n }}>\n Cancel\n \n \n \n )\n }\n return (\n \n \n \n handleOpenSub(web)} icon={(expandedWeb?.id === web.id) ? 'angle-up' : 'angle-down'} color='black' size='lg' />\n {web.webId}\n \n \n {\n finalRestrictions.find(r => r.objectId === web.webId && r.partnerDealId === web.partnerDealId && r?.propertyName === \"Payout\")?.propertyValue || ''\n }\n \n {web.dailyLimit}\n \n {finalRestrictions.filter(r => r.objectId === web.webId && r.partnerDealId === web.partnerDealId && r?.propertyName !== 'Payout' && r.propertyName !== 'PayoutCurrency').map(restriction => (\n
\n {restriction?.propertyName === 'ipinfo_country' ? 'geo' : restriction?.propertyName} {operators.find(o => o.value === restriction?.propertyOperator)?.text ?? ''} {restriction?.propertyValue}\n
\n ))}\n \n {web.status === 1 || web.status === 'true' ? 'true' : 'false'}\n onEditClick(web.id)}>\n
\n \n
\n \n\n \n {expandedWeb?.id === web.id ? refetchSubs(web)} operators={operators} subs={subs} selectedUserId={selectedUserId} partnerDealId={web.partnerDealId} webId={web.webId} /> : null}\n
\n )\n })}\n \n )\n}\n\nexport default WebRow;","import {\n MDBSelect,\n MDBSelectInput,\n MDBSelectOption,\n MDBSelectOptions,\n MDBBtn,\n MDBTooltip,\n MDBTableHead,\n MDBIcon\n} from \"mdbreact\";\nimport React, { useEffect, useState } from \"react\";\nimport _, { get } from \"lodash\";\nimport http from \"../../../../services/http\";\nimport { mapRestrictionToLabel, renderRestrictionEdit } from \"../helpers\";\nimport TestModal from \"../TestModal\";\nimport { useSnackbar } from \"react-simple-snackbar\";\nimport { failureOptions } from \"../../../../configs\";\nimport WebRow from \"../WebRow\";\n\nconst currencies = [\n {\n name: \"Eur\",\n value: 1,\n },\n {\n name: \"Rub\",\n value: 2,\n },\n {\n name: \"Usd\",\n value: 0,\n },\n];\n\nconst TableRow = ({ row: data, landings, getInfo, operators, onCopyClick, actions, newRestrictions, subRestrictions, selectedUserId }) => {\n const [isEditable, setEditable] = useState(false);\n const [isTestModalOpen, setTestModalOpen] = useState(false);\n const [isExpanded, setIsExpanded] = useState(false);\n\n const [openFailureSnackbar] = useSnackbar(failureOptions)\n\n const geoOperators = [\n { value: 0, text: \"=\" },\n { value: 1, text: \"Not\" },\n { value: 6, text: \"In list\" },\n { value: 7, text: \"Not in list\" },\n ];\n\n const ageOperators = [\n { value: 0, text: \"=\" },\n { value: 2, text: \">\" },\n { value: 3, text: \">=\" },\n { value: 4, text: \"<\" },\n { value: 5, text: \"<=\" },\n ];\n\n const [row, setRow] = useState(data);\n const [restrictions, setRestrictions] = useState([]);\n\n \n useEffect(() => {\n setRow(data);\n setRestrictions(data.restrictions);\n }, [data]);\n\n\n const onFieldChange = (value, innerProp, isDeep = false, outerProp = \"\") => {\n if (isDeep) {\n setRow({\n ...row,\n [outerProp]: {\n ...row[outerProp],\n [innerProp]: value,\n },\n });\n return;\n }\n setRow({\n ...row,\n [innerProp]: value,\n });\n };\n\n const onRestrictionChange = (type, property, value) => {\n const newRestrictions = [...restrictions];\n const findRestrictionIndex = newRestrictions.findIndex(\n (r) => r.propertyName === type\n );\n if (findRestrictionIndex > -1) {\n newRestrictions[findRestrictionIndex][property] = value;\n setRestrictions([...newRestrictions]);\n } else {\n setRestrictions([\n ...newRestrictions,\n {\n propertyName: type,\n [property]: value,\n },\n ]);\n }\n };\n\n const clearRestriction = (type) => {\n const newRestrictions = restrictions.filter((r) => r.propertyName !== type);\n setRestrictions(newRestrictions);\n };\n\n const onEditClick = () => {\n setEditable(true);\n };\n\n const saveRestrictions = async () => {\n let deleted = [];\n let changed = [];\n let added = [];\n\n const oldResctrictions = [...data.restrictions];\n const newRestrictions = [...restrictions];\n\n if (newRestrictions.length > oldResctrictions.length) {\n added = _.differenceBy(newRestrictions, oldResctrictions, \"propertyName\");\n changed = _.differenceBy(newRestrictions, added, \"propertyName\");\n }\n if (newRestrictions.length < oldResctrictions.length) {\n deleted = _.differenceBy(\n oldResctrictions,\n newRestrictions,\n \"propertyName\"\n );\n changed = _.differenceBy(newRestrictions, added, \"propertyName\");\n }\n if (\n newRestrictions.length === oldResctrictions.length &&\n newRestrictions.length\n ) {\n changed = newRestrictions;\n }\n const addedPromises = added.map((restriction) => {\n return http.post(`/partnerdeals/${row.id}/restrictions`, {\n propertyName: restriction.propertyName,\n propertyValue: restriction.propertyValue,\n propertyOperator: restriction.propertyOperator,\n });\n });\n const deletedPromises = deleted.map((restriction) => {\n return http.delete(\n `/partnerdeals/${row.id}/restrictions/${restriction.id}`\n );\n });\n const changedPromises = changed.map((restriction) => {\n return http.patch(\n `/partnerdeals/${row.id}/restrictions/${restriction.id}`,\n {\n propertyName: restriction.propertyName,\n propertyValue: restriction.propertyValue,\n propertyOperator: restriction.propertyOperator,\n }\n );\n });\n await Promise.all([\n ...addedPromises,\n ...deletedPromises,\n ...changedPromises,\n ]);\n };\n const onSavePress = async () => {\n setEditable(false);\n const body = {\n siteId: row.siteId,\n actionTypeId: actions.find((a) => a.name === row.actionType.name).id,\n partnerLinkId: row.partnerLink.id,\n postback: row.postback,\n payout: +row.payout,\n currency: currencies.find((c) => c.name === row.currencyName)?.value,\n isActive: row.isActive === \"true\" || row.isActive === true ? true : false,\n siteLandingId: row.siteLandingId ? landings.find((l) => l.url == row.siteLandingId)?.id : landings.find((l) => l.url == row.siteLanding?.url)?.id,\n dailyLimit: +row.dailyLimit,\n };\n const data = await http.patch(`/partnerdeals/${row.id}`, body);\n if (!data) {\n openFailureSnackbar('One or more validation errors occurred.');\n }\n await saveRestrictions();\n getInfo();\n };\n\n const onTestOpen = () => {\n setTestModalOpen(true);\n };\n\n const onCancel = () => {\n setRow(data);\n setEditable(false);\n setRestrictions(data.restrictions);\n };\n\n const formatLandings = () => {\n if (!landings.length) return [];\n return landings.map((l) => ({\n name: l.url,\n value: l.url,\n }));\n };\n\n const getSitelanding = () => {\n if (!row.siteLanding) {\n return landings[0]?.url || null;\n } else {\n return row.siteLanding.url;\n }\n };\n\n const affLink = `${getSitelanding()}?utm_source=${\n row.partnerLink.name\n }&linkid=${row.partnerLink.uid}&payout=${\n row.payout\n }&clickid={clickid}&web_id={web_id}&sub_id={sub_id}`;\n\n return (\n \n setTestModalOpen(false)}\n onSave={onSavePress}\n actionType={row.actionType.name}\n />\n {!isEditable ? (\n <>\n setIsExpanded(!isExpanded)}>\n {/* UUID */}\n \n \n {row.partnerLink.uid}\n \n {/* LinkName */}\n {row.partnerLink.name}\n {/* ActionType */}\n {row.actionType.name}\n {/* Landing */}\n {/* {getSitelanding()} */}\n {/* Afflink */}\n \n \n window.navigator.clipboard.writeText(affLink)}\n style={{ whiteSpace: \"pre \" }}\n >\n \n
\n {affLink.slice(0, 20)}...\n \n {affLink}\n
\n \n {/* Postback */}\n \n {row.postback ? (\n \n \n window.navigator.clipboard.writeText(row.postback)\n }\n style={{ whiteSpace: \"pre \" }}\n >\n \n
\n {row.postback.slice(0, 20)}...\n \n {row.postback}\n
\n ) : null}\n \n {/* Payout */}\n {row.payout}\n {/* Daily Limit */}\n {row.dailyLimit || null}\n {/* Restrictions */}\n \n {restrictions.map((restriction) => (\n
\n {mapRestrictionToLabel[restriction.propertyName] ?? restriction.propertyName}{\" \"}\n {operators.find((o) => o.value === restriction.propertyOperator)\n ?.text || \"\"}{\" \"}\n {restriction.propertyValue}\n
\n ))}\n \n {/* Currency */}\n {/* {row.currencyName} */}\n {/* isActive */}\n {`${row.isActive}`}\n \n
onEditClick(row.siteId)}>\n \n
\n
onCopyClick(row)}>\n \n
\n {/* onEditClick(row.siteId)}>\n Edit\n \n onCopyClick(row)}>\n Copy\n */}\n \n \n {isExpanded && getInfo(true)}\n webs={row.webs}\n newRestrictions={newRestrictions}\n subRestrictions={subRestrictions}\n operators={operators}\n selectedUserId={selectedUserId}\n partnerDealId={row.id}\n />}\n \n ) : (\n \n {/* UUID */}\n {row.partnerLink.uid}\n {/* LinkName */}\n {row.partnerLink.name}\n {/* ActionType */}\n \n \n onFieldChange(val, \"name\", true, \"actionType\")\n }\n className=\"colorful-select dropdown-primary mx-2\"\n >\n \n \n {actions.map((action) => (\n \n {action.name}\n \n ))}\n \n \n \n {/* Landing */}\n \n onFieldChange(val, \"siteLandingId\")}\n className=\"colorful-select dropdown-primary mx-2\"\n >\n \n \n {formatLandings().map((action) => (\n \n {action.name}\n \n ))}\n \n \n \n {/* Afflink */}\n {/* {`${getSitelanding()}?utm_source=${\n row.partnerLink.name\n }linkid=${row.partnerLink.id}&clickid={clickid}&payout=${\n row.payout\n }`} */}\n {/* Postback */}\n \n onFieldChange(e.target.value, \"postback\")}\n />\n \n {/* Payout */}\n \n onFieldChange(e.target.value, \"payout\")}\n />\n \n {/* Daily Limit */}\n \n {\n if (+e.target.value >= 0) {\n onFieldChange(e.target.value, \"dailyLimit\");\n }\n }}\n />\n \n {/* Restrictions */}\n \n {renderRestrictionEdit({\n label: \"Age\",\n type: \"age\",\n inputType: \"number\",\n onRestrictionChange,\n clearRestriction,\n operators: ageOperators,\n restrictions,\n })}\n {renderRestrictionEdit({\n label: \"Geo\",\n type: \"ipinfo_country\",\n inputType: \"text\",\n onRestrictionChange,\n clearRestriction,\n operators: geoOperators,\n restrictions,\n })}\n \n {/* Currency */}\n {/* \n onFieldChange(val, \"currencyName\")}\n >\n \n \n {currencies.map((currency) => (\n \n {currency.name}\n \n ))}\n \n \n */}\n {/* isActive */}\n \n onFieldChange(val, \"isActive\")}\n >\n \n \n {[{ name: \"true\" }, { name: \"false\" }].map((action) => (\n \n {action.name}\n \n ))}\n \n \n \n \n \n Save\n \n \n Save and test\n \n \n Cancel\n \n \n \n )}\n \n
\n );\n};\n\nexport default TableRow;\n","import {\n MDBSelect,\n MDBSelectInput,\n MDBSelectOption,\n MDBSelectOptions,\n MDBBtn,\n} from \"mdbreact\";\nimport React, { useState, useEffect } from \"react\";\nimport { useSnackbar } from \"react-simple-snackbar\";\nimport { failureOptions, succesOptions } from \"../../../../configs\";\nimport http from \"../../../../services/http\";\nimport Select from \"react-select\";\n\nimport { renderRestrictionEdit } from \"../helpers\";\nimport TestModal from \"../TestModal\";\n\nconst currencies = [\n {\n name: \"Eur\",\n value: 1,\n },\n {\n name: \"Rub\",\n value: 2,\n },\n {\n name: \"Usd\",\n value: 0,\n },\n];\n\nconst AddRow = ({\n setAdding,\n choosedSiteId,\n getInfo,\n userId,\n landings,\n operators,\n rows,\n copyRow,\n resetCopyRow,\n actions,\n}) => {\n const [openSuccessSnackbar] = useSnackbar(succesOptions);\n const [openFailureSnackbar] = useSnackbar(failureOptions);\n const [isTestModalOpen, setTestModalOpen] = useState(false);\n\n const geoOperators = [\n { value: 0, text: \"=\" },\n { value: 1, text: \"Not\" },\n { value: 6, text: \"In list\" },\n { value: 7, text: \"Not in list\" },\n\n ];\n\n const ageOperators = [\n { value: 0, text: \"=\" },\n { value: 2, text: \">\" },\n { value: 3, text: \">=\" },\n { value: 4, text: \"<\" },\n { value: 5, text: \"<=\" },\n ];\n\n const [restrictions, setRestrictions] = useState([]);\n\n const initialRow = {\n siteId: 0,\n actionTypeId: 0,\n partnerLinkId: 0,\n postback: \"\",\n payout: 0,\n currency: \"Usd\",\n isActive: true,\n linkName: \"\",\n uid: \"\",\n siteLanding: null,\n dailyLimit: 0,\n };\n\n const [loading, setLoading] = useState(false);\n const [row, setRow] = React.useState(initialRow);\n const [links, setLinks] = React.useState([]);\n const [isLinkNameDisabled, setLinkNameDisabled] = React.useState(false);\n\n React.useEffect(() => {\n getLinks();\n }, [userId]);\n\n const getSitelanding = (row) => {\n if (!row.siteLanding) {\n return landings[0]?.url || null;\n } else {\n return row.siteLanding.url;\n }\n };\n\n React.useEffect(() => {\n if (copyRow && landings.length && actions.length) {\n setRow({\n uid: copyRow?.partnerLink?.uid,\n linkName: copyRow?.partnerLink?.name,\n actionTypeId: actions.find((a) => a.id === copyRow?.actionType?.id)\n .name,\n siteLanding: getSitelanding(copyRow),\n postback: copyRow.postback,\n isActive: copyRow.isActive,\n currency: copyRow.currencyName,\n payout: copyRow.payout,\n dailyLimit: copyRow.dailyLimit,\n });\n setRestrictions(copyRow.restrictions);\n }\n }, [copyRow, landings, actions]);\n\n console.log('copyRow', copyRow);\n const getLinks = async () => {\n const { data: linksData } = await http.get(\"/partnerlinks/byuser\", {\n params: {\n userId: userId,\n },\n });\n setLinks(linksData);\n };\n\n const onFieldChange = (value, prop) => {\n setRow({\n ...row,\n [prop]: value,\n });\n };\n\n const uniqueDealCheck = (payload) => {\n let isUnique = true;\n const { partnerLinkId, siteId, actionTypeId } = payload;\n const filtered = rows.filter(\n (row) =>\n row.siteId === siteId &&\n row.partnerLink?.id === partnerLinkId &&\n row.actionType?.id === actionTypeId\n );\n if (filtered.length) {\n isUnique = false;\n }\n return isUnique;\n };\n\n const onSavePress = async () => {\n setLoading(true);\n try {\n const isExistLink = links.find((l) => l.uid === row.uid);\n let payload = {\n siteId: choosedSiteId,\n actionTypeId: actions.find((a) => a.name === row.actionTypeId)?.id,\n postback: row.postback,\n payout: row.payout,\n currency: currencies.find((c) => c.name === row.currency)?.value,\n isActive:\n row.isActive === \"true\" || row.isActive === true ? true : false,\n dailyLimit: +row.dailyLimit,\n siteLandingId: row.siteLanding\n ? landings.find((l) => l.url === row.siteLanding).id\n : null,\n };\n if (isExistLink) {\n payload.partnerLinkId = isExistLink.id;\n } else {\n const { data: linkData } = await http.post(\"/partnerlinks\", {\n userId: userId,\n name: row.linkName,\n uid: row.uid,\n // siteLandingId: row.siteLanding\n // ? landings.find((l) => l.url === row.siteLanding).id\n // : null,\n });\n payload.partnerLinkId = linkData.id;\n }\n const isUnique = uniqueDealCheck(payload);\n if (isUnique) {\n const { data } = await http.post(\"/partnerdeals\", payload);\n await saveRestrictions(data.id);\n getInfo();\n setAdding(false);\n openSuccessSnackbar(\"Added\");\n } else {\n openFailureSnackbar(\"This deal already exists\");\n }\n } catch (err) {\n openFailureSnackbar(\"Error :(\");\n }\n setLoading(false);\n resetCopyRow();\n };\n\n const onCancel = () => {\n setRow(initialRow);\n setAdding(false);\n setRestrictions([]);\n resetCopyRow();\n };\n\n const formatLandings = () => {\n if (!landings.length) return [];\n return landings.map((l) => ({\n label: l.url,\n value: l.url,\n }));\n };\n\n const onUidChange = (e) => {\n const isExistLink = links.find((l) => l.uid === e.target.value);\n if (!isExistLink) {\n setRow({\n ...row,\n uid: e.target.value,\n linkName: \"\",\n });\n setLinkNameDisabled(false);\n } else {\n setRow({\n ...row,\n uid: e.target.value,\n linkName: isExistLink.name,\n siteLanding: isExistLink.siteLandingId,\n });\n setLinkNameDisabled(true);\n }\n };\n\n const getSiteLanding = () => {\n const findLanding = landings.find((l) => l.id === row.siteLanding);\n if (findLanding) {\n return findLanding.url;\n }\n return null;\n };\n\n const saveRestrictions = async (partnerDealId) => {\n const addedPromises = restrictions.map((restriction) => {\n return http.post(`/partnerdeals/${partnerDealId}/restrictions`, {\n propertyName: restriction.propertyName,\n propertyValue: restriction.propertyValue,\n propertyOperator: restriction.propertyOperator,\n });\n });\n await Promise.all([...addedPromises]);\n };\n\n const onRestrictionChange = (type, property, value) => {\n const newRestrictions = [...restrictions];\n const findRestrictionIndex = newRestrictions.findIndex(\n (r) => r.propertyName === type\n );\n if (findRestrictionIndex > -1) {\n newRestrictions[findRestrictionIndex][property] = value;\n setRestrictions([...newRestrictions]);\n } else {\n setRestrictions([\n ...newRestrictions,\n {\n propertyName: type,\n [property]: value,\n },\n ]);\n }\n };\n\n const clearRestriction = (type) => {\n const newRestrictions = restrictions.filter((r) => r.propertyName !== type);\n setRestrictions(newRestrictions);\n };\n\n return (\n <>\n setTestModalOpen(false)}\n onSave={onSavePress}\n actionType={row.actionTypeId}\n />\n \n {/* UUID */}\n \n \n \n {/* LinkName */}\n \n onFieldChange(e.target.value, \"linkName\")}\n disabled={isLinkNameDisabled}\n />\n \n {/* ActionType */}\n \n onFieldChange(val, \"actionTypeId\")}\n className=\"colorful-select dropdown-primary mx-2\"\n >\n \n \n {actions.map((action) => (\n \n {action.name}\n \n ))}\n \n \n \n {/* Landing */}\n \n l.value === row.siteLanding)}\n onChange={(val) => onFieldChange(val.value, \"siteLanding\")}\n />\n \n {/* Afflink */}\n {/* */}\n {/* Postback */}\n \n onFieldChange(e.target.value, \"postback\")}\n />\n \n {/* Payout */}\n \n onFieldChange(e.target.value, \"payout\")}\n />\n \n {/* Daily limit */}\n \n {\n if (+e.target.value >= 0) {\n onFieldChange(e.target.value, \"dailyLimit\");\n }\n }}\n />\n \n {/* Restrictions */}\n \n {renderRestrictionEdit({\n label: \"Age\",\n type: \"age\",\n inputType: \"number\",\n onRestrictionChange,\n clearRestriction,\n operators: ageOperators,\n restrictions,\n })}\n {renderRestrictionEdit({\n label: \"Geo\",\n type: \"ipinfo_country\",\n inputType: \"text\",\n onRestrictionChange,\n clearRestriction,\n operators: geoOperators,\n restrictions,\n })}\n \n {/* Currency */}\n {/* \n onFieldChange(val, \"currency\")}\n >\n \n \n {currencies.map((currency) => (\n \n {currency.name}\n \n ))}\n \n \n */}\n {/* isActive */}\n \n onFieldChange(val, \"isActive\")}\n >\n \n \n {[{ name: \"true\" }, { name: \"false\" }].map((action) => (\n \n {action.name}\n \n ))}\n \n \n \n \n \n Save\n \n setTestModalOpen(true)}\n >\n Save and test\n \n \n Cancel\n \n \n \n \n );\n};\n\nexport default AddRow;\n","import React, { useEffect, useState } from \"react\";\nimport {\n MDBCardBody,\n MDBTable,\n MDBTableBody,\n MDBTableHead,\n MDBCard,\n MDBSelect,\n MDBCol,\n MDBSpinner,\n MDBRow,\n MDBInput,\n MDBBtn,\n MDBIcon\n} from \"mdbreact\";\nimport { connect } from \"react-redux\";\nimport { useLocation } from \"react-router-dom\";\nimport Select from \"react-select\";\nimport { useSelector } from 'react-redux';\n\nimport http from \"../../../../services/http\";\n\nimport * as S from \"./styled\";\nimport TableRow from \"../TableRow\";\nimport AddRow from \"../AddRow\";\nimport { getRoleFromToken } from \"../../../../helpers\";\n\nconst PartnerDealsTable = ({ choosedSiteId, user }) => {\n\n const location = useLocation();\n\n const userEmail = useSelector(state => state.auth.user.email);\n\n const queryParams = new URLSearchParams(location.search);\n\n const [operators, setOperators] = useState([]);\n const [collapsed, setCollapsed] = useState(false);\n const [info, setInfo] = useState([]);\n const [isAdding, setAdding] = useState(false);\n const [partners, setPartners] = useState([]);\n const [selectedPartner, setSelectedPartner] = useState(\"\");\n const [landings, setLandings] = useState([]);\n const [restrisctions, setRestrictions] = useState([]);\n\n const resize = () => {\n if (window.innerWidth >= 780 && collapsed) {\n setCollapsed(false);\n }\n };\n\n useEffect(() => {\n async function fetchOperators() {\n const { data } = await http.get('/partnerdeals/propertyoperator');\n const operatorsMock = [\n {value: 0, text: '='},\n {value: 1, text: 'Not'},\n {value: 2, text: '>'},\n {value: 3, text: '>='},\n {value: 4, text: '<'},\n {value: 5, text: '<='},\n {value: 6, text: 'In list'},\n {value: 7, text: 'Not in list'},\n\n ];\n setOperators(operatorsMock)\n // setOperators(data);\n }\n fetchOperators();\n }, []);\n\n useEffect(() => {\n window.addEventListener(\"resize\", resize);\n return () => {\n window.removeEventListener(\"resize\", resize)\n }\n }, []);\n\n const [filter, setFilter] = useState({\n linkId: \"\",\n linkName: queryParams.get(\"linkName\") || \"\",\n payOut: {\n operation: {\n value: \"=\",\n label: \"=\",\n },\n value: \"\",\n },\n isActive: {\n label: \"True\",\n value: \"True\",\n },\n });\n\n const [sorting, setSorting] = React.useState({\n field: \"\",\n direction: \"asc\",\n });\n\n const [loadingInfo, setLoadingInfo] = useState(false);\n\n const [newRestrictions, setNewRestrictions] = useState([]);\n const [restrictionsSub, setRestrictionsSub] = useState([]);\n\n\n useEffect(() => {\n if (selectedPartner) {\n getInfo();\n }\n }, [choosedSiteId, selectedPartner]);\n\n useEffect(() => {\n getPartners();\n }, [choosedSiteId]);\n\n useEffect(() => {\n getLandings();\n }, [choosedSiteId]);\n\n useEffect(() => {\n getActions();\n }, [])\n const [actions, setActions] = useState([]);\n\n const getActions = async () => {\n const { data } = await http.get(\"/partnerdeals/actiontypes\");\n const { data: test } = await http.get(\"/partnerrestrictions/rules\");\n\n console.log('test', test);\n\n setActions(data.filter(a => a.id !== 5));\n };\n\n const getWebs = async (deals) => {\n const promises = deals.map(deal => http.get(`/partnerdeals/${deal.id}/webs`));\n const resolved = await Promise.allSettled(promises);\n const webs = resolved.filter(i => i.status === 'fulfilled').map(i => i.value.data);\n\n const final = deals.map((deal, index) => {\n return ({\n ...deal,\n webs: webs[index],\n })\n })\n return final;\n }\n\n const getPartners = async () => {\n const { data } = await http.get(\"/users\");\n const formatted = data\n // .filter(i => i.roles?.length && i.roles?.[0]?.role === 3 && i.roles.some(role => (role.siteId === null || role.siteId === choosedSiteId)))\n .filter((i) => i.roles?.length && i.roles?.[0]?.role === 3)\n // .filter(i => i.roles?.length && i.roles.some(role => role.siteId === null))\n // .filter(i => i.roles?.length && i.roles.some(role => role.siteId === choosedSiteId || role.siteId === null))\n .map((i) => ({\n ...i,\n text: i.email,\n value: i.email,\n role: 3,\n }))\n .sort((a, b) => a.email.localeCompare(b.email));\n const indexToCheck =\n formatted.findIndex((i) => {\n if (userEmail === \"dasha@mediamars.com\") {\n return i.email === \"adverten@mediamars.com\"\n }\n if (userEmail === \"ishai@mediamars.com\") {\n return i.email === \"oksana@schrodingersteam.com\"\n }\n return i.email === \"cpamatica@mediamars.com\"\n }) || 2;\n if (formatted[indexToCheck]) {\n formatted[indexToCheck].checked = true;\n }\n\n setPartners(formatted);\n if (formatted[indexToCheck]) {\n setSelectedPartner(formatted[indexToCheck].email);\n }\n };\n\n const getLandings = async () => {\n const { data: landingData } = await http.get(\n `/sites/${choosedSiteId}/landings`\n );\n setLandings(landingData);\n };\n\n const selectedUserId = partners.find((p) => p.email === selectedPartner)?.id || null;\n\n const getInfo = async (withoutLoading = false) => {\n if (!withoutLoading) {\n setLoadingInfo(true);\n }\n const userId = partners.find((p) => p.email === selectedPartner)?.id;\n try {\n const { data } = await http.get(\"/partnerdeals/byuserdetailed\", {\n params: {\n userId: userId,\n },\n });\n\n const { data: webRestrictions } = await http.get(\"/partnerrestrictions/byuser\", {\n params: {\n userId: userId,\n branch: 3,\n exclude: 'DailyLimit'\n },\n });\n\n const { data: subRestrictions } = await http.get(\"/partnerrestrictions/byuser\", {\n params: {\n userId: userId,\n branch: 7,\n // exclude: 'DailyLimit'\n },\n });\n\n setNewRestrictions(webRestrictions);\n\n setRestrictionsSub(subRestrictions);\n\n const filteredDealsBySiteId = data.filter((i) => i.siteId === choosedSiteId);\n const webs = await getWebs(filteredDealsBySiteId);\n\n setInfo(webs);\n } catch (err) {\n alert('Errored');\n }\n setLoadingInfo(false);\n };\n\n const onSelectPartner = (partner) => {\n setSelectedPartner(partner);\n const formatted = partners;\n const index = formatted.findIndex((i) => i.email === partner);\n if (formatted[index]) {\n formatted[index].checked = true;\n }\n setPartners(formatted);\n };\n\n const onFilterChange = (type, value) =>\n setFilter({ ...filter, [type]: value });\n\n const onPayoutValueChange = (value) => {\n setFilter({\n ...filter,\n payOut: {\n ...filter.payOut,\n value,\n },\n });\n };\n\n const onPayoutOperationChange = (operation) => {\n setFilter({\n ...filter,\n payOut: {\n ...filter.payOut,\n operation,\n },\n });\n };\n\n const filterInfo = (data) => {\n return data\n .filter((item) => item.partnerLink.uid.includes(filter.linkId))\n .filter((item) =>\n item.partnerLink.name\n .toLowerCase()\n .includes(filter.linkName.toLowerCase())\n )\n .filter((item) => {\n if (filter.isActive.value === \"True\") {\n return item.isActive;\n }\n if (filter.isActive.value === \"False\") {\n return !item.isActive;\n }\n return true;\n })\n .filter((item) => {\n if (filter.payOut.value === \"\") {\n return true;\n }\n if (filter.payOut.operation.value === \"=\") {\n return item.payout == filter.payOut.value;\n }\n if (filter.payOut.operation.value === \">=\") {\n return item.payout >= filter.payOut.value;\n }\n if (filter.payOut.operation.value === \"<=\") {\n return item.payout <= filter.payOut.value;\n }\n if (filter.payOut.operation.value === \">\") {\n return item.payout > filter.payOut.value;\n }\n if (filter.payOut.operation.value === \"<\") {\n return item.payout < filter.payOut.value;\n }\n return true;\n });\n };\n\n const onSortClick = (header) => {\n setSorting({\n field: header,\n direction: sorting.direction === \"asc\" ? \"desc\" : \"asc\",\n });\n };\n\n const isString = (value) => typeof value === \"string\";\n\n const sortedData = () => {\n if (!info.length) {\n return [];\n }\n\n if (sorting.field === \"LinkId\") {\n return info.sort((a, b) => {\n const aValue = Number(a.partnerLink.uid);\n const bValue = Number(b.partnerLink.uid);\n return sorting.direction === \"asc\"\n ? aValue < bValue\n ? -1\n : 1\n : aValue > bValue\n ? -1\n : 1;\n });\n }\n\n if (sorting.field === \"LinkName\") {\n return info.sort((a, b) => {\n const aValue = a.partnerLink.name;\n const bValue = b.partnerLink.name;\n return sorting.direction === \"asc\"\n ? aValue < bValue\n ? -1\n : 1\n : aValue > bValue\n ? -1\n : 1;\n });\n }\n if (sorting.field === \"Payout\") {\n return info.sort((a, b) => {\n const aValue = Number(a.payout);\n const bValue = Number(b.payout);\n return sorting.direction === \"asc\"\n ? aValue < bValue\n ? -1\n : 1\n : aValue > bValue\n ? -1\n : 1;\n });\n }\n if (sorting.field === \"IsActive\") {\n return info.sort((a, b) => {\n const aValue = String(a.isActive);\n const bValue = String(b.isActive);\n return sorting.direction === \"asc\"\n ? aValue < bValue\n ? -1\n : 1\n : aValue > bValue\n ? -1\n : 1;\n });\n }\n return info;\n };\n\n const [copyRow, setCopyRow] = useState(null);\n\n const onCopyClick = (row) => {\n setAdding(true);\n setCopyRow(row);\n };\n\n const resetCopyRow = () => {\n setCopyRow(null);\n }\n return (\n \n \n setCollapsed(!collapsed)}>\n \n \n {!collapsed && <>\n \n \n \n \n \n \n \n onFilterChange(\"linkId\", e.target.value)}\n />\n \n \n onFilterChange(\"linkName\", e.target.value)}\n />\n \n \n Is Active\n ({ ...s, marginTop: 5 }) }}\n placeholder={\"Is Active\"}\n options={[\n { value: \"False\", label: \"False\" },\n { value: \"True\", label: \"True\" },\n { value: \"No Filter\", label: \"No Filter\" },\n ]}\n value={filter.isActive}\n onChange={(val) => onFilterChange(\"isActive\", val)}\n />\n \n \n \n \n Payout compare\n ({ ...s, marginTop: 5 }) }}\n placeholder={\"operation\"}\n options={[\n { value: \"=\", label: \"=\" },\n { value: \">\", label: \">\" },\n { value: \">=\", label: \">=\" },\n { value: \"<\", label: \"<\" },\n { value: \"<=\", label: \"<=\" },\n ]}\n value={filter.payOut.operation}\n onChange={(val) => onPayoutOperationChange(val)}\n />\n \n \n onPayoutValueChange(e.target.value)}\n />\n \n \n }\n \n \n \n \n onSortClick(\"LinkId\")}\n >\n LinkId\n \n onSortClick(\"LinkName\")}\n >\n LinkName\n \n ActionType\n {/* Landing */}\n Afflink\n Postback\n onSortClick(\"Payout\")}\n >\n Payout\n \n Limit\n Restrictions\n {/* Currency */}\n onSortClick(\"IsActive\")}\n >\n IsActive\n \n \n \n \n \n \n \n {!isAdding && (\n setAdding(true)}\n >\n ADD+\n \n )}\n \n \n {isAdding && (\n p.email === selectedPartner).id}\n getInfo={getInfo}\n choosedSiteId={choosedSiteId}\n setAdding={setAdding}\n operators={operators}\n rows={filterInfo(sortedData())}\n copyRow={copyRow}\n resetCopyRow={resetCopyRow}\n actions={actions}\n />\n )}\n {!loadingInfo ? (\n filterInfo(sortedData()).map((row) => (\n \n ))\n ) : (\n \n \n \n \n \n )}\n \n \n \n \n \n );\n};\n\nconst mapStateToProps = ({ app, auth }) => ({\n choosedSiteId: app.choosedSiteId,\n user: auth.user,\n});\n\nexport default connect(mapStateToProps, null)(PartnerDealsTable);\n","import styled from 'styled-components';\n\nexport const Container = styled.div`\n .logo {\n padding-left: 20px;\n margin-top: 20px;\n }\n .side-nav.wide .collapsible-body a {\n padding-left: 23px;\n background-color: transparent;\n }\n .preloader-wrapper {\n margin-left: calc(50% - 50px);\n }\n .btn-container {\n display: flex;\n align-items: center;\n }\n`;","import React from 'react';\nimport { MDBContainer } from 'mdbreact';\n\nimport PartnerDealsTable from './components/PartnerDealsTable';\n\nimport * as S from './styled';\n\nclass PartnerDealsPage extends React.Component {\n render() {\n return (\n \n \n \n \n \n );\n }\n}\n\nexport default PartnerDealsPage;","import styled from 'styled-components';\n\nexport const Container = styled.div`\n .table {\n margin-bottom: 0;\n }\n td {\n vertical-align: middle;\n }\n .table-responsive {\n /* overflow-y: visible;\n overflow-x: visible; */\n }\n`;\n\nexport const AddButton = styled.div`\n width: 100%;\n height: 50px;\n background-color: #00bcd4;\n display: flex;\n justify-content: center;\n align-items: center;\n cursor: pointer;\n opacity: ${({ disabled }) => disabled ? 0.5 : 1};\n :hover {\n opacity: ${({ disabled }) => disabled ? 0.5 : 0.7};\n }\n`;\n\nexport const AddText = styled.span`\n color: white;\n`;\n\nexport const Th = styled.th`\n cursor: pointer;\n position: relative;\n padding-right: 30px !important;\n ::after {\n right: 1em;\n font-family: \"Font Awesome\\ 5 Free\", sans-serif;\n font-size: 1rem;\n font-weight: 900;\n content: \"\\f0de\";\n position: absolute;\n bottom: .9em;\n display: block;\n opacity: ${({isSorting, direction}) => (isSorting && direction === 'desc') ? 1 : 0.4}\n }\n ::before {\n right: 16px;\n font-family: \"Font Awesome\\ 5 Free\", sans-serif;\n font-size: 1rem;\n font-weight: 900;\n content: \"\\f0dd\";\n position: absolute;\n bottom: .9em;\n display: block;\n opacity: ${({isSorting, direction}) => (isSorting && direction === 'asc') ? 1 : 0.4}\n }\n`;\n\nexport const CollapseButton = styled.div`\n display: none;\n padding: 15px;\n cursor: pointer;\n :hover {\n opacity: 0.9;\n }\n @media screen and (max-width: 780px) {\n display: block;\n }\n`;\n","import {\n MDBSelect,\n MDBSelectInput,\n MDBSelectOption,\n MDBSelectOptions,\n MDBBtn,\n} from \"mdbreact\";\nimport moment from 'moment';\nimport { useSnackbar } from \"react-simple-snackbar\";\nimport { failureOptions } from \"../../../../configs\";\nimport React, { useEffect, useState } from \"react\";\nimport http from \"../../../../services/http\";\n\n\nconst TableRow = ({ row: data, getInfo }) => {\n const [openFailureSnackbar] = useSnackbar(failureOptions);\n const [isEditable, setEditable] = useState(false);\n\n const [oldDailyLimit] = useState(data.dailyLimit);\n const [row, setRow] = useState(data);\n\n useEffect(() => {\n setRow(data);\n }, [data]);\n\n const onFieldChange = (value, innerProp) => {\n setRow({\n ...row,\n [innerProp]: value,\n });\n };\n \n const onEditClick = () => {\n setEditable(true);\n };\n\n const onSavePress = async () => {\n setEditable(false);\n const body = {\n webId: row.webId,\n dailyLimit: +row.dailyLimit,\n status: row.status === \"true\" || row.status === 1 ? 1 : 0,\n };\n const isValid = isDailyLimitValid(row);\n if (isValid) {\n await http.patch(`/partnerdeals/${row.deal.id}/webs/${row.id}`, body);\n } else {\n openFailureSnackbar(`The amount of limits exceeds the limit on the deal (${row.dailyLimitSum} of partner deal)`)\n }\n getInfo();\n };\n\n const isDailyLimitValid = (web) => {\n if (web.deal.dailyLimit === 0) {\n return true;\n }\n const newDailyLimitSum = web.dailyLimitSum - oldDailyLimit + web.dailyLimit;\n if (newDailyLimitSum > web.deal.dailyLimitSum) {\n return false\n }\n return true\n }\n\n const onCancel = () => {\n setRow(data);\n setEditable(false);\n };\n\n return (\n \n {!isEditable ? (\n \n {/* UUID */}\n {row.deal.partnerLink.uid}\n {/* LinkName */}\n {row.deal.partnerLink.name}\n {/* webId */}\n {row.webId}\n {/* Payout */}\n {row.deal.payout}\n {/* Daily Limit */}\n {row.dailyLimit}\n {/* isActive */}\n {row.status === 1 ? 'true' : 'false'}\n {/* Start_date */}\n \n {moment(row.createDate).format('YYYY-MM-DD HH:mm')}\n \n \n onEditClick(row.siteId)}>\n Edit\n \n \n \n ) : (\n \n {/* UUID */}\n {row.deal.partnerLink.uid}\n {/* LinkName */}\n {row.deal.partnerLink.name}\n {/* webId */}\n {row.webId}\n {/* Payout */}\n {row.deal.payout}\n {/* Daily Limit */}\n \n {\n if (+e.target.value >= 0) {\n onFieldChange(e.target.value, \"dailyLimit\");\n }\n }}\n />\n \n {/* isActive */}\n \n onFieldChange(val, \"status\")}\n >\n \n \n {[{ name: \"true\" }, { name: \"false\" }].map((action) => (\n \n {action.name}\n \n ))}\n \n \n \n {/* Start_date */}\n \n {moment(row.createDate).format('YYYY-MM-DD HH:mm')}\n \n \n \n Save\n \n \n Cancel\n \n \n \n )}\n \n );\n};\n\nexport default TableRow;\n","import React, { useEffect, useState } from \"react\";\nimport {\n MDBCardBody,\n MDBTable,\n MDBTableBody,\n MDBTableHead,\n MDBCard,\n MDBSelect,\n MDBCol,\n MDBSpinner,\n MDBRow,\n MDBInput,\n MDBBtn,\n MDBIcon\n} from \"mdbreact\";\nimport _ from 'lodash';\nimport { useSelector } from \"react-redux\";\nimport { useLocation } from \"react-router-dom\";\nimport Select from \"react-select\";\n\nimport http from \"../../../../services/http\";\n\nimport * as S from \"./styled\";\nimport TableRow from \"../TableRow\";\n\nconst PartnerWebTable = () => {\n\n const choosedSiteId = useSelector(state => state.app.choosedSiteId);\n \n const location = useLocation();\n\n const queryParams = new URLSearchParams(location.search);\n\n const [collapsed, setCollapsed] = useState(false);\n const [info, setInfo] = useState([]);\n const [partners, setPartners] = useState([]);\n const [webs, setWebs] = useState([]);\n const [selectedPartner, setSelectedPartner] = useState(\"\");\n\n const resize = () => {\n if (window.innerWidth >= 780 && collapsed) {\n setCollapsed(false);\n }\n };\n\n useEffect(() => {\n window.addEventListener(\"resize\", resize);\n return () => {\n window.removeEventListener(\"resize\", resize)\n }\n }, []);\n\n const [filter, setFilter] = useState({\n linkId: \"\",\n webId: \"\",\n linkName: queryParams.get(\"linkName\") || \"\",\n payOut: {\n operation: {\n value: \"=\",\n label: \"=\",\n },\n value: \"\",\n },\n isActive: {\n label: \"No Filter\",\n value: \"No Filter\",\n },\n });\n\n const [sorting, setSorting] = React.useState({\n field: \"\",\n direction: \"asc\",\n });\n\n const [loadingInfo, setLoadingInfo] = useState(false);\n\n useEffect(() => {\n if (selectedPartner) {\n getInfo();\n }\n }, [choosedSiteId, selectedPartner]);\n\n useEffect(() => {\n getPartners();\n }, []);\n\n const getPartners = async () => {\n const { data } = await http.get(\"/users\");\n const formatted = data\n .filter((i) => i.roles?.length && i.roles[0].role === 3)\n .map((i) => ({\n ...i,\n text: i.email,\n value: i.email,\n role: 3,\n }))\n .sort((a, b) => a.email.localeCompare(b.email));\n const indexToCheck =\n formatted.findIndex((i) => i.email === \"cpamatica@mediamars.com\") || 2;\n if (formatted[indexToCheck]) {\n formatted[indexToCheck].checked = true;\n }\n\n setPartners(formatted);\n if (formatted[indexToCheck]) {\n setSelectedPartner(formatted[indexToCheck].email);\n }\n };\n\n const getInfo = async () => {\n setLoadingInfo(true);\n const userId = partners.find((p) => p.email === selectedPartner).id;\n try {\n const { data } = await http.get(\"/partnerdeals/byuserdetailed\", {\n params: {\n userId: userId,\n },\n });\n const filteredDealsBySiteId = data.filter((i) => i.siteId === choosedSiteId);\n const webs = await getWebs(filteredDealsBySiteId);\n setInfo(webs);\n } catch (err) {\n console.log('err', err);\n alert('Errored');\n }\n setLoadingInfo(false);\n };\n\n const getWebs = async (deals) => {\n const promises = deals.map(deal => http.get(`/partnerdeals/${deal.id}/webs`));\n const resolved = await Promise.allSettled(promises);\n const webs = resolved.filter(i => i.status === 'fulfilled').map(i => i.value.data);\n const websWithSum = webs.map(i => countDailyLimitSum(i))\n let formatted = [];\n websWithSum.forEach(web => {\n web.forEach(w => {\n formatted.push(w);\n })\n })\n const final = formatted.map(web => {\n const findDeal = deals.find(deal => deal.id === web.partnerDealId);\n return ({\n ...web,\n deal: findDeal,\n });\n })\n return final;\n }\n\n const countDailyLimitSum = (web) => {\n let sum = 0;\n [...web].forEach(w => {\n sum += w.dailyLimit;\n })\n return web.map(i => ({\n ...i,\n dailyLimitSum: sum,\n }))\n };\n\n const onSelectPartner = (partner) => {\n setSelectedPartner(partner);\n const formatted = partners;\n const index = formatted.findIndex((i) => i.email === partner);\n if (formatted[index]) {\n formatted[index].checked = true;\n }\n setPartners(formatted);\n };\n\n const onFilterChange = (type, value) =>\n setFilter({ ...filter, [type]: value });\n\n const onPayoutValueChange = (value) => {\n setFilter({\n ...filter,\n payOut: {\n ...filter.payOut,\n value,\n },\n });\n };\n\n const onPayoutOperationChange = (operation) => {\n setFilter({\n ...filter,\n payOut: {\n ...filter.payOut,\n operation,\n },\n });\n };\n\n const filterInfo = (data) => {\n return data\n .filter((item) => item.deal.partnerLink.uid.includes(filter.linkId))\n .filter((item) => item.webId.includes(filter.webId))\n .filter((item) =>\n item.deal.partnerLink.name\n .toLowerCase()\n .includes(filter.linkName.toLowerCase())\n )\n .filter((item) => {\n if (filter.isActive.value === \"True\") {\n return item.status;\n }\n if (filter.isActive.value === \"False\") {\n return !item.status;\n }\n return true;\n })\n .filter((item) => {\n if (filter.payOut.value === \"\") {\n return true;\n }\n if (filter.payOut.operation.value === \"=\") {\n return item.deal.payout == filter.payOut.value;\n }\n if (filter.payOut.operation.value === \">=\") {\n return item.deal.payout >= filter.payOut.value;\n }\n if (filter.payOut.operation.value === \"<=\") {\n return item.deal.payout <= filter.payOut.value;\n }\n if (filter.payOut.operation.value === \">\") {\n return item.deal.payout > filter.payOut.value;\n }\n if (filter.payOut.operation.value === \"<\") {\n return item.deal.payout < filter.payOut.value;\n }\n return true;\n });\n };\n\n const onSortClick = (header) => {\n setSorting({\n field: header,\n direction: sorting.direction === \"asc\" ? \"desc\" : \"asc\",\n });\n };\n\n const isString = (value) => typeof value === \"string\";\n\n const sortedData = () => {\n if (!info.length) {\n return [];\n }\n\n if (sorting.field === \"LinkId\") {\n return info.sort((a, b) => {\n const aValue = Number(a.deal.partnerLink.uid);\n const bValue = Number(b.deal.partnerLink.uid);\n return sorting.direction === \"asc\"\n ? aValue < bValue\n ? -1\n : 1\n : aValue > bValue\n ? -1\n : 1;\n });\n }\n\n if (sorting.field === \"LinkName\") {\n return info.sort((a, b) => {\n const aValue = a.deal.partnerLink.name;\n const bValue = b.deal.partnerLink.name;\n return sorting.direction === \"asc\"\n ? aValue < bValue\n ? -1\n : 1\n : aValue > bValue\n ? -1\n : 1;\n });\n }\n if (sorting.field === \"WebId\") {\n return info.sort((a, b) => {\n const aValue = a.webId;\n const bValue = b.webId;\n return sorting.direction === \"asc\"\n ? aValue < bValue\n ? -1\n : 1\n : aValue > bValue\n ? -1\n : 1;\n });\n }\n if (sorting.field === \"Payout\") {\n return info.sort((a, b) => {\n const aValue = Number(a.deal.payout);\n const bValue = Number(b.deal.payout);\n return sorting.direction === \"asc\"\n ? aValue < bValue\n ? -1\n : 1\n : aValue > bValue\n ? -1\n : 1;\n });\n }\n if (sorting.field === \"IsActive\") {\n return info.sort((a, b) => {\n const aValue = Number(a.status);\n const bValue = Number(b.status);\n return sorting.direction === \"asc\"\n ? aValue < bValue\n ? -1\n : 1\n : aValue > bValue\n ? -1\n : 1;\n });\n }\n return info;\n };\n\n return (\n \n \n setCollapsed(!collapsed)}>\n \n \n {!collapsed && <>\n \n \n \n \n \n \n \n onFilterChange(\"linkId\", e.target.value)}\n />\n \n \n onFilterChange(\"linkName\", e.target.value)}\n />\n \n \n onFilterChange(\"webId\", e.target.value)}\n />\n \n \n Is Active\n ({ ...s, marginTop: 5 }) }}\n placeholder={\"Is Active\"}\n options={[\n { value: \"False\", label: \"False\" },\n { value: \"True\", label: \"True\" },\n { value: \"No Filter\", label: \"No Filter\" },\n ]}\n value={filter.isActive}\n onChange={(val) => onFilterChange(\"isActive\", val)}\n />\n \n \n \n \n Payout compare\n ({ ...s, marginTop: 5 }) }}\n placeholder={\"operation\"}\n options={[\n { value: \"=\", label: \"=\" },\n { value: \">\", label: \">\" },\n { value: \">=\", label: \">=\" },\n { value: \"<\", label: \"<\" },\n { value: \"<=\", label: \"<=\" },\n ]}\n value={filter.payOut.operation}\n onChange={(val) => onPayoutOperationChange(val)}\n />\n \n \n onPayoutValueChange(e.target.value)}\n />\n \n \n }\n \n \n \n \n onSortClick(\"LinkId\")}\n >\n LinkId\n \n onSortClick(\"LinkName\")}\n >\n LinkName\n \n onSortClick(\"WebId\")}\n >\n WebId\n \n onSortClick(\"Payout\")}\n >\n Payout\n \n Dailylimit\n onSortClick(\"IsActive\")}\n >\n IsActive\n \n Start_date\n \n \n \n \n {!loadingInfo ? (\n filterInfo(sortedData()).map((row) => (\n \n ))\n ) : (\n \n \n \n \n \n )}\n \n \n \n \n \n );\n};\n\nexport default PartnerWebTable;\n","import styled from 'styled-components';\n\nexport const Container = styled.div`\n .logo {\n padding-left: 20px;\n margin-top: 20px;\n }\n .side-nav.wide .collapsible-body a {\n padding-left: 23px;\n background-color: transparent;\n }\n .preloader-wrapper {\n margin-left: calc(50% - 50px);\n }\n .btn-container {\n display: flex;\n align-items: center;\n }\n`;","import React from 'react';\nimport { MDBContainer } from 'mdbreact';\n\nimport PartnerWebTable from './components/PartnerWebTable';\n\nimport * as S from './styled';\n\nclass PartnerWebPage extends React.Component {\n render() {\n return (\n \n \n \n \n \n );\n }\n}\n\nexport default PartnerWebPage;","import styled from 'styled-components';\n\nexport const Container = styled.div`\n .table {\n margin-bottom: 0;\n /* table-layout: fixed; */\n }\n td {\n vertical-align: middle;\n }\n .table-responsive {\n /* overflow-y: visible;\n overflow-x: visible; */\n }\n`;\n\n\nexport const Th = styled.th`\n cursor: pointer;\n position: relative;\n padding-right: 30px;\n ::after {\n right: 1em;\n font-family: \"Font Awesome\\ 5 Free\", sans-serif;\n font-size: 1rem;\n font-weight: 900;\n content: \"\\f0de\";\n position: absolute;\n bottom: .9em;\n display: ${({withSorting}) => withSorting ? 'block' : 'none'};\n opacity: ${({isSorting, direction}) => (isSorting && direction === 'desc') ? 1 : 0.4}\n }\n ::before {\n right: 16px;\n font-family: \"Font Awesome\\ 5 Free\", sans-serif;\n font-size: 1rem;\n font-weight: 900;\n content: \"\\f0dd\";\n position: absolute;\n bottom: .9em;\n display: ${({withSorting}) => withSorting ? 'block' : 'none'};\n opacity: ${({isSorting, direction}) => (isSorting && direction === 'asc') ? 1 : 0.4}\n }\n`;\n\nexport const SearchContainer = styled.div`\n display: flex;\n align-items: center;\n justify-content: flex-start;\n margin-right: auto;\n padding-right: 0;\n input {\n width: 165px;\n }\n`;\n\nexport const PagingContainer = styled.div`\n display: flex;\n align-items: center;\n justify-content: flex-start;\n gap: 10px;\n margin-top: 20px;\n width: 300px;\n`;\n\n","import React from 'react';\nimport {MDBInput, MDBIcon, MDBBtn, MDBSpinner} from 'mdbreact';\n\nimport http from '../../../../services/http/affiliates';\nimport { siteUrlsConfig } from '../../../../configs';\nimport { useSelector } from 'react-redux';\n\n\nconst TableRow = ({row, choosedSiteId }) => {\n const [isMessagesShow, setMessagesShow] = React.useState(false);\n const [isEditable, setEditable] = React.useState(false);\n\n const [enabled, setEnabled] = React.useState(row.enabled);\n const [limit, setLimit] = React.useState(row.limit);\n\n const [m1, setM1] = React.useState(row.m1);\n const [m2, setM2] = React.useState(row.m2);\n\n const onMessageClick = (e) => {\n if (e.target.parentElement.id === \"limit-editable\" || e.target.parentElement.className === \"md-form\") return;\n setMessagesShow(!isMessagesShow);\n }\n\n const onSave = async () => {\n setEditable(false);\n await http.post(`/api/${siteUrlsConfig[choosedSiteId]}/SaveMessagesForAff`, {\n \"userid\": row.userid,\n \"email\": row.email,\n \"profileid\": row.profileid,\n \"enabled\": enabled,\n \"done\": row.done,\n \"addmethod\": row.addmethod,\n \"m1\": m1,\n \"m2\": m2,\n \"limit\": limit,\n })\n }\n\n const onSetEnabled = async () => {\n setEnabled(!enabled)\n await http.post(`/api/${siteUrlsConfig[choosedSiteId]}/ToggleMegachatForAff/${row.profileid}`)\n };\n\n const renderOnlineStatus = (item) => {\n return
\n }\n\n const [isLimitEditable, setLimitEditable] = React.useState(false);\n const [limitLoading, setLimitLoading] = React.useState(false);\n\n const saveLimit = async () => {\n setLimitLoading(true);\n try {\n await http.post(`/api/${siteUrlsConfig[choosedSiteId]}/UpdateActionsLimit?`, null, {\n params: {\n profileid: row.profileid,\n limit,\n }\n })\n } catch(err) {\n setLimit(row.limit)\n }\n setLimitLoading(false);\n setLimitEditable(false);\n }\n\n const onCancelEditLimit = () => {\n setLimitEditable(false);\n setLimit(row.limit);\n };\n\n const renderLimitField = () => {\n if (!isLimitEditable) {\n return (\n <>\n {limit} setLimitEditable(true)} />\n \n )\n } else {\n return (\n <>\n setLimit(e.target.value)} />\n Save\n Cancel\n \n )\n }\n }\n return (\n <>\n \n {row.ind}\n {row.email}\n {row.profileid}\n \n \n {!m1 ? : }\n {!m2 ? : }\n \n \n {renderLimitField()}\n \n {row.addmethod}\n \n {renderOnlineStatus(row)}\n \n \n {isMessagesShow && \n {!isEditable ? m1 :\n setM1(e.target.value)}\n />}\n \n {!isEditable ? m2 :\n setM2(e.target.value)}\n />}\n \n {!isEditable ? setEditable(true)} size=\"sm\">Edit : Save}\n }\n \n )\n};\n\nexport default TableRow;","import React, { useMemo } from 'react';\nimport { MDBCardBody, MDBTable, MDBTableBody, MDBTableHead, MDBCard, MDBSpinner, MDBIcon} from 'mdbreact';\nimport { connect } from 'react-redux';\n\nimport axios from \"axios\";\n\nimport http from '../../../../services/http/affiliates';\n\nimport * as S from './styled';\nimport TableRow from '../TableRow';\nimport { siteUrlsConfig } from '../../../../configs';\nimport SearchInput from '../../../../components/SearchInput';\n\nconst pageSize = 50;\n\nconst headers = [\n 'ID',\n 'Email',\n 'ProfileId',\n 'Enabled',\n 'Messages',\n 'Limit',\n 'AddMethod',\n 'Online',\n];\n\nconst MegaChatTable = ({ choosedSiteId, user }) => {\n const [searchText, setSearchTest] = React.useState('');\n const [currentPage, setCurrentPage] = React.useState(1);\n const [totalPages, setTotalPages] = React.useState(1);\n\n const [loading, setLoading] = React.useState(false);\n const [allData, setAllData] = React.useState([]);\n // const [data, setData] = React.useState([]);\n const [sorting, setSorting] = React.useState({\n field: '',\n direction: 'asc',\n });\n\n\n React.useEffect(() => {\n const cancelTokenSource = axios.CancelToken.source();\n \n const fetchData = async () => {\n setLoading(true);\n try {\n const response = await http.post(`/api/${siteUrlsConfig[choosedSiteId]}/AffiliatesMegachat`, null, {\n cancelToken: cancelTokenSource.token\n });\n const megaChatData = response.data;\n const formatted = megaChatData.map((item, index) => ({ ...item, ind: index + 1 }));\n setAllData(formatted);\n setTotalPages(Math.ceil(formatted.length / pageSize));\n setLoading(false);\n } catch (error) {\n if (axios.isCancel(error)) {\n console.log('Request canceled due to component unmount or choosedSiteId change.');\n } else {\n console.error('Error fetching data:', error);\n setLoading(false);\n }\n }\n };\n \n fetchData();\n \n return () => {\n cancelTokenSource.cancel('Request canceled due to cleanup');\n };\n \n }, [choosedSiteId, pageSize, siteUrlsConfig, http]);\n\n const onSortClick = (header) => {\n if (header === 'ID') return;\n setSorting({\n field: header,\n direction: sorting.direction === 'asc' ? 'desc' : 'asc',\n });\n };\n\n const isString = value => typeof value === 'string';\n\n const sortedData = (data) => {\n if (!data.length) {\n return [];\n }\n\n const field = sorting.field.toLocaleLowerCase();\n\n if (field === 'messages') {\n if (sorting.direction === 'desc') {\n const filtered1 = data.filter(i => i.m1 && i.m2);\n const filtered2 = data.filter(i => i.m1 && !i.m2);\n const filtered3 = data.filter(i => !i.m1 && !i.m2);\n return [...filtered1, ...filtered2, ...filtered3];\n } else {\n return data;\n }\n }\n return data.sort((a, b) => {\n\n const aValue = isString(a[field])\n ? a[field].includes('$')\n ? Number(a[field].replace(/\\$/g, ''))\n : a[field]\n : a[field];\n const bValue = isString(b[field])\n ? b[field].includes('$')\n ? Number(b[field].replace(/\\$/g, ''))\n : b[field]\n : b[field];\n\n return sorting.direction === 'asc' ? (aValue < bValue ? -1 : 1) : aValue > bValue ? -1 : 1;\n });\n }\n\n const paginate = (array, pageNumber) => {\n return array.slice((pageNumber - 1) * pageSize, pageNumber * pageSize);\n }\n\n const filteredBySearch = (items) => searchText ? items.filter(item => item?.email?.toLowerCase().startsWith(searchText.toLowerCase()) || `${item?.profileid}`.startsWith(searchText.toLowerCase())) : items;\n \n const filteredData = filteredBySearch(sortedData(allData));\n\n const data = useMemo(() => paginate(filteredData, currentPage), [currentPage, filteredData, sorting]);\n\n\n return (\n \n \n {\n setCurrentPage(1);\n setSearchTest(value);\n }} />\n \n \n \n \n {headers.map(h => onSortClick(h)}>{h})}\n \n \n \n {!loading ? data.map((row) => ) : }\n \n \n setCurrentPage(currentPage - 1)} style={{ cursor: 'pointer', opacity: currentPage > 1 ? 1 : 0 }} icon=\"chevron-left\" />\n setCurrentPage(Number(e.target.value))} style={{ width: 100, textAlign: 'center' }} value={currentPage} type=\"number\" placeholder=\"Search\" className=\"form-control form-control-sm ml-0 my-1\" />\n setCurrentPage(currentPage + 1)} style={{ cursor: 'pointer', opacity: currentPage < totalPages ? 1 :0 }} icon=\"chevron-right\" />\n {totalPages} pages\n \n \n \n \n \n )\n}\n\nconst mapStateToProps = ({app, auth}) => ({\n choosedSiteId: app.choosedSiteId,\n user: auth.user,\n});\n\nexport default connect(mapStateToProps, null)(MegaChatTable);","import styled from 'styled-components';\n\nexport const Container = styled.div`\n .logo {\n padding-left: 20px;\n margin-top: 20px;\n }\n .side-nav.wide .collapsible-body a {\n padding-left: 23px;\n background-color: transparent;\n }\n .preloader-wrapper {\n margin-left: calc(50% - 50px);\n }\n .btn-container {\n display: flex;\n align-items: center;\n }\n`;","import React from 'react';\nimport { MDBContainer } from 'mdbreact';\n\nimport MegaChatTable from './components/MegaChatTable';\n\nimport * as S from './styled';\n\nclass MegaChatPage extends React.Component {\n render() {\n return (\n \n \n \n \n \n );\n }\n}\n\nexport default MegaChatPage;","/* eslint-disable react-hooks/exhaustive-deps */\nimport React from \"react\";\nimport moment from \"moment\";\n\nimport {\n MDBBtn,\n MDBCard,\n MDBCol,\n MDBInput,\n MDBRow,\n MDBCardBody,\n MDBDataTable,\n MDBSpinner,\n} from \"mdbreact\";\n\nimport http from \"../../../../services/http/affiliates\";\nimport { connect } from \"react-redux\";\nimport { siteUrlsConfig } from \"../../../../configs\";\nimport useDateScrollHeader from \"../../../../hooks/useDateScrollHeader\";\n\nconst AffBalanceTable = ({ choosedSiteId }) => {\n const [loading, setLoading] = React.useState(false);\n const [data, setData] = React.useState([]);\n const [form, setForm] = React.useState({\n From: moment().format(\"YYYY-MM-01\"),\n To: moment().format(\"YYYY-MM-DD\"),\n email: \"\",\n });\n\n useDateScrollHeader(\n {\n date: `${moment(form.From).format(\"DD-MM-YYYY\")} - ${moment(\n form.To\n ).format(\"DD-MM-YYYY\")}`,\n },\n [form]\n );\n\n React.useEffect(() => {\n onClick();\n }, [choosedSiteId]);\n\n const getTypeName = (typeid) => {\n let text = \"\";\n switch (typeid) {\n case 1:\n text = \"Chat buy\";\n break;\n case 2:\n text = \"Bonus\";\n break;\n case 3:\n text = \"Fine\";\n break;\n case 4:\n text = \"Done\";\n break;\n case 5:\n text = \"Withdrawal Rejected\";\n break;\n default:\n text = \"\";\n }\n return text;\n };\n\n const getPaymentMaleIdName = (payment, maleid, typeid) => {\n if (typeid === 2 || typeid === 3) return \"Kosta\";\n if (typeid === 1) return \"profile id \" + maleid;\n var text = \"\";\n switch (payment) {\n case 1:\n text = \"BankCardRus\";\n break;\n case 2:\n text = \"BankCardUkr\";\n break;\n case 3:\n text = \"WebMoney\";\n break;\n case 4:\n text = \"Qiwi\";\n break;\n default:\n text = \"Undefined\";\n }\n return text;\n };\n\n const onClick = async () => {\n setLoading(true);\n try {\n const { data } = await http.post(\n `/api/${siteUrlsConfig[choosedSiteId]}/AffiliateHistoryBalance`,\n {\n // param: \"albk.106@bk.ru\",\n param: form.email,\n start: form.From,\n end: form.To,\n }\n );\n\n const formattedData = data.map((item) => ({\n ...item,\n type: getTypeName(item.typeId),\n payment: getPaymentMaleIdName(\n item.paymentMethod,\n item.maleProfileId,\n item.typeId\n ),\n }));\n\n setData({\n columns: [\n {\n label: \"Id\",\n field: \"id\",\n width: 150,\n },\n {\n label: \"Type\",\n field: \"type\",\n width: 270,\n },\n {\n label: \"Amount\",\n field: \"amount\",\n width: 200,\n },\n {\n label: \"Balance\",\n field: \"balance\",\n width: 100,\n },\n {\n label: \"Payment/MaleId\",\n field: \"payment\",\n width: 100,\n },\n {\n label: \"Date\",\n field: \"creationDate\",\n width: 100,\n },\n ],\n rows: [...formattedData],\n });\n } catch (err) {}\n setLoading(false);\n };\n\n return (\n <>\n \n \n \n \n setForm({\n ...form,\n From: e.target.value,\n })\n }\n />\n \n\n \n {\n console.log(e);\n setForm({\n ...form,\n To: e.target.value,\n });\n }}\n />\n \n \n {\n console.log(e);\n setForm({\n ...form,\n email: e.target.value,\n });\n }}\n />\n \n\n \n Show\n \n \n \n \n\n \n \n {!loading ? (\n \n ) : (\n \n )}\n \n \n \n );\n};\n\nconst mapStateToProps = ({ app, auth }) => ({\n choosedSiteId: app.choosedSiteId,\n user: auth.user,\n});\n\nexport default connect(mapStateToProps, null)(AffBalanceTable);\n","import styled from 'styled-components';\n\nexport const Container = styled.div`\n .logo {\n padding-left: 20px;\n margin-top: 20px;\n }\n .side-nav.wide .collapsible-body a {\n padding-left: 23px;\n background-color: transparent;\n }\n .preloader-wrapper {\n margin-left: calc(50% - 50px);\n }\n .btn-container {\n display: flex;\n align-items: center;\n }\n`;","import React from 'react';\nimport { MDBContainer } from 'mdbreact';\n\nimport AffBalanceTable from './components/AffBalanceTable';\n\nimport * as S from './styled';\n\nclass AffBalancePage extends React.Component {\n\n render() {\n return (\n \n \n \n \n \n );\n }\n}\n\nexport default AffBalancePage;","import { MDBBtn } from \"mdbreact\";\nimport React from \"react\";\nimport ReactExport from \"react-export-excel\";\n\nconst ExcelFile = ReactExport.ExcelFile;\nconst ExcelSheet = ReactExport.ExcelFile.ExcelSheet;\nconst ExcelColumn = ReactExport.ExcelFile.ExcelColumn;\n\nclass Download extends React.Component {\n render() {\n return (\n Download}>\n \n \n \n \n \n );\n }\n}\n\nexport default Download;","/* eslint-disable react-hooks/exhaustive-deps */\nimport React from \"react\";\n\nimport { MDBCard, MDBCardBody, MDBDataTable, MDBSpinner } from \"mdbreact\";\n\nimport http from \"../../../../services/http/affiliates\";\nimport { connect } from \"react-redux\";\nimport Download from \"../Download\";\nimport { siteUrlsConfig } from \"../../../../configs\";\n\nconst AffLinksTable = ({ choosedSiteId }) => {\n const [loading, setLoading] = React.useState(false);\n const [data, setData] = React.useState([]);\n\n React.useEffect(() => {\n onClick();\n }, [choosedSiteId]);\n\n const onClick = async () => {\n setLoading(true);\n const { data } = await http.get(\n `/api/${siteUrlsConfig[choosedSiteId]}/GetLinks`\n );\n\n setData({\n columns: [\n {\n label: \"Id\",\n field: \"id\",\n width: 150,\n },\n {\n label: \"Date\",\n field: \"date\",\n width: 270,\n },\n ],\n rows: [...data],\n });\n setLoading(false);\n };\n\n return (\n <>\n \n \n \n {!loading ? (\n \n ) : (\n \n )}\n \n \n \n );\n};\n\nconst mapStateToProps = ({ app, auth }) => ({\n choosedSiteId: app.choosedSiteId,\n user: auth.user,\n});\n\nexport default connect(mapStateToProps, null)(AffLinksTable);\n","import styled from 'styled-components';\n\nexport const Container = styled.div`\n .logo {\n padding-left: 20px;\n margin-top: 20px;\n }\n .side-nav.wide .collapsible-body a {\n padding-left: 23px;\n background-color: transparent;\n }\n .preloader-wrapper {\n margin-left: calc(50% - 50px);\n }\n .btn-container {\n display: flex;\n align-items: center;\n }\n`;","import React from 'react';\nimport { MDBContainer } from 'mdbreact';\n\nimport AffLinksTable from './components/AffLinksTable';\n\nimport * as S from './styled';\n\nclass AffLinksPage extends React.Component {\n\n render() {\n return (\n \n \n \n \n \n );\n }\n}\n\nexport default AffLinksPage;","import styled from 'styled-components';\n\nexport const Container = styled.div`\n .logo {\n padding-left: 20px;\n margin-top: 20px;\n }\n .side-nav.wide .collapsible-body a {\n padding-left: 23px;\n background-color: transparent;\n }\n .preloader-wrapper {\n margin-left: calc(50% - 50px);\n }\n .btn-container {\n display: flex;\n align-items: center;\n }\n`;","import { MDBBtn, MDBCol, MDBInput, MDBCard, MDBCardText } from 'mdbreact';\nimport React from 'react';\nimport { useSnackbar } from 'react-simple-snackbar';\nimport { failureOptions, siteUrlsConfig, succesOptions } from '../../../../configs';\nimport http from '../../../../services/http/affiliates';\n\nconst ChangePassword = ({choosedSiteId}) => {\n const [email, setEmail] = React.useState('');\n const [password, setPassword] = React.useState('');\n \n const [openSuccessSnackbar] = useSnackbar(succesOptions);\n const [openFailureSnackbar] = useSnackbar(failureOptions)\n\n const updatePassword = async () => {\n const {status} = await http.post(`/api/${siteUrlsConfig[choosedSiteId]}/UpdatePassword/${email}/${password}`);\n if (status === 200) {\n openSuccessSnackbar('Updated!');\n setEmail('');\n setPassword('');\n } else {\n openFailureSnackbar('Error :(')\n }\n }\n return (\n \n Update password\n \n setEmail(e.target.value)}\n />\n setPassword(e.target.value)}\n />\n Update\n \n \n )\n}\n\nexport default ChangePassword;\n","import { MDBBtn, MDBCol, MDBInput, MDBCard, MDBRow, MDBSpinner, MDBCardText } from 'mdbreact';\nimport React from 'react';\nimport { useSnackbar } from 'react-simple-snackbar';\nimport { failureOptions, siteUrlsConfig } from '../../../../configs';\nimport http from '../../../../services/http/affiliates';\n\nconst CheckUser = ({choosedSiteId}) => {\n const [input, setInput] = React.useState('');\n const [isFound, setFound] = React.useState(false);\n const [foundUser, setFoundUser] = React.useState({});\n const [loading, setLoading] = React.useState(false);\n const [openFailureSnackbar] = useSnackbar(failureOptions)\n\n const checkUser = async () => {\n setLoading(true);\n setFoundUser({});\n setFound(false);\n try {\n const {data} = await http.get(`/api/${siteUrlsConfig[choosedSiteId]}/CheckUser/${input}`);\n setFoundUser(data.length ? data[0] : {});\n setFound(Boolean(data.length));\n if (!Boolean(data.length)) {\n openFailureSnackbar('Invalid input');\n }\n } catch (err) {\n console.log(err);\n }\n setLoading(false);\n }\n return (\n \n Check user\n \n setInput(e.target.value)}\n />\n Check\n \n {\n loading ? : null\n }\n {\n isFound ? (\n <>\n \n \n \n \n
    \n
  • ID: {foundUser.id}
  • \n
  • Email: {foundUser.email}
  • \n
  • Name: {foundUser.name}
  • \n
  • Location: {foundUser.location}
  • \n
\n
\n \n ) : null\n }\n
\n
\n
\n )\n}\n\nexport default CheckUser;\n","import React from 'react';\nimport { MDBBtn, MDBModal, MDBModalHeader, MDBModalFooter } from 'mdbreact';\n\nconst SurePopup = ({visible, onClose, onConfirm, isLoading}) => {\n return (\n \n Are you sure?\n \n Close\n Yes\n \n \n )\n}\n\nexport default SurePopup;","import { MDBBtn, MDBCol, MDBInput, MDBCard, MDBRow, MDBSpinner, MDBCardText } from 'mdbreact';\nimport React, { useState } from 'react';\nimport { useSnackbar } from 'react-simple-snackbar';\nimport { failureOptions, siteUrlsConfig } from '../../../../configs';\nimport http from '../../../../services/http/affiliates';\nimport SurePopup from './SurePopup';\n\nconst CheckBalance = ({choosedSiteId}) => {\n\n const [isModalVisible, setModalVisible] = useState(false);\n const [isResetModalVisible, setResetModalVisible] = useState(false);\n\n const [type, setType] = useState('increment');\n const [error, setError] = useState('');\n\n const [input, setInput] = useState('');\n const [isFound, setFound] = useState(false);\n const [foundUser, setFoundUser] = useState({});\n const [loading, setLoading] = useState(false);\n const [confirmLoading, setConfirmLoading] = useState(false);\n\n const [addition, setAddition] = useState(0);\n\n const [openFailureSnackbar] = useSnackbar(failureOptions)\n\n const checkBalance = async () => {\n setError('');\n setAddition(0);\n if (!input) {\n setError('Email cannot be empty!');\n return;\n }\n setLoading(true);\n setFoundUser({});\n setFound(false);\n try {\n const {data} = await http.get(`/api/${siteUrlsConfig[choosedSiteId]}/GetAffBalance/${input}`);\n setFoundUser(data);\n setFound(Boolean(data) && Boolean(data.userid));\n if (!Boolean(data) || !data.userid) {\n openFailureSnackbar('Invalid input');\n }\n } catch (err) {\n console.log(err);\n }\n setLoading(false);\n }\n\n const onAdditionClick = async () => {\n setConfirmLoading(true);\n let value = type === 'increment' ? addition : `-${addition}`;\n try {\n await http.post(`/api/${siteUrlsConfig[choosedSiteId]}/UpdateAffBalance/${value}/${foundUser.userid}`)\n setError(`Successfully updated the balance by ${value}!`)\n } catch (err) {\n setError('Something went wrong, please try again!');\n }\n setModalVisible(false);\n setFoundUser({\n ...foundUser,\n amount: type === 'increment' ? foundUser.amount + (+addition) : foundUser.amount - (+addition),\n })\n setAddition(0);\n setConfirmLoading(false);\n };\n\n const onAddClick = (type) => {\n setError('');\n if (!addition || !Number.isInteger(+addition)) {\n setError('Please enter a whole number!');\n return;\n }\n setType(type);\n setModalVisible(true);\n };\n\n const onResetBalance = async () => {\n setConfirmLoading(true);\n try {\n await http.post(`/api/${siteUrlsConfig[choosedSiteId]}/UpdateAffBalance/-${foundUser.amount}/${foundUser.userid}`)\n setFoundUser({\n ...foundUser,\n amount: 0,\n })\n setError(`Successfully reseted the balance!!`)\n } catch (err) {\n setError('Something went wrong, please try again!');\n }\n setResetModalVisible(false);\n setConfirmLoading(false);\n }\n return (\n \n Check balance\n \n setInput(e.target.value)}\n />\n Show\n {error ?
{error}
: null}\n \n {\n loading ? : null\n }\n {\n isFound ? (\n \n Balance: {foundUser.amount}\n setAddition(e.target.value)}\n />\n onAddClick('increment')}>+\n onAddClick('decrement')}>-\n setResetModalVisible(true)}>Reset the balance\n setModalVisible(false)} onConfirm={onAdditionClick} />\n setResetModalVisible(false)} onConfirm={onResetBalance} />\n \n ) : null\n }\n \n
\n
\n )\n}\n\nexport default CheckBalance;\n","import React from 'react';\nimport { MDBContainer } from 'mdbreact';\n\n\nimport * as S from './styled';\nimport ChangePassword from './components/ChangePassword';\nimport CheckUser from './components/CheckUser';\nimport { connect } from 'react-redux';\nimport CheckBalance from './components/CheckBalance';\n\nclass ActionsPage extends React.Component {\n\n render() {\n const {choosedSiteId, user} = this.props;\n const isAdmin = user?.role?.includes('Admin');\n return (\n \n \n \n \n {(isAdmin || user.email === \"nastyahr@bk.ru\") ? : null}\n \n \n );\n }\n}\n\nconst mapStateToProps = ({app, auth}) => ({\n choosedSiteId: app.choosedSiteId,\n user: auth.user,\n});\n\nexport default connect(mapStateToProps, null)(ActionsPage);","import styled from 'styled-components';\n\nexport const Container = styled.div`\n .preloader-wrapper.small {\n width: 2.5rem;\n height: 2.5rem;\n }\n .card-block {\n min-height: 178px;\n & .spin {\n margin: auto;\n }\n }\n .card-chart {\n height: 425px;\n & .spin {\n margin: auto;\n }\n }\n`;","import React from \"react\";\nimport { connect } from \"react-redux\";\nimport { withSnackbar } from \"react-simple-snackbar\";\nimport { MDBRow, MDBCol, MDBCard, MDBBtn, MDBIcon } from \"mdbreact\";\n\nimport * as S from \"./styled\";\nclass Dashboard extends React.Component {\n render() {\n const siteId = this.props.siteId;\n const values = this.props.values[siteId];\n return (\n \n
\n \n \n \n \n \n \n \n \n \n \n
\n {values.todayFillProfile}\n
\n

Fill Profile

\n
\n
\n \n \n

\n Yesterday\n

\n
\n \n

\n {values.yesterdayFillProfile}\n

\n
\n
\n
\n
\n\n \n \n \n \n \n \n \n \n \n
\n {values.todayConfirmedEmails}\n
\n

Confirmed

\n
\n
\n \n \n

\n Yesterday\n

\n
\n \n

\n {values.yesterdayConfirmedEmails}\n

\n
\n
\n
\n
\n\n \n \n \n \n \n \n \n \n \n
\n {values.todayPurchase}\n
\n

Sales

\n
\n
\n \n \n

\n Yesterday\n

\n
\n \n

\n {values.yesterdayPurchase}\n

\n
\n
\n
\n
\n\n \n \n \n \n \n \n \n \n \n
\n {values.todayTotalAmount}\n
\n

Amount

\n
\n
\n \n \n

\n Yesterday\n

\n
\n \n

\n {values.yesterdayTotalAmount}\n

\n
\n
\n
\n
\n\n \n \n \n \n \n \n \n \n \n
\n {values.todayConversion}\n
\n

Conversion

\n
\n
\n \n \n

\n Yesterday\n

\n
\n \n

\n {values.yesterdayConversion}\n

\n
\n
\n
\n
\n\n \n \n \n \n \n \n \n \n \n
\n {values.todayFtd}\n
\n

FTD

\n
\n
\n \n \n

\n Yesterday\n

\n
\n \n

\n {values.yesterdayFtd}\n

\n
\n
\n
\n
\n\n
\n
\n
\n );\n }\n}\n\nconst mapStateToProps = ({ app }) => ({\n choosedSiteId: app.choosedSiteId,\n});\n\nexport default withSnackbar(connect(mapStateToProps, null)(Dashboard));\n","import styled from 'styled-components';\n\nexport const Container = styled.div`\n .preloader-wrapper.small {\n width: 2.5rem;\n height: 2.5rem;\n }\n .card-block {\n min-height: 178px;\n & .spin {\n margin: auto;\n }\n }\n .card-chart {\n height: 425px;\n & .spin {\n margin: auto;\n }\n }\n`;","import React from \"react\";\n\nimport { MDBRow, MDBCol, MDBCard, MDBBtn, MDBIcon } from \"mdbreact\";\n\nimport * as S from \"./styled\";\n\nclass SumBoard extends React.Component {\n formatSum = () => {\n const { sum } = this.props;\n let total = {};\n total.todayFillProfile = sum[3].todayFillProfile + sum[8].todayFillProfile;\n total.yesterdayFillProfile =\n sum[3].yesterdayFillProfile + sum[8].yesterdayFillProfile;\n total.todayConfirmedEmails =\n sum[3].todayConfirmedEmails + sum[8].todayConfirmedEmails;\n total.yesterdayConfirmedEmails =\n sum[3].yesterdayConfirmedEmails + sum[8].yesterdayConfirmedEmails;\n total.todayPurchase = sum[3].todayPurchase + sum[8].todayPurchase;\n total.yesterdayPurchase =\n sum[3].yesterdayPurchase + sum[8].yesterdayPurchase;\n total.todayTotalAmount = sum[3].todayTotalAmount + sum[8].todayTotalAmount;\n total.yesterdayTotalAmount =\n sum[3].yesterdayTotalAmount + sum[8].yesterdayTotalAmount;\n total.todayConversion = sum[3].todayConversion + sum[8].todayConversion;\n total.yesterdayConversion =\n sum[3].yesterdayConversion + sum[8].yesterdayConversion;\n total.todayFtd = sum[3].todayFtd + sum[8].todayFtd;\n total.yesterdayFtd =\n sum[3].yesterdayFtd + sum[8].yesterdayFtd;\n return total;\n };\n render() {\n const sum = this.formatSum();\n return (\n \n
\n \n \n \n \n \n \n \n \n \n \n
\n {sum.todayFillProfile}\n
\n

Fill Profile

\n
\n
\n \n \n

\n Yesterday\n

\n
\n \n

\n {sum.yesterdayFillProfile}\n

\n
\n
\n
\n
\n\n \n \n \n \n \n \n \n \n \n
\n {sum.todayConfirmedEmails}\n
\n

Confirmed

\n
\n
\n \n \n

\n Yesterday\n

\n
\n \n

\n {sum.yesterdayConfirmedEmails}\n

\n
\n
\n
\n
\n\n \n \n \n \n \n \n \n \n \n
\n {sum.todayPurchase}\n
\n

Sales

\n
\n
\n \n \n

\n Yesterday\n

\n
\n \n

\n {sum.yesterdayPurchase}\n

\n
\n
\n
\n
\n\n \n \n \n \n \n \n \n \n \n
\n {sum.todayTotalAmount}\n
\n

Amount

\n
\n
\n \n \n

\n Yesterday\n

\n
\n \n

\n {sum.yesterdayTotalAmount}\n

\n
\n
\n
\n
\n \n \n \n \n \n \n \n \n \n
\n {sum.todayConversion}\n
\n

Conversion

\n
\n
\n \n \n

\n Yesterday\n

\n
\n \n

\n {sum.yesterdayConversion}\n

\n
\n
\n
\n
\n \n \n \n \n \n \n \n \n \n
\n {sum.todayFtd}\n
\n

FTD

\n
\n
\n \n \n

\n Yesterday\n

\n
\n \n

\n {sum.yesterdayFtd}\n

\n
\n
\n
\n
\n
\n
\n
\n );\n }\n}\n\nexport default SumBoard;\n","import React from 'react';\nimport moment from 'moment';\nimport { MDBInput, MDBBtn, MDBCard, MDBRow, MDBCol } from 'mdbreact';\n\nconst DateFilter = ({onFormChange = () => {}, form, onSubmit}) => {\n return (\n \n \n \n onFormChange('From', e.target.value)}\n max={moment().format('YYYY-MM-DD')}\n />\n \n\n \n onFormChange('To', e.target.value)}\n max={moment().format('YYYY-MM-DD')}\n />\n \n\n \n Show\n \n \n \n )\n}\n\nexport default DateFilter;","import React from 'react';\nimport moment from 'moment';\nimport { MDBContainer, MDBCardText } from 'mdbreact';\n\nimport Dashboard from './components/DashBoard';\nimport SumBoard from './components/SumBoard';\nimport { Fragment } from 'react';\nimport SignalR from '../../services/signalR';\nimport DateFilter from './components/DateFilter';\nimport http from '../../services/http';\nimport httpAff from '../../services/http/affiliates';\nimport _ from 'lodash';\nimport { siteUrlsConfig } from '../../configs';\n\nconst initialState = {\n todayPurchase: 0,\n todayFillProfile: 0,\n yesterdayPurchase: 0,\n yesterdayFillProfile: 0,\n yesterdayTotalAmount: 0,\n todayTotalAmount: 0,\n todayConfirmedEmails: 0,\n yesterdayConfirmedEmails: 0,\n todayConversion: 0,\n yesterdayConversion: 0,\n todayFtd: 0,\n yesterdayFtd: 0,\n}\nclass ReportPage extends React.Component {\n state = {\n form: {\n From: moment().format('YYYY-MM-DD'),\n To: moment().format('YYYY-MM-DD')\n },\n values: {\n 3: {},\n 8: {},\n 37: {},\n },\n increment: 0,\n sumed: {},\n testValues: {\n 3: { ...initialState },\n 8: { ...initialState },\n 37: { ...initialState },\n }\n }\n\n componentDidMount() {\n this.fetchInfo(3);\n this.fetchInfo(8);\n this.fetchInfo(37);\n }\n\n \n getTodayParams = (actionType, choosedSiteId) => {\n const { form : { To, From } } = this.state;\n if (actionType) {\n return ({\n SiteId: choosedSiteId,\n ActionType: actionType,\n From,\n To,\n })\n } else {\n return ({\n SiteId: choosedSiteId,\n From,\n To,\n })\n }\n };\n\n getYesterdayParams = (actionType, choosedSiteId) => {\n const { form : { From } } = this.state;\n const periodDate = moment(From).subtract(1, 'days').format('YYYY-MM-DD');\n if (actionType) {\n return ({\n SiteId: choosedSiteId,\n ActionType: actionType,\n From: periodDate,\n To: periodDate,\n })\n } else {\n return ({\n SiteId: choosedSiteId,\n From: periodDate,\n To: periodDate,\n })\n }\n }\n\n isTodayInPeriod = (fromDate, toDate) => {\n const today = moment().startOf('day'); // Получаем сегодняшний день без времени\n const from = moment(fromDate, 'YYYY-MM-DD').startOf('day');\n const to = moment(toDate, 'YYYY-MM-DD').endOf('day');\n \n return today.isBetween(from, to, null, '[]'); // Проверка включительно\n };\n\n updateValues = (type, value, siteId) => {\n this.setState({\n testValues: {\n ...this.state.testValues,\n [siteId]: {\n ...this.state.testValues[siteId],\n [type]: value\n }\n }\n });\n }\n\n fetchInfo = async (siteId) => {\n try {\n\n this.setState({loading: true, todayPurchaseLoading: true, todayFillProfileLoading: true, yesterdayPurchaseLoading: true, yesterdayFillProfileLoading: true, yesterdayTotalAmountLoading: true, todayConfirmedEmailsLoading: true})\n\n //FILL PROFILE FIRST BLOCK\n const {data: yesterdayFtd} = await http.get('/reports/report4_2', {\n params: this.getYesterdayParams('firstpurchase', siteId)\n });\n this.updateValues('yesterdayFtd', yesterdayFtd.count, siteId)\n\n const {data: todayFtd} = await http.get('/reports/report4_2', {\n params: this.getTodayParams('firstpurchase', siteId)\n });\n this.updateValues('todayFtd', todayFtd.count, siteId)\n\n //FILL PROFILE FIRST BLOCK\n const {data: yesterdayFillProfile} = await http.get('/reports/report4_2', {\n params: this.getYesterdayParams('FillProfile', siteId)\n });\n this.updateValues('yesterdayFillProfile', yesterdayFillProfile.count, siteId)\n\n const {data: todayFillProfile} = await http.get('/reports/report4_2', {\n params: this.getTodayParams('FillProfile', siteId)\n });\n this.updateValues('todayFillProfile', todayFillProfile.count, siteId)\n \n // EMAIL CONFIRMED SECOND BLOCK\n const {data: todayConfirmedEmails} = await http.get('/reports/report4_2', {\n params: this.getTodayParams('emailconfirmed', siteId)\n });\n const {data: yesterdayConfirmedEmails} = await http.get('/reports/report4_2', {\n params: this.getYesterdayParams('emailconfirmed', siteId)\n });\n this.updateValues('todayConfirmedEmails', todayConfirmedEmails.count, siteId)\n this.updateValues('yesterdayConfirmedEmails', yesterdayConfirmedEmails.count, siteId)\n \n // PURCHASE THIRD BLOCK\n const {data: todayPurchase} = await http.get('/reports/report4_2', {\n params: this.getTodayParams('Purchase', siteId)\n });\n this.updateValues('todayPurchase', todayPurchase.quantity, siteId)\n \n const {data: yesterdayPurchase} = await http.get('/reports/report4_2', {\n params: this.getYesterdayParams('Purchase', siteId)\n });\n this.updateValues('yesterdayPurchase', yesterdayPurchase.quantity, siteId)\n \n const {data: todayConversion} = await httpAff.get(`/api/${siteUrlsConfig[siteId]}/GetAffData/${this.getTodayParams().From}/${moment(this.getTodayParams().To).add(1, 'days').format('YYYY-MM-DD')}`);\n const groupedTodayConversion = _.groupBy(todayConversion, i => i.email);\n const formattedTodayConversion = Object.keys(groupedTodayConversion).map((key, index) => ({\n sum: groupedTodayConversion[key][0].sum,\n }))\n const countTodayConversion = _.sumBy(formattedTodayConversion, 'sum');\n this.updateValues('todayConversion', countTodayConversion, siteId)\n \n const {data: yesterdayConversion} = await httpAff.get(`/api/${siteUrlsConfig[siteId]}/GetAffData/${this.getYesterdayParams().From}/${moment(this.getYesterdayParams().To).add(1, 'days').format('YYYY-MM-DD')}`);\n const groupedYesterdayConversion = _.groupBy(yesterdayConversion, i => i.email);\n const formattedYesterdayConversion = Object.keys(groupedYesterdayConversion).map((key, index) => ({\n sum: groupedYesterdayConversion[key][0].sum,\n }))\n const countYesterdayConversion = _.sumBy(formattedYesterdayConversion, 'sum');\n this.updateValues('yesterdayConversion', countYesterdayConversion, siteId)\n\n \n const [{ data: yesterdayTotal }, { data: todayTotal }] = await Promise.all(\n [\n http.get('/reports/report5_2', \n {\n params: this.getYesterdayParams(undefined, siteId)\n },\n \n ),\n http.get('/reports/report5_2', {\n params: this.getTodayParams(undefined, siteId)\n })\n ]\n );\n this.updateValues('yesterdayTotalAmount', yesterdayTotal.amount, siteId)\n this.updateValues('todayTotalAmount', todayTotal.amount, siteId)\n \n } catch (err) {\n }\n }\n \n \n onNewMessage = (message) => {\n const { form : { To, From } } = this.state;\n const isTodayInPeriod = this.isTodayInPeriod(From, To);\n\n if (!isTodayInPeriod) {\n return;\n }\n const siteId = message.siteId;\n if (message.type.name === \"purchase\") {\n this.setState(prevState => {\n return {\n ...prevState,\n testValues: {\n ...prevState.testValues,\n [siteId]: {\n ...prevState.testValues[siteId],\n todayPurchase: prevState.testValues[siteId].todayPurchase + 1,\n todayTotalAmount: prevState.testValues[siteId].todayTotalAmount + (+message.value),\n }\n }\n }\n })\n }\n if (message.type.name === \"emailconfirmed\") {\n this.setState(prevState => {\n return {\n ...prevState,\n testValues: {\n ...prevState.testValues,\n [siteId]: {\n ...prevState.testValues[siteId],\n todayConfirmedEmails: prevState.testValues[siteId].todayConfirmedEmails + 1,\n }\n }\n }\n })\n }\n if (message.type.name === \"fillprofile\") {\n this.setState(prevState => {\n return {\n ...prevState,\n testValues: {\n ...prevState.testValues,\n [siteId]: {\n ...prevState.testValues[siteId],\n todayFillProfile: prevState.testValues[siteId].todayFillProfile + 1,\n }\n }\n }\n })\n }\n };\n\n onFormChange = (type, value) => {\n this.setState({\n form: {\n ...this.state.form,\n [type]: value\n }\n })\n };\n\n onSubmit = () => {\n this.fetchInfo(3);\n this.fetchInfo(8);\n this.fetchInfo(37);\n }\n\n render() {\n return (\n \n \n \n \n Total\n \n Bezkompleksov\n \n NatalieDate\n \n FlirtForDate\n \n \n \n );\n }\n}\n\nexport default ReportPage;","import styled from 'styled-components';\n\nexport const Container = styled.div`\n .preloader-wrapper.small {\n width: 2.5rem;\n height: 2.5rem;\n }\n .card-block {\n min-height: 178px;\n & .spin {\n margin: auto;\n }\n }\n .card-chart {\n height: 425px;\n & .spin {\n margin: auto;\n }\n }\n`;","import moment from 'moment';\nimport React from 'react';\nimport { connect } from 'react-redux';\nimport { withSnackbar } from 'react-simple-snackbar';\nimport { MDBRow, MDBCol, MDBCard, MDBSpinner, MDBBtn, MDBIcon, MDBCardHeader, MDBCardBody } from 'mdbreact';\nimport { Line } from 'react-chartjs-2';\n\nimport http from '../../../../services/http';\n\nimport * as S from './styled';\n\nconst GRAPH_OPTIONS = {\n fill: true,\n lineTension: 0.3,\n borderCapStyle: \"butt\",\n borderDash: [],\n borderDashOffset: 0.0,\n borderJoinStyle: \"miter\",\n pointBorderColor: \"rgb(205, 130,1 58)\",\n pointBackgroundColor: \"rgb(255, 255, 255)\",\n pointBorderWidth: 10,\n pointHoverRadius: 5,\n pointHoverBackgroundColor: \"rgb(0, 0, 0)\",\n pointHoverBorderColor: \"rgba(220, 220, 220,1)\",\n pointHoverBorderWidth: 2,\n pointRadius: 1,\n pointHitRadius: 10,\n};\n\nclass Dashboard extends React.Component {\n state = {\n loading: false,\n todayPurchase: 0,\n todayPurchaseLoading: false,\n todayFillProfile: 0,\n todayFillProfileLoading: false,\n yesterdayPurchase: 0,\n yesterdayPurchaseLoading: false,\n yesterdayFillProfile: 0,\n yesterdayFillProfileLoading: false,\n yesterdayTotalAmount: 0,\n yesterdayTotalAmountLoading: false,\n todayTotalAmount: 0,\n todayTotalAmountLoading: false,\n todayConfirmedEmails: 0,\n todayConfirmedEmailsLoading: false,\n yesterdayConfirmedEmails: 0,\n };\n\n\n async componentDidMount() {\n await this.fetchInfo();\n }\n\n componentDidUpdate(prevProps) {\n if (this.props.choosedSiteId !== prevProps.choosedSiteId) {\n this.fetchInfo();\n }\n }\n\n fetchInfo = async () => {\n try {\n const {choosedSiteId} = this.props;\n this.setState({loading: true, todayPurchaseLoading: true, todayFillProfileLoading: true, yesterdayPurchaseLoading: true, yesterdayFillProfileLoading: true, yesterdayTotalAmountLoading: true, todayConfirmedEmailsLoading: true})\n\n //FILL PROFILE FIRST BLOCK\n const {data: yesterdayFillProfile} = await http.get('/reports/report4', {\n params: {\n SiteId: choosedSiteId,\n ActionType: 'FillProfile',\n Date: moment().subtract(1, 'days').format('YYYY-MM-DD'),\n }\n });\n this.setState({yesterdayFillProfile: yesterdayFillProfile.count, yesterdayFillProfileLoading: false});\n\n const {data: todayFillProfile} = await http.get('/reports/report4', {\n params: {\n SiteId: choosedSiteId,\n ActionType: 'FillProfile',\n Date: moment().format('YYYY-MM-DD'),\n }\n });\n this.setState({todayFillProfile: todayFillProfile.count, todayFillProfileLoading: false});\n \n // EMAIL CONFIRMED SECOND BLOCK\n const {data: todayConfirmedEmails} = await http.get('/reports/report4', {\n params: {\n SiteId: choosedSiteId,\n ActionType: 'emailconfirmed',\n Date: moment().format('YYYY-MM-DD'),\n }\n });\n const {data: yesterdayConfirmedEmails} = await http.get('/reports/report4', {\n params: {\n SiteId: choosedSiteId,\n ActionType: 'emailconfirmed',\n Date: moment().subtract(1, 'days').format('YYYY-MM-DD'),\n }\n });\n\n console.log('todayConfirmedEmails', todayConfirmedEmails, yesterdayConfirmedEmails);\n this.setState({todayConfirmedEmails: todayConfirmedEmails.count, yesterdayConfirmedEmails: yesterdayConfirmedEmails.count, todayConfirmedEmailsLoading: false})\n \n // PURCHASE THIRD BLOCK\n const {data: todayPurchase} = await http.get('/reports/report4', {\n params: {\n SiteId: choosedSiteId,\n ActionType: 'Purchase',\n Date: moment().format('YYYY-MM-DD'),\n }\n });\n this.setState({todayPurchase: todayPurchase.count, todayPurchaseLoading: false});\n \n const {data: yesterdayPurchase} = await http.get('/reports/report4', {\n params: {\n SiteId: choosedSiteId,\n ActionType: 'Purchase',\n Date: moment().subtract(1, 'days').format('YYYY-MM-DD'),\n }\n });\n this.setState({yesterdayPurchase: yesterdayPurchase.count, yesterdayPurchaseLoading: false});\n \n \n const [{ data: yesterdayTotal }, { data: todayTotal }] = await Promise.all(\n [\n http.get('/reports/report5', \n {\n params: {\n SiteId: choosedSiteId,\n Date: moment().subtract(1, 'days').format('YYYY-MM-DD'),\n }\n },\n \n ),\n http.get('/reports/report5', {\n params: {\n SiteId: choosedSiteId,\n Date: moment().format('YYYY-MM-DD'),\n }\n })\n ]\n );\n this.setState({yesterdayTotalAmount: yesterdayTotal.amount, todayTotalAmount: todayTotal.amount, yesterdayTotalAmountLoading: false });\n\n } catch (err) {\n }\n }\n render() {\n return (\n \n
\n \n \n \n \n \n \n \n \n \n \n
{this.state.todayFillProfile}
\n

Fill Profile

\n
\n
\n \n \n

\n Yesterday\n

\n
\n \n

{this.state.yesterdayFillProfile}

\n
\n
\n
\n
\n\n \n \n \n \n \n \n \n \n \n
{this.state.todayConfirmedEmails}
\n

Confirmed

\n
\n
\n \n \n

\n Yesterday\n

\n
\n \n

{this.state.yesterdayConfirmedEmails}

\n
\n
\n
\n
\n\n \n \n \n \n \n \n \n \n \n
{this.state.todayPurchase}
\n

Sales

\n
\n
\n \n \n

\n Yesterday\n

\n
\n \n

{this.state.yesterdayPurchase}

\n
\n
\n
\n
\n\n \n \n \n \n \n \n \n \n \n
{this.state.todayTotalAmount}
\n

Amount

\n
\n
\n \n \n

\n Yesterday\n

\n
\n \n

{this.state.yesterdayTotalAmount}

\n
\n
\n
\n
\n
\n
\n
\n )\n }\n}\n\nconst mapStateToProps = ({app}) => ({\n choosedSiteId: app.choosedSiteId,\n});\n\nexport default withSnackbar(connect(mapStateToProps, null)(Dashboard));","import { MDBBtn } from \"mdbreact\";\nimport React from \"react\";\nimport ReactExport from \"react-export-excel\";\n\nconst ExcelFile = ReactExport.ExcelFile;\nconst ExcelSheet = ReactExport.ExcelFile.ExcelSheet;\nconst ExcelColumn = ReactExport.ExcelFile.ExcelColumn;\n\nclass Download extends React.Component {\n render() {\n return (\n Download Excel}>\n \n \n \n \n \n );\n }\n}\n\nexport default Download;","import React from 'react';\nimport { MDBContainer } from 'mdbreact';\n\nimport Dashboard from './components/Dashboard';\n\nclass ReportPage extends React.Component {\n\n render() {\n return (\n \n \n \n );\n }\n}\n\nexport default ReportPage;","import React from 'react';\n\nimport { MDBCard, MDBCol, MDBRow, MDBCardBody, MDBSpinner, MDBDataTable } from 'mdbreact';\n\nimport http from '../../services/http/affiliates';\nimport { connect } from 'react-redux';\nimport { siteUrlsConfig } from '../../configs';\nimport Download from './Download';\n\n\nconst columns = [\n {\n label: 'ProfileId',\n field: 'profileId',\n width: 150,\n },\n {\n label: 'Conversions',\n field: 'conversions',\n width: 150,\n },\n];\n\nconst Table = ({choosedSiteId}) => {\n\n const [loading, setLoading] = React.useState(false);\n const [data, setData] = React.useState({\n columns: columns,\n rows: [],\n });\n\n React.useEffect(() => {\n getData();\n }, [choosedSiteId]);\n\n const getData = async () => {\n setLoading(true);\n const {data} = await http.get(`/api/${siteUrlsConfig[choosedSiteId]}/GetHighRollers/`);\n setData({\n columns: columns,\n rows: data,\n });\n setLoading(false);\n }\n\n return (\n <>\n \n \n\n \n \n \n \n \n\n \n \n {!loading ? : }\n \n \n \n \n )\n}\n\nconst mapStateToProps = ({app, auth}) => ({\n choosedSiteId: app.choosedSiteId,\n user: auth.user,\n});\n\nexport default connect(mapStateToProps, null)(Table);","import React from 'react';\nimport { MDBContainer} from 'mdbreact';\n\nimport Table from './Table';\n\nclass HighRollersPage extends React.Component {\n\n render() {\n return (\n \n \n \n );\n }\n}\n\nexport default HighRollersPage;","/* eslint-disable react-hooks/exhaustive-deps */\nimport React, { useEffect, useState } from \"react\";\n\nimport {\n MDBBtn,\n MDBCard,\n MDBCol,\n MDBInput,\n MDBRow,\n MDBCardBody,\n MDBTable,\n MDBSpinner,\n MDBCardText,\n} from \"mdbreact\";\n\nimport { connect } from \"react-redux\";\n\nimport { siteUrlsConfig } from \"../../configs\";\nimport http from \"../../services/http/affiliates\";\n\nconst AffSalesTable = ({ choosedSiteId }) => {\n const [inputValue, setInputValue] = useState(\"\");\n\n const [items, setItems] = useState([]);\n const [loading, setLoading] = useState(false);\n\n useEffect(() => {\n fetchData();\n }, []);\n\n const fetchData = async () => {\n setLoading(true);\n try {\n if (inputValue) {\n const { data } = await http.post(\n `/api/${siteUrlsConfig[choosedSiteId]}/AffiliateSalesByDate`,\n {\n param: inputValue,\n }\n );\n setItems(data);\n } else {\n setItems([]);\n }\n } catch (err) {}\n setLoading(false);\n };\n\n return (\n <>\n \n Aff sales\n \n \n setInputValue(e.target.value)}\n value={inputValue}\n />\n \n\n \n Show\n \n \n \n\n {items.length ? (\n \n \n {!loading ? (\n \n \n \n \n \n \n \n \n {items.map((row) => (\n <>\n \n \n \n \n \n ))}\n \n \n ) : (\n \n )}\n \n \n ) : null}\n \n );\n};\n\nconst mapStateToProps = ({ app, auth }) => ({\n choosedSiteId: app.choosedSiteId,\n user: auth.user,\n});\n\nexport default connect(mapStateToProps, null)(AffSalesTable);\n","import React from 'react';\nimport { MDBContainer} from 'mdbreact';\n\nimport Table from './Table';\n\nclass AffSalesPage extends React.Component {\n\n render() {\n return (\n \n
DayChats
{row.day}{row.chats}
\n \n );\n }\n}\n\nexport default AffSalesPage;","import styled from 'styled-components';\n\nexport const Container = styled.div`\n .table {\n margin-bottom: 0;\n }\n td {\n vertical-align: middle;\n }\n`;\n\n\nexport const Th = styled.th`\n cursor: pointer;\n position: relative;\n padding-right: 30px;\n ::after {\n right: 1em;\n font-family: \"Font Awesome\\ 5 Free\", sans-serif;\n font-size: 1rem;\n font-weight: 900;\n content: \"\\f0de\";\n position: absolute;\n bottom: .9em;\n display: ${({withSorting}) => withSorting ? 'block' : 'none'};\n opacity: ${({isSorting, direction}) => (isSorting && direction === 'desc') ? 1 : 0.4}\n }\n ::before {\n right: 16px;\n font-family: \"Font Awesome\\ 5 Free\", sans-serif;\n font-size: 1rem;\n font-weight: 900;\n content: \"\\f0dd\";\n position: absolute;\n bottom: .9em;\n display: ${({withSorting}) => withSorting ? 'block' : 'none'};\n opacity: ${({isSorting, direction}) => (isSorting && direction === 'asc') ? 1 : 0.4}\n }\n`;","/* eslint-disable react-hooks/exhaustive-deps */\nimport React, {\n Fragment,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from \"react\";\nimport {\n MDBInput,\n MDBSpinner,\n MDBCardBody,\n MDBBtn,\n MDBBadge,\n MDBCard,\n MDBRow,\n MDBCol,\n MDBSelect,\n MDBSelectInput,\n MDBSelectOptions,\n MDBSelectOption,\n MDBTable,\n MDBTableHead,\n MDBTableBody,\n} from \"mdbreact\";\nimport { useSelector } from \"react-redux\";\n\nimport * as S from \"./styled\";\nimport http from \"../../../services/http\";\n\nconst dropdownOptions = [\n \"Utm_source\",\n \"Utm_campaign\",\n \"Utm_term\",\n \"Utm_content\",\n \"Linkid\",\n \"Web_id\",\n \"Sub_id\",\n];\n\nconst dropdownOptions2 = [\n \"None\",\n \"Utm_source\",\n \"Utm_campaign\",\n \"Utm_term\",\n \"Utm_content\",\n \"Linkid\",\n \"Web_id\",\n \"Sub_id\",\n];\n\nconst OptimizationTable = () => {\n const choosedSiteId = useSelector((state) => state.app.choosedSiteId);\n\n const loadData = async () => {\n setLoading(true);\n try {\n const response = await http.get(\"/reports/report12\", {\n params: {\n SiteId: choosedSiteId,\n Name: form.Name,\n Value: form.Value,\n Param1: form.Param1,\n Param2: isSecondParamClear ? \"\" : form.Param2,\n Start: form.Start,\n End: form.End,\n },\n });\n if (response?.data) {\n setData(response.data);\n }\n } catch (err) {}\n setLoading(false);\n };\n const [data, setData] = useState([]);\n const [loading, setLoading] = useState(false);\n const [sorting, setSorting] = useState({\n field: \"\",\n direction: \"asc\",\n });\n\n const [form, setForm] = useState({\n Name: \"\",\n Value: \"\",\n Param1: \"\",\n Param2: \"None\",\n Cost: \"\",\n Start: \"\",\n End: \"\",\n });\n\n const headers = useMemo(\n () => [\n {\n label: form.Param1,\n id: \"param1\",\n },\n {\n label: form.Param2,\n id: \"param2\",\n },\n {\n label: \"Fill Profiles\",\n id: \"fillProfiles\",\n },\n {\n label: \"Confirmed\",\n id: \"emailConfirmed\",\n },\n {\n label: \"Purchases\",\n id: \"purchases\",\n },\n {\n label: \"Money (₽)\",\n id: \"moneyAmount\",\n },\n {\n label: \"ROI\",\n id: \"roi\",\n },\n ],\n [form.Param1, form.Param2]\n );\n\n const onFormChange = (value, type) => {\n if (type === \"Param2\" || type === \"Param1\") {\n setData([]);\n }\n setForm({\n ...form,\n [type]: value,\n });\n };\n\n const isSecondParamClear = form.Param2 === \"None\" || !form.Param2;\n\n const onSortClick = (header) => {\n if (header === \"ID\") return;\n setSorting({\n field: header,\n direction: sorting.direction === \"asc\" ? \"desc\" : \"asc\",\n });\n };\n\n const isString = (value) => typeof value === \"string\";\n\n const sortedData = () => {\n if (!data.length) {\n return [];\n }\n\n const field = sorting.field;\n\n let sorted = [];\n if (field === \"roi\") {\n sorted = data.sort((a, b) => {\n const aValue = calculateRoi(a.fillProfiles, a.moneyAmount);\n const bValue = calculateRoi(b.fillProfiles, b.moneyAmount);\n\n return sorting.direction === \"asc\"\n ? aValue < bValue\n ? -1\n : 1\n : aValue > bValue\n ? -1\n : 1;\n });\n return sorted;\n }\n\n sorted = data.sort((a, b) => {\n const aValue = isString(a[field])\n ? a[field].includes(\"$\")\n ? Number(a[field].replace(/\\$/g, \"\"))\n : a[field]\n : a[field];\n const bValue = isString(b[field])\n ? b[field].includes(\"$\")\n ? Number(b[field].replace(/\\$/g, \"\"))\n : b[field]\n : b[field];\n\n return sorting.direction === \"asc\"\n ? aValue < bValue\n ? -1\n : 1\n : aValue > bValue\n ? -1\n : 1;\n });\n return sorted;\n };\n\n const calculateRoi = useCallback(\n (fillProfiles, moneyAmount) => {\n const counted = moneyAmount / (fillProfiles * form.Cost);\n return isNaN(counted) ? -1 : counted;\n },\n [form.Cost]\n );\n\n const filteredBySearch = (items) => (false ? [] : items);\n\n const isFormEmpty =\n !form.Name || !form.Value || !form.Param1 || !form.Start || !form.End;\n\n useEffect(() => {\n if (!isFormEmpty) {\n loadData();\n }\n }, [choosedSiteId]);\n\n return (\n <>\n \n \n \n \n Filter\n \n \n \n onFormChange(val, \"Name\")}\n className=\"colorful-select dropdown-primary mx-2\"\n >\n \n \n {dropdownOptions.map((param) => (\n \n {param}\n \n ))}\n \n \n \n \n onFormChange(e.target.value, \"Value\")}\n />\n \n \n \n \n \n Break Down\n \n \n \n onFormChange(val, \"Param1\")}\n className=\"colorful-select dropdown-primary mx-2\"\n >\n \n \n {dropdownOptions.map((param) => (\n \n {param}\n \n ))}\n \n \n \n \n onFormChange(val, \"Param2\")}\n className=\"colorful-select dropdown-primary mx-2\"\n >\n \n \n {dropdownOptions2.map((param) => (\n \n {param}\n \n ))}\n \n \n \n \n \n \n \n ROI (₽)\n \n \n onFormChange(e.target.value, \"Cost\")}\n />\n \n \n \n \n \n onFormChange(e.target.value, \"Start\")}\n />\n \n\n \n onFormChange(e.target.value, \"End\")}\n />\n \n\n \n \n Show\n \n \n \n \n {loading && }\n {data.length && !loading ? (\n \n \n \n \n \n {headers\n .filter((h) => h.label && h.label !== \"None\")\n .map((h) => (\n onSortClick(h.id)}\n >\n {h.label}\n \n ))}\n \n \n \n {filteredBySearch(sortedData()).map((row, index) => (\n \n \n {!isSecondParamClear && }\n \n \n \n \n {!form.Cost ? (\n \n ) : (\n \n \n {calculateRoi(\n row.fillProfiles,\n row.moneyAmount\n ).toFixed(1)}\n \n \n )}\n \n ))}\n \n \n \n \n ) : null}\n \n );\n};\n\nexport default OptimizationTable;\n","import React from 'react';\nimport { MDBContainer } from 'mdbreact';\n\nimport OptimizationTable from './components/OptimizationTable';\n\n\nclass OptimizationPage extends React.Component {\n\n render() {\n return (\n \n \n \n );\n }\n}\n\nexport default OptimizationPage;","import styled from 'styled-components';\n\nexport const Container = styled.div`\n .table {\n margin-bottom: 0;\n }\n td {\n vertical-align: middle;\n & a {\n color: #007bff;\n :hover {\n opacity: 0.5;\n }\n }\n }\n`;\n\n\nexport const Th = styled.th`\n position: relative;\n padding-right: 30px;\n ::after {\n right: 1em;\n font-family: \"Font Awesome\\ 5 Free\", sans-serif;\n font-size: 1rem;\n font-weight: 900;\n content: \"\\f0de\";\n position: absolute;\n bottom: .9em;\n display: ${({withSorting}) => withSorting ? 'block' : 'none'};\n opacity: ${({isSorting, direction}) => (isSorting && direction === 'desc') ? 1 : 0.4}\n }\n ::before {\n right: 16px;\n font-family: \"Font Awesome\\ 5 Free\", sans-serif;\n font-size: 1rem;\n font-weight: 900;\n content: \"\\f0dd\";\n position: absolute;\n bottom: .9em;\n display: ${({withSorting}) => withSorting ? 'block' : 'none'};\n opacity: ${({isSorting, direction}) => (isSorting && direction === 'asc') ? 1 : 0.4}\n }\n`;","import React, { useState } from 'react';\n\nimport { MDBCard, MDBCol, MDBRow, MDBCardBody, MDBSpinner, MDBDataTable, MDBInput, MDBBtn, MDBTable, MDBTableHead, MDBTableBody } from 'mdbreact';\n\nimport moment from 'moment';\nimport http from '../../../../services/http/affiliates';\nimport { connect } from 'react-redux';\nimport { siteUrlsConfig, sitesConfig } from '../../../../configs';\n\nimport * as S from './styled';\n\nconst headers = [\n 'Link',\n 'Uses',\n 'Buys',\n 'Balance',\n 'Date',\n];\n\nconst PaymentsTable = ({choosedSiteId}) => {\n\n const [loading, setLoading] = React.useState(false);\n const [loaded, setLoaded] = React.useState(false);\n const [noDataFound, setNoDataFound] = React.useState(false);\n const [data, setData] = useState([]);\n const [sorting, setSorting] = React.useState({\n field: 'date',\n direction: 'asc',\n });\n const [maleId, setMaleId] = useState('');\n\n const getData = async () => {\n setNoDataFound(false);\n setLoading(true);\n const {data} = await http.get(`/api/${siteUrlsConfig[choosedSiteId]}/GetMalePayments/${maleId}`);\n if (!data.length) {\n setNoDataFound(true);\n }\n setData(data)\n setLoading(false);\n setLoaded(true);\n }\n\n const isString = value => typeof value === 'string';\n\n const sortedData = () => {\n if (!data.length) {\n return [];\n }\n\n const field = sorting.field.toLocaleLowerCase() !== 'date' ? 'chats' : 'date';\n\n return data.sort((a, b) => {\n\n const aValue = isString(a[field])\n ? a[field].includes('$')\n ? Number(a[field].replace(/\\$/g, ''))\n : a[field]\n : a[field];\n const bValue = isString(b[field])\n ? b[field].includes('$')\n ? Number(b[field].replace(/\\$/g, ''))\n : b[field]\n : b[field];\n\n return sorting.direction === 'asc' ? (aValue < bValue ? -1 : 1) : aValue > bValue ? -1 : 1;\n });\n }\n\n const onSortClick = (header) => {\n if (header === 'ID') return;\n setSorting({\n field: header,\n direction: sorting.direction === 'asc' ? 'desc' : 'asc',\n });\n };\n\n const renderMainTable = () => {\n let finallArr = [];\n \n sortedData().map(i => ({...i, balance: 0})).reduce((previousValue, currentValue, currentIndex) => {\n if (currentIndex === 0) {\n currentValue.balance = currentValue.chats;\n } else {\n currentValue.balance = previousValue?.balance + currentValue.chats;\n }\n finallArr.push(currentValue);\n return currentValue;\n }, 0);\n \n if (loading) {\n return (\n \n )\n }\n if (!loaded) {\n return null\n }\n if (loaded && noDataFound) {\n return No Data Found\n }\n return (\n \n \n \n {headers.map(h => (\n onSortClick(h)}\n isSorting={sorting.field === h}>\n {h}\n \n ))}\n \n \n \n {finallArr.map(row => (\n \n \n \n \n \n \n \n ))}\n \n \n )\n }\n return (\n \n \n \n\n \n setMaleId(e.target.value)} label=\"Enter Male Id or Email\" />\n Show\n \n \n \n\n \n \n {renderMainTable()}\n \n \n \n \n )\n}\n\nconst mapStateToProps = ({app}) => ({\n choosedSiteId: app.choosedSiteId,\n});\n\nexport default connect(mapStateToProps, null)(PaymentsTable);","import React from 'react';\nimport { MDBContainer } from 'mdbreact';\n\nimport PaymentsTable from './components/PaymentsTable';\n\n\nclass PaymentsPage extends React.Component {\n\n render() {\n return (\n \n \n \n );\n }\n}\n\nexport default PaymentsPage;","\nexport const groupParams = [\n {\n label: 'Day',\n id: 'day',\n group: 'day',\n main2: 'Day',\n },\n {\n label: 'Month',\n id: 'month',\n group: 'month',\n main2: 'Month',\n },\n {\n label: 'LinkId',\n id: 'linkid',\n group: 'vp',\n main2: 'LinkId',\n },\n {\n label: 'Web_Id',\n id: 'web_id',\n group: 'vp',\n main2: 'WebId',\n },\n {\n label: 'Sub_Id',\n id: 'sub_id',\n group: 'vp',\n main2: 'SubId',\n },\n {\n label: 'Utm_Source',\n id: 'utm_source',\n group: 'vp',\n main2: 'UtmSource',\n },\n {\n label: 'Utm_Campaign',\n id: 'utm_campaign',\n group: 'vp',\n main2: 'UtmCampaign',\n },\n {\n label: 'Utm_Term',\n id: 'utm_term',\n group: 'vp',\n main2: 'UtmTerm',\n },\n {\n label: 'Country',\n id: 'ipinfo_country',\n group: 'up',\n main2: 'Country',\n },\n {\n label: 'Age',\n id: 'age',\n group: 'up',\n main2: 'Age',\n },\n {\n label: 'User Role',\n id: 'userrole',\n group: 'up'\n },\n {\n label: 'OS',\n id: 'os',\n group: 'up',\n main2: 'os',\n },\n {\n label: 'Partner',\n id: 'partner',\n group: 'vp',\n main2: 'Partner',\n },\n {\n label: 'Landing',\n id: 'path',\n group: 'vp',\n main2: 'Path',\n },\n {\n label: 'Utm_Content',\n id: 'utm_content',\n group: 'vp',\n main2: 'UtmContent',\n },\n]\n\nexport const graphOptionsTypes = [\n {\n id: 'fillProfiles',\n label: 'Fill Profiles',\n },\n {\n id: 'emailConfirmed',\n label: 'Confirmed',\n },\n {\n id: 'sales',\n label: 'Sales',\n },\n {\n id: 'salesQuantity',\n label: 'Coins',\n },\n {\n id: 'moneyAmount',\n label: 'Money',\n },\n]\n\nexport const TABLE_HEADERS = [\n {\n header: 'FP➝SU',\n id: 'fpSu',\n },\n {\n header: 'FP➝4S',\n id: 'fp4s',\n siteIds: [37, 69],\n },\n {\n header: 'FP➝FTD',\n id: 'fpFtd',\n },\n {\n header: 'Registrations',\n id: 'registrations',\n },\n {\n header: 'FillProfiles',\n id: 'fillProfiles'\n },\n {\n header: 'Confirmed',\n id: 'emailConfirmed',\n },\n {\n header: 'SignUps',\n id: 'signUps'\n },\n {\n header: 'Survey',\n id: 'survey'\n },\n // {\n // header: 'SignUp',\n // id: 'signUps'\n // },\n {\n header: 'SMS4',\n id: 'sms4Plus35',\n siteIds: [37, 69],\n },\n {\n header: 'Online (min/user) ',\n id: 'online',\n },\n {\n header: 'Sales',\n id: 'sales'\n },\n {\n header: 'FTD',\n id: 'ftd'\n },\n {\n header: 'Coins',\n id: 'coins'\n },\n {\n header: 'Money',\n id: 'money'\n },\n]\n\nexport const selectOptions = [\n {\n label: 'Specialist',\n value: 'Specialist'\n },\n {\n label: 'Client',\n value: 'Client'\n }\n]","export const LINE_GRAPH_OPTIONS = {\n fill: true,\n lineTension: 0.3,\n borderCapStyle: \"butt\",\n borderDash: [],\n borderDashOffset: 0.0,\n borderJoinStyle: \"miter\",\n pointBorderColor: \"#1266f1\",\n pointBackgroundColor: \"#1266f1\",\n pointBorderWidth: 5,\n pointHoverRadius: 5,\n pointHoverBackgroundColor: \"rgb(0, 0, 0)\",\n pointHoverBorderColor: \"rgba(220, 220, 220,1)\",\n pointHoverBorderWidth: 6,\n pointRadius: 2,\n pointHitRadius: 10,\n};\n\nexport const options = { \n responsive: true,\n scales: {\n xAxes: [\n {\n gridLines: {\n borderDash: [3, 2],\n color: 'rgba(0, 0, 0, 0.0)'\n },\n display: true,\n }\n ],\n yAxes: [\n {\n gridLines: {\n borderDash: [3, 2],\n },\n ticks: {\n callback: (val) => val === 0 ? 0 : `${val / 1000}K`,\n beginAtZero: true\n }\n }\n ]\n }\n};","import styled from 'styled-components';\n\nexport const Container = styled.div`\n .nav-tabs {\n border-width: 0;\n }\n .nav-link {\n border-color: #1266f1;\n border: solid transparent;\n border-width: 0 0 2px;\n border-radius: 0;\n text-transform: uppercase;\n line-height: 1;\n font-weight: 500;\n font-size: 12px;\n padding: 17px 29px 16px;\n &.active {\n border-bottom: 2px solid #1266f1;\n color: #1266f1;\n }\n }\n`;\n\nexport const Th = styled.th`\n cursor: pointer;\n position: relative;\n padding-right: 30px;\n ::after {\n right: 0em;\n font-family: \"Font Awesome\\ 5 Free\", sans-serif;\n font-size: 1rem;\n font-weight: 900;\n content: \"\\f0de\";\n position: absolute;\n bottom: .9em;\n display: ${({withSorting}) => withSorting ? 'block' : 'none'};\n opacity: ${({isSorting, direction}) => (isSorting && direction === 'desc') ? 1 : 0.4}\n }\n ::before {\n right: 0px;\n font-family: \"Font Awesome\\ 5 Free\", sans-serif;\n font-size: 1rem;\n font-weight: 900;\n content: \"\\f0dd\";\n position: absolute;\n bottom: .9em;\n display: ${({withSorting}) => withSorting ? 'block' : 'none'};\n opacity: ${({isSorting, direction}) => (isSorting && direction === 'asc') ? 1 : 0.4}\n }\n`;\n\nexport const Checkbox = styled.div`\n width: 20px;\n height: 20px;\n border-radius: 5px;\n border: 2px solid #4285f4;\n margin-right: 5px;\n background-color: ${({ checked }) => checked ? '#4285f4' : 'transparent'};\n cursor: pointer;\n`;\n","import Storage from './index';\n\nclass CacheStorage extends Storage {\n constructor() {\n super('Cache');\n }\n}\n\nexport default new CacheStorage();\n","import React, { useState } from \"react\";\nimport {\n MDBBtn,\n MDBModal,\n MDBModalHeader,\n MDBModalFooter,\n MDBModalBody,\n MDBInput,\n} from \"mdbreact\";\nimport { TABLE_HEADERS, groupParams } from \"./configs\";\nimport { useSelector } from \"react-redux\";\n\nconst filters = [\n {\n label: \"Date\",\n id: \"date\",\n },\n {\n label: \"LinkId\",\n id: \"linkid\",\n },\n {\n label: \"WebId\",\n id: \"web_id\",\n },\n {\n label: \"SubId\",\n id: \"sub_id\",\n },\n {\n label: \"Age\",\n id: \"age\",\n },\n {\n label: \"Country\",\n id: \"ipinfo_country\",\n },\n {\n label: \"Utm_Source\",\n id: \"utm_source\",\n },\n {\n label: \"Utm_Term\",\n id: \"utm_term\",\n },\n {\n label: \"Utm_Campaign\",\n id: \"utm_campaign\",\n },\n {\n label: \"OS\",\n id: \"os\",\n },\n {\n label: \"Landing\",\n id: \"path\",\n },\n {\n label: \"Partner\",\n id: \"partner\",\n },\n {\n label: \"Utm_Content\",\n id: \"utm_content\",\n },\n];\n\nfunction SettingRow({ group, setting, onChangeSetting, isEnabled }) {\n return (\n
\n
{setting.label}
\n onChangeSetting(group, setting.id)}\n checked={isEnabled}\n type=\"checkbox\"\n id={`checkbox-${group}-${setting.id}`}\n />\n
\n );\n}\n\nconst settingsInitial = {\n groups: [...groupParams],\n columns: [...TABLE_HEADERS.map((h) => ({ ...h, label: h.header }))],\n filters,\n};\n\nexport default function SettingsModal({\n visible,\n onClose,\n settingsConfig,\n onChangeSetting,\n toggleAllSelectSettings,\n}) {\n const choosedSiteId = useSelector((state) => state.app.choosedSiteId);\n\n const settings = {\n ...settingsInitial,\n columns: [...settingsInitial.columns.filter(h => {\n if (h.id === \"fp4s\") {\n return choosedSiteId === 37 || choosedSiteId === 69\n }\n if (h.id === \"sms4Plus35\") {\n return choosedSiteId === 37 || choosedSiteId === 69\n }\n return true;\n })]\n }\n const [isMobile] = useState(true);\n\n const [selectedMobileTab, setSelectedMobileTab] = useState(\n Object.keys(settings)[0]\n );\n\n const isSelectedAll =\n Object.values(settings).reduce(\n (sum, currentArray) => sum + currentArray.length,\n 0\n ) ===\n Object.values(settingsConfig).reduce(\n (sum, currentArray) => sum + currentArray.length,\n 0\n );\n\n const onToggleAllSelectSettings = () => {\n if (!isSelectedAll) {\n const newConfig = {\n groups: [...settings.groups.map((i) => i.id)],\n columns: [...settings.columns.map((i) => i.id)],\n filters: [...settings.filters.map((i) => i.id)],\n };\n toggleAllSelectSettings(newConfig);\n } else {\n const newConfig = {\n groups: [],\n columns: [],\n filters: [],\n };\n toggleAllSelectSettings(newConfig);\n }\n };\n\n const isGroupSelected = (group) => !settingsConfig[group].length;\n\n const onToggleGroupSetting = (group) => {\n const isSelected = isGroupSelected(group);\n if (isSelected) {\n const newConfig = {\n ...settingsConfig,\n [group]: [...settings[group].map((i) => i.id)],\n };\n toggleAllSelectSettings(newConfig);\n } else {\n const newConfig = {\n ...settingsConfig,\n [group]: [],\n };\n toggleAllSelectSettings(newConfig);\n }\n };\n return (\n \n Settings\n \n
\n {!isSelectedAll ? \"Unselect all\" : \"Select all\"}\n \n
\n
\n {Object.keys(settings).map((key) => (\n <>\n
\n
\n
\n {!isMobile ? (\n key.toUpperCase()\n ) : (\n setSelectedMobileTab(key)}\n style={{\n cursor: 'pointer',\n borderBottom:\n selectedMobileTab === key\n ? \"2px solid blue\"\n : \"none\",\n }}\n >\n {key.toUpperCase()}\n
\n )}\n
\n onToggleGroupSetting(key)}\n checked={isGroupSelected(key)}\n type=\"checkbox\"\n id={`checkbox-${key}-group`}\n />\n
\n
\n \n ))}\n \n {\n settings[selectedMobileTab].map((setting) => (\n \n ))\n }\n
\n
\n );\n}\n","/* eslint-disable react-hooks/exhaustive-deps */\nimport React, { useEffect, useMemo, useState } from \"react\";\nimport qs from \"querystring\";\nimport { useSnackbar } from \"react-simple-snackbar\";\nimport {\n MDBCard,\n MDBRow,\n MDBCol,\n MDBInput,\n MDBCardBody,\n MDBBtn,\n MDBTable,\n MDBSpinner,\n MDBIcon,\n} from \"mdbreact\";\nimport { MDBTabs, MDBTabsItem, MDBTabsLink } from \"mdb-react-ui-kit\";\nimport Select from \"react-select\";\nimport { useSelector } from \"react-redux\";\nimport { Line, Bar } from \"react-chartjs-2\";\nimport {\n groupParams as tabs,\n graphOptionsTypes,\n TABLE_HEADERS,\n selectOptions,\n} from \"./configs\";\nimport { LINE_GRAPH_OPTIONS, options } from \"./graphOptions\";\nimport _ from \"lodash\";\nimport moment from \"moment\";\nimport { CSVLink, CSVDownload } from \"react-csv\";\n\nimport CacheStorage from \"../../../../services/storage/cache\";\n\nimport * as S from \"./styled\";\n\nimport http from \"../../../../services/http\";\nimport { failureOptions } from \"../../../../configs\";\nimport { useLocation } from \"react-router-dom\";\nimport DateInput from \"../../../../components/DateInput\";\nimport useDateScrollHeader from \"../../../../hooks/useDateScrollHeader\";\nimport SettingsModal from \"./SettingsModal\";\n\nconst dataLine = {\n labels: [],\n datasets: [\n {\n ...LINE_GRAPH_OPTIONS,\n label: \"Fill profiles\",\n backgroundColor: \"rgba(0, 0, 0, 0)\",\n borderColor: \"#1266f1\",\n data: [],\n },\n ],\n};\n\nconst dataBar = {\n labels: [],\n datasets: [\n {\n ...LINE_GRAPH_OPTIONS,\n label: \"Fill profiles\",\n backgroundColor: \"#1266f1\",\n borderColor: \"#1266f1\",\n data: [],\n },\n ],\n};\n\nconst ageOptions = [\n {\n value: \"r2\",\n label: \"35+\",\n },\n {\n value: \"r1\",\n label: \"34-\",\n },\n];\n\nconst osOptions = [\n { label: \"Android\", value: \"Android\" },\n { label: \"iOS\", value: \"iOS\" },\n { label: \"Linux\", value: \"Linux\" },\n { label: \"Windows\", value: \"Windows\" },\n { label: \"Other\", value: \"Other\" },\n];\n\nconst Statistics = () => {\n const location = useLocation();\n\n const initialSettingsConfig = localStorage.getItem('settings-config') ? JSON.parse(localStorage.getItem('settings-config')) : {\n columns: [\n 'emailConfirmed',\n 'fpSu',\n 'fp4s',\n 'fpFtd',\n 'online',\n ],\n groups: [\n 'utm_content'\n ],\n filters: [\n 'utm_content'\n ],\n }\n\n const [settingsConfig, setSettingsConfig] = useState(initialSettingsConfig);\n\n const [partnerOptions, setPartnerOptions] = useState([]);\n const [isSettingsVisible, setSettingsVisible] = useState(false);\n\n const [isHided, setIsHided] = useState(true);\n\n const queryParams = new URLSearchParams(location.search);\n const choosedSiteId = useSelector((state) => state.app.choosedSiteId);\n\n const groupParams = useMemo(() => {\n // if (choosedSiteId == 15) {\n // return [...tabs].filter(t => t.id !== 'web_id' && t.id !== 'linkid' && t.id !== 'sub_id')\n // }\n return tabs.filter((t) => t.id !== \"userrole\");\n }, [choosedSiteId]);\n\n const [openFailureSnackbar] = useSnackbar(failureOptions);\n\n useEffect(async () => {\n const { data } = await http.get('/reports/main_partners');\n const formatted = data.map(item => ({ value: item.value, label: item.text }));\n setPartnerOptions(formatted);\n }, []);\n\n\n const [sorting, setSorting] = React.useState({\n field: \"grouping\",\n direction: \"desc\",\n });\n\n const [isToggled] = useState(true);\n\n const [isEmpty, setEmpty] = useState(true);\n const [filterForm, setFilterForm] = useState({\n age: \"\",\n day: \"\",\n ipinfo_country: \"\",\n linkid:\n queryParams.get(\"filterId\") === \"linkid\"\n ? queryParams.get(\"grouping\")\n : queryParams.get(\"linkid\"),\n month: \"\",\n sub_id: \"\",\n userrole: \"\",\n utm_campaign:\n queryParams.get(\"filterId\") === \"utm_campaign\"\n ? queryParams.get(\"grouping\")\n : \"\",\n utm_source:\n queryParams.get(\"filterId\") === \"utm_source\"\n ? queryParams.get(\"grouping\")\n : \"\",\n web_id:\n queryParams.get(\"filterId\") === \"web_id\"\n ? queryParams.get(\"grouping\")\n : \"\",\n });\n\n const [dateForm, setDateForm] = useState({\n from: queryParams.get(\"fromDate\")\n ? queryParams.get(\"fromDate\")\n : moment().startOf(\"month\").format(\"YYYY-MM-DD\"),\n to: queryParams.get(\"toDate\")\n ? queryParams.get(\"toDate\")\n : moment().format(\"YYYY-MM-DD\"),\n });\n\n const [data, setData] = useState([]);\n const [activeGroupParam, setActiveGroupParam] = useState(\n queryParams.get(\"groupParam\") || \"day\"\n );\n const [loading, setLoading] = useState(false);\n\n const [selectedChartType, setSelectedChartType] = useState(\"fillProfiles\");\n\n useEffect(() => {\n if (activeGroupParam === \"day\" || activeGroupParam === \"month\") {\n setSorting({\n ...sorting,\n direction: \"desc\",\n });\n } else {\n setSorting({\n ...sorting,\n direction: \"asc\",\n });\n }\n }, [activeGroupParam]);\n\n useEffect(() => {\n const groupParam = queryParams.get(\"groupParam\");\n const filterId = queryParams.get(\"filterId\");\n const grouping = queryParams.get(\"grouping\");\n const fromDate = queryParams.get(\"fromDate\");\n const toDate = queryParams.get(\"toDate\");\n\n if (fromDate && toDate) {\n setDateForm({\n to: toDate,\n from: fromDate,\n });\n }\n\n if (groupParam) {\n setActiveGroupParam(groupParam);\n }\n if (choosedSiteId !== 15) {\n setFilterForm({\n ...filterForm,\n userrole: \"\",\n });\n }\n if (filterId && grouping) {\n setFilterForm({\n ...filterForm,\n [filterId]: grouping,\n });\n }\n }, [location.search, choosedSiteId]);\n\n const countSum = (field) => {\n return _.sumBy(data, field);\n };\n\n const onSortClick = (header) => {\n if (header === \"ID\") return;\n setSorting({\n field: header,\n direction: sorting.direction === \"asc\" ? \"desc\" : \"asc\",\n });\n };\n\n const isString = (value) => typeof value === \"string\";\n\n const sortByDate = (data, isReverse = true) => {\n if (!data.length) {\n return [];\n }\n const field = \"grouping\";\n return data.sort((a, b) => {\n const aValue = isString(a[field])\n ? a[field].includes(\"$\")\n ? Number(a[field].replace(/\\$/g, \"\"))\n : a[field]\n : a[field];\n const bValue = isString(b[field])\n ? b[field].includes(\"$\")\n ? Number(b[field].replace(/\\$/g, \"\"))\n : b[field]\n : b[field];\n\n return !isReverse ? (aValue > bValue ? -1 : 1) : aValue < bValue ? -1 : 1;\n });\n };\n\n console.log('activeGroupParam', activeGroupParam)\n const sortedData = (data) => {\n if (!data.length) {\n return [];\n }\n\n const field = sorting.field;\n\n return data.sort((a, b) => {\n if (activeGroupParam === \"month\") {\n const aValue = Number(moment(a[field], \"YYYY-M\").format(\"M\"));\n const bValue = Number(moment(b[field], \"YYYY-M\").format(\"M\"));\n return sorting.direction === \"asc\"\n ? aValue < bValue\n ? -1\n : 1\n : aValue > bValue\n ? -1\n : 1;\n }\n if (field === \"online\") {\n const aValue = Math.floor(a.online / a.fillProfiles);\n const bValue = Math.floor(b.online / b.fillProfiles);\n return sorting.direction === \"asc\"\n ? aValue < bValue\n ? -1\n : 1\n : aValue > bValue\n ? -1\n : 1;\n }\n const aValue = isString(a[field])\n ? a[field].includes(\"$\")\n ? Number(a[field].replace(/\\$/g, \"\"))\n : a[field].toLowerCase()\n : a[field];\n const bValue = isString(b[field])\n ? b[field].includes(\"$\")\n ? Number(b[field].replace(/\\$/g, \"\"))\n : b[field].toLowerCase()\n : b[field];\n\n return sorting.direction === \"asc\"\n ? aValue < bValue\n ? -1\n : 1\n : aValue > bValue\n ? -1\n : 1;\n });\n };\n\n const urlString = useMemo(() => {\n let url = isToggled ? \"/reports/main2?\" : \"/reports/main?\";\n url += `SiteId=${choosedSiteId}`;\n url += `&StartDate=${dateForm.from}&EndDate=${dateForm.to}`;\n if (isToggled) {\n url += `&Grouping=${tabs.find((i) => i.id === activeGroupParam).main2}`;\n } else {\n url += `&grouping[${\n tabs.find((i) => i.id === activeGroupParam).group\n }]=${activeGroupParam}`;\n }\n Object.keys(filterForm).forEach((key) => {\n if (!isToggled) {\n if (filterForm[key] && key !== \"userrole\") {\n url += `&filter[${tabs.find((i) => i.id === key).group}:${key}]=${\n filterForm[key]\n }`;\n }\n if (\n key === \"userrole\" &&\n filterForm.userrole.length !== 2 &&\n filterForm.userrole.length !== 0\n ) {\n url += `&filter[up:userrole]=${filterForm.userrole[0].value}`;\n }\n } else {\n if (filterForm[key] && key !== \"userrole\") {\n url += `&${tabs.find((i) => i.id === key).main2}=${encodeURIComponent(filterForm[key])}`;\n }\n if (\n key === \"userrole\" &&\n filterForm.userrole.length !== 2 &&\n filterForm.userrole.length !== 0\n ) {\n url += `&filter[up:userrole]=${filterForm.userrole[0].value}`;\n }\n }\n });\n return url;\n }, [choosedSiteId, filterForm, activeGroupParam, dateForm, isToggled]);\n\n const formatDateMonth = (item, withoutDayFormat = false) => {\n if (activeGroupParam === \"day\" && !withoutDayFormat) {\n return moment(item.grouping, \"YYYY-MM-DD\").format(\"DD.MM\");\n }\n if (activeGroupParam === \"month\") {\n return moment(item.grouping, \"YYYY-M\").format(\"MM.YY\");\n }\n return item.grouping;\n };\n\n const lineChartData = useMemo(\n () => ({\n ...dataLine,\n labels: data.map((i) => formatDateMonth(i)),\n datasets: [\n {\n ...dataLine.datasets[0],\n data: data.map((i) => i[selectedChartType]),\n label: selectedChartType,\n },\n ],\n }),\n [selectedChartType, data]\n );\n\n const barChartData = useMemo(\n () => ({\n ...dataBar,\n labels: data.map((i) => i.grouping),\n datasets: [\n {\n ...dataBar.datasets[0],\n data: data.map((i) => i[selectedChartType]),\n label: selectedChartType,\n },\n ],\n }),\n [selectedChartType, data]\n );\n\n const loadData = async () => {\n setEmpty(false);\n setLoading(true);\n try {\n const { data: response } = await http.get(`${urlString}`);\n if (activeGroupParam === \"day\" || activeGroupParam === \"month\") {\n setData(sortByDate(response));\n } else {\n setData(response);\n }\n } catch (err) {\n openFailureSnackbar(\"Something went wrong :(\");\n setEmpty(true);\n }\n setLoading(false);\n };\n\n useEffect(() => {\n loadData();\n }, []);\n\n useDateScrollHeader(\n {\n date: `${moment(dateForm.from).format(\"DD-MM-YYYY\")} - ${moment(\n dateForm.to\n ).format(\"DD-MM-YYYY\")}`,\n },\n [dateForm]\n );\n\n const renderSelect = (label, id) => (\n \n ({ ...s, marginTop: 25 }) }}\n placeholder={label}\n options={selectOptions}\n isMulti\n onChange={(val) =>\n setFilterForm({\n ...filterForm,\n [id]: val,\n })\n }\n />\n \n );\n\n const renderDropdown = (label, id, options) => {\n const filtersConfig = settingsConfig.filters;\n\n if (filtersConfig.includes(id)) return null;\n return (\n \n ({ ...s, marginTop: 25 }) }}\n placeholder={label}\n options={options}\n isClearable\n onChange={(val) =>\n setFilterForm({\n ...filterForm,\n [id]: val?.value || \"\",\n })\n }\n />\n \n );\n };\n\n const renderInput = (label, id) => {\n const filtersConfig = settingsConfig.filters;\n\n if (filtersConfig.includes(id)) return null;\n return (\n \n \n setFilterForm({\n ...filterForm,\n [id]: e.target.value,\n })\n }\n />\n \n );\n };\n\n const generateCsv = (data) => {\n const tableConfig = settingsConfig.columns;\n const results = [];\n data.forEach((i) => {\n results.push([\n i.grouping,\n !tableConfig.includes(\"fpSu\") ? `${Math.round((i.signUps / i.fillProfiles) * 100)}%` : undefined,\n (choosedSiteId === 37 || choosedSiteId === 69) && !tableConfig.includes(\"fp4s\") ? `${Math.round((i.sms4Plus35 / i.fillProfiles) * 100)}%` : undefined,\n !tableConfig.includes(\"fpFtd\") ? `${Math.round((i.ftd / i.fillProfiles) * 100)}%` : undefined,\n !tableConfig.includes(\"registrations\") ? i.registrations : undefined,\n !tableConfig.includes(\"fillProfiles\") ? i.fillProfiles : undefined,\n !tableConfig.includes(\"emailConfirmed\") ? i.emailConfirmed : undefined,\n !tableConfig.includes(\"signUps\") ? i.signUps : undefined,\n !tableConfig.includes(\"survey\") ? i.survey : undefined,\n (choosedSiteId === 37 || choosedSiteId === 69) && !tableConfig.includes(\"sms4Plus35\") ? i.sms4Plus35 : undefined,\n !tableConfig.includes(\"online\") ? `${Math.floor(i.online / i.fillProfiles)}` : undefined,\n !tableConfig.includes(\"sales\") ? i.sales : undefined,\n !tableConfig.includes(\"ftd\") ? i.ftd : undefined,\n !tableConfig.includes(\"coins\") ? i.coins : undefined,\n !tableConfig.includes(\"money\") ? i.money : undefined,\n ]);\n });\n\n const headers = TABLE_HEADERS.map((h) => {\n if (!h.siteIds || h.siteIds.includes(choosedSiteId)) {\n if (tableConfig.includes(h.id)) return null;\n return h.header\n }\n return null;\n }).filter(h => h !== null);\n\n const finalResults = results.map(i => i.filter(r => r !== undefined))\n \n const total = [\n \"Total\",\n !tableConfig.includes(\"fpSu\") ? `${Math.round((countSum(\"signUps\") / countSum(\"fillProfiles\")) * 100)}%` : undefined,\n (choosedSiteId === 37 || choosedSiteId === 69) && !tableConfig.includes(\"fp4s\") ? `${Math.round((countSum(\"sms4Plus35\") / countSum(\"fillProfiles\")) * 100)}%` : undefined,\n !tableConfig.includes(\"fpFtd\") ? `${Math.round((countSum(\"ftd\") / countSum(\"fillProfiles\")) * 100)}%` : undefined,\n !tableConfig.includes(\"registrations\") ? countSum(\"registrations\") : undefined,\n !tableConfig.includes(\"fillProfiles\") ? countSum(\"fillProfiles\") : undefined,\n !tableConfig.includes(\"emailConfirmed\") ? countSum(\"emailConfirmed\") : undefined,\n !tableConfig.includes(\"signUps\") ? countSum(\"signUps\") : undefined,\n !tableConfig.includes(\"survey\") ? countSum(\"survey\") : undefined,\n (choosedSiteId === 37 || choosedSiteId === 69) && !tableConfig.includes(\"sms4Plus35\") ? countSum(\"sms4Plus35\") : undefined,\n !tableConfig.includes(\"online\") ? Math.floor(countSum(\"online\") / countSum(\"fillProfiles\")) : undefined,\n !tableConfig.includes(\"sales\") ? countSum(\"sales\") : undefined,\n !tableConfig.includes(\"ftd\") ? countSum(\"ftd\") : undefined,\n !tableConfig.includes(\"coins\") ? countSum(\"coins\") : undefined,\n !tableConfig.includes(\"money\") ? countSum(\"money\") : undefined,\n ].filter(i => i !== undefined);\n const csv = [\n [\n tabs.find((i) => i.id === activeGroupParam).label,\n ...headers,\n ],\n ...finalResults,\n [\n ...total,\n ],\n ];\n return csv;\n };\n\n const renderMainContent = () => {\n if (isEmpty) {\n return null;\n }\n if (loading) {\n return (\n
\n \n
\n );\n }\n\n const detectMob = () => {\n return window.innerWidth <= 800;\n };\n\n const chartProps = (chartData) => {\n let props = {\n data: chartData,\n options: options,\n };\n if (!detectMob()) {\n props.height = 70;\n }\n return props;\n };\n\n const ColumnLink = ({ row, filterId, groupParam }) => {\n const onLinkPress = () => {\n const nonEmptyFilterForm = Object.keys(filterForm)\n .filter((k) => filterForm[k])\n .reduce((a, k) => ({ ...a, [k]: filterForm[k] }), {});\n const query = qs.stringify({\n ...nonEmptyFilterForm,\n groupParam,\n filterId,\n grouping: row.grouping,\n fromDate: dateForm.from,\n toDate: dateForm.to,\n });\n window.open(`${location.pathname}?${query}`, \"_blank\");\n };\n return (\n \n {formatDateMonth(row, true)}\n \n );\n };\n\n const renderFirstColumn = (row) => {\n if (activeGroupParam === \"utm_source\") {\n return (\n \n );\n }\n if (activeGroupParam === \"linkid\") {\n return ;\n }\n if (activeGroupParam === \"utm_campaign\") {\n return (\n \n );\n }\n if (activeGroupParam === \"web_id\") {\n return ;\n }\n return {formatDateMonth(row, true)};\n };\n\n const tableConfig = settingsConfig.columns;\n\n return (\n \n \n i.id === activeGroupParam).label\n }_${moment().format(\"DDMMYYYY\")}`}\n data={generateCsv(sortedData([...data]))}\n >\n Export CSV\n \n \n\n {!isHided && (\n <>\n {activeGroupParam === \"day\" || activeGroupParam === \"month\" ? (\n \n ) : (\n \n )}\n \n )}\n setIsHided(!isHided)}\n >\n \n \n\n {!isHided && (\n \n {graphOptionsTypes.map((type) => (\n setSelectedChartType(type.id)}\n checked={type.id === selectedChartType}\n type=\"radio\"\n label={type.label}\n />\n ))}\n \n )}\n \n \n \n onSortClick(\"grouping\")}\n >\n \n {tabs.find((i) => i.id === activeGroupParam).label}\n \n \n {TABLE_HEADERS.map((h) => {\n if (!h.siteIds || h.siteIds.includes(choosedSiteId)) {\n if (tableConfig.includes(h.id)) return null;\n return (\n onSortClick(h.id)}\n >\n {h.header}\n \n );\n }\n return null;\n })}\n \n \n \n {sortedData([...data]).map((row, index) => (\n \n \n {!tableConfig.includes(\"fpSu\") ? (\n \n ) : null}\n {(choosedSiteId === 37 || choosedSiteId === 69) && !tableConfig.includes(\"fp4s\") ? (\n \n ) : null}\n {!tableConfig.includes(\"fpFtd\") ? (\n \n ) : null}\n {!tableConfig.includes(\"registrations\") ? (\n \n ) : null}\n {!tableConfig.includes(\"fillProfiles\") ? (\n \n ) : null}\n {!tableConfig.includes(\"emailConfirmed\") ? (\n \n ) : null}\n {!tableConfig.includes(\"signUps\") ? (\n \n ) : null}\n {!tableConfig.includes(\"survey\") ? (\n \n ) : null}\n {(choosedSiteId === 37 || choosedSiteId === 69) && !tableConfig.includes(\"sms4Plus35\") ? (\n \n ) : null}\n {!tableConfig.includes(\"online\") ? (\n \n ) : null}\n {!tableConfig.includes(\"sales\") ? : null}\n {!tableConfig.includes(\"ftd\") ? (\n \n ) : null}\n {!tableConfig.includes(\"coins\") ? (\n \n ) : null}\n {!tableConfig.includes(\"money\") ? (\n \n ) : null}\n \n ))}\n \n \n {!tableConfig.includes(\"fpSu\") ? \n : null}\n {(choosedSiteId === 37 || choosedSiteId === 69) && !tableConfig.includes(\"fp4s\") ? \n : null}\n {!tableConfig.includes(\"fpFtd\") ? \n : null}\n {!tableConfig.includes(\"registrations\") ? \n : null}\n {!tableConfig.includes(\"fillProfiles\") ? (\n \n ) : null}\n {!tableConfig.includes(\"emailConfirmed\") ? (\n \n ) : null}\n {!tableConfig.includes(\"signUps\") ? (\n \n ) : null}\n {!tableConfig.includes(\"survey\") ? (\n \n ) : null}\n {(choosedSiteId === 37 || choosedSiteId === 69) && !tableConfig.includes(\"sms4Plus35\") ? (\n \n ) : null}\n {!tableConfig.includes(\"online\") ? (\n \n ) : null}\n {!tableConfig.includes(\"sales\") ? (\n \n ) : null}\n {!tableConfig.includes(\"ftd\") ? (\n \n ) : null}\n {!tableConfig.includes(\"coins\") ? (\n \n ) : null}\n {!tableConfig.includes(\"money\") ? (\n \n ) : null}\n \n \n \n \n );\n };\n\n const onChangeSetting = (configGroup, id) => {\n const currentConfigGroup = settingsConfig[configGroup].includes(id)\n ? settingsConfig[configGroup].filter((i) => i !== id)\n : [...settingsConfig[configGroup], id];\n\n const newSettingsConfig = {\n ...settingsConfig,\n [configGroup]: currentConfigGroup,\n }\n setSettingsConfig(newSettingsConfig);\n localStorage.setItem('settings-config', JSON.stringify(newSettingsConfig));\n };\n\n const toggleAllSelectSettings = (newConfig) => {\n setSettingsConfig(newConfig);\n localStorage.setItem('settings-config', JSON.stringify(newConfig));\n };\n\n return (\n \n \n \n \n \n {groupParams.map((param) => {\n if (settingsConfig.groups.includes(param.id)) return null;\n return (\n \n {\n setEmpty(true);\n setActiveGroupParam(param.id);\n }}\n active={activeGroupParam === param.id}\n >\n {param.label}\n \n \n );\n })}\n \n
\n \n Apply\n \n
\n
\n\n
\n \n {!settingsConfig.filters.includes(\"date\") ? (\n setDateForm(value)}\n />\n ) : null}\n {renderInput(\"Linkid\", \"linkid\")}\n {renderInput(\"WebId\", \"web_id\")}\n {renderInput(\"SubId\", \"sub_id\")}\n \n \n {renderInput(\"Utm_Source\", \"utm_source\")}\n {!isToggled\n ? renderInput(\"Age\", \"age\")\n : renderDropdown(\"Age\", \"age\", ageOptions)}\n {renderInput(\"Country\", \"ipinfo_country\")}\n {renderInput(\"Utm_Term\", \"utm_term\")}\n\n \n \n {renderInput(\"Utm_Campaign\", \"utm_campaign\")}\n {renderDropdown(\"OS\", \"os\", osOptions)}\n {renderDropdown(\"Partner\", \"partner\", partnerOptions)}\n {renderInput(\"Landing\", \"path\")}\n \n \n {renderInput(\"Utm_Content\", \"utm_content\")}\n \n \n {choosedSiteId === 15 && renderSelect(\"User Role\", \"userrole\")}\n \n
\n
setSettingsVisible(true)}>\n \n
\n
\n\n
\n
\n {renderMainContent()}\n setSettingsVisible(false)}\n />\n
\n );\n};\n\nexport default Statistics;\n","import React from 'react';\nimport { MDBContainer } from 'mdbreact';\n\nimport Statistics from './components/Statistics';\n\n\nclass StatisticsPage extends React.Component {\n render() {\n return (\n \n \n \n );\n }\n}\n\nexport default StatisticsPage;","import styled from 'styled-components';\n\nexport const Container = styled.div`\n .card-header {\n background-color: transparent;\n }\n`;","/* eslint-disable react-hooks/exhaustive-deps */\nimport React, { useEffect, useState } from \"react\";\nimport {\n MDBContainer,\n MDBRow,\n MDBCol,\n MDBCard,\n MDBBtn,\n MDBIcon,\n MDBCollapseHeader,\n MDBCollapse,\n MDBCardBody,\n MDBTable,\n MDBTableHead,\n MDBTableBody,\n MDBSpinner,\n MDBCardText,\n} from \"mdbreact\";\nimport { useSelector } from \"react-redux\";\nimport moment from \"moment\";\nimport _ from \"lodash\";\n\nimport DateInput from \"../../components/DateInput\";\n\nimport http from \"../../services/http\";\nimport { Container } from \"./styled\";\n// import { getRates } from \"../../constants\";\nimport { rub_to_usd, usd_to_eur } from \"../../constants\";\nimport useDateScrollHeader from \"../../hooks/useDateScrollHeader\";\n\nconst MonthlyReportPage = () => {\n const [collapseID, setCollapseID] = useState(\"\");\n const [data, setData] = useState([]);\n const [loading, setLoading] = useState(false);\n\n const [dates, setDates] = useState({\n from: moment().startOf(\"month\").format(\"YYYY-MM-DD\"),\n to: moment().format(\"YYYY-MM-DD\"),\n });\n\n useDateScrollHeader(\n {\n date: `${moment(dates.from).format(\"DD-MM-YYYY\")} - ${moment(\n dates.to\n ).format(\"DD-MM-YYYY\")}`,\n },\n [dates]\n );\n\n const convertToUsd = ({ actionPayoutSum, partnerDealCurrency }) => {\n // const { rub_to_usd, usd_to_eur } = getRates();\n if (partnerDealCurrency === \"Rub\") {\n return parseInt(actionPayoutSum * rub_to_usd);\n }\n if (partnerDealCurrency === \"Eur\") {\n return parseInt(actionPayoutSum / usd_to_eur);\n }\n return parseInt(actionPayoutSum);\n };\n\n const totalActionSum = _.sumBy(data, convertToUsd);\n\n const groupedByUser = _.groupBy(data, ({ userEmail }) => userEmail);\n\n const choosedSiteId = useSelector((state) => state.app.choosedSiteId);\n\n const loadData = async () => {\n setLoading(true);\n const { data: response } = await http.get(\"/reports/partner8\", {\n params: {\n SiteId: choosedSiteId,\n From: dates.from,\n To: dates.to,\n },\n });\n convertToUsd(response);\n setData(response);\n setCollapseID(\"\");\n setLoading(false);\n };\n\n useEffect(() => {\n loadData();\n }, [choosedSiteId]);\n\n const onCollapse = (id) => {\n setCollapseID(collapseID === id ? \"\" : id);\n };\n\n const tableRows = [\n {\n label: 'LinkId',\n fieldName: 'partnerLinkUid',\n },\n {\n label: 'LinkName',\n fieldName: 'partnerLinkName',\n },\n {\n label: 'Count',\n fieldName: 'count',\n },\n {\n label: 'Action',\n fieldName: 'actionTypeName',\n },\n {\n label: 'Investment',\n fieldName: 'actionPayoutSum',\n },\n {\n label: 'Currency',\n fieldName: 'partnerDealCurrency',\n },\n ]\n return (\n \n \n \n setDates(value)} loadData={loadData} />\n \n \n \n \n \n \n \n \n \n
\n {totalActionSum} $\n
\n

Action Payout Sum

\n
\n
\n
\n
\n
\n\n {loading && }\n\n {!loading && !Object.keys(groupedByUser).length && (\n No info\n )}\n\n {!loading &&\n !!Object.keys(groupedByUser).length &&\n Object.keys(groupedByUser).map((userEmail) => (\n \n onCollapse(userEmail)}\n >\n \n {userEmail} ({_.sumBy(groupedByUser[userEmail], convertToUsd)}{\" \"}\n $)\n \n \n \n \n \n \n \n
\n {tableRows.map(row => (\n \n ))}\n \n \n \n {groupedByUser[userEmail].map((item) => (\n \n <>\n {tableRows.map(row => (\n \n ))}\n \n \n ))}\n \n \n \n \n \n ))}\n \n \n );\n};\n\nexport default MonthlyReportPage;\n","import { usd_to_eur, rub_to_usd } from \"../../constants\";\nimport _ from 'lodash';\n\nexport const countRoi = (moneyTotal, payoutTotal, payoutCurrency, moneyCurrency) => {\n let payoutTotalInUsd = payoutTotal;\n let moneyTotalInUsd = moneyTotal;\n if (moneyCurrency.toLowerCase() === \"eur\") {\n moneyTotalInUsd = moneyTotal * usd_to_eur;\n }\n if (moneyCurrency.toLowerCase() === \"rub\") {\n moneyTotalInUsd = moneyTotal * rub_to_usd;\n }\n if (payoutCurrency.toLowerCase() === \"eur\") {\n payoutTotalInUsd = payoutTotal * usd_to_eur;\n }\n if (payoutCurrency.toLowerCase() === \"rub\") {\n payoutTotalInUsd = payoutTotal * rub_to_usd;\n }\n return Number((moneyTotalInUsd / payoutTotalInUsd).toFixed(2));\n};\n\nexport const countProfit = (moneyTotal, payoutTotal, payoutCurrency, moneyCurrency) => {\n let payoutTotalInUsd = payoutTotal;\n let moneyTotalInUsd = moneyTotal;\n if (moneyCurrency.toLowerCase() === \"eur\") {\n moneyTotalInUsd = moneyTotal * usd_to_eur;\n }\n if (moneyCurrency.toLowerCase() === \"rub\") {\n moneyTotalInUsd = moneyTotal * rub_to_usd;\n }\n if (payoutCurrency.toLowerCase() === \"eur\") {\n payoutTotalInUsd = payoutTotal * usd_to_eur;\n }\n if (payoutCurrency.toLowerCase() === \"rub\") {\n payoutTotalInUsd = payoutTotal * rub_to_usd;\n }\n return Number((moneyTotalInUsd - payoutTotalInUsd).toFixed(2));\n};\n\nexport const convertDataToUsd = (data, valueKey, currencyKey) => {\n return [...data].map((i) => {\n if (i[currencyKey] === \"Eur\") {\n return {\n ...i,\n [valueKey]: i[valueKey] * usd_to_eur,\n };\n }\n if (i[currencyKey] === \"Rub\") {\n return {\n ...i,\n [valueKey]: i[valueKey] * rub_to_usd,\n };\n }\n return i;\n });\n}\n\nexport const countTotals = (data, countPayload) => {\n let totals = {};\n Object.keys(countPayload).map(field => {\n const currency = countPayload[field] === \"number\" ? 'usd' : countPayload[field];\n totals[field] = _.sumBy(\n convertDataToUsd(\n data,\n field,\n currency,\n ),\n (i) => i[field]\n ).toFixed(2)\n });\n return totals;\n}","import React, { useEffect, useMemo, useState } from \"react\";\nimport {\n MDBSelect,\n MDBCol,\n MDBSelectInput,\n MDBSelectOptions,\n MDBSelectOption,\n MDBCardFooter,\n} from \"mdbreact\";\nimport Select from \"react-select\";\n\nconst values = [\"24-\", \"25-34\", \"35-44\", \"45-54\", \"55-64\", \"65+\"];\n\nconst AgeFilter = ({ onChange, value }) => {\n return (\n <>\n Age\n ({ ...s, marginTop: 5 }) }}\n placeholder={\"Age\"}\n options={values.map((s) => ({ label: s, value: s }))}\n isMulti\n value={value}\n onChange={onChange}\n />\n \n );\n};\n\nexport default AgeFilter;\n","import React, { useEffect, useMemo, useState } from \"react\";\nimport {\n MDBRow,\n MDBCol,\n MDBInput,\n} from \"mdbreact\";\nimport Select from \"react-select\";\n\nconst values = [\">\", \"<\", \"=\"];\n\nconst ConditionFilter = ({ onChange, label }) => {\n const [operator, setOperator] = useState(null);\n const [value, setValue] = useState(null);\n\n const finalValue = useMemo(() => {\n if (value && operator?.value) {\n return `${operator.value === \"=\" ? \"\" : operator.value}${value}`;\n }\n return null;\n }, [operator, value]);\n\n useEffect(() => {\n onChange(finalValue);\n }, [finalValue]);\n\n return (\n \n \n {label} compare\n ({ ...s, marginTop: 5 }) }}\n placeholder={\"\"}\n options={values.map(v => ({ label: v, value: v }))}\n value={operator}\n onChange={(val) => setOperator(val)}\n isClearable\n />\n \n \n setValue(e.target.value)} label={label} />\n \n \n );\n};\n\nexport default ConditionFilter;\n","import React from \"react\";\n\nimport { MDBSpinner } from \"mdbreact\";\n\nconst renderLoadingContent = (content, loading) => {\n if (loading) {\n return
\n \n
;\n }\n return <>{content};\n};\n\nexport default renderLoadingContent;\n","import styled from 'styled-components';\n\nexport const Container = styled.div`\n .nav-tabs {\n border-width: 0;\n }\n .nav-link {\n border-color: #1266f1;\n border: solid transparent;\n border-width: 0 0 2px;\n border-radius: 0;\n text-transform: uppercase;\n line-height: 1;\n font-weight: 500;\n font-size: 12px;\n padding: 17px 29px 16px;\n &.active {\n border-bottom: 2px solid #1266f1;\n color: #1266f1;\n }\n }\n`;\n\nexport const Th = styled.th`\n cursor: pointer;\n position: relative;\n padding-right: 30px !important;\n ::after {\n right: 1em;\n font-family: \"Font Awesome\\ 5 Free\", sans-serif;\n font-size: 1rem;\n font-weight: 900;\n content: \"\\f0de\";\n position: absolute;\n bottom: .9em;\n display: block;\n opacity: ${({isSorting, direction}) => (isSorting && direction === 'desc') ? 1 : 0.4}\n }\n ::before {\n right: 16px;\n font-family: \"Font Awesome\\ 5 Free\", sans-serif;\n font-size: 1rem;\n font-weight: 900;\n content: \"\\f0dd\";\n position: absolute;\n bottom: .9em;\n display: block;\n opacity: ${({isSorting, direction}) => (isSorting && direction === 'asc') ? 1 : 0.4}\n }\n`;","/* eslint-disable react-hooks/exhaustive-deps */\nimport {\n MDBCardBody,\n MDBTable,\n MDBTableBody,\n MDBTableHead,\n MDBCard,\n MDBCol,\n MDBRow,\n MDBBtn,\n MDBCardFooter,\n MDBSpinner,\n MDBInput,\n} from \"mdbreact\";\nimport { MDBTabs, MDBTabsItem, MDBTabsLink } from \"mdb-react-ui-kit\";\nimport Select from \"react-select\";\nimport { useEffect, useState } from \"react\";\nimport moment from \"moment\";\nimport _ from \"lodash\";\nimport http from \"../../../services/http\";\n\nimport DateInput from \"../../../components/DateInput\";\nimport { countProfit, countRoi, countTotals } from \"../utils\";\nimport AgeFilter from \"../components/AgeFilter\";\nimport ConditionFilter from \"../components/ConditionFilter\";\n\nimport renderLoadingContent from \"../../../components/renderLoadingContent\";\n\nimport * as S from \"./styled\";\nimport useDateScrollHeader from \"../../../hooks/useDateScrollHeader\";\nimport { useSelector } from \"react-redux\";\nimport { useSnackbar } from \"react-simple-snackbar\";\nimport { failureOptions } from \"../../../configs\";\n\nconst PartnerStats = () => {\n const [data, setData] = useState([]);\n const [loading, setLoading] = useState(false);\n const { choosedSiteId } = useSelector((state) => state.app);\n const [openFailureSnackbar] = useSnackbar(failureOptions);\n\n const [sites, setSites] = useState([]);\n const [partners, setPartners] = useState([]);\n\n const [filterForm, setFilterForm] = useState({\n site: [],\n partner: [],\n age: [],\n payout: \"\",\n dailyLimit: \"\",\n linkId: \"\",\n webId: \"\",\n country: \"\",\n });\n\n const [dateForm, setDateForm] = useState({\n from: moment().startOf(\"month\").format(\"YYYY-MM-DD\"),\n to: moment().format(\"YYYY-MM-DD\"),\n });\n\n useDateScrollHeader(\n {\n date: `${moment(dateForm.from).format(\"DD-MM-YYYY\")} - ${moment(\n dateForm.to\n ).format(\"DD-MM-YYYY\")}`,\n },\n [dateForm]\n );\n\n const groupingItems = [\n {\n param: \"Site\",\n isFiltering: false,\n },\n {\n param: \"User\",\n isFiltering: false,\n },\n {\n param: \"LinkId\",\n isFiltering: true,\n filterParam: \"linkId\",\n redirectParam: \"WebId\",\n },\n {\n param: \"WebId\",\n isFiltering: true,\n filterParam: \"webId\",\n redirectParam: \"SubId\",\n },\n {\n param: \"SubId\",\n isFiltering: false,\n },\n {\n param: \"Country\",\n isFiltering: true,\n filterParam: \"country\",\n },\n {\n param: \"Age\",\n isFiltering: false,\n },\n ];\n\n const [grouping, setGrouping] = useState(\"User\");\n\n const getSites = async () => {\n const { data } = await http.get(\"/sites/foradminpanel\");\n const filteredSites = data.filter(\n (site) => site.id !== 15 && site.id !== 35\n );\n setSites(filteredSites);\n const selectedSite = filteredSites.find((s) => s.id === choosedSiteId);\n if (selectedSite) {\n onFilterFormChange(\n [{ label: selectedSite.name, value: choosedSiteId }],\n \"site\"\n );\n }\n };\n\n const getPartners = async () => {\n const { data = [] } = await http.get(\"/users\");\n const partnerUsers = data.filter((u) =>\n Boolean(u.roles.find((r) => r.role === 3))\n );\n const sorted = _.orderBy(partnerUsers, (i) => i.email, \"asc\");\n setPartners(sorted);\n };\n\n const loadData = async () => {\n setLoading(true);\n try {\n const { data } = await http.get(\"/reports/partnerstats\", {\n params: {\n Grouping: grouping,\n StartDate: dateForm.from,\n EndDate: dateForm.to,\n SiteId: filterForm.site.map((s) => s.value).join(\", \"),\n PartnerId: filterForm.partner.map((p) => p.value).join(\", \"),\n Age: filterForm.age.map((a) => a.value).join(\", \"),\n Payout: filterForm.payout,\n DailyLimit: filterForm.dailyLimit,\n LinkId: filterForm.linkId,\n WebId: filterForm.webId,\n Country: filterForm.country,\n },\n });\n setData(data);\n } catch (err) {\n openFailureSnackbar(\"Something went wrong...\");\n }\n setLoading(false);\n };\n\n useEffect(() => {\n getSites();\n getPartners();\n }, []);\n\n useEffect(() => {\n loadData();\n }, [\n grouping,\n filterForm.site,\n filterForm.linkId,\n filterForm.webId,\n filterForm.country,\n ]);\n\n const totals = countTotals(data, {\n moneyAmount: \"moneyAmountCurrency\",\n payoutAmount: \"payoutAmountCurrency\",\n });\n\n const onFilterFormChange = (value, field) => {\n setFilterForm({\n ...filterForm,\n [field]: value,\n });\n };\n\n const [sorting, setSorting] = useState({\n field: \"\",\n direction: \"asc\",\n });\n\n const onSortClick = (header) => {\n setSorting({\n field: header,\n direction: sorting.direction === \"asc\" ? \"desc\" : \"asc\",\n });\n };\n\n const headers = [\n {\n label: \"Grouping\",\n field: \"grouping\",\n },\n {\n label: \"FillProfiles\",\n field: \"fillProfiles\",\n },\n {\n label: \"Primary sales\",\n field: \"firstPurchases\",\n },\n {\n label: \"Purchase Amount\",\n field: \"purchaseAmount\",\n },\n {\n label: `Money amount (${totals.moneyAmount}$)`,\n field: \"moneyAmount\",\n },\n {\n label: `Payout (${totals.payoutAmount}$)`,\n field: \"payoutAmount\",\n },\n {\n label: \"ROI\",\n field: \"roi\",\n },\n {\n label: \"Profit\",\n field: \"profit\",\n },\n ];\n\n const formatData = (data) =>\n data.map((item) => ({\n ...item,\n roi: countRoi(\n item.moneyAmount,\n item.payoutAmount,\n item.payoutAmountCurrency,\n item.moneyAmountCurrency\n ),\n profit: countProfit(\n item.moneyAmount,\n item.payoutAmount,\n item.payoutAmountCurrency,\n item.moneyAmountCurrency\n ),\n }));\n\n const sortData = (data) => {\n return sorting.field\n ? _.orderBy(data, (i) => i[sorting.field], sorting.direction)\n : data;\n };\n\n const onGroupingItemClick = (value) => {\n const findGrouping = groupingItems.find((i) => i.param === grouping);\n if (findGrouping?.isFiltering) {\n onFilterFormChange(value, findGrouping?.filterParam);\n if (findGrouping?.redirectParam) {\n setGrouping(findGrouping.redirectParam)\n }\n }\n };\n\n return (\n \n \n \n \n setDateForm(value)}\n />\n \n onFilterFormChange(e.target.value, \"linkId\")}\n value={filterForm.linkId}\n label=\"LinkId\"\n />\n \n \n onFilterFormChange(e.target.value, \"webId\")}\n value={filterForm.webId}\n label=\"WebId\"\n />\n \n \n \n \n Site\n ({ label: s.name, value: s.id }))}\n isMulti\n value={filterForm.site}\n onChange={(val) => onFilterFormChange(val, \"site\")}\n closeMenuOnSelect={false}\n />\n \n \n Partner\n ({ ...s, maxWidth: 100 }),\n }}\n placeholder={\"Partner\"}\n options={partners.map((s) => ({ label: s.email, value: s.id }))}\n isMulti\n value={filterForm.partner}\n onChange={(val) => onFilterFormChange(val, \"partner\")}\n closeMenuOnSelect={false}\n />\n \n \n onFilterFormChange(e.target.value, \"country\")}\n value={filterForm.country}\n label=\"Country\"\n />\n \n \n \n \n onFilterFormChange(val, \"age\")}\n />\n \n \n onFilterFormChange(val, \"payout\")}\n />\n \n \n onFilterFormChange(val, \"dailyLimit\")}\n />\n \n \n \n \n \n Apply\n \n \n \n \n \n {groupingItems.map((item) => (\n \n setGrouping(item.param)}\n active={grouping === item.param}\n >\n {item.param}\n \n \n ))}\n \n {renderLoadingContent(\n \n \n
\n {headers.map((h) => (\n onSortClick(h.field)}\n >\n {h.label}\n \n ))}\n \n \n \n {sortData(formatData(data)).map((item) => (\n \n i.param === grouping)\n ?.isFiltering\n ? {\n fontWeight: \"bold\",\n textDecoration: \"underline\",\n cursor: \"pointer\",\n }\n : {}\n }\n onClick={() => onGroupingItemClick(item.grouping)}\n >\n {item.grouping}\n \n \n \n \n \n \n \n \n \n ))}\n \n ,\n loading\n )}\n \n \n );\n};\n\nexport default PartnerStats;\n","import React from 'react';\nimport { MDBContainer } from 'mdbreact';\n\nimport PartnerStats from './PartnerStats';\n\nconst PartnerStatsPage = () => {\n return (\n \n \n \n );\n}\n\nexport default PartnerStatsPage;","import React, { useState } from \"react\";\nimport { MDBInput, MDBBtn, MDBSpinner } from \"mdbreact\";\nimport { useSnackbar } from \"react-simple-snackbar\";\n\nimport MainContainer from \"../../components/MainContainer\";\nimport http from \"../../services/http\";\nimport { failureOptions, succesOptions } from \"../../configs\";\n\n\nconst ForgotPasswordPage = () => {\n const [email, setEmail] = useState(\"\");\n const [loading, setLoading] = useState(false);\n\n const [openFailureSnackbar] = useSnackbar(failureOptions);\n const [openSuccessSnackbar] = useSnackbar(succesOptions);\n\n\n\n const handleResetPassword = async () => {\n setLoading(true);\n try {\n await http.post(\"/auth/resetpassword\", {\n email,\n });\n openSuccessSnackbar('Link sent')\n } catch (err) {\n openFailureSnackbar('Something went wrong')\n }\n setLoading(false);\n };\n\n return (\n \n
\n

Reset password

\n
\n setEmail(e.target.value)}\n required\n label=\"Type your email\"\n icon=\"envelope\"\n group\n type=\"email\"\n validate\n error=\"wrong\"\n success=\"right\"\n />\n
\n
\n {loading ? (\n \n ) : (\n Send reset link\n )}\n
\n \n
\n );\n};\n\nexport default ForgotPasswordPage;\n","import React, { useState } from \"react\";\nimport { MDBInput, MDBBtn, MDBSpinner } from \"mdbreact\";\nimport { useLocation, useHistory } from \"react-router-dom\";\nimport { useSnackbar } from \"react-simple-snackbar\";\n\nimport MainContainer from \"../../components/MainContainer\";\nimport http from \"../../services/http\";\nimport { failureOptions, succesOptions } from \"../../configs\";\n\nconst ChangePasswordPage = () => {\n const [loading, setLoading] = useState(false);\n const [password, setPassword] = useState(\"\");\n const [repeatPassword, setRepeatPassword] = useState(\"\");\n\n\n const location = useLocation();\n const history = useHistory();\n\n const [openFailureSnackbar] = useSnackbar(failureOptions);\n const [openSuccessSnackbar] = useSnackbar(succesOptions);\n\n\n \n const queryParams = new URLSearchParams(location.search);\n\n const handleResetPassword = async () => {\n if (repeatPassword !== password) {\n openFailureSnackbar('Password missmatch')\n return;\n }\n setLoading(true);\n try {\n await http.post(\"/auth/resetpassword/confirm\", {\n password,\n code: queryParams.get('code'),\n });\n openSuccessSnackbar('Password changed!')\n history.push('/')\n } catch (err) {\n openFailureSnackbar('Something went wrong')\n }\n setLoading(false);\n\n };\n\n return (\n \n
\n

Reset password

\n
\n setPassword(e.target.value)}\n required\n label=\"Type new password\"\n icon=\"lock\"\n group\n type=\"password\"\n validate\n />\n setRepeatPassword(e.target.value)}\n required\n label=\"Repeat password\"\n icon=\"lock\"\n group\n type=\"password\"\n validate\n />\n
\n
\n {loading ? (\n \n ) : (\n Submit\n )}\n
\n \n
\n );\n};\n\nexport default ChangePasswordPage;\n","/* eslint-disable react-hooks/exhaustive-deps */\nimport React, { useEffect, useState } from \"react\";\nimport styled from \"styled-components\";\n\nimport {\n MDBContainer,\n MDBCard,\n MDBBtn,\n MDBIcon,\n MDBTabPane,\n MDBNav,\n MDBNavItem,\n MDBNavLink,\n MDBTabContent,\n MDBInput,\n MDBSpinner,\n} from \"mdbreact\";\nimport { useSnackbar } from \"react-simple-snackbar\";\n\nimport http from \"../../services/http\";\nimport { useSelector } from \"react-redux\";\nimport { failureOptions, succesOptions } from \"../../configs\";\n\nconst LinksPage = () => {\n const { choosedSiteId } = useSelector((state) => state.app);\n const [activeTab, setActiveTab] = useState(0);\n const [landings, setLandings] = useState([]);\n\n const [isLoading, setIsLoading] = useState(false);\n const [openSuccessSnackbar] = useSnackbar(succesOptions);\n const [openFailureSnackbar] = useSnackbar(failureOptions);\n\n const [newLanding, setNewLanding] = useState(\"\");\n const [types, setTypes] = useState([]);\n\n useEffect(async () => {\n const { data } = await http.get(\"/landingrotator/types\");\n setTypes(data);\n }, []);\n\n useEffect(() => {\n getLandings();\n }, [choosedSiteId, activeTab]);\n\n const getLandings = async () => {\n setIsLoading(true);\n const { data } = await http.get(\n `/landingrotator/${choosedSiteId}/landings?type=${activeTab}`\n );\n setLandings(data?.landings || []);\n setIsLoading(false);\n };\n\n const addNewLanding = async () => {\n try {\n const { data } = await http.post(\n `/landingrotator/${choosedSiteId}/landings`,\n {\n url: newLanding,\n type: activeTab,\n }\n );\n getLandings();\n openSuccessSnackbar(\"Added\");\n setNewLanding(\"\");\n } catch (err) {\n openFailureSnackbar(\"Something went wrong.\");\n }\n };\n\n const deleteLanding = async (landingId) => {\n try {\n await http.delete(\n `/landingrotator/${choosedSiteId}/landings/${landingId}`\n );\n getLandings();\n openSuccessSnackbar(\"Deleted\");\n } catch (err) {\n openFailureSnackbar(\"Something went wrong.\");\n }\n };\n return (\n \n \n \n \n {types.map((type) => (\n \n {\n setActiveTab(type.value);\n }}\n >\n {type.text}\n \n \n ))}\n \n \n {types.map((type) => (\n \n {!isLoading ? <>\n {landings.map((land) => (\n
\n
{land.url}
\n \n {land.weight}%\n \n \n
\n \n deleteLanding(land.id)}\n style={{ cursor: \"pointer\", color: \"grey\", flex: 1 }}\n >\n \n \n \n ))}\n : }\n
\n ))}\n {/*

Add new link

*/}\n setNewLanding(e.target.value)}\n value={newLanding}\n label=\"Add new link\"\n type=\"text\"\n className=\"w-50\"\n />\n \n Create\n \n
\n
\n
\n
\n );\n};\n\nconst Container = styled.div`\n & .nav-link.Ripple-parent {\n border-color: red;\n }\n & .nav-link.Ripple-parent.stop.active {\n border-color: green;\n }\n & .spin {\n margin: auto;\n }\n`;\n\nexport default LinksPage;\n","import React, { useEffect, useState } from \"react\";\nimport {\n MDBCardBody,\n MDBTable,\n MDBTableBody,\n MDBTableHead,\n MDBCard,\n MDBSelect,\n MDBCol,\n MDBSpinner,\n MDBRow,\n MDBInput,\n MDBBtn,\n MDBIcon,\n} from \"mdbreact\";\nimport Select from \"react-select\";\nimport http from \"../../services/http\";\nimport DateInput from \"../../components/DateInput\";\n\nconst ageOptions = [\n {\n value: \"r2\",\n label: \"35+\",\n },\n {\n value: \"r1\",\n label: \"34-\",\n },\n];\n\nconst osOptions = [\n { label: \"Android\", value: \"Android\" },\n { label: \"iOS\", value: \"iOS\" },\n { label: \"Linux\", value: \"Linux\" },\n { label: \"Windows\", value: \"Windows\" },\n { label: \"Other\", value: \"Other\" },\n];\n\nconst Filters = ({\n groupingOptions = [],\n loadingGrouping = true,\n grouping,\n setGrouping,\n setIsSettingsVisible,\n filtersConfig,\n filterForm,\n setFilterForm,\n dateForm,\n setDateForm,\n handleSubmit,\n}) => {\n const [partnerOptions, setPartnerOptions] = useState([]);\n\n const fetchPartnerOptions = async () => {\n const { data } = await http.get(\"/reports/main_partners\");\n const formatted = data.map((item) => ({\n value: item.value,\n label: item.text,\n }));\n setPartnerOptions(formatted);\n };\n useEffect(() => {\n fetchPartnerOptions();\n }, []);\n\n const renderInput = (label, id) => {\n if (filtersConfig.includes(id)) return null;\n return (\n \n \n setFilterForm({\n ...filterForm,\n [id]: e.target.value,\n })\n }\n />\n \n );\n };\n\n const renderDropdown = (label, id, options) => {\n if (filtersConfig.includes(id)) return null;\n return (\n \n ({ ...s, marginTop: 25 }) }}\n placeholder={label}\n options={options}\n isClearable\n onChange={(val) =>\n setFilterForm({\n ...filterForm,\n [id]: val?.value || \"\",\n })\n }\n />\n \n );\n };\n return (\n \n \n \n \n option.value === grouping.first\n )}\n styles={{ menu: (s) => ({ ...s, zIndex: 2, }) }}\n onChange={(selectedOption) =>\n setGrouping({ ...grouping, first: selectedOption.value })\n }\n />\n \n \n option.value === grouping.second\n )}\n styles={{ menu: (s) => ({ ...s, zIndex: 2, }) }}\n onChange={(selectedOption) =>\n setGrouping({ ...grouping, second: selectedOption?.value })\n }\n />\n \n \n option.value === grouping.third\n )}\n styles={{ menu: (s) => ({ ...s, zIndex: 2, }) }}\n onChange={(selectedOption) =>\n setGrouping({ ...grouping, third: selectedOption?.value })\n }\n />\n \n \n \n {!filtersConfig.includes(\"date\") ? (\n setDateForm(value)}\n />\n ) : null}\n {renderInput(\"Linkid\", \"LinkId\")}\n {renderInput(\"WebId\", \"WebId\")}\n {renderInput(\"SubId\", \"SubId\")}\n \n \n {renderInput(\"Utm_Source\", \"UtmSource\")}\n {renderDropdown(\"Age\", \"Age\", ageOptions)}\n {renderInput(\"Utm_Campaign\", \"UtmCampaign\")}\n {renderDropdown(\"OS\", \"OS\", osOptions)}\n \n \n {renderDropdown(\"Partner\", \"Partner\", partnerOptions)}\n {renderInput(\"Landing\", \"Path\")}\n \n
\n \n Apply\n \n setIsSettingsVisible(true)}\n >\n \n
\n \n
\n
\n );\n};\n\nexport default Filters;\n","// {\n// \"grouping\": \"2023-3\",\n// \"investment\": 46590.52\n// }\nexport const TABLE_HEADERS_OLD = [\n {\n header: 'FP➝SU',\n id: 'fpSu',\n },\n {\n header: 'FP➝4S',\n id: 'fp4s',\n siteIds: [37, 69],\n },\n {\n header: 'FP➝FTD',\n id: 'fpFtd',\n },\n {\n header: 'Registrations',\n id: 'registrations',\n },\n {\n header: 'FillProfiles',\n id: 'fillProfiles'\n },\n {\n header: 'Confirmed',\n id: 'emailConfirmed',\n },\n {\n header: 'SignUps',\n id: 'signUps'\n },\n {\n header: 'SMS4',\n id: 'sms4Plus35',\n siteIds: [37, 69],\n },\n {\n header: 'Online (min/user) ',\n id: 'online',\n },\n {\n header: 'Sales',\n id: 'sales'\n },\n {\n header: 'FTD',\n id: 'ftd'\n },\n {\n header: 'Coins',\n id: 'coins'\n },\n {\n header: 'Money',\n id: 'money'\n },\n]\n\nexport const TABLE_HEADERS = [\n {\n header: 'Registrations',\n id: 'registrations',\n },\n {\n header: 'FillProfiles',\n id: 'fillProfiles'\n },\n {\n header: 'Confirmed',\n id: 'emailConfirmed',\n },\n {\n header: 'Posted',\n id: 'posted',\n },\n {\n header: 'SMS4',\n id: 'sms4Plus35',\n siteIds: [37, 69],\n },\n {\n header: 'Online (min/user) ',\n id: 'online',\n },\n {\n header: 'Sales',\n id: 'sales'\n },\n {\n header: 'FTD',\n id: 'ftd'\n },\n {\n header: 'Turnover',\n id: 'turnover'\n },\n {\n header: 'Investment',\n id: 'investment'\n },\n]","import styled from \"styled-components\";\n\nexport const Th = styled.th`\n cursor: pointer;\n position: relative;\n padding-right: 30px !important;\n ::after {\n right: 1em;\n font-family: \"Font Awesome\\ 5 Free\", sans-serif;\n font-size: 1rem;\n font-weight: 900;\n content: \"\\f0de\";\n position: absolute;\n bottom: .9em;\n display: block;\n opacity: ${({isSorting, direction}) => (isSorting && direction === 'desc') ? 1 : 0.4}\n }\n ::before {\n right: 16px;\n font-family: \"Font Awesome\\ 5 Free\", sans-serif;\n font-size: 1rem;\n font-weight: 900;\n content: \"\\f0dd\";\n position: absolute;\n bottom: .9em;\n display: block;\n opacity: ${({isSorting, direction}) => (isSorting && direction === 'asc') ? 1 : 0.4}\n }\n`;","import React, { useState } from \"react\";\nimport { MDBIcon, MDBTableHead } from \"mdbreact\";\nimport { Th } from \"./styled\";\nimport { TABLE_HEADERS } from \"./config\";\nconst renderCell = (condition, content) => {\n return condition ? : null;\n};\n\nconst CommonTableRow = ({\n row,\n tableConfig,\n choosedSiteId,\n handleRowClick,\n level,\n isExpanded,\n setHidedRows,\n hidedRows,\n grouping\n}) => {\n const cells = [\n {\n condition: !tableConfig.includes(\"registrations\"),\n content: row.registration,\n },\n {\n condition: !tableConfig.includes(\"fillProfiles\"),\n content: row.fillProfile,\n },\n {\n condition: !tableConfig.includes(\"emailConfirmed\"),\n content: row.emailConfirmed,\n },\n {\n condition: !tableConfig.includes(\"posted\"),\n content: row.posted,\n },\n {\n condition:\n (choosedSiteId === 37 || choosedSiteId === 69) &&\n !tableConfig.includes(\"sms4Plus35\"),\n content: row.sms4Plus35,\n },\n {\n condition: !tableConfig.includes(\"online\"),\n content: row.online,\n },\n { condition: !tableConfig.includes(\"sales\"), content: row.sales },\n { condition: !tableConfig.includes(\"ftd\"), content: row.ftd },\n { condition: !tableConfig.includes(\"turnover\"), content: row.turnover },\n { condition: !tableConfig.includes(\"investment\"), content: row.investment },\n\n\n ]\n // const cells = [\n // {\n // condition: !tableConfig.includes(\"fpSu\"),\n // content: `${Math.round((row.signUps / row.fillProfiles) * 100)}%`,\n // },\n // {\n // condition:\n // (choosedSiteId === 37 || choosedSiteId === 69) &&\n // !tableConfig.includes(\"fp4s\"),\n // content: `${Math.round((row.sms4Plus35 / row.fillProfiles) * 100)}%`,\n // },\n // {\n // condition: !tableConfig.includes(\"fpFtd\"),\n // content: `${Math.round((row.ftd / row.fillProfiles) * 100)}%`,\n // },\n // {\n // condition: !tableConfig.includes(\"registrations\"),\n // content: row.registration,\n // },\n // {\n // condition: !tableConfig.includes(\"fillProfiles\"),\n // content: row.fillProfile,\n // },\n // {\n // condition: !tableConfig.includes(\"emailConfirmed\"),\n // content: row.emailConfirmed,\n // },\n // { condition: !tableConfig.includes(\"signUps\"), content: row.signUps },\n // {\n // condition:\n // (choosedSiteId === 37 || choosedSiteId === 69) &&\n // !tableConfig.includes(\"sms4Plus35\"),\n // content: row.sms4Plus35,\n // },\n // {\n // condition: !tableConfig.includes(\"online\"),\n // content: Math.floor(row.online / row.fillProfiles),\n // },\n // { condition: !tableConfig.includes(\"sales\"), content: row.sales },\n // { condition: !tableConfig.includes(\"ftd\"), content: row.ftd },\n // { condition: !tableConfig.includes(\"coins\"), content: row.coins },\n // { condition: !tableConfig.includes(\"money\"), content: row.money },\n // ];\n\n const levelConfig = {\n 1: '#00bcd4',\n 2: '#454545',\n 3: 'rgb(125, 122, 122)'\n };\n\n if (hidedRows.includes(row.grouping)) {\n return null;\n }\n const isExpandVisible = () => {\n if (level === 2 && grouping.third) {\n return true;\n }\n if (level === 1 && grouping.second) {\n return true;\n }\n return false\n }\n const getFirstColumnName = () => {\n if (level === 1) {\n return grouping.first;\n }\n if (level === 2) {\n return grouping.second;\n }\n if (level === 3) {\n return grouping.third\n }\n return \"Grouping\"\n }\n return (\n <>\n \n \n {TABLE_HEADERS.map(({ header, id, siteIds }) => {\n if (!siteIds || siteIds.includes(choosedSiteId)) {\n if (tableConfig.includes(id)) return null;\n return ;\n }\n return null;\n })}\n \n \n \n \n {cells.map((cell, index) => renderCell(cell.condition, cell.content))}\n \n \n \n );\n};\n\nexport default CommonTableRow;\n","import React, { useState } from \"react\";\nimport CommonTableRow from \"./CommonTableRow\";\nimport http from \"../../services/http\";\nimport { MDBSpinner } from \"mdbreact\";\nimport { TABLE_HEADERS } from \"./config\";\n\nconst ThirdLayerRow = ({\n row,\n tableConfig,\n choosedSiteId,\n grouping,\n setHidedRows,\n hidedRows,\n filterForm,\n dateForm,\n}) => {\n const [innerData, setInnerData] = useState([]);\n const [isExpanded, setIsExpanded] = useState(false);\n const [isLoading, setIsLoading] = useState(false);\n const handleRowClick = async () => {\n setIsLoading(true);\n if (isExpanded) {\n setInnerData([]);\n setIsExpanded(false);\n setIsLoading(false);\n return;\n }\n setIsExpanded(true);\n const baseParams = {\n siteId: choosedSiteId,\n StartDate: dateForm.from,\n EndDate: dateForm.to,\n ...filterForm,\n };\n const { data } = await http.get(\"/reports/main3\", {\n params: {\n ...baseParams,\n grouping: grouping.third,\n [grouping.second]: row.grouping,\n },\n });\n setInnerData(data.filter((item) => item.grouping));\n setIsLoading(false);\n };\n\n const renderInnerData = () => {\n if (isLoading)\n return (\n \n \n \n );\n if (!isExpanded) return null;\n if (hidedRows.includes(row.grouping)) {\n return null;\n }\n if (innerData.length === 0 && isExpanded) {\n return
No data
;\n }\n return innerData.map((item, index) => (\n \n ));\n };\n return (\n <>\n \n {renderInnerData()}\n \n );\n};\n\nexport default ThirdLayerRow;\n","import React, { useState } from \"react\";\nimport CommonTableRow from \"./CommonTableRow\";\nimport http from \"../../services/http\";\nimport ThirdLayerRow from \"./ThirdLayerRow\";\nimport { MDBSpinner } from \"mdbreact\";\nimport { TABLE_HEADERS } from \"./config\";\n\nconst SecondLayerRow = ({\n row,\n tableConfig,\n choosedSiteId,\n grouping,\n setHidedRows,\n hidedRows,\n filterForm,\n dateForm,\n}) => {\n const [innerData, setInnerData] = useState([]);\n const [isExpanded, setIsExpanded] = useState(false);\n const [isLoading, setIsLoading] = useState(false);\n const handleRowClick = async () => {\n if (!grouping.second) return;\n setIsLoading(true);\n if (isExpanded) {\n setInnerData([]);\n setIsExpanded(false);\n setIsLoading(false);\n return;\n }\n\n setIsExpanded(true);\n const baseParams = {\n siteId: choosedSiteId,\n StartDate: dateForm.from,\n EndDate: dateForm.to,\n ...filterForm,\n };\n const { data } = await http.get(\"/reports/main3\", {\n params: {\n ...baseParams,\n grouping: grouping.second,\n [grouping.first]: row.grouping,\n },\n });\n setInnerData(data.filter((item) => item.grouping));\n setIsLoading(false);\n };\n\n const renderInnerData = () => {\n if (isLoading)\n return (\n \n \n \n );\n if (!isExpanded) return null;\n if (hidedRows.includes(row.grouping)) {\n return null;\n }\n if (innerData.length === 0 && isExpanded) {\n return
No data
;\n }\n return innerData.map((item, index) => (\n \n ));\n };\n\n return (\n <>\n \n {grouping.second && renderInnerData()}\n \n );\n};\n\nexport default SecondLayerRow;\n","import React, { useState, useMemo } from \"react\";\nimport { MDBTable, MDBTableHead, MDBTableBody, MDBSpinner } from \"mdbreact\";\nimport { Th } from \"./styled\";\nimport { TABLE_HEADERS } from \"./config\";\nimport SecondLayerRow from \"./SecondLayerRow\";\n\nconst StatisticsTable = ({\n data,\n tableConfig,\n choosedSiteId,\n grouping,\n isLoading,\n filterForm,\n dateForm,\n hidedRows,\n setHidedRows,\n}) => {\n\n return (\n \n {/* \n \n \n {TABLE_HEADERS.map(({ header, id, siteIds }) => {\n if (!siteIds || siteIds.includes(choosedSiteId)) {\n if (tableConfig.includes(id)) return null;\n return ;\n }\n return null;\n })}\n \n */}\n \n {isLoading ? (\n \n \n \n ) : data.length === 0 ? (\n \n \n \n ) : (\n data.map((row, index) => (\n \n ))\n )}\n \n \n );\n};\n\nexport default StatisticsTable;\n","import React, { useState } from \"react\";\nimport {\n MDBModal,\n MDBModalHeader,\n MDBModalBody,\n MDBInput,\n} from \"mdbreact\";\nimport { TABLE_HEADERS } from \"./config\";\nimport { useSelector } from \"react-redux\";\n\nconst filters = [\n {\n label: \"Date\",\n id: \"date\",\n },\n {\n label: \"LinkId\",\n id: \"linkid\",\n },\n {\n label: \"WebId\",\n id: \"web_id\",\n },\n {\n label: \"SubId\",\n id: \"sub_id\",\n },\n {\n label: \"Age\",\n id: \"age\",\n },\n {\n label: \"Country\",\n id: \"ipinfo_country\",\n },\n {\n label: \"Utm_Source\",\n id: \"utm_source\",\n },\n {\n label: \"Utm_Term\",\n id: \"utm_term\",\n },\n {\n label: \"Utm_Campaign\",\n id: \"utm_campaign\",\n },\n {\n label: \"OS\",\n id: \"os\",\n },\n {\n label: \"Landing\",\n id: \"path\",\n },\n {\n label: \"Partner\",\n id: \"partner\",\n },\n {\n label: \"Utm_Content\",\n id: \"utm_content\",\n },\n];\n\nfunction SettingRow({ group, setting, onChangeSetting, isEnabled }) {\n return (\n
\n
{setting.label}
\n onChangeSetting(group, setting.id)}\n checked={isEnabled}\n type=\"checkbox\"\n id={`checkbox-${group}-${setting.id}`}\n />\n
\n );\n}\n\n\nexport default function SettingsModal({\n visible,\n onClose,\n settingsConfig,\n onChangeSetting,\n toggleAllSelectSettings,\n groupParams,\n}) {\n\n const settingsInitial = {\n groups: [...groupParams],\n columns: [...TABLE_HEADERS.map((h) => ({ ...h, label: h.header }))],\n filters,\n };\n\n const choosedSiteId = useSelector((state) => state.app.choosedSiteId);\n\n const settings = {\n ...settingsInitial,\n columns: [...settingsInitial.columns.filter(h => {\n if (h.id === \"fp4s\") {\n return choosedSiteId === 37 || choosedSiteId === 69\n }\n if (h.id === \"sms4Plus35\") {\n return choosedSiteId === 37 || choosedSiteId === 69\n }\n return true;\n })]\n }\n const [isMobile] = useState(true);\n\n const [selectedMobileTab, setSelectedMobileTab] = useState(\n Object.keys(settings)[0]\n );\n\n const isSelectedAll =\n Object.values(settings).reduce(\n (sum, currentArray) => sum + currentArray.length,\n 0\n ) ===\n Object.values(settingsConfig).reduce(\n (sum, currentArray) => sum + currentArray.length,\n 0\n );\n\n const onToggleAllSelectSettings = () => {\n if (!isSelectedAll) {\n const newConfig = {\n groups: [...settings.groups.map((i) => i.id)],\n columns: [...settings.columns.map((i) => i.id)],\n filters: [...settings.filters.map((i) => i.id)],\n };\n toggleAllSelectSettings(newConfig);\n } else {\n const newConfig = {\n groups: [],\n columns: [],\n filters: [],\n };\n toggleAllSelectSettings(newConfig);\n }\n };\n\n const isGroupSelected = (group) => !settingsConfig[group].length;\n\n const onToggleGroupSetting = (group) => {\n const isSelected = isGroupSelected(group);\n if (isSelected) {\n const newConfig = {\n ...settingsConfig,\n [group]: [...settings[group].map((i) => i.id)],\n };\n toggleAllSelectSettings(newConfig);\n } else {\n const newConfig = {\n ...settingsConfig,\n [group]: [],\n };\n toggleAllSelectSettings(newConfig);\n }\n };\n return (\n \n Settings\n \n
\n {!isSelectedAll ? \"Unselect all\" : \"Select all\"}\n \n
\n
\n {Object.keys(settings).map((key) => (\n <>\n
\n
\n
\n {!isMobile ? (\n key.toUpperCase()\n ) : (\n setSelectedMobileTab(key)}\n style={{\n cursor: 'pointer',\n borderBottom:\n selectedMobileTab === key\n ? \"2px solid blue\"\n : \"none\",\n }}\n >\n {key.toUpperCase()}\n
\n )}\n
\n onToggleGroupSetting(key)}\n checked={isGroupSelected(key)}\n type=\"checkbox\"\n id={`checkbox-${key}-group`}\n />\n
\n
\n \n ))}\n \n {\n settings[selectedMobileTab].map((setting) => (\n \n ))\n }\n
\n
\n );\n}\n","import React, { useEffect, useState } from \"react\";\nimport http from \"../../services/http\";\nimport { useSelector } from \"react-redux\";\nimport { MDBCard } from \"mdbreact\";\nimport Filters from \"./Filters\";\nimport StatisticsTable from \"./StatisticsTable\";\nimport SettingsModal from \"./SettingsModal\";\nimport moment from \"moment\";\nimport { CSVLink } from \"react-csv\";\n\nconst NewStatisticsPage = () => {\n const choosedSiteId = useSelector((state) => state.app.choosedSiteId);\n\n const initialSettingsConfig = localStorage.getItem(\"settings-config\")\n ? JSON.parse(localStorage.getItem(\"settings-config\"))\n : {\n // columns: [\"emailConfirmed\", \"fpSu\", \"fp4s\", \"fpFtd\", \"online\"],\n columns: [],\n groups: [\"utmsource\"],\n filters: [\"utm_content\"],\n };\n\n const [filterForm, setFilterForm] = useState({\n Age: \"\",\n SubId: \"\",\n UtmCampaign: \"\",\n UtmSource: \"\",\n WebId: \"\",\n });\n\n const [dateForm, setDateForm] = useState({\n from: moment().startOf(\"month\").format(\"YYYY-MM-DD\"),\n to: moment().format(\"YYYY-MM-DD\"),\n });\n\n const [settingsConfig, setSettingsConfig] = useState(initialSettingsConfig);\n\n const [data, setData] = useState([]);\n\n const [hidedRows, setHidedRows] = useState([]);\n\n const [isSettingsVisible, setIsSettingsVisible] = useState(false);\n const [isLoading, setIsLoading] = useState(false);\n const [groupingOptions, setGroupingOptions] = useState([]);\n const [loadingGrouping, setLoadingGrouping] = useState(true);\n\n const [grouping, setGrouping] = useState({\n first: \"partner\",\n second: \"linkid\",\n third: \"webid\",\n });\n\n const tableConfig = settingsConfig.columns;\n\n useEffect(() => {\n loadGrouping();\n }, []);\n\n useEffect(() => {\n fetchInitialData();\n }, [choosedSiteId]);\n\n const onChangeSetting = (configGroup, id) => {\n const currentConfigGroup = settingsConfig[configGroup].includes(id)\n ? settingsConfig[configGroup].filter((i) => i !== id)\n : [...settingsConfig[configGroup], id];\n\n const newSettingsConfig = {\n ...settingsConfig,\n [configGroup]: currentConfigGroup,\n };\n setSettingsConfig(newSettingsConfig);\n localStorage.setItem(\"settings-config\", JSON.stringify(newSettingsConfig));\n };\n\n const toggleAllSelectSettings = (newConfig) => {\n setSettingsConfig(newConfig);\n localStorage.setItem(\"settings-config\", JSON.stringify(newConfig));\n };\n\n const groupSettings = settingsConfig.groups;\n const fileterdGroupingOptions = groupingOptions.filter(\n (option) => !groupSettings.includes(option.value)\n );\n\n const groupParams = groupingOptions.map((option) => ({\n label: option.label,\n value: option.value,\n }));\n\n const loadGrouping = async () => {\n setLoadingGrouping(true);\n const { data } = await http.get(\"/reports/main3_grouping\");\n setGroupingOptions(\n data.map((item) => ({\n label: item.text === \"Path\" ? \"Landing\" : item.text,\n value: item.value,\n }))\n );\n setLoadingGrouping(false);\n };\n\n const handleSubmit = async () => {\n fetchInitialData();\n };\n\n const fetchInitialData = async () => {\n setIsLoading(true);\n setHidedRows([]);\n try {\n const baseParams = {\n siteId: choosedSiteId,\n StartDate: dateForm.from,\n EndDate: dateForm.to,\n ...filterForm,\n };\n const { data } = await http.get(\"/reports/main3\", {\n params: {\n grouping: grouping.first,\n ...baseParams,\n },\n });\n setData(data.filter((item) => item.grouping));\n } catch (err) {\n alert(\"Smonething went wrong\");\n }\n setIsLoading(false);\n };\n\n return (\n
\n {/* \n Export CSV\n */}\n \n \n \n \n setIsSettingsVisible(false)}\n groupParams={groupParams.map((param) => ({\n label: param.label,\n id: param.value,\n }))}\n />\n
\n );\n};\n\nexport default NewStatisticsPage;\n","import React, { PureComponent } from \"react\";\nimport { Route, Switch, withRouter } from \"react-router-dom\";\nimport { withSnackbar } from \"react-simple-snackbar\";\nimport { connect } from \"react-redux\";\n\nimport ProtectedRoute from \"../ProtectedRoute\";\n\nimport TopBar from \"../../components/TopBar\";\nimport SideBar from \"../../components/SideBar\";\n\nimport LoginPage from \"../../pages/LoginPage\";\nimport MainPage from \"../../pages/MainPage\";\nimport SitesPage from \"../../pages/SitesPage\";\nimport CreateSitePage from \"../../pages/CreateSitePage\";\nimport UsersPage from \"../../pages/UsersPage\";\nimport CreateUserPage from \"../../pages/CreateUserPage\";\nimport StatsPage from \"../../pages/StatsPage\";\nimport PartnerReport1Page from \"../../pages/PartnerReport1Page\";\nimport PartnerReport2Page from \"../../pages/PartnerReport2Page\";\nimport PartnerReport4Page from \"../../pages/PartnerReport4Page\";\nimport PartnerReport5Page from \"../../pages/PartnerReport5Page\";\nimport AffDataPage from \"../../pages/AffDataPage\";\nimport ManualActionsPage from \"../../pages/ManualActionsPage\";\nimport CuratorsPage from \"../../pages/CuratorsPage\";\nimport PartnerDealsPage from \"../../pages/PartnerDealsPage\";\nimport PartnerWebPage from \"../../pages/PartnerWebPage\";\nimport MegaChatPage from \"../../pages/MegaChatPage\";\nimport AffBalancePage from \"../../pages/AffBalancePage\";\nimport AffLinksPage from \"../../pages/AffLinksPage\";\nimport ActionsPage from \"../../pages/ActionsPage\";\nimport AllPage from \"../../pages/AllPage\";\nimport ReportPage from \"../../pages/ReportPage\";\nimport HighRollersPage from \"../../pages/HighRollersPage\";\nimport AffSalesPage from \"../../pages/AffSales\";\nimport OptimizationPage from \"../../pages/OptimizationPage\";\nimport PaymentsPage from \"../../pages/PaymentsPage\";\nimport StatisticsPage from \"../../pages/StatisticsPage\";\nimport MonthlyReportPage from \"../../pages/MonthlyReport\";\nimport PartnerStatsPage from \"../../pages/PartnerStatsPage\";\nimport ForgotPasswordPage from \"../../pages/ForgotPasswordPage\";\nimport ChangePasswordPage from \"../../pages/ChangePasswordPage\";\nimport LandingsRotator from \"../../pages/LinksPage\";\nimport NewStatisticsPage from \"../../pages/NewStatisticsPage\";\n\n\n// import { getAsyncRates } from \"../../constants/\";\nclass AppRouter extends PureComponent {\n state = {\n toggle: false,\n windowWidth: 0,\n currentPage: \"\",\n sideNavToggled: false,\n breakWidth: 1400,\n };\n\n componentDidMount() {\n const { openSnackbar } = this.props;\n const updateOnlineStatus = (event) => {\n const condition = navigator.onLine\n ? \"You are online\"\n : \" You are offline\";\n console.log(\"condition\", condition);\n openSnackbar(condition);\n };\n\n window.addEventListener(\"online\", updateOnlineStatus);\n window.addEventListener(\"offline\", updateOnlineStatus);\n\n this.handleResize();\n window.addEventListener(\"resize\", this.handleResize);\n\n // await getAsyncRates();\n }\n\n componentWillUnmount() {\n window.removeEventListener(\"resize\", this.handleResize);\n }\n\n handleResize = () => {\n this.setState({\n windowWidth: window.innerWidth,\n });\n };\n\n toggleSideNav = () => {\n if (this.state.windowWidth < this.state.breakWidth) {\n this.setState({\n sideNavToggled: !this.state.sideNavToggled,\n });\n }\n };\n\n getInitialPage = () => {\n const { user } = this.props;\n const isPartner = user?.role?.includes(\"Partner\");\n const isAffiliate = user?.role?.includes(\"Affiliate\");\n if (isPartner) {\n return MainPage;\n }\n if (isAffiliate) {\n return AffDataPage;\n }\n return StatisticsPage;\n };\n\n render() {\n const dynamicLeftPadding = {\n paddingLeft:\n this.state.windowWidth > this.state.breakWidth ? \"240px\" : \"0\",\n };\n const { authenticated, user } = this.props;\n const isAdmin = user?.role?.includes(\"dmi\");\n const isPartner = user?.role?.includes(\"Partner\");\n const isManager = user?.role?.includes(\"Manager\");\n const isAffiliate = user?.role?.includes(\"Affiliate\");\n return (\n
\n
\n {authenticated && (\n this.toggleSideNav()}\n />\n )}\n
\n
\n {authenticated && (\n \n )}\n \n {\n user?.id != '244' ? (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n ) : (\n \n \n \n )\n }\n \n
\n
\n );\n }\n}\n\nconst mapStateToProps = ({ auth }) => ({\n authenticated: auth.authenticated,\n user: auth.user,\n});\n\nexport default withSnackbar(\n withRouter(connect(mapStateToProps, null)(AppRouter))\n);\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { BrowserRouter as Router } from 'react-router-dom';\nimport { Provider} from 'react-redux';\nimport SnackbarProvider from 'react-simple-snackbar'\nimport moment from 'moment';\n\nimport TokenStorage from './services/storage/token';\nimport UserStorage from './services/storage/user';\nimport SiteStorage from './services/storage/site';\nimport configureStore from './store/configureStore';\nimport { initialState as authInitialState } from './store/auth';\nimport { initialState as appInitialState } from './store/app';\nimport '@fortawesome/fontawesome-free/css/all.min.css';\nimport 'bootstrap-css-only/css/bootstrap.min.css';\nimport 'mdbreact/dist/css/mdb.css';\nimport './App.css';\nimport './index.css';\n\nimport AppRoute from './router/AppRoute';\nimport { getExpTimeFromToken } from './helpers';\n\n\nconst token = TokenStorage.get();\nconst user = UserStorage.get();\nconst siteId = SiteStorage.get();\nconst initialState = {\n auth: {\n ...authInitialState,\n // authenticated: !!token && (moment(moment().unix()).isBefore(getExpTimeFromToken(token))),\n authenticated: !!token,\n user: user,\n },\n app: {\n ...appInitialState,\n choosedSiteId: Boolean(siteId) ? siteId : 3,\n }\n};\n\nconst store = configureStore(initialState);\n\nReactDOM.render(\n \n \n \n \n \n \n \n \n ,\n document.getElementById('root')\n);\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\n// reportWebVitals();"],"sourceRoot":""}
{row.param1}{row.param2}{row.fillProfiles}{row.emailConfirmed}{row.purchases}{row.moneyAmount}
{row.fid !== -1 ? {sitesConfig[choosedSiteId]}{row.fid} : ''}{row.chats <= 0 ? row.chats: ''}{row.chats > 0 ? row.chats: ''}\n {row.balance}\n {moment(row.date).format('MM/DD/YYYY HH:mm:ss')}
{renderFirstColumn(row)}{Math.round((row.signUps / row.fillProfiles) * 100)}%{Math.round((row.sms4Plus35 / row.fillProfiles) * 100)}%{Math.round((row.ftd / row.fillProfiles) * 100)}%{row.registrations}{row.fillProfiles}{row.emailConfirmed}{row.signUps}{row.survey}{row.sms4Plus35}{Math.floor(row.online / row.fillProfiles)}{row.sales}{row.ftd}{row.coins}{row.money}
\n Total\n \n {Math.round((countSum(\"signUps\") / countSum(\"fillProfiles\")) * 100)}%\n \n {Math.round((countSum(\"sms4Plus35\") / countSum(\"fillProfiles\")) * 100)}%\n \n {Math.round((countSum(\"ftd\") / countSum(\"fillProfiles\")) * 100)}%\n \n {countSum(\"registrations\")}\n \n {countSum(\"fillProfiles\")}\n \n {countSum(\"emailConfirmed\")}\n \n {countSum(\"signUps\")}\n \n {countSum(\"survey\")}\n \n {countSum(\"sms4Plus35\")}\n \n {Math.floor(countSum(\"online\") / countSum(\"fillProfiles\"))}\n \n {countSum(\"sales\")}\n \n {countSum(\"ftd\")}\n \n {countSum(\"coins\")}\n \n {countSum(\"money\")}\n
{row.label}
{item[row.fieldName]}
{item.fillProfiles}{item.firstPurchases}{item.purchaseAmount}\n {item.moneyAmount} {item.moneyAmountCurrency}\n \n {item.payoutAmount} {item.payoutAmountCurrency}\n \n {countRoi(\n item.moneyAmount,\n item.payoutAmount,\n item.payoutAmountCurrency,\n item.moneyAmountCurrency\n )}\n \n {countProfit(\n item.moneyAmount,\n item.payoutAmount,\n item.payoutAmountCurrency,\n item.moneyAmountCurrency\n )}\n
{content}
{getFirstColumnName()}{header}
\n {isExpandVisible() && (\n \n )}\n {row.grouping}\n \n setHidedRows([...hidedRows, row.grouping])}\n />\n
\n
\n \n
\n
\n
\n \n
\n
Grouping{header}
\n
\n \n
\n
No data