\r\n )\r\n }\r\n />);\r\n}\r\n\r\nexport default CustomRoute;","import React, { useEffect } from \"react\";\r\n// To do remove the default and customize a BS 4.5 Stylesheet for the theme.\r\n//import '@shoutout-labs/shoutout-themes-enterprise/es/themes/default/bootstrap.min.css';\r\nimport \"@shoutout-labs/shoutout-themes-enterprise/es/themes/enterprise-loyalty/bootstrap.min.css\";\r\nimport { Switch } from \"react-router-dom\";\r\nimport { UserContextProvider } from \"./Contexts/userContext\";\r\nimport { DataContextProvider } from \"./Contexts/dataContext\";\r\nimport { KeycloakContextProvider } from \"./Contexts/keycloakAuthServiceContext\";\r\nimport Home from \"./Components/home/Home\";\r\nimport LoginPage from \"./Components/login/Login\";\r\nimport AuthRoute from \"./AuthRoute\";\r\nimport CustomRoute from \"./CustomRoute\";\r\n//import Notifications from \"react-notify-toast\";\r\nimport { datadogRum } from \"@datadog/browser-rum\";\r\nimport { ToastContainer, Slide } from \"react-toastify\";\r\nimport AppContext from \"AppContext\";\r\nimport \"react-toastify/dist/ReactToastify.min.css\";\r\nimport \"./App.css\";\r\n\r\nconst App = () => {\r\n useEffect(() => {\r\n\r\n if (!process.env.NODE_ENV || process.env.NODE_ENV === \"development\"||process.env.NODE_ENV === \"test\") {\r\n } else {\r\n datadogRum.init({\r\n sampleRate: 100,\r\n trackInteractions: true,\r\n defaultPrivacyLevel: \"mask-user-input\",\r\n ...AppContext.dataDogConfig,\r\n });\r\n datadogRum.startSessionReplayRecording();\r\n\r\n return () => datadogRum.stopSessionReplayRecording();\r\n }\r\n }, []);\r\n return (\r\n \r\n {/*
*/}\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nexport default App;\r\n","const reportWebVitals = onPerfEntry => {\r\n if (onPerfEntry && onPerfEntry instanceof Function) {\r\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\r\n getCLS(onPerfEntry);\r\n getFID(onPerfEntry);\r\n getFCP(onPerfEntry);\r\n getLCP(onPerfEntry);\r\n getTTFB(onPerfEntry);\r\n });\r\n }\r\n};\r\n\r\nexport default reportWebVitals;\r\n","import React from 'react';\r\nimport {\r\n Modal,\r\n ShIcon,\r\n } from \"@shoutout-labs/shoutout-themes-enterprise\";\r\nimport { ShInformationCircleOutline } from \"@shoutout-labs/shoutout-themes-enterprise/lib/ShoutOUTIcon\";\r\n\r\nclass ErrorBoundary extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = { error: null, errorInfo: null };\r\n }\r\n\r\n static getDerivedStateFromError(error) {\r\n // Update state so the next render will show the fallback UI.\r\n return { hasError: true };\r\n }\r\n\r\n componentDidCatch(error, errorInfo) {\r\n this.setState({\r\n error: error,\r\n errorInfo: errorInfo,\r\n });\r\n\r\n // Log error info somewhere\r\n }\r\n\r\n render() {\r\n if (this.state.errorInfo) {\r\n return (\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n Something went wrong. \r\n \r\n {this.state.error && this.state.error.toString()}\r\n \r\n {this.state.errorInfo.componentStack}\r\n
\r\n \r\n \r\n
\r\n )\r\n }\r\n return this.props.children;\r\n }\r\n}\r\n\r\nexport default ErrorBoundary","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport './index.css';\r\nimport App from './App';\r\n// import * as serviceWorker from './serviceWorker';\r\n//import * as firebase from 'firebase/app';\r\nimport { BrowserRouter as Router} from \"react-router-dom\";\r\nimport reportWebVitals from './reportWebVitals';\r\nimport ErrorBoundary from './ErrorBoundary';\r\n\r\n/*const FIREBASE_CONFIG = {\r\n apiKey: \"AIzaSyA0u47etXNbMye-ba8fT6fwjvNSnFiBJFM\",\r\n authDomain: \"shoutout-82d85.firebaseapp.com\",\r\n databaseURL: \"https://shoutout-82d85.firebaseio.com\",\r\n storageBucket: \"shoutout-82d85.appspot.com\",\r\n messagingSenderId: \"406431960011\"\r\n};\r\n\r\nfirebase.initializeApp(FIREBASE_CONFIG); */\r\n\r\nReactDOM.render(\r\n \r\n \r\n \r\n \r\n ,\r\n document.getElementById('root')\r\n);\r\n\r\n// If you want your app to work offline and load faster, you can change\r\n// unregister() to register() below. Note this comes with some pitfalls.\r\n// Learn more about service workers: https://bit.ly/CRA-PWA\r\nreportWebVitals();\r\n","const CardGenerateJobStatus = {\r\n PENDING : 'PENDING',\r\n PRINTING : 'PRINTING',\r\n PRINTED : 'PRINTED',\r\n DISPATCHED : 'DISPATCHED', \r\n NEW_REQUEST : 'REQUESTED',\r\n COMPLETED : 'COMPLETED',\r\n FAILED : 'FAILED'\r\n };\r\n \r\n export default CardGenerateJobStatus;\r\n ","export * from \"./dataContext\";\r\nexport * from \"./userContext\";\r\nexport * from \"./membersContext\";\r\nexport * from \"./identityUsersContext\";","import {\r\n UilCalender,\r\n UilCalendarAlt,\r\n UilCoins,\r\n UilFileBookmarkAlt,\r\n UilEllipsisV,\r\n UilEnvelope,\r\n UilFile,\r\n UilGift,\r\n UilMedal,\r\n UilPhone,\r\n UilTachometerFastAlt,\r\n UilUser,\r\n UilImage,\r\n UilPlus,\r\n UilPlug,\r\n UilUsersAlt,\r\n UilTrashAlt,\r\n UilEdit,\r\n UilAlignJustify,\r\n UilPen,\r\n UilCheck,\r\n UilAngleDown,\r\n UilAngleRight,\r\n UilAngleLeft,\r\n UilAngleUp,\r\n UilCopy,\r\n UilSpinner,\r\n UilPlusCircle,\r\n UilListUl,\r\n UilTimes,\r\n UilBuilding,\r\n UilCreditCard,\r\n UilCircle,\r\n UilMapMarker,\r\n UilTimesCircle,\r\n UilCardAtm,\r\n UilTransaction,\r\n UilMapMarkerAlt,\r\n UilSync,\r\n UilLocationArrow,\r\n UilStore,\r\n UilLabel,\r\n UilObjectGroup,\r\n UilPower,\r\n UilGlobe,\r\n UilUsdSquare,\r\n UilChartBar,\r\n UilAngleLeftB,\r\n UilFileCheckAlt,\r\n UilMapMarkerInfo,\r\n UilHome,\r\n UilInfoCircle,\r\n UilUserPlus,\r\n UilCheckCircle,\r\n UilExclamationCircle,\r\n UilLayerGroup,\r\n UilClock,\r\n UilTruck,\r\n UilFileExport,\r\n UilEnter,\r\n UilAward,\r\n UilPlay,\r\n UilTrophy,\r\n UilEye,\r\n UilArrowUp,\r\n UilGold,\r\n UilEyeSlash,\r\n UilDollarAlt,\r\n UilEnvelopeOpen,\r\n UilCommentsAlt,\r\n UilMessage,\r\n UilTagAlt,\r\n UilHeart,\r\n UilUsdCircle,\r\n UilDashboard,\r\n UilPostcard,\r\n UilMoneyStack,\r\n UilMoneyBillStack,\r\n UilDollarSign,\r\n UilHistoryAlt,\r\n UilFileImport,\r\n UilSyncExclamation,\r\n UilExclamationTriangle,\r\n UilChart,\r\n UilSlidersV,\r\n UilSetting,\r\n UilLockAccess,\r\n UilShare,\r\n UilBell,\r\n UilArrowCircleDown,\r\n UilArrowCircleUp,\r\n UilWrench,\r\n UilTag,\r\n UilBars,\r\n UilStar,\r\n UilLaptop,\r\n UilMobileAndroidAlt,\r\n UilMars,\r\n UilVenus,\r\n UilHourglass,\r\n UilShoppingBasket,\r\n UilHeartbeat,\r\n UilHeartRate,\r\n UilBill,\r\n UilArrowLeft,\r\n UilStepForward,\r\n UilKeyholeCircle,\r\n UilArrowCircleRight,\r\n UilPhoneAlt,\r\n UilClipboardAlt,\r\n UilUserCheck,\r\n UilUserCircle,\r\n UilPostStamp,\r\n UilArrowDown,\r\n UilPrint,\r\n UilThLarge,\r\n UilFacebook,\r\n UilFacebookMessenger,\r\n UilChatInfo,\r\n UilUserSquare,\r\n UilAngleRightB,\r\n UilProcess,\r\n UilImport,\r\n UilSearch,\r\n UilSearchAlt,\r\n UilLock,\r\n UilMinusCircle,\r\n UilSuitcase,\r\n UilFileGraph,\r\n} from \"@iconscout/react-unicons\";\r\n\r\nexport {\r\n UilCalender as faCalendar,\r\n UilImport as faImport,\r\n UilCalendarAlt as faCalendarAlt,\r\n UilCoins as faCoins,\r\n UilFileBookmarkAlt as faFileBookmarkAlt,\r\n UilEllipsisV as faEllipsisV,\r\n UilEnvelope as faEnvelope,\r\n UilFile as faFile,\r\n UilGift as faGift,\r\n UilMedal as faMedal,\r\n UilPhone as faPhone,\r\n UilTachometerFastAlt as faTachometerAlt,\r\n UilUser as faUserAlt,\r\n UilUser as faUser,\r\n UilImage as faImage,\r\n UilPlus as faPlus,\r\n UilPlug as faPlug,\r\n UilUsersAlt as faUsers,\r\n UilTrashAlt as faTrash,\r\n UilPen as faPen,\r\n UilEdit as faEdit,\r\n UilAlignJustify as faAlignJustify,\r\n UilCheck as faCheck,\r\n UilAngleDown as faAngleDown,\r\n UilAngleRight as faAngleRight,\r\n UilAngleLeft as faAngleLeft,\r\n UilAngleUp as faAngleUp,\r\n UilCopy as faCopy,\r\n UilSpinner as faSpinner,\r\n UilPlusCircle as faPlusCircle,\r\n UilListUl as faListAlt,\r\n UilTimes as faTimes,\r\n UilBuilding as faBuilding,\r\n UilCreditCard as faCreditCard,\r\n UilCircle as faCircleNotch,\r\n UilMapMarker as faMap,\r\n UilTimesCircle as faTimesCircle,\r\n UilCardAtm as faCardAtm,\r\n UilTransaction as faTransaction,\r\n UilMapMarkerAlt as faMapMarkerAlt,\r\n UilSync as faSync,\r\n UilLocationArrow as faLocationArrow,\r\n UilStore as faStore,\r\n UilLabel as faLabel,\r\n UilObjectGroup as faObjectGroup,\r\n UilPower as faPower,\r\n UilGlobe as faGlobe,\r\n UilUsdSquare as faUsdSquare,\r\n UilChartBar as faChartBar,\r\n UilAngleLeftB as faAngleLeftB,\r\n UilFileCheckAlt as faFileCheckAlt,\r\n UilMapMarkerInfo as faMapMarkerInfo,\r\n UilHome as faHome,\r\n UilInfoCircle as faInfoCircle,\r\n UilUserPlus as faUserPlus,\r\n UilCheckCircle as faCheckCircle,\r\n UilExclamationCircle as faExclamationCircle,\r\n UilLayerGroup as faLayerGroup,\r\n UilClock as faClock,\r\n UilTruck as faDispatch,\r\n UilFileExport as faFileExport,\r\n UilEnter as faUndo,\r\n UilAward as faAward,\r\n UilPlay as faStart,\r\n UilTrophy as faTrophy,\r\n UilEye as faEye,\r\n UilArrowUp as faArrowUp,\r\n UilGold as faQuantity,\r\n UilEyeSlash as faEyeSlash,\r\n UilDollarAlt as faDollarSign,\r\n UilEnvelopeOpen as faEnvelopeOpen,\r\n UilCommentsAlt as faCommentsAlt,\r\n UilMessage as faMessage,\r\n UilTagAlt as faTagAlt,\r\n UilHeart as faHeart,\r\n UilUsdCircle as faUsdCircle,\r\n UilDashboard as faDashboard,\r\n UilPostcard as faPostcard,\r\n UilMoneyStack as faMoneyStack,\r\n UilMoneyBillStack as faMoneyBillStack,\r\n UilDollarSign as faDollarSignAlt,\r\n UilHistoryAlt as faHistoryAlt,\r\n UilFileImport as faFileImport,\r\n UilSyncExclamation as faSyncExclamation,\r\n UilExclamationTriangle as faExclamationTriangle,\r\n UilChart as faChart,\r\n UilSlidersV as faSlidersV,\r\n UilSetting as faSetting,\r\n UilLockAccess as faLockAccess,\r\n UilShare as faShare,\r\n UilBell as faBell,\r\n UilArrowCircleDown as faArrowCircleDown,\r\n UilArrowCircleUp as faArrowCircleUp,\r\n UilTag as faTag,\r\n UilWrench as faWrench,\r\n UilBars as faBars,\r\n UilStar as faShapes,\r\n UilLaptop as faLaptop,\r\n UilMobileAndroidAlt as faMobileAlt,\r\n UilMars as faMars,\r\n UilVenus as faVenus,\r\n UilHourglass as faHourglassHalf,\r\n UilShoppingBasket as faShoppingBasket,\r\n UilHeartbeat as faHeartbeat,\r\n UilHeartRate as faHeartRate,\r\n UilBill as faHandHoldingUsd,\r\n UilArrowLeft as faArrowLeft,\r\n UilStepForward as faStepForward,\r\n UilKeyholeCircle as faKey,\r\n UilArrowCircleRight as faArrowAltCircleRight,\r\n UilPhoneAlt as faPhoneAlt,\r\n UilClipboardAlt as faClipboardList,\r\n UilUserCheck as faUserCheck,\r\n UilUserCircle as faUserCog,\r\n UilPostStamp as faAddressCard,\r\n UilArrowDown as faCaretDown,\r\n UilPrint as faPrint,\r\n UilThLarge as faThLarge,\r\n UilFacebook as faFacebook,\r\n UilFacebookMessenger as faFacebookMessenger,\r\n UilChatInfo as faWpforms,\r\n UilUserSquare as faUserSquare,\r\n UilAngleRightB as faAngleRightB,\r\n UilProcess as faProcess,\r\n UilSearch as faSearch,\r\n UilSearchAlt as faSearchAlt,\r\n UilMinusCircle as fsMinusCircle,\r\n UilLock as faLock,\r\n UilSuitcase as faSuitcase,\r\n UilFileGraph as faFileGraph,\r\n};\r\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFAAAABGCAYAAABbnhMrAAAKkElEQVR42u2cC1BU5xXHt23aJhJj5LW7IIqKjxiNRsRorJk6adOX09g4zpg2MWkmNU0nJrFtYk3GmEmmTp0kzXQmmYwxIOwLhIDEmiCIBd8YHQiKKOy9d5dddnk/ll0W9sXp/7u7KIogy0ME7jdzxmHY3ev93f8553++uxeZ7Ib1aVn9vQmZfEK0lvunXM3plVrBi+iaaBGl4TvDVVzRogzDtofTqxZsKKMfyW61nlCVhsxOFTbPTBUKlVq+FeESP0wr0EQLEaSGd8XohJbpWsPxWDX30obD5tA+4V2ooqnTtLwqXM23KjQTE9pNQWr8EaHibFOS9XtlH+SG9IK3oaD+XgYvTMVL0PoJOUCGqfVJW77R//i6mheLtGXKkyDdOiLUfNf8NOOWdKIfiAAfyhAeiU01FCq0UtoOsDYSMrX0pwct80WA0Tp+l1Ktt0lwgkhlNWeLSOGeI6LvyeQaTq/Q8G4JzMADvLrmpQv/Fmtht8+TwAQFkGakChnx6fwUmQRvcABnphnylmdVh0kABwtQx+cuz7osAZQASgBH3rcpAyMZO3EWckSk2h/s5+lanuakGSgu9drrJyRABkkOKJiqKDSFo6mIcIQCI+o0/B6dk+IzDLT2oJmeP2Klrafq6KOSJkq/3Er7Spvpyf+aAWcCAOxWiUKcTXm6H4AmJ3M0aR9HcTi5lV8a6TeHqmnT/2ro/TP1pLvQTKdM7VTd5ia7y0dOj486ES5vF7nwb77BTqsOVInwxzTAnukVEUgxJX6ORorF6ASaDQUtyzDSY9km+sXX1bTxiIXePllLnxQ30f6KNiq0OKmisYPqbG7qBChxdRF1AJK900s2p5ecbh95vERur4/0zZ301ql6isWxIzX8nV0DuxXDdjS6AfWMMBVHs/CaBAB6/KCJ1udZ6eVjtbSrqIH2lDZRhr6N8kwO+q7WSXyzi+rbPSIYL1TU1dVFNy6ny0tl9R101OCgo3wbFVudVA2wDGQLQH5+sZlWHzCJqmNxxzWRnul1H9IrJAm1KIWn2fjdwnQDLUfK/CGnmt5DHUq80EL5ZgddaOgkc6uLmgHH7vanGksxDyD5bgLpuoXX1Ds8lCO00dvHa+lp1LjdZxqQug5qdXrEz2GfUV7vpA04LlM2A6e83V1YEVAQC5Zu3RuOMfhdHDrZgv1Gegg1aCXS7OkcC71eCBWda6BEFOp8wU5lUBBLMQZlMIupjdWvhnY3cS0uyuXt9K9zjfRHAPs5FLUJyk0uayUrjnHtTURmm4s+Lm6kOTpxN2VQ4IYMkMGbgzr0KOCsRQ3afNRK26GgD9DJUgAoD8W4yNpO5U2dZIWKWM1htajLNzhY3csH2DVoAGeRhjoc582ieloPFS1Fuq/KqqIXjtTQF2UtVFzXQQ6kKPVQK0vZg1wbrcProwM1dtR8IKtfK6CuM0i3RqSFrcNflN0DSbFglQbolwHkC6T3K8fr6Ge4aDE61EumHqh/HS7gXkDTN3aSDZB6HR8/WqDCV1FHmc/r9oDK0TbSEWqBfoL6VYja4vL6hgzK4/V3yFoothTpnXbFRttP1NFjmUZ4NzQX1M8pCObjHv/KTDtgS0pqnOJF6yvFW3FhsytttBLqDFX5O/kdNYmw+rcE6fM5FMBOPlhlsfdw6KQs5T8pbaHXUCefgIldtN9ACnz2FJXfBM9CvfolTO97Zxsoz2hHF3X1q3QvPvu0pZ1eLqilaYHurrwTR7lux89qypaCmusLdh/Liu6aA2C7v22k36O5xGdWUZxOENXB/kOilUlhEwRPj6BM/A21taDKQTV2t9g0um5RIlin/RDNZGG6MdDc+LExC7MTX/9NNV1GLWIKYAqxw4PVtrnoFNTwH5zU7w5baDFOLAKqYpYmItC9FQHTzFT3ADr4RrwuEylcb/cMWNEdqMEnUZPZ5DEV8BVjbTOBXelw1JnVqDdXGjqoBrXsVdSw1ahh0wNKZSY5IjAmyQNqY+pNgNI25Vtp78UWKkH9Y15t4K0Zng4X7V0Y7QeR+iOVrrfFSIvzI65+HmenSqTqUqSnIqCyax0cpjqZTRs8PXW4mvYB2mUY5yZYHU+QzagdqtOUt/rn14A1UY7l7Sx2AmwMK65up1KocAnUp+yxdRSFWAGou1D/SmraB+lr/PNrNS7Qn47WkFw1PJ7ujgHIDHY50pCZ2cVITVbbln1ZRW+drqcczKJ1aAbeIRhqC4z0Z6XN4qzMJgmFZhxtqLKdjPmoQ2ZYkzOYFuahIcxFh2XWw+n23rKD9lvqAL3A6KCnMEnM0Am3PV1vG8BFUEaLwysa7MVpAuVDdUMa3wCuzuGmd6FgtiEapubH75Y+S1eWtvYOH50wtZP6UkufUAaixmY0lq8xv649ZA5scvLj+54IsxAJ2VUioCYY2nZX767K5mbNpVY6gBGrq48xjHnIC6ihf8YkMUt3bUN13N9UYgBXfWXqU1GX6zppHYwuu08Rhvj4fGOvWZZtjGrLWmleqkH0lWPgxnrusN1YZ0p5DlPEjZsEpVDTDtQwtokaDjMtGmn2Hrz+ryfrqAqWhE0SJzBJPJNnEXdaItWj3yRGpQa+eMR61a+ZMPTvxgi3AtOJ4iZb5orArLox10LvnK6j+AzjmAA3ogB3QFEe1MADFTZ6FP4vLLCNpOzDdnQb7cjufTrN2Pl27AiMcry4w8ImhOjANpL0zYQgIzrQTEZzQhjTAJXa8Q9O+nLRMANcyZ4bkQAODmCMls/0f0NVw5WgA3okMMEaaeHT5wsMd8um6/h3orR821iyEaMOUM3bY3XcS3C935exBwtjU/mzCgnggCM0mbu05mDVg+JzIkyGMamGrQqt4JDg3DrY7dYFGYadV59UYuu1Ioc8JLEiR6EWfEqNBKnPW7ka3h2SVJG78/z5Sb0eOIxLM80OV/EHkN8dUj3sHeFqzjlVxWt+m30lqu/nhXNrIx/Yz20LTeEsbJaNGEMD/sg80sWLM31IUqX14QzDtpk6QS4byPrLMUvMkizhjYUZxkK8+cqkxApzyL5KkxiJlab7k/WWKA3vGv40YdtZnHtykt7KjnP1mKMQ9yRVVspVXGFCluEfWaW1kbLBrJ0FdNcb3xoUb56zzNt51jbXHw1zV2Wb18jVQvlwA8TVdsGgfvbMUctSdpxrx7z9sfV0Y/TmPXt+KBuJdbfKODNSw5cMqzVQcZ4YrfD+tPR+HqsfL2tKYsUspNp3wwSvK0zF2WekCjtkE2UNF0Dxe9QqvilSJfxduecm1kAC2H+Hg22qe+yQ5QW5qjZENpHWUAGyB5ZDU/iGF4+Zfy2biGsoAJmjhym9tCzL9CTr8hLA4HYxWLe9uDjbuOa6WVICOLA9NHTbosXpFdGyib6CBcgmjLAUrkCZzMXLpBUcwAg1R1OTKw/fp+XmSOSCAKgUpwveF59p1IUnXpksUQsCoNJ/j9g1M1VQv368QSkRCxIgOm1H3H7jh68UN0RJtIIAGPi7Ug625f2rnn/hTFo3AGS7MQCo1PI37NryrREq/fatp+keiVJ/G64F9YrZacb87q+t+RsGVw2rsuXZ3Ak21w5m7SwouGtuuvAsVGjBaOaTq7ny6Rp+rSx9Ak8X0hrc+j8MrErYrV8/UAAAAABJRU5ErkJggg==\"","import ShoutOUTLogo from \"./assets/images/shoutout_logo.png\";\r\nimport DilmahLogo from \"./assets/images/dilmah/dilmah.svg\";\r\n// const DefaultContext = {\r\n// logo: ShoutOUTLogo,\r\n// keycloakConfig: process.env.REACT_APP_KEYCLOAK_CONFIG, //`${process.env.PUBLIC_URL}/assets/config/keycloak.json`,\r\n// baseUrl: \"https://enterprise.api.topnotch.club/api/\",\r\n// };\r\nconst DimahContext = {\r\n logo: DilmahLogo,\r\n keycloakConfig: `${process.env.PUBLIC_URL}/assets/config/dilmah/keycloak.json`,\r\n baseUrl: \"https://loyaltyapi-uat.dilmaht-lounge.com/api/\",\r\n};\r\n\r\nconst DefaultContext = {\r\n logo: ShoutOUTLogo,\r\n // keycloakConfig: {\r\n // \"realm\": process.env.REACT_APP_KEYCLOAK_REALM,\r\n // \"auth-server-url\": process.env.REACT_APP_KEYCLOAK_AUTH_SERVER_URL,\r\n // // \"ssl-required\": process.env.REACT_APP_KEYCLOAK_SSL_REQUIRED||true,\r\n // \"clientId\": process.env.REACT_APP_KEYCLOAK_RESOURCE,\r\n // \"resource\": process.env.REACT_APP_KEYCLOAK_RESOURCE,\r\n // // \"public-client\": true,\r\n // // \"confidential-port\": 0,\r\n // },\r\n keycloakConfig: `${process.env.PUBLIC_URL}/assets/config/${process.env.REACT_APP_KEYCLOAK_FILE_NAME}`,\r\n baseUrl:\r\n process.env.REACT_APP_API_BASE_URL ||\r\n \"https://betaenterprise.api.topnotch.club/api/\",\r\n baseUrlLoyalty:process.env.BASE_URL_LOYALTY || 'https://loyaltybeta.api.topnotch.club/api/',\r\n dataDogConfig: {\r\n applicationId: process.env.REACT_APP_DATADOG_APPLICATION_ID,\r\n clientToken: process.env.REACT_APP_DATADOG_CLIENT_TOKEN,\r\n site: process.env.REACT_APP_DATADOG_SITE,\r\n service: process.env.REACT_APP_DATADOG_SERVICE,\r\n env: process.env.REACT_APP_DATADOG_ENV,\r\n version: process.env.REACT_APP_VERSION||\"1.0.0\"\r\n },\r\n};\r\n\r\nlet context;\r\n\r\nswitch (process.env.REACT_APP_BUILD_VARIANT) {\r\n case \"dilmah\": {\r\n context = DimahContext;\r\n break;\r\n }\r\n // case \"dev\": {\r\n // context = DevContext;\r\n // break;\r\n // }\r\n default: {\r\n context = DefaultContext;\r\n break;\r\n }\r\n}\r\n\r\nexport default context;\r\n","export default __webpack_public_path__ + \"static/media/dilmah.a25ab373.svg\";","const MemberStatus = {\r\n ACTIVE: \"ACTIVE\",\r\n SUSPENDED: \"SUSPENDED\",\r\n ARCHIVED: \"ARCHIVED\",\r\n};\r\n\r\nconst MemberTypes = {\r\n PRIMARY: \"PRIMARY\",\r\n SECONDARY: \"SECONDARY\",\r\n CHARITY: \"CHARITY\",\r\n};\r\nconst PreferredContactMethods = {\r\n Email: \"EMAIL\",\r\n Mobile: \"MOBILE\",\r\n EmailAndMobile: \"EMAIL_AND_MOBILE\",\r\n};\r\n\r\nconst IdTypeSelector = [\r\n { value: \"NATIONAL_ID\", id: \"nationalID\", label: \"National Id\" },\r\n { value: \"DRIVER_LICENSE\", id: \"driversLicense\", label: \"Drivers License\" },\r\n { value: \"PASSPORT\", id: \"passport\", label: \"Passport\" },\r\n];\r\n\r\nconst IdentificationNumbersLabelColors = {\r\n PASSPORT: \"info\",\r\n DRIVER_LICENSE: \"primary\",\r\n NATIONAL_ID: \"secondary\",\r\n};\r\n\r\nconst AddPointsTabs = {\r\n BILL: \"BILL\",\r\n POINTS: \"POINTS\",\r\n};\r\n\r\nexport {\r\n MemberStatus,\r\n MemberTypes,\r\n PreferredContactMethods,\r\n IdTypeSelector,\r\n IdentificationNumbersLabelColors,\r\n AddPointsTabs,\r\n};\r\n","const convertArrayToObject = (array, key, setValue) => {\r\n return array.reduce((obj, item) => {\r\n if (setValue) {\r\n obj[item[key]] = setValue ;\r\n } else {\r\n obj[item[key]] = item[key] ;\r\n };\r\n return obj;\r\n }, {});\r\n};\r\n\r\nconst optionsToArray = options => {\r\n delete options._id;\r\n const newArr = Object.keys(options);\r\n return newArr.map(option => {\r\n return {\r\n \"key\": option,\r\n \"value\": (options[option])\r\n };\r\n });\r\n};\r\n\r\nexport { convertArrayToObject, optionsToArray };","import { faFacebookMessenger, faFacebook, faWpforms } from \"FaICIconMap\";\r\n import AppContext from './AppContext';\r\n//const BASE_URL = \"https://hu290cdxk8.execute-api.us-east-1.amazonaws.com/\";\r\n\r\nconst BASE_URL = AppContext.baseUrl;\r\nconst BASE_URL_LOYALTY = AppContext.baseUrlLoyalty;\r\n\r\nconst APP_LOYALTY = \"LOYALTY\";\r\nconst APP_ENGAGEMENT = \"ENGAGE\";\r\nconst APP_LITE = \"LITE\";\r\nconst APP_COLLECT = \"COLLECT\";\r\nconst APP_GAMIFICATION = \"POLL\";\r\n\r\nconst OPTOUT_TEMPLATES = {\r\n TEMPLATE1: \"*SMS STOP {{keyword}} to {{mobileNumber}}\",\r\n TEMPLATE2: \"*SMS STOP to {{mobileNumber}}\",\r\n TEMPLATE3: \"*Reply STOP to opt-out\",\r\n}\r\n\r\n\r\nconst activityTypes = {\r\n REGISTER_LOYALTY: {\r\n name: \"Register Loyalty\",\r\n templateId: 12\r\n },\r\n COLLECT_POINTS: {\r\n name: \"Earned Points\",\r\n templateId: 10\r\n },\r\n REDEEM_POINTS: {\r\n name: \"Redeemed Points\",\r\n templateId: 11\r\n },\r\n REDEEM_REWARD: {\r\n name: \"Redeem Reward\",\r\n templateId: 13\r\n },\r\n CLAIMED_REWARD: {\r\n name: \"Claimed Reward\",\r\n templateId: 23\r\n },\r\n COUPON_ISSUED: {\r\n name: \"Coupon Issued\",\r\n templateId: 15\r\n },\r\n}\r\n\r\nconst Params= {\r\n BASE_URL ,\r\n BASE_URL_LOYALTY,\r\n TRANSPORT_SMS: 'SMS',\r\n TRANSPORT_WHATSAPP: 'WHATSAPP',\r\n TRANSPORT_MESSENGER: 'FACEBOOK_MESSENGER',\r\n MAX_SMS_LENGTH: 459,\r\n MAX_SMS_PAGES: 3,\r\n TRANSPORT_EMAIL: 'EMAIL',\r\n CAMPAIGN_BROADCAST: 'BROADCAST',\r\n CAMPAIGN_TRIGGER: 'EVENT',\r\n CONTACTS_LOAD_BATCH_SIZE: 100,\r\n CAMPAIGN_STATUS: {\r\n\r\n RUNNING: {\r\n name: 'Running',\r\n icon: 'hourglass',\r\n className: 'status-running',\r\n showReport: false,\r\n enabledDelete: false\r\n },\r\n\r\n SCHEDULED: {\r\n name: 'Scheduled',\r\n icon: 'clock',\r\n className: 'status-scheduled',\r\n showReport: false,\r\n enabledDelete: true\r\n },\r\n FAILED: {\r\n name: 'Failed',\r\n icon: 'times-circle',\r\n className: 'status-failed',\r\n showReport: true,\r\n enabledDelete: true\r\n },\r\n REJECTED: {\r\n name: 'Rejected',\r\n icon: 'ban',\r\n className: 'status-failed',\r\n showReport: false,\r\n enabledDelete: true\r\n },\r\n REVIEWING: {\r\n name: 'Reviewing',\r\n icon: 'search',\r\n className: 'status-warning',\r\n showReport: false,\r\n enabledDelete: false\r\n },\r\n CREATING: {\r\n name: 'Creating',\r\n icon: 'sync',\r\n className: 'status-creating',\r\n showReport: false,\r\n enabledDelete: false\r\n },\r\n\r\n INSUFFICIENT_CREDITS: {\r\n name: 'Insufficient Credits',\r\n icon: 'exclamation-triangle',\r\n className: 'status-warning',\r\n chargingFailed: true,\r\n showReport: true,\r\n enabledDelete: true\r\n },\r\n\r\n FINISHED: {\r\n name: 'Finished',\r\n icon: 'check-circle',\r\n className: 'status-finished',\r\n showReport: true,\r\n enabledDelete: true\r\n },\r\n\r\n LISTENING: {\r\n name: 'Listening',\r\n icon: 'assistive-listening-systems',\r\n className: 'status-listening',\r\n showReport: true,\r\n enabledDelete: true\r\n },\r\n\r\n },\r\n EVENT_TEMPLATES: {\r\n DEFAULT: 0,\r\n LOYALTY_POINT_COLLECTED: 10,\r\n LOYALTY_POINT_REDEEMED: 11,\r\n LOYALTY_REGISTERED: 12,\r\n LOYALTY_REWARD_REDEEMED: 13,\r\n ENGAGEMENT_CAMPAIGN_CREATED: 14,\r\n ENGAGEMENT_COUPON_ISSUED: 15,\r\n ENGAGEMENT_FORM_RESPONSE: 16,\r\n ENGAGEMENT_CUSTOM_EVENT: 17,\r\n MESSAGE_INCOMING_SMS: 18,\r\n MESSAGE_OUTGOING_SMS: 19,\r\n MESSAGE_OUTGOING_EMAIL: 20,\r\n MESSAGE_INCOMING_EMAIL: 21\r\n },\r\n LOG_STATUS_MAP: {\r\n '1001': 'SENT', //successfully submitted\r\n '1002': 'FAILED', //Invalid url\r\n '1003': 'FAILED', //Authentication failed\r\n '1004': 'FAILED', //Invalid data for type field\r\n '1005': 'FAILED', //Invalid data for message field\r\n '1006': 'INVALID DESTINATION', //Invalid MSISDN\r\n '1007': 'INVALID SENDER ID', //Invalid data for source field\r\n '1008': 'FAILED', //Invalid data for dlr field\r\n '1010': 'FAILED', //Internal error\r\n '1011': 'FAILED', //Response timeout\r\n '1012': 'FAILED', //No routes\r\n '1013': 'UNKNOWN',\r\n '1014': 'BOUNCED',\r\n '1015': 'BLOCKED',\r\n '1016': 'DELIVERED',\r\n '1025': 'NO CREDITS', //Insufficient credit\r\n '1026': 'SUBMITTED'\r\n },\r\n MSG_STATUS_TO_CODE_MAP: {\r\n 'SENT': '1001',\r\n 'INVALID_SENDER_ID': '1007',\r\n 'NO_CREDITS': '1025',\r\n 'INVALID_RECEIVER': '1006',\r\n 'SUBMITTED': '1026'\r\n },\r\n ALL_SEGMENT: {\r\n id: \"0\",\r\n segment: {\r\n name: 'All', data: [{\r\n \"columnName\": \"id\",\r\n \"_selectedFilter\": \"4\",\r\n \"searchKey\": \"\",\r\n \"columnType\": \"string\"\r\n }]\r\n }\r\n },\r\n RESERVED_ATTRIBUTES: ['user_id', 'mobile_number', 'email', '_created_on', 'name', 'tags', 'last_seen_on', '_modified_on', 'id'],\r\n ENGAGE_APP_URL: 'https://web.getshoutout.com',\r\n LOYALTY_APP_URL: 'https://app.topnotch.club',\r\n \r\n CAMPAIGN_PROGRESS_STATUS: {\r\n PENDING: 0,\r\n IN_PROGRESS: 1,\r\n SUCCESS: 2,\r\n FAILED: 3\r\n },\r\n SHORT_URL_DOMAIN: 'https://e-url.co',\r\n BUILD_APP: process.env.REACT_APP_PRODUCT, //\"LOYALTY or ENGAGE\"\r\n APP_LOYALTY,\r\n APP_ENGAGEMENT,\r\n APP_LITE,\r\n APP_COLLECT,\r\n APP_GAMIFICATION,\r\n INTEGRATION_APPS: {\r\n FACEBOOK_MESSENGER: {\r\n id: 'FACEBOOK_MESSENGER',\r\n icon: faFacebookMessenger,\r\n name: 'Facebook Messenger',\r\n path: 'fbmessenger',\r\n description: 'Connect with your customers via Facebook Messenger triggered messages',\r\n label: 'Beta',\r\n //component: MessengerApp\r\n },\r\n FACEBOOK_LEAD_AD: {\r\n id: 'FACEBOOK_LEAD_AD',\r\n icon: faFacebook,\r\n name: 'Facebook Lead Ad',\r\n path: 'fbleadad',\r\n //component: FacebookLeadAd\r\n },\r\n SHOUTOUT_FORM: {\r\n id: 'SHOUTOUT_FORM',\r\n name: 'ShoutOUT Forms',\r\n path: 'shoutoutforms'\r\n },\r\n TYPEFORM_APP: {\r\n id: 'TYPEFORM',\r\n icon: faWpforms,\r\n name: 'typefrom app',\r\n path: 'typeform',\r\n //component: typeForm\r\n },\r\n SHOUTOUT_POLL: {\r\n id: 'SHOUTOUT_POLL',\r\n name: 'ShoutOUT Poll',\r\n path: 'shoutoutpoll'\r\n },\r\n WHATSAPP: {\r\n id: 'WHATSAPP',\r\n name: 'WhatsApp',\r\n path: 'whatsapp'\r\n }\r\n },\r\n SMS_OPTOUT: {\r\n TYPE_TRANSACTIONAL: 'transactional',\r\n TYPE_BOTH: 'both',\r\n TYPE_PROMOTIONAL: 'promotional',\r\n TEMPLATE1: OPTOUT_TEMPLATES.TEMPLATE1,\r\n TEMPLATE2: OPTOUT_TEMPLATES.TEMPLATE2,\r\n TEMPLATE3: OPTOUT_TEMPLATES.TEMPLATE3,\r\n COUNTRIES: {\r\n \"all\": {//specify the max support length number format\r\n template: OPTOUT_TEMPLATES.TEMPLATE1,\r\n mobileNumber: \"0777123456\",\r\n keyword:\"ABC\",\r\n optoutKeywordRequired: true\r\n },\r\n \"sri lanka\": {\r\n mobileNumber: \"0777123456\",\r\n template: OPTOUT_TEMPLATES.TEMPLATE1,\r\n keyword:\"ABC\",\r\n optoutKeywordRequired: true\r\n },\r\n \"united states\": {\r\n mobileNumber: \"4431234567\",\r\n template: OPTOUT_TEMPLATES.TEMPLATE3,\r\n optoutKeywordRequired: false\r\n },\r\n \"australia\": {\r\n mobileNumber: \"04xxxxxxxx\",\r\n template: OPTOUT_TEMPLATES.TEMPLATE3,\r\n keyword:\"ABC\",\r\n optoutKeywordRequired: true\r\n }\r\n }\r\n },\r\n activityTypes\r\n};\r\n\r\nexport default Params;","import React, { useReducer, useEffect, useCallback, useContext } from \"react\";\r\nimport { toast } from \"react-toastify\";\r\nimport {\r\n getContactAttributes,\r\n getTiers,\r\n getAllMerchants,\r\n getAllMerchantLocations,\r\n getAllAffinityGroups,\r\n getRewards,\r\n getAllSubTransactionTypes,\r\n loadAllCharities,\r\n getJobTypes,\r\n getIdentityUsers,\r\n} from \"Services\";\r\nimport { UserContext } from \"./userContext\";\r\nimport {\r\n RewardStatus,\r\n RewardSubType,\r\n AccessPermissionModules,\r\n AccessPermissionModuleNames,\r\n JobTypesStatus,\r\n} from \"Data\";\r\n\r\nconst DataContext = React.createContext();\r\n\r\nconst ignoredAttributes = new Set([\r\n \"created_by\",\r\n \"_modified_on\",\r\n \"_delete_protected\",\r\n \"_email_valid\",\r\n \"_mobile_number_valid\",\r\n \"notificationPreference\",\r\n \"customAttributes\",\r\n]);\r\nconst initialState = {\r\n config: {\r\n rewards: {},\r\n points: {},\r\n // tiers: {}\r\n },\r\n enableEdit: false,\r\n isLoading: true,\r\n // selectedTier : newTierObj,\r\n // tierAction : \"Add\",\r\n // isSave: false,\r\n isLoadingContactAttributes: true,\r\n contactAttributes: {},\r\n tags: [],\r\n isLoadingTiers: false,\r\n tiers: [],\r\n merchants: [],\r\n merchantLocations: {},\r\n // isLoadingRegions: false,\r\n // regions: [],\r\n affinityGroups: [],\r\n isLoadingAffinityGroups: false,\r\n isLoadingPartnerRewards: false,\r\n rewards: [],\r\n partnerRewardConfigs: {},\r\n isLoadingSubTransactionTypes: false,\r\n subTransactionTypes: [],\r\n isLoadingCharities: false,\r\n charities: [],\r\n isLoadingJobTypes: false,\r\n jobTypes: [], //TODO: [MLS-3371] Admin panel> Move job types to jobs scoped context as it is not required globally\r\n jsonSchemaForJobTypes: [],\r\n usersList: [],\r\n};\r\n\r\nconst DataContextActions = {\r\n // GET_LOYALTY_CONFIG: \"getLoyaltyConfig\",\r\n // SET_LOADING_REGIONS: \"setLoadingRegions\",\r\n // GET_REGIONS_CONFIG: \"getRegionsConfig\",\r\n //UPDATE_LOYALTY_CONFIG: \"updateLoyaltyConfig\",\r\n SET_CONTACT_ATTRIBUTES: \"setContactAttributes\",\r\n SET_LOADING_CONTACT_ATTRIBUTES: \"setLoadingContactAttributes\",\r\n GET_TIERS: \"getTiers\",\r\n SET_LOADING_TIERS: \"setLoadingTiers\",\r\n SET_MERCHANTS: \"setMerchants\",\r\n SET_MERCHANT_LOCATIONS: \"SET_MERCHANT_LOCATIONS\",\r\n SET_AFFINITY_GROUPS: \"setAffinityGroups\",\r\n SET_IS_LOADING_AFFINITY_GROUPS: \"setIsLoadingAffinityGroups\",\r\n SET_IS_LOADING_PARTNER_REWARDS: \"setIsLoadingPartnerRewards\",\r\n SET_IS_LOADING_SUB_TRANSACTION_TYPES: \"setIsLoadingSubTransactionTypes\",\r\n SET_SUB_TRANSACTION_TYPES: \"setSubTransactionTypes\",\r\n SET_IS_LOADING_CHARITIES: \"setIsLoadingCharities\",\r\n SET_CHARITIES: \"setCharities\",\r\n SET_IS_LOADING_JOB_TYPES: \"setIsLoadingJobTypes\",\r\n SET_JOB_TYPES_DATA: \"setJobTypesData\",\r\n SET_PARTNER_REWARDS: \"setPartnerRewards\",\r\n SET_LOADING_REGIONS: \"setLoadingRegions\",\r\n SET_USERS: \"setUsers\",\r\n};\r\n\r\nconst reducer = (state, action) => {\r\n console.debug(\"Action:\", action);\r\n switch (action.type) {\r\n // case DataContextActions.GET_LOYALTY_CONFIG: {\r\n // return {\r\n // ...state,\r\n // config: action.config,\r\n // enableEdit: true,\r\n // isLoading: false,\r\n // };\r\n // }\r\n case DataContextActions.GET_TIERS: {\r\n return {\r\n ...state,\r\n tiers: action.tiers,\r\n\r\n isLoadingTiers: false,\r\n };\r\n }\r\n // case DataContextActions.GET_REGIONS_CONFIG: {\r\n // return {\r\n // ...state,\r\n // regions: action.regions,\r\n // isLoadingRegions: false,\r\n // };\r\n // }\r\n // case DataContextActions.UPDATE_LOYALTY_CONFIG: {\r\n // const updatedConfig = action.config\r\n\r\n // const updateConfigs = state.config.map(configData => {\r\n // if (configData._id === updatedConfig.id) {\r\n // return updatedConfig\r\n // }\r\n // return configData\r\n // })\r\n // return {\r\n // ...state,\r\n // config: updateConfigs\r\n // }\r\n // }\r\n\r\n case DataContextActions.SET_LOADING_TIERS: {\r\n return {\r\n ...state,\r\n isLoadingTiers: action.status,\r\n };\r\n }\r\n\r\n case DataContextActions.SET_LOADING_REGIONS: {\r\n return {\r\n ...state,\r\n isLoadingRegions: action.status,\r\n };\r\n }\r\n case DataContextActions.SET_LOADING_CONTACT_ATTRIBUTES: {\r\n return {\r\n ...state,\r\n isLoadingContactAttributes: action.status,\r\n };\r\n }\r\n\r\n case DataContextActions.SET_USERS: {\r\n return {\r\n ...state,\r\n usersList: action.users.items,\r\n };\r\n }\r\n\r\n case DataContextActions.SET_CONTACT_ATTRIBUTES: {\r\n return {\r\n ...state,\r\n contactAttributes: Object.entries(\r\n action.contactAttributes\r\n ).reduce((result, [key, value]) => {\r\n if (!ignoredAttributes.has(key)) {\r\n result[key] = value;\r\n }\r\n return result;\r\n }, {}),\r\n tags: action.tags || [],\r\n isLoadingContactAttributes: false,\r\n };\r\n }\r\n\r\n case DataContextActions.SET_MERCHANTS: {\r\n return {\r\n ...state,\r\n merchants: action.merchants,\r\n };\r\n }\r\n\r\n case DataContextActions.SET_MERCHANT_LOCATIONS: {\r\n return {\r\n ...state,\r\n merchantLocations: action.locations,\r\n };\r\n // return {\r\n // ...state,\r\n // merchantLocations: {\r\n // ...state.merchantLocations,\r\n // [action.merchantId]: action.locations,\r\n // },\r\n // };\r\n }\r\n\r\n case DataContextActions.SET_IS_LOADING_AFFINITY_GROUPS: {\r\n return {\r\n ...state,\r\n isLoadingAffinityGroups: action.status,\r\n };\r\n }\r\n\r\n case DataContextActions.SET_AFFINITY_GROUPS: {\r\n return {\r\n ...state,\r\n isLoadingAffinityGroups: false,\r\n affinityGroups: action.groups,\r\n };\r\n }\r\n case DataContextActions.SET_IS_LOADING_PARTNER_REWARDS: {\r\n return {\r\n ...state,\r\n isLoadingPartnerRewards: action.status,\r\n };\r\n }\r\n case DataContextActions.SET_PARTNER_REWARDS: {\r\n return {\r\n ...state,\r\n rewards: action.rewards,\r\n partnerRewardConfigs: action.configs,\r\n };\r\n }\r\n case DataContextActions.SET_IS_LOADING_SUB_TRANSACTION_TYPES: {\r\n return {\r\n ...state,\r\n isLoadingSubTransactionTypes: action.status,\r\n };\r\n }\r\n case DataContextActions.SET_SUB_TRANSACTION_TYPES: {\r\n return {\r\n ...state,\r\n subTransactionTypes: action.subTransactionTypesRes,\r\n };\r\n }\r\n case DataContextActions.SET_IS_LOADING_CHARITIES: {\r\n return {\r\n ...state,\r\n isLoadingCharities: action.status,\r\n };\r\n }\r\n case DataContextActions.SET_CHARITIES: {\r\n return {\r\n ...state,\r\n charities: action.charitiesResponse,\r\n };\r\n }\r\n case DataContextActions.SET_IS_LOADING_JOB_TYPES: {\r\n return {\r\n ...state,\r\n isLoadingJobTypes: action.status,\r\n };\r\n }\r\n case DataContextActions.SET_JOB_TYPES_DATA: {\r\n return {\r\n ...state,\r\n jobTypes: action.activeJobTypes,\r\n jsonSchemaForJobTypes: action.jsonSchema,\r\n };\r\n }\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\n// const currentRequestPendingLocationsMerchantIds = new Set();\r\n\r\nconst DataContextProvider = (props) => {\r\n const [state, dispatch] = useReducer(reducer, initialState);\r\n const {\r\n isAuth,\r\n regionId,\r\n isRunningSystemInit,\r\n userProfileLoadCompleted,\r\n isAuthorizedForAction,\r\n } = useContext(UserContext);\r\n\r\n // const setConfig = useCallback(\r\n // (newConfig) => {\r\n // dispatch({\r\n // type: DataContextActions.GET_LOYALTY_CONFIG,\r\n // config: newConfig,\r\n // });\r\n // },\r\n // [dispatch]\r\n // );\r\n // const loadConfigData = useCallback(async () => {\r\n // try {\r\n // const configLogs = await getLoyaltyConfig();\r\n // dispatch({\r\n // type: DataContextActions.GET_LOYALTY_CONFIG,\r\n // config: configLogs,\r\n // });\r\n // } catch (e) {\r\n // console.error(e);\r\n // }\r\n // }, [dispatch]);\r\n const loadIdUsers = useCallback(\r\n async (regionId) => {\r\n if (\r\n isAuthorizedForAction(\r\n AccessPermissionModuleNames.USERS,\r\n AccessPermissionModules[AccessPermissionModuleNames.USERS]\r\n .actions.ListUsers\r\n )\r\n ) {\r\n try {\r\n const contactResponse = await getIdentityUsers({\r\n limit: 1000,\r\n skip: 0,\r\n regionId: regionId,\r\n });\r\n dispatch({\r\n type: DataContextActions.SET_USERS,\r\n users: contactResponse.data,\r\n });\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n },\r\n [isAuthorizedForAction]\r\n );\r\n\r\n const setTier = useCallback(\r\n (newTier) => {\r\n dispatch({ type: DataContextActions.GET_TIERS, config: newTier });\r\n },\r\n [dispatch]\r\n );\r\n const loadTiers = useCallback(\r\n async (regionId) => {\r\n if (\r\n isAuthorizedForAction(\r\n AccessPermissionModuleNames.TIER,\r\n AccessPermissionModules[AccessPermissionModuleNames.TIER]\r\n .actions.ListTiers\r\n )\r\n ) {\r\n try {\r\n dispatch({\r\n type: DataContextActions.SET_LOADING_TIERS,\r\n status: true,\r\n });\r\n const tiersResponse = await getTiers({ regionId });\r\n dispatch({\r\n type: DataContextActions.GET_TIERS,\r\n tiers: tiersResponse.items || [],\r\n });\r\n } catch (e) {\r\n console.error(e);\r\n dispatch({\r\n type: DataContextActions.SET_LOADING_TIERS,\r\n status: false,\r\n });\r\n }\r\n } else {\r\n dispatch({\r\n type: DataContextActions.SET_LOADING_TIERS,\r\n status: false,\r\n });\r\n }\r\n },\r\n [dispatch, isAuthorizedForAction]\r\n );\r\n\r\n // const loadRegions = useCallback(async () => {\r\n // try {\r\n // dispatch({ type: DataContextActions.SET_LOADING_REGIONS, status: true });\r\n // const regionsResponse = await getRegionsConfigurations({\r\n // limit: 100,\r\n // skip: 0,\r\n // });\r\n // dispatch({\r\n // type: DataContextActions.GET_REGIONS_CONFIG,\r\n // regions: regionsResponse.items,\r\n // });\r\n // } catch (e) {\r\n // console.error(e);\r\n // dispatch({ type: DataContextActions.SET_LOADING_REGIONS, status: false });\r\n // }\r\n // }, [dispatch]);\r\n\r\n const loadPartnerRewards = useCallback(\r\n async (regionId) => {\r\n if (\r\n isAuthorizedForAction(\r\n AccessPermissionModuleNames.REWARD,\r\n AccessPermissionModules[AccessPermissionModuleNames.REWARD]\r\n .actions.ListRewards\r\n )\r\n ) {\r\n try {\r\n const query = {\r\n limit: 25,\r\n skip: 0,\r\n regionId,\r\n status: RewardStatus.ENABLED,\r\n subType: RewardSubType.PARTNER,\r\n };\r\n\r\n dispatch({\r\n type: DataContextActions.SET_IS_LOADING_PARTNER_REWARDS,\r\n status: true,\r\n });\r\n\r\n const rewardsResponse = await getRewards(query);\r\n\r\n const configsArray =\r\n rewardsResponse?.items.map((reward) => ({\r\n _id: reward._id,\r\n ...reward?.partnerRewardMetadata,\r\n })) || [];\r\n\r\n const configs = configsArray.reduce((result, config) => {\r\n result[config?.partnerRewardConfig] =\r\n config?.partnerRewardConfig;\r\n return result;\r\n }, {});\r\n\r\n dispatch({\r\n type: DataContextActions.SET_PARTNER_REWARDS,\r\n rewards: rewardsResponse?.items || [],\r\n configs,\r\n });\r\n } catch (e) {\r\n console.error(e);\r\n toast.error(\r\n \r\n Failed to load partner reward details!\r\n \r\n {e.message\r\n ? `Error: ${e.message}`\r\n : \"Please try again later.\"}\r\n \r\n If the issue persists, please contact support.\r\n
\r\n );\r\n } finally {\r\n dispatch({\r\n type: DataContextActions.SET_IS_LOADING_PARTNER_REWARDS,\r\n status: false,\r\n });\r\n }\r\n }\r\n },\r\n [isAuthorizedForAction, dispatch]\r\n );\r\n\r\n const loadContactAttributes = useCallback(\r\n async (regionId) => {\r\n if (\r\n isAuthorizedForAction(\r\n AccessPermissionModuleNames.ATTRIBUTE,\r\n AccessPermissionModules[\r\n AccessPermissionModuleNames.ATTRIBUTE\r\n ].actions.ListAttributes\r\n )\r\n ) {\r\n try {\r\n dispatch({\r\n type: DataContextActions.SET_LOADING_CONTACT_ATTRIBUTES,\r\n status: true,\r\n });\r\n const contactAttributeResponse = await getContactAttributes(\r\n regionId\r\n );\r\n let contactAttributes =\r\n contactAttributeResponse.length !== 0\r\n ? contactAttributeResponse.items[0].attributes\r\n : {};\r\n\r\n if (\r\n contactAttributes.hasOwnProperty(\r\n \"notificationPreference\"\r\n ) &&\r\n Object.keys(contactAttributes.notificationPreference)\r\n .length !== 0\r\n ) {\r\n Object.keys(\r\n contactAttributes.notificationPreference\r\n ).forEach((attribute) => {\r\n contactAttributes = {\r\n ...contactAttributes,\r\n ...{\r\n [`notificationPreference.${attribute}`]:\r\n contactAttributes\r\n ?.notificationPreference[attribute],\r\n },\r\n };\r\n });\r\n }\r\n if (\r\n contactAttributes.hasOwnProperty(\"customAttributes\") &&\r\n Object.keys(contactAttributes.customAttributes)\r\n .length !== 0\r\n ) {\r\n Object.keys(contactAttributes.customAttributes).forEach(\r\n (attribute) => {\r\n contactAttributes = {\r\n ...contactAttributes,\r\n ...{\r\n [`customAttributes.${attribute}`]:\r\n contactAttributes?.customAttributes[\r\n attribute\r\n ],\r\n },\r\n };\r\n }\r\n );\r\n }\r\n if (\r\n contactAttributes.hasOwnProperty(\"pointsToExpire\") &&\r\n Object.keys(contactAttributes.pointsToExpire)\r\n .length !== 0\r\n ) {\r\n Object.keys(contactAttributes.pointsToExpire).forEach(\r\n (attribute) => {\r\n contactAttributes = {\r\n ...contactAttributes,\r\n ...{\r\n [`pointsToExpire.${attribute}`]:\r\n contactAttributes?.pointsToExpire[\r\n attribute\r\n ],\r\n },\r\n };\r\n }\r\n );\r\n }\r\n dispatch({\r\n type: DataContextActions.SET_CONTACT_ATTRIBUTES,\r\n contactAttributes,\r\n tags:\r\n contactAttributeResponse.length !== 0\r\n ? contactAttributeResponse.items[0].tags\r\n : [],\r\n });\r\n } catch (e) {\r\n console.error(e);\r\n dispatch({\r\n type: DataContextActions.SET_LOADING_CONTACT_ATTRIBUTES,\r\n status: false,\r\n });\r\n }\r\n }\r\n },\r\n [isAuthorizedForAction, dispatch]\r\n );\r\n\r\n const requestLoadMerchantLocations = useCallback(\r\n ({ regionId, merchantId = null }) => {\r\n if (\r\n isAuthorizedForAction(\r\n AccessPermissionModuleNames.LOCATION,\r\n AccessPermissionModules[\r\n AccessPermissionModuleNames.LOCATION\r\n ].actions.ListLocations\r\n )\r\n ) {\r\n return new Promise(async (resolve, reject) => {\r\n try {\r\n const requestObject = { regionId };\r\n\r\n if (merchantId) {\r\n requestObject.merchantId = merchantId;\r\n }\r\n const locationsResponse = await getAllMerchantLocations(\r\n requestObject\r\n );\r\n\r\n const locationsObject = locationsResponse.reduce(\r\n (result, item) => {\r\n if (!result[item.merchantId]) {\r\n result[item.merchantId] = {};\r\n }\r\n result[item.merchantId][item._id] = {\r\n ...item,\r\n locationName: `${\r\n item.code ? item.code + \" / \" : \"\"\r\n }${item.locationName}`,\r\n };\r\n return result;\r\n },\r\n {}\r\n );\r\n dispatch({\r\n type: DataContextActions.SET_MERCHANT_LOCATIONS,\r\n locations: locationsObject,\r\n });\r\n resolve(locationsResponse);\r\n } catch (e) {\r\n reject(e);\r\n }\r\n });\r\n }\r\n },\r\n [isAuthorizedForAction, dispatch]\r\n );\r\n\r\n const loadMerchants = useCallback(\r\n async (regionId) => {\r\n if (\r\n isAuthorizedForAction(\r\n AccessPermissionModuleNames.MERCHANT,\r\n AccessPermissionModules[\r\n AccessPermissionModuleNames.MERCHANT\r\n ].actions.ListMerchants\r\n )\r\n ) {\r\n try {\r\n const merchants = await getAllMerchants({ regionId });\r\n dispatch({\r\n type: DataContextActions.SET_MERCHANTS,\r\n merchants,\r\n });\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n },\r\n [dispatch, isAuthorizedForAction]\r\n );\r\n\r\n const refreshMerchantsData = useCallback(\r\n (merchants) => {\r\n dispatch({\r\n type: DataContextActions.SET_MERCHANTS,\r\n merchants,\r\n });\r\n },\r\n [dispatch]\r\n );\r\n\r\n const loadAffinityGroups = useCallback(\r\n async (regionId) => {\r\n if (\r\n isAuthorizedForAction(\r\n AccessPermissionModuleNames.AFFINITY_GROUPS,\r\n AccessPermissionModules[\r\n AccessPermissionModuleNames.AFFINITY_GROUPS\r\n ].actions.ListAffinityGroups\r\n )\r\n ) {\r\n try {\r\n dispatch({\r\n type: DataContextActions.SET_IS_LOADING_AFFINITY_GROUPS,\r\n status: true,\r\n });\r\n\r\n const affinityGroupResponse = await getAllAffinityGroups({\r\n regionId: regionId,\r\n });\r\n dispatch({\r\n type: DataContextActions.SET_AFFINITY_GROUPS,\r\n groups: affinityGroupResponse,\r\n status: false,\r\n });\r\n } catch (e) {\r\n dispatch({\r\n type: DataContextActions.SET_IS_LOADING_AFFINITY_GROUPS,\r\n status: false,\r\n });\r\n }\r\n }\r\n },\r\n [dispatch, isAuthorizedForAction]\r\n );\r\n\r\n const loadAllSubTransactions = useCallback(async () => {\r\n if (\r\n isAuthorizedForAction(\r\n AccessPermissionModuleNames.SUB_TRANSACTION_TYPE,\r\n AccessPermissionModules[\r\n AccessPermissionModuleNames.SUB_TRANSACTION_TYPE\r\n ].actions.ListSubTransactionTypes\r\n )\r\n ) {\r\n try {\r\n dispatch({\r\n type: DataContextActions.SET_IS_LOADING_SUB_TRANSACTION_TYPES,\r\n status: true,\r\n });\r\n\r\n const subTransactionTypesRes =\r\n await getAllSubTransactionTypes();\r\n\r\n dispatch({\r\n type: DataContextActions.SET_SUB_TRANSACTION_TYPES,\r\n subTransactionTypesRes,\r\n });\r\n } catch (e) {\r\n console.error(e);\r\n toast.error(\r\n \r\n Failed to load sub transaction types!\r\n \r\n {e.message\r\n ? `Error: ${e.message}`\r\n : \"Please try again later.\"}\r\n \r\n If the issue persists, please contact support.\r\n
\r\n );\r\n } finally {\r\n dispatch({\r\n type: DataContextActions.SET_IS_LOADING_SUB_TRANSACTION_TYPES,\r\n status: false,\r\n });\r\n }\r\n }\r\n }, [isAuthorizedForAction, dispatch]);\r\n\r\n const loadCharities = useCallback(\r\n async (regionId) => {\r\n if (\r\n isAuthorizedForAction(\r\n AccessPermissionModuleNames.CHARITIES,\r\n AccessPermissionModules[\r\n AccessPermissionModuleNames.CHARITIES\r\n ].actions.ListCharities\r\n )\r\n ) {\r\n const payload = {\r\n regionId,\r\n };\r\n try {\r\n dispatch({\r\n type: DataContextActions.SET_IS_LOADING_CHARITIES,\r\n status: true,\r\n });\r\n\r\n const charitiesResponse = await loadAllCharities(payload);\r\n\r\n dispatch({\r\n type: DataContextActions.SET_CHARITIES,\r\n charitiesResponse,\r\n });\r\n } catch (e) {\r\n console.error(e);\r\n toast.error(\r\n \r\n Failed to load charities!\r\n \r\n {e.message\r\n ? `Error: ${e.message}`\r\n : \"Please try again later.\"}\r\n \r\n If the issue persists, please contact support.\r\n
\r\n );\r\n } finally {\r\n dispatch({\r\n type: DataContextActions.SET_IS_LOADING_CHARITIES,\r\n status: false,\r\n });\r\n }\r\n }\r\n },\r\n [isAuthorizedForAction, dispatch]\r\n );\r\n\r\n const loadJobTypes = useCallback(async () => {\r\n if (\r\n isAuthorizedForAction(\r\n AccessPermissionModuleNames.JOB_TYPES,\r\n AccessPermissionModules[AccessPermissionModuleNames.JOB_TYPES]\r\n .actions.ListJobTypes\r\n )\r\n ) {\r\n try {\r\n dispatch({\r\n type: DataContextActions.SET_IS_LOADING_JOB_TYPES,\r\n status: true,\r\n });\r\n\r\n const jobTypesResponse = await getJobTypes({\r\n status: JobTypesStatus.ENABLED,\r\n });\r\n\r\n const activeJobTypes = [];\r\n const jsonSchema = [];\r\n jobTypesResponse.items.forEach((item, index) => {\r\n activeJobTypes.push({\r\n id: item?._id || \"Unknown id\",\r\n name: item?.name || \"Unknown job type\",\r\n index,\r\n });\r\n\r\n jsonSchema.push({\r\n metadata: item?.metadata || null,\r\n value: item?._id || \"Unknown id\",\r\n index,\r\n });\r\n });\r\n\r\n dispatch({\r\n type: DataContextActions.SET_JOB_TYPES_DATA,\r\n activeJobTypes,\r\n jsonSchema,\r\n });\r\n } catch (e) {\r\n console.error(e);\r\n toast.error(\r\n \r\n Failed to load job types!\r\n \r\n {e.message\r\n ? `Error: ${e.message}`\r\n : \"Please try again later.\"}\r\n \r\n If the issue persists, please contact support.\r\n
\r\n );\r\n } finally {\r\n dispatch({\r\n type: DataContextActions.SET_IS_LOADING_JOB_TYPES,\r\n status: false,\r\n });\r\n }\r\n }\r\n }, [dispatch, isAuthorizedForAction]);\r\n\r\n useEffect(() => {\r\n if (isAuth && !isRunningSystemInit && userProfileLoadCompleted) {\r\n // loadConfigData();\r\n //loadRegions(); //TODO: [MLS-1107] Now all the merchant locations are load in to the data context. Check all the location requests and refer from here (check Member profile specially)\r\n loadAllSubTransactions();\r\n\r\n if (regionId) {\r\n loadContactAttributes(regionId);\r\n loadPartnerRewards(regionId);\r\n requestLoadMerchantLocations({ regionId });\r\n loadTiers(regionId);\r\n loadMerchants(regionId);\r\n loadAffinityGroups(regionId);\r\n loadCharities(regionId);\r\n loadIdUsers(regionId);\r\n }\r\n loadJobTypes();\r\n }\r\n //eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [isAuth, isRunningSystemInit, regionId, userProfileLoadCompleted]);\r\n\r\n const value = {\r\n ...state,\r\n loadContactAttributes,\r\n setTier,\r\n loadTiers,\r\n //loadRegions,\r\n loadAffinityGroups,\r\n requestLoadMerchantLocations,\r\n refreshMerchantsData,\r\n loadPartnerRewards,\r\n };\r\n console.debug(\"Data Context: \", state);\r\n\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n};\r\n\r\nconst DataContextConsumer = DataContext.Consumer;\r\n\r\nexport {\r\n DataContext,\r\n DataContextProvider,\r\n DataContextConsumer,\r\n DataContextActions,\r\n};\r\n","import React from \"react\";\r\nimport { LoadingComponent } from \"../UtilComponents\";\r\nimport \"./BootstrapTableOverlay.scss\";\r\n\r\nconst BootstrapTableOverlay =\r\n (loading) =>\r\n ({ children }) => {\r\n return (\r\n \r\n
\r\n \r\n
\r\n {children}\r\n
\r\n );\r\n };\r\nexport default BootstrapTableOverlay;\r\n","import React, { useRef, useCallback, useEffect } from \"react\";\r\nimport { Button, Popover, Overlay, DateRangeSelector, IcIcon } from '@shoutout-labs/shoutout-themes-enterprise';\r\nimport { createStaticRanges } from 'react-date-range';\r\nimport moment from 'moment';\r\nimport { faCalendar } from 'FaICIconMap';\r\nimport useToggle from '../../Hooks/toggleState';\r\nimport './DateRangeSelector.css';\r\n\r\nconst defaultRanges = createStaticRanges([\r\n {\r\n label: 'Today',\r\n range: () => ({\r\n startDate: moment().toDate(),\r\n endDate: moment().toDate()\r\n })\r\n },\r\n {\r\n label: 'Last 7 Days',\r\n range: () => ({\r\n startDate: moment().subtract(7, 'days').toDate(),\r\n endDate: moment().subtract(1, 'days').toDate()\r\n })\r\n },\r\n {\r\n label: 'Last 14 Days',\r\n range: () => ({\r\n startDate: moment().subtract(14, 'days').toDate(),\r\n endDate: moment().subtract(1, 'days').toDate()\r\n })\r\n },\r\n {\r\n label: 'Last 28 Days',\r\n range: () => ({\r\n startDate: moment().subtract(28, 'days').toDate(),\r\n endDate: moment().subtract(1, 'days').toDate()\r\n })\r\n },\r\n {\r\n label: 'Last 90 Days',\r\n range: () => ({\r\n startDate: moment().subtract(90, 'days').toDate(),\r\n endDate: moment().subtract(1, 'days').toDate()\r\n })\r\n },\r\n]);\r\n\r\nconst formatDateSelection = ({ startDate, endDate }) => {\r\n return (\r\n moment(startDate).format(\"MMM DD, YYYY\") + ' - ' + moment(endDate).format(\"MMM DD, YYYY\")\r\n )\r\n}\r\nconst initialRangeState = { startDate: moment().subtract(7, 'days').startOf('day').toDate(), endDate: moment().toDate(), key: 'selection' }\r\n\r\n\r\nconst DateRangeWidget = ({ onSubmit, customRanges, selectedDateRange = initialRangeState, show = false, ...rest }) => {\r\n const [showSelection, toggleShowSelection] = useToggle(false);\r\n\r\n const chooseBtn = useRef(null);\r\n\r\n\r\n const onClickDone = useCallback((data) => {\r\n\r\n onSubmit(data);\r\n toggleShowSelection();\r\n\r\n }, [onSubmit, toggleShowSelection])\r\n\r\n useEffect(() => {\r\n if (show !== showSelection) {\r\n toggleShowSelection();\r\n }\r\n\r\n //eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [show,showSelection])\r\n\r\n\r\n const dateRanges = customRanges || defaultRanges;\r\n return (\r\n \r\n\r\n
{formatDateSelection(selectedDateRange)}\r\n \r\n\r\n
\r\n \r\n\r\n\r\n\r\n \r\n\r\n \r\n \r\n\r\n
\r\n );\r\n}\r\n\r\nexport default DateRangeWidget;\r\n","const UserBoundaryType = {\r\n MERCHANT: \"MERCHANT\", //only has access to the defined merchants\r\n GLOBAL: \"GLOBAL\", //global admin\r\n REGIONAL: \"REGIONAL\", //regional admin,\r\n ROOT: \"ROOT\",\r\n};\r\n\r\nexport default UserBoundaryType;\r\n","import React, { useReducer, useCallback } from \"react\";\r\nimport Keycloak from \"keycloak-js\";\r\nimport { ReactKeycloakProvider } from \"@react-keycloak/web\";\r\nimport AppContext from \"../AppContext\";\r\nimport { LoadingComponent } from \"Components/utils\";\r\n\r\nconst KeycloakContext = React.createContext();\r\n\r\nconst KeycloakContextActions = {\r\n // SET_DATA: \"setData\",\r\n // SET_IS_AUTH: \"setIsAuth\",\r\n UPDATE_TOKEN: \"setToken\",\r\n};\r\n\r\nconst initialState = {\r\n // keycloak: null,\r\n token: null,\r\n // user: { username: null, email: null },\r\n // loginUrl: null,\r\n // logoutUrl: null,\r\n // registerUrl: null,\r\n // accountUrl: null,\r\n // isAuth: false,\r\n authComplete: false,\r\n};\r\n\r\nconst keycloakInstance = Keycloak(AppContext.keycloakConfig);\r\n// const logoutStatusCodes = [401, 403];\r\n// const TOKEN_REFRESH_RATE = 10;\r\n// let refreshTokenInterval;\r\n\r\n// const authenticate = () => new Promise((resolve, reject) => {\r\n// const keycloakInstance = Keycloak(AppContext.keycloakConfig);\r\n// keycloakInstance\r\n// .init({ onLoad: \"login-required\" })\r\n// .then(authenticated => {\r\n// resolve(keycloakInstance);\r\n// })\r\n// .catch(e => {\r\n// });\r\n// });\r\n\r\nconst reducer = (state, action) => {\r\n switch (action.type) {\r\n // case KeycloakContextActions.SET_DATA: {\r\n // const { type, instance, ...rest } = action;\r\n // return {\r\n // ...state,\r\n // keycloak: instance,\r\n // ...rest\r\n\r\n // }\r\n // }\r\n\r\n // case KeycloakContextActions.SET_IS_AUTH: {\r\n // return {\r\n // ...state,\r\n // isAuth: action.status\r\n // }\r\n // }\r\n\r\n case KeycloakContextActions.UPDATE_TOKEN: {\r\n return {\r\n ...state,\r\n token: action.token,\r\n authComplete: !!action.token,\r\n };\r\n }\r\n default: {\r\n return state;\r\n }\r\n }\r\n};\r\n\r\n// const constantMock = window.fetch;\r\n\r\nconst KeycloakContextProvider = (props) => {\r\n const [state, dispatch] = useReducer(reducer, initialState);\r\n\r\n const authEventHandler = useCallback(\r\n (event, error) => {\r\n switch (event) {\r\n case \"onAuthError\":\r\n case \"onAuthLogout\": {\r\n dispatch({\r\n type: KeycloakContextActions.SET_IS_AUTH,\r\n status: false,\r\n });\r\n break;\r\n }\r\n default: {\r\n }\r\n }\r\n },\r\n [dispatch]\r\n );\r\n\r\n \r\n\r\n const authTokenHandler = useCallback(({ token }) => {\r\n try {\r\n if(token) {\r\n \r\n dispatch({\r\n type: KeycloakContextActions.UPDATE_TOKEN,\r\n token\r\n });\r\n }\r\n else {\r\n // window.fetch = constantMock;\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }, [dispatch]);\r\n\r\n const value = {\r\n ...state,\r\n isAuth: keycloakInstance.authenticated || false,\r\n login: keycloakInstance.login,\r\n keycloakLogout: keycloakInstance.logout,\r\n loadUserProfile: keycloakInstance.loadUserProfile\r\n };\r\n\r\n return (\r\n }\r\n onEvent={authEventHandler}\r\n onTokens={authTokenHandler}\r\n >\r\n \r\n {props.children}\r\n \r\n \r\n );\r\n\r\n // const keycloakLogout = useCallback((now = true) => {\r\n // const { keycloak, logoutUrl, logout } = state;\r\n\r\n // if (!keycloak) {\r\n // return\r\n // }\r\n\r\n // if (now) {\r\n // if (keycloak && keycloak.authenticated) {\r\n // // Dispatch.success(dispatch, LOGOUT);\r\n // logout({ redirectUri: logoutUrl })\r\n // }\r\n // } else {\r\n // setTimeout(() => {\r\n // // Dispatch.success(dispatch, LOGOUT);\r\n // logout({ redirectUri: logoutUrl })\r\n // }, 5000);\r\n // }\r\n // }, [state]);\r\n\r\n // const updateToken = useCallback((token) => {\r\n // dispatch({ type: KeycloakContextActions.UPDATE_TOKEN, token });\r\n // }, [dispatch])\r\n // const scheduleTokenRefresh = useCallback((keycloak) => {\r\n\r\n // if (refreshTokenInterval) {\r\n // clearInterval(refreshTokenInterval);\r\n // }\r\n // refreshTokenInterval = setInterval(() => {\r\n // keycloak\r\n // .updateToken(TOKEN_REFRESH_RATE)\r\n // .then(refreshed => {\r\n // if (refreshed) {\r\n // updateToken(keycloak.token);\r\n // } // else, token is still valid\r\n\r\n // })\r\n // .catch((e) => {\r\n // // eslint-disable-next-line no-console\r\n // console.error(\"Failed to retrieve an updated token or session has expired.\", e);\r\n // keycloakLogout({ now: true });\r\n // });\r\n // }, TOKEN_REFRESH_RATE * 1000);\r\n // }, [keycloakLogout, updateToken]);\r\n\r\n // const initialize = useCallback(async () => {\r\n\r\n // const keycloak = await authenticate();\r\n\r\n // const { token, idTokenParsed: { preferred_username, email } } = keycloak || {}\r\n // const login = keycloak.login\r\n // const loginUrl = keycloak.createLoginUrl()\r\n // const logoutUrl = keycloak.createLogoutUrl()\r\n // const logout = keycloak.logout\r\n // const registerUrl = keycloak.createRegisterUrl()\r\n // const accountUrl = keycloak.createAccountUrl()\r\n\r\n // dispatch({ type: KeycloakContextActions.SET_DATA, instance: keycloak, token, user: { username: preferred_username, email: email }, login, loginUrl, logout, logoutUrl, registerUrl, accountUrl });\r\n // scheduleTokenRefresh(keycloak);\r\n\r\n // }, [dispatch, scheduleTokenRefresh]);\r\n\r\n // useEffect(() => {\r\n // initialize();\r\n\r\n // return () => {\r\n // if (refreshTokenInterval) {\r\n // clearInterval(refreshTokenInterval);\r\n // }\r\n // }\r\n // //eslint-disable-next-line react-hooks/exhaustive-deps\r\n // }, []);\r\n\r\n // useEffect(() => {\r\n // const { keycloak } = state;\r\n\r\n // if (keycloak && keycloak.authenticated) {\r\n // dispatch({ type: KeycloakContextActions.SET_IS_AUTH, status: true });\r\n // } else {\r\n // dispatch({ type: KeycloakContextActions.SET_IS_AUTH, status: false });\r\n // }\r\n // //eslint-disable-next-line react-hooks/exhaustive-deps\r\n // }, [state.keycloak]);\r\n\r\n // const value = { ...state, keycloakLogout };\r\n};\r\n\r\nconst KeycloakContextConsumer = KeycloakContext.Consumer;\r\n\r\nexport { KeycloakContext, KeycloakContextProvider, KeycloakContextConsumer };\r\n","const CardTypes = {\r\n DIGITAL: \"DIGITAL_CARD\",\r\n INSTANT: \"INSTANT_CARD\",\r\n EMBOSSED: \"EMBOSSED_CARD\",\r\n KEY_TAG: \"KEY_TAG\",\r\n REGULAR: \"REGULAR_CARD\",\r\n REGULAR_CARD_AND_KEY_TAG: \"REGULAR_CARD_AND_KEY_TAG\",\r\n};\r\n\r\nexport default CardTypes;\r\n","import Constants from '../Constants';\r\n//const SMS = Constants.TRANSPORT_SMS.toLowerCase(), EMAIL = Constants.TRANSPORT_EMAIL.toLowerCase();\r\nconst SMS = Constants.TRANSPORT_SMS, EMAIL = Constants.TRANSPORT_EMAIL;\r\nconst Types= {\r\n SMS,\r\n EMAIL\r\n}\r\n\r\nexport default Types;","const CardStatus = {\r\n ACTIVE: \"ACTIVE\",\r\n SUSPENDED: \"SUSPENDED\",\r\n PENDING:\"PENDING\",\r\n ASSIGNED: \"ASSIGNED\",\r\n DEACTIVATED: \"DEACTIVATED\",\r\n FAILED:\"FAILED\",\r\n READY:\"READY\"\r\n};\r\n\r\nexport default CardStatus;\r\n","const AccountStatus = {\r\n ACTIVE : 'ACTIVE',\r\n SUSPENDED : 'SUSPENDED',\r\n ARCHIVED : 'ARCHIVED'\r\n};\r\n\r\nexport default AccountStatus;","const CardSuspendReasons= {\r\n LOST : 'LOST',\r\n DAMAGED : 'DAMAGED',\r\n STOLEN : 'STOLEN',\r\n OTHER:'OTHER'\r\n};\r\n\r\nexport default CardSuspendReasons;\r\n\r\n","const FraudIncidentStatus = {\r\n PENDING : \"PENDING\",\r\n RESOLVED: \"RESOLVED\",\r\n};\r\n\r\nexport default FraudIncidentStatus;\r\n","\r\nconst AuditOperation = {\r\n CREATE : \"CREATE\",\r\n UPDATE: \"UPDATE\",\r\n DELETE: \"DELETE\",\r\n READ: \"READ\",\r\n};\r\n\r\nexport {AuditOperation};\r\n","import {\r\n faCalendar, \r\n faCreditCard, \r\n faHome, \r\n faUsers, \r\n faUser,\r\n faUserPlus, \r\n faGift\r\n} from \"FaICIconMap\";\r\n \r\nconst PointRuleTypes = {\r\n TRANSACTIONAL: \"TRANSACTIONAL\",\r\n NON_TRANSACTIONAL: \"NON_TRANSACTIONAL\"\r\n};\r\n \r\nconst PointRuleSubTypes = {\r\n GENERAL: {\r\n name: \"General Spending Rule\",\r\n value: \"GENERAL\",\r\n icon: faCreditCard\r\n },\r\n LOCATION: {\r\n name: \"Location Based Spending Rule\",\r\n value: \"LOCATION\",\r\n icon: faHome\r\n },\r\n SEASONAL: {\r\n name: \"Seasonal Based Spending Rule\",\r\n value: \"SEASONAL\",\r\n icon: faCalendar\r\n },\r\n AFFINITY: {\r\n name: \"Affinity Group Spending Rule\",\r\n value: \"AFFINITY\",\r\n icon: faUsers\r\n },\r\n ENROLL: {\r\n name: \"Member Enroll\",\r\n value: \"ENROLL\",\r\n icon: faUser\r\n },\r\n SIGNUP: {\r\n name: \"Member Sign Up\",\r\n value: \"SIGNUP\",\r\n icon: faUserPlus\r\n },\r\n BIRTHDAY: {\r\n name: \"Member Birth Day\",\r\n value: \"BIRTHDAY\",\r\n icon: faGift\r\n }\r\n};\r\n\r\nconst PointRuleStatus = {\r\n ENABLED: \"ENABLED\",\r\n DISABLED: \"DISABLED\",\r\n ARCHIVED: \"ARCHIVED\"\r\n};\r\n\r\nconst PointRuleStates = {\r\n ACTIVE: \"ACTIVE\",\r\n EXPIRED: \"EXPIRED\",\r\n SCHEDULED: \"SCHEDULED\"\r\n};\r\n \r\nconst AffinityGroupOptions = {\r\n ENTIER: \"ENTIER\",\r\n TIERS: \"TIERS\",\r\n};\r\n\r\nconst Occasions = {\r\n NONE: \"NONE\",\r\n FOREVER: \"FOREVER\",\r\n PERIOD: \"PERIOD\"\r\n};\r\n\r\nconst LocationSeasonalSubTypes = [PointRuleSubTypes.LOCATION.value, PointRuleSubTypes.SEASONAL.value];\r\n\r\nconst OccasionWithDates = [Occasions.NONE, Occasions.PERIOD];\r\n\r\nconst OccasionWithDays = [Occasions.FOREVER, Occasions.PERIOD];\r\n\r\nconst PointRuleStatusColorCode = {\r\n [PointRuleStatus.ENABLED]: \"success\",\r\n [PointRuleStatus.DISABLED]: \"warning\",\r\n [PointRuleStatus.ARCHIVED]: \"danger\",\r\n};\r\n \r\nexport { \r\n PointRuleTypes, \r\n PointRuleSubTypes, \r\n PointRuleStatus,\r\n PointRuleStates, \r\n AffinityGroupOptions, \r\n Occasions,\r\n LocationSeasonalSubTypes,\r\n OccasionWithDates,\r\n OccasionWithDays,\r\n PointRuleStatusColorCode \r\n};","const CardSettingTypes = {\r\n DIGITAL: \"DIGITAL\",\r\n INSTANT: \"INSTANT\",\r\n EMBOSSED:\"EMBOSSED\",\r\n};\r\n\r\nexport default CardSettingTypes;\r\n","import NameIconTemplate from \"../Components/cards/instantCards/shared/NameIconTemplate\";\r\nimport {UilCreditCard, UilSpinner, UilStore, UilTransaction} from \"@iconscout/react-unicons\";\r\nimport {faCheck, faDispatch, faPrint} from \"../FaICIconMap\";\r\n\r\nconst InstantCardsStatus = {\r\n CARD_STOCK:'CARD_STOCK',\r\n CARD_DISTRIBUTION:'CARD_DISTRIBUTION',\r\n CARD_PRINTING:'CARD_PRINTING'\r\n}\r\n\r\nconst JobURLParams={\r\n CARD_DISTRIBUTION:\"carddistributionjobs\",\r\n CARD_PRINTING:\"cardprintjobs\"\r\n}\r\nconst ExportJobURLParams={\r\n CARD_DISTRIBUTION:\"carddistributionjobs/getcsv\",\r\n CARD_PRINTING:\"cardprintjobs/getcsv\"\r\n}\r\n\r\nconst cardDistributionStatus = {\r\n DISTRIBUTE:'DISTRIBUTE',\r\n PROCESSING:'PROCESSING',\r\n DISPATCHED:'DISPATCHED',\r\n COMPLETED:'COMPLETED',\r\n FAILED:'FAILED',\r\n}\r\nconst cardPrintingStatus = {\r\n GENERATE :'GENERATE',\r\n PENDING :'PENDING',\r\n PRINTING :'PRINTING',\r\n COMPLETED :'COMPLETED',\r\n FAILED:'FAILED',\r\n}\r\n\r\nconst cardDistributionTab = [\r\n {\r\n eventKey: cardDistributionStatus.DISTRIBUTE,\r\n title:\"Distribute\"\r\n },\r\n {\r\n eventKey: cardDistributionStatus.PROCESSING,\r\n title:\"Processing\"\r\n },\r\n {\r\n eventKey: cardDistributionStatus.DISPATCHED,\r\n title:\"Dispatched\"\r\n },\r\n {\r\n eventKey: cardDistributionStatus.COMPLETED,\r\n title:\"Completed\"\r\n },\r\n {\r\n eventKey: cardDistributionStatus.FAILED,\r\n title:\"Failed\"\r\n }\r\n]\r\n\r\nconst cardPrintingTab = [\r\n {\r\n eventKey: cardPrintingStatus.GENERATE,\r\n title:\"Generate\"\r\n },\r\n {\r\n eventKey: cardPrintingStatus.PENDING,\r\n title:\"Pending\"\r\n },\r\n {\r\n eventKey: cardPrintingStatus.PRINTING,\r\n title:\"Printing\"\r\n },\r\n {\r\n eventKey: cardPrintingStatus.COMPLETED,\r\n title:\"Completed\"\r\n },\r\n {\r\n eventKey: cardPrintingStatus.FAILED,\r\n title:\"Failed\"\r\n }\r\n]\r\n\r\nconst defaultColumns={\r\n CARD_DISTRIBUTION:[{\r\n dataField: 'batchId',\r\n text: NameIconTemplate({ name: 'Batch Id', icon: UilStore }),\r\n headerStyle: { width: \"15%\" }\r\n },\r\n {\r\n dataField: 'quantity',\r\n text: NameIconTemplate({ name: 'Quantity', icon: UilCreditCard }),\r\n headerStyle: { width: \"10%\" }\r\n },\r\n\r\n {\r\n dataField: 'merchantName',\r\n text: NameIconTemplate({ name: 'Merchant', icon: UilCreditCard })\r\n },\r\n {\r\n dataField: 'locationName',\r\n text: NameIconTemplate({ name: 'Merchant Location', icon: UilTransaction })\r\n },\r\n {\r\n dataField: 'cardType',\r\n text: NameIconTemplate({ name: 'Card Type', icon: UilSpinner })\r\n },\r\n {\r\n dataField: 'createdOn',\r\n text: NameIconTemplate({ name: 'Created Date', icon: UilSpinner })\r\n },\r\n {\r\n dataField: 'action'\r\n }],\r\n CARD_PRINTING:[\r\n {\r\n dataField: 'batchId',\r\n text: NameIconTemplate({ name: 'Batch Id', icon: UilStore })\r\n },\r\n {\r\n dataField: 'quantity',\r\n text: NameIconTemplate({ name: 'Quantity', icon: UilCreditCard })\r\n },\r\n {\r\n dataField: 'cardType',\r\n text: NameIconTemplate({ name: 'Card Type', icon: UilSpinner })\r\n },\r\n {\r\n dataField: 'updatedOn',\r\n text: NameIconTemplate({ name: 'Updated Date', icon: UilSpinner })\r\n },\r\n {\r\n dataField: 'action'\r\n }\r\n ]\r\n}\r\nconst columnsItemGoingToChange={\r\n CARD_DISTRIBUTION:'createdOn',\r\n CARD_PRINTING:'updatedOn'\r\n}\r\nconst batchJobIdType={\r\n CARD_DISTRIBUTION:'distributionJobId',\r\n CARD_PRINTING:'printJobId'\r\n}\r\n\r\nconst nextStatus = {\r\n PENDING : {\r\n nextStep : cardPrintingStatus.PRINTING,\r\n icon : faPrint,\r\n action : 'Printing'\r\n },\r\n PRINTING : {\r\n nextStep : cardPrintingStatus.COMPLETED,\r\n icon : faCheck,\r\n action : 'Completed'\r\n },\r\n PROCESSING : {\r\n nextStep : cardDistributionStatus.DISPATCHED,\r\n icon : faDispatch,\r\n action : 'Dispatched'\r\n },\r\n DISPATCHED : {\r\n nextStep : cardDistributionStatus.COMPLETED,\r\n icon : faCheck,\r\n action : 'Completed'\r\n }\r\n}\r\n\r\n\r\nexport {\r\n JobURLParams,\r\n InstantCardsStatus,\r\n nextStatus,\r\n cardPrintingTab,\r\n cardDistributionTab,\r\n cardDistributionStatus,\r\n cardPrintingStatus,\r\n defaultColumns,\r\n columnsItemGoingToChange,\r\n ExportJobURLParams,\r\n batchJobIdType\r\n}\r\n","import moment from \"moment\";\r\nimport { convertArrayToObject } from \"Components/merchants/utils/MerchantUtility\";\r\n\r\nconst MerchantTypes = [\r\n {\r\n value: \"INTERNAL\",\r\n name: \"Internal\",\r\n },\r\n {\r\n value: \"EXTERNAL\",\r\n name: \"External\",\r\n }\r\n];\r\nconst MerchantProfileTabs = {\r\n REPORT : \"REPORT\",\r\n INTEGRATIONS : \"INTEGRATIONS\",\r\n CONTACT_DETAILS : \"CONTACT_DETAILS\",\r\n USERS: \"USERS\",\r\n LOCATIONS: \"LOCATIONS\",\r\n TRANSACTIONS : \"TRANSACTIONS\"\r\n}\r\nconst MerchantStatus = [\r\n {\r\n value: \"DRAFT\",\r\n name: \"Draft\",\r\n },\r\n {\r\n value: \"ACTIVE\",\r\n name: \"Active\",\r\n },\r\n {\r\n value: \"SUSPENDED\",\r\n name: \"Suspended\",\r\n },\r\n];\r\nconst NearestLocationStatus = [\r\n {\r\n value: true,\r\n name: \"Yes\",\r\n },\r\n {\r\n value: false,\r\n name: \"No\",\r\n }\r\n];\r\n\r\nconst MerchantOptions = [\r\n {\r\n value: \"adjustPoints\",\r\n name: \"Adjust Points\",\r\n },\r\n {\r\n value: \"enroll\",\r\n name: \"Enroll\",\r\n },\r\n {\r\n value: \"earn\",\r\n name: \"Earn\",\r\n },\r\n {\r\n value: \"redeemPoints\",\r\n name: \"Redeem Points\",\r\n },\r\n {\r\n value: \"redeemRewards\",\r\n name: \"Redeem Rewards\",\r\n },\r\n {\r\n value: \"refund\",\r\n name: \"Refund\",\r\n },\r\n {\r\n value: \"void\",\r\n name: \"Void\",\r\n },\r\n {\r\n value: \"claimReward\",\r\n name: \"Claim Reward\",\r\n }\r\n];\r\n\r\nconst MerchantPickUpLocationOptions = [\r\n {\r\n value: \"TRUE\",\r\n name: \"true\",\r\n },\r\n {\r\n value: \"FALSE\",\r\n name: \"false\",\r\n }\r\n];\r\n\r\nconst LocationEnableForTransactionOptions = [\r\n {\r\n value: true,\r\n name: \"True\",\r\n },\r\n {\r\n value: false,\r\n name: \"False\",\r\n }\r\n];\r\n\r\nconst MerchantLocationStatus = [\r\n {\r\n value: \"DRAFT\",\r\n name: \"Draft\",\r\n },\r\n {\r\n value: \"ACTIVE\",\r\n name: \"Active\",\r\n },\r\n {\r\n value: \"SUSPENDED\",\r\n name: \"Suspended\",\r\n }\r\n]\r\n\r\nconst MerchantTransactionFilter = [\r\n {\r\n value: \"LOCATION\",\r\n name: \"Location\"\r\n },\r\n {\r\n value: \"TRANSACTION_TYPE\",\r\n name: \"Transaction Type\"\r\n },\r\n\r\n];\r\n\r\nconst MerchantTransactionType = [\r\n {\r\n value: \"COLLECTION\",\r\n name: \"Collection\",\r\n },\r\n {\r\n value: \"REDEMPTION\",\r\n name: \"Redemption\",\r\n },\r\n {\r\n value: \"ADJUSTMENT\",\r\n name: \"Adjustment\",\r\n }\r\n]\r\n\r\nconst MerchantTypesObj = convertArrayToObject(MerchantTypes, \"value\", null);\r\nconst MerchantStatusObj = convertArrayToObject(MerchantStatus, \"value\", null);\r\nconst MerchantLocationStatusObj = convertArrayToObject(MerchantLocationStatus, \"value\", null);\r\nconst MerchantTransactionTypeObj = convertArrayToObject(MerchantTransactionType, \"value\", null);\r\nconst MerchantLocationPickUpObj = convertArrayToObject(MerchantPickUpLocationOptions, \"name\", null);\r\n\r\nconst MerchantTypeColorCode = {\r\n [MerchantTypesObj.EXTERNAL]: \"info\",\r\n [MerchantTypesObj.INTERNAL]: \"secondary\",\r\n};\r\n\r\nconst MerchantTypeTextColorCode = {\r\n [MerchantTypesObj.EXTERNAL]: \"text-info\",\r\n [MerchantTypesObj.INTERNAL]: \"text-secondary\",\r\n};\r\n\r\nconst MerchantStatusColorCode = {\r\n [MerchantStatusObj.DRAFT]: \"dark\",\r\n [MerchantStatusObj.ACTIVE]: \"success\",\r\n [MerchantStatusObj.SUSPENDED]: \"danger\",\r\n};\r\n\r\nconst NearestLocationStatusColorCode = {\r\n [false]: \"dark\",\r\n [true]: \"success\",\r\n};\r\n\r\nconst NearestLocationStatusTextColorCode = {\r\n [false]: \"text-dark\",\r\n [true]: \"text-success\",\r\n};\r\n\r\nconst MerchantStatusTextColorCode = {\r\n [MerchantStatusObj.DRAFT]: \"text-dark\",\r\n [MerchantStatusObj.ACTIVE]: \"text-success\",\r\n [MerchantStatusObj.SUSPENDED]: \"text-danger\",\r\n};\r\n\r\nconst MerchantLocationStatusColorCode = {\r\n [MerchantLocationStatusObj.DRAFT]: \"dark\",\r\n [MerchantLocationStatusObj.ACTIVE]: \"success\",\r\n [MerchantLocationStatusObj.SUSPENDED]: \"danger\",\r\n};\r\n\r\nconst MerchantLMerchantTransactionTypeColorCode = {\r\n [MerchantTransactionTypeObj.ADJUSTMENT]: { color: \"white\", backgroundColor: \"#8a00e6\" },\r\n [MerchantTransactionTypeObj.COLLECTION]: { color: \"white\", backgroundColor: \"#21b73f\" },\r\n [MerchantTransactionTypeObj.REDEMPTION]: { color: \"white\", backgroundColor: \"#fd7e14\" },\r\n};\r\n\r\nconst DatePeriods = {\r\n \"7 Days\": {\r\n toDate: moment().subtract(1, \"day\").format(\"YYYY-MM-DD\"),\r\n fromDate: moment().subtract(7, \"day\").format(\"YYYY-MM-DD\"),\r\n selectedTimePeriod : \"prev. 7 days\"\r\n },\r\n \"28 Days\": {\r\n toDate: moment().subtract(1, \"day\").format(\"YYYY-MM-DD\"),\r\n fromDate: moment().subtract(28, \"day\").format(\"YYYY-MM-DD\"),\r\n selectedTimePeriod : \"prev. 28 days\"\r\n },\r\n \"90 Days\": {\r\n toDate: moment().subtract(1, \"day\").format(\"YYYY-MM-DD\"),\r\n fromDate: moment().subtract(90, \"day\").format(\"YYYY-MM-DD\"),\r\n selectedTimePeriod : \"prev. 90 days\"\r\n },\r\n \"365 Days\": {\r\n toDate: moment().subtract(1, \"day\").format(\"YYYY-MM-DD\"),\r\n fromDate: moment().subtract(365, \"day\").format(\"YYYY-MM-DD\"),\r\n selectedTimePeriod : \"prev. 365 days\"\r\n }\r\n };\r\n\r\nexport {\r\n MerchantTypes,\r\n MerchantStatus,\r\n MerchantOptions,\r\n MerchantPickUpLocationOptions,\r\n MerchantLocationStatus,\r\n MerchantLocationStatusObj,\r\n MerchantStatusObj,\r\n MerchantLocationPickUpObj,\r\n MerchantTypeColorCode,\r\n MerchantTypeTextColorCode,\r\n MerchantStatusColorCode,\r\n MerchantStatusTextColorCode,\r\n MerchantLocationStatusColorCode,\r\n MerchantTransactionFilter,\r\n MerchantTransactionType,\r\n MerchantLMerchantTransactionTypeColorCode,\r\n MerchantProfileTabs,\r\n DatePeriods,\r\n NearestLocationStatus,\r\n NearestLocationStatusColorCode,\r\n NearestLocationStatusTextColorCode,\r\n LocationEnableForTransactionOptions\r\n};\r\n","const TransactionTabs = {\r\n TRANSACTION_HISTORY : \"TRANSACTION_HISTORY\",\r\n IMPORT_TRANSACTIONS : \"IMPORT_TRANSACTIONS\",\r\n INVALID_TRANSACTIONS : \"INVALID_TRANSACTIONS\",\r\n ANOMALY_TRANSACTIONS : \"ANOMALY_TRANSACTIONS\"\r\n}\r\n\r\nexport default TransactionTabs;","const DaysOfWeek = [\r\n {\r\n name : \"Sunday\",\r\n value : \"SUNDAY\"\r\n },\r\n {\r\n name : \"Monday\",\r\n value : \"MONDAY\"\r\n },\r\n {\r\n name : \"Tuesday\",\r\n value : \"TUESDAY\"\r\n },\r\n {\r\n name : \"Wednesday\",\r\n value : \"WEDNESDAY\"\r\n },\r\n {\r\n name : \"Thursday\",\r\n value : \"THURSDAY\"\r\n },\r\n {\r\n name : \"Friday\",\r\n value : \"FRIDAY\"\r\n },\r\n {\r\n name : \"Saturday\",\r\n value : \"SATURDAY\"\r\n }\r\n]\r\n\r\nexport default DaysOfWeek;","const PermissionTypes={\r\n READ:\"READ\",\r\n WRITE:\"WRITE\",\r\n DELETE:\"DELETE\"\r\n}\r\n\r\nexport default PermissionTypes;","const TransactionStatus = {\r\n VALID : \"VALID\",\r\n INVALID : \"INVALID\"\r\n}\r\n\r\nconst InvalidTransactionStatus = {\r\n PENDING_ACTION : \"PENDING_ACTION\",\r\n RESOLVED : \"RESOLVED\",\r\n DISCARDED : \"DISCARDED\"\r\n}\r\n\r\nconst InvalidTransactionStatusVariant = {\r\n PENDING_ACTION : \"warning\",\r\n RESOLVED : \"success\",\r\n DISCARDED : \"danger\"\r\n}\r\n\r\nexport {\r\n TransactionStatus, \r\n InvalidTransactionStatus,\r\n InvalidTransactionStatusVariant\r\n};","const UserTypes = {\r\n USER : \"USER\",\r\n CLIENT : \"CLIENT\"\r\n}\r\n\r\nexport default UserTypes;","import { \r\n faCalendar, \r\n faCheckCircle, \r\n faClock, \r\n faCreditCard, \r\n faExclamationCircle, \r\n faLayerGroup, \r\n faMapMarkerAlt, \r\n faMedal, \r\n faPower \r\n} from \"FaICIconMap\";\r\n\r\nconst RewardsHeaderTabs = {\r\n REWARD_POOL: \"REWARD_POOL\",\r\n REWARD_LOGISTICS: \"REWARD_LOGISTICS\"\r\n};\r\n\r\nconst RewardType = {\r\n TANGIBLE: \"TANGIBLE\",\r\n DIGITAL: \"DIGITAL\",\r\n};\r\n\r\nconst RewardSubType = {\r\n VOUCHER: \"VOUCHER\",\r\n PARTNER: \"PARTNER\",\r\n INSTANT: \"INSTANT\"\r\n};\r\n\r\nconst RewardStatus = {\r\n DRAFT: \"DRAFT\",\r\n ENABLED: \"ENABLED\",\r\n DISABLED: \"DISABLED\"\r\n};\r\n\r\nconst RewardPointValueType = {\r\n STATIC: \"STATIC\",\r\n BUNDLE: \"BUNDLE\",\r\n};\r\n\r\nconst ValidityPeriod = {\r\n FIXED: \"FIXED\",\r\n OPEN: \"OPEN\"\r\n};\r\n\r\nconst RewardValidity = {\r\n ACTIVE: \"ACTIVE\",\r\n SCHEDULED: \"SHCEDULED\",\r\n EXPIRED: \"EXPIRED\",\r\n NO_EXPIRY: \"NO_EXPIRY\"\r\n}\r\n\r\nconst PortalVisibility = {\r\n PARTNER_AND_CUSTOMER: \"PARTNER_AND_CUSTOMER\",\r\n PARTNER_ONLY: \"PARTNER_ONLY\",\r\n CUSTOMER_ONLY: \"CUSTOMER_ONLY\",\r\n NONE: \"NONE\",\r\n};\r\n\r\nconst DailyRedemptionLimit = {\r\n UNLIMITED: \"UNLIMITED\",\r\n LIMITED: \"LIMITED\"\r\n};\r\n\r\nconst TopUpMethod = {\r\n GENERATED: {\r\n methodValue: \"GENERATED\",\r\n label: \"AUTO_GENERATE\"\r\n },\r\n UPLOAD: {\r\n methodValue: \"UPLOAD\",\r\n label: \"UPLOAD_FILE\"\r\n },\r\n MANUAL: {\r\n methodValue: \"MANUAL\",\r\n label: \"PASTE_CODE\"\r\n }\r\n};\r\n\r\nconst TopUpStatus = {\r\n SUCCESS: \"SUCCESS\",\r\n FAILED: \"FAILED\"\r\n};\r\n\r\nconst RewardPickUp = {\r\n ALL_LOCATIONS: \"ALL_LOCATIONS\",\r\n SELECTED_LOCATIONS: \"SELECTED_LOCATIONS\"\r\n};\r\n\r\nconst RewardGenerationJobStatus = {\r\n PENDING: \"PENDING\",\r\n PROCESSING: \"PROCESSING\",\r\n DISPATCHED: \"DISPATCHED\",\r\n COMPLETED: \"COMPLETED\",\r\n FAILED: \"FAILED\"\r\n};\r\n\r\nconst RewardGenerationJobGroups = {\r\n INDIVIDUAL: \"INDIVIDUAL\",\r\n BATCHES: \"BATCHES\",\r\n};\r\n\r\nconst RedemptionStatus = {\r\n REQUESTED: \"REQUESTED\",\r\n READY: \"READY\",\r\n CLAIMED: \"CLAIMED\",\r\n CANCELLED: \"CANCELLED\",\r\n PROCESSING: \"PROCESSING\",\r\n COMPLETED: \"COMPLETED\",\r\n FAILED: \"FAILED\",\r\n REFUNDED: \"REFUNDED\",\r\n};\r\n\r\nconst RewardRedemptionProcessStatus = {\r\n DISPATCH: \"DISPATCH\",\r\n COMPLETE: \"COMPLETE\",\r\n FAIL: \"FAIL\"\r\n};\r\n\r\nconst RefundStatus = {\r\n NONE: \"NONE\",\r\n REFUNDED: \"REFUNDED\",\r\n};\r\n\r\nconst RewardTabValues = {\r\n LOCKED: \"LOCKED\",\r\n REDEEMED: \"REDEEMED\",\r\n UNLOCKED: \"UNLOCKED\",\r\n};\r\n\r\nconst RedeemedRewardsSubTabValues = {\r\n ALL: \"ALL\",\r\n PROCESSING_COMPLETED: \"PROCESSING_COMPLETED\",\r\n};\r\n\r\nconst RewardSubTypeColorCode = {\r\n [RewardSubType.INSTANT]: { color: \"white\", backgroundColor: \"#04a71a\" },\r\n [RewardSubType.VOUCHER]: { color: \"white\", backgroundColor: \"#08c59c\" },\r\n [RewardSubType.PARTNER]: { color: \"white\", backgroundColor: \"#5c5ab4\" }\r\n};\r\n\r\nconst PortalVisibilityColorCode = {\r\n [PortalVisibility.PARTNER_AND_CUSTOMER]: \"success\",\r\n [PortalVisibility.PARTNER_ONLY]: \"info\",\r\n [PortalVisibility.CUSTOMER_ONLY]: \"secondary\",\r\n [PortalVisibility.NONE]: \"dark\",\r\n};\r\n\r\nconst PortalVisibilityTextColorCode = {\r\n [PortalVisibility.PARTNER_AND_CUSTOMER]: \"text-success\",\r\n [PortalVisibility.PARTNER_ONLY]: \"text-info\",\r\n [PortalVisibility.CUSTOMER_ONLY]: \"text-secondary\",\r\n [PortalVisibility.NONE]: \"text-dark\",\r\n};\r\n\r\nconst RewardStatusColorCode = {\r\n [RewardStatus.DRAFT]: \"dark\",\r\n [RewardStatus.ENABLED]: \"success\",\r\n [RewardStatus.DISABLED]: \"danger\",\r\n};\r\n\r\nconst RewardStatusTextColorCode = {\r\n [RewardStatus.DRAFT]: \"text-dark\",\r\n [RewardStatus.ENABLED]: \"text-success\",\r\n [RewardStatus.DISABLED]: \"text-danger\",\r\n};\r\n\r\nconst RedemptionLogStatusColorCode = {\r\n [RedemptionStatus.REQUESTED]: { color: \"black\", backgroundColor: \"#ffd15e\" },\r\n [RedemptionStatus.READY]: { color: \"white\", backgroundColor: \"#48d463\" },\r\n [RedemptionStatus.CLAIMED]: { color: \"white\", backgroundColor: \"#007bff\" },\r\n [RedemptionStatus.CANCELLED]: { color: \"white\", backgroundColor: \"#f25c5c\" },\r\n};\r\n\r\nconst TopUpMethodColorCode = {\r\n [TopUpMethod.GENERATED.methodValue]: \"info\",\r\n [TopUpMethod.UPLOAD.methodValue]: \"warning\",\r\n [TopUpMethod.MANUAL.methodValue]: \"primary\",\r\n};\r\n\r\nconst TopUpStatusColorCode = {\r\n [TopUpStatus.SUCCESS]: \"success\",\r\n [TopUpStatus.FAILED]: \"danger\",\r\n};\r\n\r\nconst RewardGenerationJobStatusColorCode = {\r\n [RewardGenerationJobStatus.PENDING]: { color: \"black\", backgroundColor: \"#ffb907\" },\r\n [RewardGenerationJobStatus.PROCESSING]: { color: \"white\", backgroundColor: \"#fd7e14\" },\r\n [RewardGenerationJobStatus.DISPATCHED]: { color: \"white\", backgroundColor: \"#00a3ee\" },\r\n [RewardGenerationJobStatus.COMPLETED]: { color: \"white\", backgroundColor: \"#21b73f\" },\r\n [RewardGenerationJobStatus.FAILED]: { color: \"white\", backgroundColor: \"#d82e3c\" },\r\n};\r\n\r\nconst RewardRedemptionProcessStatusButtonColorCode = {\r\n [RewardRedemptionProcessStatus.DISPATCH]: {\r\n NORMAL: \"secondary\",\r\n OUTLINE: \"outline-secondary\"\r\n },\r\n [RewardRedemptionProcessStatus.COMPLETE]: {\r\n NORMAL: \"success\",\r\n OUTLINE: \"outline-success\"\r\n },\r\n [RewardRedemptionProcessStatus.FAIL]: {\r\n NORMAL: \"danger\",\r\n OUTLINE: \"outline-danger\"\r\n },\r\n};\r\n\r\nconst RewardValidityTextColorCode = {\r\n [RewardValidity.ACTIVE]: \"text-success\",\r\n [RewardValidity.SCHEDULED]: \"text-orange\",\r\n [RewardValidity.EXPIRED]: \"text-danger\",\r\n [RewardValidity.NO_EXPIRY]: \"text-secondary\",\r\n};\r\n\r\nconst RewardValidityInfo = {\r\n [RewardValidity.ACTIVE]: {\r\n validityText: RewardValidity.ACTIVE,\r\n validityIcon: faCheckCircle,\r\n validityTextColor: \"text-success\"\r\n },\r\n [RewardValidity.SCHEDULED]: {\r\n validityText: RewardValidity.SCHEDULED,\r\n validityIcon: faClock,\r\n validityTextColor: \"text-orange\"\r\n },\r\n [RewardValidity.EXPIRED]: {\r\n validityText: RewardValidity.EXPIRED,\r\n validityIcon: faExclamationCircle,\r\n validityTextColor: \"text-danger\"\r\n },\r\n [RewardValidity.NO_EXPIRY]: {\r\n validityText: RewardValidity.ACTIVE,\r\n validityIcon: faCheckCircle,\r\n validityTextColor: \"text-success\",\r\n rewardType: RewardValidity.NO_EXPIRY,\r\n rewardTypeTextColor: \"text-secondary\",\r\n },\r\n};\r\n\r\nconst DefaultColumnsPerGroup = {\r\n INDIVIDUAL: [\r\n { name: \"transaction_id\", icon: faCreditCard, sort: false },\r\n { name: \"reward_name\", icon: faMedal, sort: false },\r\n { name: \"pick_up_location\", icon: faMapMarkerAlt, sort: false },\r\n { name: \"date\", icon: faCalendar, sort: false },\r\n { name: \"status\", icon: faPower, sort: false },\r\n { name: \"_id\", hidden: true, icon: null, sort: false },\r\n ],\r\n BATCHES: [\r\n { name: \"batch_id\", icon: faLayerGroup, sort: false },\r\n { dataField: \"no_rewards\", name: \"no._rewards\", icon: faMedal, sort: false },\r\n { name: \"date\", icon: faCalendar, sort: false },\r\n { name: \"status\", icon: faPower, sort: false },\r\n { name: \"_id\", hidden: true, icon: null, sort: false },\r\n { name: \"history_events\", hidden: true, icon: null, sort: false },\r\n ]\r\n};\r\n\r\nconst DefaultColumsObject = {\r\n PENDING: DefaultColumnsPerGroup.INDIVIDUAL,\r\n PROCESSING: {\r\n INDIVIDUAL: DefaultColumnsPerGroup.INDIVIDUAL,\r\n BATCHES: DefaultColumnsPerGroup.BATCHES,\r\n },\r\n DISPATCHED: {\r\n INDIVIDUAL: DefaultColumnsPerGroup.INDIVIDUAL,\r\n BATCHES: DefaultColumnsPerGroup.BATCHES,\r\n },\r\n COMPLETED: {\r\n INDIVIDUAL: DefaultColumnsPerGroup.INDIVIDUAL,\r\n BATCHES: DefaultColumnsPerGroup.BATCHES,\r\n },\r\n FAILED: {\r\n INDIVIDUAL: DefaultColumnsPerGroup.INDIVIDUAL,\r\n BATCHES: DefaultColumnsPerGroup.BATCHES,\r\n },\r\n};\r\n\r\nconst RewardLogisticsFilter = [\r\n {\r\n value: \"REWARD_NAME\",\r\n name: \"Reward Name\"\r\n },\r\n {\r\n value: \"LOCATION\",\r\n name: \"Location\"\r\n },\r\n {\r\n value: \"DATE\",\r\n name: \"Date\"\r\n },\r\n \r\n];\r\n\r\nexport {\r\n RewardsHeaderTabs,\r\n RewardType,\r\n RewardSubType,\r\n RewardStatus,\r\n ValidityPeriod,\r\n PortalVisibility,\r\n DailyRedemptionLimit,\r\n TopUpMethod,\r\n TopUpStatus,\r\n RewardPickUp,\r\n RedemptionLogStatusColorCode,\r\n TopUpMethodColorCode,\r\n TopUpStatusColorCode,\r\n RewardGenerationJobStatus, \r\n RewardGenerationJobGroups, \r\n RedemptionStatus,\r\n RewardRedemptionProcessStatus,\r\n RewardSubTypeColorCode,\r\n PortalVisibilityColorCode,\r\n PortalVisibilityTextColorCode,\r\n RewardStatusColorCode,\r\n RewardStatusTextColorCode,\r\n RewardGenerationJobStatusColorCode, \r\n DefaultColumsObject,\r\n RewardLogisticsFilter,\r\n RewardValidity,\r\n RewardValidityTextColorCode,\r\n RewardValidityInfo,\r\n RefundStatus,\r\n RewardPointValueType,\r\n RewardRedemptionProcessStatusButtonColorCode,\r\n RewardTabValues,\r\n RedeemedRewardsSubTabValues,\r\n};\r\n ","import {\r\n faCalendar,\r\n faHandHoldingUsd,\r\n faUser,\r\n faCoins,\r\n faCheckCircle,\r\n faTimesCircle,\r\n faPower,\r\n faCreditCard,\r\n} from \"FaICIconMap\";\r\nimport { toTitleCase } from \"Utils\";\r\n\r\nconst CALMilesProcessStatus = {\r\n COMPLETE: \"COMPLETE\",\r\n FAIL: \"FAIL\",\r\n};\r\n\r\nconst CALMilesJobStatus = {\r\n ALL: \"ALL\",\r\n PENDING: \"PENDING\",\r\n PROCESSING: \"PROCESSING\",\r\n COMPLETED: \"COMPLETED\",\r\n FAILED: \"FAILED\",\r\n};\r\n\r\nconst PartnerRewardPendingActionsStatus = {\r\n ALL: \"ALL\",\r\n REQUESTED: \"REQUESTED\",\r\n PROCESSING: \"PROCESSING\",\r\n COMPLETED: \"COMPLETED\",\r\n FAILED: \"FAILED\",\r\n REFUNDED: \"REFUNDED\",\r\n};\r\n\r\nconst CALMilesJobGroups = {\r\n INDIVIDUAL: \"INDIVIDUAL\",\r\n BATCHES: \"BATCHES\",\r\n};\r\n\r\nconst DefaultColumnsPerCalMilesGroup = {\r\n INDIVIDUAL: [\r\n {\r\n name: \"transaction_id\",\r\n headerStyle: { width: \"15%\" },\r\n icon: faHandHoldingUsd,\r\n sort: false,\r\n },\r\n {\r\n name: \"customer_name\",\r\n headerStyle: { width: \"15%\" },\r\n icon: faUser,\r\n sort: false,\r\n },\r\n { name: \"points\", icon: faCoins, sort: false },\r\n { name: \"bundle_value\", icon: faCoins, sort: false },\r\n {\r\n name: \"date\",\r\n headerStyle: { width: \"15%\" },\r\n icon: faCalendar,\r\n sort: false,\r\n },\r\n {\r\n name: \"status\",\r\n icon: faPower,\r\n sort: false,\r\n headerStyle: { width: \"10%\" },\r\n },\r\n { name: \"_id\", hidden: true, icon: null, sort: false },\r\n { name: \"fullObj\", hidden: true, icon: null, sort: false },\r\n { name: \"\", icon: null, sort: false, headerStyle: { width: \"15%\" } },\r\n ],\r\n BATCHES: [\r\n { name: \"batch_id\", icon: faCreditCard, sort: false },\r\n { name: \"total_transactions\", icon: faHandHoldingUsd, sort: false },\r\n { name: \"successful_transactions\", icon: faCheckCircle, sort: false },\r\n { name: \"failed_transactions\", icon: faTimesCircle, sort: false },\r\n { name: \"date\", icon: faCalendar, sort: false },\r\n { name: \"status\", icon: faPower, sort: false },\r\n { name: \"_id\", hidden: true, icon: null, sort: false },\r\n ],\r\n};\r\n\r\nconst CalMilesDefaultColumsObject = {\r\n ALL: DefaultColumnsPerCalMilesGroup.INDIVIDUAL,\r\n PENDING: DefaultColumnsPerCalMilesGroup.INDIVIDUAL,\r\n PROCESSING: {\r\n INDIVIDUAL: DefaultColumnsPerCalMilesGroup.INDIVIDUAL,\r\n BATCHES: DefaultColumnsPerCalMilesGroup.BATCHES,\r\n },\r\n COMPLETED: {\r\n INDIVIDUAL: DefaultColumnsPerCalMilesGroup.INDIVIDUAL,\r\n BATCHES: DefaultColumnsPerCalMilesGroup.BATCHES,\r\n },\r\n FAILED: {\r\n INDIVIDUAL: DefaultColumnsPerCalMilesGroup.INDIVIDUAL,\r\n BATCHES: DefaultColumnsPerCalMilesGroup.BATCHES,\r\n },\r\n};\r\n\r\nconst CALMilesIndividualFilter = [\r\n {\r\n value: \"Batch Id\",\r\n label: \"Batch Id\",\r\n },\r\n {\r\n value: \"Date\",\r\n label: \"Date\",\r\n },\r\n];\r\n\r\nconst BatchesWithRefundOnlyAction = [\r\n CALMilesJobStatus.COMPLETED,\r\n CALMilesJobStatus.FAILED,\r\n];\r\n\r\nconst PartnerRewardRefSearchFields = {\r\n PARTNER_REF_NUMBER: \"PARTNER_REF_NUMBER\",\r\n PARTNER_REF_NAME: \"PARTNER_REF_NAME\",\r\n};\r\n\r\nconst getPartnerRewardSearchFields = (partnerRewardName) => [\r\n {\r\n label: `${toTitleCase(partnerRewardName || \"Partner\")} Number`,\r\n value: PartnerRewardRefSearchFields.PARTNER_REF_NUMBER,\r\n },\r\n {\r\n label: \"Customer Name\",\r\n value: PartnerRewardRefSearchFields.PARTNER_REF_NAME,\r\n },\r\n];\r\n\r\nexport {\r\n CALMilesIndividualFilter,\r\n CalMilesDefaultColumsObject,\r\n CALMilesJobGroups,\r\n CALMilesJobStatus,\r\n CALMilesProcessStatus,\r\n PartnerRewardPendingActionsStatus,\r\n BatchesWithRefundOnlyAction,\r\n PartnerRewardRefSearchFields,\r\n getPartnerRewardSearchFields,\r\n};\r\n","const UserStatus = {\r\n ACTIVE: \"ACTIVE\",\r\n SUSPENDED: \"SUSPENDED\",\r\n ARCHIVE: \"ARCHIVE\",\r\n };\r\n\r\n export default UserStatus;","import moment from 'moment';\r\n\r\nconst AnalyticsDatePeriods = {\r\n \"Today\": {\r\n toDate: moment().format(\"YYYY-MM-DD\"),\r\n fromDate: moment().startOf('day').format('YYYY-MM-DD'),\r\n selectedTimePeriod : 'yesterday'\r\n },\r\n \"Yesterday\": {\r\n toDate: moment().subtract(1, 'day').format(\"YYYY-MM-DD\"),\r\n fromDate: moment().subtract(2, 'day').format(\"YYYY-MM-DD\"),\r\n selectedTimePeriod : 'day before yesterday'\r\n },\r\n \"Last 7 Days\": {\r\n toDate: moment().format(\"YYYY-MM-DD\"),\r\n fromDate: moment().subtract(7, 'day').format(\"YYYY-MM-DD\"),\r\n selectedTimePeriod : 'prev. 7 days'\r\n },\r\n \"Last 28 Days\": {\r\n toDate: moment().format(\"YYYY-MM-DD\"),\r\n fromDate: moment().subtract(28, 'day').format(\"YYYY-MM-DD\"),\r\n selectedTimePeriod : 'prev. 28 days'\r\n },\r\n \"Last 90 Days\": {\r\n toDate: moment().format(\"YYYY-MM-DD\"),\r\n fromDate: moment().subtract(90, 'day').format(\"YYYY-MM-DD\"),\r\n selectedTimePeriod : 'prev. 90 days'\r\n },\r\n \"Last 365 Days\": {\r\n toDate: moment().format(\"YYYY-MM-DD\"),\r\n fromDate: moment().subtract(365, 'day').format(\"YYYY-MM-DD\"),\r\n selectedTimePeriod : 'prev. 365 days'\r\n }\r\n };\r\n\r\n export default AnalyticsDatePeriods;","const PermissionModules = {\r\n AFFINITY_GROUPS: \"AffinityGroup\",\r\n GROUPS: \"Group\",\r\n ORGANIZATION: \"Organization\",\r\n USERS: \"User\",\r\n MODULES: \"Module\",\r\n USER_DATASET: \"UserDataset\",\r\n USER_PERMISSION: \"UserPermission\",\r\n USER_ACTIVITY: \"UserActivity\",\r\n MEMBER: \"Member\",\r\n MERCHANT: \"Merchant\",\r\n CARD: \"Card\",\r\n TIER: \"Tier\",\r\n REWARD: \"Reward\",\r\n POINT: \"Point\",\r\n SETTING: \"Setting\",\r\n TRANSACTION: \"Transaction\",\r\n POINT_RULES: \"PointRule\",\r\n ATTRIBUTE: \"Attribute\",\r\n NOTIFICATION: \"Notification\",\r\n MEMBER_NOTE: \"MemberNote\",\r\n SUB_TRANSACTION_TYPE: \"SubTransactionType\",\r\n LOCATION: \"Location\",\r\n ACTIVITY: \"Activity\",\r\n SEGMENT: \"Segment\",\r\n EVENT: \"Event\",\r\n CARD_ANALYTICS: \"CardAnalytics\",\r\n MEMBER_ANALYTICS: \"MemberAnalytics\",\r\n MERCHANT_ANALYTICS: \"MerchantAnalytics\",\r\n REWARD_ANALYTICS: \"RewardAnalytics\",\r\n TIER_ANALYTICS: \"TierAnalytics\",\r\n RULE: \"Rules\",\r\n RULE_TYPE: \"RuleTypes\",\r\n INCIDENT: \"Incidents\",\r\n CHARITIES: \"Charity\",\r\n JOBS: \"Jobs\",\r\n JOB_TYPES: \"JobTypes\",\r\n AUDIT_LOG: \"AuditLog\",\r\n KLIP: \"Klip\",\r\n JOB_EXECUTIONS: \"JobExecutions\",\r\n REGION: \"Region\",\r\n};\r\n\r\nconst PermissionModulesDetails = {\r\n [PermissionModules.AFFINITY_GROUPS]: {\r\n moduleName: \"AffinityGroup\",\r\n moduleDescription: \"Affinity group management module\",\r\n actions: {\r\n ListAffinityGroups: \"ListAffinityGroups\",\r\n GetAffinityGroup: \"GetAffinityGroup\",\r\n CreateAffinityGroup: \"CreateAffinityGroup\",\r\n UpdateAffinityGroup: \"UpdateAffinityGroup\",\r\n DeleteAffinityGroup: \"DeleteAffinityGroup\",\r\n ListAffinityGroupMemberImportJobs: 'ListAffinityGroupMemberImportJobs',\r\n ListAffinityGroupMemberImportLogs: 'ListAffinityGroupMemberImportLogs',\r\n ExportAffinityGroupMemberImportLogs: 'ExportAffinityGroupMemberImportLogs',\r\n CreateAffinityGroupMemberImportJob: 'CreateAffinityGroupMemberImportJob'\r\n },\r\n },\r\n [PermissionModules.GROUPS]: {\r\n moduleName: \"Group\",\r\n moduleDescription: \"System group management module\",\r\n actions: {\r\n ListGroups: \"ListGroups\",\r\n CreateGroup: \"CreateGroup\",\r\n UpdateGroup: \"UpdateGroup\",\r\n DeleteGroup: \"DeleteGroup\",\r\n },\r\n },\r\n [PermissionModules.ORGANIZATION]: {\r\n moduleName: \"Organization\",\r\n moduleDescription: \"Organization management module\",\r\n actions: {\r\n CreateOrganization: \"CreateOrganization\",\r\n GetOrganization: \"GetOrganization\",\r\n UpdateOrganization: \"UpdateOrganization\",\r\n },\r\n },\r\n [PermissionModules.USERS]: {\r\n moduleName: \"User\",\r\n moduleDescription: \"System user management module\",\r\n actions: {\r\n CreateUser: \"CreateUser\",\r\n GetUser: \"GetUser\",\r\n ListUsers: \"ListUsers\",\r\n UpdateUser: \"UpdateUser\",\r\n DeleteUser: \"DeleteUser\",\r\n ResetPassword: \"ResetPassword\",\r\n },\r\n },\r\n [PermissionModules.MODULES]: {\r\n moduleName: \"Module\",\r\n moduleDescription: \"System modules\",\r\n actions: {\r\n ListModules: \"ListModules\",\r\n CreateModule: \"CreateModule\",\r\n UpdateModule: \"UpdateModule\",\r\n },\r\n },\r\n [PermissionModules.USER_DATASET]: {\r\n moduleName: \"UserDataset\",\r\n moduleDescription: \"UserDataset modules\",\r\n actions: {\r\n ListDatasets: \"ListDatasets\",\r\n CreateDataset: \"CreateDataset\",\r\n },\r\n },\r\n [PermissionModules.USER_PERMISSION]: {\r\n moduleName: \"UserPermission\",\r\n moduleDescription: \"UserPermission modules\",\r\n actions: {\r\n ListUserPermissions: \"ListUserPermissions\",\r\n CreateUserPermission: \"CreateUserPermission\",\r\n UpdateUserPermission: \"UpdateUserPermission\",\r\n DeleteUserPermission: \"DeleteUserPermission\",\r\n },\r\n },\r\n [PermissionModules.USER_ACTIVITY]: {\r\n moduleName: \"UserActivity\",\r\n moduleDescription: \"UserActivity modules\",\r\n actions: {\r\n ListUserActivities: \"ListUserActivities\",\r\n },\r\n },\r\n [PermissionModules.MEMBER]: {\r\n moduleName: \"Member\",\r\n moduleDescription: \"Member modules\",\r\n actions: {\r\n ListMembers: \"ListMembers\",\r\n GetMember: \"GetMember\",\r\n CreateMember: \"CreateMember\",\r\n UpdateMember: \"UpdateMember\",\r\n ChangeType: \"ChangeType\",\r\n DeleteMember: \"DeleteMember\",\r\n ExportMember: \"ExportMember\",\r\n EraseMember: \"EraseMember\",\r\n ExportMembers: \"ExportMembers\",\r\n UpdateMemberAffinityGroup:\"UpdateMemberAffinityGroup\"\r\n },\r\n },\r\n [PermissionModules.MERCHANT]: {\r\n moduleName: \"Merchant\",\r\n moduleDescription: \"Merchant management module\",\r\n actions: {\r\n ListMerchants: \"ListMerchants\",\r\n GetMerchant: \"GetMerchant\",\r\n CreateMerchant: \"CreateMerchant\",\r\n UpdateMerchant: \"UpdateMerchant\",\r\n DeleteMerchant: \"DeleteMerchant\",\r\n },\r\n },\r\n [PermissionModules.CARD]: {\r\n moduleName: \"Card\",\r\n moduleDescription: \"Card modules\",\r\n actions: {\r\n ListCards: \"ListCards\",\r\n GetCard: \"GetCard\",\r\n GenerateCards: \"GenerateCards\",\r\n ListCardBatchJobs: \"ListCardBatchJobs\",\r\n ListCardConfigurations: \"ListCardConfigurations\",\r\n UpdateCard: \"UpdateCard\",\r\n CreateEmbossedRequest: \"CreateEmbossedRequest\",\r\n CancelEmbossed: \"CancelEmbossed\",\r\n AssignCard: \"AssignCard\",\r\n CreateCardBatchJob: \"CreateCardBatchJob\",\r\n UpdateCardBatchJob: \"UpdateCardBatchJob\",\r\n CreateCardConfiguration: \"CreateCardConfiguration\",\r\n UpdateCardConfiguration: \"UpdateCardConfiguration\",\r\n ExportCardBatchJobs: \"ExportCardBatchJobs\",\r\n },\r\n },\r\n [PermissionModules.TIER]: {\r\n moduleName: \"Tier\",\r\n moduleDescription: \"Tier modules\",\r\n actions: {\r\n ListTiers: \"ListTiers\",\r\n CreateTier: \"CreateTier\",\r\n UpdateTier: \"UpdateTier\",\r\n DeleteTier: \"DeleteTier\",\r\n },\r\n },\r\n [PermissionModules.REWARD]: {\r\n moduleName: \"Reward\",\r\n moduleDescription: \"Reward modules\",\r\n actions: {\r\n ListRewards: \"ListRewards\",\r\n GetReward: \"GetReward\",\r\n ListRewardTopups: \"ListRewardTopups\",\r\n ListRewardRedemptionLogs: \"ListRewardRedemptionLogs\",\r\n ListRewardDistributionJobs: \"ListRewardDistributionJobs\",\r\n CreateReward: \"CreateReward\",\r\n CreateRewardTopup: \"CreateRewardTopup\",\r\n UpdateReward: \"UpdateReward\",\r\n CancelLogItem: \"CancelLogItem\",\r\n RefundLogItem: \"RefundLogItem\",\r\n UpdateLogItem: \"UpdateLogItem\",\r\n ClaimReward: \"ClaimReward\",\r\n CreateRewardDistributionJob: \"CreateRewardDistributionJob\",\r\n UpdateRewardDistributionJob: \"UpdateRewardDistributionJob\",\r\n UploadRewardTopupFile: \"UploadRewardTopupFile\",\r\n RedeemReward: \"RedeemReward\",\r\n DeleteReward: \"DeleteReward\",\r\n GetRewardRedemptionLog: \"GetRewardRedemptionLog\",\r\n },\r\n },\r\n [PermissionModules.POINT]: {\r\n moduleName: \"Point\",\r\n moduleDescription: \"Point modules\",\r\n actions: {\r\n RedeemPoints: \"RedeemPoints\",\r\n AdjustPoints: \"AdjustPoints\",\r\n TransferPoints: \"TransferPoints\",\r\n CollectPointsBill: \"CollectPointsBill\",\r\n CollectPointsAmount: \"CollectPointsAmount\",\r\n },\r\n },\r\n [PermissionModules.SETTING]: {\r\n moduleName: \"Setting\",\r\n moduleDescription: \"Settings modules\",\r\n actions: {},\r\n },\r\n [PermissionModules.TRANSACTION]: {\r\n moduleName: \"Transaction\",\r\n moduleDescription: \"Transaction modules\",\r\n actions: {\r\n ListTransactions: \"ListTransactions\",\r\n ListTransactionImportJobs: \"ListTransactionImportJobs\",\r\n ListStagedTransaction: \"ListStagedTransactions\",\r\n CreateTransactionImportJob: \"CreateTransactionImportJob\",\r\n UpdateStagedTransaction: \"UpdateStagedTransaction\",\r\n DeleteStagedTransaction: \"DeleteStagedTransaction\",\r\n },\r\n },\r\n [PermissionModules.POINT_RULES]: {\r\n moduleName: \"PointRule\",\r\n moduleDescription: \"Point rule modules\",\r\n actions: {\r\n ListPointRules: \"ListPointRules\",\r\n CreatePointRule: \"CreatePointRule\",\r\n UpdatePointRule: \"UpdatePointRule\",\r\n DeletePointRule: \"DeletePointRule\",\r\n },\r\n },\r\n [PermissionModules.ATTRIBUTE]: {\r\n moduleName: \"Attribute\",\r\n moduleDescription: \"Attribute modules\",\r\n actions: {\r\n ListAttributes: \"ListAttributes\",\r\n },\r\n },\r\n [PermissionModules.SUB_TRANSACTION_TYPE]: {\r\n moduleName: \"SubTransactionType\",\r\n moduleDescription: \"Sub transaction management module\",\r\n actions: {\r\n ListSubTransactionTypes: \"ListSubTransactionTypes\",\r\n CreateSubTransactionType: \"CreateSubTransactionType\",\r\n UpdateSubTransactionType: \"UpdateSubTransactionType\",\r\n DeleteSubTransactionType: \"DeleteSubTransactionType\",\r\n },\r\n },\r\n [PermissionModules.NOTIFICATION]: {\r\n moduleName: \"Notification\",\r\n moduleDescription: \"Notification management module\",\r\n actions: {\r\n ListNotifications: \"ListNotifications\",\r\n ListNotificationLogs: \"ListNotificationLogs\",\r\n GetNotification: \"GetNotification\",\r\n CreateNotification: \"CreateNotification\",\r\n UpdateNotification: \"UpdateNotification\",\r\n DeleteNotification: \"DeleteNotification\",\r\n },\r\n },\r\n [PermissionModules.MEMBER_NOTE]: {\r\n moduleName: \"MemberNote\",\r\n moduleDescription: \"Member notes module\",\r\n actions: {\r\n ListMemberNotes: \"ListMemberNotes\",\r\n CreateMemberNote: \"CreateMemberNote\",\r\n UpdateMemberNote: \"UpdateMemberNote\",\r\n DeleteMemberNote: \"DeleteMemberNote\",\r\n },\r\n },\r\n [PermissionModules.SEGMENT]: {\r\n moduleName: \"Segment\",\r\n moduleDescription: \"Segment management module\",\r\n actions: {\r\n ListSegments: \"ListSegments\",\r\n ListSegmentCaregories: \"ListSegmentCategories\",\r\n CreateSegment: \"CreateSegment\",\r\n UpdateSegment: \"UpdateSegment\",\r\n CreateSegmentCategory: \"CreateSegmentCategory\",\r\n UpdateSegmentCategory: \"UpdateSegmentCategory\",\r\n DeleteSegment: \"DeleteSegment\",\r\n DeleteSegmentCategory: \"DeleteSegmentCategory\",\r\n },\r\n },\r\n [PermissionModules.LOCATION]: {\r\n moduleName: \"Location\",\r\n moduleDescription: \"Location management module\",\r\n actions: {\r\n ListLocations: \"ListLocations\",\r\n GetLocation: \"GetLocation\",\r\n CreateLocation: \"CreateLocation\",\r\n UpdateLocation: \"UpdateLocation\",\r\n DeleteLocation: \"DeleteLocation\",\r\n },\r\n },\r\n [PermissionModules.ACTIVITY]: {\r\n moduleName: \"Activity\",\r\n moduleDescription: \"Activity management module\",\r\n actions: {\r\n ListActivities: \"ListActivities\",\r\n ExportActivities: \"ExportActivities\",\r\n CreateActivity: \"CreateActivity\",\r\n },\r\n },\r\n [PermissionModules.EVENT]: {\r\n moduleName: \"Event\",\r\n moduleDescription: \"Event management module\",\r\n actions: {\r\n ListEvents: \"ListEvents\",\r\n CreateEvent: \"CreateEvent\",\r\n UpdateEvent: \"UpdateEvent\",\r\n },\r\n },\r\n\r\n [PermissionModules.CARD_ANALYTICS]: {\r\n moduleName: \"CardAnalytics\",\r\n moduleDescription: \"Card Analytics management module\",\r\n actions: {\r\n ViewCardsSummary: \"ViewCardsSummary\",\r\n ViewCardProcessingStatusReport: \"ViewCardProcessingStatusReport\",\r\n ViewCardActivationReport: \"ViewCardActivationReport\",\r\n ExportCardActivationReport: \"ExportCardActivationReport\",\r\n },\r\n },\r\n [PermissionModules.MEMBER_ANALYTICS]: {\r\n moduleName: \"MemberAnalytics\",\r\n moduleDescription: \"Member Analytics management module\",\r\n actions: {\r\n ViewMemberRegistrationCounts: \"ViewMemberRegistrationCounts\",\r\n ViewMemberRegistrationSeries: \"ViewMemberRegistrationSeries\",\r\n ExportMemberRegistrationCounts: \"ExportMemberRegistrationCounts\",\r\n ExportMemberRegistrationSeries: \"ExportMemberRegistrationSeries\",\r\n ViewMemberAffinityGroupsCounts: \"ViewMemberAffinityGroupsCounts\",\r\n ViewMemberAffinityGroupsSeries: \"ViewMemberAffinityGroupsSeries\",\r\n ViewMemberTierCounts: \"ViewMemberTierCounts\",\r\n ViewMemberTierSeries: \"ViewMemberTierSeries\",\r\n ViewNewReturnMemberCounts: \"ViewNewReturnMemberCounts\",\r\n ViewNewReturnMemberSeries: \"ViewNewReturnMemberSeries\",\r\n ExportNewReturnMemberSeries: \"ExportNewReturnMemberSeries\",\r\n },\r\n },\r\n [PermissionModules.MERCHANT_ANALYTICS]: {\r\n moduleName: \"MerchantAnalytics\",\r\n moduleDescription: \"Merchant Analytics management module\",\r\n actions: {\r\n ViewMerchantsTransactionCollectionCount:\r\n \"ViewMerchantsTransactionCollectionCount\",\r\n ExportMerchantsTransactionCollectionCount:\r\n \"ExportMerchantsTransactionCollectionCount\",\r\n ViewMerchantsTransactionCollectionSeries:\r\n \"ViewMerchantsTransactionCollectionSeries\",\r\n ExportMerchantsTransactionCollectionSeries:\r\n \"ExportMerchantsTransactionCollectionSeries\",\r\n ViewMerchantsTransactionRedemptionCount:\r\n \"ViewMerchantsTransactionRedemptionCount\",\r\n ExportMerchantsTransactionRedemptionCount:\r\n \"ExportMerchantsTransactionRedemptionCount\",\r\n ViewMerchantsTransactionRedemptionSeries:\r\n \"ViewMerchantsTransactionRedemptionSeries\",\r\n ExportMerchantsTransactionRedemptionSeries:\r\n \"ExportMerchantsTransactionRedemptionSeries\",\r\n ViewMerchantsTransactionAdjustmentCount:\r\n \"ViewMerchantsTransactionAdjustmentCount\",\r\n ExportMerchantsTransactionAdjustmentCount:\r\n \"ExportMerchantsTransactionAdjustmentCount\",\r\n ViewMerchantsTransactionAdjustmentSeries:\r\n \"ViewMerchantsTransactionAdjustmentSeries\",\r\n ExportMerchantsTransactionAdjustmentSeries:\r\n \"ExportMerchantsTransactionAdjustmentSeries\",\r\n ViewMerchantsPointMovements: \"ViewMerchantsPointMovements\",\r\n },\r\n },\r\n [PermissionModules.REWARD_ANALYTICS]: {\r\n moduleName: \"RewardAnalytics\",\r\n moduleDescription: \"Reward Analytics management module\",\r\n actions: {\r\n ViewTopRewards: \"ViewTopRewards\",\r\n ViewRedeemedRewardsCount: \"ViewRedeemedRewardsCount\",\r\n ExportRedeemedRewardsCount: \"ExportRedeemedRewardsCount\",\r\n ViewRedeemedRewardsSeries: \"ViewRedeemedRewardsSeries\",\r\n ExportRedeemedRewardsSeries: \"ExportRedeemedRewardsSeries\",\r\n },\r\n },\r\n [PermissionModules.TIER_ANALYTICS]: {\r\n moduleName: \"TierAnalytics\",\r\n moduleDescription: \"Tier Analytics management module\",\r\n actions: {\r\n ViewAffinityGroupPointCounts: \"ViewAffinityGroupPointCounts\",\r\n ExportAffinityGroupPointCounts: \"ExportAffinityGroupPointCounts\",\r\n ViewTierPointCounts: \"ViewTierPointCounts\",\r\n ExportTierPointCounts: \"ExportTierPointCounts\",\r\n ViewTierDistribution: \"ViewTierDistribution\",\r\n },\r\n },\r\n [PermissionModules.RULE]: {\r\n moduleName: \"Rules\",\r\n moduleDescription: \"Rules management module\",\r\n actions: {\r\n ListRules: \"ListRules\",\r\n GetRule: \"GetRule\",\r\n CreateRule: \"CreateRule\",\r\n DeleteRule: \"DeleteRule\",\r\n UpdateRule: \"UpdateRule\",\r\n },\r\n },\r\n [PermissionModules.RULE_TYPE]: {\r\n moduleName: \"RuleTypes\",\r\n moduleDescription: \"Rule Types management module\",\r\n actions: {\r\n ListRuleTypes: \"ListRuleTypes\",\r\n GetRuleType: \"GetRuleType\",\r\n CreateRuleType: \"CreateRuleType\",\r\n DeleteRuleType: \"DeleteRuleType\",\r\n UpdateRuleType: \"UpdateRuleType\",\r\n },\r\n },\r\n [PermissionModules.INCIDENT]: {\r\n moduleName: \"Incidents\",\r\n moduleDescription: \"Incidents management module\",\r\n actions: {\r\n ListIncidents: \"ListIncidents\",\r\n GetIncident: \"GetIncident\",\r\n UpdateIncident: \"UpdateIncident\",\r\n ExportIncidents: \"ExportIncidents\",\r\n ExportIncident: \"ExportIncident\",\r\n },\r\n },\r\n [PermissionModules.CHARITIES]: {\r\n moduleName: \"Charity\",\r\n moduleDescription: \"Charities modules\",\r\n actions: {\r\n ListCharities: \"ListCharities\",\r\n GetCharity: \"GetCharity\",\r\n CreateCharity: \"CreateCharity\",\r\n UpdateCharity: \"UpdateCharity\",\r\n DeleteCharity: \"DeleteCharity\",\r\n ExportCharity: \"ExportCharity\",\r\n EraseCharity: \"EraseCharity\",\r\n },\r\n },\r\n [PermissionModules.JOBS]: {\r\n moduleName: \"Jobs\",\r\n moduleDescription: \"Jobs modules\",\r\n actions: {\r\n CreateJob: \"CreateJob\",\r\n UpdateJob: \"UpdateJob\",\r\n ListJobs: \"ListJobs\",\r\n GetJob: \"GetJob\",\r\n DeleteJob: \"DeleteJob\",\r\n },\r\n },\r\n\r\n [PermissionModules.JOB_TYPES]: {\r\n moduleName: \"JobTypes\",\r\n moduleDescription: \"Job types modules\",\r\n actions: {\r\n CreateJobType: \"CreateJobType\",\r\n UpdateJobType: \"UpdateJobType\",\r\n ListJobTypes: \"ListJobTypes\",\r\n GetJobType: \"GetJobType\",\r\n DeleteJobType: \"DeleteJobType\",\r\n },\r\n },\r\n [PermissionModules.AUDIT_LOG]: {\r\n moduleName: \"AuditLog\",\r\n moduleDescription: \"Audit Log modules\",\r\n actions: {\r\n ListAuditLogs: \"ListAuditLogs\",\r\n },\r\n },\r\n [PermissionModules.KLIP]: {\r\n moduleName: \"Klip\",\r\n moduleDescription: \"Klip modules\",\r\n actions: {\r\n RedeemPoints: \"RedeemPoints\",\r\n CollectPointsBill: \"CollectPointsBill\",\r\n CollectPointsAmount: \"CollectPointsAmount\",\r\n ListRewards: \"ListRewards\",\r\n RedeemReward: \"RedeemReward\",\r\n ListRewardRedemptionLogs: \"ListRewardRedemptionLogs\",\r\n ListMembers: \"ListMembers\",\r\n GetMember: \"GetMember\",\r\n ClaimReward: \"ClaimReward\",\r\n AdjustPoints:\"AdjustPoints\"\r\n },\r\n },\r\n [PermissionModules.JOB_EXECUTIONS]: {\r\n moduleName: \"JobExecutions\",\r\n moduleDescription: \"Job executions modules\",\r\n actions: {\r\n ListJobExecutions: \"ListJobExecutions\",\r\n GetJobExecution: \"GetJobExecution\",\r\n },\r\n },\r\n [PermissionModules.REGION]: {\r\n moduleName: \"Region\",\r\n moduleDescription: \"Region executions modules\",\r\n actions: {\r\n CreateRegion: \"CreateRegion\",\r\n UpdateRegion: \"UpdateRegion\",\r\n ListRegions: \"ListRegions\",\r\n DeleteRegion: \"DeleteRegion\",\r\n },\r\n },\r\n};\r\n\r\n// const PermisssionModulesData = {\r\n// ...PermissionModules,\r\n// ...PermissionModulesDetails\r\n// }\r\nexport default PermissionModulesDetails;\r\n\r\nexport { PermissionModules as AccessPermissionModuleNames };\r\n","const MessageLogFilterOptions = {\r\n CHANNEL: \"CHANNEL\",\r\n LOYALTY_ACTIVITY: \"LOYALTY_ACTIVITY\",\r\n TO_SMS: \"TO_SMS\",\r\n TO_EMAIL: \"TO_EMAIL\",\r\n STATUS: \"STATUS\",\r\n};\r\nconst MessageLogChannel = {\r\n SMS: \"SMS\",\r\n EMAIL: \"EMAIL\",\r\n PUSH: \"PUSH\",\r\n WHATSAPP: \"WHATSAPP\",\r\n};\r\nconst MessageLogStatus = {\r\n SENT: \"SENT\",\r\n OPEN: \"OPEN\",\r\n DELIVERED: \"DELIVERED\",\r\n QUEUED: \"QUEUED\",\r\n FAILED: \"FAILED\",\r\n INTERNAL_ERROR: \"INTERNAL_ERROR\",\r\n};\r\n\r\nexport { MessageLogFilterOptions, MessageLogStatus, MessageLogChannel };\r\n","import {\r\n faCreditCard, \r\n faUser,\r\n faUserPlus, \r\n faGift,\r\n faHeart,\r\n faUsdCircle,\r\n faCoins\r\n } from \"FaICIconMap\";\r\n \r\nconst NotificationTemplatesTypes = {\r\n DONATION_NOTIFICATION: {\r\n name : \"Redeem Points for Donation\",\r\n value : \"DONATION_NOTIFICATION\",\r\n icon : faHeart\r\n },\r\n EARN_POINTS_BILL_NOTIFICATION: {\r\n name : \"Earn Points for Bill Value\",\r\n value : \"EARN_POINTS_BILL_NOTIFICATION\",\r\n icon : faCreditCard\r\n },\r\n EARN_POINTS_NOTIFICATION: {\r\n name : \"Earn Points for Point Value\",\r\n value : \"EARN_POINTS_NOTIFICATION\",\r\n icon : faCoins\r\n },\r\n REDEEEM_POINTS_NOTIFICATION: {\r\n name : \"Redeem Points\",\r\n value : \"REDEEEM_POINTS_NOTIFICATION\",\r\n icon : faUsdCircle\r\n },\r\n ENROLL_NOTIFICATION : {\r\n name : \"Enroll on the Loyalty Program\",\r\n value : \"ENROLL_NOTIFICATION\",\r\n icon : faUser\r\n \r\n },\r\n SIGNUP_NOTIFICATION : {\r\n name : \"Sign Up Customer Portal\",\r\n value : \"SIGNUP_NOTIFICATION\",\r\n icon : faUserPlus\r\n },\r\n REDEEM_REWARD_NOTIFICATION : {\r\n name : \"Redeem Rewards\",\r\n value : \"REDEEM_REWARD_NOTIFICATION\",\r\n icon : faGift\r\n }\r\n};\r\n \r\n export default NotificationTemplatesTypes;","const Status= {\r\n ENABLED: \"ENABLED\",\r\n DISABLED: \"DISABLED\"\r\n}\r\nexport default Status;","//import Constants from 'Constants';\r\nimport NotificationStatus from './NotificationStatus';\r\nimport TransportTypes from './TransportTypes';\r\n\r\n//const activityTypes = Constants.activityTypes;\r\n\r\nconst NotificationTemplates = [\r\n\r\n {\r\n \"organizationId\": \"1234\",\r\n \"regionId\": \"3332\",\r\n \"name\": 'Redeem Points for Donation',\r\n \"transports\": [\r\n TransportTypes.SMS, TransportTypes.EMAIL\r\n ],\r\n \"isVisible\": 0,\r\n \"type\": \"DONATION_NOTIFICATION\",\r\n \"status\": NotificationStatus.ENABLED,\r\n \"eventId\": \"1\",\r\n \"sms\": {\r\n \"from\": \"Supuni\",\r\n \"body\": \"Hey {{name}}, Thank you for shopping with us.\\nYou have earned {{points}} loyalty points for your purchase worth {{bill}} on {{date}}.\\nYour current total Tier point balance is {{total_tier_points}} and Redemption point balances is {{total_points}} respectively.\"\r\n },\r\n \"push\": {\r\n \"from\": \"\",\r\n \"body\": \"\"\r\n },\r\n \"email\": {\r\n \"from\": \"Supuni\",\r\n \"body\": \"Hey {{name}},\\nYou have redeemed {{points}} points against your purchase worth {{bill}} on {{date}} at {{time}} through our Dilmah Mobile App.\\nYour current total redemption point balance is {{balance_points}}\",\r\n \"editorBody\": JSON.stringify({ \"blocks\": [{ \"key\": \"98v37\", \"text\": \"Hey Name \", \"type\": \"unstyled\", \"depth\": 0, \"inlineStyleRanges\": [], \"entityRanges\": [{ \"offset\": 4, \"length\": 4, \"key\": 0 }], \"data\": { \"text-align\": \"align-center\" } }, { \"key\": \"4si3n\", \"text\": \"\", \"type\": \"unstyled\", \"depth\": 0, \"inlineStyleRanges\": [], \"entityRanges\": [], \"data\": { \"text-align\": \"align-center\" } }, { \"key\": \"6te7a\", \"text\": \"Here is your loyalty point update for the transaction worth {{bill}} on {{date}}.\", \"type\": \"unstyled\", \"depth\": 0, \"inlineStyleRanges\": [], \"entityRanges\": [], \"data\": { \"text-align\": \"align-center\" } }, { \"key\": \"ev1k7\", \"text\": \"\", \"type\": \"unstyled\", \"depth\": 0, \"inlineStyleRanges\": [], \"entityRanges\": [], \"data\": { \"text-align\": \"align-center\" } }, { \"key\": \"480ji\", \"text\": \"{{points}}\", \"type\": \"unstyled\", \"depth\": 0, \"inlineStyleRanges\": [], \"entityRanges\": [], \"data\": { \"text-align\": \"align-center\" } }, { \"key\": \"31bsd\", \"text\": \"Total Point Earned On {{date}}\", \"type\": \"unstyled\", \"depth\": 0, \"inlineStyleRanges\": [], \"entityRanges\": [], \"data\": { \"text-align\": \"align-center\" } }, { \"key\": \"dfn59\", \"text\": \"\", \"type\": \"unstyled\", \"depth\": 0, \"inlineStyleRanges\": [], \"entityRanges\": [], \"data\": { \"text-align\": \"align-center\" } }, { \"key\": \"39f65\", \"text\": \" The balance as at {{date}} is as follows \", \"type\": \"unstyled\", \"depth\": 0, \"inlineStyleRanges\": [], \"entityRanges\": [], \"data\": { \"text-align\": \"align-center\" } }, { \"key\": \"c9s5c\", \"text\": \" \", \"type\": \"unstyled\", \"depth\": 0, \"inlineStyleRanges\": [], \"entityRanges\": [], \"data\": { \"text-align\": \"align-center\" } }, { \"key\": \"8nb8o\", \"text\": \"{{total_tier_points}}\", \"type\": \"unstyled\", \"depth\": 0, \"inlineStyleRanges\": [], \"entityRanges\": [], \"data\": { \"text-align\": \"align-center\" } }, { \"key\": \"cvrg5\", \"text\": \"Tier Points\", \"type\": \"unstyled\", \"depth\": 0, \"inlineStyleRanges\": [], \"entityRanges\": [], \"data\": { \"text-align\": \"align-center\" } }, { \"key\": \"e1qqp\", \"text\": \"\", \"type\": \"unstyled\", \"depth\": 0, \"inlineStyleRanges\": [], \"entityRanges\": [], \"data\": { \"text-align\": \"align-center\" } }, { \"key\": \"5nhjc\", \"text\": \"{{total_points}}\", \"type\": \"unstyled\", \"depth\": 0, \"inlineStyleRanges\": [], \"entityRanges\": [], \"data\": { \"text-align\": \"align-center\" } }, { \"key\": \"apghc\", \"text\": \"Redemption Points\", \"type\": \"unstyled\", \"depth\": 0, \"inlineStyleRanges\": [], \"entityRanges\": [], \"data\": { \"text-align\": \"align-center\" } }, { \"key\": \"edje6\", \"text\": \"\", \"type\": \"unstyled\", \"depth\": 0, \"inlineStyleRanges\": [], \"entityRanges\": [], \"data\": { \"text-align\": \"align-center\" } }, { \"key\": \"57n42\", \"text\": \"Thank you for shopping with us\", \"type\": \"unstyled\", \"depth\": 0, \"inlineStyleRanges\": [], \"entityRanges\": [], \"data\": { \"text-align\": \"align-center\" } }, { \"key\": \"7u0ct\", \"text\": \"\", \"type\": \"unstyled\", \"depth\": 0, \"inlineStyleRanges\": [], \"entityRanges\": [], \"data\": { \"text-align\": \"align-center\" } }, { \"key\": \"ckt81\", \"text\": \"\", \"type\": \"unstyled\", \"depth\": 0, \"inlineStyleRanges\": [], \"entityRanges\": [], \"data\": { \"text-align\": \"align-center\" } }], \"entityMap\": { \"0\": { \"type\": \"mention\", \"mutability\": \"SEGMENTED\", \"data\": { \"mention\": { \"name\": \"Name\", \"attr\": \"name\", \"type\": \"string\" } } } } }),\r\n \"subject\": \"Thank you for shopping with us\",\r\n \"htmlType\": \"\"\r\n },\r\n triggeredMessages : 890\r\n },\r\n {\r\n \"organizationId\": \"1234\",\r\n \"regionId\": \"3332\",\r\n \"name\": 'Earn Points for Bill Value',\r\n \"transports\": [\r\n TransportTypes.SMS, TransportTypes.EMAIL\r\n ],\r\n \"isVisible\": 0,\r\n \"type\": \"EARN_POINTS_BILL_NOTIFICATION\",\r\n \"status\": NotificationStatus.DISABLED,\r\n \"eventId\": \"2\",\r\n \"sms\": {\r\n \"from\": \"Supuni\",\r\n \"body\": \"Hey {{name}},\\nYou have redeemed {{points}} points against your purchase worth {{bill}} on {{date}} at {{time}} through our Dilmah Mobile App.\\nYour current total redemption point balance is {{balance_points}}\"\r\n },\r\n \"push\": {\r\n \"from\": \"\",\r\n \"body\": \"\"\r\n },\r\n \"email\": {\r\n \"from\": \"Supuni\",\r\n \"body\": \"Hey {{name}},\\nYou have redeemed {{points}} points against your purchase worth {{bill}} on {{date}} at {{time}} through our Dilmah Mobile App.\\nYour current total redemption point balance is {{balance_points}}\",\r\n \"editorBody\": JSON.stringify({\"blocks\":[{\"key\":\"98v37\",\"text\":\"Hello {{name}}\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{\"text-align\":\"align-center\"}},{\"key\":\"6vhkd\",\"text\":\"\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{\"text-align\":\"align-center\"}},{\"key\":\"4akoj\",\"text\":\"Here is your loyalty point redemption report as at {{date}}.\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{\"text-align\":\"align-center\"}},{\"key\":\"cl0r7\",\"text\":\"\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{\"text-align\":\"align-center\"}},{\"key\":\"3n0i9\",\"text\":\"The total number of points redeemed - {{points}} \",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{\"text-align\":\"align-center\"}},{\"key\":\"a2ei0\",\"text\":\"The total redemption points balance -{{balance_points}}\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{\"text-align\":\"align-center\"}},{\"key\":\"46pof\",\"text\":\"\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{\"text-align\":\"align-center\"}}],\"entityMap\":{}}),\r\n \"subject\": \"Loyalty Points Update\",\r\n \"htmlType\": \"\"\r\n },\r\n triggeredMessages : 890\r\n },\r\n]\r\n\r\n\r\n// const NotificationTemplates = [\r\n\r\n// {\r\n// \"email\": {\r\n// \"editorBody\": JSON.stringify({\"blocks\":[{\"key\":\"98v37\",\"text\":\"Hello {{name}}\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{\"text-align\":\"align-center\"}},{\"key\":\"6vhkd\",\"text\":\"\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{\"text-align\":\"align-center\"}},{\"key\":\"4akoj\",\"text\":\"Here is your loyalty point redemption report as at {{date}}.\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{\"text-align\":\"align-center\"}},{\"key\":\"cl0r7\",\"text\":\"\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{\"text-align\":\"align-center\"}},{\"key\":\"3n0i9\",\"text\":\"The total number of points redeemed - {{points}} \",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{\"text-align\":\"align-center\"}},{\"key\":\"a2ei0\",\"text\":\"The total redemption points balance -{{balance_points}}\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{\"text-align\":\"align-center\"}},{\"key\":\"46pof\",\"text\":\"\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{\"text-align\":\"align-center\"}}],\"entityMap\":{}}),\r\n// \"subject\": \" Loyalty Points Update\"\r\n// },\r\n// \"sms\": {\r\n// \"body\": \"Hey {{name}},\\nYou have redeemed {{points}} points against your purchase worth {{bill}} on {{date}} at {{time}} through our Dilmah Mobile App.\\nYour current total redemption point balance is {{balance_points}}\"\r\n// },\r\n// \"templateId\": activityTypes.REDEEM_POINTS.templateId,\r\n// \"name\": activityTypes.REDEEM_POINTS.name,\r\n// \"transports\": [TransportTypes.SMS, TransportTypes.EMAIL],\r\n// \"status\": NotificationStatus.DISABLED\r\n// },\r\n// {\r\n// \"email\": {\r\n// \"editorBody\": \"{\\\"blocks\\\":[{\\\"key\\\":\\\"98v37\\\",\\\"text\\\":\\\"\\\\n\\\",\\\"type\\\":\\\"unstyled\\\",\\\"depth\\\":0,\\\"inlineStyleRanges\\\":[],\\\"entityRanges\\\":[],\\\"data\\\":{}},{\\\"key\\\":\\\"9gor\\\",\\\"text\\\":\\\"3rd International Conference on Climate Change\\\",\\\"type\\\":\\\"header-one\\\",\\\"depth\\\":0,\\\"inlineStyleRanges\\\":[],\\\"entityRanges\\\":[],\\\"data\\\":{\\\"text-align\\\":\\\"align-center\\\"}},{\\\"key\\\":\\\"3o924\\\",\\\"text\\\":\\\"(ICCC 2019)\\\",\\\"type\\\":\\\"header-one\\\",\\\"depth\\\":0,\\\"inlineStyleRanges\\\":[],\\\"entityRanges\\\":[],\\\"data\\\":{\\\"text-align\\\":\\\"align-center\\\"}},{\\\"key\\\":\\\"etutf\\\",\\\"text\\\":\\\"“Adaptation and Mitigation in practice : Local and Global innovations”\\\\n21st – 22nd February 2019 | Kuala Lumpur, Malaysia.\\\\nclimatechangeconferences.com\\\\n\\\\n\\\",\\\"type\\\":\\\"unstyled\\\",\\\"depth\\\":0,\\\"inlineStyleRanges\\\":[{\\\"offset\\\":83,\\\"length\\\":8,\\\"style\\\":\\\"ITALIC\\\"},{\\\"offset\\\":99,\\\"length\\\":22,\\\"style\\\":\\\"ITALIC\\\"},{\\\"offset\\\":123,\\\"length\\\":28,\\\"style\\\":\\\"BOLD\\\"}],\\\"entityRanges\\\":[{\\\"offset\\\":123,\\\"length\\\":28,\\\"key\\\":0}],\\\"data\\\":{\\\"text-align\\\":\\\"align-center\\\"}},{\\\"key\\\":\\\"3oek3\\\",\\\"text\\\":\\\"Grab 10% Exclusive Discounts on All Group Registrations\\\",\\\"type\\\":\\\"header-two\\\",\\\"depth\\\":0,\\\"inlineStyleRanges\\\":[{\\\"offset\\\":0,\\\"length\\\":55,\\\"style\\\":\\\"BOLD\\\"},{\\\"offset\\\":0,\\\"length\\\":55,\\\"style\\\":\\\"UNDERLINE\\\"}],\\\"entityRanges\\\":[],\\\"data\\\":{}},{\\\"key\\\":\\\"elus0\\\",\\\"text\\\":\\\"KEYNOTE SPEAKERS\\\\n\\\",\\\"type\\\":\\\"unstyled\\\",\\\"depth\\\":0,\\\"inlineStyleRanges\\\":[{\\\"offset\\\":0,\\\"length\\\":16,\\\"style\\\":\\\"BOLD\\\"}],\\\"entityRanges\\\":[],\\\"data\\\":{}},{\\\"key\\\":\\\"2fbhq\\\",\\\"text\\\":\\\"Asst. Prof. Masayuki Kondo - Center for Environmental Remote Sensing (CEReS) | Chiba University | Japan.\\\",\\\"type\\\":\\\"unordered-list-item\\\",\\\"depth\\\":0,\\\"inlineStyleRanges\\\":[{\\\"offset\\\":0,\\\"length\\\":29,\\\"style\\\":\\\"BOLD\\\"}],\\\"entityRanges\\\":[],\\\"data\\\":{}},{\\\"key\\\":\\\"2tj3a\\\",\\\"text\\\":\\\"Prof. Dan Binkley - Emeritus Professor | Department of Ecosystem Science and Sustainability | Colorado State University | USA.\\\",\\\"type\\\":\\\"unordered-list-item\\\",\\\"depth\\\":0,\\\"inlineStyleRanges\\\":[{\\\"offset\\\":0,\\\"length\\\":20,\\\"style\\\":\\\"BOLD\\\"}],\\\"entityRanges\\\":[],\\\"data\\\":{}},{\\\"key\\\":\\\"ch36p\\\",\\\"text\\\":\\\"Dr. Erandathie (Erandi) Lokupitiya - Senior Lecturer | Department of Zoology and Environment Sciences | University of Colombo | Sri Lanka.\\\",\\\"type\\\":\\\"unordered-list-item\\\",\\\"depth\\\":0,\\\"inlineStyleRanges\\\":[{\\\"offset\\\":0,\\\"length\\\":37,\\\"style\\\":\\\"BOLD\\\"}],\\\"entityRanges\\\":[],\\\"data\\\":{}},{\\\"key\\\":\\\"fplno\\\",\\\"text\\\":\\\"Researchers are invited to send abstracts for all modes of Oral, Poster and Virtual Presentations.\\\\n\\\",\\\"type\\\":\\\"unstyled\\\",\\\"depth\\\":0,\\\"inlineStyleRanges\\\":[{\\\"offset\\\":59,\\\"length\\\":4,\\\"style\\\":\\\"BOLD\\\"},{\\\"offset\\\":65,\\\"length\\\":6,\\\"style\\\":\\\"BOLD\\\"},{\\\"offset\\\":76,\\\"length\\\":7,\\\"style\\\":\\\"BOLD\\\"}],\\\"entityRanges\\\":[],\\\"data\\\":{}},{\\\"key\\\":\\\"6u0ef\\\",\\\"text\\\":\\\"Submit Your Abstract\\\",\\\"type\\\":\\\"header-two\\\",\\\"depth\\\":0,\\\"inlineStyleRanges\\\":[],\\\"entityRanges\\\":[],\\\"data\\\":{}},{\\\"key\\\":\\\"d7ek9\\\",\\\"text\\\":\\\"abstract@climatechangeconferences.com\\\",\\\"type\\\":\\\"header-two\\\",\\\"depth\\\":0,\\\"inlineStyleRanges\\\":[{\\\"offset\\\":0,\\\"length\\\":37,\\\"style\\\":\\\"BOLD\\\"}],\\\"entityRanges\\\":[{\\\"offset\\\":0,\\\"length\\\":37,\\\"key\\\":1}],\\\"data\\\":{}},{\\\"key\\\":\\\"vmoj\\\",\\\"text\\\":\\\"FREE PUBLICATION SERVICES \\\\nBook of Abstracts: ISBN 978-955-3605-25-2\\\\nProceedings: DOI Number (DOI prefix: 10.17501) | ISSN (2513-258X)\\\\nSelected papers - Indexing in: Thomson Reuters, SCOPUS & Google Scholar\\\\n\\\\nSupporting Journals:\\\\n\\\",\\\"type\\\":\\\"unstyled\\\",\\\"depth\\\":0,\\\"inlineStyleRanges\\\":[{\\\"offset\\\":0,\\\"length\\\":26,\\\"style\\\":\\\"BOLD\\\"},{\\\"offset\\\":27,\\\"length\\\":18,\\\"style\\\":\\\"BOLD\\\"},{\\\"offset\\\":69,\\\"length\\\":12,\\\"style\\\":\\\"BOLD\\\"},{\\\"offset\\\":135,\\\"length\\\":30,\\\"style\\\":\\\"BOLD\\\"},{\\\"offset\\\":208,\\\"length\\\":20,\\\"style\\\":\\\"BOLD\\\"},{\\\"offset\\\":0,\\\"length\\\":26,\\\"style\\\":\\\"UNDERLINE\\\"}],\\\"entityRanges\\\":[],\\\"data\\\":{}},{\\\"key\\\":\\\"4h4p5\\\",\\\"text\\\":\\\"Disasters - Online ISSN 1467-7717 | Editors in Chief Sara Pantuliano, John Twigg, Helen Young and Matthew Foley | Publisher Wiley Online Library\\\",\\\"type\\\":\\\"unordered-list-item\\\",\\\"depth\\\":0,\\\"inlineStyleRanges\\\":[{\\\"offset\\\":0,\\\"length\\\":10,\\\"style\\\":\\\"BOLD\\\"}],\\\"entityRanges\\\":[],\\\"data\\\":{}},{\\\"key\\\":\\\"csqoc\\\",\\\"text\\\":\\\"Climate Change Economics (CCE) - Print ISSN 2010-0078 | Online ISSN 2010-0086 | Editor in Chief Prof Robert Mendelsohn | Publisher World Scientific\\\",\\\"type\\\":\\\"unordered-list-item\\\",\\\"depth\\\":0,\\\"inlineStyleRanges\\\":[{\\\"offset\\\":0,\\\"length\\\":33,\\\"style\\\":\\\"BOLD\\\"}],\\\"entityRanges\\\":[],\\\"data\\\":{}},{\\\"key\\\":\\\"4754c\\\",\\\"text\\\":\\\"Academic Partner\\\\n\\\",\\\"type\\\":\\\"unstyled\\\",\\\"depth\\\":0,\\\"inlineStyleRanges\\\":[{\\\"offset\\\":0,\\\"length\\\":16,\\\"style\\\":\\\"BOLD\\\"}],\\\"entityRanges\\\":[],\\\"data\\\":{}},{\\\"key\\\":\\\"7ruul\\\",\\\"text\\\":\\\"Hacettepe University | Faculty of Engineering | Turkey\\\",\\\"type\\\":\\\"unordered-list-item\\\",\\\"depth\\\":0,\\\"inlineStyleRanges\\\":[],\\\"entityRanges\\\":[],\\\"data\\\":{}},{\\\"key\\\":\\\"54le1\\\",\\\"text\\\":\\\"Strategic Partners\\\\n\\\",\\\"type\\\":\\\"unstyled\\\",\\\"depth\\\":0,\\\"inlineStyleRanges\\\":[{\\\"offset\\\":0,\\\"length\\\":18,\\\"style\\\":\\\"BOLD\\\"}],\\\"entityRanges\\\":[],\\\"data\\\":{}},{\\\"key\\\":\\\"evuqc\\\",\\\"text\\\":\\\"Malaysian Nature Society | Malaysia\\\",\\\"type\\\":\\\"unordered-list-item\\\",\\\"depth\\\":0,\\\"inlineStyleRanges\\\":[],\\\"entityRanges\\\":[],\\\"data\\\":{}},{\\\"key\\\":\\\"26vqn\\\",\\\"text\\\":\\\"Environmental Foundation (Guarantee) Limited | Sri Lanaka\\\",\\\"type\\\":\\\"unordered-list-item\\\",\\\"depth\\\":0,\\\"inlineStyleRanges\\\":[],\\\"entityRanges\\\":[],\\\"data\\\":{}},{\\\"key\\\":\\\"8pe56\\\",\\\"text\\\":\\\"Thuru | Sri Lanaka\\\",\\\"type\\\":\\\"unordered-list-item\\\",\\\"depth\\\":0,\\\"inlineStyleRanges\\\":[],\\\"entityRanges\\\":[],\\\"data\\\":{}},{\\\"key\\\":\\\"6eis8\\\",\\\"text\\\":\\\"Colombo Plan | Sri Lanaka\\\",\\\"type\\\":\\\"unordered-list-item\\\",\\\"depth\\\":0,\\\"inlineStyleRanges\\\":[],\\\"entityRanges\\\":[],\\\"data\\\":{}},{\\\"key\\\":\\\"ailve\\\",\\\"text\\\":\\\"Please visit the website for more information. We look forward for your responses and kindly request from you to disseminate this mail among your colleagues & Networks.\\\\nThank you\\\\n\\\\nContact us\\\\nICCC 2019\\\\n#531/18, Kotte Road, Pitakotte, Sri Lanka.\\\\nTel: +94 113 312 832 | Fax: +94 112 835 571\\\\nEmail: info@climatechangeconferences.com\\\\n\\\\nLooking to unsubscribe?\\\",\\\"type\\\":\\\"unstyled\\\",\\\"depth\\\":0,\\\"inlineStyleRanges\\\":[{\\\"offset\\\":180,\\\"length\\\":10,\\\"style\\\":\\\"BOLD\\\"}],\\\"entityRanges\\\":[{\\\"offset\\\":295,\\\"length\\\":33,\\\"key\\\":2},{\\\"offset\\\":341,\\\"length\\\":11,\\\"key\\\":3}],\\\"data\\\":{}}],\\\"entityMap\\\":{\\\"0\\\":{\\\"type\\\":\\\"LINK\\\",\\\"mutability\\\":\\\"MUTABLE\\\",\\\"data\\\":{\\\"href\\\":\\\"http://climatechangeconferences.com\\\",\\\"url\\\":\\\"http://climatechangeconferences.com/\\\"}},\\\"1\\\":{\\\"type\\\":\\\"LINK\\\",\\\"mutability\\\":\\\"MUTABLE\\\",\\\"data\\\":{\\\"href\\\":\\\"mailto:abstract@climatechangeconferences.com\\\",\\\"url\\\":\\\"mailto:abstract@climatechangeconferences.com\\\"}},\\\"2\\\":{\\\"type\\\":\\\"LINK\\\",\\\"mutability\\\":\\\"MUTABLE\\\",\\\"data\\\":{\\\"href\\\":\\\"mailto:info@climatechangeconferences.com\\\",\\\"url\\\":\\\"mailto:info@climatechangeconferences.com\\\"}},\\\"3\\\":{\\\"type\\\":\\\"LINK\\\",\\\"mutability\\\":\\\"MUTABLE\\\",\\\"data\\\":{\\\"href\\\":\\\"https://beta.getshoutout.com/unsubscribe/{{_id}}{{id}}/{{owner_id}}/{{email}}\\\",\\\"target\\\":\\\"_blank\\\",\\\"url\\\":\\\"https://beta.getshoutout.com/unsubscribe/%7B%7B_id%7D%7D%7B%7Bid%7D%7D/%7B%7Bowner_id%7D%7D/%7B%7Bemail%7D%7D\\\"}}}}\",\r\n// \"subject\": \"Redeem reward\"\r\n// },\r\n// \"sms\": {\r\n// \"body\": \"Hi {{name}}, You have redeemed {{points}}\"\r\n// },\r\n// \"templateId\": activityTypes.REDEEM_REWARD.templateId,\r\n// \"name\": activityTypes.REDEEM_REWARD.name,\r\n// \"transports\": [TransportTypes.SMS, TransportTypes.EMAIL],\r\n// \"status\": NotificationStatus.DISABLED\r\n// },\r\n// {\r\n// \"email\": {\r\n// \"editorBody\": JSON.stringify({ \"blocks\": [{ \"key\": \"98v37\", \"text\": \"Welcome to our loyalty club\", \"type\": \"unstyled\", \"depth\": 0, \"inlineStyleRanges\": [], \"entityRanges\": [], \"data\": { \"text-align\": \"align-center\" } }, { \"key\": \"9r8el\", \"text\": \"\", \"type\": \"unstyled\", \"depth\": 0, \"inlineStyleRanges\": [], \"entityRanges\": [], \"data\": { \"text-align\": \"align-center\" } }, { \"key\": \"ajfm5\", \"text\": \"Thank You for downloading our App\", \"type\": \"unstyled\", \"depth\": 0, \"inlineStyleRanges\": [], \"entityRanges\": [], \"data\": { \"text-align\": \"align-center\" } }, { \"key\": \"a0u84\", \"text\": \"Now that you are a member of our club you are among the first to hear about our promotions ,special offers and all the latest news.\", \"type\": \"unstyled\", \"depth\": 0, \"inlineStyleRanges\": [], \"entityRanges\": [], \"data\": { \"text-align\": \"align-center\" } }, { \"key\": \"6fl2r\", \"text\": \"\", \"type\": \"unstyled\", \"depth\": 0, \"inlineStyleRanges\": [], \"entityRanges\": [], \"data\": { \"text-align\": \"align-center\" } }, { \"key\": \"86sqc\", \"text\": \"You have earned {{bonus_points}} for downloading our app.\", \"type\": \"unstyled\", \"depth\": 0, \"inlineStyleRanges\": [], \"entityRanges\": [], \"data\": { \"text-align\": \"align-center\" } }, { \"key\": \"dfons\", \"text\": \"\", \"type\": \"unstyled\", \"depth\": 0, \"inlineStyleRanges\": [], \"entityRanges\": [], \"data\": { \"text-align\": \"align-center\" } }, { \"key\": \"1gmg8\", \"text\": \"Points \", \"type\": \"unstyled\", \"depth\": 0, \"inlineStyleRanges\": [], \"entityRanges\": [{ \"offset\": 0, \"length\": 6, \"key\": 0 }], \"data\": { \"text-align\": \"align-center\" } }, { \"key\": \"870kg\", \"text\": \"Your Total Points \", \"type\": \"unstyled\", \"depth\": 0, \"inlineStyleRanges\": [], \"entityRanges\": [], \"data\": { \"text-align\": \"align-center\" } }, { \"key\": \"55h5\", \"text\": \"\", \"type\": \"unstyled\", \"depth\": 0, \"inlineStyleRanges\": [], \"entityRanges\": [], \"data\": { \"text-align\": \"align-center\" } }, { \"key\": \"eb62a\", \"text\": \"Shop more to earn more points and claim more rewards \", \"type\": \"unstyled\", \"depth\": 0, \"inlineStyleRanges\": [], \"entityRanges\": [], \"data\": { \"text-align\": \"align-center\" } }, { \"key\": \"5v4cb\", \"text\": \"\", \"type\": \"unstyled\", \"depth\": 0, \"inlineStyleRanges\": [], \"entityRanges\": [], \"data\": { \"text-align\": \"align-center\" } }, { \"key\": \"5frlf\", \"text\": \"Happy Shopping \", \"type\": \"unstyled\", \"depth\": 0, \"inlineStyleRanges\": [], \"entityRanges\": [], \"data\": { \"text-align\": \"align-center\" } }, { \"key\": \"89khh\", \"text\": \"\", \"type\": \"unstyled\", \"depth\": 0, \"inlineStyleRanges\": [], \"entityRanges\": [], \"data\": { \"text-align\": \"align-center\" } }, { \"key\": \"f89cm\", \"text\": \"Let's Shop \", \"type\": \"unstyled\", \"depth\": 0, \"inlineStyleRanges\": [], \"entityRanges\": [], \"data\": { \"text-align\": \"align-center\" } }, { \"key\": \"61u1s\", \"text\": \"\", \"type\": \"unstyled\", \"depth\": 0, \"inlineStyleRanges\": [], \"entityRanges\": [], \"data\": { \"text-align\": \"align-center\" } }], \"entityMap\": { \"0\": { \"type\": \"mention\", \"mutability\": \"SEGMENTED\", \"data\": { \"mention\": { \"name\": \"Points\", \"attr\": \"points\", \"type\": \"number\" } } } } }),\r\n// \"subject\": \"You are officially in\"\r\n// },\r\n// \"sms\": {\r\n// \"body\": \"Hey {{name}}\\nThank You for downloading the Dilmah Loyalty App. You have earned {{bonus_points}} loyalty points for downloading our app. Shop more to earn more points and claim more rewards.\"\r\n// },\r\n// \"templateId\": activityTypes.REGISTER_LOYALTY.templateId,\r\n// \"name\": activityTypes.REGISTER_LOYALTY.name,\r\n// \"transports\": [TransportTypes.SMS, TransportTypes.EMAIL],\r\n// \"status\": NotificationStatus.DISABLED\r\n// }\r\n// ];\r\n\r\nexport default NotificationTemplates;","const FraudRulesStatusMap = {\r\n ENABLED: {\r\n status:\"ENABLED\",\r\n text: \"Enable\",\r\n color: \"success\",\r\n textColor:\"text-success\",\r\n buttonColor:\"outline-success\"\r\n },\r\n DISABLED: {\r\n status:\"DISABLED\",\r\n text: \"Disable\",\r\n color: \"warning\",\r\n textColor:\"text-warning\",\r\n buttonColor:\"outline-warning\"\r\n }\r\n}\r\n\r\nexport default FraudRulesStatusMap;","const JobTypesStatus = {\r\n ENABLED: \"ENABLED\",\r\n DISABLED: \"DISABLED\",\r\n};\r\n\r\nconst JobStatus = {\r\n COMPLETED: \"COMPLETED\",\r\n ENABLED: \"ENABLED\",\r\n DISABLED: \"DISABLED\",\r\n};\r\n\r\nconst ProcessType = {\r\n IMMEDIATE: \"IMMEDIATE\",\r\n SCHEDULED: \"SCHEDULED\",\r\n};\r\n\r\nconst ScheduleType = {\r\n ONCE: \"ONCE\",\r\n RECURRING: \"RECURRING\",\r\n};\r\n\r\nconst RecurrenceMethod = {\r\n DAILY: \"DAILY\",\r\n MONTHLY: \"MONTHLY\",\r\n};\r\n\r\nconst RecurrenceType = {\r\n DAY_OF_MONTH: \"DAY_OF_MONTH\",\r\n END_OF_MONTH: \"END_OF_MONTH\",\r\n};\r\n\r\nconst NotificationsStatus = {\r\n ENABLED: \"ENABLED\",\r\n DISABLED: \"DISABLED\",\r\n};\r\n\r\nconst JobStatusTextColorCodes = {\r\n [JobStatus.DISABLED]: \"text-warning\",\r\n [JobStatus.ENABLED]: \"text-success\",\r\n};\r\n\r\nexport {\r\n JobTypesStatus,\r\n JobStatus,\r\n ProcessType,\r\n ScheduleType,\r\n RecurrenceMethod,\r\n RecurrenceType,\r\n NotificationsStatus,\r\n JobStatusTextColorCodes,\r\n};\r\n","//import { array } from \"prop-types\";\r\n\r\nconst getHeaders = async (isAuth, userPermissions = null) => {\r\n const headers = { \"Content-Type\": \"application/json\" };\r\n if (isAuth) {\r\n headers[\"x-auth\"] = true;\r\n }\r\n if (userPermissions) {\r\n headers[\"x-auth-scope\"] = userPermissions;\r\n }\r\n return headers;\r\n};\r\nconst handleErrors = async (response) => {\r\n if (!response.ok) {\r\n let errorResponse;\r\n try {\r\n errorResponse = await response.json();\r\n } catch (e) {\r\n throw Error(response.statusText);\r\n }\r\n throw Error(errorResponse?.error);\r\n }\r\n return response;\r\n};\r\n\r\nconst parseJson = (response) => {\r\n try {\r\n return response.json();\r\n } catch (e) {\r\n console.error(\"Cannot parse:\", response);\r\n throw Error(\"Can not parse\");\r\n }\r\n};\r\n\r\nconst parseText = (response) => {\r\n try {\r\n return response.text();\r\n } catch (e) {\r\n console.error(\"Cannot parse:\", response);\r\n throw Error(\"Can not parse\");\r\n }\r\n};\r\nconst fetchGet = async (url, isAuth = true, userPermissions = null) => {\r\n return fetch(url, { headers: await getHeaders(isAuth, userPermissions) })\r\n .then(handleErrors)\r\n .then(parseJson);\r\n};\r\n\r\nconst fetchGetWithTotal = async (\r\n url,\r\n isAuth = true,\r\n userPermissions = null\r\n) => {\r\n return fetch(url, { headers: await getHeaders(isAuth, userPermissions) })\r\n .then(handleErrors)\r\n .then(async (response) => {\r\n const jsonBody = await parseJson(response);\r\n const result = { data: jsonBody };\r\n if (response.headers) {\r\n const totalCount = response.headers.get(\"x-total\"),\r\n skip = response.headers.get(\"x-skip\"),\r\n limit = response.headers.get(\"x-limit\");\r\n\r\n result[\"totalCount\"] = totalCount ? Number(totalCount) : 0;\r\n result[\"skip\"] = skip ? Number(skip) + Number(limit) : 0;\r\n }\r\n\r\n return result;\r\n });\r\n};\r\n\r\nconst fetchPostWithTotal = async (\r\n url,\r\n body,\r\n isAuth = true,\r\n userPermissions = null\r\n) => {\r\n return fetch(url, {\r\n headers: await getHeaders(isAuth, userPermissions),\r\n method: \"POST\",\r\n body: JSON.stringify(body),\r\n })\r\n .then(handleErrors)\r\n .then(async (response) => {\r\n const jsonBody = await parseJson(response);\r\n const result = { data: jsonBody };\r\n if (response.headers) {\r\n const totalCount = response.headers.get(\"x-total\"),\r\n skip = response.headers.get(\"x-skip\"),\r\n limit = response.headers.get(\"x-limit\");\r\n\r\n result[\"totalCount\"] = totalCount ? Number(totalCount) : 0;\r\n result[\"skip\"] = skip ? Number(skip) + Number(limit) : 0;\r\n }\r\n\r\n return result;\r\n });\r\n};\r\nconst fetchPost = async (url, body, isAuth = true, userPermissions = null) => {\r\n return fetch(url, {\r\n headers: await getHeaders(isAuth, userPermissions),\r\n method: \"POST\",\r\n body: JSON.stringify(body),\r\n })\r\n .then(handleErrors)\r\n .then(parseJson);\r\n};\r\n\r\nconst fetchGetText = async (url, isAuth = true, userPermissions = null) => {\r\n const headers = await getHeaders(isAuth, userPermissions);\r\n headers[\"Content-Type\"] = \"text/plain\";\r\n return fetch(url, { headers: await getHeaders(isAuth) })\r\n .then(handleErrors)\r\n .then(parseText);\r\n};\r\n\r\nconst fetchPut = async (url, body, isAuth = true, userPermissions = null) => {\r\n return fetch(url, {\r\n method: \"PUT\",\r\n headers: await getHeaders(isAuth, userPermissions),\r\n body: JSON.stringify(body),\r\n })\r\n .then(handleErrors)\r\n .then(parseJson);\r\n};\r\n\r\nconst fetchDelete = async (\r\n url,\r\n body,\r\n track,\r\n isAuth = true,\r\n userPermissions = null\r\n) => {\r\n return fetch(url, {\r\n method: \"DELETE\",\r\n // headers: {\r\n // 'Content-Type': 'application/json'\r\n // },\r\n headers: await getHeaders(isAuth, userPermissions),\r\n isProtected: true,\r\n showLoader: true,\r\n body: body ? JSON.stringify(body) : \"\",\r\n track,\r\n }).then(handleErrors);\r\n};\r\n\r\nconst jsonToQueryParam = (json) => {\r\n let result = \"\";\r\n if (json) {\r\n // Object.entries(json).map(([key, value]) => {\r\n\r\n // if (value !== null || value !== undefined || value === \"\") {\r\n // if (Array.isArray(value)) {\r\n\r\n // value.forEach(element => {\r\n // result += `${result ? '&' : ''}${key}[]=${element}`;\r\n // });\r\n // } else {\r\n // result += `${result ? '&' : ''}${key}=${value}`;\r\n // }\r\n\r\n // }\r\n // })\r\n\r\n Object.entries(json).forEach(([key, value]) => {\r\n if (value !== \"\" && value !== null && value !== undefined) {\r\n if (Array.isArray(value)) {\r\n value.forEach((element) => {\r\n result += `${result ? \"&\" : \"\"}${key}[]=${element}`;\r\n });\r\n } else {\r\n result += `${result ? \"&\" : \"\"}${key}=${value}`;\r\n }\r\n }\r\n });\r\n }\r\n\r\n return result;\r\n};\r\n\r\nconst preProcessBodyData = (json) => {\r\n return Object.entries(json).reduce((result, [key, value]) => {\r\n if (typeof value === \"object\" && !Array.isArray(value)) {\r\n result[key] = preProcessBodyData(value);\r\n } else if (value||(key&&value===false)) {\r\n result[key] = value;\r\n }\r\n return result;\r\n }, {});\r\n};\r\n\r\nconst fetchPostText = (\r\n url,\r\n body,\r\n showLoader = true,\r\n userPermissions = null\r\n) => {\r\n return fetch(url, {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"x-auth-scope\": userPermissions,\r\n },\r\n isProtected: true,\r\n showLoader,\r\n body: JSON.stringify(body),\r\n })\r\n .then(handleErrors)\r\n .then(parseText);\r\n};\r\n\r\nconst fetchPostMultipart = async (\r\n url,\r\n body,\r\n isAuth = true,\r\n userPermissions = null\r\n) => {\r\n const headers = await getHeaders(isAuth, userPermissions);\r\n delete headers[\"Content-Type\"]; // = 'application/json';\r\n return fetch(url, {\r\n method: \"POST\",\r\n headers: headers,\r\n body: body,\r\n })\r\n .then(handleErrors)\r\n .then(parseJson);\r\n};\r\n\r\nexport {\r\n fetchGet,\r\n fetchPost,\r\n fetchGetText,\r\n fetchGetWithTotal,\r\n fetchPut,\r\n fetchDelete,\r\n handleErrors,\r\n parseJson,\r\n jsonToQueryParam,\r\n fetchPostText,\r\n fetchPostWithTotal,\r\n fetchPostMultipart,\r\n preProcessBodyData,\r\n};\r\n","import {\r\n fetchGet,\r\n fetchPut,\r\n fetchPost,\r\n fetchDelete,\r\n jsonToQueryParam,\r\n preProcessBodyData,\r\n} from \"./CommonServiceUtils\";\r\nimport Constants from \"../Constants\";\r\nimport { AccessPermissionModules, AccessPermissionModuleNames } from \"Data\";\r\nimport { getPermissionPath } from \"Utils\";\r\n\r\nconst BASE_URL = `${Constants.BASE_URL}loyaltyservice/`;\r\n\r\nconst createPoints = (pointObj) => {\r\n return fetchPost(\r\n BASE_URL + \"pointrules\",\r\n pointObj,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.POINT_RULES,\r\n AccessPermissionModules[AccessPermissionModuleNames.POINT_RULES]\r\n .actions.CreatePointRule\r\n )\r\n );\r\n};\r\n\r\nconst getPoints = (queryObj) => {\r\n // Query params - limit, skip, merchantId, regionId\r\n return fetchGet(\r\n `${BASE_URL}pointrules?${jsonToQueryParam(queryObj)}`,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.POINT_RULES,\r\n AccessPermissionModules[AccessPermissionModuleNames.POINT_RULES]\r\n .actions.ListPointRules\r\n )\r\n );\r\n};\r\n\r\nconst editPoints = (id, payload) => {\r\n return fetchPut(\r\n `${BASE_URL}pointrules/${id}`,\r\n payload,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.POINT_RULES,\r\n AccessPermissionModules[AccessPermissionModuleNames.POINT_RULES]\r\n .actions.UpdatePointRule\r\n )\r\n );\r\n};\r\n\r\nconst deletePoints = (id) => {\r\n return fetchDelete(\r\n BASE_URL + \"pointrules/\" + id,\r\n null,\r\n null,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.POINT_RULES,\r\n AccessPermissionModules[AccessPermissionModuleNames.POINT_RULES]\r\n .actions.DeletePointRule\r\n )\r\n );\r\n};\r\n\r\nconst adjustPoints = (payload) => {\r\n return fetchPost(\r\n BASE_URL + \"points/adjust\",\r\n payload,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.POINT,\r\n AccessPermissionModules[AccessPermissionModuleNames.POINT].actions\r\n .AdjustPoints\r\n )\r\n );\r\n};\r\n\r\nconst redeemPoints = (payload) => {\r\n return fetchPost(\r\n BASE_URL + \"points/redeem\",\r\n payload,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.POINT,\r\n AccessPermissionModules[AccessPermissionModuleNames.POINT].actions\r\n .RedeemPoints\r\n )\r\n );\r\n};\r\n\r\nconst redeemPointsWithOtpRequest = (payload) => {\r\n return fetchPost(\r\n BASE_URL + \"points/redeemwithotprequest\",\r\n payload,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.POINT,\r\n AccessPermissionModules[AccessPermissionModuleNames.POINT].actions\r\n .RedeemPoints\r\n )\r\n );\r\n};\r\n\r\nconst redeemPointsWithOtp = (payload) => {\r\n return fetchPost(\r\n BASE_URL + \"points/redeemwithotp\",\r\n payload,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.POINT,\r\n AccessPermissionModules[AccessPermissionModuleNames.POINT].actions\r\n .RedeemPoints\r\n )\r\n );\r\n};\r\n\r\nconst collectPoints = (payload) => {\r\n return fetchPost(\r\n `${BASE_URL}points/collect/points`,\r\n preProcessBodyData(payload),\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.POINT,\r\n AccessPermissionModules[AccessPermissionModuleNames.POINT].actions\r\n .CollectPointsAmount\r\n )\r\n );\r\n};\r\n\r\nconst collectPointsManualBill = (payload) => {\r\n return fetchPost(\r\n `${BASE_URL}points/collect/bill`,\r\n preProcessBodyData(payload),\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.POINT,\r\n AccessPermissionModules[AccessPermissionModuleNames.POINT].actions\r\n .CollectPointsBill\r\n )\r\n );\r\n};\r\n\r\nconst transferPoints = (payload) => {\r\n return fetchPost(\r\n BASE_URL + \"points/transfer\",\r\n preProcessBodyData(payload),\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.POINT,\r\n AccessPermissionModules[AccessPermissionModuleNames.POINT].actions\r\n .TransferPoints\r\n )\r\n );\r\n};\r\n\r\nconst donatePoints = (payload) => {\r\n return fetchPost(\r\n BASE_URL + \"points/donate\",\r\n preProcessBodyData(payload),\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.POINT,\r\n AccessPermissionModules[AccessPermissionModuleNames.POINT].actions\r\n .AdjustPoints\r\n )\r\n );\r\n};\r\n\r\nexport {\r\n createPoints,\r\n getPoints,\r\n editPoints,\r\n deletePoints,\r\n adjustPoints,\r\n collectPoints,\r\n collectPointsManualBill,\r\n redeemPoints,\r\n redeemPointsWithOtpRequest,\r\n redeemPointsWithOtp,\r\n donatePoints,\r\n transferPoints,\r\n};\r\n","import {\r\n fetchGet,\r\n fetchPut,\r\n fetchPost,\r\n fetchDelete,\r\n fetchPostMultipart,\r\n jsonToQueryParam,\r\n} from \"./CommonServiceUtils\";\r\nimport Constants from \"../Constants\";\r\nimport { AccessPermissionModules, AccessPermissionModuleNames } from \"Data\";\r\nimport { getPermissionPath } from \"Utils\";\r\n\r\nconst BASE_URL = `${Constants.BASE_URL}loyaltyservice/`;\r\n\r\n/* Rewards */\r\nconst getRewards = (queryObj) => {\r\n //Query params : limit, skip, status, type, portalVisibility, searchKey\r\n return fetchGet(\r\n `${BASE_URL}rewards?${jsonToQueryParam(queryObj)}`,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.REWARD,\r\n AccessPermissionModules[AccessPermissionModuleNames.REWARD].actions\r\n .ListRewards\r\n )\r\n );\r\n};\r\n\r\nconst getRewardById = (rewardId) => {\r\n return fetchGet(\r\n `${BASE_URL}rewards/${rewardId}`,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.REWARD,\r\n AccessPermissionModules[AccessPermissionModuleNames.REWARD].actions\r\n .GetReward\r\n )\r\n );\r\n};\r\n\r\nconst createReward = (rewardPayload) => {\r\n return fetchPost(\r\n `${BASE_URL}rewards`,\r\n rewardPayload,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.REWARD,\r\n AccessPermissionModules[AccessPermissionModuleNames.REWARD].actions\r\n .CreateReward\r\n )\r\n );\r\n};\r\n\r\nconst updateRewardById = (rewardId, payload) => {\r\n return fetchPut(\r\n `${BASE_URL}rewards/${rewardId}`,\r\n payload,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.REWARD,\r\n AccessPermissionModules[AccessPermissionModuleNames.REWARD].actions\r\n .UpdateReward\r\n )\r\n );\r\n};\r\n\r\nconst deleteReward = (rewardId) => {\r\n return fetchDelete(\r\n `${BASE_URL}rewards/${rewardId}`,\r\n null,\r\n null,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.REWARD,\r\n AccessPermissionModules[AccessPermissionModuleNames.REWARD].actions\r\n .DeleteReward\r\n )\r\n );\r\n};\r\n\r\nconst topUpReward = (topUpPayload) => {\r\n return fetchPost(\r\n `${BASE_URL}rewardtopups/manual`,\r\n topUpPayload,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.REWARD,\r\n AccessPermissionModules[AccessPermissionModuleNames.REWARD].actions\r\n .CreateRewardTopup\r\n )\r\n );\r\n};\r\n\r\nconst topUpRewardFile = (rewardId, fileData) => {\r\n const formData = new FormData();\r\n formData.append(\"file\", fileData);\r\n return fetchPostMultipart(\r\n `${BASE_URL}rewardtopups/topupfile?${jsonToQueryParam(rewardId)}`,\r\n formData,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.REWARD,\r\n AccessPermissionModules[AccessPermissionModuleNames.REWARD].actions\r\n .UploadRewardTopupFile\r\n )\r\n );\r\n};\r\n\r\nconst redeemRewards = (paylaod) => {\r\n return fetchPost(\r\n `${BASE_URL}rewardredeem`,\r\n paylaod,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.REWARD,\r\n AccessPermissionModules[AccessPermissionModuleNames.REWARD].actions\r\n .RedeemReward\r\n )\r\n );\r\n};\r\n\r\nconst getTopupLogs = (queryObj) => {\r\n //Query params :\r\n // limit,\r\n // skip,\r\n // regionId,\r\n // rewardId,\r\n // method,\r\n // status,\r\n return fetchGet(\r\n `${BASE_URL}rewardtopups?${jsonToQueryParam(queryObj)}`,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.REWARD,\r\n AccessPermissionModules[AccessPermissionModuleNames.REWARD].actions\r\n .ListRewardTopups\r\n )\r\n );\r\n};\r\n\r\nconst getRedemptionLogs = (queryObj) => {\r\n //Query params :\r\n // limit,\r\n // skip,\r\n // loyaltyId,\r\n // rewardId,\r\n // distributionJobId,\r\n // rewardSubType,\r\n // fromDate,\r\n // toDate,\r\n // searchKey - Not there in API schema\r\n return fetchGet(\r\n `${BASE_URL}redemptionlogs?${jsonToQueryParam(queryObj)}`,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.REWARD,\r\n AccessPermissionModules[AccessPermissionModuleNames.REWARD].actions\r\n .ListRewardRedemptionLogs\r\n )\r\n );\r\n};\r\n\r\nconst getRedemptionLogsById = (payload) => {\r\n return fetchGet(\r\n `${BASE_URL}redemptionlogs/${payload._id}`,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.REWARD,\r\n AccessPermissionModules[AccessPermissionModuleNames.REWARD].actions\r\n .GetRewardRedemptionLog\r\n )\r\n );\r\n};\r\n\r\nconst updateRewardRedemptionLog = (_id, payload) => {\r\n return fetchPut(\r\n `${BASE_URL}redemptionlogs/${_id}`,\r\n payload,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.REWARD,\r\n AccessPermissionModules[AccessPermissionModuleNames.REWARD].actions\r\n .UpdateLogItem\r\n )\r\n );\r\n};\r\n\r\nconst cancelReward = (_id, payload) => {\r\n return fetchPut(\r\n `${BASE_URL}redemptionlogs/cancel/${_id}`,\r\n payload,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.REWARD,\r\n AccessPermissionModules[AccessPermissionModuleNames.REWARD].actions\r\n .CancelLogItem\r\n )\r\n );\r\n};\r\n\r\nconst refundRedemptionPoints = (_id, payload) => {\r\n return fetchPut(\r\n `${BASE_URL}redemptionlogs/refund/${_id}`,\r\n payload,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.REWARD,\r\n AccessPermissionModules[AccessPermissionModuleNames.REWARD].actions\r\n .RefundLogItem\r\n )\r\n );\r\n};\r\n\r\nconst updatePartnerRedemptionLog = (_id, payload) => {\r\n return fetchPut(\r\n `${BASE_URL}redemptionlogs/partnerrewards/${_id}`,\r\n payload,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.REWARD,\r\n AccessPermissionModules[AccessPermissionModuleNames.REWARD].actions\r\n .UpdateLogItem\r\n )\r\n );\r\n};\r\n\r\nconst bulkRefundPartnerRewardRedemptions = (payload) => {\r\n return fetchPut(\r\n `${BASE_URL}redemptionlogs/partnerrewards/bulkrefund`,\r\n payload,\r\n true\r\n /* // TODO: Add permissions.\r\n getPermissionPath(\r\n AccessPermissionModuleNames.REWARD,\r\n AccessPermissionModules[AccessPermissionModuleNames.REWARD].actions\r\n .RefundLogItem\r\n ) */\r\n );\r\n};\r\n\r\nconst reprocessRedemptionLogs = (_id, payload) => {\r\n return fetchPut(\r\n `${BASE_URL}redemptionlogs/reprocess/${_id}`,\r\n payload\r\n /*TODO:ADD API PERMISSION*/\r\n /* true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.REWARD,\r\n AccessPermissionModules[AccessPermissionModuleNames.REWARD].actions\r\n .RefundLogItem\r\n )*/\r\n );\r\n};\r\n\r\nconst redeemReward = (payload) => {\r\n return fetchPost(\r\n `${BASE_URL}rewardredeem`,\r\n payload,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.REWARD,\r\n AccessPermissionModules[AccessPermissionModuleNames.REWARD].actions\r\n .RedeemReward\r\n )\r\n );\r\n};\r\n\r\nconst claimReward = (payload) => {\r\n return fetchPost(\r\n `${BASE_URL}klip/claimreward`,\r\n payload,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.REWARD,\r\n AccessPermissionModules[AccessPermissionModuleNames.REWARD].actions\r\n .ClaimReward\r\n )\r\n );\r\n};\r\n\r\nexport {\r\n getRewards,\r\n getRewardById,\r\n createReward,\r\n updateRewardById,\r\n deleteReward,\r\n topUpReward,\r\n topUpRewardFile,\r\n redeemRewards,\r\n getRedemptionLogs,\r\n updateRewardRedemptionLog,\r\n refundRedemptionPoints,\r\n redeemReward,\r\n claimReward,\r\n getTopupLogs,\r\n cancelReward,\r\n getRedemptionLogsById,\r\n reprocessRedemptionLogs,\r\n bulkRefundPartnerRewardRedemptions,\r\n updatePartnerRedemptionLog,\r\n};\r\n","import {\r\n fetchGet,\r\n fetchPut,\r\n fetchPost,\r\n fetchDelete,\r\n jsonToQueryParam,\r\n} from \"./CommonServiceUtils\";\r\nimport Constants from \"../Constants\";\r\nimport { AccessPermissionModules, AccessPermissionModuleNames } from \"Data\";\r\nimport { getPermissionPath } from \"Utils\";\r\n\r\nconst BASE_URL = `${Constants.BASE_URL}loyaltyservice/`;\r\n\r\n/*tiers section*/\r\nconst getTiers = ({ limit = 100, skip = 0, regionId }) => {\r\n return fetchGet(\r\n `${BASE_URL}tiers?${jsonToQueryParam({\r\n limit,\r\n skip,\r\n regionId,\r\n })}`,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.TIER,\r\n AccessPermissionModules[AccessPermissionModuleNames.TIER].actions\r\n .ListTiers\r\n )\r\n );\r\n};\r\nconst createTiers = ({ name, benefits, imageUrl, points, regionId }) => {\r\n return fetchPost(\r\n `${BASE_URL}tiers`,\r\n { regionId, name, imageUrl, benefits, points },\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.TIER,\r\n AccessPermissionModules[AccessPermissionModuleNames.TIER].actions\r\n .CreateTier\r\n )\r\n );\r\n};\r\n\r\nconst editTiers = ({ _id, name, benefits, imageUrl, points }) => {\r\n return fetchPut(\r\n `${BASE_URL}tiers/${_id}`,\r\n { name, benefits, imageUrl, points },\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.TIER,\r\n AccessPermissionModules[AccessPermissionModuleNames.TIER].actions\r\n .UpdateTier\r\n )\r\n );\r\n};\r\n\r\nconst deleteTiers = (id) => {\r\n return fetchDelete(\r\n `${BASE_URL}tiers/${id}`,\r\n null,\r\n null,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.TIER,\r\n AccessPermissionModules[AccessPermissionModuleNames.TIER].actions\r\n .DeleteTier\r\n )\r\n );\r\n};\r\n\r\nexport { getTiers, editTiers, createTiers, deleteTiers };\r\n","import { fetchGet, jsonToQueryParam ,\r\n fetchPut, \r\n fetchPost, \r\n fetchDelete,\r\n fetchPostMultipart\r\n} from './CommonServiceUtils';\r\nimport Constants from '../Constants';\r\nimport { AccessPermissionModules, AccessPermissionModuleNames } from \"Data\";\r\nimport { getPermissionPath } from \"Utils\";\r\nconst BASE_URL = `${Constants.BASE_URL}loyaltyservice/`;\r\n\r\nconst getTransactions = (queryObj) => {\r\n //Query params : limit, skip, merchantId\r\n return fetchGet(\r\n `${BASE_URL}transactions?${jsonToQueryParam(queryObj)}`,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.TRANSACTION,\r\n AccessPermissionModules[AccessPermissionModuleNames.TRANSACTION]\r\n .actions.ListTransactions\r\n )\r\n );\r\n}\r\n\r\nconst getInvalidTransactions = (queryObj) => {\r\n //Query params : limit, skip, merchantId, status, importJobId, subType\r\n return fetchGet(\r\n `${BASE_URL}stagedtransactions?${jsonToQueryParam(queryObj)}`,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.TRANSACTION,\r\n AccessPermissionModules[AccessPermissionModuleNames.TRANSACTION]\r\n .actions.ListStagedTransaction\r\n )\r\n );\r\n}\r\n\r\nconst archiveInvalidTransaction = (id) => {\r\n return fetchDelete(\r\n BASE_URL + \"stagedtransactions/\" + id,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.TRANSACTION,\r\n AccessPermissionModules[AccessPermissionModuleNames.TRANSACTION]\r\n .actions.DeleteStagedTransaction\r\n )\r\n );\r\n}\r\n\r\nconst linkLoyaltyCardToTransaction = (id, payload) => {\r\n \r\n return fetchPut(\r\n `${BASE_URL}stagedtransactions/${id}`, payload,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.TRANSACTION,\r\n AccessPermissionModules[AccessPermissionModuleNames.TRANSACTION]\r\n .actions.UpdateStagedTransaction\r\n )\r\n );\r\n}\r\n\r\nconst getImportTransactions = (queryObj) => {\r\n\r\n return fetchGet(\r\n `${BASE_URL}transactionimportjobs?${jsonToQueryParam(queryObj)}`,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.TRANSACTION,\r\n AccessPermissionModules[AccessPermissionModuleNames.TRANSACTION]\r\n .actions.ListTransactionImportJobs\r\n )\r\n );\r\n}\r\n\r\nconst importTransactionFileUpload = (queryObj, fileFormData)=> {\r\n return fetchPostMultipart(`${BASE_URL}transactionimportjobs/uploadfile?${jsonToQueryParam(queryObj)}`, fileFormData);\r\n}\r\n\r\nconst importTransaction = (payload) => {\r\n \r\n return fetchPost(\r\n BASE_URL + \"transactionimportjobs\" , payload,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.TRANSACTION,\r\n AccessPermissionModules[AccessPermissionModuleNames.TRANSACTION]\r\n .actions.CreateTransactionImportJob\r\n )\r\n );\r\n}\r\n\r\nexport { \r\n getTransactions, \r\n getInvalidTransactions,\r\n archiveInvalidTransaction,\r\n linkLoyaltyCardToTransaction ,\r\n getImportTransactions,\r\n importTransaction,\r\n importTransactionFileUpload\r\n}","import jwtDecode from 'jwt-decode';\r\nimport moment from 'moment';\r\nimport { round } from 'lodash';\r\nimport Constants from '../Constants';\r\nimport Mustache from 'mustache';\r\nimport { parseJson, handleErrors } from './CommonServiceUtils';\r\nimport { exportHtml } from '@shoutout-labs/shoutout-message-editor-enterprise/lib/EmailEditor';\r\nimport ReactDOMServer from 'react-dom/server';\r\n\r\nconst UTILITY_SERVICE_BASE_URL = 'https://api.getshoutout.com/utilityservice/'\r\n\r\nconst decodeToken = (token) => {\r\n return jwtDecode(token);\r\n}\r\n\r\nconst isTokenTimeNotExpired = (exp) => {\r\n if (exp) {\r\n return moment.unix(exp - 10, 'x').isAfter(moment());//check 10 seconds ahead\r\n }\r\n\r\n return false;\r\n}\r\n\r\nconst filtersMap = {\r\n 'string': [\r\n {\r\n id: 1,\r\n name: 'is',\r\n _inputVisible: true,\r\n _inputPlaceholder: 'search key'\r\n },\r\n {\r\n id: 2,\r\n name: 'is not',\r\n _inputVisible: true,\r\n _inputPlaceholder: 'search key'\r\n },\r\n {\r\n id: 3,\r\n name: 'starts with',\r\n _inputVisible: true,\r\n _inputPlaceholder: 'search key'\r\n },\r\n {\r\n id: 4,\r\n name: 'is known',\r\n _inputVisible: false\r\n },\r\n {\r\n id: 6,\r\n name: 'is unknown',\r\n _inputVisible: false\r\n },\r\n\r\n {\r\n id: 5,\r\n name: 'contains',\r\n _inputVisible: true,\r\n _inputPlaceholder: 'search key'\r\n }\r\n ],\r\n 'number': [\r\n {\r\n id: 9,\r\n name: 'equals',\r\n _inputVisible: true,\r\n _inputPlaceholder: 'search key'\r\n },\r\n {\r\n id: 10,\r\n name: 'greater than',\r\n _inputVisible: true,\r\n _inputPlaceholder: 'search key'\r\n },\r\n {\r\n id: 11,\r\n name: 'less than',\r\n _inputVisible: true,\r\n _inputPlaceholder: 'search key'\r\n },\r\n {\r\n id: 12,\r\n name: 'greater than or equal',\r\n _inputVisible: true,\r\n _inputPlaceholder: 'search key'\r\n },\r\n {\r\n id: 13,\r\n name: 'less than or equal',\r\n _inputVisible: true,\r\n _inputPlaceholder: 'search key'\r\n }\r\n ],\r\n 'array': [\r\n {\r\n id: 7,\r\n name: 'has',\r\n _inputVisible: true,\r\n _inputPlaceholder: 'search key'\r\n },\r\n {\r\n id: 8,\r\n name: 'starts with',\r\n _inputVisible: true,\r\n _inputPlaceholder: 'search key'\r\n },\r\n {\r\n id: 17,\r\n name: 'contains',\r\n _inputVisible: true,\r\n _inputPlaceholder: 'search key'\r\n }\r\n ],\r\n 'date': [\r\n {\r\n id: 1,\r\n name: 'is',\r\n _inputVisible: true,\r\n _inputPlaceholder: 'search key'\r\n },\r\n {\r\n id: 5,\r\n name: 'contains',\r\n _inputVisible: true,\r\n _inputPlaceholder: 'search key'\r\n },\r\n {\r\n id: 14,\r\n name: 'more than',\r\n _inputVisible: true,\r\n _inputPlaceholder: 'days ago'\r\n },\r\n {\r\n id: 15,\r\n name: 'less than',\r\n _inputVisible: true,\r\n _inputPlaceholder: 'days ago'\r\n }\r\n ]\r\n};\r\n\r\nconst defaultColumnMap = {\r\n name: {\r\n order: 0,\r\n label: 'Name',\r\n type: 'string',\r\n visible: true\r\n },\r\n mobile_number: {\r\n order: 1,\r\n label: 'Mobile Number',\r\n type: 'string',\r\n visible: true\r\n },\r\n email: {\r\n order: 2,\r\n label: 'Email',\r\n type: 'string',\r\n visible: true\r\n },\r\n last_seen_on: {\r\n order: 3,\r\n label: 'Last Seen On',\r\n type: 'date',\r\n visible: true\r\n },\r\n tags: {\r\n order: 4,\r\n label: 'Tags',\r\n type: 'array',\r\n visible: true\r\n },\r\n user_id: {\r\n order: 5,\r\n label: 'User ID',\r\n type: 'string',\r\n visible: false\r\n }\r\n};\r\n\r\nconst gsm7Encode = new RegExp(\"^[A-Za-z0-9 \\\\r\\\\n@£$¥èéùìòÇØøÅå\\u0394_\\u03A6\\u0393\\u039B\\u03A9\\u03A0\\u03A8\\u03A3\\u0398\\u039EÆæßÉ!\\\"#$%&'()*+,\\\\-./:;<=>?¡ÄÖÑܧ¿äöñüà^{}\\\\\\\\\\\\[~\\\\]|\\u20AC]*$\");\r\n\r\nconst emailRegex = /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/; //eslint-disable-line\r\n\r\nconst getIpInfo = () => {\r\n try {\r\n if (sessionStorage.getItem(\"countryCode\")) {\r\n return Promise.resolve({ country: sessionStorage.getItem(\"countryCode\") });\r\n } else {\r\n const countryCodeResponse = fetch(`${UTILITY_SERVICE_BASE_URL}ipinfo`, {\r\n method: 'GET'\r\n }).then(handleErrors).then(parseJson);\r\n const country = countryCodeResponse.data.country.toLowerCase();\r\n sessionStorage.setItem(\"countryCode\", country);\r\n return Promise.resolve({ country });\r\n }\r\n\r\n } catch (e) {\r\n return Promise.resolve({ country: \"lk\" });\r\n }\r\n}\r\n\r\nconst getFilters = (columnType) => {\r\n return filtersMap[columnType];\r\n}\r\n\r\nconst getFilterById = (filterId) => {\r\n return Object.values(filtersMap).flat().find(item => item.id === filterId);\r\n // return chain(filtersMap).values().flatten().find({ id: filterId }).value();\r\n}\r\n\r\nconst convertContactAttributeToReadable = (attribute) => {\r\n const split = attribute.replace(/^_/, '').split('_');\r\n split[0] = split[0].charAt(0).toUpperCase() + split[0].slice(1);\r\n return split.join(' ');\r\n}\r\n\r\nconst getDefaultColumnMap = () => {\r\n return new Promise(resolve => {\r\n resolve(defaultColumnMap);\r\n });\r\n\r\n}\r\nconst isGSMAlphabet = (text) => {\r\n return gsm7Encode.test(text);\r\n}\r\nconst getSmsLength = (message) => {\r\n message = message.replace(/<<(.*?)>>/g, Constants.SHORT_URL_DOMAIN + '/xxxxxx');\r\n return message.length;\r\n}\r\n\r\nconst getPercentage = (numerator = 0, denominator = 1) => {\r\n if (numerator === 0 && denominator === 0) {\r\n return 0;\r\n }\r\n let percentage = round((numerator / denominator) * 100);\r\n return percentage > 100 ? 100 : percentage;\r\n}\r\nconst getDatesBetween = (fromDate, toDate, format = \"YYYY-MM-DD\") => {\r\n let currDate = moment(fromDate).startOf('day');\r\n let lastDate = moment(toDate).startOf('day');\r\n let dates = [moment(currDate.clone().toDate()).format(format)];\r\n while (currDate.add(1, 'days').diff(lastDate) < 0) {\r\n dates.push(moment(currDate.clone().toDate()).format(format));\r\n }\r\n dates.push(moment(lastDate.clone().toDate()).format(format));\r\n return dates;\r\n}\r\n\r\nconst validateEmail = (email) => {\r\n return emailRegex.test(email);\r\n}\r\n\r\nconst getCampaignStatus = (campaign) => {\r\n if (campaign.type.toUpperCase() === Constants.CAMPAIGN_TRIGGER) {\r\n if (campaign.progress && campaign.progress.charging === Constants.CAMPAIGN_PROGRESS_STATUS.FAILED) {\r\n\r\n return Constants.CAMPAIGN_STATUS.INSUFFICIENT_CREDITS;\r\n }\r\n return Constants.CAMPAIGN_STATUS.LISTENING;\r\n } else {\r\n\r\n if (campaign.progress) {\r\n\r\n switch (campaign.progress.reviewing) {\r\n case Constants.CAMPAIGN_PROGRESS_STATUS.FAILED: {\r\n return Constants.CAMPAIGN_STATUS.REJECTED;\r\n }\r\n\r\n case Constants.CAMPAIGN_PROGRESS_STATUS.PENDING: {\r\n return Constants.CAMPAIGN_STATUS.REVIEWING;\r\n }\r\n default: {\r\n\r\n }\r\n }\r\n\r\n switch (campaign.progress.building) {\r\n case Constants.CAMPAIGN_PROGRESS_STATUS.FAILED: {\r\n return Constants.CAMPAIGN_STATUS.FAILED;\r\n }\r\n case Constants.CAMPAIGN_PROGRESS_STATUS.IN_PROGRESS: {\r\n return Constants.CAMPAIGN_STATUS.CREATING;\r\n }\r\n case Constants.CAMPAIGN_PROGRESS_STATUS.PENDING: {\r\n return Constants.CAMPAIGN_STATUS.CREATING;\r\n }\r\n default: {\r\n\r\n }\r\n }\r\n\r\n\r\n switch (campaign.progress.charging) {\r\n case Constants.CAMPAIGN_PROGRESS_STATUS.FAILED: {\r\n return Constants.CAMPAIGN_STATUS.INSUFFICIENT_CREDITS;\r\n }\r\n case Constants.CAMPAIGN_PROGRESS_STATUS.IN_PROGRESS: {\r\n return Constants.CAMPAIGN_STATUS.CREATING;\r\n }\r\n case Constants.CAMPAIGN_PROGRESS_STATUS.PENDING: {\r\n return Constants.CAMPAIGN_STATUS.CREATING;\r\n }\r\n default: {\r\n\r\n }\r\n }\r\n\r\n switch (campaign.progress.sending) {\r\n case Constants.CAMPAIGN_PROGRESS_STATUS.FAILED: {\r\n return Constants.CAMPAIGN_STATUS.FAILED;\r\n }\r\n case Constants.CAMPAIGN_PROGRESS_STATUS.IN_PROGRESS: {\r\n return Constants.CAMPAIGN_STATUS.RUNNING;\r\n }\r\n case Constants.CAMPAIGN_PROGRESS_STATUS.PENDING: {\r\n return Constants.CAMPAIGN_STATUS.SCHEDULED;\r\n }\r\n default: {\r\n return Constants.CAMPAIGN_STATUS.FINISHED;\r\n }\r\n }\r\n } else {\r\n switch (campaign.status) {\r\n case 0:\r\n return Constants.CAMPAIGN_STATUS.CREATING;\r\n\r\n case 1:\r\n return Constants.CAMPAIGN_STATUS.RUNNING;\r\n\r\n case 2:\r\n return Constants.CAMPAIGN_STATUS.FINISHED;\r\n\r\n case 3:\r\n return Constants.CAMPAIGN_STATUS.LISTENING;\r\n\r\n case 4:\r\n return Constants.CAMPAIGN_STATUS.FAILED;\r\n\r\n case 5:\r\n return Constants.CAMPAIGN_STATUS.SCHEDULED;\r\n\r\n default:\r\n return Constants.CAMPAIGN_STATUS.FAILED;\r\n\r\n }\r\n }\r\n }\r\n}\r\n\r\nconst buildSms = (smsTemplate, contactData, additionalData = []) => {\r\n additionalData.forEach(({ url, shortenUrl }) => {\r\n if (url) {\r\n let urlRegEx = new RegExp(\"<<\" + url + \">>\", \"gm\");\r\n smsTemplate = smsTemplate.replace(urlRegEx, shortenUrl);\r\n }\r\n });\r\n return Mustache.render(smsTemplate, contactData);\r\n}\r\n\r\nconst downloadCSV = (data, filename) => {\r\n return fetch(\"data:application/csv,\" + data)\r\n .then(function (res) { return res.blob(); })\r\n .then(function (blob) {\r\n if (navigator.msSaveBlob) { // IE 10+\r\n navigator.msSaveBlob(blob, filename);\r\n } else {\r\n let link = document.createElement(\"a\");\r\n if (link.download !== undefined) { // feature detection\r\n // Browsers that support HTML5 download attribute\r\n let url = URL.createObjectURL(blob);\r\n link.setAttribute(\"href\", url);\r\n link.setAttribute(\"download\", filename);\r\n link.style.visibility = 'hidden';\r\n document.body.appendChild(link);\r\n link.click();\r\n document.body.removeChild(link);\r\n }\r\n }\r\n\r\n }).catch(err => {\r\n throw err;\r\n });\r\n}\r\n\r\nconst cleanEmptyValuesInObject = (obj) => {\r\n Object.entries(obj).forEach(([key, val]) =>\r\n //eslint-disable-next-line\r\n (val && typeof val === 'object') && this.cleanEmptyValuesInObject(val) || (val === null || val === \"\") && delete obj[key]\r\n );\r\n return obj;\r\n};\r\n\r\nconst calculateOptoutMessageLength = (senderId, campaignType) => {\r\n if (campaignType === \"transactional\") {\r\n return { message: \"\", length: 0 };\r\n }\r\n if (senderId.metadata?.usage) {//New sender Id format\r\n\r\n if (senderId.metadata.usage === \"transactional\") {\r\n return { message: \"\", length: 0 };\r\n }\r\n // Dedicated number\r\n if (senderId.metadata.unsubNumber) {\r\n let message;\r\n if (senderId.metadata.unsubKeyword) {\r\n message = Mustache.render(Constants.SMS_OPTOUT.TEMPLATE1, { mobileNumber: senderId.metadata.unsubNumber, keyword: senderId.metadata.unsubKeyword });\r\n\r\n }\r\n else if (senderId.metadata.unsubNumber !== senderId.senderId) {//Sender ID is not equal to the dedicated number\r\n message = Mustache.render(Constants.SMS_OPTOUT.TEMPLATE2, { mobileNumber: senderId.metadata.unsubNumber });\r\n\r\n }\r\n else {\r\n message = Mustache.render(Constants.SMS_OPTOUT.TEMPLATE3, { mobileNumber: senderId.metadata.unsubNumber });\r\n\r\n }\r\n return { message: message, length: message.length + 1 };\r\n\r\n }\r\n const countryLengthMap = senderId.metadata.countries?.reduce((result, country) => {\r\n\r\n const countryMatch = Constants.SMS_OPTOUT.COUNTRIES[country.toLowerCase()];\r\n if (countryMatch) {\r\n if (senderId.metadata.unsubNumber) {\r\n countryMatch.mobileNumber = senderId.metadata.unsubNumber;\r\n }\r\n const message = Mustache.render(countryMatch.template, countryMatch);\r\n result.push({ message, length: message.length + 1 });//add extra character for line break\r\n }\r\n return result;\r\n }, []) || [];\r\n if (countryLengthMap.length > 0) {\r\n\r\n return countryLengthMap.sort((a, b) => b.length - a.length)[0];\r\n }\r\n }\r\n\r\n\r\n return { message: \"\", length: 0 };\r\n}\r\n\r\n\r\nconst generatePointRuleDescription = (template, data) => {\r\n return Mustache.render(template, {\r\n ...data, pointRateCalc: function () {\r\n //return (1 / this.pointRate);\r\n return (this.pointRate);\r\n }\r\n });\r\n\r\n}\r\n\r\nconst convertEditorStateToHtml = (editorState) => {\r\n return ReactDOMServer.renderToStaticMarkup(exportHtml(editorState));\r\n}\r\n\r\nconst getDatesSeries = (startDate, stopDate) => {\r\n let dateArray = [];\r\n let currentDate = moment(startDate);\r\n let endDate = moment(stopDate);\r\n while (currentDate <= endDate) {\r\n dateArray.push(moment(currentDate).format('YYYY-MM-DD'))\r\n currentDate = moment(currentDate).add(1, 'days');\r\n }\r\n return dateArray;\r\n};\r\n\r\n\r\n\r\n\r\n\r\nexport {\r\n decodeToken, isTokenTimeNotExpired, getIpInfo, getFilters,\r\n calculateOptoutMessageLength, cleanEmptyValuesInObject, downloadCSV,\r\n buildSms, getCampaignStatus, validateEmail, getDatesBetween, getPercentage, getSmsLength,\r\n isGSMAlphabet, getDefaultColumnMap, getFilterById, convertContactAttributeToReadable, generatePointRuleDescription,\r\n convertEditorStateToHtml, getDatesSeries\r\n};\r\n","import {\r\n fetchGet,\r\n fetchPost,\r\n fetchGetWithTotal,\r\n fetchPut,\r\n jsonToQueryParam,\r\n fetchPostWithTotal,\r\n fetchDelete,\r\n preProcessBodyData,\r\n fetchPostMultipart,\r\n} from \"./CommonServiceUtils\";\r\nimport { getPermissionPath, generateUserAttribute } from \"Utils\";\r\nimport { AccessPermissionModules, AccessPermissionModuleNames } from \"Data\";\r\nimport Constants from \"Constants\";\r\n\r\nconst BASE_URL = `${Constants.BASE_URL}loyaltyservice/`;\r\n\r\nconst createNewUser = (userDetails) => {\r\n return fetchPost(\r\n `${BASE_URL}members`,\r\n preProcessBodyData(userDetails),\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.MEMBER,\r\n AccessPermissionModules[AccessPermissionModuleNames.MEMBER].actions\r\n .CreateMember\r\n )\r\n );\r\n};\r\n\r\nconst updateContact = (id, payload) => {\r\n return fetchPut(\r\n `${BASE_URL}members/${id}`,\r\n payload,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.MEMBER,\r\n AccessPermissionModules[AccessPermissionModuleNames.MEMBER].actions\r\n .UpdateMember\r\n )\r\n );\r\n};\r\n\r\nconst updateMemberAffinityGroup= (id, payload) => {\r\n return fetchPut(\r\n `${BASE_URL}members/affinityGroup/${id}`,\r\n payload,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.MEMBER,\r\n AccessPermissionModules[AccessPermissionModuleNames.MEMBER].actions\r\n .UpdateMemberAffinityGroup\r\n )\r\n );\r\n};\r\n\r\nconst getContactById = (contactId) => {\r\n return fetchGet(\r\n `${BASE_URL}members/${contactId}`,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.MEMBER,\r\n AccessPermissionModules[AccessPermissionModuleNames.MEMBER].actions\r\n .GetMember\r\n )\r\n );\r\n};\r\n\r\nconst findMembers = (queryObj) => {\r\n return fetchGet(\r\n `${BASE_URL}members?${jsonToQueryParam(queryObj)}`,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.MEMBER,\r\n AccessPermissionModules[AccessPermissionModuleNames.MEMBER].actions\r\n .ListMembers\r\n )\r\n );\r\n};\r\n\r\nconst getContacts = ({\r\n skip = 0,\r\n regionId,\r\n limit,\r\n searchKey,\r\n sortDirection,\r\n sortBy,\r\n type,\r\n projection,\r\n affinityGroupId,\r\n tierId,\r\n /* // TODO: Potential future implementation - MemberListFilters. Uncomment when needed.\r\n affinityGroupJoinedDateFrom,\r\n affinityGroupJoinedDateTo,\r\n affinityGroupExpirationDateFrom,\r\n affinityGroupExpirationDateTo,\r\n */\r\n}) => {\r\n return fetchGetWithTotal(\r\n `${BASE_URL}members?${jsonToQueryParam({\r\n limit,\r\n skip: skip,\r\n regionId,\r\n ...(sortBy ? { sortBy } : {}),\r\n ...(sortDirection ? { sortDirection } : {}),\r\n ...(affinityGroupId ? { affinityGroupId } : {}),\r\n ...(searchKey ? { searchKey } : {}),\r\n ...(type ? { type } : {}),\r\n ...(tierId ? { tierId } : {}),\r\n /* // TODO: Potential future implementation - MemberListFilters. Uncomment when needed.\r\n ...(affinityGroupJoinedDateFrom ? { affinityGroupJoinedDateFrom } : {}),\r\n ...(affinityGroupJoinedDateTo ? { affinityGroupJoinedDateTo } : {}),\r\n ...(affinityGroupExpirationDateFrom ? { affinityGroupExpirationDateFrom } : {}),\r\n ...(affinityGroupExpirationDateTo ? { affinityGroupExpirationDateTo } : {}), */\r\n ...(projection\r\n ? { fields: generateUserAttribute(projection) }\r\n : {}),\r\n })}`,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.MEMBER,\r\n AccessPermissionModules[AccessPermissionModuleNames.MEMBER].actions\r\n .ListMembers\r\n )\r\n );\r\n};\r\n\r\nconst filterMembers = (\r\n { limit, skip = 0, searchKey, regionId, sortDirection, sortBy, projection },\r\n filters\r\n) => {\r\n return fetchPostWithTotal(\r\n `${BASE_URL}members/filter?${jsonToQueryParam({\r\n limit,\r\n skip,\r\n regionId,\r\n searchKey,\r\n sortDirection,\r\n sortBy,\r\n fields: generateUserAttribute(projection),\r\n })}`,\r\n filters,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.MEMBER,\r\n AccessPermissionModules[AccessPermissionModuleNames.MEMBER].actions\r\n .ListMembers\r\n )\r\n );\r\n};\r\nconst changeAccountStatus = (payload) => {\r\n return fetchPost(\r\n `${BASE_URL}members/status`,\r\n payload,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.MEMBER,\r\n AccessPermissionModules[AccessPermissionModuleNames.MEMBER].actions\r\n .UpdateMember\r\n )\r\n );\r\n};\r\n\r\nconst getSecondaryAccounts = (queryObj) => {\r\n return fetchGet(`${BASE_URL}members?${jsonToQueryParam(queryObj)}`);\r\n};\r\n\r\nconst getCardConfigurations = (newHeader) => {\r\n return fetchGet(`${BASE_URL}cards?${jsonToQueryParam(newHeader)}`);\r\n};\r\n\r\nconst getCardInfoByID = (cardId) => {\r\n return fetchGet(`${BASE_URL}cards/${cardId}`);\r\n};\r\n\r\nconst assignCardToMember = (cardDetails) => {\r\n return fetchPost(`${BASE_URL}cards/assign`, cardDetails);\r\n};\r\n\r\nconst getMemberNotes = (queryObj) => {\r\n return fetchGet(\r\n `${BASE_URL}membernotes?${jsonToQueryParam(queryObj)}`,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.MEMBER_NOTE,\r\n AccessPermissionModules[AccessPermissionModuleNames.MEMBER_NOTE]\r\n .actions.ListMemberNotes\r\n )\r\n );\r\n};\r\n\r\nconst addMemberNotes = (payload) => {\r\n return fetchPost(\r\n `${BASE_URL}membernotes`,\r\n payload,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.MEMBER_NOTE,\r\n AccessPermissionModules[AccessPermissionModuleNames.MEMBER_NOTE]\r\n .actions.CreateMemberNote\r\n )\r\n );\r\n};\r\n\r\nconst updateMemberNotes = (id, payload) => {\r\n return fetchPut(\r\n `${BASE_URL}membernotes/${id}`,\r\n payload,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.MEMBER_NOTE,\r\n AccessPermissionModules[AccessPermissionModuleNames.MEMBER_NOTE]\r\n .actions.UpdateMemberNote\r\n )\r\n );\r\n};\r\n\r\nconst archiveMember = (id) => {\r\n return fetchDelete(\r\n `${BASE_URL}members/${id}`,\r\n null,\r\n null,\r\n true,\r\n // TODO: Implement later.\r\n // getPermissionPath(\r\n // AccessPermissionModuleNames.CHARITIES,\r\n // AccessPermissionModules[AccessPermissionModuleNames.CHARITIES]\r\n // .actions.DeleteCharity\r\n // )\r\n );\r\n};\r\n\r\nconst deleteMemberNotes = (id) => {\r\n return fetchDelete(\r\n `${BASE_URL}membernotes/${id}`,\r\n null,\r\n null,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.MEMBER_NOTE,\r\n AccessPermissionModules[AccessPermissionModuleNames.MEMBER_NOTE]\r\n .actions.DeleteMemberNote\r\n )\r\n );\r\n};\r\n\r\nconst changeAccountType = (payload) => {\r\n return fetchPost(`${BASE_URL}members/type`, payload);\r\n};\r\n\r\nconst requestAccountSecondary = (payload) => {\r\n return fetchPost(`${BASE_URL}members/secondaryaddrequest`, payload);\r\n};\r\n\r\nconst addAccountSecondary = (payload) => {\r\n return fetchPost(`${BASE_URL}members/secondaryadd`, payload);\r\n};\r\n\r\nconst requestToConvertPrimary = (payload) => {\r\n return fetchPost(`${BASE_URL}members/convertprimaryrequest`, payload);\r\n};\r\n\r\nconst convertToPrimaryAccount = (payload) => {\r\n return fetchPost(`${BASE_URL}members/convertprimary`, payload);\r\n};\r\n\r\nconst exportMemberRequest = (payload) => {\r\n return fetchPost(`${BASE_URL}members/export`, payload);\r\n};\r\n\r\nconst forgetMember = (payload) => {\r\n return fetchPost(`${BASE_URL}members/erase`, payload);\r\n};\r\n\r\n/* Redemption */\r\n\r\n/*Sub Transactions section*/\r\nconst getNewSubTransactions = (newHeader) => {\r\n return fetchGet(\r\n `${BASE_URL}subtransactiontypes?${jsonToQueryParam(newHeader)}`,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.SUB_TRANSACTION_TYPE,\r\n AccessPermissionModules[\r\n AccessPermissionModuleNames.SUB_TRANSACTION_TYPE\r\n ].actions.ListSubTransactionTypes\r\n )\r\n );\r\n};\r\nconst deleteSubTransaction = (id) => {\r\n return fetchDelete(\r\n `${BASE_URL}subtransactiontypes/${id}`,\r\n null,\r\n null,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.SUB_TRANSACTION_TYPE,\r\n AccessPermissionModules[\r\n AccessPermissionModuleNames.SUB_TRANSACTION_TYPE\r\n ].actions.DeleteSubTransactionType\r\n )\r\n );\r\n};\r\nconst editSubTransaction = ({ _id, name, description, referenceId }) => {\r\n return fetchPut(\r\n `${BASE_URL}subtransactiontypes/${_id}`,\r\n {\r\n name,\r\n description,\r\n referenceId,\r\n },\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.SUB_TRANSACTION_TYPE,\r\n AccessPermissionModules[\r\n AccessPermissionModuleNames.SUB_TRANSACTION_TYPE\r\n ].actions.UpdateSubTransactionType\r\n )\r\n );\r\n};\r\nconst createSubTransaction = (newSubTransactionPayload) => {\r\n return fetchPost(\r\n `${BASE_URL}subtransactiontypes`,\r\n newSubTransactionPayload,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.SUB_TRANSACTION_TYPE,\r\n AccessPermissionModules[\r\n AccessPermissionModuleNames.SUB_TRANSACTION_TYPE\r\n ].actions.CreateSubTransactionType\r\n )\r\n );\r\n};\r\n\r\nconst getRegionsConfigurations = (newHeader) => {\r\n return fetchGet(`${BASE_URL}regions?${jsonToQueryParam(newHeader)}`);\r\n};\r\n\r\nconst editRegion = ({\r\n _id,\r\n regionName,\r\n defaultCountryISO2Code,\r\n defaultCurrencyCode,\r\n regionIconUrl,\r\n pointConfiguration,\r\n memberConfiguration,\r\n notificationConfiguration,\r\n smsConfiguration,\r\n}) => {\r\n return fetchPut(`${BASE_URL}regions/${_id}`, {\r\n regionName,\r\n defaultCountryISO2Code,\r\n defaultCurrencyCode,\r\n regionIconUrl,\r\n pointConfiguration,\r\n memberConfiguration,\r\n notificationConfiguration,\r\n smsConfiguration,\r\n });\r\n};\r\n\r\nconst exportMembers = (payload) => {\r\n return fetchGet(\r\n `${BASE_URL}members/export?${jsonToQueryParam(payload)}`,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.MEMBER,\r\n AccessPermissionModules[AccessPermissionModuleNames.MEMBER].actions\r\n .ExportMembers\r\n )\r\n );\r\n}\r\n\r\nconst exportFilterMembers = ({ regionId,affinityGroupId, sortDirection, sortBy, projection,notificationEmails }, filters) => {\r\n return fetchPost(\r\n `${BASE_URL}members/filter/export?${jsonToQueryParam({\r\n regionId,\r\n affinityGroupId,\r\n sortDirection,\r\n sortBy,\r\n fields: generateUserAttribute(projection),\r\n notificationEmails\r\n })}`,\r\n filters,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.MEMBER,\r\n AccessPermissionModules[\r\n AccessPermissionModuleNames.MEMBER\r\n ].actions.ExportMembers\r\n )\r\n );\r\n};\r\n\r\nconst uploadImage = (file) => {\r\n const formData = new FormData();\r\n formData.append(\"file\", file);\r\n return fetchPostMultipart(`${BASE_URL}imageuploads`, formData);\r\n};\r\n\r\nexport {\r\n createNewUser,\r\n updateContact,\r\n getContactById,\r\n getContacts,\r\n changeAccountStatus,\r\n getSecondaryAccounts,\r\n filterMembers,\r\n findMembers,\r\n getMemberNotes,\r\n addMemberNotes,\r\n updateMemberNotes,\r\n deleteMemberNotes,\r\n changeAccountType,\r\n getCardConfigurations,\r\n getCardInfoByID,\r\n assignCardToMember,\r\n getNewSubTransactions,\r\n deleteSubTransaction,\r\n editSubTransaction,\r\n createSubTransaction,\r\n getRegionsConfigurations,\r\n editRegion,\r\n requestAccountSecondary,\r\n addAccountSecondary,\r\n requestToConvertPrimary,\r\n convertToPrimaryAccount,\r\n exportMemberRequest,\r\n forgetMember,\r\n uploadImage,\r\n archiveMember,\r\n exportMembers,\r\n exportFilterMembers,\r\n updateMemberAffinityGroup\r\n};\r\n","import {\r\n fetchGetWithTotal,\r\n fetchPost,\r\n fetchDelete,\r\n jsonToQueryParam,\r\n fetchGet,\r\n fetchPut,\r\n} from \"./CommonServiceUtils\";\r\nimport Constants from \"../Constants\";\r\nimport {\r\n AccessPermissionModules,\r\n UserStatus,\r\n UserTypes,\r\n AccessPermissionModuleNames,\r\n} from \"Data\";\r\nimport { getPermissionPath } from \"Utils\";\r\n\r\nconst BASE_URL = `${Constants.BASE_URL}identityservice/`;\r\n\r\nconst getIdentityUsers = ({\r\n limit = 100,\r\n skip,\r\n type = \"USER\",\r\n regionId,\r\n merchantId,\r\n searchKey,\r\n}) => {\r\n return fetchGetWithTotal(\r\n `${BASE_URL}users?${jsonToQueryParam({\r\n limit,\r\n skip: skip || 0,\r\n type,\r\n regionId,\r\n merchantId,\r\n searchKey,\r\n })}`,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.USERS,\r\n AccessPermissionModules[AccessPermissionModuleNames.USERS].actions\r\n .ListUsers\r\n )\r\n );\r\n};\r\n\r\nconst postUserDataset = ({ projection, datasetKey }) => {\r\n return fetchPost(\r\n `${BASE_URL}userdatasets`,\r\n {\r\n datasetKey: datasetKey,\r\n datasetValue: JSON.stringify(projection),\r\n },\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.USER_DATASET,\r\n AccessPermissionModules[AccessPermissionModuleNames.USER_DATASET]\r\n .actions.CreateDataset\r\n )\r\n );\r\n};\r\n\r\nconst getUserDataset = ({ datasetKey }) => {\r\n return fetchGetWithTotal(\r\n `${BASE_URL}userdatasets?${jsonToQueryParam({\r\n datasetKey: datasetKey,\r\n })}`,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.USER_DATASET,\r\n AccessPermissionModules[AccessPermissionModuleNames.USER_DATASET]\r\n .actions.ListDatasets\r\n )\r\n );\r\n};\r\n\r\nconst getGroups = ({ limit = 100, skip, regionId, merchantId, searchKey }) => {\r\n return fetchGet(\r\n `${BASE_URL}groups?${jsonToQueryParam({\r\n limit,\r\n skip: skip || 0,\r\n regionId,\r\n merchantId,\r\n searchKey,\r\n })}`,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.GROUPS,\r\n AccessPermissionModules[AccessPermissionModuleNames.GROUPS].actions\r\n .ListGroups\r\n )\r\n );\r\n};\r\nconst getAllGroups = (args) => {\r\n return new Promise(async (resolve, reject) => {\r\n const limit = 500;\r\n let totalCount = 0,\r\n groups = [];\r\n try {\r\n do {\r\n const response = await getGroups({\r\n limit,\r\n skip: groups.length,\r\n ...args,\r\n });\r\n totalCount = response.total;\r\n groups = [...groups, ...response.items];\r\n } while (groups.length < totalCount);\r\n resolve(groups);\r\n } catch (e) {\r\n reject(e);\r\n }\r\n });\r\n};\r\n\r\nconst getGroup = (id) => {\r\n return fetchGet(\r\n `${BASE_URL}groups/${id}`,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.GROUPS,\r\n AccessPermissionModules[AccessPermissionModuleNames.GROUPS].actions\r\n .ListGroups\r\n )\r\n );\r\n};\r\n\r\nconst getAuditLogs= (payload) => {\r\n return fetchGet(\r\n `${BASE_URL}auditlogs?${jsonToQueryParam(payload)}`,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.AUDIT_LOG,\r\n AccessPermissionModules[AccessPermissionModuleNames.AUDIT_LOG].actions\r\n .ListAuditLogs\r\n )\r\n );\r\n};\r\n\r\n\r\nconst createGroup = ({\r\n regionId,\r\n merchantId,\r\n type,\r\n name,\r\n description,\r\n policies,\r\n}) => {\r\n return fetchPost(\r\n `${BASE_URL}groups`,\r\n {\r\n regionId,\r\n merchantId,\r\n type,\r\n name,\r\n description,\r\n policies,\r\n },\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.GROUPS,\r\n AccessPermissionModules[AccessPermissionModuleNames.GROUPS].actions\r\n .CreateGroup\r\n )\r\n );\r\n};\r\nconst deleteGroup = (id) => {\r\n return fetchDelete(\r\n `${BASE_URL}groups/${id}`,\r\n null,\r\n null,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.GROUPS,\r\n AccessPermissionModules[AccessPermissionModuleNames.GROUPS].actions\r\n .DeleteGroup\r\n )\r\n );\r\n};\r\n\r\nconst updateGroup = (groupId, groupData) => {\r\n return fetchPut(\r\n `${BASE_URL}groups/${groupId}`,\r\n groupData,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.GROUPS,\r\n AccessPermissionModules[AccessPermissionModuleNames.GROUPS].actions\r\n .UpdateGroup\r\n )\r\n );\r\n};\r\n\r\nconst getIdentityUser = (userId) => {\r\n return fetchGet(\r\n `${BASE_URL}users/${userId}`,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.USERS,\r\n AccessPermissionModules[AccessPermissionModuleNames.USERS].actions\r\n .GetUser\r\n )\r\n );\r\n};\r\nconst updateIdentityUser = (userId, { userData }) => {\r\n return fetchPut(\r\n `${BASE_URL}users/${userId}`,\r\n { userData },\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.USERS,\r\n AccessPermissionModules[AccessPermissionModuleNames.USERS].actions\r\n .UpdateUser\r\n )\r\n );\r\n};\r\n\r\nconst resetUserPassword = (resetPayload) => {\r\n return fetchPost(\r\n `${BASE_URL}users/resetpassword`,\r\n resetPayload,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.USERS,\r\n AccessPermissionModules[AccessPermissionModuleNames.USERS].actions\r\n .ResetPassword\r\n )\r\n );\r\n};\r\n\r\nconst getUserActivities = ({ userId, limit, skip = 0 }) => {\r\n // const data={\r\n // \"ipAddress\": \"string\",\r\n // \"sessionId\": \"string\",\r\n // \"event\": \"Login\",\r\n // \"createdOn\": \"2021-10-03T15:14:26.162Z\"\r\n // };\r\n // const dataset=[];\r\n // for(let i=skip;i\r\n // setTimeout(()=>\r\n // r(\r\n // {\r\n // \"limit\": 0,\r\n // \"skip\": 0,\r\n // \"total\": 200,\r\n // \"items\": dataset\r\n // }\r\n // ),1500)\r\n // )\r\n return fetchGet(\r\n `${BASE_URL}useractivities?${jsonToQueryParam({ userId })}`,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.USER_ACTIVITY,\r\n AccessPermissionModules[AccessPermissionModuleNames.USER_ACTIVITY]\r\n .actions.ListUserActivities\r\n )\r\n );\r\n};\r\n\r\n// const deleteMemberNotes = (id) => {\r\n// return fetchDelete(`${BASE_URL}membernotes/${id}`);\r\n// };\r\n\r\nconst addUserPermissions = ({ userId, regionId, permissions }) => {\r\n return fetchPost(\r\n `${BASE_URL}userpermissions`,\r\n {\r\n userId,\r\n regionId,\r\n permissions,\r\n },\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.USER_PERMISSION,\r\n AccessPermissionModules[AccessPermissionModuleNames.USER_PERMISSION]\r\n .actions.CreateUserPermission\r\n )\r\n );\r\n};\r\n\r\nconst updateUserPermission = ({ id, permissions }) => {\r\n return fetchPut(\r\n `${BASE_URL}userpermissions/${id}`,\r\n {\r\n permissions: permissions.permissions,\r\n },\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.USER_PERMISSION,\r\n AccessPermissionModules[AccessPermissionModuleNames.USER_PERMISSION]\r\n .actions.UpdateUserPermission\r\n )\r\n );\r\n};\r\nconst deleteUserAccount = (id) => {\r\n return fetchDelete(\r\n `${BASE_URL}users/${id}`,\r\n null,\r\n null,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.USERS,\r\n AccessPermissionModules[AccessPermissionModuleNames.USERS].actions\r\n .DeleteUser\r\n )\r\n );\r\n};\r\n\r\nconst createUser = ({\r\n boundary,\r\n regionId,\r\n merchantId,\r\n type = UserTypes.USER,\r\n status = UserStatus.ACTIVE,\r\n userData,\r\n}) => {\r\n return fetchPost(\r\n `${BASE_URL}users`,\r\n {\r\n boundary,\r\n regionId,\r\n merchantId,\r\n type,\r\n status,\r\n userData,\r\n },\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.USERS,\r\n AccessPermissionModules[AccessPermissionModuleNames.USERS].actions\r\n .CreateUser\r\n )\r\n );\r\n};\r\n\r\nconst getUserPermissions = ({ userId }) => {\r\n return fetchGet(\r\n `${BASE_URL}userpermissions?${jsonToQueryParam({ userId })}`,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.USER_PERMISSION,\r\n AccessPermissionModules[AccessPermissionModuleNames.USER_PERMISSION]\r\n .actions.ListUserPermissions\r\n )\r\n );\r\n};\r\n\r\nconst getModules = () => {\r\n return fetchGet(\r\n `${BASE_URL}modules`,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.MODULES,\r\n AccessPermissionModules[AccessPermissionModuleNames.MODULES].actions\r\n .ListModules\r\n )\r\n );\r\n};\r\n\r\nconst getIntegrations = ({ limit, skip = 0, regionId, merchantId }) => {\r\n return fetchGet(\r\n `${BASE_URL}users?${jsonToQueryParam({\r\n type: UserTypes.CLIENT,\r\n limit,\r\n skip,\r\n regionId,\r\n merchantId,\r\n })}`\r\n );\r\n};\r\n\r\nconst getIntegration = (id) => {\r\n return getIdentityUser(id);\r\n};\r\n\r\nconst deleteIntegration = (id) => {\r\n return deleteUserAccount(id);\r\n};\r\nconst createIntegration = ({\r\n boundary,\r\n regionId,\r\n merchantId,\r\n type = UserTypes.CLIENT,\r\n status = UserStatus.ACTIVE,\r\n clientData,\r\n}) => {\r\n return fetchPost(`${BASE_URL}users`, {\r\n boundary,\r\n regionId,\r\n merchantId,\r\n type,\r\n status,\r\n clientData,\r\n });\r\n};\r\n\r\nconst getProfile = () => {\r\n return fetchGet(`${BASE_URL}accounts/profile`);\r\n};\r\nexport {\r\n getIdentityUsers,\r\n postUserDataset,\r\n getUserDataset,\r\n getGroups,\r\n deleteGroup,\r\n getGroup,\r\n getIdentityUser,\r\n updateIdentityUser,\r\n getUserActivities,\r\n addUserPermissions,\r\n deleteUserAccount,\r\n resetUserPassword,\r\n createUser,\r\n getUserPermissions,\r\n updateUserPermission,\r\n getModules,\r\n createGroup,\r\n updateGroup,\r\n getIntegrations,\r\n createIntegration,\r\n deleteIntegration,\r\n getIntegration,\r\n getProfile,\r\n getAllGroups,\r\n getAuditLogs\r\n};\r\n","import {\r\n fetchGet,\r\n fetchPost,\r\n jsonToQueryParam,\r\n/* fetchPostMultipart,*/\r\n fetchDelete\r\n} from \"./CommonServiceUtils\";\r\nimport Constants from \"../Constants\";\r\nimport { AccessPermissionModules,AccessPermissionModuleNames } from \"Data\";\r\nimport { getPermissionPath } from \"Utils\";\r\n\r\nconst BASE_URL = `${Constants.BASE_URL}coreservice/`;\r\n// const BASE_URL = 'https://7hmi05mklj.execute-api.us-east-1.amazonaws.com/';\r\n\r\n/*\r\nconst uploadImage = (file) => {\r\n const formData = new FormData();\r\n formData.append(\"file\", file);\r\n return fetchPostMultipart(`${BASE_URL}imageuploads`, formData);\r\n};\r\n*/\r\n\r\nconst getContactAttributes = (regionId, skip = 0, limit = 1000) => {\r\n return fetchGet(`${BASE_URL}attributes?${jsonToQueryParam({ regionId,skip,limit })}`,true,getPermissionPath(\r\n AccessPermissionModuleNames.ATTRIBUTE,\r\n AccessPermissionModules[AccessPermissionModuleNames.ATTRIBUTE].actions\r\n .ListAttributes\r\n));\r\n};\r\n\r\nconst getSegmentCategories = (regionId,skip = 0, limit = 1000) => {\r\n return fetchGet(\r\n `${BASE_URL}segmentcategories?${jsonToQueryParam({ regionId,limit,skip })}`,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.SEGMENT,\r\n AccessPermissionModules[AccessPermissionModuleNames.SEGMENT].actions\r\n .ListSegmentCaregories\r\n )\r\n );\r\n};\r\n\r\nconst getSegments = (regionId, skip = 0, limit = 1000) => {\r\n return fetchGet(\r\n `${BASE_URL}segments?${jsonToQueryParam({ regionId, skip, limit })}`,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.SEGMENT,\r\n AccessPermissionModules[AccessPermissionModuleNames.SEGMENT].actions\r\n .ListSegments\r\n )\r\n );\r\n};\r\n\r\nconst createSegments = ({ name, regionId, filter }) => {\r\n return fetchPost(\r\n `${BASE_URL}segments`, { name, regionId, filter },\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.SEGMENT,\r\n AccessPermissionModules[AccessPermissionModuleNames.SEGMENT].actions\r\n .CreateSegment\r\n )\r\n );\r\n};\r\n\r\nconst getActivities = (activityFilters) => {\r\n //{contactId, fromDate, toDate, eventId}\r\n return fetchGet(\r\n `${BASE_URL}activities?${jsonToQueryParam(activityFilters)}`,\r\n true,\r\n //TODO: Removed temporarily to fix a permission issue.\r\n // getPermissionPath(\r\n // AccessPermissionModuleNames.ACTIVITY,\r\n // AccessPermissionModules[AccessPermissionModuleNames.ACTIVITY].actions\r\n // .ListActivities\r\n // )\r\n );\r\n};\r\n\r\n// const getContacts = ({ limit = 100, lastEvaluatedKey, regionId }) => {\r\n// return fetchGetWithTotal(`${BASE_URL}users?${jsonToQueryParam({ limit, skip: lastEvaluatedKey || 0, regionId })}`);\r\n// }\r\n\r\n// const filterContacts = (\r\n// {\r\n// selectedFilters = [],\r\n// limit = 100,\r\n// lastEvaluatedKey,\r\n// searchKey = \"\",\r\n// regionId,\r\n// },\r\n// filters\r\n// ) => {\r\n// return fetchPostWithTotal(\r\n// `${BASE_URL}users/filter?${jsonToQueryParam({\r\n// limit,\r\n// skip: lastEvaluatedKey || 0,\r\n// regionId,\r\n// searchKey,\r\n// })}`,\r\n// selectedFilters\r\n// );\r\n// };\r\n\r\n// const searchContact = ({ regionId, loyaltyId, limit = 1000, skip = 0 }) => {\r\n// return fetchGet(\r\n// `${BASE_URL}users?${jsonToQueryParam({\r\n// limit,\r\n// skip,\r\n// regionId,\r\n// searchKey: loyaltyId,\r\n// })}`\r\n// );\r\n// };\r\n\r\n// const getContactById = (contactId) => {\r\n// return fetchGet(`${BASE_URL}users/${contactId}`);\r\n// }\r\n\r\nconst getEvents = (queryObj) => {\r\n return fetchGet(\r\n `${BASE_URL}events?${jsonToQueryParam(queryObj)}`,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.EVENT,\r\n AccessPermissionModules[AccessPermissionModuleNames.EVENT].actions\r\n .ListEvents\r\n )\r\n );\r\n};\r\n\r\nconst deleteSegment = (id) => {\r\n return fetchDelete(\r\n `${BASE_URL}segments/${id}`,\r\n null,\r\n null,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.SEGMENT,\r\n AccessPermissionModules[AccessPermissionModuleNames.SEGMENT].actions\r\n .DeleteSegment\r\n )\r\n );\r\n};\r\n\r\nexport {\r\n /* uploadImage,*/\r\n getContactAttributes,\r\n getSegmentCategories,\r\n getSegments,\r\n getActivities,\r\n // filterContacts,\r\n createSegments,\r\n getEvents,\r\n //searchContact,\r\n deleteSegment,\r\n};\r\n","import { fetchGet} from './CommonServiceUtils';\r\nimport Constants from '../Constants';\r\n\r\nconst BASE_URL = `${Constants.BASE_URL}accountservice/`;\r\nconst getSenderIds = () => {\r\n return fetchGet(`${BASE_URL}accounts/senders`);\r\n}\r\n\r\nconst updateProfile = (profileData) => {\r\n return new Promise(resolve => {\r\n setTimeout(() => { resolve() }, 3000)\r\n })\r\n //return fetchPost(`${BASE_URL}`)\r\n}\r\nexport { getSenderIds, updateProfile };","import { fetchGet, jsonToQueryParam } from './CommonServiceUtils';\r\nimport Constants from '../Constants';\r\n\r\nconst BASE_URL = `${Constants.BASE_URL}loyaltyservice/`;\r\n\r\n// const getCountSummary = (fromDate = '', toDate = '') => {\r\n// return fetchGet(BASE_URL + \"dailyloyaltyreports/?select=count&fromDate=\" + fromDate + \"&toDate=\" + toDate + \"&location=default\");\r\n// }\r\n\r\n// const getSummary = (fromDate = '', toDate = '') => {\r\n// return fetchGet(BASE_URL + \"dailypeoplereports/summary?fromDate=\" + fromDate + \"&toDate=\" + toDate);\r\n// }\r\n\r\nconst getTopUsedRewards = (timePeriod) => {\r\n return fetchGet(`${BASE_URL}rewardsstats/topusedrewards/?skip=0&limit=5&${jsonToQueryParam(timePeriod)}`);\r\n};\r\n\r\nconst getBranches = (timePeriod) => {\r\n return fetchGet(`${BASE_URL}salestats/topbranches?${jsonToQueryParam(timePeriod)}`);\r\n};\r\n\r\nconst getSalesStat = (timePeriod) => {\r\n return fetchGet(`${BASE_URL}salestats?select=count&${jsonToQueryParam(timePeriod)}`);\r\n};\r\n\r\n// const getActiveMemberStat = (fromDate = '', toDate = '') => {\r\n// return fetchGet(BASE_URL + \"dailypeoplereports/active?&fromDate=\" + fromDate + \"&toDate=\" + toDate);\r\n// }\r\n\r\nexport { getTopUsedRewards, getBranches, getSalesStat };\r\n\r\n\r\n","import { fetchGet, fetchPut, fetchPost,jsonToQueryParam, fetchDelete} from './CommonServiceUtils';\r\nimport Constants from '../Constants';\r\nimport { AccessPermissionModules, AccessPermissionModuleNames } from \"Data\";\r\nimport { getPermissionPath } from \"Utils\";\r\nconst BASE_URL = `${Constants.BASE_URL}coreservice/`;//`${Constants.BASE_URL}loyaltyservice2/`;\r\n\r\nconst getNotifications = (queryObj) => {\r\n return fetchGet(\r\n `${BASE_URL}notifications?${jsonToQueryParam(queryObj)}`,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.NOTIFICATION,\r\n AccessPermissionModules[AccessPermissionModuleNames.NOTIFICATION]\r\n .actions.ListNotifications\r\n )\r\n );\r\n};\r\n\r\nconst createNotifications = ({ templateId, ...rest }) => {\r\n return fetchPost(\r\n `${BASE_URL}notifications`, rest,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.NOTIFICATION,\r\n AccessPermissionModules[AccessPermissionModuleNames.NOTIFICATION]\r\n .actions.CreateNotification\r\n )\r\n );\r\n};\r\n\r\nconst updateNotifications = (id, payload) => {\r\n return fetchPut(\r\n `${BASE_URL}notifications/${id}`, payload,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.NOTIFICATION,\r\n AccessPermissionModules[AccessPermissionModuleNames.NOTIFICATION]\r\n .actions.UpdateNotification\r\n )\r\n );\r\n};\r\n\r\nconst deleteNotification = (id) => {\r\n return fetchDelete(\r\n `${BASE_URL}notifications/${id}`, \r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.NOTIFICATION,\r\n AccessPermissionModules[AccessPermissionModuleNames.NOTIFICATION]\r\n .actions.DeleteNotification\r\n )\r\n );\r\n}\r\n\r\nconst getNotificationLogs= (notificationPayload) => {\r\n return fetchGet(\r\n `${BASE_URL}notificationlogs?${jsonToQueryParam(notificationPayload)}`,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.NOTIFICATION,\r\n AccessPermissionModules[AccessPermissionModuleNames.NOTIFICATION]\r\n .actions.ListNotificationLogs\r\n )\r\n );\r\n };\r\n\r\nexport { \r\n getNotifications, \r\n createNotifications, \r\n updateNotifications, \r\n deleteNotification,\r\n getNotificationLogs\r\n}","import { fetchGet, jsonToQueryParam } from './CommonServiceUtils';\r\nimport Constants from '../Constants';\r\n\r\nconst BASE_URL = `${Constants.BASE_URL}loyaltyservice/analytics/`;\r\n\r\nconst getTopListAnalytics = (tableURL,queryObjectTopRewards) => {\r\n return fetchGet(`${BASE_URL}${tableURL}?${jsonToQueryParam(queryObjectTopRewards)}`);\r\n};\r\nconst exportAnalyticsReport =(filePath,exportQueryObject) => {\r\n return fetchGet(`${BASE_URL}${filePath}?${jsonToQueryParam(exportQueryObject)}`);\r\n};\r\n\r\nconst getMemberRegistrationAnalyticsSeries = (queryObjectRegistration) => {\r\n return fetchGet(`${BASE_URL}members/registration/series?${jsonToQueryParam(queryObjectRegistration)}`);\r\n};\r\n\r\nconst getMemberRegistrationAnalyticsCount = (queryObjectRegistration) => {\r\n return fetchGet(`${BASE_URL}members/registration/counts?${jsonToQueryParam(queryObjectRegistration)}`);\r\n};\r\n\r\nconst getMemberAffinityGroupCount = (queryObjectAffinityGroup) => {\r\n return fetchGet(`${BASE_URL}members/affinitygroup/counts?${jsonToQueryParam(queryObjectAffinityGroup)}`);\r\n};\r\n\r\nconst getMemberAffinityGroupSeries = (queryObjectAffinityGroup) => {\r\n return fetchGet(`${BASE_URL}members/affinitygroup/series?${jsonToQueryParam(queryObjectAffinityGroup)}`);\r\n};\r\n\r\nconst getNewReturnMemberCount = (queryObjectReturnMember) => {\r\n return fetchGet(`${BASE_URL}members/new-return/counts?${jsonToQueryParam(queryObjectReturnMember)}`);\r\n};\r\n\r\nconst getNewReturnMemberSeries = (queryObjectReturnMember) => {\r\n return fetchGet(`${BASE_URL}members/new-return/series?${jsonToQueryParam(queryObjectReturnMember)}`);\r\n};\r\n\r\nconst getMemberTiersCount = (queryObjectTiers) => {\r\n return fetchGet(`${BASE_URL}members/tiers/counts?${jsonToQueryParam(queryObjectTiers)}`);\r\n};\r\n\r\nconst getMemberTiersSeries = (queryObjectTiers) => {\r\n return fetchGet(`${BASE_URL}members/tiers/series?${jsonToQueryParam(queryObjectTiers)}`);\r\n};\r\n\r\n/* Redemptions Analytics */\r\n\r\nconst getTopRewardAnalytics = (queryObjectTopRewards) => {\r\n return fetchGet(`${BASE_URL}rewards/top?${jsonToQueryParam(queryObjectTopRewards)}`);\r\n};\r\n\r\nconst getRedemptionCount = (queryObjectRedmptionCount) => {\r\n return fetchGet(`${BASE_URL}rewards/redeemedrewards/count?${jsonToQueryParam(queryObjectRedmptionCount)}`);\r\n};\r\n\r\nconst getRedemptionSeries = (queryObjectRedemptionSeries) => {\r\n return fetchGet(`${BASE_URL}rewards/redeemedrewards/series?${jsonToQueryParam(queryObjectRedemptionSeries)}`);\r\n};\r\n\r\n/* Cards Analytics */\r\n\r\nconst getCardsAnalytics = (queryObject) => {\r\n return fetchGet(`${BASE_URL}cards/summary?${jsonToQueryParam(queryObject)}`);\r\n};\r\n\r\nconst getCardsProcessingStatus = (queryObject) => {\r\n return fetchGet(`${BASE_URL}cards/processingstatussummary?${jsonToQueryParam(queryObject)}`);\r\n};\r\nconst getCardsActivationsummary = (queryObject) => {\r\n return fetchGet(`${BASE_URL}cards/activationsummary?${jsonToQueryParam(queryObject)}`);\r\n};\r\n/* Merchant Analytics */\r\n\r\nconst MERCHANTS_URL = `${BASE_URL}merchants/`;\r\n\r\n const getMerchantAsSeries = ( {transactionType,queryObj}) => {\r\n return fetchGet(`${MERCHANTS_URL}transactions/${transactionType}/series?${jsonToQueryParam(queryObj)}`);\r\n };\r\n const getMerchantAsCount = ({transactionType,queryObj}) => {\r\n return fetchGet(`${MERCHANTS_URL}transactions/${transactionType}/counts?${jsonToQueryParam(queryObj)}`);\r\n };\r\n /* Collections */\r\n const MERCHANTS_COLLECTIONS_URL = `${MERCHANTS_URL}transactions/collections/`;\r\n\r\n const getMerchantCollectionAsCount = queryObj => {\r\n return fetchGet(`${MERCHANTS_COLLECTIONS_URL}counts?${jsonToQueryParam(queryObj)}`);\r\n };\r\n\r\n const getMerchantCollectionAsSeries = queryObj => {\r\n return fetchGet(`${MERCHANTS_COLLECTIONS_URL}series?${jsonToQueryParam(queryObj)}`);\r\n };\r\n\r\n /* Redemptions */\r\n const MERCHANTS_REDEMPTIONS_URL = `${MERCHANTS_URL}transactions/redemptions/`;\r\n\r\n const getMerchantRedemptionAsCount = queryObj => {\r\n return fetchGet(`${MERCHANTS_REDEMPTIONS_URL}counts?${jsonToQueryParam(queryObj)}`);\r\n };\r\n\r\n const getMerchantRedemptionAsSeries = queryObj => {\r\n return fetchGet(`${MERCHANTS_REDEMPTIONS_URL}series?${jsonToQueryParam(queryObj)}`);\r\n }\r\n\r\n /* Adjustments */\r\n const MERCHANTS_ADJUSTMENT_URL = `${MERCHANTS_URL}transactions/adjustments/`;\r\n\r\n const getMerchantAdjustmentAsCount = queryObj => {\r\n return fetchGet(`${MERCHANTS_ADJUSTMENT_URL}counts?${jsonToQueryParam(queryObj)}`);\r\n };\r\n\r\n const getMerchantAdjustmentAsSeries = queryObj => {\r\n return fetchGet(`${MERCHANTS_ADJUSTMENT_URL}series?${jsonToQueryParam(queryObj)}`);\r\n };\r\n\r\n const getMerchantPointmovementsAnalytics = queryObj => {\r\n return fetchGet(`${MERCHANTS_URL}pointmovements?${jsonToQueryParam(queryObj)}`);\r\n };\r\n\r\n\r\nexport {\r\n getMemberRegistrationAnalyticsSeries,\r\n getMemberRegistrationAnalyticsCount,\r\n getMemberAffinityGroupCount,\r\n getMemberAffinityGroupSeries,\r\n getMemberTiersCount,\r\n getMemberTiersSeries,\r\n getRedemptionCount,\r\n getRedemptionSeries,\r\n getTopRewardAnalytics,\r\n getCardsAnalytics,\r\n // getMerchantCollectionAnalytics,\r\n // getMerchantRedemptionAnalytics,\r\n // getMerchantAdjustmentAnalytics,\r\n // getMerchantPointmovementsAnalytics\r\n getMerchantPointmovementsAnalytics,\r\n getMerchantCollectionAsCount,\r\n getMerchantCollectionAsSeries,\r\n getMerchantRedemptionAsCount,\r\n getMerchantRedemptionAsSeries,\r\n getMerchantAdjustmentAsCount,\r\n getMerchantAdjustmentAsSeries,\r\n getMerchantAsSeries,\r\n getMerchantAsCount,\r\n getTopListAnalytics,\r\n getCardsProcessingStatus,\r\n getCardsActivationsummary,\r\n exportAnalyticsReport,\r\n getNewReturnMemberSeries,\r\n getNewReturnMemberCount\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n// const getPointsRates = (queryObject) => {\r\n// return fetchGet(`${BASE_URL}pointsstats/rates?${jsonToQueryParam(queryObject)}`);\r\n// };\r\n\r\n// const getPointsCount = (queryObject) => {\r\n// return fetchGet(`${BASE_URL}pointsstats/counts?${jsonToQueryParam(queryObject)}`);\r\n// };\r\n\r\n// const getPointsSeries = (queryObject) => {\r\n// return fetchGet(`${BASE_URL}pointsstats/series?${jsonToQueryParam(queryObject)}`);\r\n// };\r\n\r\n// const getBranchWiseCollectedPoint = (queryObject) => {\r\n// return fetchGet(`${BASE_URL}pointsstats/collectdistributed?${jsonToQueryParam(queryObject)}`);\r\n// };\r\n\r\n// const getBranchWiseRedeemedPoint = (queryObject) => {\r\n// return fetchGet(`${BASE_URL}pointsstats/redeemdistributed?${jsonToQueryParam(queryObject)}`);\r\n// };\r\n\r\n// const getHeatMapStat = (queryObject) => {\r\n// return fetchGet(`${BASE_URL}salestats/heatmap?${jsonToQueryParam(queryObject)}`);\r\n// };\r\n\r\n// const getSalesSummary = (queryObject) => {\r\n// return fetchGet(`${BASE_URL}salestats/summary?${jsonToQueryParam(queryObject)}`);\r\n// };\r\n\r\n// const getRewardsCount = (timePeriod) => { // fromDate, toDate\r\n// return fetchGet(`${BASE_URL}rewardsstats/counts?${jsonToQueryParam(timePeriod)}`);\r\n// };\r\n\r\n// const getRewardsSeries = (timePeriod) => {\r\n// return fetchGet(`${BASE_URL}rewardsstats/series?${jsonToQueryParam(timePeriod)}`);\r\n// };\r\n\r\n// const getRewardRedemptionSeries = (timePeriod) => {\r\n// return fetchGet(`${BASE_URL}rewardsstats/redemptions?${jsonToQueryParam(timePeriod)}`);\r\n// };\r\n\r\n// const getTopRewards = (timePeriod) => {\r\n// return fetchGet(`${BASE_URL}rewardsstats/topusedrewards?${jsonToQueryParam(timePeriod)}`);\r\n// };\r\n\r\n// const getUserSummary = (timePeriod) => {\r\n// return fetchGet(`${BASE_URL}usersstats/summary?${jsonToQueryParam(timePeriod)}`);\r\n// };\r\n\r\n// const getUserCount = (timePeriod) => {\r\n// return fetchGet(`${BASE_URL}usersstats/counts?${jsonToQueryParam(timePeriod)}`);\r\n// };\r\n\r\n// const getUserDistribution = (queryObj) => {\r\n// return fetchGet(`${BASE_URL}usersstats/distributioncounts?${jsonToQueryParam(queryObj)}`);\r\n// };\r\n\r\n// const getUserDistributionSources = (queryObj) => {\r\n// return fetchGet(`${BASE_URL}usersstats/distributionseries?${jsonToQueryParam(queryObj)}`);\r\n// };\r\n\r\n// const getUserSeries = (timePeriod) => {\r\n// return fetchGet(`${BASE_URL}usersstats/series?${jsonToQueryParam(timePeriod)}`);\r\n// };\r\n\r\n// const getUserSeriesReturn = (timePeriod) => {\r\n// return fetchGet(`${BASE_URL}usersstats/seriesreturn?${jsonToQueryParam(timePeriod)}`);\r\n// };\r\n\r\n\r\n// export { getPointsRates,\r\n// getHeatMapStat,\r\n// getSalesSummary,\r\n// getPointsCount,\r\n// getPointsSeries,\r\n// getBranchWiseCollectedPoint,\r\n// getBranchWiseRedeemedPoint,\r\n// getRewardsCount,\r\n// getRewardsSeries,\r\n// getRewardRedemptionSeries,\r\n// getTopRewards,\r\n// //getDailyPeopleReports,\r\n// getUserSummary,\r\n// getUserCount,\r\n// getUserDistribution,\r\n// getUserSeries,\r\n// getUserDistributionSources,\r\n// getUserSeriesReturn,\r\n\r\n// };\r\n","import {\r\n fetchGet,\r\n //fetchPut,\r\n fetchPost,\r\n fetchPut,\r\n //fetchDelete,\r\n jsonToQueryParam,\r\n} from \"./CommonServiceUtils\";\r\nimport Constants from \"../Constants\";\r\nimport { AccessPermissionModules, AccessPermissionModuleNames } from \"Data\";\r\nimport { getPermissionPath } from \"Utils\";\r\nconst BASE_URL = `${Constants.BASE_URL}loyaltyservice/`;\r\n\r\nconst createCardBatchJob = ({\r\n jobType,\r\n regionId,\r\n merchantId,\r\n merchantLocationId,\r\n quantity,\r\n embossCardIds,\r\n}) => {\r\n return fetchPost(\r\n `${BASE_URL}cardbatchjobs`,\r\n {\r\n jobType,\r\n regionId,\r\n merchantId,\r\n merchantLocationId,\r\n quantity,\r\n embossCardIds,\r\n },\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.CARD,\r\n AccessPermissionModules[AccessPermissionModuleNames.CARD].actions\r\n .CreateCardBatchJob\r\n )\r\n );\r\n};\r\n\r\nconst createCardDistributionJobs = ({jobType, regionId, merchantId, merchantLocationId, quantity}) => {\r\n return fetchPost(\r\n `${BASE_URL}carddistributionjobs`,\r\n {\r\n jobType,\r\n regionId,\r\n merchantId,\r\n merchantLocationId,\r\n quantity,\r\n },\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.CARD,\r\n AccessPermissionModules[AccessPermissionModuleNames.CARD].actions\r\n .CreateCardBatchJob\r\n )\r\n );\r\n};\r\n\r\nconst createCardPrintJobs = ({jobType,\r\n regionId,\r\n quantity,\r\n embossCardIds,\r\n }) => {\r\n return fetchPost(\r\n `${BASE_URL}cardprintjobs`,\r\n {\r\n jobType,\r\n regionId,\r\n quantity,\r\n embossCardIds,\r\n },\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.CARD,\r\n AccessPermissionModules[AccessPermissionModuleNames.CARD].actions\r\n .CreateCardBatchJob\r\n )\r\n );\r\n};\r\n\r\nconst getCardBatchJobs = (JobURLParam,queryObj) => {\r\n // Query params : limit, skip, createdOnFrom, createdOnTo, status, batchId, regionId, merchantId, merchantLocationId,\r\n return fetchGet(\r\n `${BASE_URL}${JobURLParam}?${jsonToQueryParam(queryObj)}`,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.CARD,\r\n AccessPermissionModules[AccessPermissionModuleNames.CARD].actions\r\n .ListCardBatchJobs\r\n )\r\n );\r\n};\r\n\r\nconst updateCardBatchJobs = (JobURLParam,id, payload) => {\r\n return fetchPut(\r\n `${BASE_URL}${JobURLParam}/${id}`,\r\n payload,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.CARD,\r\n AccessPermissionModules[AccessPermissionModuleNames.CARD].actions\r\n .UpdateCardBatchJob\r\n )\r\n );\r\n};\r\n\r\nconst getCardList = (queryObj) => {\r\n // Query params : limit, skip, assignedDateFrom, assignedDateTo, createdOnFrom, createdOnTo, status, batchJobId, loyaltyId, cardNo\r\n return fetchGet(\r\n `${BASE_URL}cards?${jsonToQueryParam(queryObj)}`,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.CARD,\r\n AccessPermissionModules[AccessPermissionModuleNames.CARD].actions\r\n .ListCards\r\n )\r\n );\r\n};\r\n\r\nconst exportCardList = (JobURLParam,queryObj) => {\r\n // Query params : batchJobId\r\n return fetchGet(\r\n `${BASE_URL}${JobURLParam}?${jsonToQueryParam(queryObj)}`,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.CARD,\r\n AccessPermissionModules[AccessPermissionModuleNames.CARD].actions\r\n .ExportCardBatchJobs\r\n )\r\n );\r\n};\r\n\r\nconst exportFailedEmbossedCardList = (JobURLParam,queryObj) => {\r\n // Query params : batchJobId\r\n return fetchGet(\r\n `${BASE_URL}${JobURLParam}?${jsonToQueryParam(queryObj)}`,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.CARD,\r\n AccessPermissionModules[AccessPermissionModuleNames.CARD].actions\r\n .ListCards\r\n )\r\n );\r\n};\r\n\r\n\r\nconst requestEmbossedCardForMember = (\r\n memberId,\r\n { printedName, merchantLocationId, address }\r\n) => {\r\n return fetchPut(\r\n `${BASE_URL}cards/requestembossed/${memberId}`,\r\n {\r\n printedName,\r\n merchantLocationId,\r\n address,\r\n },\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.CARD,\r\n AccessPermissionModules[AccessPermissionModuleNames.CARD].actions\r\n .CreateEmbossedRequest\r\n )\r\n );\r\n};\r\n\r\nconst assignCardToALoyaltyId = (queryObj) => {\r\n return fetchPost(\r\n `${BASE_URL}cards/assign`,\r\n queryObj,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.CARD,\r\n AccessPermissionModules[AccessPermissionModuleNames.CARD].actions\r\n .AssignCard\r\n )\r\n );\r\n};\r\n\r\n// const exportEmbossedCardList = (queryObj) => {\r\n\r\n// return fetchGet(`${BASE_URL}cardbatchjobs/getcsv?${jsonToQueryParam(queryObj)}`);\r\n// };\r\n\r\nconst updateCardStatus = (id, payload) => {\r\n return fetchPut(\r\n `${BASE_URL}cards/${id}`,\r\n payload,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.CARD,\r\n AccessPermissionModules[AccessPermissionModuleNames.CARD].actions\r\n .UpdateCard\r\n )\r\n );\r\n};\r\n\r\nconst getCardSummary = ({ regionId, cardTypes }) => {\r\n return fetchGet(\r\n `${BASE_URL}cards/summary?${jsonToQueryParam({\r\n regionId,\r\n cardTypes: cardTypes,\r\n })}`,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.CARD,\r\n AccessPermissionModules[AccessPermissionModuleNames.CARD].actions\r\n .ListCards\r\n )\r\n );\r\n};\r\n\r\nconst getCardStock = (newHeader) => {\r\n return fetchGet(\r\n `${BASE_URL}cards/stock?${jsonToQueryParam(newHeader)}`,\r\n true,\r\n\r\n getPermissionPath(\r\n AccessPermissionModuleNames.CARD,\r\n AccessPermissionModules[AccessPermissionModuleNames.CARD].actions\r\n .ListCards\r\n )\r\n );\r\n};\r\nconst getCardByCardNumber = (cardNo, regionId) => {\r\n return getCardList({ cardNo, regionId });\r\n};\r\n\r\nconst getSettingCardConfigurations = (newHeader) => {\r\n return fetchGet(\r\n `${BASE_URL}cardconfigurations?${jsonToQueryParam(newHeader)}`,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.CARD,\r\n AccessPermissionModules[AccessPermissionModuleNames.CARD].actions\r\n .ListCardConfigurations\r\n )\r\n );\r\n};\r\nconst editSettingCard = ({ _id, rangeFrom, rangeTo, replacementFee }) => {\r\n return fetchPut(\r\n `${BASE_URL}cardconfigurations/${_id}`,\r\n {\r\n rangeFrom,\r\n rangeTo,\r\n replacementFee,\r\n },\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.CARD,\r\n AccessPermissionModules[AccessPermissionModuleNames.CARD].actions\r\n .UpdateCardConfiguration\r\n )\r\n );\r\n};\r\n\r\nexport {\r\n createCardBatchJob,\r\n getCardBatchJobs,\r\n updateCardBatchJobs,\r\n getCardList,\r\n requestEmbossedCardForMember,\r\n exportCardList,\r\n assignCardToALoyaltyId,\r\n //exportEmbossedCardList\r\n updateCardStatus,\r\n getCardSummary,\r\n getCardByCardNumber,\r\n getCardStock,\r\n getSettingCardConfigurations,\r\n editSettingCard,\r\n createCardDistributionJobs,\r\n createCardPrintJobs,\r\n exportFailedEmbossedCardList\r\n};\r\n","import {\r\n fetchGet,\r\n fetchPost,\r\n fetchPut,\r\n jsonToQueryParam,\r\n fetchDelete,\r\n} from \"./CommonServiceUtils\";\r\n\r\nimport Constants from \"../Constants\";\r\nimport { AccessPermissionModules, AccessPermissionModuleNames } from \"Data\";\r\nimport { getPermissionPath } from \"Utils\";\r\n\r\nconst BASE_URL = `${Constants.BASE_URL}loyaltyservice/`;\r\nconst getMerchantList = ({\r\n limit = 100,\r\n skip = 0,\r\n regionId,\r\n searchKey,\r\n type,\r\n status,\r\n}) => {\r\n return fetchGet(\r\n `${BASE_URL}merchants?${jsonToQueryParam({\r\n limit,\r\n skip: skip,\r\n regionId: regionId,\r\n searchKey,\r\n type,\r\n status,\r\n })}`,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.MERCHANT,\r\n AccessPermissionModules[AccessPermissionModuleNames.MERCHANT]\r\n .actions.ListMerchants\r\n )\r\n );\r\n};\r\nconst archiveMerchant = (id) => {\r\n return fetchDelete(\r\n `${BASE_URL}merchants/${id}`,\r\n null,\r\n null,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.MERCHANT,\r\n AccessPermissionModules[AccessPermissionModuleNames.MERCHANT]\r\n .actions.DeleteMerchant\r\n )\r\n );\r\n};\r\nconst createNewMerchant = (merchantDetails) => {\r\n return fetchPost(\r\n `${BASE_URL}merchants`,\r\n merchantDetails,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.MERCHANT,\r\n AccessPermissionModules[AccessPermissionModuleNames.MERCHANT]\r\n .actions.CreateMerchant\r\n )\r\n );\r\n};\r\n\r\nconst getMerchantById = (merchantId) => {\r\n return fetchGet(\r\n `${BASE_URL}merchants/${merchantId}`,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.MERCHANT,\r\n AccessPermissionModules[AccessPermissionModuleNames.MERCHANT]\r\n .actions.GetMerchant\r\n )\r\n );\r\n};\r\n\r\nconst updateMerchant = (id, payload) => {\r\n return fetchPut(\r\n `${BASE_URL}merchants/${id}`,\r\n payload,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.MERCHANT,\r\n AccessPermissionModules[AccessPermissionModuleNames.MERCHANT]\r\n .actions.UpdateMerchant\r\n )\r\n );\r\n};\r\n\r\nconst getAllMerchants = (args) => {\r\n return new Promise(async (resolve, reject) => {\r\n const limit = 500;\r\n let totalCount = 0,\r\n merchants = [];\r\n try {\r\n do {\r\n const merchantResponse = await getMerchantList({\r\n limit,\r\n skip: merchants.length,\r\n ...args,\r\n });\r\n totalCount = merchantResponse.total;\r\n merchants = [...merchants, ...merchantResponse.items];\r\n } while (merchants.length < totalCount);\r\n resolve(merchants);\r\n } catch (e) {\r\n reject(e);\r\n }\r\n });\r\n};\r\nexport {\r\n getMerchantList,\r\n createNewMerchant,\r\n getMerchantById,\r\n updateMerchant,\r\n archiveMerchant,\r\n getAllMerchants,\r\n};\r\n","import {\r\n fetchGet,\r\n fetchPost,\r\n fetchPut,\r\n jsonToQueryParam,\r\n fetchDelete,\r\n} from \"./CommonServiceUtils\";\r\nimport Constants from \"../Constants\";\r\nimport { getPermissionPath } from \"Utils\";\r\nimport { AccessPermissionModules, AccessPermissionModuleNames } from \"Data\";\r\n\r\nconst BASE_URL = `${Constants.BASE_URL}loyaltyservice/`;\r\n\r\nconst getLocationsForMerchant = ({ limit = 100, skip = 0, ...props }) => {\r\n return fetchGet(\r\n `${BASE_URL}locations?${jsonToQueryParam({ limit, skip, ...props })}`,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.LOCATION,\r\n AccessPermissionModules[AccessPermissionModuleNames.LOCATION].actions\r\n .ListLocations\r\n )\r\n );\r\n};\r\nconst archiveMerchantLocation = (id) => {\r\n return fetchDelete(\r\n `${BASE_URL}locations/${id}`,\r\n null,\r\n null,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.LOCATION,\r\n AccessPermissionModules[AccessPermissionModuleNames.LOCATION].actions\r\n .DeleteLocation\r\n )\r\n );\r\n};\r\nconst editMerchantLocation = (locationId, payload) => {\r\n return fetchPut(\r\n `${BASE_URL}locations/${locationId}`, payload,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.LOCATION,\r\n AccessPermissionModules[AccessPermissionModuleNames.LOCATION].actions\r\n .UpdateLocation\r\n )\r\n );\r\n};\r\nconst addLocation = (payload) => {\r\n return fetchPost(\r\n `${BASE_URL}locations`, payload,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.LOCATION,\r\n AccessPermissionModules[AccessPermissionModuleNames.LOCATION].actions\r\n .CreateLocation\r\n )\r\n );\r\n};\r\n\r\n//retrieve all the locations by applying limit,skip automatically\r\nconst getAllMerchantLocations = (args) => {\r\n return new Promise(async (resolve, reject) => {\r\n const limit = 500;\r\n let totalCount = 0,\r\n merchantLocations = [];\r\n try {\r\n do {\r\n const merchantLocationsResponse = await getLocationsForMerchant({\r\n limit,\r\n skip: merchantLocations.length,\r\n ...args,\r\n });\r\n totalCount = merchantLocationsResponse.total;\r\n merchantLocations = [\r\n ...merchantLocations,\r\n ...merchantLocationsResponse.items,\r\n ];\r\n } while (merchantLocations.length < totalCount);\r\n resolve(merchantLocations);\r\n } catch (e) {\r\n reject(e);\r\n }\r\n });\r\n};\r\nexport {\r\n getLocationsForMerchant,\r\n archiveMerchantLocation,\r\n editMerchantLocation,\r\n addLocation,\r\n getAllMerchantLocations,\r\n};\r\n","import {\r\n fetchGet,\r\n fetchPost,\r\n fetchPut,\r\n jsonToQueryParam,\r\n fetchDelete, fetchPostMultipart,\r\n} from \"./CommonServiceUtils\";\r\nimport Constants from \"../Constants\";\r\nimport { AccessPermissionModules, AccessPermissionModuleNames } from \"Data\";\r\nimport { getPermissionPath } from \"Utils\";\r\n\r\nconst BASE_URL = `${Constants.BASE_URL}loyaltyservice/`;\r\n\r\nconst getAffinityGroups = ({ limit, skip, searchKey, regionId }) => {\r\n return fetchGet(\r\n `${BASE_URL}affinitygroups?${jsonToQueryParam({\r\n limit,\r\n skip,\r\n searchKey,\r\n regionId,\r\n })}`,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.AFFINITY_GROUPS,\r\n AccessPermissionModules[AccessPermissionModuleNames.AFFINITY_GROUPS]\r\n .actions.ListAffinityGroups\r\n )\r\n );\r\n};\r\n\r\nconst getAffinityGroupById = ({ affinityGroupId }) => {\r\n return fetchGet(\r\n `${BASE_URL}affinitygroups/${affinityGroupId}`,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.AFFINITY_GROUPS,\r\n AccessPermissionModules[AccessPermissionModuleNames.AFFINITY_GROUPS]\r\n .actions.ListAffinityGroups\r\n )\r\n );\r\n};\r\n\r\nconst editAffinityGroups = ({ _id, name, benefits, description }) => {\r\n return fetchPut(\r\n `${BASE_URL}affinitygroups/${_id}`,\r\n {\r\n name,\r\n benefits,\r\n description,\r\n },\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.AFFINITY_GROUPS,\r\n AccessPermissionModules[AccessPermissionModuleNames.AFFINITY_GROUPS]\r\n .actions.UpdateAffinityGroup\r\n )\r\n );\r\n};\r\n\r\nconst deleteAffinityGroups = (id) => {\r\n return fetchDelete(\r\n `${BASE_URL}affinitygroups/${id}`,\r\n null,\r\n null,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.AFFINITY_GROUPS,\r\n AccessPermissionModules[AccessPermissionModuleNames.AFFINITY_GROUPS]\r\n .actions.DeleteAffinityGroup\r\n )\r\n );\r\n};\r\n\r\nconst createAffinityAffinityGroup = (newAffinityGroupPayload) => {\r\n return fetchPost(\r\n `${BASE_URL}affinitygroups`,\r\n newAffinityGroupPayload,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.AFFINITY_GROUPS,\r\n AccessPermissionModules[AccessPermissionModuleNames.AFFINITY_GROUPS]\r\n .actions.CreateAffinityGroup\r\n )\r\n );\r\n};\r\n\r\nconst getAllAffinityGroups = (args) => {\r\n return new Promise(async (resolve, reject) => {\r\n const limit = 500;\r\n let totalCount = 0,\r\n affinityGroups = [];\r\n try {\r\n do {\r\n const affinityGroupsResponse = await getAffinityGroups({\r\n limit,\r\n skip: affinityGroups.length,\r\n ...args,\r\n });\r\n totalCount = affinityGroupsResponse.total;\r\n affinityGroups = [\r\n ...affinityGroups,\r\n ...affinityGroupsResponse.items,\r\n ];\r\n } while (affinityGroups.length < totalCount);\r\n resolve(affinityGroups);\r\n } catch (e) {\r\n reject(e);\r\n }\r\n });\r\n};\r\n\r\n\r\nconst getImportedJobLis= (payload) => {\r\n return fetchGet(\r\n `${BASE_URL}affinitygroups/importjobs?${jsonToQueryParam(payload)}`,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.AFFINITY_GROUPS,\r\n AccessPermissionModules[AccessPermissionModuleNames.AFFINITY_GROUPS]\r\n .actions.ListAffinityGroups\r\n )\r\n );\r\n};\r\n\r\nconst importAffinityGroupsJobs = (payload) => {\r\n return fetchPost(BASE_URL + \"affinitygroups/importjobs\", payload,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.TRANSACTION,\r\n AccessPermissionModules[AccessPermissionModuleNames.TRANSACTION]\r\n .actions.CreateTransactionImportJob\r\n )\r\n );\r\n}\r\n\r\nconst getImportedJobLogs= (payload) => {\r\n return fetchGet(\r\n `${BASE_URL}affinitygroups/importjobs/logs?${jsonToQueryParam(payload)}`,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.AFFINITY_GROUPS,\r\n AccessPermissionModules[AccessPermissionModuleNames.AFFINITY_GROUPS]\r\n .actions.ListAffinityGroups\r\n )\r\n );\r\n};\r\n\r\nconst exportAffinityGroupImportedJobLog = (payload) => {\r\n return fetchGet(\r\n `${BASE_URL}affinitygroups/importjobs/logs/export?${jsonToQueryParam(payload)}`,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.MEMBER_NOTE,\r\n AccessPermissionModules[AccessPermissionModuleNames.MEMBER_NOTE].actions\r\n .ListMemberNotes\r\n )\r\n );\r\n}\r\n\r\nconst affinityGroupsFileUpload = (queryObj, fileFormData)=> {\r\n return fetchPostMultipart(`${BASE_URL}affinitygroups/importjobs/uploadfile?${jsonToQueryParam(queryObj)}`,fileFormData);\r\n}\r\nexport {\r\n getAffinityGroups,\r\n editAffinityGroups,\r\n deleteAffinityGroups,\r\n createAffinityAffinityGroup,\r\n getAllAffinityGroups,\r\n getImportedJobLis,\r\n affinityGroupsFileUpload,\r\n importAffinityGroupsJobs,\r\n getImportedJobLogs,\r\n exportAffinityGroupImportedJobLog,\r\n getAffinityGroupById\r\n};\r\n","import {\r\n fetchGet,\r\n jsonToQueryParam,\r\n} from \"./CommonServiceUtils\";\r\nimport Constants from \"../Constants\";\r\nimport { getPermissionPath } from \"../Utils\";\r\nimport { AccessPermissionModuleNames, AccessPermissionModules } from \"../Data\";\r\n\r\nconst BASE_URL = `${Constants.BASE_URL}loyaltyservice/subtransactiontypes`;\r\n\r\nconst getSubTransactionTypes = ({\r\n limit=100,\r\n skip=0,\r\n searchKey,\r\n transactionType,\r\n createdBy,\r\n}) => {\r\n return fetchGet(\r\n `${BASE_URL}?${jsonToQueryParam({\r\n limit,\r\n skip,\r\n searchKey,\r\n transactionType,\r\n createdBy,\r\n })}`,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.SUB_TRANSACTION_TYPE,\r\n AccessPermissionModules[AccessPermissionModuleNames.SUB_TRANSACTION_TYPE]\r\n .actions.ListSubTransactionTypes\r\n )\r\n );\r\n};\r\n\r\nconst getAllSubTransactionTypes=(args)=>{\r\n return new Promise(async (resolve, reject) => {\r\n const limit = 500;\r\n let totalCount = 0,\r\n subTransactionTypes = [];\r\n try {\r\n do {\r\n const subTransactionTypesResponse = await getSubTransactionTypes({\r\n limit,\r\n skip: subTransactionTypes.length,\r\n ...args,\r\n });\r\n totalCount = subTransactionTypesResponse.total;\r\n subTransactionTypes = [\r\n ...subTransactionTypes,\r\n ...subTransactionTypesResponse.items,\r\n ];\r\n } while (subTransactionTypes.length < totalCount);\r\n resolve(subTransactionTypes);\r\n } catch (e) {\r\n reject(e);\r\n }\r\n });\r\n}\r\nexport { getSubTransactionTypes ,getAllSubTransactionTypes};\r\n","import { fetchGet, fetchPut, jsonToQueryParam } from \"./CommonServiceUtils\";\r\nimport Constants from \"../Constants\";\r\n\r\nconst BASE_URL = `${Constants.BASE_URL}loyaltyservice/regions`;\r\n\r\nconst getRegions = ({ limit = 500, skip = 0 }) => {\r\n return fetchGet(`${BASE_URL}?${jsonToQueryParam({ limit, skip })}`);\r\n};\r\n\r\nconst updateRegion=(id,args)=>{\r\n return fetchPut(`${BASE_URL}/${id}`,args);\r\n}\r\n\r\nexport {getRegions,updateRegion};","import { fetchPut, fetchGet, preProcessBodyData } from \"./CommonServiceUtils\";\r\n\r\nimport Constants from \"../Constants\";\r\nimport { AccessPermissionModules, AccessPermissionModuleNames } from \"Data\";\r\nimport { getPermissionPath } from \"Utils\";\r\nconst BASE_URL = `${Constants.BASE_URL}loyaltyservice/organizations`;\r\n\r\nconst getOrganizationDetails = () => {\r\n return fetchGet(\r\n BASE_URL,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.ORGANIZATION,\r\n AccessPermissionModules[AccessPermissionModuleNames.ORGANIZATION]\r\n .actions.GetOrganization\r\n )\r\n );\r\n};\r\nconst editOrganizationDetails = ({\r\n organizationName,\r\n organizationLogoImageUrl,\r\n organizationFavicon,\r\n organizationAppTitle,\r\n address,\r\n configuration,\r\n}) => {\r\n return fetchPut(\r\n BASE_URL,\r\n preProcessBodyData({\r\n organizationName,\r\n organizationLogoImageUrl,\r\n organizationFavicon,\r\n organizationAppTitle,\r\n address,\r\n configuration,\r\n }),\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.ORGANIZATION,\r\n AccessPermissionModules[AccessPermissionModuleNames.ORGANIZATION]\r\n .actions.UpdateOrganization\r\n )\r\n );\r\n};\r\n\r\nexport { getOrganizationDetails, editOrganizationDetails };\r\n","import {\r\n fetchGet,\r\n fetchPut,\r\n fetchPost,\r\n jsonToQueryParam,\r\n fetchPostMultipart,\r\n} from \"./CommonServiceUtils\";\r\nimport Constants from \"../Constants\";\r\nimport { AccessPermissionModules, AccessPermissionModuleNames } from \"Data\";\r\nimport { getPermissionPath } from \"Utils\";\r\n\r\nconst BASE_URL = `${Constants.BASE_URL}loyaltyservice/rewarddistributionjobs`;\r\n\r\n/* Rewards - Logistics */\r\nconst getRewardDistributionJobs = (queryObj) => {\r\n //Query params : limit, skip, regionId, status, batchId, rewardId, createdOnFrom, createdOnTo\r\n return fetchGet(\r\n `${BASE_URL}?${jsonToQueryParam(queryObj)}`,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.REWARD,\r\n AccessPermissionModules[AccessPermissionModuleNames.REWARD].actions\r\n .ListRewardDistributionJobs\r\n )\r\n );\r\n};\r\n\r\n/* Reward distribution jobs */\r\n\r\nconst createRewardDistributionJob = (payload) => {\r\n return fetchPost(\r\n BASE_URL,\r\n payload,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.REWARD,\r\n AccessPermissionModules[AccessPermissionModuleNames.REWARD].actions\r\n .CreateRewardDistributionJob\r\n )\r\n );\r\n};\r\n\r\nconst exportRedemptionLogs = (queryObj) => {\r\n // Query params : distributionJobId\r\n return fetchGet(`${BASE_URL}/getcsv?${jsonToQueryParam(queryObj)}`);\r\n /*TODO:ADD API PERMISSION*/\r\n};\r\n\r\nconst uploadRewardDistributionJobsFile = (queryObj, fileFormData) => {\r\n return fetchPostMultipart(\r\n `${BASE_URL}/uploadfile?${jsonToQueryParam(queryObj)}`,\r\n fileFormData\r\n );\r\n};\r\n\r\nconst importRewardDistributionJobs = (payload) => {\r\n return fetchPost(\r\n BASE_URL + \"/importjobs\",\r\n payload,\r\n true\r\n // TODO: Add permissions.\r\n // getPermissionPath(\r\n // AccessPermissionModuleNames.TRANSACTION,\r\n // AccessPermissionModules[AccessPermissionModuleNames.TRANSACTION]\r\n // .actions.CreateTransactionImportJob\r\n // )\r\n );\r\n};\r\n\r\nconst updategetRewardDistributionLogs = (_id, payload) => {\r\n return fetchPut(\r\n `${BASE_URL}/${_id}`,\r\n payload,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.REWARD,\r\n AccessPermissionModules[AccessPermissionModuleNames.REWARD].actions\r\n .UpdateRewardDistributionJob\r\n )\r\n );\r\n};\r\n\r\nexport {\r\n getRewardDistributionJobs,\r\n createRewardDistributionJob,\r\n updategetRewardDistributionLogs,\r\n exportRedemptionLogs,\r\n uploadRewardDistributionJobsFile,\r\n importRewardDistributionJobs,\r\n};\r\n","import {\r\n fetchGet,\r\n fetchPut,\r\n fetchPost,\r\n fetchDelete,\r\n jsonToQueryParam,\r\n} from \"./CommonServiceUtils\";\r\nimport Constants from \"../Constants\";\r\nimport { getPermissionPath } from \"Utils\";\r\nimport { AccessPermissionModuleNames, AccessPermissionModules } from \"Data\";\r\n\r\nconst BASE_URL = `${Constants.BASE_URL}loyaltyservice/`;\r\nconst JOB_EXECUTIONS = `${BASE_URL}jobexecutions`;\r\nconst JOBS_URL = `${BASE_URL}jobs`;\r\nconst JOB_TYPES_URL = `${BASE_URL}jobtypes`;\r\n\r\n// * Job Executions Endpoints.\r\n// TODO: Add permissions to job executions related endpoints.\r\n\r\n// * Query params: limit, skip, regionId, jobId, status.\r\nconst getJobExecutions = (queryObj) =>\r\n fetchGet(\r\n `${JOB_EXECUTIONS}?${jsonToQueryParam(queryObj)}`, \r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.JOB_EXECUTIONS,\r\n AccessPermissionModules[AccessPermissionModuleNames.JOB_EXECUTIONS].actions\r\n .ListJobExecutions \r\n )\r\n );\r\n\r\n\r\nconst getJobExecutionById = (jobExecutionId) =>\r\n fetchGet(\r\n `${JOB_EXECUTIONS}/${jobExecutionId}`, \r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.JOB_EXECUTIONS,\r\n AccessPermissionModules[AccessPermissionModuleNames.JOB_EXECUTIONS].actions\r\n .GetJobExecution\r\n )\r\n );\r\n\r\nconst getJobExecutionReport = (jobExecutionId) => \r\n fetchGet(\r\n `${JOB_EXECUTIONS}/downloadfile/${jobExecutionId}`, \r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.JOB_EXECUTIONS,\r\n AccessPermissionModules[AccessPermissionModuleNames.JOB_EXECUTIONS].actions\r\n .GetJobExecution \r\n )\r\n );\r\n\r\n// * ---\r\n\r\n// * Jobs Endpoints.\r\n\r\n// * Query params: limit, skip, regionId, jobTypeId, searchKey, status.\r\nconst getJobs = (queryObj) =>\r\n fetchGet(\r\n `${JOBS_URL}?${jsonToQueryParam(queryObj)}`,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.JOBS,\r\n AccessPermissionModules[AccessPermissionModuleNames.JOBS].actions\r\n .ListJobs\r\n )\r\n );\r\n\r\nconst createJob = (payload) =>\r\n fetchPost(\r\n `${JOBS_URL}`,\r\n payload,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.JOBS,\r\n AccessPermissionModules[AccessPermissionModuleNames.JOBS].actions\r\n .CreateJob\r\n )\r\n );\r\n\r\nconst getJobById = (jobId) =>\r\n fetchGet(\r\n `${JOBS_URL}/${jobId}`,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.JOBS,\r\n AccessPermissionModules[AccessPermissionModuleNames.JOBS].actions\r\n .GetJob\r\n )\r\n );\r\n\r\nconst updateJobById = (jobId, payload) =>\r\n fetchPut(\r\n `${JOBS_URL}/${jobId}`,\r\n payload,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.JOBS,\r\n AccessPermissionModules[AccessPermissionModuleNames.JOBS].actions\r\n .UpdateJob\r\n )\r\n );\r\n\r\nconst archiveJob = (jobId) =>\r\n fetchDelete(\r\n `${JOBS_URL}/${jobId}`,\r\n null,\r\n null,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.JOBS,\r\n AccessPermissionModules[AccessPermissionModuleNames.JOBS].actions\r\n .DeleteJob\r\n )\r\n );\r\n\r\n// * ---\r\n\r\n// * Job Types Endpoints.\r\n\r\n// * Query params: limit, skip, searchKey, status.\r\nconst getJobTypes = ({ limit = 100, skip = 0, ...paramsRest }) =>\r\n fetchGet(\r\n `${JOB_TYPES_URL}?${jsonToQueryParam({ limit, skip, ...paramsRest })}`,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.JOB_TYPES,\r\n AccessPermissionModules[AccessPermissionModuleNames.JOB_TYPES]\r\n .actions.ListJobTypes\r\n )\r\n );\r\n\r\nconst getJobByTypeId = (jobTypeId) =>\r\n fetchGet(\r\n `${JOB_TYPES_URL}/${jobTypeId}`,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.JOB_TYPES,\r\n AccessPermissionModules[AccessPermissionModuleNames.JOB_TYPES]\r\n .actions.GetJobType\r\n )\r\n );\r\n\r\nconst updateJobTypeById = (jobTypeId, paylaod) =>\r\n fetchPut(\r\n `${JOB_TYPES_URL}/${jobTypeId}`,\r\n paylaod,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.JOB_TYPES,\r\n AccessPermissionModules[AccessPermissionModuleNames.JOB_TYPES]\r\n .actions.UpdateJobType\r\n )\r\n );\r\n\r\n// * ---\r\n\r\nexport {\r\n getJobExecutions,\r\n getJobExecutionById,\r\n getJobs,\r\n createJob,\r\n getJobById,\r\n updateJobById,\r\n archiveJob,\r\n getJobTypes,\r\n getJobByTypeId,\r\n updateJobTypeById,\r\n getJobExecutionReport,\r\n};\r\n","import { fetchGet, fetchPost, jsonToQueryParam, fetchDelete, fetchPut } from \"./CommonServiceUtils\";\r\nimport Constants from \"../Constants\";\r\nimport { AccessPermissionModules,AccessPermissionModuleNames } from \"Data\";\r\nimport { getPermissionPath } from \"Utils\";\r\n\r\nconst BASE_URL = process.env.REACT_APP_BUILD_VARIANT === 'dev' ? `${Constants.BASE_URL_LOYALTY}anomalyservice/` : `${Constants.BASE_URL}anomalyservice/`;\r\n//const BASE_URL = \"https://loyaltybeta.api.topnotch.club/api/anomalyservice/\"\r\n\r\n/*Rules*/\r\n\r\nconst getRulesList = (queryObj) => {\r\n return fetchGet(`${BASE_URL}rules?${jsonToQueryParam(queryObj)}`,true,getPermissionPath(\r\n AccessPermissionModuleNames.RULE,\r\n AccessPermissionModules[AccessPermissionModuleNames.RULE].actions.ListRules\r\n ));\r\n};\r\n\r\nconst getRulesListById =(id)=> {\r\n return fetchGet(`${BASE_URL}rules/${id}`,true,getPermissionPath(\r\n AccessPermissionModuleNames.RULE,\r\n AccessPermissionModules[AccessPermissionModuleNames.RULE].actions.GetRule\r\n ));\r\n};\r\n\r\nconst createRule = (queryObj) => {\r\n return fetchPost(\r\n `${BASE_URL}rules`, queryObj,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.RULE,\r\n AccessPermissionModules[AccessPermissionModuleNames.RULE].actions\r\n .CreateRule\r\n )\r\n );\r\n};\r\n\r\nconst deleteRule = (id) => {\r\n return fetchDelete(\r\n `${BASE_URL}rules/${id}`,\r\n null,\r\n null,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.RULE,\r\n AccessPermissionModules[AccessPermissionModuleNames.RULE].actions\r\n .DeleteRule\r\n )\r\n );\r\n};\r\n\r\nconst updateRule = (id, payload) => {\r\n return fetchPut(\r\n `${BASE_URL}rules/${id}`,\r\n payload,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.RULE,\r\n AccessPermissionModules[AccessPermissionModuleNames.RULE]\r\n .actions.UpdateRule\r\n )\r\n );\r\n};\r\n\r\n/*Rule Types */\r\n\r\nconst getRuleTypes = (queryObj) => {\r\n return fetchGet(`${BASE_URL}ruletypes?${jsonToQueryParam(queryObj)}`,true,getPermissionPath(\r\n AccessPermissionModuleNames.RULE_TYPE,\r\n AccessPermissionModules[AccessPermissionModuleNames.RULE_TYPE].actions.ListRuleTypes\r\n ));\r\n};\r\n\r\nconst getFraudIncidents = (queryObj) => {\r\n return fetchGet(`${BASE_URL}incidents?${jsonToQueryParam(queryObj)}`,true,getPermissionPath(\r\n AccessPermissionModuleNames.INCIDENT,\r\n AccessPermissionModules[AccessPermissionModuleNames.INCIDENT].actions.ListIncidents\r\n ));\r\n};\r\n\r\nconst getFraudIncidentById =(id)=> {\r\n return fetchGet(`${BASE_URL}incidents/${id}`,true,getPermissionPath(\r\n AccessPermissionModuleNames.INCIDENT,\r\n AccessPermissionModules[AccessPermissionModuleNames.INCIDENT].actions.GetIncident\r\n ));\r\n};\r\n\r\nconst getFraudIncidentTransactions = (queryObj) => {\r\n return fetchGet(`${BASE_URL}incidents/transactions?${jsonToQueryParam(queryObj)}`,true,getPermissionPath(\r\n AccessPermissionModuleNames.INCIDENT,\r\n AccessPermissionModules[AccessPermissionModuleNames.INCIDENT].actions.GetIncident\r\n ));\r\n};\r\n\r\nconst updateFraudIncidentById = (id, payload) => {\r\n return fetchPut(\r\n `${BASE_URL}incidents/${id}`,\r\n payload,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.INCIDENT,\r\n AccessPermissionModules[AccessPermissionModuleNames.INCIDENT]\r\n .actions.UpdateIncident\r\n )\r\n );\r\n};\r\n\r\nconst exportListOfIncidents = (queryObj) => {\r\n return fetchGet(`${BASE_URL}incidents/export?${jsonToQueryParam(queryObj)}`,true,getPermissionPath(\r\n AccessPermissionModuleNames.INCIDENT,\r\n AccessPermissionModules[AccessPermissionModuleNames.INCIDENT].actions.ExportIncidents\r\n ));\r\n};\r\n\r\n\r\nconst exportListOfTransactions = ({incidentId}) => {\r\n return fetchGet(`${BASE_URL}incidents/transactions/export?${jsonToQueryParam({incidentId})}`,true,getPermissionPath(\r\n AccessPermissionModuleNames.INCIDENT,\r\n AccessPermissionModules[AccessPermissionModuleNames.INCIDENT].actions.ExportIncident\r\n ));\r\n};\r\n\r\nexport {\r\n getRulesList,\r\n updateRule,\r\n deleteRule,\r\n createRule,\r\n getRuleTypes,\r\n getFraudIncidents,\r\n getFraudIncidentById,\r\n updateFraudIncidentById,\r\n getRulesListById,\r\n getFraudIncidentTransactions,\r\n exportListOfTransactions,\r\n exportListOfIncidents\r\n};\r\n","import Constants from \"Constants\";\r\nimport { generateUserAttribute, getPermissionPath } from \"Utils\";\r\nimport {\r\n fetchDelete,\r\n fetchGet,\r\n fetchGetWithTotal,\r\n fetchPost,\r\n fetchPut,\r\n jsonToQueryParam,\r\n preProcessBodyData,\r\n} from \"./CommonServiceUtils\";\r\nimport { AccessPermissionModuleNames, AccessPermissionModules } from \"../Data\";\r\n\r\nconst BASE_URL = `${Constants.BASE_URL}loyaltyservice/`;\r\n\r\nconst getCharities = ({\r\n skip = 0,\r\n regionId,\r\n limit,\r\n affinityGroupId,\r\n loyaltyId,\r\n parentMemberId,\r\n sortBy,\r\n searchKey,\r\n tierId,\r\n type,\r\n sortDirection,\r\n projection,\r\n}) => {\r\n return fetchGetWithTotal(\r\n `${BASE_URL}charities?${jsonToQueryParam({\r\n limit,\r\n skip: skip,\r\n regionId,\r\n ...(sortBy ? { sortBy } : {}),\r\n ...(sortDirection ? { sortDirection } : {}),\r\n ...(affinityGroupId ? { affinityGroupId } : {}),\r\n ...(searchKey ? { searchKey } : {}),\r\n ...(type ? { type } : {}),\r\n ...(tierId ? { tierId } : {}),\r\n ...(loyaltyId ? { loyaltyId } : {}),\r\n ...(parentMemberId ? { parentMemberId } : {}),\r\n ...(projection\r\n ? { fields: generateUserAttribute(projection) }\r\n : {}),\r\n })}`,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.CHARITIES,\r\n AccessPermissionModules[AccessPermissionModuleNames.CHARITIES].actions\r\n .ListCharities\r\n )\r\n );\r\n};\r\n\r\nconst getCharityById = (charityId) => {\r\n return fetchGet(\r\n `${BASE_URL}charities/${charityId}`,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.CHARITIES,\r\n AccessPermissionModules[AccessPermissionModuleNames.CHARITIES].actions\r\n .GetCharity\r\n )\r\n );\r\n};\r\n\r\nconst createNewCharity = (payload) => {\r\n return fetchPost(\r\n `${BASE_URL}charities`,\r\n preProcessBodyData(payload),\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.CHARITIES,\r\n AccessPermissionModules[AccessPermissionModuleNames.CHARITIES].actions\r\n .CreateCharity\r\n )\r\n );\r\n};\r\n\r\nconst updateCharity = (id, payload) => {\r\n return fetchPut(\r\n `${BASE_URL}charities/${id}`,\r\n payload,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.CHARITIES,\r\n AccessPermissionModules[AccessPermissionModuleNames.CHARITIES].actions\r\n .UpdateCharity\r\n )\r\n );\r\n};\r\n\r\nconst forgetCharity = (payload) => {\r\n return fetchPost(`${BASE_URL}charities/erase`, payload,true,getPermissionPath(\r\n AccessPermissionModuleNames.CHARITIES,\r\n AccessPermissionModules[AccessPermissionModuleNames.CHARITIES].actions\r\n .EraseCharity\r\n ));\r\n};\r\n\r\nconst exportCharityRequest = (payload) => {\r\n return fetchPost(`${BASE_URL}charities/export`, payload,true,getPermissionPath(\r\n AccessPermissionModuleNames.CHARITIES,\r\n AccessPermissionModules[AccessPermissionModuleNames.CHARITIES].actions\r\n .ExportCharity\r\n ));\r\n};\r\n\r\nconst archiveCharity = (id) => {\r\n return fetchDelete(\r\n `${BASE_URL}charities/${id}`,\r\n null,\r\n null,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.CHARITIES,\r\n AccessPermissionModules[AccessPermissionModuleNames.CHARITIES]\r\n .actions.DeleteCharity\r\n )\r\n );\r\n};\r\n\r\nconst changeCharityAccountStatus = (payload) => {\r\n return fetchPost(\r\n `${BASE_URL}charities/status`,\r\n payload,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.CHARITIES,\r\n AccessPermissionModules[AccessPermissionModuleNames.CHARITIES]\r\n .actions.UpdateCharity\r\n )\r\n );\r\n};\r\n\r\nconst loadAllCharities = (args) => {\r\n return new Promise(async (resolve, reject) => {\r\n const limit = 500;\r\n let totalCount = 0,\r\n charities = [];\r\n try {\r\n do {\r\n const charitiesResponse = await getCharities({\r\n limit,\r\n skip: charities.length,\r\n ...args,\r\n });\r\n totalCount = charitiesResponse.data.total;\r\n charities = [...charities, ...charitiesResponse.data.items];\r\n } while (charities.length < totalCount);\r\n resolve(charities);\r\n } catch (e) {\r\n reject(e);\r\n }\r\n });\r\n};\r\n\r\nexport {\r\n getCharities,\r\n getCharityById,\r\n createNewCharity,\r\n updateCharity,\r\n archiveCharity,\r\n changeCharityAccountStatus,\r\n loadAllCharities,\r\n forgetCharity,\r\n exportCharityRequest\r\n};\r\n","import {\r\n fetchGet,\r\n fetchPost,\r\n jsonToQueryParam,\r\n preProcessBodyData,\r\n} from \"./CommonServiceUtils\";\r\nimport Constants from \"../Constants\";\r\nimport { AccessPermissionModules, AccessPermissionModuleNames } from \"Data\";\r\nimport { getPermissionPath } from \"Utils\";\r\n\r\nconst BASE_URL = `${Constants.BASE_URL}loyaltyservice/klip/`;\r\n\r\nconst findMembersKlip = (queryObj) => {\r\n return fetchGet(\r\n `${BASE_URL}members?${jsonToQueryParam(queryObj)}`,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.KLIP,\r\n AccessPermissionModules[AccessPermissionModuleNames.KLIP].actions\r\n .ListMembers\r\n )\r\n );\r\n};\r\n\r\nconst getContactByIdKlip = (contactId) => {\r\n return fetchGet(\r\n `${BASE_URL}members/${contactId}`,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.KLIP,\r\n AccessPermissionModules[AccessPermissionModuleNames.KLIP].actions\r\n .GetMember\r\n )\r\n );\r\n};\r\n\r\nconst getRedemptionLogsKlip = (queryObj) => {\r\n //Query params :\r\n // limit,\r\n // skip,\r\n // loyaltyId,\r\n // rewardId,\r\n // distributionJobId,\r\n // rewardSubType,\r\n // fromDate,\r\n // toDate,\r\n // searchKey - Not there in API schema\r\n return fetchGet(\r\n `${BASE_URL}redemptionlogs?${jsonToQueryParam(queryObj)}`,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.KLIP,\r\n AccessPermissionModules[AccessPermissionModuleNames.KLIP].actions\r\n .ListRewardRedemptionLogs\r\n )\r\n );\r\n};\r\n\r\nconst getRewardsKlip = (queryObj) => {\r\n //Query params : limit, skip, status, type, portalVisibility, searchKey\r\n return fetchGet(\r\n `${BASE_URL}rewards?${jsonToQueryParam(queryObj)}`,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.KLIP,\r\n AccessPermissionModules[AccessPermissionModuleNames.KLIP].actions\r\n .ListRewards\r\n )\r\n );\r\n};\r\n\r\nconst collectPointsManualBillKlip = (payload) => {\r\n return fetchPost(\r\n BASE_URL + \"points/collect/bill\",\r\n preProcessBodyData(payload),\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.KLIP,\r\n AccessPermissionModules[AccessPermissionModuleNames.KLIP].actions\r\n .CollectPointsBill\r\n )\r\n );\r\n};\r\n\r\nconst collectPointsKlip = (payload) => {\r\n return fetchPost(\r\n BASE_URL + \"points/collect/points\",\r\n preProcessBodyData(payload),\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.KLIP,\r\n AccessPermissionModules[AccessPermissionModuleNames.KLIP].actions\r\n .CollectPointsAmount\r\n )\r\n );\r\n};\r\n\r\nconst redeemRewardKlip = (payload) => {\r\n return fetchPost(\r\n `${BASE_URL}rewardredeem`,\r\n payload,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.KLIP,\r\n AccessPermissionModules[AccessPermissionModuleNames.KLIP].actions\r\n .RedeemReward\r\n )\r\n );\r\n};\r\n\r\nconst redeemPointsWithOtpRequestKlip = (payload) => {\r\n return fetchPost(\r\n BASE_URL + \"points/redeemwithotprequest\",\r\n payload,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.KLIP,\r\n AccessPermissionModules[AccessPermissionModuleNames.KLIP].actions\r\n .RedeemPoints\r\n )\r\n );\r\n};\r\n\r\nconst redeemPointsWithOtpKlip = (payload) => {\r\n return fetchPost(\r\n BASE_URL + \"points/redeemwithotp\",\r\n payload,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.KLIP,\r\n AccessPermissionModules[AccessPermissionModuleNames.KLIP].actions\r\n .RedeemPoints\r\n )\r\n );\r\n};\r\n\r\nconst adjustPointKlip = (payload) => {\r\n return fetchPost(\r\n BASE_URL + \"points/adjust\",\r\n payload,\r\n true,\r\n getPermissionPath(\r\n AccessPermissionModuleNames.KLIP,\r\n AccessPermissionModules[AccessPermissionModuleNames.KLIP].actions\r\n .AdjustPoints\r\n )\r\n );\r\n};\r\n\r\nexport {\r\n findMembersKlip,\r\n getRewardsKlip,\r\n getRedemptionLogsKlip,\r\n getContactByIdKlip,\r\n collectPointsKlip,\r\n collectPointsManualBillKlip,\r\n redeemRewardKlip,\r\n redeemPointsWithOtpRequestKlip,\r\n redeemPointsWithOtpKlip,\r\n adjustPointKlip\r\n};\r\n","import { useState, useCallback } from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst useToggle = (props) => {\r\n const [state, setState] = useState(props);\r\n\r\nreturn [state, useCallback(() => {\r\n setState(state => !state);\r\n},[])];\r\n}\r\n\r\nuseToggle.defaultProps = {\r\n props: false\r\n}\r\nuseToggle.propTypes = {\r\n /**\r\n * Initial boolean value\r\n */\r\n props: PropTypes.bool.isRequired\r\n}\r\nexport default useToggle;","import React from \"react\";\r\n\r\nconst UnauthorizedAccessMessage = ({ text }) => {\r\n return (\r\n \r\n {text || \"You are not authorized to view this content\"}\r\n \r\n );\r\n};\r\n\r\nexport { UnauthorizedAccessMessage };\r\n","import React, {useCallback, useContext, useEffect, useReducer} from \"react\";\r\nimport Medal from \"../assets/images/medal.svg\";\r\nimport Group from \"../assets/images/group.svg\";\r\nimport {\r\n exportFilterMembers,\r\n filterMembers,\r\n getContacts,\r\n getSegmentCategories,\r\n getSegments,\r\n} from \"../Services\";\r\nimport { buildMemberFilterConfig, getMongoDBQuery } from \"../Utils\";\r\nimport {DataContext} from \"./dataContext\";\r\nimport {UserContext} from \"./userContext\";\r\nimport {AccessPermissionModuleNames, AccessPermissionModules} from \"Data\";\r\nimport { toast } from \"react-toastify\";\r\n\r\nconst MembersContext = React.createContext();\r\n\r\nconst resetMemberStatus = {\r\n memberList: [],\r\n limit: 25,\r\n skip: 1,\r\n isLoading: true,\r\n totalCount: 0,\r\n};\r\n\r\nconst initialState = {\r\n segments: {},\r\n selectedSegmentId: null,\r\n sortDirection: \"\",\r\n sortBy: \"\",\r\n isLoadingSegments: true,\r\n segmentCategories: {},\r\n searchText: \"\",\r\n currentFilters: {},\r\n filterConfig: {},\r\n otherCategoryId:'',\r\n selectedLoyaltyCardNumber: \"\",\r\n isExporting: false,\r\n ...resetMemberStatus,\r\n};\r\n\r\nconst MembersContextActions = {\r\n SET_MEMBERS: \"setMembers\",\r\n SET_IS_LOADING: \"setIsLoading\",\r\n SET_IS_EXPORTING: \"setIsExporting\",\r\n UPDATE_MEMBER: \"updateMember\",\r\n SET_SEGMENTS_CATEGORIES: \"setSegmentCategories\",\r\n SET_SEGMENTS: \"setSegments\",\r\n SET_IS_LOADING_SEGMENTS: \"setIsLoadingSegments\",\r\n SEARCHING: \"memberSearching\",\r\n CHANGE_SEARCH_TEXT: \"changeSearchText\",\r\n SET_PAGINATION_INFO: \"setPaginationInfo\",\r\n MEMBER_DATA_RESET: \"memberDataReset\",\r\n SET_SORTING_ORDER: \"setSortingOrder\",\r\n SET_CURRENT_FILTERS: \"setCurrentFilters\",\r\n SET_FILTER_CONFIG: \"setFilterConfig\",\r\n SET_SELECTED_SEGMENT: \"setSelectedSegment\",\r\n UPDATE_SEGMENTS: \"updateSegments\",\r\n SET_CARD_NUMBER: \"setCardNumber\",\r\n};\r\n\r\nconst reducer = (state, action) => {\r\n console.debug(\"Action:\", action);\r\n switch (action.type) {\r\n case MembersContextActions.SET_MEMBERS: {\r\n const newState = {\r\n ...state,\r\n isLoading: false,\r\n memberList: action.members.items,\r\n totalCount: action.members.total,\r\n };\r\n if (action.shouldReset) {\r\n newState.skip = 1;\r\n }\r\n // if (action.shouldReset) {\r\n // // newState.memberList = action.members.items;\r\n // // newState.totalCount = action.members.total;\r\n // newState.skip = 0;\r\n // } else {\r\n // // newState.memberList = [...state.memberList, ...action.members.items];\r\n // //newState.totalCount = action.members.total;\r\n // }\r\n return newState;\r\n }\r\n case MembersContextActions.SET_IS_LOADING: {\r\n return {\r\n ...state,\r\n isLoading: action.status,\r\n };\r\n }\r\n\r\n case MembersContextActions.SET_IS_LOADING_SEGMENTS: {\r\n return {\r\n ...state,\r\n isLoadingSegments: action.status,\r\n };\r\n }\r\n case MembersContextActions.SET_SEGMENTS_CATEGORIES: {\r\n return {\r\n ...state,\r\n isLoadingSegments: false,\r\n // segments: action.segments,\r\n segmentCategories: action.categories || {},\r\n otherCategoryId:action.otherCategoryId || \"\",\r\n };\r\n }\r\n\r\n case MembersContextActions.SET_SEGMENTS: {\r\n return {\r\n ...state,\r\n segments: action.segments,\r\n };\r\n }\r\n\r\n case MembersContextActions.UPDATE_MEMBER: {\r\n return {\r\n ...state,\r\n\r\n memberList: state.memberList.map((item) => {\r\n if (item._id === action.member._id) {\r\n return action.member;\r\n }\r\n return item;\r\n }),\r\n };\r\n }\r\n\r\n case MembersContextActions.CHANGE_SEARCH_TEXT: {\r\n return {\r\n ...state,\r\n searchText: action.searchText,\r\n ...(state.searchText!==action.searchText?{...resetMemberStatus}:{}),\r\n };\r\n }\r\n case MembersContextActions.SET_PAGINATION_INFO: {\r\n const newState = {\r\n ...state,\r\n isLoading: true,\r\n };\r\n if (action.limit) {\r\n newState.limit = action.limit;\r\n } else {\r\n newState.skip = action.skip;\r\n }\r\n return newState;\r\n }\r\n case MembersContextActions.MEMBER_DATA_RESET: {\r\n return {\r\n ...state,\r\n memberList: [],\r\n limit: action.limit,\r\n skip: action.skip,\r\n isLoading: true,\r\n };\r\n }\r\n case MembersContextActions.SET_SORTING_ORDER: {\r\n return {\r\n ...state,\r\n sortDirection: action.sortDirection,\r\n sortBy: action.sortBy,\r\n memberList: [],\r\n skip: 1,\r\n isLoading: true,\r\n };\r\n }\r\n\r\n case MembersContextActions.SET_CURRENT_FILTERS: {\r\n console.debug(JSON.stringify(action.filters));\r\n return {\r\n ...state,\r\n currentFilters: action.filters || {},\r\n searchText: \"\",\r\n ...resetMemberStatus,\r\n };\r\n }\r\n\r\n case MembersContextActions.SET_FILTER_CONFIG: {\r\n return {\r\n ...state,\r\n filterConfig: action.filterConfig,\r\n };\r\n }\r\n\r\n case MembersContextActions.SET_SELECTED_SEGMENT: {\r\n return {\r\n ...state,\r\n selectedSegmentId: action.selectedSegmentId,\r\n currentFilters: action.filters,\r\n searchText: \"\",\r\n ...resetMemberStatus,\r\n };\r\n }\r\n\r\n case MembersContextActions.UPDATE_SEGMENTS: {\r\n return {\r\n ...state,\r\n segments: {\r\n ...state.segments,\r\n [action.segment._id]: action.segment,\r\n },\r\n };\r\n }\r\n case MembersContextActions.SET_CARD_NUMBER: {\r\n return {\r\n ...state,\r\n selectedLoyaltyCardNumber: action.selectedLoyaltyCardNumber,\r\n };\r\n }\r\n case MembersContextActions.SET_IS_EXPORTING: {\r\n return {\r\n ...state,\r\n isExporting: action.status,\r\n };\r\n }\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nlet searchTimeout;\r\n\r\nconst MembersContextProvider = (props) => {\r\n const [state, dispatch] = useReducer(reducer, initialState);\r\n const { isAuth, regionId, config, userConfigLoaded,selectedRegion,isAuthorizedForAction } = useContext(UserContext);\r\n const { contactAttributes,tags,tiers,affinityGroups} = useContext(DataContext);\r\n const loadMembers = useCallback(\r\n async ({ shouldReset = false, skip }) => {\r\n if (\r\n isAuthorizedForAction(\r\n AccessPermissionModuleNames.MEMBER,\r\n AccessPermissionModules[AccessPermissionModuleNames.MEMBER]\r\n .actions.ListMembers\r\n )\r\n ) {\r\n try {\r\n dispatch({\r\n type: MembersContextActions.SET_IS_LOADING,\r\n status: true,\r\n });\r\n\r\n let contactResponse;\r\n const newSkip = ((skip || state.skip) - 1) * state.limit;\r\n //check filters are not empty\r\n if (\r\n state.currentFilters &&\r\n Object.keys(state.currentFilters)?.length > 0\r\n ) {\r\n const filters = getMongoDBQuery(\r\n state.currentFilters,\r\n state.filterConfig\r\n );\r\n /* if(filters.hasOwnProperty('birthDate')){\r\n filters[\"birthDate\"] = moment(moment(filters[\"birthDate\"]).utc().format('YYYY-MM-DD'), \"YYYY-MM-DD\").add(1, 'days').format(\"YYYY-MM-DD\");\r\n }*/\r\n\r\n contactResponse = await filterMembers(\r\n {\r\n skip: newSkip,\r\n limit: state.limit,\r\n ...(state.sortDirection?{ sortDirection:\r\n state.sortDirection?.toUpperCase()}:{}),\r\n ...(state.sortBy?{sortBy:state.sortBy}:{}),\r\n searchKey: state.searchText,\r\n regionId: regionId,\r\n projection: config.memberTableColumns,\r\n },\r\n filters\r\n );\r\n } else {\r\n contactResponse = await getContacts({\r\n skip: newSkip,\r\n regionId: regionId,\r\n limit: state.limit,\r\n sortDirection: state.sortDirection?.toUpperCase(),\r\n sortBy: state.sortBy,\r\n searchKey: state.searchText,\r\n projection: config.memberTableColumns,\r\n });\r\n }\r\n\r\n dispatch({\r\n type: MembersContextActions.SET_MEMBERS,\r\n members: contactResponse.data,\r\n shouldReset,\r\n });\r\n } catch (e) {\r\n console.error(e);\r\n dispatch({\r\n type: MembersContextActions.SET_IS_LOADING,\r\n status: false,\r\n });\r\n }\r\n } else {\r\n dispatch({\r\n type: MembersContextActions.SET_IS_LOADING,\r\n status: false,\r\n });\r\n }\r\n },\r\n [\r\n dispatch,\r\n state.limit,\r\n state.skip,\r\n state.sortDirection,\r\n state.sortBy,\r\n state.searchText,\r\n state.currentFilters,\r\n regionId,\r\n state.filterConfig,\r\n config.memberTableColumns,\r\n isAuthorizedForAction\r\n ]\r\n );\r\n\r\n const resetMember = useCallback(\r\n async ({ skip, pageReset, limit }) => {\r\n if (pageReset) {\r\n await dispatch({\r\n type: MembersContextActions.MEMBER_DATA_RESET,\r\n skip: skip,\r\n limit: limit,\r\n });\r\n }\r\n },\r\n [dispatch]\r\n );\r\n\r\n const onChangePagination = useCallback(\r\n async ({ skip = state.skip, limit = state.limit }) => {\r\n if (state.limit !== limit) {\r\n dispatch({\r\n type: MembersContextActions.SET_PAGINATION_INFO,\r\n limit: limit,\r\n });\r\n } else {\r\n //if skip change, need to load the data manually without resetting\r\n await dispatch({\r\n type: MembersContextActions.SET_PAGINATION_INFO,\r\n skip: skip,\r\n });\r\n loadMembers({ skip: skip });\r\n }\r\n },\r\n [dispatch, state.skip, state.limit, loadMembers]\r\n );\r\n\r\n const setSortingOrder = useCallback(\r\n async ({ sortBy, sortDirection }) => {\r\n try {\r\n if (\r\n !(sortDirection === state.sortDirection) ||\r\n !(sortBy === state.sortBy)\r\n ) {\r\n dispatch({\r\n type: MembersContextActions.SET_SORTING_ORDER,\r\n sortDirection: sortDirection,\r\n sortBy: sortBy,\r\n });\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n dispatch({\r\n type: MembersContextActions.SET_IS_LOADING,\r\n status: false,\r\n });\r\n }\r\n },\r\n [dispatch, state.sortDirection, state.sortBy]\r\n );\r\n\r\n const loadSegmentsCategories = useCallback(\r\n async (silent = false) => {\r\n if (\r\n isAuthorizedForAction(\r\n AccessPermissionModuleNames.SEGMENT,\r\n AccessPermissionModules[AccessPermissionModuleNames.SEGMENT]\r\n .actions.ListSegmentCaregories\r\n )\r\n ) {\r\n try {\r\n if (!silent) {\r\n dispatch({\r\n type: MembersContextActions.SET_IS_LOADING_SEGMENTS,\r\n status: true,\r\n });\r\n }\r\n const segmentCategoriesResponse = await getSegmentCategories(\r\n regionId\r\n );\r\n\r\n const transformedSegmentCategories =\r\n segmentCategoriesResponse.items.reduce(\r\n (result, { _id, name, createdOn, iconUrl }) => {\r\n result[_id] = {\r\n _id,\r\n name,\r\n createdOn,\r\n segmentIds: new Set(),\r\n iconUrl,\r\n };\r\n // segments.forEach((segment) => {\r\n // if (segment) {\r\n // const {\r\n // _id: segmentId,\r\n // name,\r\n // createdOn,\r\n // filters,\r\n // categoryId,\r\n // } = segment;\r\n // result.segments[segmentId] = {\r\n // name,\r\n // createdOn,\r\n // filters,\r\n // categoryId,\r\n // };\r\n // result.categories[_id].segmentIds.add(segmentId);\r\n // }\r\n // return result;\r\n // }, {});\r\n\r\n return result;\r\n },\r\n\r\n {}\r\n );\r\n let otherCategoryId=\"\";\r\n Object.keys(transformedSegmentCategories).forEach((key)=>{\r\n if(transformedSegmentCategories[key].name===\"Other\"){\r\n otherCategoryId=transformedSegmentCategories[key]._id\r\n }})\r\n dispatch({\r\n type: MembersContextActions.SET_SEGMENTS_CATEGORIES,\r\n otherCategoryId:otherCategoryId,\r\n categories: {...transformedSegmentCategories,\r\n tier:{\r\n createdOn: new Date(),\r\n iconUrl: Medal,\r\n name: \"Tier\",\r\n segmentIds: new Set(),\r\n /* tierIds:tiers.map(tier=>tier._id),*/\r\n _id: \"tier.tierId\",\r\n },\r\n affinityGroup:{\r\n createdOn: new Date(),\r\n iconUrl: Group,\r\n name: \"Affinity Group\",\r\n segmentIds: new Set(),\r\n /* affinityGroupIds:affinityGroups.map(affinityGroup=>affinityGroup._id),*/\r\n _id: \"affinityGroup.affinityGroupId\",\r\n }\r\n }\r\n });\r\n } catch (e) {\r\n console.error(e);\r\n if (!silent) {\r\n dispatch({\r\n type: MembersContextActions.SET_IS_LOADING_SEGMENTS,\r\n status: false,\r\n });\r\n }\r\n }\r\n }\r\n },\r\n [regionId,isAuthorizedForAction, dispatch]\r\n );\r\n\r\n const loadSegments = useCallback(async () => {\r\n if (\r\n isAuthorizedForAction(\r\n AccessPermissionModuleNames.SEGMENT,\r\n AccessPermissionModules[AccessPermissionModuleNames.SEGMENT]\r\n .actions.ListSegments\r\n )\r\n ) {\r\n try {\r\n const segmentsResponse = await getSegments(regionId);\r\n if(state.otherCategoryId){\r\n const withoutOtherCategory= segmentsResponse.items.filter(item=>item.categoryId!==state.otherCategoryId)\r\n const otherCategory= segmentsResponse.items.filter(item=>item.categoryId===state.otherCategoryId).map(item=>{\r\n const filter = getMongoDBQuery(\r\n item.filter,\r\n state.filterConfig\r\n );\r\n if(filter&&filter.hasOwnProperty('affinityGroup.affinityGroupId')){\r\n item.categoryId=\"affinityGroup\"\r\n }\r\n if(filter&&filter.hasOwnProperty('tier.tierId')){\r\n item.categoryId=\"tier\"\r\n }\r\n return item\r\n })\r\n dispatch({\r\n type: MembersContextActions.SET_SEGMENTS,\r\n segments: [...otherCategory,...withoutOtherCategory],\r\n });\r\n }\r\n } catch (e) {\r\n dispatch({\r\n type: MembersContextActions.SET_IS_LOADING_SEGMENTS,\r\n status: false,\r\n });\r\n }\r\n }\r\n }, [isAuthorizedForAction,dispatch, regionId, state.otherCategoryId, state.filterConfig]);\r\n\r\n const updateSegments = useCallback(\r\n (/*segment*/) => {\r\n /* dispatch({\r\n type: MembersContextActions.UPDATE_SEGMENTS,\r\n segment,\r\n });\r\n*/ loadSegmentsCategories(true);\r\n //reload categories if the category of the new segment is not available\r\n /* if (!state.segmentCategories[segment.categoryId]) {\r\n loadSegmentsCategories(true);\r\n }*/\r\n },\r\n [loadSegmentsCategories]\r\n );\r\n\r\n const updateMember = useCallback(\r\n (member) => {\r\n dispatch({ type: MembersContextActions.UPDATE_MEMBER, member });\r\n },\r\n [dispatch]\r\n );\r\n\r\n const onChangeSearchText = useCallback(\r\n (searchText) => {\r\n dispatch({\r\n type: MembersContextActions.CHANGE_SEARCH_TEXT,\r\n searchText,\r\n });\r\n },\r\n [dispatch]\r\n );\r\n\r\n const setCurrentFilters = useCallback(\r\n (filters) => {\r\n dispatch({\r\n type: MembersContextActions.SET_CURRENT_FILTERS,\r\n filters,\r\n });\r\n },\r\n [dispatch]\r\n );\r\n\r\n const setFilterConfig = useCallback(\r\n (filterConfig) => {\r\n dispatch({\r\n type: MembersContextActions.SET_FILTER_CONFIG,\r\n filterConfig,\r\n });\r\n },\r\n [dispatch]\r\n );\r\n\r\n const selectSegment = useCallback(\r\n (segment, segmentId) => {\r\n dispatch({\r\n type: MembersContextActions.SET_SELECTED_SEGMENT,\r\n selectedSegmentId: segmentId,\r\n filters: segment.filter,\r\n });\r\n },\r\n [dispatch]\r\n );\r\n\r\n const setSelectedLoyaltyCardNo = useCallback(\r\n (selectedLoyaltyCardNumber) => {\r\n dispatch({\r\n type: MembersContextActions.SET_CARD_NUMBER,\r\n selectedLoyaltyCardNumber,\r\n });\r\n },\r\n [dispatch]\r\n );\r\n\r\n const onExportMembers = useCallback(async (notificationEmails) => {\r\n try {\r\n dispatch({\r\n type: MembersContextActions.SET_IS_EXPORTING,\r\n status: true,\r\n });\r\n await exportFilterMembers(\r\n {\r\n sortDirection:\r\n state.sortDirection?.toUpperCase(),\r\n sortBy: state.sortBy,\r\n regionId: selectedRegion._id,\r\n projection: config.memberTableColumns,\r\n notificationEmails:notificationEmails\r\n },\r\n { ...( (state.currentFilters && Object.keys(state.currentFilters)?.length > 0)\r\n ? getMongoDBQuery(state.currentFilters, state.filterConfig)\r\n : {})},\r\n );\r\n toast.success(\"You will receive the exported file to the provided email\");\r\n } catch (e) {\r\n console.error(e);\r\n toast.error(\r\n \r\n Failed to export member list!\r\n \r\n Error: {e.message || \"Please try again.\"}\r\n
\r\n );\r\n } finally {\r\n dispatch({\r\n type: MembersContextActions.SET_IS_EXPORTING,\r\n status: false,\r\n });\r\n }\r\n }, [selectedRegion, dispatch,config.memberTableColumns,state]);\r\n\r\n useEffect(() => {\r\n if (isAuth && userConfigLoaded) {\r\n loadMembers({ shouldReset: true, skip: 1 });\r\n }\r\n return () => {\r\n if (searchTimeout) {\r\n clearTimeout(searchTimeout);\r\n }\r\n };\r\n //eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [\r\n //add only the dependencies which need to reset the current data\r\n isAuth,\r\n // state.skip,\r\n state.limit,\r\n state.sortBy,\r\n state.sortDirection,\r\n state.currentFilters,\r\n state.searchText,\r\n userConfigLoaded,\r\n config.memberTableColumns,\r\n ]);\r\n\r\n useEffect(() => {\r\n if (isAuth) {\r\n loadSegmentsCategories();\r\n }\r\n //eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [isAuth,tiers,affinityGroups]);\r\n\r\n useEffect(() => {\r\n if (isAuth) {\r\n loadSegments();\r\n }\r\n //eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [isAuth,state.segmentCategories]);\r\n\r\n //auto update filterConfig\r\n useEffect(() => {\r\n if (Object.keys(contactAttributes).length > 0) {\r\n const config = buildMemberFilterConfig(\r\n {...contactAttributes,\"tier.tierId\":{\r\n label: \"Tier\",\r\n type: \"select\",\r\n fieldSettings:tiers.map((tier)=>({\r\n title: tier.name,\r\n value: tier._id\r\n }))\r\n },\"affinityGroup.affinityGroupId\":{\r\n label: \"Affinity Group\",\r\n type: \"select\",\r\n fieldSettings:affinityGroups.map((affinityGroup)=>({\r\n title: affinityGroup.name,\r\n value: affinityGroup._id\r\n }))\r\n }},\r\n tags || []\r\n );\r\n\r\n setFilterConfig(config);\r\n }\r\n //eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [contactAttributes, tags,affinityGroups,tiers]);\r\n\r\n const value = {\r\n ...state,\r\n resetMember,\r\n setSortingOrder,\r\n onChangePagination,\r\n loadMembers,\r\n updateMember,\r\n onChangeSearchText,\r\n loadSegmentsCategories,\r\n setCurrentFilters,\r\n setFilterConfig,\r\n selectSegment,\r\n updateSegments,\r\n loadSegments,\r\n setSelectedLoyaltyCardNo,\r\n onExportMembers,\r\n };\r\n console.debug(\"Member Context:\", state, \"Values : \", value);\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n};\r\n\r\nconst MemberContextConsumer = MembersContext.Consumer;\r\n\r\nexport { MembersContext, MembersContextProvider, MemberContextConsumer };\r\n","export default __webpack_public_path__ + \"static/media/medal.8188b929.svg\";","export default __webpack_public_path__ + \"static/media/group.8f112491.svg\";","import React from 'react';\r\nimport './LoadingComponent.css';\r\n\r\nconst Loading = () => {\r\n return (\r\n \r\n );\r\n};\r\nexport default Loading;","import React, { useReducer, useEffect, useCallback, useContext } from \"react\";\r\nimport { getIdentityUsers, getMerchantList } from '../Services';\r\nimport { UserContext } from './userContext';\r\nimport { AccessPermissionModuleNames, AccessPermissionModules } from \"../Data\";\r\n\r\nconst IdentityUsersContext = React.createContext()\r\n\r\nconst defaultLimit = 25, defaultSkip = 1;\r\n\r\nconst resetIdUserStatus = {\r\n usersList: [],\r\n merchantsList: [],\r\n limit: defaultLimit,\r\n skip: 1,\r\n isLoading: false,\r\n totalCount: 0,\r\n};\r\n\r\nconst initialState = {\r\n selectedFilters: [],\r\n searchText: '',\r\n regionId: '',\r\n merchantId: '',\r\n ...resetIdUserStatus\r\n};\r\n\r\nconst IdentityUsersContextActions = {\r\n SET_ID_USERS: 'setIdUsers',\r\n SET_MERCHANTS: 'setMerchants',\r\n SET_IS_LOADING: 'setIsLoading',\r\n ADD_USER:\"addUser\",\r\n UPDATE_ID_USERS: 'updateIdUser',\r\n ADD_FILTER: 'addFilter',\r\n REMOVE_SELECTED_FILTER: 'removeSelectedFilter',\r\n SEARCHING: 'idUserSearching',\r\n CHANGE_SEARCH_TEXT: 'changeSearchText',\r\n SET_PAGINATION_INFO:\"setPaginationInfo\",\r\n MEMBER_DATA_RESET : \"memberDataReset\"\r\n};\r\n\r\nconst reducer = (state, action) => {\r\n switch (action.type) {\r\n case IdentityUsersContextActions.SET_ID_USERS: {\r\n return {\r\n ...state,\r\n usersList: action.users.items,\r\n isLoading: false,\r\n totalCount: action.users.total,\r\n };\r\n }\r\n\r\n case IdentityUsersContextActions.SET_MERCHANTS: {\r\n return {\r\n ...state,\r\n merchantsList: [...state.merchantsList, ...action.merchants],\r\n isLoading: false,\r\n };\r\n }\r\n\r\n case IdentityUsersContextActions.ADD_USER:{\r\n return {\r\n ...state,\r\n usersList:[action.user,...state.usersList]\r\n }\r\n }\r\n case IdentityUsersContextActions.SET_IS_LOADING: {\r\n return {\r\n ...state,\r\n isLoading: action.status\r\n }\r\n }\r\n case IdentityUsersContextActions.UPDATE_ID_USERS: {\r\n return {\r\n ...state,\r\n usersList: state.usersList.map((item) => {\r\n if (item._id === action.user._id) {\r\n return action.user;\r\n }\r\n return item;\r\n }),\r\n };\r\n }\r\n case IdentityUsersContextActions.ADD_FILTER: {\r\n return {\r\n ...state,\r\n regionId: action.regionId,\r\n merchantId: action.merchantId,\r\n ...resetIdUserStatus\r\n }\r\n }\r\n case IdentityUsersContextActions.REMOVE_SELECTED_FILTER: {\r\n let selectedFilters = [...state.selectedFilters];\r\n if (action.index) {\r\n selectedFilters.splice(action.index, 1);\r\n } else {\r\n selectedFilters = [];\r\n }\r\n return {\r\n ...state,\r\n selectedFilters,\r\n skip: 0,\r\n usersList: [],\r\n isLoading: true\r\n }\r\n }\r\n case IdentityUsersContextActions.CHANGE_SEARCH_TEXT: {\r\n return {\r\n ...state,\r\n searchText: action.searchText,\r\n ...resetIdUserStatus\r\n }\r\n }\r\n case IdentityUsersContextActions.SET_PAGINATION_INFO: {\r\n return {\r\n ...state,\r\n skip:action.skip?action.skip:1,\r\n limit:action.limit?action.limit:state.limit,\r\n isLoading: true\r\n }\r\n }\r\n case IdentityUsersContextActions.MEMBER_DATA_RESET: {\r\n return {\r\n ...state,\r\n usersList: [],\r\n limit:action.limit,\r\n skip:action.skip,\r\n isLoading: true\r\n }\r\n }\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nlet searchTimeout;\r\n\r\nconst IdentityUsersContextProvider = (props) => {\r\n const [state, dispatch] = useReducer(reducer, initialState);\r\n const { isAuth ,selectedRegion,isAuthorizedForAction} = useContext(UserContext);\r\n\r\n const loadIdUsers = useCallback(async (newSearchText) => {\r\n if (\r\n isAuthorizedForAction(\r\n AccessPermissionModuleNames.USERS,\r\n AccessPermissionModules[AccessPermissionModuleNames.USERS]\r\n .actions.ListUsers\r\n )\r\n ) {\r\n try {\r\n dispatch({ type: IdentityUsersContextActions.SET_IS_LOADING, status: true });\r\n const contactResponse = await getIdentityUsers({\r\n limit:state.limit,\r\n skip:(state.skip-1)*state.limit,\r\n searchKey: newSearchText || state.searchText,\r\n regionId: state.regionId,\r\n merchantId: state.merchantId\r\n });\r\n dispatch({\r\n type: IdentityUsersContextActions.SET_ID_USERS,\r\n users: contactResponse.data\r\n });\r\n } catch (e) {\r\n console.error(e);\r\n dispatch({ type: IdentityUsersContextActions.SET_IS_LOADING, status: false });\r\n }\r\n }\r\n }, [dispatch,isAuthorizedForAction, state.skip, state.limit, state.searchText, state.regionId, state.merchantId]);\r\n\r\n const loadMerchants = useCallback(async () => {\r\n if (\r\n isAuthorizedForAction(\r\n AccessPermissionModuleNames.MERCHANT,\r\n AccessPermissionModules[AccessPermissionModuleNames.MERCHANT]\r\n .actions.ListMerchants\r\n )\r\n ) {\r\n try {\r\n dispatch({ type: IdentityUsersContextActions.SET_IS_LOADING, status: true });\r\n const merchantResponse = await getMerchantList({\r\n skip: defaultSkip,\r\n limit: defaultLimit,\r\n regionId:selectedRegion._id\r\n });\r\n dispatch({\r\n type: IdentityUsersContextActions.SET_MERCHANTS,\r\n merchants: merchantResponse.items\r\n });\r\n } catch (e) {\r\n console.error(e);\r\n dispatch({ type: IdentityUsersContextActions.SET_IS_LOADING, status: false });\r\n }\r\n }\r\n }, [isAuthorizedForAction,dispatch,selectedRegion]);\r\n\r\n const resetIdUser = useCallback(async ({skip, pageReset, limit})=>{\r\n if(pageReset) {\r\n await dispatch({\r\n type: IdentityUsersContextActions.MEMBER_DATA_RESET,\r\n skip: skip,\r\n limit: limit\r\n });\r\n }\r\n },[dispatch]);\r\n\r\n const onChangePagination = useCallback(async ({ skip, limit }) => {\r\n await dispatch({\r\n type: IdentityUsersContextActions.SET_PAGINATION_INFO,\r\n skip: skip,\r\n limit: limit\r\n });\r\n },[dispatch]);\r\n\r\n const onChangeSearchText = useCallback(searchText => {\r\n dispatch({\r\n type: IdentityUsersContextActions.CHANGE_SEARCH_TEXT,\r\n searchText,\r\n });\r\n }, [dispatch]);\r\n\r\n const onSetFilters = useCallback((regionId, merchantId) => {\r\n dispatch({\r\n type: IdentityUsersContextActions.ADD_FILTER,\r\n regionId,\r\n merchantId\r\n });\r\n }, [dispatch]);\r\n\r\n const addUserToBeginning=useCallback((user)=>{\r\n dispatch({\r\n type:IdentityUsersContextActions.ADD_USER,\r\n user\r\n })\r\n },[dispatch])\r\n\r\n useEffect(() => {\r\n if (isAuth) {\r\n loadIdUsers();\r\n loadMerchants();\r\n }\r\n return () => {\r\n if (searchTimeout) {\r\n clearTimeout(searchTimeout);\r\n }\r\n }\r\n //eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [isAuth, state.searchText, state.regionId, state.merchantId,state.limit,state.skip]);\r\n\r\n const value = {\r\n ...state,\r\n resetIdUser,\r\n onChangePagination,\r\n onChangeSearchText,\r\n loadIdUsers,\r\n onSetFilters,\r\n addUserToBeginning\r\n };\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n}\r\n\r\nconst IdentityUserContext = IdentityUsersContext.Consumer;\r\n\r\nexport { IdentityUsersContext, IdentityUsersContextProvider, IdentityUserContext };\r\n","const TransactionTypes = {\r\n COLLECTION : \"COLLECTION\",\r\n REDEMPTION : \"REDEMPTION\",\r\n ADJUSTMENT : \"ADJUSTMENT\"\r\n}\r\n\r\nexport default TransactionTypes;","import {sortCaret} from \"../Components/analyticsView/utils/AnalyticsUtility\"\r\nconst ChartColorCodes = {\r\n BLUE: \"#4CADE9\",\r\n DARK_BLUE: \"#11355C\",\r\n GREEN: \"#61CE6C\",\r\n ORANGE: \"#E57F3A\",\r\n PINK: \"#EA369C\",\r\n PURPLE: \"#7C25DA\",\r\n YELLOW: \"#FADF4B\"\r\n};\r\n\r\nconst PieChartsColorCodes = {\r\n REG_BY_REG_METHODS : [ChartColorCodes.GREEN, ChartColorCodes.ORANGE, ChartColorCodes.YELLOW],\r\n REG_BY_ACC_TYPES : [ChartColorCodes.PURPLE, ChartColorCodes.PINK, ChartColorCodes.YELLOW],\r\n REG_BY_GENDER : [ChartColorCodes.BLUE, ChartColorCodes.YELLOW, ChartColorCodes.ORANGE,ChartColorCodes.GREEN],\r\n TIER : [ChartColorCodes.PURPLE, ChartColorCodes.BLUE, ChartColorCodes.GREEN],\r\n AGE : [ChartColorCodes.PURPLE, ChartColorCodes.YELLOW, ChartColorCodes.BLUE, ChartColorCodes.ORANGE, ChartColorCodes.GREEN, ChartColorCodes.PINK, ChartColorCodes.DARK_BLUE],\r\n POINT_EARNING_BY_ACC_TYPES : [ChartColorCodes.PURPLE, ChartColorCodes.PINK, ChartColorCodes.YELLOW],\r\n POINT_EARNING_BY_ACC_AGE : [ChartColorCodes.PURPLE, ChartColorCodes.YELLOW, ChartColorCodes.BLUE, ChartColorCodes.ORANGE, ChartColorCodes.GREEN, ChartColorCodes.PINK, ChartColorCodes.DARK_BLUE],\r\n POINT_EARNING_BY_ACC_GENDER : [ChartColorCodes.BLUE, ChartColorCodes.YELLOW, ChartColorCodes.ORANGE],\r\n POINT_REDEMPTION_BY_ACC_TYPES : [ChartColorCodes.GREEN, ChartColorCodes.YELLOW, ChartColorCodes.ORANGE],\r\n POINT_REDEMPTION_BY_ACC_AGE : [ChartColorCodes.PURPLE, ChartColorCodes.YELLOW, ChartColorCodes.BLUE, ChartColorCodes.ORANGE, ChartColorCodes.GREEN, ChartColorCodes.PINK, ChartColorCodes.DARK_BLUE],\r\n POINT_REDEMPTION_BY_ACC_GENDER : [ChartColorCodes.BLUE, ChartColorCodes.YELLOW, ChartColorCodes.ORANGE],\r\n POINT_ADJUSTMENT_BY_ACC_TYPES : [ChartColorCodes.GREEN, ChartColorCodes.YELLOW, ChartColorCodes.ORANGE],\r\n POINT_ADJUSTMENT_BY_ACC_AGE : [ChartColorCodes.PURPLE, ChartColorCodes.YELLOW, ChartColorCodes.BLUE, ChartColorCodes.ORANGE, ChartColorCodes.GREEN, ChartColorCodes.PINK, ChartColorCodes.DARK_BLUE],\r\n POINT_ADJUSTMENT_BY_ACC_GENDER : [ChartColorCodes.BLUE, ChartColorCodes.YELLOW, ChartColorCodes.ORANGE],\r\n CARD_REGISTRATION : [ChartColorCodes.GREEN, ChartColorCodes.ORANGE],\r\n MERCHANT_POINT_MOVEMENTS : [ChartColorCodes.GREEN, ChartColorCodes.PURPLE]\r\n};\r\n\r\nconst BarChartColorCodes = {\r\n REWARD : ChartColorCodes.PURPLE,\r\n MERCHANT_POINT : ChartColorCodes.GREEN,\r\n MERCHANT_LOCATION_POINT : ChartColorCodes.PURPLE,\r\n MERCHANT_POINT_EARNING : ChartColorCodes.PINK,\r\n MERCHANT_LOCATION_EARNING : ChartColorCodes.PURPLE\r\n};\r\n\r\nconst CardStatusFilter = {\r\n \"All Statuses\" : {\r\n key : \"ALL\"\r\n },\r\n \"Assigned\": {\r\n key : \"ASSIGNED\"\r\n },\r\n \"Deactivated\": {\r\n key : \"DEACTIVATED\"\r\n },\r\n \"Suspended\": {\r\n key : \"SUSPENDED\"\r\n }\r\n};\r\n\r\nconst PointAnalyticsTabs = {\r\n POINT_EARNINGS : \"POINT_EARNINGS\",\r\n POINT_REDEMPTIONS : \"POINT_REDEMPTIONS\",\r\n POINT_ADJUSTMENTS : \"POINT_ADJUSTMENTS\"\r\n};\r\n\r\nconst TransactionType ={\r\n POINT_EARNINGS : \"collections\",\r\n POINT_REDEMPTIONS : \"redemptions\",\r\n POINT_ADJUSTMENTS : \"adjustments\"\r\n}\r\nconst SubTransactionTypeHeader ={\r\n POINT_EARNINGS : \"Point Earning by Sub Transaction Types\",\r\n POINT_REDEMPTIONS : \"Point Redemption by Sub Transaction Types\",\r\n POINT_ADJUSTMENTS : \"Point Adjustment by Sub Transaction Types\"\r\n}\r\n\r\nconst MerchantPointHeader ={\r\n POINT_EARNINGS : \"Point Earning\",\r\n POINT_REDEMPTIONS : \"Point Redemption\",\r\n POINT_ADJUSTMENTS : \"Point Adjustment\"\r\n}\r\n\r\nconst PointAccountTypeHeader ={\r\n POINT_EARNINGS : \"Point Earning by Account Type\",\r\n POINT_REDEMPTIONS : \"Point Redemption by Account Type\",\r\n POINT_ADJUSTMENTS : \" Point Adjustment by Account Type\"\r\n}\r\nconst PointAgeHeader ={\r\n POINT_EARNINGS : \"Point Earning by Age\",\r\n POINT_REDEMPTIONS : \"Point Redemption by Age\",\r\n POINT_ADJUSTMENTS : \"Point Adjustment by Age\"\r\n}\r\nconst BarChartDataProperties ={\r\n POINT_EARNINGS : [\"dateBucketKey\",\"sum\"],\r\n POINT_REDEMPTIONS : [\"dateBucketKey\",\"sum\"],\r\n POINT_ADJUSTMENTS : [\"dateBucketKey\",\"addedPoints\",\"subtractedPoints\"],\r\n REDEMPTIONS_ANALYTICS:[\"dateBucketKey\",\"count\"],\r\n CARD_ACTIVATION : [\"dateBucketKey\",\"keyTagCards\",\"digitalCards\"],\r\n NEW_MEMBERS : [\"dateBucketKey\",\"returnMembers\",\"newMembers\"],\r\n}\r\n\r\nconst MemberRegisterFilter = [\r\n {\r\n value: \"Age\",\r\n label: \"Age\"\r\n },\r\n {\r\n value: \"Gender\",\r\n label: \"Gender\"\r\n }\r\n];\r\n\r\nconst GenderFilter = [\r\n {\r\n value: \"MALE\",\r\n label: \"Male\"\r\n },\r\n {\r\n value: \"FEMALE\",\r\n label: \"Female\"\r\n },\r\n {\r\n value: \"OTHER\",\r\n label: \"Other\"\r\n }\r\n];\r\n\r\nconst AgeGroupFilter = [\r\n {\r\n value: \"0-18\",\r\n label: \"0 - 18\"\r\n },\r\n {\r\n value: \"18-24\",\r\n label: \"18 - 24\"\r\n },\r\n {\r\n value: \"25-34\",\r\n label: \"25 - 34\"\r\n },\r\n {\r\n value: \"35-44\",\r\n label: \"25 - 44\"\r\n },\r\n {\r\n value: \"45-54\",\r\n label: \"45 - 54\"\r\n },\r\n {\r\n value: \"55-64\",\r\n label: \"55 - 64\"\r\n },\r\n {\r\n value: `${encodeURIComponent(\"65+\")}`,\r\n label: \"Above 65\"\r\n },\r\n];\r\n\r\nconst MemberRegistrationGroupByTypes = {\r\n REGISTRATION_METHOD : \"REGISTRATION_METHOD\",\r\n AGE : \"AGE\",\r\n TYPE : \"TYPE\",\r\n BRANCH : \"BRANCH\",\r\n GENDER : \"GENDER\"\r\n};\r\n\r\nconst MemberAffinityGroupByTypes = {\r\n TIER : \"TIER\"\r\n};\r\n\r\nconst MerchantGroupByTypes = {\r\n MERCHANT: \"MERCHANT\",\r\n MERCHANT_LOCATION: \"MERCHANT_LOCATION\",\r\n MEMBER_TYPE: \"MEMBER_TYPE\",\r\n SUB_TRANSACTION_TYPE: \"SUB_TRANSACTION_TYPE\",\r\n AGE: \"AGE\",\r\n GENDER: \"GENDER\"\r\n};\r\nconst AnalyticsTable = {\r\n REWARD_LIST: \"REWARD_LIST\",\r\n AFFINITY_GROUPS: \"AFFINITY_GROUPS\",\r\n TIERS: \"TIERS\",\r\n};\r\nconst AnalyticsTableColumns = {\r\n REWARD_LIST: [\r\n {\r\n dataField: \"name\",\r\n text: \"Reward Name\",\r\n },\r\n {\r\n dataField: \"redeemedCount\",\r\n text: \"Redeemed Count\",\r\n sort: true,\r\n sortCaret: sortCaret\r\n },\r\n {\r\n dataField: \"claimedCount\",\r\n text: \"Claimed Count\",\r\n sort: true,\r\n sortCaret: sortCaret\r\n }\r\n ],\r\n AFFINITY_GROUPS: [\r\n {\r\n dataField: \"name\",\r\n text: \"Affinity Groups\",\r\n },\r\n {\r\n dataField: \"earnedPoints\",\r\n text: \" Earned \",\r\n sort: true,\r\n sortCaret: sortCaret\r\n },\r\n {\r\n dataField: \"redeemedPoints\",\r\n text: \"Redeemed \",\r\n sort: true,\r\n sortCaret: sortCaret\r\n },\r\n {\r\n dataField: \"expiredPoints\",\r\n text: \"Expired \",\r\n sort: true,\r\n sortCaret: sortCaret\r\n }\r\n ],\r\n TIERS: [\r\n {\r\n dataField: \"name\",\r\n text: \"Tiers Name\",\r\n },\r\n {\r\n dataField: \"earnedPoints\",\r\n text: \" Earned \",\r\n sort: true,\r\n sortCaret: sortCaret\r\n },\r\n {\r\n dataField: \"redeemedPoints\",\r\n text: \"Redeemed \",\r\n sort: true,\r\n sortCaret: sortCaret\r\n },\r\n {\r\n dataField: \"expiredPoints\",\r\n text: \"Expired \",\r\n sort: true,\r\n sortCaret: sortCaret\r\n }\r\n ],\r\n};\r\nconst AnalyticsTopListURL = {\r\n REWARD_LIST: \"rewards/redeemedrewards/count\",\r\n AFFINITY_GROUPS: \"tiers/affinitygroups/count\",\r\n TIERS: \"tiers/count\",\r\n};\r\nconst AnalyticsActiveExport = {\r\n POINT_EARNINGS : \"POINT_EARNINGS_EXPORT\",\r\n POINT_REDEMPTIONS : \"POINT_REDEMPTIONS_EXPORT\",\r\n POINT_ADJUSTMENTS : \"POINT_ADJUSTMENTS_EXPORT\",\r\n REWARD_REDEMPTION: \"REWARD_REDEMPTION_EXPORT\",\r\n CARD_ACTIVATION: \"CARD_ACTIVATION_EXPORT\",\r\n LOCATION_BASED_REGISTRATION: \"LOCATION_BASED_REGISTRATION_EXPORT\",\r\n REDEMPTION_BY_MERCHANT: \"REDEMPTION_BY_MERCHANT_EXPORT\",\r\n ADJUSTMENT_BY_MERCHANT: \"ADJUSTMENT_BY_MERCHANT_EXPORT\",\r\n EARNING_BY_MERCHANT: \"EARNING_BY_MERCHANT_EXPORT\",\r\n NEW_MEMBERS_AND_RETURN_MEMBERS: \"NEW_MEMBERS_AND_RETURN_MEMBERS_EXPORT\",\r\n};\r\nconst ExportURLparam = {\r\n POINT_EARNINGS_EXPORT:[\"dateFrom\",\"dateTo\",\"groupBy\"],\r\n POINT_REDEMPTIONS_EXPORT:[\"dateFrom\",\"dateTo\",\"groupBy\"],\r\n POINT_ADJUSTMENTS_EXPORT:[\"dateFrom\",\"dateTo\",\"groupBy\"],\r\n REWARD_REDEMPTION_EXPORT:[\"dateFrom\",\"dateTo\",\"rewardId\"],\r\n NEW_MEMBERS_AND_RETURN_MEMBERS_EXPORT:[\"transactionsFrom\",\"transactionsTo\",\"rewardId\"],\r\n LOCATION_BASED_REGISTRATION_EXPORT:[\"registrationsFrom\",\"registrationsTo\"],\r\n REDEMPTION_BY_MERCHANT_EXPORT:[\"dateFrom\",\"dateTo\"],\r\n ADJUSTMENT_BY_MERCHANT_EXPORT: [\"dateFrom\",\"dateTo\"],\r\n EARNING_BY_MERCHANT_EXPORT: [\"dateFrom\",\"dateTo\"],\r\n CARD_ACTIVATION_EXPORT:[\"dateFrom\",\"dateTo\"],\r\n}\r\nconst AnalyticsExportURL = {\r\n POINT_EARNINGS_EXPORT : \"merchants/transactions/collections/series/export\",\r\n POINT_REDEMPTIONS_EXPORT : \"merchants/transactions/redemptions/series/export\",\r\n POINT_ADJUSTMENTS_EXPORT : \"merchants/transactions/adjustments/series/export\",\r\n REWARD_REDEMPTION_EXPORT : \"rewards/redeemedrewards/series/export\",\r\n CARD_ACTIVATION_EXPORT:\"cards/activationsummary/export\",\r\n LOCATION_BASED_REGISTRATION_EXPORT:\"members/registration/counts/export\",\r\n REDEMPTION_BY_MERCHANT_EXPORT:\"merchants/transactions/redemptions/counts/export\",\r\n ADJUSTMENT_BY_MERCHANT_EXPORT: \"merchants/transactions/adjustments/counts/export\",\r\n EARNING_BY_MERCHANT_EXPORT: \"merchants/transactions/collections/counts/export\",\r\n NEW_MEMBERS_AND_RETURN_MEMBERS_EXPORT:\"members/new-return/series/export\",\r\n AFFINITY_GROUPS: \"tiers/affinitygroups/count/export\",\r\n TIERS: \"tiers/count/export\",\r\n REWARD_LIST: \"rewards/redeemedrewards/count/export\",\r\n};\r\n\r\nconst AnalyticsActiveView = {\r\n CARD_ANALYTICS:\"CARD_ANALYTICS\",\r\n MEMBER_ANALYTICS:\"MEMBER_ANALYTICS\",\r\n MERCHANT_ANALYTICS:\"MERCHANT_ANALYTICS\",\r\n REWARD_ANALYTICS:\"REWARD_ANALYTICS\",\r\n TIER_ANALYTICS:\"TIER_ANALYTICS\"\r\n};\r\nexport {\r\n ChartColorCodes,\r\n PieChartsColorCodes,\r\n BarChartColorCodes,\r\n CardStatusFilter,\r\n PointAnalyticsTabs,\r\n MemberRegisterFilter,\r\n AgeGroupFilter,\r\n GenderFilter,\r\n MemberRegistrationGroupByTypes,\r\n MemberAffinityGroupByTypes,\r\n MerchantGroupByTypes,\r\n TransactionType,\r\n SubTransactionTypeHeader,\r\n MerchantPointHeader,\r\n PointAccountTypeHeader,\r\n PointAgeHeader,\r\n BarChartDataProperties,\r\n AnalyticsTable,\r\n AnalyticsTableColumns,\r\n AnalyticsTopListURL,\r\n AnalyticsExportURL,\r\n AnalyticsActiveExport,\r\n ExportURLparam,\r\n AnalyticsActiveView\r\n}\r\n","import React from \"react\";\r\nimport { AlertBoxConfirm } from '@shoutout-labs/shoutout-themes-enterprise';\r\n\r\nconst ConfirmBox = (props) => {\r\n \r\n const { show, onHide, confirmCallback, title, message, disableActions = false, variant } = props;\r\n\r\n return (\r\n \r\n );\r\n \r\n};\r\n\r\nexport default ConfirmBox;","import React, { useCallback } from \"react\";\r\nimport {\r\n SideNavigationBar,\r\n} from \"@shoutout-labs/shoutout-themes-enterprise\";\r\nimport { useHistory } from \"react-router-dom\";\r\n// import \"./Navigation.scss\";\r\n\r\nconst NavigationLink = ({ path, tab, icon, activePath, onclick }) => {\r\n const history = useHistory();\r\n const onClickTab = useCallback(() => {\r\n if (onclick) {\r\n onclick(path);\r\n } else {\r\n history.push(path);\r\n }\r\n }, [history, path, onclick]);\r\n return (\r\n <>\r\n \r\n {/* \r\n \r\n \r\n {tab}\r\n \r\n */}\r\n \r\n >\r\n );\r\n};\r\n\r\nexport default NavigationLink;\r\n"],"sourceRoot":""}