{"version":3,"sources":["Utils/MemberFilterUtils.js","Utils/StringUtils.js","Utils/ObjectUtils.js","Utils/ContactAttributesUtils.js","Utils/FaviconUtils.js","Utils/SiteTitleUtil.js","Utils/DownloadLinkUtil.js","Utils/DateUtils.js","Utils/IdentityUtils.js","Utils/NumberUtils.js","Utils/ArrayUtils.js","Contexts/userContext.js","Components/cards/instantCards/shared/NameIconTemplate.js","Components/analyticsView/utils/AnalyticsUtility.js","Components/navigation/Navigation.js","assets/images/logo_full_blue.png","Components/home/Home.js","Components/login/Login.js","Components/system/initFailed/index.js","AuthRoute.js","CustomRoute.js","App.js","reportWebVitals.js","ErrorBoundary.js","index.js","Data/CardGenerateJobStatus.js","Contexts/index.js","FaICIconMap.js","assets/images/shoutout_logo.png","AppContext.js","assets/images/dilmah/dilmah.svg","Data/MemberData.js","Components/merchants/utils/MerchantUtility.js","Constants.js","Contexts/dataContext.js","Components/utils/table/BootstrapTableOverlay.js","Components/utils/DateRangeSelector.js","Data/IdentityUserBoundaryType.js","Contexts/keycloakAuthServiceContext.js","Data/CardTypes.js","Data/TransportTypes.js","Data/CardStatus.js","Data/AccountStatus.js","Data/cardSuspendReasons.js","Data/FraudIncidentStatus.js","Data/AuditLogData.js","Data/PointRuleData.js","Data/CardSettingTypes.js","Data/InstantCardData.js","Data/MerchantData.js","Data/TransactionTabs.js","Data/DaysOfWeek.js","Data/accessControl/AccessPermissionTypes.js","Data/TransactionStatus.js","Data/UserTypes.js","Data/RewardData.js","Data/CALMilesData.js","Data/UserStatus.js","Data/DatePeriods.js","Data/accessControl/AccessPermissionModules.js","Data/MessageLogData.js","Data/NotificationTemplatesTypes.js","Data/NotificationStatus.js","Data/NotificationTemplates.js","Data/FraudRulesStatus.js","Data/JobData.js","Services/CommonServiceUtils.js","Services/PointService.js","Services/RewardService.js","Services/TierService.js","Services/TransactionService.js","Services/UtilServices.js","Services/ShoutOUTLoyaltyService.js","Services/ShoutOUTIdentityService.js","Services/CoreService.js","Services/AccountService.js","Services/DashboardService.js","Services/NotificationService.js","Services/AnalyticsService.js","Services/CardManagementService.js","Services/MerchantServices.js","Services/MerchantLocationService.js","Services/AffinityGroupsServices.js","Services/SubTransactionTypesService.js","Services/RegionsService.js","Services/OrganizationServices.js","Services/RewardDistributionService.js","Services/JobServices.js","Services/AnomalyDetectionService.js","Services/CharityService.js","Services/KlipService.js","Hooks/toggleState.js","Components/utils/unauthorizedAccessAlert/UnauthorizedAccessMessage.js","Contexts/membersContext.js","assets/images/medal.svg","assets/images/group.svg","Components/utils/LoadingComponent.js","Contexts/identityUsersContext.js","Data/TransactionTypes.js","Data/AnalyticsData.js","Components/utils/ConfirmBox.js","Components/navigation/NavigationLink.js"],"names":["VanillaTextWidget","Widgets","VanillaSelectWidget","VanillaDateWidget","VanillaNumberWidget","BasicConfig","operators","InitialConfig","proximity","equal","label","not_equal","like","not_like","is_empty","is_not_empty","less","less_or_equal","greater","greater_or_equal","array_empty","reversedOp","labelForFormat","cardinality","formatOp","field","_op","value","_valueSrc","_valueType","opDef","mongoFormatOp","op","$exist","$size","greater_than_days","jsonLogic","$gt","less_than_days","$lt","greater_than_months","$expr","less_than_months","greater_than_years","less_than_years","month_is","day_is","$eq","year_is","array_not_empty","$not","types","date","widgets","text","factory","props","allowNew","clearButton","select","type","valueSrc","dateFormat","valueFormat","operator","min","max","settings","maxNesting","maxNumberOfRules","showErrorMessage","showNot","buildMemberFilterConfig","contactAttributes","tags","attributes","Object","entries","reduce","result","key","values","length","useAsyncSearch","useLoadMore","forceAsyncSearch","allowCustomValues","asyncFetch","search","map","item","title","hasMore","fieldSettings","listValues","valueSources","tag_key","showSearch","fields","getMongoDBQuery","filters","config","filterData","QbUtils","checkTree","loadTree","mongodbFormat","generateUserAttribute","projection","push","toTitleCase","upper","newStr","str","replace","trim","i","l","toUpperCase","toLowerCase","toTitleCaseFromCamelCase","charAt","slice","toReplaceSpaceWithHyphen","convertToSnakeCase","split","join","toTitleCaseFromSnakeAndCamel","snakeCase","capitalizeOnlyFirstLetterOfString","isEqualObjects","a","b","s","o","sort","JSON","stringify","isEmptyObject","object","keys","removeKeysFromObject","obj","console","debug","keyName","includes","Array","isArray","getValueFromObject","path","r","k","objectToLabelValueArray","items","getNonSystemAttributes","created_by","_delete_protected","_email_valid","_mobile_number_valid","owner_id","historyEvents","identifications","partnerApi","rest","setFavicon","url","link","document","querySelector","createElement","rel","getElementsByTagName","appendChild","href","setSiteTitle","downloadLink","click","SettingsReportmonths","TimeOfDayValues","formatToCommonReadableFormat","moment","format","formatToCommonReadableFormatDateOnly","formatToCommonFormat","getSuffixForDayOfMonth","day","dayType1","Number","dayType2","convertTimeFrom12HTo24H","time","toString","convertTimeFrom24HTo12H","getNextExecutionDate","daily","isEndOfMonth","dayOfMonth","executionTimeToDate","nextExecution","diff","add","nextDate","executionMonth","endOf","startOf","dateOfMonth","nextMonth","getPermissionPath","moduleName","permission","numeral","nullFormat","percentageConverter","total","amount","toFixed","convertNumberFormat","areArraysEquals","arr1","arr2","isObjectArr","every","val","index","UserContext","React","createContext","UserContextActions","initialState","userBoundaryType","UserBoundaryType","ROOT","boundaryMerchantId","regionId","selectedRegion","organization","organizationName","organizationLogoImageUrl","address","street","city","zip","regions","isRunningSystemInit","systemInitFailMessage","memberTableColumns","userConfigLoaded","systemModules","isLoadingModules","userPermissions","loggedUser","userProfileLoadCompleted","userRegions","reducer","state","action","data","boundary","message","status","find","_id","modules","userInfo","constantMock","window","fetch","UserContextProvider","withRouter","useReducer","dispatch","useContext","KeycloakContext","logout","keycloakLogout","keycloakLogin","login","authComplete","loadUserProfile","useKeycloak","keycloak","initialized","isAuth","authenticated","userPermissionPolicies","useMemo","policies","enabledAll","AccessPermissionModules","actions","inititalUserPermissionPolicies","forEach","permissions","group","policy","body","headers","token","isAuthorizedForAction","toast","error","Promise","reject","apply","this","response","userStateUpdateTimeout","loadProfile","useCallback","getProfile","profileResponse","actionName","onUserStateChange","AccessPermissionModuleNames","USER_DATASET","CreateDataset","clearTimeout","setTimeout","postUserDataset","datasetKey","updateColumnState","ListDatasets","getUserDataset","columnState","columnTableState","parse","datasetValue","loadOrganization","ORGANIZATION","GetOrganization","getOrganizationDetails","organizationResponse","organizationFavicon","organizationAppTitle","onSelectRegion","sessionStorage","setItem","loadModules","MODULES","ListModules","getModules","loadRegions","REGION","ListRegions","getRegions","limit","skip","regionResponse","loadUserInfo","useEffect","getItem","username","email","Provider","children","Consumer","NameIconTemplate","name","icon","className","convertDataToPieChartFormat","dataset","valueTwo","dataItem","tier","convertDataToVBarChartFormat","el","preVal","currVal","concat","assign","convertDataToTreeMapDiskChart","nodeOrder","CardGenerateJobStatus","NEW_REQUEST","PENDING","PRINTING","COMPLETED","totalCount","parseInt","count","elements","cardStatus","processingStatus","x","y","left","top","style","fontSize","fontWeight","stroke","getCalendarRange","startDate","endDate","properties","unit","visualFormat","rangeElement","dateBucketKeyMap","dateBucketKey","dummyObject","range","Date","sortAscendingOrder","fromDate","toDate","barChartData","dateBucket","subtractTwoDays","selection","diffDuration","duration","days","years","weeks","months","sortCaret","order","CustomSidebarMainToggle","eventKey","onSelect","onClick","NavLink","Navigation","location","useLocation","history","useHistory","region","DataContext","rewards","isLoadingPartnerRewards","useState","activeEventKey","setActiveEventKey","navList","isNotAMerchantUser","MERCHANT","tab","faUserAlt","faSearch","POINT_RULES","ListPointRules","faCoins","REWARD","ListRewards","faGift","secondaryLinks","ListRewardRedemptionLogs","reward","faPostcard","CARD","ListCards","faMoneyBillStack","CreateCardBatchJob","ListCardBatchJobs","faPlusCircle","faMedal","TIER","ListTiers","faDollarSign","TRANSACTION","ListTransactions","faHistoryAlt","ListTransactionImportJobs","CreateTransactionImportJob","faFileImport","ListStagedTransaction","faSyncExclamation","faStore","faBell","NOTIFICATION","ListNotificationLogs","ListNotifications","faChart","faUsers","faLock","faSuitcase","faSlidersV","faSetting","faLockAccess","faShare","faUser","navigateTo","e","stopPropagation","preventDefault","currentTarget","getAttribute","onSetActiveEventKey","isGlobalSettings","pathname","logo","bsPrefix","faGlobe","size","disabled","regionIconUrl","src","alt","regionName","activeKey","Collapse","Item","Link","active","NavigationLink","activePath","MembersPage","lazy","TiersPage","TransactionsPage","MyProfilePage","CreateTierPage","NotificationPage","CardsPage","ControlPanelPage","PointRulesPage","FindMembersPage","MerchantsPage","RedemptionsPage","AnalyticsPage","FraudulencePage","JobsPage","Home","encodeURIComponent","startsWith","fallback","render","qs","ignoreQueryPrefix","to","exact","component","LoginPage","origin","variant","role","SystemInitFailedMessage","Dialog","centered","Body","ShInformationCircleOutline","AuthRoute","Component","routeName","CustomRoute","App","datadogRum","init","sampleRate","trackInteractions","defaultPrivacyLevel","AppContext","dataDogConfig","startSessionReplayRecording","stopSessionReplayRecording","position","transition","Slide","theme","pauseOnFocusLoss","reportWebVitals","onPerfEntry","Function","then","getCLS","getFID","getFCP","getLCP","getTTFB","ErrorBoundary","errorInfo","setState","componentStack","hasError","ReactDOM","getElementById","PRINTED","DISPATCHED","FAILED","context","process","keycloakConfig","baseUrl","baseUrlLoyalty","BASE_URL_LOYALTY","applicationId","clientToken","site","service","env","version","MemberStatus","ACTIVE","SUSPENDED","ARCHIVED","MemberTypes","PRIMARY","SECONDARY","CHARITY","PreferredContactMethods","Email","Mobile","EmailAndMobile","IdTypeSelector","id","IdentificationNumbersLabelColors","PASSPORT","DRIVER_LICENSE","NATIONAL_ID","AddPointsTabs","BILL","POINTS","convertArrayToObject","array","setValue","optionsToArray","options","option","OPTOUT_TEMPLATES","Params","BASE_URL","TRANSPORT_SMS","TRANSPORT_WHATSAPP","TRANSPORT_MESSENGER","MAX_SMS_LENGTH","MAX_SMS_PAGES","TRANSPORT_EMAIL","CAMPAIGN_BROADCAST","CAMPAIGN_TRIGGER","CONTACTS_LOAD_BATCH_SIZE","CAMPAIGN_STATUS","RUNNING","showReport","enabledDelete","SCHEDULED","REJECTED","REVIEWING","CREATING","INSUFFICIENT_CREDITS","chargingFailed","FINISHED","LISTENING","EVENT_TEMPLATES","DEFAULT","LOYALTY_POINT_COLLECTED","LOYALTY_POINT_REDEEMED","LOYALTY_REGISTERED","LOYALTY_REWARD_REDEEMED","ENGAGEMENT_CAMPAIGN_CREATED","ENGAGEMENT_COUPON_ISSUED","ENGAGEMENT_FORM_RESPONSE","ENGAGEMENT_CUSTOM_EVENT","MESSAGE_INCOMING_SMS","MESSAGE_OUTGOING_SMS","MESSAGE_OUTGOING_EMAIL","MESSAGE_INCOMING_EMAIL","LOG_STATUS_MAP","MSG_STATUS_TO_CODE_MAP","ALL_SEGMENT","segment","RESERVED_ATTRIBUTES","ENGAGE_APP_URL","LOYALTY_APP_URL","CAMPAIGN_PROGRESS_STATUS","IN_PROGRESS","SUCCESS","SHORT_URL_DOMAIN","BUILD_APP","REACT_APP_PRODUCT","APP_LOYALTY","APP_ENGAGEMENT","APP_LITE","APP_COLLECT","APP_GAMIFICATION","INTEGRATION_APPS","FACEBOOK_MESSENGER","faFacebookMessenger","description","FACEBOOK_LEAD_AD","faFacebook","SHOUTOUT_FORM","TYPEFORM_APP","faWpforms","SHOUTOUT_POLL","WHATSAPP","SMS_OPTOUT","TYPE_TRANSACTIONAL","TYPE_BOTH","TYPE_PROMOTIONAL","TEMPLATE1","TEMPLATE2","TEMPLATE3","COUNTRIES","template","mobileNumber","keyword","optoutKeywordRequired","activityTypes","REGISTER_LOYALTY","templateId","COLLECT_POINTS","REDEEM_POINTS","REDEEM_REWARD","CLAIMED_REWARD","COUPON_ISSUED","ignoredAttributes","Set","points","enableEdit","isLoading","isLoadingContactAttributes","isLoadingTiers","tiers","merchants","merchantLocations","affinityGroups","isLoadingAffinityGroups","partnerRewardConfigs","isLoadingSubTransactionTypes","subTransactionTypes","isLoadingCharities","charities","isLoadingJobTypes","jobTypes","jsonSchemaForJobTypes","usersList","DataContextActions","isLoadingRegions","users","has","locations","groups","configs","subTransactionTypesRes","charitiesResponse","activeJobTypes","jsonSchema","DataContextProvider","loadIdUsers","USERS","ListUsers","getIdentityUsers","contactResponse","setTier","newTier","loadTiers","getTiers","tiersResponse","loadPartnerRewards","query","RewardStatus","ENABLED","subType","RewardSubType","PARTNER","getRewards","rewardsResponse","configsArray","partnerRewardMetadata","partnerRewardConfig","loadContactAttributes","ATTRIBUTE","ListAttributes","getContactAttributes","contactAttributeResponse","hasOwnProperty","notificationPreference","attribute","customAttributes","pointsToExpire","requestLoadMerchantLocations","merchantId","LOCATION","ListLocations","resolve","requestObject","getAllMerchantLocations","locationsResponse","locationsObject","locationName","code","loadMerchants","ListMerchants","getAllMerchants","refreshMerchantsData","loadAffinityGroups","AFFINITY_GROUPS","ListAffinityGroups","getAllAffinityGroups","affinityGroupResponse","loadAllSubTransactions","SUB_TRANSACTION_TYPE","ListSubTransactionTypes","getAllSubTransactionTypes","loadCharities","CHARITIES","ListCharities","payload","loadAllCharities","loadJobTypes","JOB_TYPES","ListJobTypes","getJobTypes","JobTypesStatus","jobTypesResponse","metadata","BootstrapTableOverlay","createStaticRanges","subtract","loading","LoadingComponent","GLOBAL","REGIONAL","KeycloakContextActions","UPDATE_TOKEN","keycloakInstance","Keycloak","KeycloakContextProvider","authEventHandler","event","SET_IS_AUTH","authTokenHandler","authClient","onEvent","onTokens","CardTypes","DIGITAL","INSTANT","EMBOSSED","KEY_TAG","REGULAR","REGULAR_CARD_AND_KEY_TAG","Types","SMS","Constants","EMAIL","CardStatus","ASSIGNED","DEACTIVATED","READY","AccountStatus","CardSuspendReasons","LOST","DAMAGED","STOLEN","OTHER","FraudIncidentStatus","RESOLVED","AuditOperation","CREATE","UPDATE","DELETE","READ","PointRuleTypes","TRANSACTIONAL","NON_TRANSACTIONAL","PointRuleSubTypes","GENERAL","faCreditCard","faHome","SEASONAL","faCalendar","AFFINITY","ENROLL","SIGNUP","faUserPlus","BIRTHDAY","PointRuleStatus","DISABLED","PointRuleStates","EXPIRED","AffinityGroupOptions","ENTIER","TIERS","Occasions","NONE","FOREVER","PERIOD","LocationSeasonalSubTypes","OccasionWithDates","OccasionWithDays","PointRuleStatusColorCode","CardSettingTypes","InstantCardsStatus","CARD_STOCK","CARD_DISTRIBUTION","CARD_PRINTING","JobURLParams","ExportJobURLParams","cardDistributionStatus","DISTRIBUTE","PROCESSING","cardPrintingStatus","GENERATE","cardDistributionTab","cardPrintingTab","defaultColumns","dataField","UilStore","headerStyle","width","UilCreditCard","UilTransaction","UilSpinner","columnsItemGoingToChange","batchJobIdType","nextStatus","nextStep","faPrint","faCheck","faDispatch","MerchantTypes","MerchantProfileTabs","REPORT","INTEGRATIONS","CONTACT_DETAILS","LOCATIONS","TRANSACTIONS","MerchantStatus","NearestLocationStatus","MerchantOptions","MerchantPickUpLocationOptions","LocationEnableForTransactionOptions","MerchantLocationStatus","MerchantTransactionFilter","MerchantTransactionType","MerchantTypesObj","MerchantStatusObj","MerchantLocationStatusObj","MerchantTransactionTypeObj","MerchantLocationPickUpObj","MerchantTypeColorCode","EXTERNAL","INTERNAL","MerchantTypeTextColorCode","MerchantStatusColorCode","DRAFT","NearestLocationStatusColorCode","NearestLocationStatusTextColorCode","MerchantStatusTextColorCode","MerchantLocationStatusColorCode","MerchantLMerchantTransactionTypeColorCode","ADJUSTMENT","color","backgroundColor","COLLECTION","REDEMPTION","DatePeriods","selectedTimePeriod","TransactionTabs","TRANSACTION_HISTORY","IMPORT_TRANSACTIONS","INVALID_TRANSACTIONS","ANOMALY_TRANSACTIONS","DaysOfWeek","PermissionTypes","WRITE","TransactionStatus","VALID","INVALID","InvalidTransactionStatus","PENDING_ACTION","DISCARDED","InvalidTransactionStatusVariant","UserTypes","USER","CLIENT","RewardsHeaderTabs","REWARD_POOL","REWARD_LOGISTICS","RewardType","TANGIBLE","VOUCHER","RewardPointValueType","STATIC","BUNDLE","ValidityPeriod","FIXED","OPEN","RewardValidity","NO_EXPIRY","PortalVisibility","PARTNER_AND_CUSTOMER","PARTNER_ONLY","CUSTOMER_ONLY","DailyRedemptionLimit","UNLIMITED","LIMITED","TopUpMethod","GENERATED","methodValue","UPLOAD","MANUAL","TopUpStatus","RewardPickUp","ALL_LOCATIONS","SELECTED_LOCATIONS","RewardGenerationJobStatus","RewardGenerationJobGroups","INDIVIDUAL","BATCHES","RedemptionStatus","REQUESTED","CLAIMED","CANCELLED","REFUNDED","RewardRedemptionProcessStatus","DISPATCH","COMPLETE","FAIL","RefundStatus","RewardTabValues","LOCKED","REDEEMED","UNLOCKED","RedeemedRewardsSubTabValues","ALL","PROCESSING_COMPLETED","RewardSubTypeColorCode","PortalVisibilityColorCode","PortalVisibilityTextColorCode","RewardStatusColorCode","RewardStatusTextColorCode","RedemptionLogStatusColorCode","TopUpMethodColorCode","TopUpStatusColorCode","RewardGenerationJobStatusColorCode","RewardRedemptionProcessStatusButtonColorCode","NORMAL","OUTLINE","RewardValidityInfo","validityText","validityIcon","faCheckCircle","validityTextColor","faClock","faExclamationCircle","rewardType","rewardTypeTextColor","DefaultColumnsPerGroup","faMapMarkerAlt","faPower","hidden","faLayerGroup","DefaultColumsObject","RewardLogisticsFilter","CALMilesProcessStatus","CALMilesJobStatus","PartnerRewardPendingActionsStatus","DefaultColumnsPerCalMilesGroup","faHandHoldingUsd","faTimesCircle","CalMilesDefaultColumsObject","BatchesWithRefundOnlyAction","PartnerRewardRefSearchFields","getPartnerRewardSearchFields","partnerRewardName","UserStatus","ARCHIVE","PermissionModules","GROUPS","USER_PERMISSION","USER_ACTIVITY","MEMBER","POINT","SETTING","MEMBER_NOTE","ACTIVITY","SEGMENT","EVENT","CARD_ANALYTICS","MEMBER_ANALYTICS","MERCHANT_ANALYTICS","REWARD_ANALYTICS","TIER_ANALYTICS","RULE","RULE_TYPE","INCIDENT","JOBS","AUDIT_LOG","KLIP","JOB_EXECUTIONS","PermissionModulesDetails","moduleDescription","GetAffinityGroup","CreateAffinityGroup","UpdateAffinityGroup","DeleteAffinityGroup","ListAffinityGroupMemberImportJobs","ListAffinityGroupMemberImportLogs","ExportAffinityGroupMemberImportLogs","CreateAffinityGroupMemberImportJob","ListGroups","CreateGroup","UpdateGroup","DeleteGroup","CreateOrganization","UpdateOrganization","CreateUser","GetUser","UpdateUser","DeleteUser","ResetPassword","CreateModule","UpdateModule","ListUserPermissions","CreateUserPermission","UpdateUserPermission","DeleteUserPermission","ListUserActivities","ListMembers","GetMember","CreateMember","UpdateMember","ChangeType","DeleteMember","ExportMember","EraseMember","ExportMembers","UpdateMemberAffinityGroup","GetMerchant","CreateMerchant","UpdateMerchant","DeleteMerchant","GetCard","GenerateCards","ListCardConfigurations","UpdateCard","CreateEmbossedRequest","CancelEmbossed","AssignCard","UpdateCardBatchJob","CreateCardConfiguration","UpdateCardConfiguration","ExportCardBatchJobs","CreateTier","UpdateTier","DeleteTier","GetReward","ListRewardTopups","ListRewardDistributionJobs","CreateReward","CreateRewardTopup","UpdateReward","CancelLogItem","RefundLogItem","UpdateLogItem","ClaimReward","CreateRewardDistributionJob","UpdateRewardDistributionJob","UploadRewardTopupFile","RedeemReward","DeleteReward","GetRewardRedemptionLog","RedeemPoints","AdjustPoints","TransferPoints","CollectPointsBill","CollectPointsAmount","UpdateStagedTransaction","DeleteStagedTransaction","CreatePointRule","UpdatePointRule","DeletePointRule","CreateSubTransactionType","UpdateSubTransactionType","DeleteSubTransactionType","GetNotification","CreateNotification","UpdateNotification","DeleteNotification","ListMemberNotes","CreateMemberNote","UpdateMemberNote","DeleteMemberNote","ListSegments","ListSegmentCaregories","CreateSegment","UpdateSegment","CreateSegmentCategory","UpdateSegmentCategory","DeleteSegment","DeleteSegmentCategory","GetLocation","CreateLocation","UpdateLocation","DeleteLocation","ListActivities","ExportActivities","CreateActivity","ListEvents","CreateEvent","UpdateEvent","ViewCardsSummary","ViewCardProcessingStatusReport","ViewCardActivationReport","ExportCardActivationReport","ViewMemberRegistrationCounts","ViewMemberRegistrationSeries","ExportMemberRegistrationCounts","ExportMemberRegistrationSeries","ViewMemberAffinityGroupsCounts","ViewMemberAffinityGroupsSeries","ViewMemberTierCounts","ViewMemberTierSeries","ViewNewReturnMemberCounts","ViewNewReturnMemberSeries","ExportNewReturnMemberSeries","ViewMerchantsTransactionCollectionCount","ExportMerchantsTransactionCollectionCount","ViewMerchantsTransactionCollectionSeries","ExportMerchantsTransactionCollectionSeries","ViewMerchantsTransactionRedemptionCount","ExportMerchantsTransactionRedemptionCount","ViewMerchantsTransactionRedemptionSeries","ExportMerchantsTransactionRedemptionSeries","ViewMerchantsTransactionAdjustmentCount","ExportMerchantsTransactionAdjustmentCount","ViewMerchantsTransactionAdjustmentSeries","ExportMerchantsTransactionAdjustmentSeries","ViewMerchantsPointMovements","ViewTopRewards","ViewRedeemedRewardsCount","ExportRedeemedRewardsCount","ViewRedeemedRewardsSeries","ExportRedeemedRewardsSeries","ViewAffinityGroupPointCounts","ExportAffinityGroupPointCounts","ViewTierPointCounts","ExportTierPointCounts","ViewTierDistribution","ListRules","GetRule","CreateRule","DeleteRule","UpdateRule","ListRuleTypes","GetRuleType","CreateRuleType","DeleteRuleType","UpdateRuleType","ListIncidents","GetIncident","UpdateIncident","ExportIncidents","ExportIncident","GetCharity","CreateCharity","UpdateCharity","DeleteCharity","ExportCharity","EraseCharity","CreateJob","UpdateJob","ListJobs","GetJob","DeleteJob","CreateJobType","UpdateJobType","GetJobType","DeleteJobType","ListAuditLogs","ListJobExecutions","GetJobExecution","CreateRegion","UpdateRegion","DeleteRegion","MessageLogFilterOptions","faHeart","faUsdCircle","CHANNEL","LOYALTY_ACTIVITY","TO_SMS","TO_EMAIL","STATUS","MessageLogChannel","PUSH","MessageLogStatus","SENT","DELIVERED","QUEUED","INTERNAL_ERROR","Status","NotificationTemplates","TransportTypes","NotificationStatus","triggeredMessages","FraudRulesStatusMap","textColor","buttonColor","JobStatus","ProcessType","IMMEDIATE","ScheduleType","ONCE","RECURRING","RecurrenceMethod","DAILY","MONTHLY","RecurrenceType","DAY_OF_MONTH","END_OF_MONTH","NotificationsStatus","JobStatusTextColorCodes","getHeaders","_ref","_asyncToGenerator","_regeneratorRuntime","mark","_callee","_args","arguments","wrap","_context","prev","next","undefined","abrupt","stop","_x","handleErrors","_ref2","_callee2","_errorResponse","errorResponse","_context2","ok","json","sent","t0","Error","statusText","_x2","parseJson","fetchGet","_ref3","_callee3","_args3","_context3","t1","t2","t3","_x3","fetchGetWithTotal","_ref4","_callee5","_args5","_context5","_ref5","_callee4","jsonBody","_context4","get","_x5","_x4","fetchPostWithTotal","_ref6","_callee7","_args7","_context7","t4","method","_ref7","_callee6","_context6","_x8","_x6","_x7","fetchPost","_ref8","_callee8","_args8","_context8","_x9","_x10","fetchPut","_ref10","_callee10","_args10","_context10","_x12","_x13","fetchDelete","_ref11","_callee11","track","_args11","_context11","t5","isProtected","showLoader","_x14","_x15","_x16","jsonToQueryParam","_ref12","_ref13","_slicedToArray","element","preProcessBodyData","_ref14","_ref15","fetchPostMultipart","_ref16","_callee12","_args12","_context12","_x17","_x18","createPoints","pointObj","getPoints","queryObj","editPoints","deletePoints","adjustPoints","redeemPoints","redeemPointsWithOtpRequest","redeemPointsWithOtp","collectPoints","collectPointsManualBill","transferPoints","donatePoints","getRewardById","rewardId","createReward","rewardPayload","updateRewardById","deleteReward","topUpReward","topUpPayload","topUpRewardFile","fileData","formData","FormData","append","redeemRewards","paylaod","getTopupLogs","getRedemptionLogs","updateRewardRedemptionLog","cancelReward","refundRedemptionPoints","updatePartnerRedemptionLog","bulkRefundPartnerRewardRedemptions","reprocessRedemptionLogs","redeemReward","claimReward","createTiers","benefits","imageUrl","editTiers","deleteTiers","getTransactions","getInvalidTransactions","archiveInvalidTransaction","linkLoyaltyCardToTransaction","getImportTransactions","importTransactionFileUpload","fileFormData","importTransaction","convertContactAttributeToReadable","RegExp","convertEditorStateToHtml","editorState","ReactDOMServer","renderToStaticMarkup","exportHtml","getDatesSeries","stopDate","dateArray","currentDate","createNewUser","userDetails","updateContact","updateMemberAffinityGroup","getContactById","contactId","getContacts","_ref$skip","searchKey","sortDirection","sortBy","affinityGroupId","tierId","_objectSpread","filterMembers","_ref2$skip","changeAccountStatus","getSecondaryAccounts","getCardConfigurations","newHeader","getCardInfoByID","cardId","assignCardToMember","cardDetails","getMemberNotes","addMemberNotes","archiveMember","deleteMemberNotes","requestAccountSecondary","addAccountSecondary","requestToConvertPrimary","convertToPrimaryAccount","exportMemberRequest","forgetMember","getNewSubTransactions","deleteSubTransaction","editSubTransaction","referenceId","createSubTransaction","newSubTransactionPayload","editRegion","defaultCountryISO2Code","defaultCurrencyCode","pointConfiguration","memberConfiguration","notificationConfiguration","smsConfiguration","exportFilterMembers","notificationEmails","uploadImage","file","getGroups","getAllGroups","args","getGroup","getAuditLogs","createGroup","deleteGroup","updateGroup","groupId","groupData","getIdentityUser","userId","updateIdentityUser","userData","resetUserPassword","resetPayload","getUserActivities","addUserPermissions","updateUserPermission","deleteUserAccount","createUser","getUserPermissions","getIntegrations","getIntegration","deleteIntegration","createIntegration","clientData","getSegmentCategories","getSegments","createSegments","filter","getActivities","activityFilters","deleteSegment","updateProfile","profileData","getNotifications","createNotifications","updateNotifications","deleteNotification","getNotificationLogs","notificationPayload","getTopListAnalytics","tableURL","queryObjectTopRewards","exportAnalyticsReport","filePath","exportQueryObject","getMemberRegistrationAnalyticsCount","queryObjectRegistration","getNewReturnMemberCount","queryObjectReturnMember","getNewReturnMemberSeries","getMemberTiersCount","queryObjectTiers","getTopRewardAnalytics","getRedemptionCount","queryObjectRedmptionCount","getRedemptionSeries","queryObjectRedemptionSeries","getCardsAnalytics","queryObject","getCardsProcessingStatus","getCardsActivationsummary","MERCHANTS_URL","getMerchantAsSeries","transactionType","getMerchantAsCount","MERCHANTS_COLLECTIONS_URL","getMerchantCollectionAsCount","getMerchantCollectionAsSeries","MERCHANTS_REDEMPTIONS_URL","getMerchantRedemptionAsCount","MERCHANTS_ADJUSTMENT_URL","getMerchantAdjustmentAsCount","getMerchantAdjustmentAsSeries","getMerchantPointmovementsAnalytics","createCardDistributionJobs","jobType","merchantLocationId","quantity","createCardPrintJobs","embossCardIds","getCardBatchJobs","JobURLParam","updateCardBatchJobs","getCardList","exportCardList","exportFailedEmbossedCardList","requestEmbossedCardForMember","memberId","printedName","assignCardToALoyaltyId","updateCardStatus","getCardSummary","cardTypes","getCardStock","getCardByCardNumber","cardNo","getSettingCardConfigurations","editSettingCard","rangeFrom","rangeTo","replacementFee","getMerchantList","archiveMerchant","createNewMerchant","merchantDetails","getMerchantById","updateMerchant","merchantResponse","getLocationsForMerchant","archiveMerchantLocation","editMerchantLocation","locationId","addLocation","merchantLocationsResponse","getAffinityGroups","getAffinityGroupById","editAffinityGroups","deleteAffinityGroups","createAffinityAffinityGroup","newAffinityGroupPayload","affinityGroupsResponse","getImportedJobLis","importAffinityGroupsJobs","getImportedJobLogs","exportAffinityGroupImportedJobLog","affinityGroupsFileUpload","getSubTransactionTypes","createdBy","subTransactionTypesResponse","updateRegion","editOrganizationDetails","configuration","getRewardDistributionJobs","createRewardDistributionJob","exportRedemptionLogs","uploadRewardDistributionJobsFile","importRewardDistributionJobs","updategetRewardDistributionLogs","JOBS_URL","JOB_TYPES_URL","getJobExecutions","getJobExecutionReport","jobExecutionId","getJobs","createJob","getJobById","jobId","updateJobById","archiveJob","paramsRest","getRulesList","getRulesListById","createRule","deleteRule","updateRule","getRuleTypes","getFraudIncidents","getFraudIncidentById","getFraudIncidentTransactions","updateFraudIncidentById","exportListOfIncidents","exportListOfTransactions","incidentId","getCharities","loyaltyId","parentMemberId","getCharityById","charityId","createNewCharity","updateCharity","forgetCharity","exportCharityRequest","archiveCharity","changeCharityAccountStatus","findMembersKlip","getContactByIdKlip","getRedemptionLogsKlip","getRewardsKlip","collectPointsManualBillKlip","collectPointsKlip","redeemRewardKlip","redeemPointsWithOtpRequestKlip","redeemPointsWithOtpKlip","adjustPointKlip","useToggle","defaultProps","propTypes","PropTypes","bool","isRequired","UnauthorizedAccessMessage","searchTimeout","MembersContext","resetMemberStatus","memberList","segments","selectedSegmentId","isLoadingSegments","segmentCategories","searchText","currentFilters","filterConfig","otherCategoryId","selectedLoyaltyCardNumber","isExporting","MembersContextActions","newState","members","shouldReset","categories","member","MembersContextProvider","loadMembers","newSkip","resetMember","pageReset","onChangePagination","setSortingOrder","loadSegmentsCategories","silent","segmentCategoriesResponse","transformedSegmentCategories","createdOn","iconUrl","segmentIds","Medal","affinityGroup","Group","loadSegments","segmentsResponse","withoutOtherCategory","categoryId","otherCategory","updateSegments","updateMember","onChangeSearchText","setCurrentFilters","setFilterConfig","selectSegment","segmentId","setSelectedLoyaltyCardNo","onExportMembers","success","Loading","IdentityUsersContext","resetIdUserStatus","merchantsList","selectedFilters","IdentityUsersContextActions","user","splice","IdentityUsersContextProvider","newSearchText","resetIdUser","onSetFilters","addUserToBeginning","IdentityUserContext","TransactionTypes","ChartColorCodes","BLUE","DARK_BLUE","GREEN","ORANGE","PINK","PURPLE","YELLOW","PieChartsColorCodes","REG_BY_REG_METHODS","REG_BY_ACC_TYPES","REG_BY_GENDER","AGE","POINT_EARNING_BY_ACC_TYPES","POINT_EARNING_BY_ACC_AGE","POINT_EARNING_BY_ACC_GENDER","POINT_REDEMPTION_BY_ACC_TYPES","POINT_REDEMPTION_BY_ACC_AGE","POINT_REDEMPTION_BY_ACC_GENDER","POINT_ADJUSTMENT_BY_ACC_TYPES","POINT_ADJUSTMENT_BY_ACC_AGE","POINT_ADJUSTMENT_BY_ACC_GENDER","CARD_REGISTRATION","MERCHANT_POINT_MOVEMENTS","PointAnalyticsTabs","POINT_EARNINGS","POINT_REDEMPTIONS","POINT_ADJUSTMENTS","TransactionType","SubTransactionTypeHeader","MerchantPointHeader","PointAccountTypeHeader","PointAgeHeader","BarChartDataProperties","REDEMPTIONS_ANALYTICS","CARD_ACTIVATION","NEW_MEMBERS","MemberRegisterFilter","GenderFilter","AgeGroupFilter","MemberRegistrationGroupByTypes","REGISTRATION_METHOD","TYPE","BRANCH","GENDER","MerchantGroupByTypes","MERCHANT_LOCATION","MEMBER_TYPE","AnalyticsTable","REWARD_LIST","AnalyticsTableColumns","AnalyticsTopListURL","AnalyticsActiveExport","REWARD_REDEMPTION","LOCATION_BASED_REGISTRATION","REDEMPTION_BY_MERCHANT","ADJUSTMENT_BY_MERCHANT","EARNING_BY_MERCHANT","NEW_MEMBERS_AND_RETURN_MEMBERS","ExportURLparam","POINT_EARNINGS_EXPORT","POINT_REDEMPTIONS_EXPORT","POINT_ADJUSTMENTS_EXPORT","REWARD_REDEMPTION_EXPORT","NEW_MEMBERS_AND_RETURN_MEMBERS_EXPORT","LOCATION_BASED_REGISTRATION_EXPORT","REDEMPTION_BY_MERCHANT_EXPORT","ADJUSTMENT_BY_MERCHANT_EXPORT","EARNING_BY_MERCHANT_EXPORT","CARD_ACTIVATION_EXPORT","AnalyticsExportURL","AnalyticsActiveView","ConfirmBox","show","onHide","confirmCallback","disableActions","handleClose","handleOk","btnDisable","onclick","onClickTab"],"mappings":"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","file":"static/js/main.52a56236.chunk.js","sourcesContent":["import React from \"react\";\r\nimport { BasicConfig, Utils as QbUtils, Widgets, } from \"@shoutout-labs/react-awesome-query-builder-shoutout\";\r\nconst { VanillaTextWidget,VanillaSelectWidget,VanillaDateWidget,VanillaNumberWidget} = Widgets;\r\n\r\ndelete BasicConfig?.operators[\"proximity\"];\r\nconst InitialConfig = {\r\n ...BasicConfig,\r\n operators: {\r\n ...BasicConfig.operators,\r\n ...(BasicConfig.operators.proximity&&{}),\r\n equal: {\r\n ...BasicConfig.operators.equal,\r\n label: \"Equals\",\r\n },\r\n not_equal: {\r\n ...BasicConfig.operators.not_equal,\r\n label: \"Not equals\",\r\n },\r\n like: {\r\n ...BasicConfig.operators.like,\r\n label: \"Contains\",\r\n },\r\n not_like: {\r\n ...BasicConfig.operators.not_like,\r\n label: \"Not contains\",\r\n },\r\n is_empty: {\r\n ...BasicConfig.operators.is_empty,\r\n label: \"Is unknown\",\r\n },\r\n is_not_empty: {\r\n ...BasicConfig.operators.is_not_empty,\r\n label: \"Is known\",\r\n },\r\n less: {\r\n ...BasicConfig.operators.less,\r\n label: \"Less than\",\r\n },\r\n less_or_equal: {\r\n ...BasicConfig.operators.less_or_equal,\r\n label: \"Less than or equal\",\r\n },\r\n greater: {\r\n ...BasicConfig.operators.greater,\r\n label: \"Greater than\",\r\n },\r\n greater_or_equal: {\r\n ...BasicConfig.operators.greater_or_equal,\r\n label: \"Greater than or equal\",\r\n },\r\n array_empty: {\r\n label: \"Empty\",\r\n reversedOp: \"array_not_empty\",\r\n labelForFormat: \"NULL\",\r\n cardinality: 0,\r\n formatOp: (field, _op, value, _valueSrc, _valueType, opDef) =>\r\n `${field} ${opDef.labelForFormat}`,\r\n mongoFormatOp: (field, op, value) => ({\r\n [field]: { $exist: true, $size: 0 },\r\n }),\r\n },\r\n greater_than_days: {\r\n label: \"Greater Than Days\",\r\n labelForFormat: \">\",\r\n jsonLogic: \">\",\r\n mongoFormatOp: (field, op, value) => ({ [field]: { $gt: value } }),\r\n },\r\n less_than_days: {\r\n label: \"Less Than Days\",\r\n labelForFormat: \"<\",\r\n jsonLogic: \"<\",\r\n mongoFormatOp: (field, op, value) => ({ [field]: { $lt: value } }),\r\n },\r\n greater_than_months: {\r\n label: \"Greater Than Months\",\r\n labelForFormat: \">\",\r\n jsonLogic: \">\",\r\n mongoFormatOp: (field, op, value) => ({\r\n $expr: {\r\n \"$gt\": [\r\n {\r\n \"$month\": `$${field}`\r\n },\r\n value\r\n ]\r\n }\r\n }),\r\n },\r\n less_than_months: {\r\n label: \"Less Than Months\",\r\n labelForFormat: \"<\",\r\n jsonLogic: \"<\",\r\n mongoFormatOp: (field, op, value) => ({\r\n $expr: {\r\n \"$lt\": [\r\n {\r\n \"$month\": `$${field}`\r\n },\r\n value\r\n ]\r\n }\r\n }),\r\n },\r\n greater_than_years: {\r\n label: \"Greater Than Years\",\r\n labelForFormat: \">\",\r\n jsonLogic: \">\",\r\n mongoFormatOp: (field, op, value) => ({\r\n $expr: {\r\n \"$gt\": [\r\n {\r\n \"$year\": `$${field}`\r\n },\r\n value\r\n ]\r\n }\r\n }),\r\n },\r\n less_than_years: {\r\n label: \"Less Than Years\",\r\n labelForFormat: \"<\",\r\n jsonLogic: \"<\",\r\n mongoFormatOp: (field, op, value) => ({\r\n $expr: {\r\n \"$lt\": [\r\n {\r\n \"$year\": `$${field}`\r\n },\r\n value\r\n ]\r\n }\r\n }),\r\n },\r\n month_is: {\r\n label: \"Month is\",\r\n labelForFormat: \"==\",\r\n jsonLogic: \"==\",\r\n mongoFormatOp: (field, op, value) => ({\r\n $expr: {\r\n \"$eq\": [\r\n {\r\n \"$month\": `$${field}`\r\n },\r\n value\r\n ]\r\n }\r\n }),\r\n },\r\n day_is: {\r\n label: \"Day is\",\r\n labelForFormat: \"==\",\r\n jsonLogic: \"==\",\r\n mongoFormatOp: (field, op, value) => ({ [field]: { $eq: value } }),\r\n },\r\n year_is: {\r\n label: \"Year is\",\r\n labelForFormat: \"==\",\r\n jsonLogic: \"==\",\r\n mongoFormatOp: (field, op, value) => ({\r\n $expr: {\r\n \"$eq\": [\r\n {\r\n \"$year\": `$${field}`\r\n },\r\n value\r\n ]\r\n }\r\n }),\r\n },\r\n array_not_empty: {\r\n label: \"Not Empty\",\r\n reversedOp: \"array_empty\",\r\n labelForFormat: \"NOT NULL\",\r\n cardinality: 0,\r\n formatOp: (field, _op, value, _valueSrc, _valueType, opDef) =>\r\n `${field} ${opDef.labelForFormat}`,\r\n mongoFormatOp: (field, op, value) => ({\r\n [field]: { $exist: true, $not: { $size: 0 } },\r\n }),\r\n },\r\n },\r\n types: {\r\n ...BasicConfig.types,\r\n date: {\r\n ...BasicConfig.types.date,\r\n widgets: {\r\n ...BasicConfig.types.date.widgets,\r\n date: {\r\n operators: [\r\n ...BasicConfig.types.date.widgets.date.operators,\r\n \"year_is\",\r\n \"day_is\",\r\n \"month_is\",\r\n \"less_than_years\",\r\n \"greater_than_years\",\r\n \"less_than_months\",\r\n \"greater_than_months\",\r\n \"less_than_days\",\r\n \"greater_than_days\"\r\n ]\r\n }\r\n }\r\n },\r\n },\r\n widgets: {\r\n ...BasicConfig.widgets,\r\n text: {\r\n ...BasicConfig.widgets.text,\r\n factory: (props) => {\r\n return (\r\n \r\n );\r\n },\r\n },\r\n select: {\r\n ...BasicConfig.widgets.select,\r\n factory: props => ,\r\n\r\n },\r\n date: {\r\n type: 'date',\r\n valueSrc: 'value',\r\n dateFormat:'YYYY-MM-DD',\r\n valueFormat:'YYYY-MM-DD',\r\n factory: (props) => {\r\n switch(props.operator) {\r\n case \"month_is\":\r\n case \"less_than_months\":\r\n case \"greater_than_months\":\r\n return \r\n case \"year_is\":\r\n case \"less_than_years\":\r\n case \"greater_than_years\":\r\n return \r\n default:\r\n return \r\n }\r\n\r\n },\r\n },\r\n },\r\n settings: {\r\n maxNesting: 1, //no groups\r\n maxNumberOfRules: 6,\r\n showErrorMessage: true,\r\n showNot: false,\r\n },\r\n};\r\n\r\nconst buildMemberFilterConfig = (contactAttributes, tags) => {\r\n const attributes = Object.entries(contactAttributes).reduce(\r\n (result, [key, value]) => {\r\n switch (value.type) {\r\n case \"string\":\r\n if (value.values && value.values.length > 0) {\r\n result[key] = {\r\n label: value.label,\r\n type: \"text\",\r\n useAsyncSearch: true,\r\n useLoadMore: true,\r\n forceAsyncSearch: false,\r\n allowCustomValues: true,\r\n asyncFetch: (search) => {\r\n return {\r\n values: value.values.map((item) => {\r\n if (typeof item === \"object\") {\r\n return {\r\n title: item.label || item.value,\r\n value: item.value,\r\n };\r\n }\r\n return {\r\n title: item,\r\n value: item,\r\n };\r\n }),\r\n hasMore: false,\r\n };\r\n },\r\n }; //TODO: Suggestions are there to show up which can't show without updating the widget\r\n } else {\r\n result[key] = {\r\n label: value.label,\r\n type: \"text\",\r\n allowCustomValues: true,\r\n };\r\n }\r\n break;\r\n\r\n case \"array\": {\r\n result[key] = {\r\n label: value.label,\r\n type: \"select\",\r\n operators: [\r\n \"select_any_in\",\r\n \"select_not_any_in\",\r\n \"array_empty\",\r\n \"array_not_empty\",\r\n ],\r\n fieldSettings: value.fieldSettings\r\n ? value.fieldSettings\r\n : {\r\n listValues: [\r\n {\r\n value: \"0\",\r\n title: `${value.label} not found`,\r\n },\r\n ],\r\n },\r\n };\r\n\r\n break;\r\n }\r\n case \"select\": {\r\n result[key] = {\r\n label: value.label,\r\n type: \"select\",\r\n fieldSettings:value.fieldSettings.length!==0? {\r\n listValues:value.fieldSettings,\r\n }:{\r\n listValues: [\r\n {\r\n value: \"0\",\r\n title: `${value.label} not found`,\r\n },\r\n ],\r\n },\r\n\r\n };\r\n\r\n break;\r\n }\r\n case \"date\": {\r\n result[key] = {\r\n label: value.label,\r\n type: \"date\",\r\n valueSources: ['value'],\r\n operators: [\r\n \"equal\",\r\n \"not_equal\",\r\n \"less\",\r\n \"less_or_equal\",\r\n \"greater\",\r\n \"greater_or_equal\",\r\n \"between\",\r\n \"not_between\",\r\n \"year_is\",\r\n \"day_is\",\r\n \"month_is\",\r\n \"less_than_years\",\r\n \"greater_than_years\",\r\n \"less_than_months\",\r\n \"greater_than_months\",\r\n \"less_than_days\",\r\n \"greater_than_days\",\r\n \"is_not_empty\"\r\n ],\r\n };\r\n\r\n break;\r\n }\r\n default: {\r\n result[key] = { label: value.label, type: value.type };\r\n }\r\n }\r\n\r\n return result;\r\n },\r\n {}\r\n );\r\n if (attributes.tags && tags) {\r\n attributes.tags.fieldSettings = {\r\n listValues: tags.map(({ label, tag_key }) => ({\r\n title: label,\r\n value: label,\r\n })),\r\n showSearch: true,\r\n };\r\n attributes.tags.valueSources = [\"value\"];\r\n }\r\n\r\n return {\r\n ...InitialConfig,\r\n fields: attributes,\r\n };\r\n};\r\n\r\nconst getMongoDBQuery = (filters, config) => {\r\n const filterData = QbUtils.checkTree(QbUtils.loadTree(filters), config);\r\n\r\n return QbUtils.mongodbFormat(filterData, config);\r\n};\r\nconst generateUserAttribute = (projection) => {\r\n return projection.reduce((result, item) => {\r\n switch (item) {\r\n case \"contact\": {\r\n result.push(\"email\");\r\n result.push(\"mobileNumber\");\r\n break;\r\n }\r\n\r\n case \"name\": {\r\n result.push(\"firstName\");\r\n result.push(\"lastName\");\r\n result.push(\"loyaltyId\");\r\n break;\r\n }\r\n\r\n default: {\r\n result.push(item);\r\n }\r\n }\r\n return result;\r\n }, []);\r\n};\r\nexport { buildMemberFilterConfig, getMongoDBQuery, generateUserAttribute };\r\n","const toTitleCase = (text) => {\r\n let upper = true;\r\n let newStr = \"\";\r\n const str = text?.replace(/[-_]/g, \" \").trim();\r\n for (let i = 0, l = str?.length; i < l; i++) {\r\n if (str[i] === \" \") {\r\n upper = true;\r\n newStr += \" \";\r\n continue;\r\n }\r\n newStr += upper ? str[i].toUpperCase() : str[i].toLowerCase();\r\n upper = false;\r\n }\r\n return newStr;\r\n};\r\n\r\nconst toTitleCaseFromCamelCase = (text) => {\r\n const result = text.replace(/([A-Z])/g, \" $1\");\r\n const finalResult = result.charAt(0).toUpperCase() + result.slice(1);\r\n return finalResult;\r\n};\r\n\r\nconst toReplaceSpaceWithHyphen = (text) => {\r\n const result = text.replace(/ +/g, \"-\").toLowerCase();\r\n return result;\r\n};\r\n\r\nconst convertToSnakeCase = (text) =>\r\n text\r\n ?.split(/(?=[A-Z])/)\r\n .join(\"_\")\r\n .toLowerCase();\r\n\r\nconst toTitleCaseFromSnakeAndCamel = (text) => {\r\n const snakeCase = convertToSnakeCase(text);\r\n const result = toTitleCase(snakeCase);\r\n return result;\r\n};\r\n\r\nconst capitalizeOnlyFirstLetterOfString = (text) =>\r\n `${text.charAt(0).toUpperCase()}${text.slice(1).toLowerCase()}`;\r\n\r\nconst convertStringToCamelCase = (string) =>\r\n string\r\n ?.replace(/(?:^\\w|[A-Z]|\\b\\w)/g, (letter, index) =>\r\n index === 0 ? letter.toLowerCase() : letter.toUpperCase()\r\n )\r\n .replace(/\\s+/g, \"\");\r\n\r\nexport {\r\n toTitleCase,\r\n toTitleCaseFromCamelCase,\r\n toReplaceSpaceWithHyphen,\r\n convertToSnakeCase,\r\n toTitleCaseFromSnakeAndCamel,\r\n capitalizeOnlyFirstLetterOfString,\r\n convertStringToCamelCase,\r\n};\r\n","import { toTitleCase } from \"./StringUtils\";\r\n\r\nconst isEqualObjects = (a, b) => {\r\n let s = (o) =>\r\n o\r\n ? Object.entries(o)\r\n .sort()\r\n .map((i) => {\r\n if (i[1] instanceof Object) i[1] = s(i[1]);\r\n return i;\r\n })\r\n : o;\r\n return JSON.stringify(s(a)) === JSON.stringify(s(b));\r\n};\r\n\r\nconst isEmptyObject = (object) => {\r\n return Object.keys(object).length === 0;\r\n};\r\n\r\nconst removeKeysFromObject = (obj, keys) => {\r\n console.debug(obj);\r\n return Object.entries(obj).reduce((result, [keyName, value]) => {\r\n if (!keys.includes(keyName)) {\r\n if (typeof value === \"object\" && !Array.isArray(value)) {\r\n result[keyName] = removeKeysFromObject(value, keys);\r\n } else {\r\n result[keyName] = value;\r\n }\r\n }\r\n return result;\r\n }, {});\r\n // for (var prop in obj) {\r\n // if (obj.hasOwnProperty(prop)) {\r\n // switch (typeof obj[prop]) {\r\n // case \"object\":\r\n // if (keys.indexOf(prop) > -1) {\r\n // delete obj[prop];\r\n // } else {\r\n // removeKeysFromObject(obj[prop], keys);\r\n // }\r\n // break;\r\n // default:\r\n // if (keys.indexOf(prop) > -1) {\r\n // delete obj[prop];\r\n // }\r\n // break;\r\n // }\r\n // }\r\n // }\r\n};\r\n\r\nconst getValueFromObject = (object, path) => {\r\n return path.split(\".\").reduce((r, k) => r?.[k], object);\r\n};\r\n\r\nconst objectToLabelValueArray = (items) =>\r\n Object.keys(items).map((item) => ({\r\n value: item,\r\n label: toTitleCase(items[item]),\r\n }));\r\n\r\nexport {\r\n isEqualObjects,\r\n isEmptyObject,\r\n removeKeysFromObject,\r\n getValueFromObject,\r\n objectToLabelValueArray,\r\n};\r\n","const getNonSystemAttributes = ({\r\n created_by,\r\n _delete_protected,\r\n _email_valid,\r\n _mobile_number_valid,\r\n owner_id,\r\n historyEvents,\r\n identifications,\r\n partnerApi,\r\n ...rest\r\n}) => ({...rest});\r\n\r\n\r\nexport {getNonSystemAttributes};\r\n","const setFavicon = (url) => {\r\n let link = document.querySelector(\"link[rel~='icon']\");\r\n if (!link) {\r\n link = document.createElement(\"link\");\r\n link.rel = \"icon\";\r\n document.getElementsByTagName(\"head\")[0].appendChild(link);\r\n }\r\n link.href = url;\r\n};\r\n\r\nexport {setFavicon}","const setSiteTitle=(title)=>{\r\n document.title=title;\r\n}\r\n\r\nexport {setSiteTitle};","const downloadLink = (url)=> {\r\n const link = document.createElement('a')\r\n link.href = url\r\n link.click()\r\n}\r\n\r\nexport { downloadLink };","import moment from \"moment\";\r\n\r\nconst SettingsReportmonths = [\r\n \"January\",\r\n \"February\",\r\n \"March\",\r\n \"April\",\r\n \"May\",\r\n \"June\",\r\n \"July\",\r\n \"August\",\r\n \"September\",\r\n \"October\",\r\n \"November\",\r\n \"December\",\r\n];\r\n\r\nconst TimeOfDayValues = [\"AM\", \"PM\"];\r\n\r\nconst formatToCommonReadableFormat = (date) => {\r\n return moment(date).format(\"MMM DD, YYYY LT\");\r\n};\r\n\r\nconst formatToCommonReadableFormatDateOnly = (date) =>\r\n moment(date).format(\"MMM DD, YYYY\");\r\n\r\nconst formatToCommonFormat = (date) => {\r\n return moment(date).format(\"YYYY-MM-DD\");\r\n};\r\n\r\nconst getSuffixForDayOfMonth = (day) => {\r\n const dayType1 = Number(day) % 10,\r\n dayType2 = Number(day) % 100;\r\n\r\n if (dayType1 === 1 && dayType2 !== 11) {\r\n return `${day}st`;\r\n }\r\n\r\n if (dayType1 === 2 && dayType2 !== 12) {\r\n return `${day}nd`;\r\n }\r\n\r\n if (dayType1 === 3 && dayType2 !== 13) {\r\n return `${day}rd`;\r\n }\r\n\r\n return `${day}th`;\r\n};\r\n\r\nconst convertTimeFrom12HTo24H = (time) =>\r\n moment(time || \"\", [\"HH:mm A\"])\r\n .format(\"HH:mm\")\r\n .toString();\r\n\r\nconst convertTimeFrom24HTo12H = (time) =>\r\n moment(time || \"\", [\"HH:mm\"])\r\n .format(\"hh:mm A\")\r\n .toString();\r\n\r\n// * Jobs related\r\nconst getNextExecutionDate = ({\r\n daily = \"\",\r\n isEndOfMonth = false,\r\n dayOfMonth = null,\r\n}) => {\r\n if (daily) {\r\n const executionTimeToDate = moment(daily, [\"HH:mm A\"]);\r\n const nextExecution =\r\n moment(executionTimeToDate, [\"HH:mm A\"]).diff(\r\n moment(),\r\n \"minutes\"\r\n ) <= 0\r\n ? executionTimeToDate.add(1, \"d\")\r\n : executionTimeToDate;\r\n\r\n return {\r\n nextDate: formatToCommonReadableFormat(nextExecution),\r\n executionMonth: null,\r\n };\r\n } else {\r\n if (isEndOfMonth) {\r\n if (moment().diff(moment().endOf(\"M\")) === 0) {\r\n return {\r\n nextDate: formatToCommonReadableFormat(\r\n moment().add(1, \"M\").endOf(\"M\").startOf(\"D\")\r\n ),\r\n executionMonth: null,\r\n };\r\n } else {\r\n return {\r\n nextDate: formatToCommonReadableFormat(\r\n moment().endOf(\"M\").startOf(\"D\")\r\n ),\r\n executionMonth: null,\r\n };\r\n }\r\n } else {\r\n const dateOfMonth = moment().date(dayOfMonth);\r\n const nextMonth = moment().add(1, \"M\");\r\n if (dateOfMonth.startOf(\"D\").diff(moment().startOf(\"D\")) <= 0) {\r\n if (\r\n dayOfMonth >= nextMonth.startOf(\"M\").date() &&\r\n dayOfMonth <= nextMonth.endOf(\"M\").date()\r\n ) {\r\n return {\r\n nextDate: formatToCommonReadableFormat(\r\n dateOfMonth.add(1, \"M\").startOf(\"D\")\r\n ),\r\n executionMonth: dateOfMonth\r\n .add(1, \"M\")\r\n .startOf(\"D\")\r\n .format(\"MMMM\"),\r\n };\r\n } else {\r\n return {\r\n nextDate: null,\r\n executionMonth: dateOfMonth\r\n .add(1, \"M\")\r\n .startOf(\"D\")\r\n .format(\"MMMM\"),\r\n };\r\n }\r\n } else {\r\n if (\r\n dayOfMonth >= moment().startOf(\"M\").date() &&\r\n dayOfMonth <= moment().endOf(\"M\").date()\r\n ) {\r\n return {\r\n nextDate: formatToCommonReadableFormat(\r\n dateOfMonth.startOf(\"D\")\r\n ),\r\n executionMonth: dateOfMonth.startOf(\"D\").format(\"MMMM\"),\r\n };\r\n } else {\r\n return {\r\n nextDate: null,\r\n executionMonth: dateOfMonth.startOf(\"D\").format(\"MMMM\"),\r\n };\r\n }\r\n }\r\n }\r\n }\r\n};\r\n// * !Jobs related\r\n\r\nexport {\r\n SettingsReportmonths,\r\n TimeOfDayValues,\r\n formatToCommonReadableFormat,\r\n formatToCommonFormat,\r\n formatToCommonReadableFormatDateOnly,\r\n getSuffixForDayOfMonth,\r\n getNextExecutionDate,\r\n convertTimeFrom12HTo24H,\r\n convertTimeFrom24HTo12H,\r\n};\r\n","const getPermissionPath=(moduleName,permission)=>{\r\n return `${moduleName}.${permission}`;\r\n}\r\n\r\nexport {getPermissionPath};","import numeral from 'numeral';\r\n\r\nnumeral.nullFormat('N/A');\r\n\r\nconst percentageConverter = (total, amount) => {\r\n\r\n const percentageAmount = (Number(amount) / Number(total) * 100).toFixed(2);\r\n return percentageAmount;\r\n};\r\n\r\nconst convertNumberFormat = (amount) => {\r\n return numeral(amount).format('0,0');\r\n}\r\n\r\nexport {\r\n percentageConverter,\r\n convertNumberFormat\r\n}","const areArraysEquals = (arr1, arr2, isObjectArr = false) =>\r\n Array.isArray(arr1) &&\r\n Array.isArray(arr2) &&\r\n arr1.length === arr2.length &&\r\n arr1.every((val, index) =>\r\n isObjectArr\r\n ? JSON.stringify(val) === JSON.stringify(arr2[index])\r\n : val === arr2[index]\r\n );\r\n\r\nexport { areArraysEquals };\r\n","import React, { useCallback, useContext, useEffect, useMemo, useReducer } from \"react\";\r\nimport {\r\n getModules,\r\n getOrganizationDetails,\r\n getProfile,\r\n getRegions,\r\n getUserDataset,\r\n postUserDataset,\r\n} from \"../Services\";\r\n//import queryString from 'query-string';\r\nimport { withRouter } from \"react-router-dom\";\r\n//import UserAccessTemplates, { ACCESS_CONTROL_DATA } from '../UserAccessTemplates';\r\n//import { useHistory } from 'react-router-dom';\r\nimport { KeycloakContext } from \"./keycloakAuthServiceContext\";\r\nimport { getValueFromObject, setFavicon, setSiteTitle } from \"Utils\";\r\nimport { AccessPermissionModuleNames, AccessPermissionModules, UserBoundaryType } from \"Data\";\r\nimport { toast } from \"react-toastify\";\r\n\r\nimport { useKeycloak } from \"@react-keycloak/web\";\r\n\r\nconst UserContext = React.createContext();\r\n\r\nconst UserContextActions = {\r\n // LOGIN: 'login',\r\n // LOGOUT: 'logout',\r\n // INIT_COMPLETE: \"userInitCompleted\",\r\n UPDATE_USER_DATA: \"updateUserData\",\r\n SET_ORGANIZATION: \"setOrganization\",\r\n SET_IS_LOADING_ORGANIZATION: \"setIsLoadingOrganization\",\r\n SET_INIT_SYSTEM_ERROR_MESSAGE: \"setInitSystemErrorMsg\",\r\n SELECT_REGION: \"setSelectRegion\",\r\n SET_USER_STATE: \"setUserState\",\r\n // SET_SHOULD_RESET: \"setShouldReset\",\r\n SET_USER_CONFIG_LOADED: \"setUserConfigLoaded\",\r\n SET_SYSTEM_MODULES: \"setSystemModules\",\r\n SET_IS_SYSTEM_MODULE: \"setIsSystemModule\",\r\n SET_REGIONS: \"setRegions\",\r\n SET_LOGGED_USER: \"setLoggedUser\",\r\n};\r\n\r\nconst inititalUserPermissionPolicies = (enabledAll = true) =>\r\n Object.values(AccessPermissionModules).reduce(\r\n (result, { moduleName, actions }) => {\r\n result[moduleName] = Object.values(actions).reduce((r, item) => {\r\n r[item] = enabledAll;\r\n return r;\r\n }, {});\r\n return result;\r\n },\r\n {}\r\n ); //restructured for ease access.\r\n\r\nconst initialState = {\r\n // username: \"\",\r\n // exp: null,\r\n // ownerId: null,\r\n // // initComplete: true,\r\n // scopes: [],\r\n // email: \"\",\r\n // mobileNumber: \"\",\r\n // regionId : \"5ed5eee46583f920820349b5\"\r\n //regionId : \"6128e3537ed841e246e2e396\"\r\n userBoundaryType: UserBoundaryType.ROOT,\r\n boundaryMerchantId: \"\",\r\n regionId: \"\",\r\n selectedRegion: {}, //assumption: if user is a regional/merchant bounded, selected region will be set to that region\r\n organization: {\r\n organizationName: \"\",\r\n organizationLogoImageUrl: \"\",\r\n address: {\r\n street: \"\",\r\n city: \"\",\r\n zip: \"\",\r\n },\r\n regions: [],\r\n },\r\n isRunningSystemInit: true,\r\n systemInitFailMessage: null,\r\n config: {\r\n memberTableColumns: [\r\n \"name\",\r\n \"contact\",\r\n \"points\",\r\n \"tier\",\r\n \"createdOn\",\r\n \"lastSeenOn\",\r\n ],\r\n },\r\n userConfigLoaded: false,\r\n systemModules: [],\r\n isLoadingModules: true,\r\n userPermissions: [],\r\n loggedUser: null,\r\n userProfileLoadCompleted: false,\r\n userRegions:[]\r\n};\r\n\r\n//\r\nconst reducer = (state, action) => {\r\n // console.debug(\"USER ACTION:\", action);\r\n switch (action.type) {\r\n // case UserContextActions.LOGOUT: {\r\n // // localStorage.removeItem(\"token\");\r\n // return { ...initialState, initComplete: true };\r\n // }\r\n // case UserContextActions.LOGIN: {\r\n\r\n // // const { userRole, scopes } = action;\r\n\r\n // // let userScopes = [];\r\n // // if (Array.isArray(scopes)) {\r\n // // userScopes = Object.values([...ACCESS_CONTROL_DATA, ...scopes].reduce((result, {\r\n // // moduleId,\r\n // // ...rest\r\n // // }) => {\r\n // // result[moduleId] = {\r\n // // ...(result[moduleId] || {}),\r\n // // moduleId,\r\n // // ...rest\r\n // // };\r\n // // return result;\r\n // // }, {}))\r\n // // } else if (userRole) {\r\n // // if (UserAccessTemplates[userRole]) {\r\n // // userScopes = UserAccessTemplates[userRole];\r\n // // } else {\r\n // // userScopes = UserAccessTemplates.user;\r\n // // }\r\n // // }\r\n\r\n // // const userScopeTransformed = userScopes.reduce((result, item) => {\r\n // // result[item.moduleId] = item;\r\n // // return result;\r\n // // }, {})\r\n\r\n // // return { ...state, isAuth: true, username: action.username, email: action.email, roles: action.roles, token: action.token, exp: action.exp, scopes: userScopeTransformed };\r\n // return { ...state, isAuth: true };\r\n // }\r\n\r\n case UserContextActions.UPDATE_USER_DATA: {\r\n const { boundary, ...rest } = action.data;\r\n return {\r\n ...state,\r\n ...rest,\r\n userBoundaryType: boundary,\r\n userProfileLoadCompleted: true,\r\n };\r\n }\r\n // case UserContextActions.INIT_COMPLETE: {\r\n // return { ...state, initComplete: true };\r\n // }\r\n\r\n case UserContextActions.SET_ORGANIZATION: {\r\n /* if (action.organization?.regions?.length > 0) {\r\n updatedState.regionId = action.organization.regions[0]._id;\r\n updatedState.selectedRegion = action.organization.regions[0];\r\n }*/\r\n return {\r\n ...state,\r\n organization: action.organization,\r\n isRunningSystemInit: false,\r\n systemInitFailMessage: null,\r\n };\r\n }\r\n case UserContextActions.SET_INIT_SYSTEM_ERROR_MESSAGE: {\r\n return {\r\n ...state,\r\n systemInitFailMessage: action.message,\r\n isRunningSystemInit: false,\r\n };\r\n }\r\n case UserContextActions.SET_USER_CONFIG_LOADED: {\r\n return {\r\n ...state,\r\n userConfigLoaded: action.status,\r\n };\r\n }\r\n case UserContextActions.SELECT_REGION: {\r\n return {\r\n ...state,\r\n regionId: action.regionId,\r\n selectedRegion: state.organization.regions?.find(\r\n (item) => item._id === action.regionId\r\n ),\r\n };\r\n }\r\n case UserContextActions.SET_USER_STATE: {\r\n const { key, value, ...rest } = action;\r\n return {\r\n ...state,\r\n config: {\r\n ...state.config,\r\n [key]: value,\r\n },\r\n ...rest,\r\n };\r\n }\r\n\r\n case UserContextActions.SET_SYSTEM_MODULES: {\r\n return {\r\n ...state,\r\n systemModules: action.modules,\r\n isLoadingModules: false,\r\n };\r\n }\r\n case UserContextActions.SET_IS_SYSTEM_MODULE: {\r\n return {\r\n ...state,\r\n isLoadingModules: action.status,\r\n };\r\n }\r\n case UserContextActions.SET_REGIONS: {\r\n return {\r\n ...state,\r\n userRegions: action.regions,\r\n regionId:action.regions[0]._id,\r\n selectedRegion:action.regions[0]\r\n };\r\n }\r\n case UserContextActions.SET_LOGGED_USER: {\r\n return {\r\n ...state,\r\n loggedUser: action.userInfo,\r\n };\r\n }\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nconst constantMock = window.fetch;\r\n\r\nconst UserContextProvider = withRouter((props) => {\r\n const [state, dispatch] = useReducer(reducer, initialState);\r\n const {\r\n keycloakLogout: logout,\r\n login: keycloakLogin,\r\n authComplete,\r\n loadUserProfile,\r\n } = useContext(KeycloakContext);\r\n // const history = useHistory();\r\n const { keycloak, initialized } = useKeycloak();\r\n const isAuth = keycloak.authenticated || false;\r\n\r\n const userPermissionPolicies = useMemo(() => {\r\n let policies = inititalUserPermissionPolicies(\r\n state.userBoundaryType === UserBoundaryType.ROOT\r\n );\r\n if (state.userPermissions) {\r\n state.userPermissions.forEach((permissionItem = []) => {\r\n permissionItem.permissions?.forEach(({ group }) => {\r\n group?.policies?.forEach((policy) => {\r\n if (policies[policy.moduleName]) {\r\n policy.actions?.forEach((action) => {\r\n policies[policy.moduleName][action] = true;\r\n });\r\n }\r\n });\r\n });\r\n });\r\n }\r\n\r\n // // //TODO: Temporarily set to evaluate access control. Should remove\r\n // policies[AccessPermissionModuleNames.ORGANIZATION][\r\n // AccessPermissionModules[\r\n // AccessPermissionModuleNames.ORGANIZATION\r\n // ].actions.GetOrganization\r\n // ] = true;\r\n\r\n // policies[AccessPermissionModuleNames.GROUPS][AccessPermissionModules[AccessPermissionModuleNames.GROUPS].actions.UpdateGroup]=true;\r\n return policies;\r\n }, [state.userPermissions, state.userBoundaryType]);\r\n\r\n window.fetch = async function () {\r\n const body = arguments[1];\r\n if (body.headers[\"x-auth\"]) {\r\n delete body.headers[\"x-auth\"];\r\n body.headers[\"Authorization\"] = `Bearer ${keycloak.token}`;\r\n }\r\n\r\n if (body.headers[\"x-auth-scope\"]) {\r\n if (!isAuthorizedForAction(body.headers[\"x-auth-scope\"])) {\r\n toast.error(\r\n `You are not authorized to perform the action: ${body.headers[\"x-auth-scope\"]}`\r\n );\r\n return Promise.reject({ status: 403 });\r\n }\r\n delete body.headers[\"x-auth-scope\"];\r\n }\r\n\r\n const response = await constantMock.apply(this, arguments);\r\n\r\n if (response.status === 401) {\r\n keycloak.logout();\r\n }\r\n\r\n return response;\r\n };\r\n\r\n // const logout = useCallback(() => {\r\n // window.fetch = constantMock;\r\n // // dispatch({ type: UserContextActions.LOGOUT });\r\n // keycloakLogout();\r\n // }, [keycloakLogout]);\r\n const loadProfile = useCallback(async () => {\r\n try {\r\n const profileResponse = await getProfile();\r\n // console.debug(\"Profile:\", profileResponse);\r\n dispatch({\r\n type: UserContextActions.UPDATE_USER_DATA,\r\n data: profileResponse,\r\n });\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }, [dispatch]);\r\n\r\n const isAuthorizedForAction = useCallback(\r\n (moduleName, actionName) => {\r\n if (actionName)\r\n return userPermissionPolicies[moduleName][actionName];\r\n\r\n return (\r\n getValueFromObject(userPermissionPolicies, moduleName) || false\r\n );\r\n },\r\n [userPermissionPolicies]\r\n );\r\n\r\n let userStateUpdateTimeout;\r\n const onUserStateChange = useCallback(\r\n ({ key, value }) => {\r\n if (\r\n isAuthorizedForAction(\r\n AccessPermissionModuleNames.USER_DATASET,\r\n AccessPermissionModules[\r\n AccessPermissionModuleNames.USER_DATASET\r\n ].actions.CreateDataset\r\n )\r\n ) {\r\n dispatch({\r\n type: UserContextActions.SET_USER_STATE,\r\n key,\r\n value: value,\r\n userConfigLoaded: true,\r\n });\r\n if (userStateUpdateTimeout) {\r\n clearTimeout(userStateUpdateTimeout);\r\n }\r\n // eslint-disable-next-line\r\n userStateUpdateTimeout = setTimeout(async () => {\r\n await postUserDataset({\r\n projection: value,\r\n datasetKey: key,\r\n });\r\n }, 3000);\r\n }\r\n },\r\n [dispatch]\r\n );\r\n\r\n const updateColumnState = useCallback(async () => {\r\n if (\r\n isAuthorizedForAction(\r\n AccessPermissionModuleNames.USER_DATASET,\r\n AccessPermissionModules[\r\n AccessPermissionModuleNames.USER_DATASET\r\n ].actions.ListDatasets\r\n )\r\n ) {\r\n try {\r\n const columnState = await getUserDataset({\r\n datasetKey: \"memberTableColumns\",\r\n });\r\n if (columnState?.data && columnState.data.length > 0) {\r\n const columnTableState = columnState.data.find(\r\n (item) => item.datasetKey === \"memberTableColumns\"\r\n );\r\n if (columnTableState) {\r\n dispatch({\r\n type: UserContextActions.SET_USER_STATE,\r\n key: \"memberTableColumns\",\r\n value: JSON.parse(columnTableState.datasetValue),\r\n userConfigLoaded: true,\r\n });\r\n }\r\n } else {\r\n dispatch({\r\n type: UserContextActions.SET_USER_CONFIG_LOADED,\r\n status: true,\r\n });\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n } else {\r\n dispatch({\r\n type: UserContextActions.SET_USER_CONFIG_LOADED,\r\n status: true,\r\n });\r\n }\r\n }, [dispatch, isAuthorizedForAction]);\r\n const loadOrganization = useCallback(async () => {\r\n if (\r\n isAuthorizedForAction(\r\n AccessPermissionModuleNames.ORGANIZATION,\r\n AccessPermissionModules[\r\n AccessPermissionModuleNames.ORGANIZATION\r\n ].actions.GetOrganization\r\n )\r\n ) {\r\n try {\r\n const organizationResponse = await getOrganizationDetails();\r\n dispatch({\r\n type: UserContextActions.SET_ORGANIZATION,\r\n organization: organizationResponse,\r\n });\r\n\r\n if (organizationResponse.organizationFavicon) {\r\n setFavicon(\r\n organizationResponse.organizationFavicon\r\n );\r\n }\r\n if (organizationResponse.organizationAppTitle) {\r\n setSiteTitle(\r\n organizationResponse.organizationAppTitle\r\n );\r\n }\r\n } catch (e) {\r\n dispatch({\r\n type: UserContextActions.SET_INIT_SYSTEM_ERROR_MESSAGE,\r\n message:\r\n \"Could not load your organization details. Please retry. If issue persist, contact the support.\",\r\n });\r\n }\r\n } else {\r\n dispatch({\r\n type: UserContextActions.SET_INIT_SYSTEM_ERROR_MESSAGE,\r\n message:\r\n \"You do not have get organization details permission. Dashboard can not load without this permission\",\r\n });\r\n }\r\n }, [dispatch, isAuthorizedForAction]);\r\n\r\n const onSelectRegion = useCallback(\r\n (regionId) => {\r\n window.sessionStorage.setItem(\"selectRegion\", regionId);\r\n dispatch({\r\n type: UserContextActions.SELECT_REGION,\r\n regionId: regionId,\r\n });\r\n },\r\n [dispatch]\r\n );\r\n\r\n const loadModules = useCallback(async () => {\r\n if (\r\n isAuthorizedForAction(\r\n AccessPermissionModuleNames.MODULES,\r\n AccessPermissionModules[AccessPermissionModuleNames.MODULES]\r\n .actions.ListModules\r\n )\r\n ) {\r\n try {\r\n const modules = await getModules();\r\n dispatch({\r\n type: UserContextActions.SET_SYSTEM_MODULES,\r\n modules: modules.items || [],\r\n });\r\n } catch (e) {\r\n dispatch({\r\n type: UserContextActions.SET_IS_SYSTEM_MODULE,\r\n status: false,\r\n });\r\n }\r\n } else {\r\n dispatch({\r\n type: UserContextActions.SET_IS_SYSTEM_MODULE,\r\n status: false,\r\n });\r\n }\r\n }, [dispatch, isAuthorizedForAction]);\r\n\r\n const loadRegions = useCallback(async () => {\r\n if (\r\n isAuthorizedForAction(\r\n AccessPermissionModuleNames.REGION,\r\n AccessPermissionModules[AccessPermissionModuleNames.REGION]\r\n .actions.ListRegions\r\n )\r\n ) {\r\n try {\r\n const regionResponse = await getRegions({limit: 500, skip:0});\r\n dispatch({\r\n type: UserContextActions.SET_REGIONS,\r\n regions: regionResponse.items || [],\r\n });\r\n } catch (error) {\r\n console.error(error);\r\n toast.error(error.message||\"Couldn't load the regions\");\r\n }\r\n }\r\n }, [isAuthorizedForAction,dispatch]);\r\n\r\n const loadUserInfo = useCallback(async () => {\r\n try {\r\n const userInfo = await loadUserProfile();\r\n dispatch({ type: UserContextActions.SET_LOGGED_USER, userInfo });\r\n } catch (e) {\r\n console.error(e);\r\n toast.error(e.message || \"Counld not load logged user info!\");\r\n }\r\n }, [loadUserProfile, dispatch]);\r\n\r\n // const setShouldReset = useCallback(() => {\r\n // dispatch({type: UserContextActions.SET_SHOULD_RESET});\r\n // },\r\n // [dispatch]\r\n // );\r\n\r\n useEffect(() => {\r\n (async () => {\r\n if (authComplete) {\r\n await loadProfile();\r\n loadOrganization();\r\n loadUserInfo();\r\n }\r\n })();\r\n // eslint-disable-next-line\r\n }, [authComplete]);\r\n\r\n useEffect(() => {\r\n (async () => {\r\n if (\r\n (authComplete&&state.userPermissions&&state.userPermissions.length!==0)\r\n ||\r\n (authComplete&&state.userBoundaryType ===UserBoundaryType.ROOT)\r\n ) {\r\n loadModules();\r\n updateColumnState();\r\n loadRegions();\r\n }\r\n })();\r\n // eslint-disable-next-line\r\n }, [authComplete,state.userPermissions]);\r\n\r\n\r\n useEffect(() => {\r\n if(window.sessionStorage.getItem(\"selectRegion\")){\r\n if(state.organization.regions.length!==0){\r\n onSelectRegion(window.sessionStorage.getItem(\"selectRegion\"))\r\n }\r\n }\r\n // eslint-disable-next-line\r\n }, [state.userRegions]);\r\n\r\n // useEffect(() => {\r\n // const queryParams = queryString.parse(props.location.search);\r\n // if (queryParams['token']) {\r\n // const { token } = queryParams;\r\n // login(token);\r\n // history.push(\"/\");\r\n\r\n // } else {\r\n // const token = localStorage.getItem('token');\r\n // if (token) {\r\n // login(token);\r\n // }\r\n // }\r\n // dispatch({ type: UserContextActions.INIT_COMPLETE });\r\n // }, [history, props.location.search]);\r\n\r\n // useEffect(() => {\r\n // if (token) {\r\n // login(token);\r\n // }\r\n // //eslint-disable-next-line react-hooks/exhaustive-deps\r\n // }, [token]);\r\n\r\n const value = {\r\n ...state,\r\n isAuth,\r\n initialized,\r\n username: state.loggedUser?.username,\r\n email: state.loggedUser?.email,\r\n login: keycloakLogin,\r\n logout,\r\n loadProfile,\r\n onSelectRegion,\r\n onUserStateChange,\r\n // setShouldReset,\r\n loadOrganization,\r\n loadRegions,\r\n updateColumnState,\r\n isAuthorizedForAction,\r\n };\r\n\r\n //console.debug(\"USER CONTEXT:\", value);\r\n // console.debug(\"User permission policies:\",userPermissionPolicies)\r\n\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n});\r\n\r\nconst UserContextConsumer = UserContext.Consumer;\r\n\r\nexport {\r\n UserContext,\r\n UserContextProvider,\r\n UserContextConsumer,\r\n UserContextActions,\r\n};\r\n","import React from 'react'\r\nimport {IcIcon} from \"@shoutout-labs/shoutout-themes-enterprise\";\r\nimport {toTitleCase} from \"../../../../Utils\";\r\n\r\nconst NameIconTemplate=({ name, icon })=>{\r\n return(<>\r\n {icon && }\r\n {toTitleCase(name)}\r\n )\r\n}\r\n\r\nexport default NameIconTemplate\r\n","import React from \"react\";\r\nimport { toTitleCase } from \"Utils\";\r\nimport moment from \"moment\";\r\nimport CardGenerateJobStatus from \"../../../Data/CardGenerateJobStatus\";\r\n\r\nconst convertDataToPieChartFormat = (dataset, label, value = \"count\",valueTwo) => (\r\n dataset && dataset.length > 0 &&\r\n dataset.map(dataItem => ({\r\n name: toTitleCase(dataItem?.[label] ||dataItem?.tier|| \"Unknown\"),\r\n value:(valueTwo?(dataItem?.[value]+dataItem?.[valueTwo])||\"0\":dataItem?.[value]||\"0\"),\r\n })\r\n )\r\n) || [];\r\n\r\nconst convertDataToVBarChartFormat = (dataset, properties = []) => (\r\n properties\r\n .map(el => ({\r\n key: el,\r\n value:\r\n dataset.reduce((preVal, currVal) => preVal.concat(currVal?.[el]), [])\r\n }))\r\n .reduce((obj, item) => Object.assign(obj, { [item.key]: item.value }), {})\r\n);\r\n\r\nconst convertDataToTreeMapDiskChart = (dataset) => {\r\n const nodeOrder=[\r\n CardGenerateJobStatus.NEW_REQUEST,\r\n CardGenerateJobStatus.PENDING,\r\n CardGenerateJobStatus.PRINTING,\r\n CardGenerateJobStatus.COMPLETED\r\n ]\r\n const totalCount =parseInt(dataset.reduce((a, b) => a + (b.count || 0), 0))\r\n const data=[];\r\n const elements=[];\r\n nodeOrder.forEach((cardStatus,index)=>{\r\n dataset.forEach((value)=>{\r\n if(cardStatus===value.processingStatus){\r\n data.push({\r\n \"id\" : index+1,\r\n name:value.processingStatus!== CardGenerateJobStatus.NEW_REQUEST? `${toTitleCase(value.processingStatus)} \\n \\n ${value.count} `:`New Requests \\n \\n ${value.count}` ,\r\n x: index*10,\r\n y: 0,\r\n value:value.count\r\n })\r\n if(index!==0) {\r\n elements.push({\r\n type: 'text',\r\n left: `${330*index}px`,\r\n top: '130px',\r\n style: {\r\n text: `${((value.count/totalCount)*100).toFixed(2)} %`,\r\n fontSize: 10,\r\n fontWeight: 'bold',\r\n stroke: '#000',\r\n },\r\n })\r\n }\r\n }\r\n }\r\n )\r\n })\r\n return {data,elements}\r\n};\r\n\r\nconst getSumOfData = dataset => (\r\n dataset && dataset.length > 0 &&\r\n dataset.reduce((num1, num2) => num1 + num2, 0)\r\n) || 0;\r\n\r\n\r\n/*const getDatesInRange=(startDate, endDate,dataset,properties)=> {\r\n const date = new Date(startDate);\r\n const dateBucketKeyMap = (dataset.reduce((map, obj)=> {\r\n map[obj.dateBucketKey] = obj||\"-\";\r\n return map;\r\n }, {}))\r\n const dummyObject = properties.reduce((o, key) => Object.assign(o, {[key]: \"0\"}), {});\r\n const dates = [];\r\n while (date <= endDate) {\r\n if(dateBucketKeyMap[moment(date).format(\"YYYY-MM-DD\")]){\r\n dates.push(dateBucketKeyMap[moment(date).format(\"YYYY-MM-DD\")]);\r\n\r\n }else {\r\n dates.push({...dummyObject,dateBucketKey:moment(new Date(date)).format(\"YYYY-MM-DD\")});\r\n }\r\n date.setDate(date.getDate() + 1);\r\n }\r\n return dates;\r\n}*/\r\n\r\n/*const getWeekInRange=(startDate, endDate,dataset,properties)=> {\r\n const week = new Date(startDate);\r\n const weekBucketKeyMap = (dataset.reduce((map, obj)=> {\r\n map[obj.dateBucketKey] = obj||\"-\";\r\n return map;\r\n }, {}))\r\n const dummyObject = properties.reduce((o, key) => Object.assign(o, {[key]: \"0\"}), {});\r\n const weeks = [];\r\n while (week <= endDate) {\r\n if(weekBucketKeyMap[moment(week).format(\"YYYY-W\")]){\r\n weeks.push(weekBucketKeyMap[moment(week).format(\"YYYY-W\")]);\r\n\r\n }else {\r\n weeks.push({...dummyObject,dateBucketKey:moment(new Date(week)).format(\"YYYY-W\")});\r\n }\r\n week.setDate(week.getDate() + 7);\r\n }\r\n return weeks;\r\n}*/\r\n/*\r\nconst getMonthInRange=(startDate, endDate,dataset,properties)=> {\r\n let month = new Date(startDate);\r\n const monthBucketKeyMap = (dataset.reduce((map, obj)=> {\r\n map[obj.dateBucketKey] = obj||\"-\";\r\n return map;\r\n }, {}))\r\n\r\n const dummyObject = properties.reduce((o, key) => Object.assign(o, {[key]: \"0\"}), {});\r\n const months = [];\r\n while (month <= endDate) {\r\n if(monthBucketKeyMap[moment(month).format(\"YYYY-MM\")]){\r\n months.push(monthBucketKeyMap[moment(month).format(\"YYYY-MM\")]);\r\n\r\n }else {\r\n months.push({...dummyObject,dateBucketKey:moment(new Date(month)).format(\"YYYY-MM\")});\r\n }\r\n month = new Date(moment(month).add(1, 'months'))\r\n }\r\n return months;\r\n}\r\n*/\r\n\r\n/*const getQuarterInRange=(startDate, endDate,dataset,properties)=> {\r\n let quarter = new Date(startDate);\r\n const quarterBucketKeyMap = (dataset.reduce((map, obj)=> {\r\n map[obj.dateBucketKey] = obj||\"-\";\r\n return map;\r\n }, {}))\r\n\r\n const dummyObject = properties.reduce((o, key) => Object.assign(o, {[key]: \"0\"}), {});\r\n const months = [];\r\n while (quarter <= endDate) {\r\n if(quarterBucketKeyMap[moment(quarter).format(\"YYYY-Q\")]){\r\n months.push(quarterBucketKeyMap[moment(quarter).format(\"YYYY-Q\")]);\r\n\r\n }else {\r\n months.push({...dummyObject,dateBucketKey:moment(new Date(quarter)).format(\"YYYY-Q\")});\r\n }\r\n quarter = new Date(moment(quarter).add(3, 'months'))\r\n }\r\n return months;\r\n}*/\r\n\r\nconst getCalendarRange=(startDate, endDate,dataset,properties,format,unit,amount,visualFormat)=> {\r\n let rangeElement = startDate;\r\n const dateBucketKeyMap = (dataset.reduce((map, obj)=> {\r\n map[obj.dateBucketKey] = obj||\"-\";\r\n return map;\r\n }, {}))\r\n\r\n const dummyObject = properties.reduce((o, key) => Object.assign(o, {[key]: 0}), {});\r\n const range = [];\r\n while (rangeElement <= endDate) {\r\n if(dateBucketKeyMap[moment(rangeElement).format(`${format}`)]){\r\n range.push({...dateBucketKeyMap[moment(rangeElement).format(`${format}`)],dateBucketKey:moment(new Date(rangeElement)).format(`${visualFormat}`)});\r\n }else {\r\n range.push({...dummyObject,dateBucketKey:moment(new Date(rangeElement)).format(`${visualFormat}`)});\r\n }\r\n rangeElement = new Date(moment(rangeElement).add(`${amount}`, `${unit}`))\r\n }\r\n return range;\r\n}\r\n\r\nconst sortAscendingOrder = ({dataset,fromDate,toDate,properties,dateBucket}) => {\r\n/* dataset.sort((date1, date2) => new Date(date1[`${properties[0]}`].toString()) - new Date(date2[`${properties[0]}`].toString()))*/\r\n let barChartData={}\r\n switch(dateBucket) {\r\n case \"DAY\":\r\n barChartData = convertDataToVBarChartFormat(getCalendarRange(new Date(fromDate),new Date(toDate),dataset,properties,\"YYYY-MM-DD\",\"days\",1,\"YYYY-MM-DD\"), properties)\r\n break;\r\n case \"WEEK\":\r\n barChartData=convertDataToVBarChartFormat(getCalendarRange(new Date(fromDate),new Date(toDate),dataset,properties,\"YYYY-W\",\"days\",7,\"MMM-DD-YYYY\"),properties)\r\n break;\r\n case \"MONTH\":\r\n barChartData=convertDataToVBarChartFormat(getCalendarRange(new Date(fromDate),new Date(toDate),dataset,properties,\"YYYY-MM\",\"months\",1,\"YYYY-MMM\"),properties)\r\n break;\r\n case \"QUARTER\":\r\n barChartData=convertDataToVBarChartFormat(getCalendarRange(new Date(fromDate),new Date(toDate),dataset,properties,\"YYYY-Q\",\"months\",3,\"YYYY-[Q]Q\"),properties)\r\n break;\r\n case \"YEAR\":\r\n barChartData=convertDataToVBarChartFormat(getCalendarRange(new Date(fromDate),new Date(toDate),dataset,properties,\"YYYY\",\"years\",1,\"YYYY\"),properties)\r\n break;\r\n default:\r\n\r\n }\r\n\r\n/* if(dateBucket===\"DAY\"){\r\n const foundDateFrom = barChartData[`${properties[0]}`].some(date => date === fromDate);\r\n const foundToDate = barChartData[`${properties[0]}`].some(date => date === toDate);\r\n\r\n if(!foundDateFrom){\r\n barChartData[`${properties[0]}`].unshift(fromDate)\r\n for (let i = 1; i < properties.length; i++) {\r\n barChartData[`${properties[i]}`].unshift(0)\r\n }\r\n }\r\n if(!foundToDate){\r\n barChartData[`${properties[0]}`].push(toDate)\r\n for (let i = 1; i < properties.length; i++) {\r\n barChartData[`${properties[i]}`].push(0)\r\n }\r\n }\r\n }*/\r\n return barChartData\r\n};\r\n\r\nconst subtractTwoDays=({selection})=>{\r\n const startDate = moment(selection.startDate, \"DD-MM-YYYY\");\r\n const endDate =moment(selection.endDate, \"DD-MM-YYYY\").add(1, 'days');\r\n const diff = endDate.diff(startDate);\r\n const diffDuration = moment.duration(diff);\r\n return{\r\n days:(diffDuration.years() ||diffDuration.weeks() || diffDuration.months()) ? 0 :diffDuration.days(),\r\n weeks:(diffDuration.years() || diffDuration.months()) ? 0: diffDuration.weeks(),\r\n months:diffDuration.years()? 0: diffDuration.months(),\r\n years:diffDuration.years(),\r\n }\r\n}\r\nconst sortCaret = (order) => {\r\n return ;\r\n};\r\nexport {\r\n convertDataToPieChartFormat,\r\n convertDataToVBarChartFormat,\r\n getSumOfData,sortAscendingOrder,\r\n subtractTwoDays,\r\n sortCaret,\r\n convertDataToTreeMapDiskChart\r\n};\r\n","import React, { useCallback, useContext, useMemo, useState } from \"react\";\r\nimport { useLocation, useHistory } from \"react-router-dom\";\r\nimport {\r\n SideNavigationBar,\r\n DropdownButton,\r\n DropdownItem,\r\n Accordion,\r\n Nav,\r\n IcIcon,\r\n} from \"@shoutout-labs/shoutout-themes-enterprise\";\r\nimport {\r\n faBell,\r\n faPostcard,\r\n faMoneyBillStack,\r\n faDollarSign,\r\n faHistoryAlt,\r\n faFileImport,\r\n faSyncExclamation,\r\n faChart,\r\n faSlidersV,\r\n faSetting,\r\n faLockAccess,\r\n faShare,\r\n faUserAlt,\r\n faCoins,\r\n faGift,\r\n faPlusCircle,\r\n faUser,\r\n faStore,\r\n faMedal,\r\n faUsers,\r\n faGlobe,\r\n faSearch,\r\n faLock,\r\n faSuitcase,\r\n} from \"FaICIconMap\";\r\nimport logo from \"./../../assets/images/logo_full_blue.png\";\r\nimport { DataContext, UserContext } from \"Contexts\";\r\nimport { toReplaceSpaceWithHyphen } from \"Utils\";\r\nimport { AccessPermissionModules, AccessPermissionModuleNames } from \"Data\";\r\nimport UserBoundaryType from \"../../Data/IdentityUserBoundaryType\";\r\nimport NavigationLink from \"./NavigationLink\";\r\n\r\nimport \"./Navigation.scss\";\r\n\r\nconst CustomSidebarMainToggle = ({ eventKey, icon, onSelect }) => {\r\n const onClick = useCallback(() => {\r\n onSelect(eventKey);\r\n }, [eventKey, onSelect]);\r\n return (\r\n \r\n );\r\n};\r\n\r\nconst Navigation = () => {\r\n const location = useLocation();\r\n const history = useHistory();\r\n\r\n const {\r\n organization,\r\n userRegions,\r\n onSelectRegion,\r\n selectedRegion: region,\r\n isAuthorizedForAction,\r\n userBoundaryType\r\n } = useContext(UserContext);\r\n const { rewards = [], isLoadingPartnerRewards } = useContext(DataContext);\r\n\r\n const [activeEventKey, setActiveEventKey] = useState(\"\");\r\n\r\n const navList = useMemo(() => {\r\n const isNotAMerchantUser= userBoundaryType!==UserBoundaryType.MERCHANT;\r\n return [\r\n {\r\n tab: \"Members\",\r\n path: \"/members\",\r\n icon: faUserAlt,\r\n },\r\n {\r\n tab: \"Find Members\",\r\n path: \"/find-members\",\r\n icon: faSearch,\r\n },\r\n ...(isAuthorizedForAction(\r\n AccessPermissionModuleNames.POINT_RULES,\r\n AccessPermissionModules[AccessPermissionModuleNames.POINT_RULES]\r\n .actions.ListPointRules\r\n )\r\n ? [\r\n {\r\n tab: \"Point Rules\",\r\n path: \"/point-rules\",\r\n icon: faCoins,\r\n },\r\n ]\r\n : []),\r\n ...(isAuthorizedForAction(\r\n AccessPermissionModuleNames.REWARD,\r\n AccessPermissionModules[AccessPermissionModuleNames.REWARD]\r\n .actions.ListRewards\r\n )\r\n ? [\r\n {\r\n tab: \"Redemptions\",\r\n path: \"/redemptions\",\r\n icon: faGift,\r\n secondaryLinks: [\r\n {\r\n tab: \"Rewards\",\r\n path: \"/redemptions/rewards\",\r\n icon: faGift,\r\n },\r\n\r\n //partner rewards only have the redemption log atm\r\n ...(isAuthorizedForAction(\r\n AccessPermissionModuleNames.REWARD,\r\n AccessPermissionModules[\r\n AccessPermissionModuleNames.REWARD\r\n ].actions.ListRewardRedemptionLogs\r\n )\r\n ? [\r\n ...(isLoadingPartnerRewards\r\n ? [\r\n {\r\n tab: \"Loading...\",\r\n path: \"\",\r\n icon: null,\r\n },\r\n ]\r\n : rewards.length > 0\r\n ? rewards.map((reward) => ({\r\n tab: reward?.name,\r\n path: `/redemptions/${toReplaceSpaceWithHyphen(\r\n reward?.name\r\n )}`,\r\n icon: faGift,\r\n }))\r\n : []),\r\n ]\r\n : []),\r\n ],\r\n },\r\n ]\r\n : []),\r\n\r\n {\r\n tab: \"Cards\",\r\n path: \"/cards\",\r\n icon: faPostcard,\r\n secondaryLinks: [\r\n ...(isAuthorizedForAction(\r\n AccessPermissionModuleNames.CARD,\r\n AccessPermissionModules[\r\n AccessPermissionModuleNames.CARD\r\n ].actions.ListCards\r\n )\r\n ? [\r\n {\r\n tab: \"Card Pool\",\r\n path: \"/cards/pool\",\r\n icon: faMoneyBillStack,\r\n }\r\n ]\r\n : []),\r\n ...(isAuthorizedForAction(\r\n AccessPermissionModuleNames.CARD,\r\n AccessPermissionModules[\r\n AccessPermissionModuleNames.CARD\r\n ].actions.CreateCardBatchJob\r\n ) ||\r\n isAuthorizedForAction(\r\n AccessPermissionModuleNames.CARD,\r\n AccessPermissionModules[\r\n AccessPermissionModuleNames.CARD\r\n ].actions.ListCardBatchJobs\r\n )\r\n ? [\r\n {\r\n tab: \"Instant Cards\",\r\n path: \"/cards/instant-cards\",\r\n icon: faPlusCircle,\r\n },\r\n {\r\n tab: \"Digital Cards\",\r\n path: \"/cards/digital-cards\",\r\n icon: faPlusCircle,\r\n },\r\n {\r\n tab: \"Embossed Cards\",\r\n path: \"/cards/embossed-cards\",\r\n icon: faPlusCircle,\r\n },\r\n ]\r\n : []),\r\n ],\r\n },\r\n\r\n {\r\n tab: \"Tiers\",\r\n path: \"/tiers\",\r\n icon: faMedal,\r\n secondaryLinks: [\r\n {\r\n tab: \"Affinity Groups\",\r\n path: \"/tiers/affinity_group\",\r\n icon: faMedal,\r\n },\r\n\r\n ...(isAuthorizedForAction(\r\n AccessPermissionModuleNames.TIER,\r\n AccessPermissionModules[\r\n AccessPermissionModuleNames.TIER\r\n ].actions.ListTiers\r\n )\r\n ? [\r\n {\r\n tab: \"Tiers\",\r\n path: \"/tiers/tier\",\r\n icon: faMedal,\r\n },\r\n ]\r\n : []),\r\n ],\r\n },\r\n {\r\n tab: \"Transactions\",\r\n path: \"/transactions\",\r\n icon: faDollarSign,\r\n secondaryLinks: [\r\n ...(isAuthorizedForAction(\r\n AccessPermissionModuleNames.TRANSACTION,\r\n AccessPermissionModules[\r\n AccessPermissionModuleNames.TRANSACTION\r\n ].actions.ListTransactions\r\n )\r\n ? [\r\n {\r\n tab: \"Transaction History\",\r\n path: \"/transactions/history\",\r\n icon: faHistoryAlt,\r\n },\r\n ]\r\n : []),\r\n ...(isAuthorizedForAction(\r\n AccessPermissionModuleNames.TRANSACTION,\r\n AccessPermissionModules[\r\n AccessPermissionModuleNames.TRANSACTION\r\n ].actions.ListTransactionImportJobs\r\n ) ||\r\n isAuthorizedForAction(\r\n AccessPermissionModuleNames.TRANSACTION,\r\n AccessPermissionModules[\r\n AccessPermissionModuleNames.TRANSACTION\r\n ].actions.CreateTransactionImportJob\r\n )\r\n ? [\r\n {\r\n tab: \"Import Transactions\",\r\n path: \"/transactions/import\",\r\n icon: faFileImport,\r\n },\r\n ]\r\n : []),\r\n ...(isAuthorizedForAction(\r\n AccessPermissionModuleNames.TRANSACTION,\r\n AccessPermissionModules[\r\n AccessPermissionModuleNames.TRANSACTION\r\n ].actions.ListStagedTransaction\r\n )\r\n ? [\r\n {\r\n tab: \"Invalid Transactions\",\r\n path: \"/transactions/invalid\",\r\n icon: faSyncExclamation,\r\n },\r\n ]\r\n : []),\r\n // {\r\n // tab: \"Anomaly Transactions\",\r\n // path: \"/transactions/anomaly\",\r\n // icon: faExclamationTriangle,\r\n // },\r\n ],\r\n },\r\n {\r\n tab: \"Merchants\",\r\n path: \"/merchants\",\r\n icon: faStore,\r\n },\r\n {\r\n tab: \"Notifications\",\r\n path: \"/notifications\",\r\n icon: faBell,\r\n secondaryLinks: [\r\n ...(isAuthorizedForAction(\r\n AccessPermissionModuleNames.NOTIFICATION,\r\n AccessPermissionModules[AccessPermissionModuleNames.NOTIFICATION]\r\n .actions.ListNotificationLogs\r\n )\r\n ? [\r\n {\r\n tab: \"Message Log\",\r\n path: \"/notifications/message-log\",\r\n icon: faHistoryAlt,\r\n },\r\n ]\r\n : []),\r\n ...(isAuthorizedForAction(\r\n AccessPermissionModuleNames.NOTIFICATION,\r\n AccessPermissionModules[AccessPermissionModuleNames.NOTIFICATION]\r\n .actions.ListNotifications\r\n )\r\n ? [\r\n {\r\n tab: \"Templates\",\r\n path: \"/notifications/templates\",\r\n icon: faFileImport,\r\n },\r\n ]\r\n : []),\r\n\r\n ],\r\n },\r\n {\r\n tab: \"Analytics\",\r\n path: \"/analytics\",\r\n icon: faChart,\r\n secondaryLinks: [\r\n {\r\n tab: \"Members\",\r\n path: \"/analytics/members\",\r\n icon: faUsers,\r\n },\r\n {\r\n tab: \"Points\",\r\n path: \"/analytics/points\",\r\n icon: faCoins,\r\n },\r\n {\r\n tab: \"Rewards\",\r\n path: \"/analytics/rewards\",\r\n icon: faGift,\r\n },\r\n {\r\n tab: \"Cards\",\r\n path: \"/analytics/cards\",\r\n icon: faPostcard,\r\n },\r\n {\r\n tab: \"Tiers\",\r\n path: \"/analytics/tiers\",\r\n icon: faStore,\r\n },\r\n {\r\n tab: \"Merchants\",\r\n path: \"/analytics/merchants\",\r\n icon: faStore,\r\n },\r\n ],\r\n },\r\n {\r\n tab: \"Fraudulence\",\r\n path: \"/fraudulence\",\r\n icon: faLock,\r\n secondaryLinks: [\r\n {\r\n tab: \"Fraud\",\r\n path: \"/fraudulence/fraud\",\r\n icon: faUsers,\r\n },\r\n {\r\n tab: \"Audit Log\",\r\n path: \"/fraudulence/auditLog\",\r\n icon: faCoins,\r\n }\r\n ],\r\n },\r\n {\r\n tab: \"Jobs\",\r\n path: \"/jobs\",\r\n icon: faSuitcase,\r\n },\r\n {\r\n tab: \"Control Panel\",\r\n path: \"/control-panel\",\r\n icon: faSlidersV,\r\n secondaryLinks: [\r\n ...(isNotAMerchantUser?[{\r\n tab: \"Settings\",\r\n path: \"/control-panel/settings/members\",\r\n icon: faSetting,\r\n }]:[]),\r\n {\r\n tab: \"Access Control\",\r\n path: \"/control-panel/access-control\",\r\n icon: faLockAccess,\r\n },\r\n {\r\n tab: \"Charity List\",\r\n path: \"/control-panel/charity-list\",\r\n icon: faShare,\r\n },\r\n ],\r\n },\r\n {\r\n tab: \"Profile\",\r\n path: \"/profile\",\r\n icon: faUser,\r\n },\r\n ];\r\n }, [userBoundaryType,isAuthorizedForAction, rewards, isLoadingPartnerRewards]);\r\n\r\n // const region = useMemo(() => {\r\n // return organization.regions.find((item) => item._id === regionId) || null;\r\n // }, [organization, regionId]);\r\n\r\n const navigateTo = useCallback(\r\n (e) => {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n history.push(e.currentTarget.getAttribute(\"href\"));\r\n },\r\n [history]\r\n );\r\n\r\n const onSetActiveEventKey = useCallback(\r\n (eventKey) => {\r\n setActiveEventKey(eventKey !== activeEventKey ? eventKey : \"\");\r\n },\r\n [setActiveEventKey, activeEventKey]\r\n );\r\n\r\n const isGlobalSettings = useMemo(() => {\r\n if (location.pathname.includes(\"/control-panel/\")) {\r\n return true;\r\n }\r\n return false;\r\n }, [location]);\r\n\r\n return (\r\n //
\r\n
\r\n \r\n {/*
*/}\r\n {/*
\r\n \"ShoutOUT\"\r\n
*/}\r\n\r\n {isGlobalSettings ? (\r\n \r\n \r\n Global\r\n
\r\n }\r\n disabled\r\n />\r\n ) : (\r\n \r\n {region.regionIconUrl && (\r\n \r\n )}\r\n \r\n {region.regionName}\r\n \r\n \r\n )\r\n }\r\n className=\"\"\r\n onSelect={onSelectRegion}\r\n >\r\n {userRegions.map(\r\n ({ _id, regionIconUrl, regionName }) => {\r\n return (\r\n \r\n {region.regionIconUrl && (\r\n \r\n )}\r\n {regionName}\r\n \r\n );\r\n }\r\n )}\r\n \r\n )}\r\n {/* \r\n \r\n Dashboard\r\n */}\r\n \r\n {navList.map((item) => {\r\n /* switch(item.tab) {\r\n case \"Cards\":\r\n return (\r\n \r\n );\r\n break;\r\n default:\r\n return (\r\n \r\n );\r\n }\r\n\r\n */\r\n\r\n if (item.secondaryLinks) {\r\n return (\r\n
\r\n \r\n \r\n
\r\n {item.secondaryLinks.map(\r\n ({ tab, path }) => (\r\n \r\n \r\n {tab}\r\n \r\n \r\n )\r\n )}\r\n
\r\n
\r\n
\r\n );\r\n }\r\n return (\r\n \r\n );\r\n })}\r\n {/*
*/}\r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nexport default Navigation;\r\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAANsAAAAtCAYAAAAnSB5EAAAACXBIWXMAAAsTAAALEwEAmpwYAAAHZWlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNi4wLWMwMDIgNzkuMTY0NDYwLCAyMDIwLzA1LzEyLTE2OjA0OjE3ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoV2luZG93cykiIHhtcDpDcmVhdGVEYXRlPSIyMDE5LTA3LTIzVDE1OjE4OjQ2KzA1OjMwIiB4bXA6TW9kaWZ5RGF0ZT0iMjAyMS0wNi0yOFQxNTo0NTozOSswNTozMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAyMS0wNi0yOFQxNTo0NTozOSswNTozMCIgZGM6Zm9ybWF0PSJpbWFnZS9wbmciIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpiY2IxMjM0OC04MjY3LTY1NGUtYjNiNC1hMDA0N2U4MmMwMTkiIHhtcE1NOkRvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDpiZGVhZTExMC05MTQzLWMyNGItODA5OC1iYjMwM2ExOGIzY2EiIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo0NGZjNjM0NC01OWU1LTc4NDItYmM0Zi1lZWFhNWIzMzRiMjUiPiA8cGhvdG9zaG9wOkRvY3VtZW50QW5jZXN0b3JzPiA8cmRmOkJhZz4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6MmM4YjEyZGYtM2MzOC0xOTRhLThlZWQtNmU5YThiMWVjNzBiPC9yZGY6bGk+IDwvcmRmOkJhZz4gPC9waG90b3Nob3A6RG9jdW1lbnRBbmNlc3RvcnM+IDx4bXBNTTpIaXN0b3J5PiA8cmRmOlNlcT4gPHJkZjpsaSBzdEV2dDphY3Rpb249ImNyZWF0ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6NDRmYzYzNDQtNTllNS03ODQyLWJjNGYtZWVhYTViMzM0YjI1IiBzdEV2dDp3aGVuPSIyMDE5LTA3LTIzVDE1OjE4OjQ2KzA1OjMwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoV2luZG93cykiLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249InNhdmVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjE4M2I3YTljLTI4YTQtMmU0YS04MmM3LWJmNzE3YjkzYjUyNyIgc3RFdnQ6d2hlbj0iMjAxOS0xMS0wNFQxOTozMjozMyswNTozMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTkgKFdpbmRvd3MpIiBzdEV2dDpjaGFuZ2VkPSIvIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDpiY2IxMjM0OC04MjY3LTY1NGUtYjNiNC1hMDA0N2U4MmMwMTkiIHN0RXZ0OndoZW49IjIwMjEtMDYtMjhUMTU6NDU6MzkrMDU6MzAiIHN0RXZ0OnNv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\"","// import UserProfilePage from 'Components/controlPanel/users/userProfile/UserProfilePage';\r\nimport React, { lazy, Suspense, useContext, useEffect } from \"react\";\r\nimport {\r\n Switch,\r\n Route,\r\n useLocation,\r\n useHistory,\r\n Redirect,\r\n} from \"react-router-dom\";\r\n//import MainNavigation from '../navigation/MainNavigation';\r\nimport Navigation from \"../navigation/Navigation\";\r\nimport { UserContext } from \"Contexts\";\r\nimport { isEmptyObject } from \"Utils\";\r\nimport qs from \"qs\";\r\nimport \"./Home.css\";\r\n\r\n// const DashboardPage = lazy(() => import('../dashboard/DashboardPage'));\r\nconst MembersPage = lazy(() => import(\"../members/MembersPage\"));\r\nconst TiersPage = lazy(() => import(\"../tiers/TiersPage\"));\r\nconst TransactionsPage = lazy(() => import(\"../transactions/TransactionsPage\"));\r\n// const Configurations = lazy(() => import('../configurations/Configurations'));\r\n// const ProfilePage = lazy(() => import('../members/profile/ProfilePage'));\r\nconst MyProfilePage = lazy(() => import(\"../myProfile/MyProfilePage\"));\r\n\r\nconst CreateTierPage = lazy(() =>\r\n import(\"../tiers/createTiers/CreateTierPage\")\r\n);\r\nconst NotificationPage = lazy(() => import(\"../notification/NotificationPage\"));\r\nconst CardsPage = lazy(() => import(\"../cards/CardsPage\"));\r\nconst ControlPanelPage = lazy(() => import(\"../controlPanel/ControlPanelPage\"));\r\n// const UserProfilePage = lazy(() => import('../controlPanel/users/userProfile/UserProfilePage'));\r\nconst PointRulesPage = lazy(() => import(\"../pointRules/PointRulesPage\"));\r\nconst FindMembersPage = lazy(() => import(\"../findMembers/FindMembersPage\"));\r\nconst MerchantsPage = lazy(() => import(\"../merchants/MerchantsPage\"));\r\nconst RedemptionsPage = lazy(() => import(\"../redemptions/RedemptionsPage\"));\r\nconst AnalyticsPage = lazy(() => import(\"../analyticsView/AnalyticsPage\"));\r\nconst FraudulencePage = lazy(() => import(\"../fraud/FraudulencePage\"));\r\nconst JobsPage = lazy(() => import(\"../jobs/JobsPage\"));\r\n\r\nconst Home = () => {\r\n const { selectedRegion } = useContext(UserContext);\r\n const history = useHistory();\r\n const location = useLocation();\r\n\r\n useEffect(() => {\r\n if (!isEmptyObject(selectedRegion)) {\r\n setTimeout(() => {\r\n history.replace({\r\n pathname: \"/refresh\",\r\n search: \"?url=\" + encodeURIComponent(location.pathname),\r\n });\r\n }, 0);\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [selectedRegion]);\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 Loading...
}>\r\n \r\n {\r\n const url =\r\n qs.parse(location.search, { ignoreQueryPrefix: true })\r\n ?.url || \"/\";\r\n return ;\r\n }}\r\n />\r\n {/* */}\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {/* */}\r\n {/* */}\r\n {/* */}\r\n {/* */}\r\n {/* */}\r\n {/* */}\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n );\r\n};\r\n\r\nexport default Home;\r\n","import React, { useEffect} from 'react'\r\nimport { Button} from '@shoutout-labs/shoutout-themes-enterprise';\r\n\r\nconst LoginPage = () => {\r\n useEffect(() => {\r\n window.location.replace(`https://getshoutout.com/logout?referrer=${window.location.origin}`);\r\n }, []);\r\n return (
\r\n

Redirecting...

\r\n \r\n
)\r\n}\r\n\r\nexport default LoginPage\r\n","import React, { useContext } from \"react\";\r\nimport {\r\n Modal,\r\n Button,\r\n ShIcon,\r\n} from \"@shoutout-labs/shoutout-themes-enterprise\";\r\nimport { ShInformationCircleOutline } from \"@shoutout-labs/shoutout-themes-enterprise/lib/ShoutOUTIcon\";\r\nimport { UserContext } from \"Contexts\";\r\nconst SystemInitFailedMessage = ({ message }) => {\r\n const { logout } = useContext(UserContext);\r\n return (\r\n \r\n \r\n
\r\n \r\n
\r\n {message}\r\n\r\n
\r\n \r\n
\r\n
\r\n
\r\n );\r\n};\r\nexport default SystemInitFailedMessage;\r\n","import React, { useContext, useEffect } from \"react\";\r\nimport { Route } from \"react-router-dom\";\r\nimport { UserContext } from \"./Contexts/userContext\";\r\nimport { LoadingComponent } from \"./Components/utils/UtilComponents\";\r\nimport SystemInitFailedMessage from \"Components/system/initFailed\";\r\n\r\nconst AuthRoute = ({ component: Component, routeName, ...rest }) => {\r\n const { \r\n isAuth, \r\n isRunningSystemInit, \r\n systemInitFailMessage, \r\n initialized, \r\n login \r\n } = useContext(UserContext);\r\n\r\n useEffect(() => {\r\n if(!isAuth && initialized) {\r\n login();\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [isAuth, initialized]);\r\n\r\n return (\r\n \r\n (!isAuth && initialized) || isRunningSystemInit ? (\r\n \r\n ) : systemInitFailMessage ? (\r\n \r\n ) : (\r\n \r\n )\r\n }\r\n />\r\n );\r\n};\r\n\r\nexport default AuthRoute;\r\n","import React from 'react';\r\n\r\nimport { Route } from 'react-router-dom';\r\nconst CustomRoute = ({ component: Component,routeName, ...rest }) => {\r\n return ((\r\n \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,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\"","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 \r\n\r\n \r\n \r\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\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":""}