{"version":3,"sources":["Components/Main/Compliance/shared/helpers.tsx","Components/Utilities/QueryHelper.jsx","Components/Hooks/Query.jsx","features/prefsFeature/prefsSlice.tsx","Components/Utilities/Routes.tsx","Components/Widgets/Card.tsx","Components/Utilities.jsx","Components/Widgets/Toast.js","Components/Main/SubComponents/GenericSyncfusion/GenericSyncfusionSelectors.tsx","Components/Main/SubComponents/GenericSyncfusion/GenericSyncfusionTable.tsx","features/complianceFeature/complianceSlice.tsx","Auth/can.js","Auth/authProvider.ts","Components/Utilities/SweetAlert.jsx","Components/Widgets/MemberLookup.jsx","Components/Widgets/GenericTrainingSelect.jsx","Components/Main/SubComponents/GenericSyncfusion/GenericActionsMenu.tsx","Components/Widgets/StatusIcon.tsx","Components/Widgets/DashRollupStats.jsx","Components/Widgets/ReportDonutChart.jsx","Components/Widgets/DashTimeframe.jsx","Components/Main/Communications/Campaigns/Campaigns.tsx","Components/Widgets/DashChartColumns.jsx","Components/Widgets/DashChartAnalytics.jsx","Components/Main/Communications/Campaigns/CampaignWrapper.tsx","Components/Main/Communications/CommunicationsDashboard.jsx","features/userFeature/userSlice.tsx","Assets/houses.jpg","Components/Main/Unsubscribe.jsx","Components/Unauthenticated.tsx","Components/Widgets/Breadcrumbs.jsx","Components/Footer.tsx","Components/Widgets/Menu.tsx","Components/LogoBar.tsx","Components/Main.tsx","Components/Widgets/User.tsx","Components/Header.tsx","App.tsx","Auth/caslAuth.ts","index.tsx","app/hooks.tsx","app/store.ts","Components/Widgets/ThemeLoader.jsx"],"names":["dayjs","extend","utc","QueryParameterOperation","errorMessages","default","icons","email","invoice","timer","ReportStatuses","HistoryEventNames","Format","ClearedOnType","AlertEntityType","TicklerAlertType","ExceptionsType","CaseStatus","NoticeType","filterComplianceUsers","users","filteredResults","filter","r","_r$department","department","toLowerCase","length","sort","a","b","lastNameA","displayName","split","pop","lastNameB","_r$department2","sortLegalOutline","items","aParts","ruleNumber","bParts","aPartsLength","bPartsLength","minLength","Math","min","i","aPart","bPart","aPartInt","parseInt","bPartInt","localeCompare","getFine","rule","listing","fineType","citationFee","error","listPrice","showToast","message","type","arguments","undefined","Toast","fire","icon","title","showSuccessToast","showErrorToast","moneyFormat","Intl","NumberFormat","style","currency","maximumFractionDigits","dateFormat","shortDate","value","format","unassignedCaseDefault","admin","CorrectionStatus","noticesWithTemplates","Citation","Inquiry","Warning","Email","map","notice","replace","PurpleIn","PurpleName","FluffyIn","FluffyName","Description","concat","_toConsumableArray","item","idx","event","count","floor","random","day","week","month","year","QueryHelper","_ref","environment","tokens","_classCallCheck","operators","Equal","GreaterThan","GreaterThanOrEqual","LessThan","LessThanOrEqual","Between","NotEqual","NotEmpty","Like","HasAny","Contains","StartsWith","NotLike","ContainsAny","pageId","pageSize","search","field","criteria","orderBy","fields","use_q","this","notificationToken","notification","campaignSupportToken","mace","workflowToken","workflow","membershipToken","membership","trainingToken","training","powerBiToken","powerBi","complianceToken","memberPortalToken","memberPortal","base_url","CampaignSupport","MemberDirectory","MemberShipV3","Notification","Training","MemberPortal","Compliance","RegisteredListings","Workflow","base_config","headers","Accept","Authorization","_createClass","key","get","set","payload","campaign_config","notification_config","membership_config","training_config","powerbi_config","compliance_config","memberPortal_config","workflow_config","_get","_asyncToGenerator","_regeneratorRuntime","mark","_callee","path","resp","wrap","_context","prev","next","axios","sent","abrupt","data","stop","_x","apply","_put","_callee2","_context2","put","_x2","_x3","_patch","_callee3","_context3","patch","_x4","_x5","_post","_callee4","_context4","post","_x6","_x7","_fetchData","_callee5","resource","_context5","_x8","_fetchDataWithCriteria","_callee6","_context6","_x9","_x10","_fetchNotes","_callee7","entityIdKey","entityId","noteContextValue","_context7","op","values","_x11","_x12","_x13","_x14","_fetchDataWithCriteriaOrderBy","_callee8","_context8","_x15","_x16","_x17","_fetchUserRoles","_callee9","_context9","_fetchAllData","_callee10","totalPages","results","_context10","totalResults","_x18","_fetchResource","_callee11","id","expanded","exp","_context11","_x19","_x20","_x21","_createResource","_callee12","_context12","_x22","_x23","_updateResource","_callee13","_context13","_x24","_x25","_x26","_deleteResource","_callee14","_context14","delete","_x27","_x28","_fetchReportData","_callee15","existing","cached_data","_context15","MD5","JSON","stringify","toString","parse","sessionStorage","getItem","e","console","log","hasOwnProperty","unix","timestamp","add","Promise","resolve","reject","setTimeout","t0","setItem","_x29","_fetchMembershipAudienceMembers","_callee16","_context16","_fetchMembershipAudienceMember","_callee17","_context17","_x30","_fetchMembershipAudienceMemberDenormalized","_callee18","_context18","_x31","_fetchAudienceMembers","_callee19","_context19","_objectSpread","direction","_fetchAudienceMembersTa","_callee20","searchTerm","_context20","_x32","_fetchAudienceMemberTa","_callee21","contact_id","_context21","_x33","_fetchAudienceTypeAhead","_callee22","searchString","_context22","_x34","_fetchAudienceMember","_callee23","_context23","_x35","_fetchAllAudienceMembers","_callee24","_context24","_sendTestEmail","_callee25","_context25","_x36","_unsubscribe","_callee26","_context26","_x37","_csvUpload","_callee27","audience_id","file","_context27","_x38","_x39","_fetchMemberCount","_callee28","start_date","end_date","_context28","_x40","_x41","_fetchMemberRollup","_callee29","_context29","_x42","_x43","_fetchListing","_callee30","listing_id","_context30","webApiToken","_x44","_fetchReportEmbedUrl","_callee31","report_id","_context31","token","embedUrl","_x45","_fetchAttendees","_callee32","class_id","_args32","_context32","_fetchTopicsByClass","_callee33","_context33","_x46","_getRenderedPdf","_callee34","campaignId","_context34","_x47","_getRegisteredListings","_callee35","_context35","_getMemberManagers","_callee36","memberId","_context36","setCompliance","_x48","_getCaseAlerts","_callee37","caseId","_context37","_x49","_dismissAlert","_callee38","alertId","_context38","_x50","_dismissAllAlerts","_callee39","_context39","_x51","_getDispositions","_callee40","_context40","fetchDataWithCriteria","_x52","_replyRead","_callee41","reply","dispatch","_context41","setReplyRead","noticeId","replyId","isRead","_x53","_x54","_x55","_uploadReportCsv","_callee42","formData","userId","notifyUser","_context42","_x56","_x57","_x58","_memberTypeahead","_callee43","cancelToken","_context43","_x59","_x60","useQuery","callback","useAppSelector","getTokens","getEnvironment","savedCallback","useRef","useEffect","current","_tokens$mace","_tokens$membership","_tokens$notification","_tokens$workflow","storageName","initialState","APIPrefs","marketing","window","localStorage","localPrefs","sessionPrefs","fetchAPIMemberPrefs","createAsyncThunk","fetchStoredMemberPrefs","retrievedPrefs","fetchSessionMemberPrefs","prefsSlice","createSlice","name","reducers","setAPIPref","state","action","currentState","dot","setLocalStoragePref","setSessionPref","extraReducers","builder","addCase","fulfilled","selectPrefByPath","store","getState","prefs","_prefsSlice$actions","actions","reducer","AdminRoles","listManagementCrumbs","listManagementDefaults","showWelcome","crumbs","ROUTESINDIVIDUAL","ALLTICKETS","VIEWS","EDITTICKET_VIEWS","EDITTICKET_ALLTICKETS","Routes","abbrev","rootpath","paths","adminPaths","accessRole","WorkFlowAdmin","push","adminOnly","subPaths","childPath","Card","props","_props$iconSize","cardContent","_jsx","className","children","_jsxs","backgroundColor","color","iconSize","textAfter","_Fragment","toLocaleString","text","content","expected","toFixed","link","Link","to","getRange","startDate","endDate","keys","interval","shape","forEach","fromDate","startOf","diff","range","cloned_shape","date","toDate","getRawRange","range_array","shift","getPalette","isGUID","input","test","sanitizeHTML","_content$replace","call","containsHtmlMarkup","str","dateStandard","dateTimeStandard","dateHTMLInput","Swal","mixin","toast","position","showConfirmButton","timerProgressBar","didOpen","addEventListener","stopTimer","resumeTimer","GenericSyncfusionSelectors","options","setSelectorQuery","_ref$showClearBtn","showClearBtn","selectors","_useState","useState","_useState2","_slicedToArray","selectorValues","setSelectorValues","_useState3","_useState4","activeFilters","setActiveFilters","_useState5","_useState6","filterInputs","setFilterInputs","_useState7","_useState8","checkedDefaults","setCheckedDefaults","filterClass","useAppDispatch","prefsPath","resourceType","resourceName","join","checkDefaultValues","svs","sv","selectorChangeHandler","s","find","selector","newSelectedValues","buildFilters","_selector$selectField","_selector$valueKey","_selectorColumn$value","supportedDataTypes","selectorColumn","columns","column","includes","dataType","currentValue","GenericTrainingSelect","resource_name","selectResource","resource_label","label","onChange","target","onBlur","service_name","service","cssClass","select_field","selectField","valueKey","v","index","category","Object","reduce","acc","obj","groupTitle","groups","group","hidden","display","htmlFor","padding","SwitchComponent","checked","change","buildSelector","enablePersistence","lsFilters","select","dynamicDefault","filterValue","onClick","result","GenericSyncfusionTable","_JSON$parse","_JSON$parse$options$r","_options$columns$filt","ability","useContext","AbilityContext","accountId","getUserId","activePage","setActivePage","defaultPageSize","setPageSize","isLoaded","setIsLoaded","firstLoad","setFirstLoad","_useState9","_useState10","setError","_useState11","_useState12","setSearchString","_useState13","_useState14","memberIdString","setMemberIdString","_useState15","settings","_useState17","_useState18","selectorQuery","_useState19","_useState20","sortParams","setSortParams","_useState21","_useState22","helper","setHelper","gridControl","history","useHistory","_useState23","_useState24","setItems","_useState25","_useState26","previousQueryData","setPreviousQueryData","_useState27","_useState28","queryData","setQueryData","_useState29","_useState30","refreshData","formView","parent","routePath","orderByPath","pageSizePath","pageIdPath","_useState31","_useState32","multiSearchTerm","setMultiSearchTerm","buildQuery","_items$result","afterFetchCallback","hideSpinner","isEqual","fetchNow","onLoadCallback","showSpinner","resourceCriteria","getResource","then","catch","fetchData","_JSON$parse2","_JSON$parse2$options$","_JSON$parse2$options$2","_JSON$parse3","_JSON$parse3$options$","_JSON$parse3$options$2","_JSON$parse4","_JSON$parse4$options$","_JSON$parse4$options$2","_JSON$parse5","_JSON$parse5$options$","_JSON$parse5$options$2","setTraining","setMembership","setMembershipV3","setMace","setNotification","setMemberPortal","sp","defaultSort","c","defaultQuery","_options$defaultQuery","setDefault","dq","sq","searchField","refresh","pageOptions","pageCount","pageSizes","nameTemplate","_props$field","tag","isArray","booleanTemplate","alertTemplate","unseenChanges","fontSize","marginLeft","alertFlagTemplate","entries","_ref2","_ref3","keyword","iconClass","imageTemplate","_props$name","src","alt","selectTemplate","_column$values$value","noEnumFoundText","enumeration","customTemplate","customComponent","object","dateTemplate","createdOn","textTemplate","untruncatedText","maxWidth","whiteSpace","htmlText","dangerouslySetInnerHTML","__html","ticklerTemplate","keyLookups","arrayTemplate","_props$props$column$f","Array","_keyLookups","keyName","_item$mlsRule","arrayCountTemplate","subResourceTemplate","columnParts","isLabel","toolbarActions","showRefresh","tooltipText","prefixIcon","tableColumns","col","showInTable","_","sortBy","_options$columns$filt2","_options$columns$find2","_useState33","searchable","_useState34","searchOnField","setSearchOnField","debounceSearch","debounce","term","cancel","_options$columns$find","checkForOverride","searchOp","debouncedHandleSearch","useCallback","hideShadow","can","showNew","customToolbar","tool","getCustomToolbarAction","placeholder","showMemberSearch","MemberLookup","getFullObject","useTaEndpoint","memberSelected","selectedMemberObj","selected","contactId","GridComponent","dataSource","created","args","_document","_document$getElements","_document$getElements2","document","getElementsByClassName","setAttribute","defaultSearchPlaceholder","allowPaging","allowSorting","pageSettings","showColumnChooser","toolbar","toolbarClick","dataStateChange","requestType","sortOrder","sorted","take","currentPage","skip","ref","resizeSettings","mode","dataBound","querySelectorAll","manualSizeColumns","autoFitColumns","rowSelected","rowClick","isInteracted","rowDeselected","ColumnsDirective","_c$width","_c$textAlign","_c$allowSorting","_columnProperties$typ","_columnProperties$for","_ref4","columnProperties","width","headerText","clipMode","hideAtMedia","textAlign","arrayKeyNames","template","minWidth","ColumnDirective","displayActionColumnOverride","showDelete","showClone","showEdit","showAssign","showClaim","itemActions","newObject","_options$deleteOnUpda","createdBy","modifiedOn","modifiedBy","deleteOnUpdate","dOu","findObjectTitle","toISOString","newStatus","status","createResource","cloneObject","swalWithBootstrapButtons","showCancelButton","confirmButtonText","cancelButtonText","reverseButtons","isConfirmed","deleteResource","singularTitle","dismiss","DismissReason","editClick","assignCopy","assignTo","assignClick","userType","claim","GenericActionsMenu","Inject","services","Page","Sort","Group","Search","Toolbar","Resize","ColumnChooser","ThemeLoader","fetchComplianceAnalysts","arg","res","queryHelper","fetchAllData","fetchAors","_store$getState$compl","_store$getState$compl2","compliance","aors","fetchReportReasons","_store$getState$compl3","_store$getState$compl4","reportReasons","currentRequest","fetchNotices","_ref5","rejectWithValue","fetchDataWithCriteriaOrderBy","isCancelled","finish","setCase","_ref6","complianceCase","_ref7","addNotice","_ref8","addNoticeReply","_ref9","fetchCase","_ref10","fetchResource","fetchCitationDispositions","_ref11","_store$getState$compl5","_store$getState$compl6","citationDispositions","fetchNoteHeaders","_ref12","headline","isDeleted","fetchInvestigationDispositions","_ref13","_store$getState$compl7","_store$getState$compl8","investigationDispositions","complianceSlice","noteHeaders","notices","analysts","loadingNotices","getCase","getInvestigationDispositions","getCitationDispositions","getNotices","getComplianceAnalysts","getAors","getNoteHeaders","getReportReasons","pending","replies","_state$notices$find","_action$payload$notic","selectInvestigationDispositionsFromStore","createSelector","selectCitationDispositions","selectCaseFromStore","selectNoticesFromStore","selectCitationFromStore","noticeType","selectCitationNoticeFromStore","selectWarningNoticeFromStore","selectAnalystsFromStore","slice","firstName","selectAorsFromStore","selectReportReasonsFromStore","selectNoticesLoadingFromStore","selectRuleWikiAnalysts","user","selectNoteHeadlinesFromStore","_complianceSlice$acti","createContext","createContextualCan","Consumer","ua","navigator","userAgent","msie","indexOf","msie11","msedge","firefox","msalConfig","auth","clientId","authority","redirectUri","postLogoutRedirectUri","cache","cacheLocation","storeAuthStateInCookie","system","loggerOptions","loggerCallback","level","containsPii","LogLevel","Error","Info","info","Verbose","debug","warn","customClass","confirmButton","cancelButton","buttonsStyling","_ref$selectedMemberOb","member","_ref$getFullObject","_ref$placeholder","_ref$defaultValue","defaultValue","_ref$useTaEndpoint","autoFocus","listObj","isSearching","setIsSearching","setCancelToken","newToken","CancelToken","source","query","Query","where","updateData","lastName","loginId","memberStateLicense","showClearButton","_r$data$results","AutoCompleteComponent","filtering","fetchAudienceMembers","emailAddress","popupHeight","memberData","itemData","noRecordsTemplate","GenericSelect","_ref$resource_label","_ref$cssClass","_ref$select_field","_ref$valueKey","userFilters","_error$message","filteredUsers","departmentFilter","_result$displayName","height","isActive","setIsActive","closeMenu","removeEventListener","IconText","published","sending","completed","finalized","approved","cancelled","rejected","expired","archived","draft","deleted","unknown","StatusIcon","statusIconText","DashRollupStats","dateRange","expected_count","delivered","setDelivered","open","setOpen","bounce","setBounce","unsubscribe","setUnsubscribe","clicks","setClicks","emailContextId","fetchReportData","isSuccessful","webhookEventStats","point","uniqueContextEvents","uniqueMembers","generateLink","ReportDonutChart","campaignType","_ref$showTextStats","showTextStats","aorShortname","isEmpty","setIsEmpty","palette","endOf","audienceCriteria","emailCategory","events_we_track","d_data","x","y","parseResults","AccumulationChartComponent","legendSettings","visible","enableSmartLabels","tooltip","enable","pointRender","fill","AccumulationLegend","PieSeries","AccumulationDataLabel","AccumulationSeriesCollectionDirective","AccumulationSeriesDirective","xName","yName","innerRadius","startAngle","endAngle","radius","explode","explodeOffset","explodeIndex","explodeRadius","dataLabel","font","fontWeight","DashTimeframe","changeTimeframe","active","setActive","changeState","timeframe","CampaignResource","validation","Yup","required","showOnForm","serviceName","Campaigns","DashChartColumns","chartInstance","setData","setInterval","setDateFormat","bucket","subtract","new_date","Date","findIndex","element","getTime","click","spamreport","priorunsubscribed","priorbounced","dropped","blocked","processed","deferred","exportModule","export","ChartComponent","primaryXAxis","valueType","labelFormat","intervalType","edgeLabelPlacement","majorGridLines","labelIntersectAction","primaryYAxis","minimum","lineStyle","majorTickLines","minorTickLines","chartArea","border","palettes","toggleVisibility","StackingColumnSeries","DateTime","Legend","Tooltip","DataLabel","Category","Zoom","Export","SeriesCollectionDirective","SeriesDirective","stackingGroup","DashChartAnalytics","CampaignWrapper","configuration","CommunicationsDashboard","setTimeframe","tf","pca","PublicClientApplication","fetchMaceToken","thunkAPI","request","scopes","acquireTokenSilent","response","getUserDepartment","accessToken","fetchNotificationToken","fetchMembershipToken","fetchMemberPortalToken","fetchWorkflowToken","fetchPowerBiToken","fetchMsToken","fetchProfileData","fulfillWithValue","svcEndpoint","authUser","login","isAuthenticated","first","last","image","fetch","json","blob","url","URL","webkitURL","createObjectURL","userSlice","accountInfo","abilities","accessRoles","ms","setAccountInfo","setEnvironment","setAbilities","setAccessRoles","selectUserIdFromStore","getUser","getUserDept","getUserType","userInfo","localAccountId","userTokens","getAccessRoles","useRoleCheck","isAdmin","_userSlice$actions","Unsubscribe","_query$get","_query$get2","_query$get3","development","location","href","URLSearchParams","useLocation","setEmail","encryptedId","backgroundImage","Houses","decodeURIComponent","html","rel","Unauthenticated","urlBreadcrumbMap","match","route","Breadcrumbs","pathname","currentPath","setCurrentPath","Component","currentRouteObject","setCurrentRouteObject","cp","newRouteFound","subpath","routeSerch","NavLink","Footer","getFullYear","Menu","activeMenu","setActiveMenu","rolesCalled","setRolesCalled","routes","setRoutes","setWorkflow","fetchUserRoles","responseAccessRoles","newRoutes","routeUpdated","adminPath","isActiveSection","_item$adminPaths","path_key","_path$subPaths","LogoBar","version","logo","getLogo","CommunicationsHome","lazy","ComplianceHome","CustomerCareHome","MembershipHome","DevelopmentHome","FinanceHome","OperationsHome","TrainingHome","ReportingHome","NoMatch","Main","Suspense","fallback","Switch","Route","exact","Redirect","component","User","instance","useMsal","role","logout","Header","App","accounts","caslAbilities","defineAbility","cannot","dept","_AbilityBuilder","AbilityBuilder","rules","access","update","getCaslAbilities","fetchTokens","tokenInterval","clearInterval","createAuthRefreshInterceptor","DraggableModalProvider","Provider","msalInstance","enableAccountStorageEvents","addEventCallback","eventType","EventType","LOGIN_SUCCESS","account","setActiveAccount","ReactDOM","render","BrowserRouter","MsalProvider","MsalAuthenticationTemplate","interactionType","InteractionType","errorComponent","loadingComponent","UnauthenticatedTemplate","getElementById","useDispatch","useSelector","configureStore","userReducer","prefsReducer","complianceReducer","defaultParams","Loader"],"mappings":"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","file":"static/js/main.0759269d.chunk.js","sourcesContent":["/* eslint-disable react-hooks/exhaustive-deps */\r\nimport dayjs from \"dayjs\";\r\nimport { SweetAlertIcon } from \"sweetalert2\";\r\nimport Toast from \"../../../Widgets/Toast\";\r\nimport utc from \"dayjs/plugin/utc\";\r\ndayjs.extend(utc);\r\nexport const errorMessages = {\r\n\tdefault: \"Something went wrong\",\r\n};\r\n\r\nexport const icons = {\r\n\temail: \"fas fa-envelope\",\r\n\tinvoice: \"fa fa-dollar-sign\",\r\n\ttimer: \"fas fa-clock\",\r\n};\r\n\r\nexport enum QueryParameterOperation {\r\n\tEqual,\r\n\tGreaterThan,\r\n\tGreaterThanOrEqual,\r\n\tLessThan,\r\n\tLessThanOrEqual,\r\n\tBetween,\r\n\tNotEqual,\r\n\tNotEmpty,\r\n\tLike,\r\n\tHasAny,\r\n\tContains,\r\n\tStartsWith,\r\n\tNotLike,\r\n\tContainsAny,\r\n}\r\nexport const filterComplianceUsers = (users: IAppUser[]) => {\r\n\tlet filteredResults;\r\n\tfilteredResults = users.filter((r) => r.department?.toLowerCase() === \"compliance\");\r\n\tif (filteredResults.length) {\r\n\t\tusers = filteredResults;\r\n\t}\r\n\t// Sort list by last part of displayName ascending\r\n\tif (users.length) {\r\n\t\tusers = users.sort((a, b) => {\r\n\t\t\tconst lastNameA = a.displayName.split(\" \").pop()!.toLowerCase();\r\n\t\t\tconst lastNameB = b.displayName.split(\" \").pop()!.toLowerCase();\r\n\t\t\treturn lastNameA > lastNameB ? 1 : lastNameA < lastNameB ? -1 : 0;\r\n\t\t});\r\n\t}\r\n\r\n\treturn users.filter((r: IAppUser) => r.department?.toLowerCase() === \"compliance\");\r\n};\r\nexport const sortLegalOutline = (items: any[]) => {\r\n\treturn items?.sort((a, b) => {\r\n\t\tconst aParts = a.ruleNumber.split(\".\");\r\n\t\tconst bParts = b.ruleNumber.split(\".\");\r\n\t\tconst aPartsLength = aParts.length;\r\n\t\tconst bPartsLength = bParts.length;\r\n\t\tconst minLength = Math.min(aPartsLength, bPartsLength);\r\n\t\tfor (let i = 0; i < minLength; i++) {\r\n\t\t\tconst aPart = aParts[i];\r\n\t\t\tconst bPart = bParts[i];\r\n\t\t\tif (aPart !== bPart) {\r\n\t\t\t\tconst aPartInt = parseInt(aPart);\r\n\t\t\t\tconst bPartInt = parseInt(bPart);\r\n\t\t\t\tif (aPartInt === bPartInt) {\r\n\t\t\t\t\treturn aPart.localeCompare(bPart);\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn aPartInt - bPartInt;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn aPartsLength - bPartsLength;\r\n\t});\r\n};\r\n\r\nexport const getFine = (rule: MLSRuleEntityProperties, listing: IListing | undefined) => {\r\n\tif (rule.fineType === \"fixed\") {\r\n\t\treturn rule.citationFee;\r\n\t} else if (listing && !listing.error) {\r\n\t\treturn listing.listPrice * (rule.citationFee / 100);\r\n\t} else {\r\n\t\treturn 0;\r\n\t}\r\n};\r\n\r\nexport const showToast = (message: string, type: SweetAlertIcon = \"success\") => {\r\n\tToast.fire({\r\n\t\ticon: type,\r\n\t\ttitle: message,\r\n\t});\r\n};\r\n\r\nexport const showSuccessToast = (message: string, type: SweetAlertIcon = \"success\") => {\r\n\tToast.fire({\r\n\t\ticon: type,\r\n\t\ttitle: message,\r\n\t});\r\n};\r\n\r\nexport const showErrorToast = (message: string = \"Something went wrong\", type: SweetAlertIcon = \"error\") => {\r\n\tToast.fire({\r\n\t\ticon: type,\r\n\t\ttitle: message,\r\n\t});\r\n};\r\n\r\nexport const moneyFormat = new Intl.NumberFormat(\"en-US\", {\r\n\tstyle: \"currency\",\r\n\tcurrency: \"USD\",\r\n\tmaximumFractionDigits: 0, // rounds up\r\n});\r\n\r\nexport const dateFormat = \"MM/DD/YYYY\";\r\n\r\nexport const shortDate = (value: string) => {\r\n\treturn dayjs(value).utc().format(\"MM/DD/YYYY\");\r\n};\r\n\r\n// unassignedDefault\r\nexport const unassignedCaseDefault = \"00000000-0000-0000-0000-000000000000\";\r\nexport const admin = \"ADMIN\";\r\n// Move\r\nexport type RouteParam = {\r\n\tcaseId: string;\r\n\titemId: string;\r\n\ttab: string;\r\n\tlistingId: string;\r\n\tid: string;\r\n};\r\n\r\nexport interface Pokedex {\r\n\topenapi: string;\r\n\tinfo: Info;\r\n\tpaths: CompliancePaths;\r\n\tcomponents: Components;\r\n}\r\n\r\nexport interface Components {\r\n\tschemas: Schemas;\r\n\tsecuritySchemes: SecuritySchemes;\r\n}\r\n\r\nexport interface Schemas {\r\n\tQueryParameterOperation: QueryTion;\r\n\tApiQueryParameter: APIQueryParameter;\r\n\tQuerySortDirection: QueryTion;\r\n\tApiSortParameter: APISortParameter;\r\n\tApiQuery: APIQuery;\r\n\tComplianceCaseEntity: ComplianceCaseEntity;\r\n\tAlertEntity: AlertEntityClass;\r\n\tAlertQueryResult: QueryResult;\r\n\tAlertServiceResult: ServiceResult;\r\n\tAppealEntity: AppealEntity;\r\n\tAppealQueryResult: QueryResult;\r\n\tAppealServiceResult: ServiceResult;\r\n\tAttachmentEntity: AttachmentEntity;\r\n\tAttachmentQueryResult: QueryResult;\r\n\tAttachmentServiceResult: ServiceResult;\r\n\tMLSRuleEntity: MLSRuleEntity;\r\n\tNoticeDefinitionEntity: NoticeDefinitionEntity;\r\n\tBillingEntity: BillingEntity;\r\n\tBillingQueryResult: QueryResult;\r\n\tBillingServiceResult: ServiceResult;\r\n\tCaseNoteEntity: AlertEntityClass;\r\n\tCaseNoteQueryResult: QueryResult;\r\n\tCaseNoteServiceResult: ServiceResult;\r\n\tCitationsReviewEntity: CitationsReviewEntity;\r\n\tCitationsReviewQueryResult: QueryResult;\r\n\tCitationsReviewServiceResult: ServiceResult;\r\n\tComplianceCaseQueryResult: QueryResult;\r\n\tComplianceCaseServiceResult: ServiceResult;\r\n\tEnumerationLookupEntity: EnumerationLookupEntity;\r\n\tEnumerationLookupQueryResult: QueryResult;\r\n\tEnumerationLookupServiceResult: ServiceResult;\r\n\tHearingLocationEntity: HearingLocationEntity;\r\n\tHearingLocationQueryResult: QueryResult;\r\n\tHearingLocationServiceResult: ServiceResult;\r\n\tMLSRuleQueryResult: QueryResult;\r\n\tMLSRuleServiceResult: ServiceResult;\r\n\tNoticeDefinitionQueryResult: QueryResult;\r\n\tNoticeDefinitionServiceResult: ServiceResult;\r\n\tNotificationEntity: NotificationEntityClass;\r\n\tNotificationQueryResult: QueryResult;\r\n\tNotificationServiceResult: ServiceResult;\r\n\tPaymentEntity: PaymentEntity;\r\n\tPaymentQueryResult: QueryResult;\r\n\tPaymentServiceResult: ServiceResult;\r\n\tReminderEntity: NotificationEntityClass;\r\n\tReminderQueryResult: QueryResult;\r\n\tReminderServiceResult: ServiceResult;\r\n\tReportReasonCategoryEntity: ReportReasonYEntity;\r\n\tReportReasonPriorityEntity: ReportReasonYEntity;\r\n\tReportReasonEntity: ReportReasonEntity;\r\n\tReportEntity: ReportEntity;\r\n\tReportQueryResult: QueryResult;\r\n\tReportServiceResult: ServiceResult;\r\n\tReportReasonQueryResult: QueryResult;\r\n\tReportReasonServiceResult: ServiceResult;\r\n\tReportReasonCategoryQueryResult: QueryResult;\r\n\tReportReasonCategoryServiceResult: ServiceResult;\r\n\tReportReasonPriorityQueryResult: QueryResult;\r\n\tReportReasonPriorityServiceResult: ServiceResult;\r\n\tReportViolationEntity: ReportViolationEntity;\r\n\tReportViolationQueryResult: QueryResult;\r\n\tReportViolationServiceResult: ServiceResult;\r\n\tViolationEntity: ViolationEntity;\r\n\tViolationQueryResult: QueryResult;\r\n\tViolationServiceResult: ServiceResult;\r\n}\r\n\r\nexport interface AlertEntityClass {\r\n\trequired: string[];\r\n\ttype: AlertEntityType;\r\n\tproperties: AlertEntityProperties;\r\n\tadditionalProperties: boolean;\r\n}\r\n// Move\r\nexport interface IAppUser {\r\n\tindexedOn: string;\r\n\tfirstName: string;\r\n\tlastName: string;\r\n\temail: string;\r\n\tdisplayName: string;\r\n\tuserType: string;\r\n\tdepartment: string;\r\n\tcampaigns: string;\r\n\tcreatedOn: string;\r\n\tid: string;\r\n\tmodifiedOn: string;\r\n}\r\n// Move\r\nexport interface AlertEntityProperties {\r\n\tcomplianceCaseId: string;\r\n\tcomplianceCase: string;\r\n\tuserId?: string;\r\n\ttext: string;\r\n\tclearedOn?: string;\r\n\tcreatedBy: string;\r\n\tcreatedOn: string;\r\n\tid: string;\r\n\tmodifiedBy: string;\r\n\tmodifiedOn: string;\r\n\tcontextId?: string;\r\n\tnoteContext?: string;\r\n\tmemberName: string;\r\n}\r\n\r\nexport interface ClearedOn {\r\n\ttype: ClearedOnType;\r\n\tformat: Format;\r\n}\r\n\r\nexport enum ReportStatuses {\r\n\tOpen = \"ReportStatuses.Open\",\r\n\tClosed = \"ReportStatuses.Closed\",\r\n}\r\n\r\nexport enum HistoryEventNames {\r\n\tCaseNoteUpdated = \"Case Note Updated\",\r\n\tCaseNotes = \"Case Notes\",\r\n\tCase = \"Case\",\r\n\tCaseReviewStatusChange = \"Case Review Status Change\",\r\n\tCaseAssigned = \"Case Assigned\",\r\n\tCaseDispositionChange = \"Case Disposition Change\",\r\n\tCaseStatusChange = \"Case Status Changes\",\r\n\tInvoiceCreated = \"Invoice Created\",\r\n\tAdminFeeAdded = \"Admin Fee Added\",\r\n\tNoticeDefinition = \"NoticeDefinition\",\r\n\tCitationNotice = \"Citation Notice\",\r\n\tEmailNotice = \"Email Notice\",\r\n\tInquiryNotice = \"Inquiry Notice\",\r\n\tNoticeTypeIncomingEmail = \"NoticeType Incoming Email\",\r\n\tNoticeTypeOther = \"NoticeType Other\",\r\n\tNoticeTypeTranscript = \"NoticeType Transcript\",\r\n\tRevisedCitationNotice = \"Revised Citation Notice\",\r\n\tRevisedInquiryNotice = \"Revised Inquiry Notice\",\r\n\tRevisedWarningNotice = \"Revised Warning Notice\",\r\n\tWarningNotice = \"Warning Notice\",\r\n\tInvoiceCitation = \"Invoice Citation\",\r\n\tPaymentCreated = \"Payment Created\",\r\n\tReport = \"Report\",\r\n\tReportDispositionChange = \"Report Disposition Change\",\r\n\tReportAttached = \"Report Attached\",\r\n\tNoticeDefinitions = \"NoticeDefinition\",\r\n\tInvoice = \"Invoice\",\r\n\tCaseInvoice = \"Case Invoice\",\r\n}\r\n\r\nexport enum Format {\r\n\tDateTime = \"date-time\",\r\n\tDouble = \"double\",\r\n\tInt32 = \"int32\",\r\n\tUUID = \"uuid\",\r\n}\r\n\r\nexport enum ClearedOnType {\r\n\tInteger = \"integer\",\r\n\tNumber = \"number\",\r\n\tString = \"string\",\r\n}\r\n\r\nexport interface ComplianceCase {\r\n\t$ref: string;\r\n}\r\n\r\nexport interface ContextID {\r\n\ttype: ClearedOnType;\r\n\tnullable: boolean;\r\n}\r\n\r\nexport interface NoteContext {\r\n\tmaxLength: number;\r\n\ttype: ClearedOnType;\r\n\tnullable: boolean;\r\n}\r\n\r\nexport enum AlertEntityType {\r\n\tObject = \"object\",\r\n}\r\n\r\nexport interface QueryResult {\r\n\ttype: AlertEntityType;\r\n\tproperties: AlertQueryResultProperties;\r\n\tadditionalProperties: boolean;\r\n}\r\n\r\nexport interface AlertQueryResultProperties {\r\n\tpageId: ClearedOn;\r\n\tpageSize: ClearedOn;\r\n\ttotalResults: ClearedOn;\r\n\ttotalPages: TotalPages;\r\n\tisSuccessful: IsSuccessful;\r\n\tresults: Results;\r\n\texceptions: Exceptions;\r\n\tmessage: Exceptions;\r\n}\r\n\r\nexport interface Exceptions {\r\n\ttype: ExceptionsType;\r\n\titems?: TicklerAlert;\r\n\tnullable: boolean;\r\n\treadOnly?: boolean;\r\n}\r\n\r\nexport interface TicklerAlert {\r\n\ttype: TicklerAlertType;\r\n}\r\n\r\nexport enum TicklerAlertType {\r\n\tBoolean = \"boolean\",\r\n\tString = \"string\",\r\n}\r\n\r\nexport enum ExceptionsType {\r\n\tArray = \"array\",\r\n\tString = \"string\",\r\n}\r\n\r\nexport interface IsSuccessful {\r\n\ttype: TicklerAlertType;\r\n\treadOnly: boolean;\r\n}\r\n\r\nexport interface Results {\r\n\ttype: ExceptionsType;\r\n\titems: ComplianceCase;\r\n\tnullable: boolean;\r\n}\r\n\r\nexport interface TotalPages {\r\n\ttype: ClearedOnType;\r\n\tformat: Format;\r\n\treadOnly: boolean;\r\n}\r\n\r\nexport interface ServiceResult {\r\n\ttype: AlertEntityType;\r\n\tproperties: AlertServiceResultProperties;\r\n\tadditionalProperties: boolean;\r\n}\r\n\r\nexport interface AlertServiceResultProperties {\r\n\tisSuccessful: IsSuccessful;\r\n\tresults: Results;\r\n\texceptions: Exceptions;\r\n\tmessage: Exceptions;\r\n}\r\n\r\nexport interface APIQuery {\r\n\ttype: AlertEntityType;\r\n\tproperties: APIQueryProperties;\r\n\tadditionalProperties: boolean;\r\n}\r\n\r\nexport interface APIQueryProperties {\r\n\tpageId: ClearedOn;\r\n\tpageSize: ClearedOn;\r\n\tcriteria: Results;\r\n\torderBy: Results;\r\n\tfields: Exceptions;\r\n}\r\n\r\nexport interface APIQueryParameter {\r\n\ttype: AlertEntityType;\r\n\tproperties: APIQueryParameterProperties;\r\n\tadditionalProperties: boolean;\r\n}\r\n\r\nexport interface APIQueryParameterProperties {\r\n\tfield: ContextID;\r\n\top: ComplianceCase;\r\n\tvalues: Exceptions;\r\n}\r\n\r\nexport interface APISortParameter {\r\n\ttype: AlertEntityType;\r\n\tproperties: APISortParameterProperties;\r\n\tadditionalProperties: boolean;\r\n}\r\n\r\nexport interface APISortParameterProperties {\r\n\tfield: ContextID;\r\n\tdirection: ComplianceCase;\r\n}\r\n\r\nexport interface AppealEntity {\r\n\trequired: string[];\r\n\ttype: AlertEntityType;\r\n\tproperties: AppealEntityProperties;\r\n\tadditionalProperties: boolean;\r\n}\r\n\r\nexport interface AppealEntityProperties {\r\n\thearingDate: ClearedOn;\r\n\tlocationName: NoteContext;\r\n\tstaffRemarks: ContextID;\r\n\trequestedOn: ClearedOn;\r\n\tcomplianceCaseId: ClearedOn;\r\n\tcomplianceCase: ComplianceCase;\r\n\toutcome: NoteContext;\r\n\tcreatedBy: ContextID;\r\n\tcreatedOn: ClearedOn;\r\n\tid: ClearedOn;\r\n\tmodifiedBy: ContextID;\r\n\tmodifiedOn: ClearedOn;\r\n}\r\n\r\nexport interface AttachmentEntity {\r\n\trequired: string[];\r\n\ttype: AlertEntityType;\r\n\tproperties: AttachmentEntityProperties;\r\n\tadditionalProperties: boolean;\r\n}\r\n\r\nexport interface AttachmentEntityProperties {\r\n\tcomplianceCaseId: ClearedOn;\r\n\tcomplianceCase: ComplianceCase;\r\n\turl: ContextID;\r\n\tmediaType: NoteContext;\r\n\tdescription: ContextID;\r\n\tcreatedBy: ContextID;\r\n\tcreatedOn: ClearedOn;\r\n\tid: ClearedOn;\r\n\tmodifiedBy: ContextID;\r\n\tmodifiedOn: ClearedOn;\r\n}\r\n\r\nexport interface BillingEntity {\r\n\trequired: string[];\r\n\ttype: AlertEntityType;\r\n\tproperties: BillingEntityProperties;\r\n\tadditionalProperties: boolean;\r\n}\r\n\r\nexport interface BillingEntityProperties {\r\n\tmlsRuleId: string;\r\n\tmlsRule: string;\r\n\tsuspensionNoticeSentDate: Date;\r\n\tnewSuspsensionDate: Date;\r\n\tgraceNoticeSent: Date;\r\n\trefundDate: Date;\r\n\tinvoiceStatus: string;\r\n\tinvoiceLink: string;\r\n\trefundAmount: string;\r\n\tnoticeDefinitionId: string;\r\n\tnoticeDefinition: string;\r\n\tcreatedBy: string;\r\n\tcreatedOn: string;\r\n\tid: string;\r\n\tmodifiedBy: string;\r\n\tmodifiedOn: string;\r\n}\r\n\r\nexport interface CitationsReviewEntity {\r\n\trequired: string[];\r\n\ttype: AlertEntityType;\r\n\tproperties: CitationsReviewEntityProperties;\r\n\tadditionalProperties: boolean;\r\n}\r\n\r\nexport interface CitationsReviewEntityProperties {\r\n\trequestReceived: Date;\r\n\tpackedCreatedBy: string;\r\n\thearingRequested: Date;\r\n\tpacketSentToAor: Date;\r\n\tviolationRequested: Date;\r\n\tcitationReviewStatus: string;\r\n\tinvoiceVoided: Date;\r\n\tdateRecievedByAor: Date;\r\n\tratificationDate: Date;\r\n\tgrievanceCommitteeReview: Date;\r\n\trevisedPaymentAmount: string;\r\n\ttempHearingDate: Date;\r\n\tnewDueDate: Date;\r\n\tnoticeDefinitionId: string;\r\n\tnoticeDefinition: string;\r\n\tcreatedBy: string;\r\n\tcreatedOn: string;\r\n\tid: string;\r\n\tmodifiedBy: string;\r\n\tmodifiedOn: string;\r\n}\r\n\r\nexport interface ComplianceCaseEntity {\r\n\trequired: string[];\r\n\ttype: AlertEntityType;\r\n\tproperties: ComplianceCaseEntityProperties;\r\n\tadditionalProperties: boolean;\r\n}\r\n\r\nexport enum CaseStatus {\r\n\tOpen = \"Open\",\r\n\tPending = \"Pending\",\r\n\tClosed = \"Closed\",\r\n\tUnassigned = \"Unassigned\",\r\n\tAssigned = \"Assigned\",\r\n}\r\n// move\r\nexport interface ComplianceCaseEntityProperties {\r\n\tmemberName: string;\r\n\trulesIds?: string[];\r\n\trules: MLSRuleEntityProperties[];\r\n\tcaseNumber: string;\r\n\tmemberStatus: string;\r\n\tmemberAor: string;\r\n\tunseenChanges: boolean;\r\n\tticklerAlert: boolean;\r\n\tviolations: ViolationEntityProperties[];\r\n\ttickler: string;\r\n\treason: string;\r\n\truleId?: string;\r\n\truleTitle?: string;\r\n\tdescription?: string;\r\n\tpriority: string | null;\r\n\tmemberId: string;\r\n\tassignTo: string;\r\n\tassignName: string | null;\r\n\treferenceNumber: string | null;\r\n\tfirstNotifiedOn: string;\r\n\tclosedOn: string;\r\n\tcaseObject: string | null;\r\n\tdisposition: string | null;\r\n\tstatus: CaseStatus;\r\n\tlistingId: string | null;\r\n\tcreatedBy: string | null;\r\n\tcreatedOn: string;\r\n\tid: string;\r\n\tmodifiedBy?: string;\r\n\tmodifiedOn?: string;\r\n\tnew?: boolean;\r\n\treportIds?: string[];\r\n}\r\n\r\nexport interface EnumerationLookupEntity {\r\n\trequired: string[];\r\n\ttype: AlertEntityType;\r\n\tproperties: EnumerationLookupEntityProperties;\r\n\tadditionalProperties: boolean;\r\n}\r\n\r\nexport interface EnumerationLookupEntityProperties {\r\n\tenumerationName: string;\r\n\tname: string;\r\n\tvalue: string;\r\n\tdisplayName: string;\r\n\tdescription: string;\r\n\tdisplayOrder: string;\r\n\tcreatedBy: string;\r\n\tcreatedOn: string;\r\n\tid: string;\r\n\tmodifiedBy: string;\r\n\tmodifiedOn: string;\r\n}\r\n\r\nexport interface EnumerationName {\r\n\tmaxLength: number;\r\n\ttype: ClearedOnType;\r\n}\r\n\r\nexport interface HearingLocationEntity {\r\n\ttype: AlertEntityType;\r\n\tproperties: HearingLocationEntityProperties;\r\n\tadditionalProperties: boolean;\r\n}\r\n\r\nexport interface HearingLocationEntityProperties {\r\n\tname: NoteContext;\r\n\tdisplayName: NoteContext;\r\n\tdescription: NoteContext;\r\n\tcreatedBy: ContextID;\r\n\tcreatedOn: ClearedOn;\r\n\tid: ClearedOn;\r\n\tmodifiedBy: ContextID;\r\n\tmodifiedOn: ClearedOn;\r\n}\r\n\r\n// Move\r\nexport interface IResponse {\r\n\tresults: Type[];\r\n}\r\n\r\nexport interface MLSRuleEntity {\r\n\trequired: string[];\r\n\ttype: AlertEntityType;\r\n\tproperties: MLSRuleEntityProperties;\r\n\tadditionalProperties: boolean;\r\n}\r\n// Move\r\n\r\nexport interface MLSRuleEntityProperties {\r\n\truleNumber: string;\r\n\truleTitle: string;\r\n\twarning: boolean;\r\n\tfineType: \"fixed\" | \"percentage\";\r\n\tcitationFee: number;\r\n\tmlsRulebookText: string;\r\n\tprocessingGuideline: string;\r\n\temailTemplate: string;\r\n\tcitationTemplate: string;\r\n\tinquiryTemplate: string;\r\n\twarningTemplate: string;\r\n\tresources: string;\r\n\tcreatedBy: string;\r\n\tcreatedOn: string;\r\n\tid: string;\r\n\tmodifiedBy: string;\r\n\tmodifiedOn: string;\r\n}\r\n\r\nexport interface NoticeDefinitionEntity {\r\n\trequired: string[];\r\n\ttype: AlertEntityType;\r\n\tproperties: NoticeDefinitionEntityProperties;\r\n\tadditionalProperties: boolean;\r\n}\r\nexport enum NoticeType {\r\n\tAll = \"NoticeType.All\",\r\n\tEmail = \"NoticeType.Email\",\r\n\tOffSystemEmail = \"NoticeType.OffSystemEmail\",\r\n\tComplaint = \"NoticeType.Complaint\",\r\n\tInquiry = \"NoticeType.Inquiry\",\r\n\tWarning = \"NoticeType.Warning\",\r\n\tCitation = \"NoticeType.Citation\",\r\n\tChat = \"NoticeType.Chat\",\r\n\tCall = \"NoticeType.Call\",\r\n\tTranscript = \"NoticeType.Transcript\",\r\n\tIncomingEmail = \"NoticeType.Incoming Email\",\r\n\tOther = \"NoticeType.Other\",\r\n}\r\nexport const noticesWithTemplates = [NoticeType.Citation, NoticeType.Inquiry, NoticeType.Warning, NoticeType.Email].map((notice) => notice.replace(\"NoticeType.\", \"\"));\r\n\r\n// chatLog: [\r\n// \t{\r\n// \t\tdate: \"2023-04-29T17:57:06.053+00:00\",\r\n// \t\tuser: \"Admin\",\r\n// \t\tsender: \"Jane Smith\",\r\n// \t\ttext: \"Hi John, I am your compliance analyst and I'll be handling your case today.\",\r\n// \t},\r\nexport interface Chatlog {\r\n\tdate: string;\r\n\tuser: \"analyst\" | \"agent\";\r\n\tsender: string;\r\n\ttext: string;\r\n}\r\n\r\nexport interface NoticeReply {\r\n\tnoticeDefinitionId: string;\r\n\tisRead: boolean;\r\n\tbody: string;\r\n\tsenderName: string;\r\n\tsenderId: string;\r\n\tsubject: string;\r\n\tcreatedBy: string;\r\n\tcreatedOn: string;\r\n\tid: string;\r\n\tmodifiedBy: string;\r\n\tmodifiedOn: string;\r\n\tincludeMember: boolean;\r\n\ttoEmails: string;\r\n\tbccEmails: string;\r\n\tccEmails: string;\r\n\tccAor: boolean;\r\n\tccOfice: boolean;\r\n\tfriendlySenderName: string;\r\n}\r\nexport interface NoteHeadlineEntityProperties {\r\n\tname: string;\r\n\tid: string;\r\n\tisTask: boolean;\r\n}\r\nexport interface NoticeDefinitionEntityProperties {\r\n\t//unreadActivity?: boolean;\r\n\treplies: NoticeReply[];\r\n\tname: string;\r\n\tdisplayName: string;\r\n\t//todo maher ensure this works\r\n\tcall?: {\r\n\t\turl: string;\r\n\t\tagent: string;\r\n\t\tanalyst: string;\r\n\t};\r\n\tchatLog?: Chatlog[];\r\n\tcorrected?: boolean;\r\n\tdescription: string;\r\n\tcreatedByName: string;\r\n\ttemplateName: string;\r\n\tissuedFailureToCorrect: boolean;\r\n\texpiresOn: string;\r\n\tpolicyReference: string;\r\n\tfineAmount: string;\r\n\tactionClassName: string;\r\n\tnoticeType: string;\r\n\tstatus: string;\r\n\tactiveOn: string;\r\n\treportViolationId: string;\r\n\tstatement: string;\r\n\tcorrectiveAction: string;\r\n\tcorrectiveActionDeadline: string;\r\n\tanalystNote: string;\r\n\tcomplianceCaseId: string;\r\n\tcomplianceCase: ComplianceCaseEntityProperties;\r\n\treviewDeadline: string;\r\n\tsuspensionDate: string;\r\n\tcombineWith: string;\r\n\tccEmails: string;\r\n\tccAor: string;\r\n\tccOfice: string;\r\n\tcreatedBy: string;\r\n\tcreatedOn: string;\r\n\tid: string;\r\n\tmodifiedBy: string;\r\n\tmodifiedOn: string;\r\n\trule?: MLSRuleEntityProperties;\r\n\truleId?: string;\r\n\tviolations: ViolationEntityProperties[];\r\n\tviolationIds: string[];\r\n\tuserSuspended?: boolean;\r\n\tincludeMember?: boolean;\r\n\tto: string;\r\n\tsubject: string;\r\n\temailRequestMessageId: string;\r\n\tattachments?: string[];\r\n\trevision?: boolean;\r\n\trevisionHistory?: string[];\r\n\ttoEmails?: string;\r\n\tbccEmails?: string;\r\n\tobjectData?: any;\r\n\tobjectDataModel?: { email: { member: INoticeEmailData; office: INoticeEmailData; aor: INoticeEmailData } };\r\n}\r\nexport interface INoticeEmailData {\r\n\tname: string;\r\n\temail: string;\r\n}\r\n\r\n// move\r\nexport enum CorrectionStatus {\r\n\tNotCorrected = \"CorrectionStatus.NotCorrected\",\r\n\tCorrected = \"CorrectionStatus.Corrected\",\r\n}\r\n//\r\n\r\n// Move\r\n\r\nexport interface ReviewDeadline {\r\n\ttype: ClearedOnType;\r\n\tformat: Format;\r\n\tnullable: boolean;\r\n}\r\n\r\nexport interface NotificationEntityClass {\r\n\trequired: string[];\r\n\ttype: AlertEntityType;\r\n\tproperties: NotificationEntityProperties;\r\n\tadditionalProperties: boolean;\r\n}\r\n\r\nexport interface NotificationEntityProperties {\r\n\tcomplianceCaseId: ClearedOn;\r\n\tcomplianceCase: ComplianceCase;\r\n\tmessageId?: ClearedOn;\r\n\tnotificationType?: NoteContext;\r\n\tcreatedBy: ContextID;\r\n\tcreatedOn: ClearedOn;\r\n\tid: ClearedOn;\r\n\tmodifiedBy: ContextID;\r\n\tmodifiedOn: ClearedOn;\r\n\ttext?: NoteContext;\r\n\talertOn?: ClearedOn;\r\n}\r\n\r\nexport interface PaymentEntity {\r\n\trequired: string[];\r\n\ttype: AlertEntityType;\r\n\tproperties: PaymentEntityProperties;\r\n\tadditionalProperties: boolean;\r\n}\r\n\r\nexport interface PaymentEntityProperties {\r\n\tadminFee: ClearedOn;\r\n\tpaymentType: NoteContext;\r\n\tpaymentDate: ClearedOn;\r\n\tpayMethod: NoteContext;\r\n\tbillingId: ClearedOn;\r\n\tbilling: ComplianceCase;\r\n\ttotaPayment: ClearedOn;\r\n\tpaymentPaid: ContextID;\r\n\tcreatedBy: ContextID;\r\n\tcreatedOn: ClearedOn;\r\n\tid: ClearedOn;\r\n\tmodifiedBy: ContextID;\r\n\tmodifiedOn: ClearedOn;\r\n}\r\n\r\nexport interface QueryTion {\r\n\tenum: number[];\r\n\ttype: ClearedOnType;\r\n\tformat: Format;\r\n}\r\n\r\nexport interface ReportEntity {\r\n\trequired: string[];\r\n\ttype: AlertEntityType;\r\n\tproperties: ReportEntityProperties;\r\n\tadditionalProperties: boolean;\r\n}\r\n// Move\r\nexport interface ReportEntityProperties {\r\n\tmemberAor: string;\r\n\treason?: ReportReasonEntityProperties;\r\n\toffice: string;\r\n\treportedOn: string;\r\n\treportedBy: string;\r\n\tdispositionDetails?: EnumerationLookupEntityProperties;\r\n\tmemberId: string;\r\n\treferenceId: string;\r\n\treferenceNumber: string;\r\n\ttext: string;\r\n\tdisposition: string;\r\n\treportSource: string;\r\n\treportType: string;\r\n\tlistingId: string;\r\n\treportReasonId: string;\r\n\treportReason: ReportReasonEntityProperties;\r\n\treferenceType: string;\r\n\treportedByName: string;\r\n\tclosedBy: string;\r\n\tclosedDate: string;\r\n\tstatus: string;\r\n\tisOpen: boolean;\r\n\tcreatedBy: string;\r\n\tcreatedOn: string;\r\n\tid: string;\r\n\tmodifiedBy: string;\r\n\tmodifiedOn: string;\r\n\tmemberName: string;\r\n\tviolationCount: number;\r\n\tcreatedByName: string;\r\n\tdueDate: string;\r\n\treportNumber: string;\r\n\tenumerationLookupId: string;\r\n\treportingParty: string;\r\n\tobjectData: string;\r\n}\r\n\r\nexport interface ReportReasonYEntity {\r\n\trequired: string[];\r\n\ttype: AlertEntityType;\r\n\tproperties: ReportReasonCategoryEntityProperties;\r\n\tadditionalProperties: boolean;\r\n}\r\n\r\nexport interface ReportReasonCategoryEntityProperties {\r\n\tdisplayText: EnumerationName;\r\n\tdescription: EnumerationName;\r\n\tvalue: EnumerationName;\r\n\tcreatedBy: ContextID;\r\n\tcreatedOn: ClearedOn;\r\n\tid: ClearedOn;\r\n\tmodifiedBy: ContextID;\r\n\tmodifiedOn: ClearedOn;\r\n}\r\n\r\nexport interface ReportReasonEntity {\r\n\trequired: string[];\r\n\ttype: AlertEntityType;\r\n\tproperties: ReportReasonEntityProperties;\r\n\tadditionalProperties: boolean;\r\n}\r\n\r\nexport interface ReportReasonEntityProperties {\r\n\treasonText: string;\r\n\treportReasonCategoryId: number | string;\r\n\treportReasonCategory: ReportReasonCategoryEntityProperties;\r\n\tmlsRuleId: string;\r\n\tmlsRule: MLSRuleEntityProperties;\r\n\tcreatedBy: string;\r\n\tcreatedOn: string;\r\n\tid: string;\r\n\tmodifiedBy: string;\r\n\tmodifiedOn: string;\r\n\tdaysUntilDue: number;\r\n}\r\n\r\nexport interface ReportViolationEntity {\r\n\trequired: string[];\r\n\ttype: AlertEntityType;\r\n\tproperties: ReportViolationEntityProperties;\r\n\tadditionalProperties: boolean;\r\n}\r\n\r\n// Move\r\nexport interface ReportViolationEntityPropertiesWithRule extends ReportViolationEntityProperties {\r\n\tattachedRule: MLSRuleEntityProperties | undefined;\r\n\tattachedDisposition?: EnumerationLookupEntityProperties | undefined;\r\n}\r\n\r\n//Move\r\nexport interface ReportViolationEntityProperties {\r\n\treportId: string;\r\n\treportIds: string[];\r\n\treport: string;\r\n\tmlsRuleId: string;\r\n\tmlsRule: string;\r\n\tcreatedBy: string;\r\n\tcreatedOn: string;\r\n\tid: string;\r\n\tmodifiedBy: string;\r\n\tmodifiedOn: string;\r\n\tnote: string;\r\n\tdispositionId: string;\r\n\tdispositionNote: string;\r\n}\r\n\r\nexport interface ViolationEntity {\r\n\trequired: string[];\r\n\ttype: AlertEntityType;\r\n\tproperties: ViolationEntityProperties;\r\n\tadditionalProperties: boolean;\r\n}\r\n\r\nexport interface ViolationEntityProperties {\r\n\tcomplianceCaseId: string;\r\n\tmlsRule: MLSRuleEntityProperties;\r\n\tenumerationLookupId: string;\r\n\tenumerationLookup?: EnumerationLookupEntityProperties;\r\n\tmlsRuleId: string;\r\n\tid: string;\r\n\tcreatedOn: string;\r\n\tcorrected: string;\r\n\treportId?: string;\r\n\treport?: ReportEntityProperties;\r\n}\r\n\r\nexport interface SecuritySchemes {\r\n\toauth2: Oauth2;\r\n}\r\n\r\nexport interface Oauth2 {\r\n\ttype: string;\r\n\tflows: Flows;\r\n}\r\n\r\nexport interface Flows {\r\n\timplicit: Implicit;\r\n}\r\n\r\nexport interface Implicit {\r\n\tauthorizationUrl: string;\r\n\ttokenUrl: string;\r\n\tscopes: Scopes;\r\n}\r\n\r\nexport interface Scopes {\r\n\t\"https://macewindu.azurewebsites.net/user_impersonation\": string;\r\n}\r\n\r\nexport interface Info {\r\n\ttitle: string;\r\n\tdescription: string;\r\n\ttermsOfService: string;\r\n\tcontact: Contact;\r\n\tlicense: License;\r\n\tversion: string;\r\n}\r\n\r\nexport interface Contact {\r\n\tname: string;\r\n\turl: string;\r\n\temail: string;\r\n}\r\n\r\nexport interface License {\r\n\tname: string;\r\n\turl: string;\r\n}\r\n\r\nexport interface CaseNoteEntityProperties {\r\n\theadline: NoteHeadlineEntityProperties;\r\n\tcreatedByName: string;\r\n\tassignName: string;\r\n\tlistingId: string;\r\n\tmemberName: string;\r\n\tnote: string;\r\n\tcaseNumber: string;\r\n\tlink: string;\r\n\tcomplianceCaseId: string;\r\n\tcomplianceCase: string;\r\n\ttext: string;\r\n\tcontextId: string;\r\n\tnoteContext: string;\r\n\treminderDate: string;\r\n\tisDeleted: boolean;\r\n\tcreatedBy: string;\r\n\tcreatedOn: string;\r\n\tid: string;\r\n\tmodifiedBy: string;\r\n\tmodifiedOn: string;\r\n}\r\nexport const caseNoteTypes = [\r\n\t\"Investigative Note\",\r\n\t\"General Task\",\r\n\t\"Chat Note\",\r\n\t\"Email Note\",\r\n\t\"Phone Call Note\",\r\n\t\"Follow up Note\",\r\n\t\"Escalation Note\",\r\n\t\"Escalation Review\",\r\n\t\"Escalation Resolution\",\r\n\t\"Lead Note\",\r\n\t\"Supervisor Note\",\r\n\t\"Manager/Director Note\",\r\n\t\"Document Review Note\",\r\n\t\"Citation Withdraw Note\",\r\n\t\"Combined Citation Note\",\r\n\t\"Original Disposition Note\",\r\n\t\"Billing Note\",\r\n\t\"CRR Note\",\r\n\t\"Voice Mail Note\",\r\n\t\"CRR Form/Invoice Voided\",\r\n\t\"CRR Deadline/Suspension Date\",\r\n\t\"Disciplinary Complaint Note\",\r\n];\r\nexport interface CompliancePaths {\r\n\t\"/api/app/Alerts/q\": APIAppAlertsQClass;\r\n\t\"/api/app/Alerts\": APIAppAlertsClass;\r\n\t\"/api/app/Alerts/{id}\": APIAppID;\r\n\t\"/api/app/Appeals/q\": APIAppAlertsQClass;\r\n\t\"/api/app/Appeals\": APIAppAlertsClass;\r\n\t\"/api/app/Appeals/{id}\": APIAppID;\r\n\t\"/api/app/Attachments/q\": APIAppAlertsQClass;\r\n\t\"/api/app/Attachments\": APIAppAlertsClass;\r\n\t\"/api/app/Attachments/{id}\": APIAppID;\r\n\t\"/api/app/Billings/q\": APIAppAlertsQClass;\r\n\t\"/api/app/Billings\": APIAppAlertsClass;\r\n\t\"/api/app/Billings/{id}\": APIAppID;\r\n\t\"/api/app/CaseNotes/q\": APIAppAlertsQClass;\r\n\t\"/api/app/CaseNotes\": APIAppAlertsClass;\r\n\t\"/api/app/CaseNotes/{id}\": APIAppID;\r\n\t\"/api/app/CitationsReview/q\": APIAppAlertsQClass;\r\n\t\"/api/app/CitationsReview\": APIAppAlertsClass;\r\n\t\"/api/app/CitationsReview/{id}\": APIAppID;\r\n\t\"/api/app/ComplianceCases/q\": APIAppAlertsQClass;\r\n\t\"/api/app/ComplianceCases\": APIAppAlertsClass;\r\n\t\"/api/app/ComplianceCases/{id}\": APIAppID;\r\n\t\"/api/app/EnumerationLookups/q\": APIAppAlertsQClass;\r\n\t\"/api/app/EnumerationLookups\": APIAppAlertsClass;\r\n\t\"/api/app/EnumerationLookups/{id}\": APIAppEnumerationLookupsID;\r\n\t\"/api/app/HearingLocations/q\": APIAppAlertsQClass;\r\n\t\"/api/app/HearingLocations\": APIAppAlertsClass;\r\n\t\"/api/app/HearingLocations/{id}\": APIAppID;\r\n\t\"/api/app/MLSRules/q\": APIAppAlertsQClass;\r\n\t\"/api/app/MLSRules\": APIAppAlertsClass;\r\n\t\"/api/app/MLSRules/{id}\": APIAppSID;\r\n\t\"/api/app/NoticeDefinitions/CitationCount/{id}\": APIAppNoticeDefinitionsCitationCountID;\r\n\t\"/api/app/NoticeDefinitions/q\": APIAppAlertsQClass;\r\n\t\"/api/app/NoticeDefinitions\": APIAppAlertsClass;\r\n\t\"/api/app/NoticeDefinitions/{id}\": APIAppID;\r\n\t\"/api/app/Notifications/q\": APIAppAlertsQClass;\r\n\t\"/api/app/Notifications\": APIAppAlertsClass;\r\n\t\"/api/app/Notifications/{id}\": APIAppID;\r\n\t\"/api/app/Payments/q\": APIAppAlertsQClass;\r\n\t\"/api/app/Payments\": APIAppAlertsClass;\r\n\t\"/api/app/Payments/{id}\": APIAppID;\r\n\t\"/api/app/Reminders/q\": APIAppAlertsQClass;\r\n\t\"/api/app/Reminders\": APIAppAlertsClass;\r\n\t\"/api/app/Reminders/{id}\": APIAppID;\r\n\t\"/api/app/Reports/GetByComplianceCase/{id}\": APIAppReportsGetByComplianceCaseID;\r\n\t\"/api/app/Reports/q\": APIAppAlertsQClass;\r\n\t\"/api/app/Reports\": APIAppAlertsClass;\r\n\t\"/api/app/Reports/{id}\": APIAppID;\r\n\t\"/api/app/ReportReasons/q\": APIAppAlertsQClass;\r\n\t\"/api/app/ReportReasons\": APIAppAlertsClass;\r\n\t\"/api/app/ReportReasons/{id}\": APIAppSID;\r\n\t\"/api/app/ReportReasonCategories/q\": APIAppAlertsQClass;\r\n\t\"/api/app/ReportReasonCategories\": APIAppAlertsClass;\r\n\t\"/api/app/ReportReasonCategories/{id}\": APIAppSID;\r\n\t\"/api/app/ReportReasonPriorities/q\": APIAppAlertsQClass;\r\n\t\"/api/app/ReportReasonPriorities\": APIAppAlertsClass;\r\n\t\"/api/app/ReportReasonPriorities/{id}\": APIAppSID;\r\n\t\"/api/app/ReportViolations/q\": APIAppAlertsQClass;\r\n\t\"/api/app/ReportViolations\": APIAppAlertsClass;\r\n\t\"/api/app/ReportViolations/{id}\": APIAppID;\r\n\t\"/api/app/Violations/q\": APIAppAlertsQClass;\r\n\t\"/api/app/Violations\": APIAppAlertsClass;\r\n\t\"/api/app/Violations/{id}\": APIAppID;\r\n}\r\n\r\nexport interface APIAppAlertsClass {\r\n\tpost: APIAppAlertsPost;\r\n}\r\n\r\nexport interface APIAppAlertsPost {\r\n\ttags: string[];\r\n\tsummary: string;\r\n\tdescription: string;\r\n\trequestBody: GetRequestBody;\r\n\tresponses: { [key: string]: PostResponse };\r\n\tsecurity: Security[];\r\n}\r\n\r\nexport interface GetRequestBody {\r\n\tdescription: string;\r\n\tcontent: RequestBodyContent;\r\n}\r\n\r\nexport interface RequestBodyContent {\r\n\t\"application/json-patch+json\": JSON;\r\n\t\"application/json\": JSON;\r\n\t\"text/json\": JSON;\r\n\t\"application/*+json\": JSON;\r\n}\r\n\r\nexport interface JSON {\r\n\tschema: ComplianceCase;\r\n}\r\n\r\nexport interface PostResponse {\r\n\tdescription: string;\r\n\tcontent?: PurpleContent;\r\n}\r\n\r\nexport interface PurpleContent {\r\n\t\"application/json\": JSON;\r\n}\r\n\r\nexport interface Security {\r\n\toauth2: any[];\r\n}\r\n\r\nexport interface APIAppAlertsQClass {\r\n\tpost: APIAppAlertsQPost;\r\n}\r\n\r\nexport interface APIAppAlertsQPost {\r\n\ttags: string[];\r\n\tsummary: string;\r\n\tparameters: PostParameter[];\r\n\trequestBody: PurpleRequestBody;\r\n\tresponses: { [key: string]: PostResponse };\r\n\tsecurity: Security[];\r\n}\r\n\r\nexport interface PostParameter {\r\n\tname: PurpleName;\r\n\tin: PurpleIn;\r\n\tschema: ContextID;\r\n}\r\n\r\nexport enum PurpleIn {\r\n\tQuery = \"query\",\r\n}\r\n\r\nexport enum PurpleName {\r\n\tF = \"f\",\r\n}\r\n\r\nexport interface PurpleRequestBody {\r\n\tcontent: RequestBodyContent;\r\n}\r\n\r\nexport interface APIAppID {\r\n\tget: PutClass;\r\n\tput: Put;\r\n}\r\n\r\nexport interface PutClass {\r\n\ttags: string[];\r\n\tsummary: string;\r\n\tparameters: PurpleParameter[];\r\n\tresponses: { [key: string]: PostResponse };\r\n\tsecurity: Security[];\r\n\trequestBody?: GetRequestBody;\r\n}\r\n\r\nexport interface PurpleParameter {\r\n\tname: FluffyName;\r\n\tin: FluffyIn;\r\n\tdescription: string;\r\n\trequired: boolean;\r\n\tschema: PurpleSchema;\r\n}\r\n\r\nexport enum FluffyIn {\r\n\tPath = \"path\",\r\n}\r\n\r\nexport enum FluffyName {\r\n\tID = \"id\",\r\n}\r\n\r\nexport interface PurpleSchema {\r\n\ttype: ClearedOnType;\r\n\tdescription: string;\r\n\tnullable: boolean;\r\n}\r\n\r\nexport interface Put {\r\n\ttags: string[];\r\n\tsummary: string;\r\n\tparameters: DeleteParameter[];\r\n\trequestBody?: GetRequestBody;\r\n\tresponses: { [key: string]: PostResponse };\r\n\tsecurity: Security[];\r\n}\r\n\r\nexport interface DeleteParameter {\r\n\tname: FluffyName;\r\n\tin: FluffyIn;\r\n\tdescription: Description;\r\n\trequired: boolean;\r\n\tschema: FluffySchema;\r\n}\r\n\r\nexport enum Description {\r\n\tComplianceCaseID = \"Compliance Case ID\",\r\n\tEmpty = \"\",\r\n}\r\n\r\nexport interface FluffySchema {\r\n\ttype: ClearedOnType;\r\n\tdescription: Description;\r\n\tformat: Format;\r\n}\r\n\r\nexport interface APIAppEnumerationLookupsID {\r\n\tget: PutClass;\r\n\tput: PutClass;\r\n}\r\n\r\nexport interface APIAppSID {\r\n\tget: PutClass;\r\n\tput: Put;\r\n\tdelete: Put;\r\n}\r\n\r\nexport interface APIAppNoticeDefinitionsCitationCountID {\r\n\tget: APIAppNoticeDefinitionsCitationCountIDGet;\r\n}\r\n\r\nexport interface APIAppNoticeDefinitionsCitationCountIDGet {\r\n\ttags: string[];\r\n\tsummary: string;\r\n\tparameters: DeleteParameter[];\r\n\tresponses: { [key: string]: PurpleResponse };\r\n\tsecurity: Security[];\r\n}\r\n\r\nexport interface PurpleResponse {\r\n\tdescription: string;\r\n\tcontent?: FluffyContent;\r\n}\r\n\r\nexport interface FluffyContent {\r\n\t\"application/json\": ApplicationJSON;\r\n}\r\n\r\nexport interface ApplicationJSON {\r\n\tschema: ClearedOn;\r\n}\r\n\r\nexport interface APIAppReportsGetByComplianceCaseID {\r\n\tget: Put;\r\n}\r\n\r\ninterface MediaItem {\r\n\tmediaKey: string;\r\n\toriginatingSystemMediaKey: number;\r\n\tresourceRecordKeyNumeric: number;\r\n\toriginatingSystemResourceRecordKey: number;\r\n\tlongDescription: string;\r\n\tmediaURL: string;\r\n\toriginatingSystemMediaURL: string;\r\n\torder: number;\r\n\tmediaObjectID: string;\r\n\tresourceName: string;\r\n\tclassName: number;\r\n\tmediaType: string;\r\n\tmediaType_Long: string;\r\n\tmediaCategory: string;\r\n\tfileExtension: string;\r\n\tfileTable: string;\r\n\tmodificationTimestamp: string;\r\n\tmediaModificationTimestamp: string;\r\n\tdeletedYN: boolean;\r\n\toriginatingSystemID_Long: string;\r\n\toriginatingSystemID: string;\r\n\tmemberAOR: string;\r\n\tmemberAOR_Long: string;\r\n\tofficeMlsId: string;\r\n\tchangedByMemberID: string;\r\n\tchangedByMemberKeyNumeric: string;\r\n\tgroup: string;\r\n\timageHeight: string;\r\n\timageSizeDescription: string;\r\n\timageWidth: string;\r\n\tmediaHTML: string;\r\n\tmediaStatus: string;\r\n\tpermission: string;\r\n\tresourceRecordID: string;\r\n\tshortDescription: string;\r\n\toriginalFilename: string;\r\n\timageOf: string;\r\n\tapproved: string;\r\n\tfileSize: string;\r\n\tcreatedBy: string;\r\n\tcreatedOn: string;\r\n\tmodifiedBy: string;\r\n\tmodifiedOn: string;\r\n}\r\nexport interface DisplinaryComplaintEntityProperties {\r\n\tdatePacketCreated: Date;\r\n\tpacketCreatedBy: string;\r\n\tviolationCorrected: string;\r\n\tpacketStatus: string;\r\n\tdateSentToAor: Date;\r\n\tdateReceived: Date;\r\n\tdateHearing: Date;\r\n\tbody: string;\r\n\tid: string;\r\n\tdispositionId: string;\r\n\tsent: boolean;\r\n\tcaseId: string;\r\n}\r\nexport interface CaseReviewEntityProperties {\r\n\trequestReceived: Date;\r\n\tpackedCreatedBy: string;\r\n\thearingRequested: Date;\r\n\tpacketSentToAor: Date;\r\n\tviolationRequested: Date;\r\n\tstatus: string;\r\n\tinvoiceVoided: Date;\r\n\tdateRecievedByAor: Date;\r\n\tratificationDate: Date;\r\n\tgrievanceCommitteeReview: Date;\r\n\trevisedPaymentAmount: string;\r\n\ttempHearingDate: Date;\r\n\tnewDueDate: Date;\r\n\tcomplianceCaseId: string;\r\n\tcomplianceCase: ComplianceCaseEntityProperties;\r\n\tcreatedBy: string;\r\n\tcreatedOn: string;\r\n\tid: string;\r\n\tmodifiedBy: string;\r\n\tmodifiedOn: string;\r\n\tcaseReviewStatus: string;\r\n\ttype: string;\r\n\tfee: string;\r\n}\r\n\r\nexport interface IListing {\r\n\terror: any;\r\n\tmedia: MediaItem[];\r\n\tpropertyADU: any[];\r\n\tpropertyGreen: any[];\r\n\tpropertyUnit: any[];\r\n\tpowerProduction: any[];\r\n\tmember: any[];\r\n\toffice: any[];\r\n\taccessibilityFeatures: string;\r\n\taccountingType: string;\r\n\tadditionalDimensions: string;\r\n\tadditionalParcelsDescription: string;\r\n\tadditionalParcelsYN: boolean;\r\n\tadditionalRentForPets: string;\r\n\tadNumber: string;\r\n\tadvertisingExpense: string;\r\n\tamperage: string;\r\n\tanchorsCoTenants: string;\r\n\tappliances: string;\r\n\tappliancesYN: boolean;\r\n\tarchitecturalStyle: string;\r\n\tassessments: string;\r\n\tassessmentsYN: boolean;\r\n\tassetClass: string;\r\n\tassociationAmenities: string;\r\n\tassociationFee: number;\r\n\tassociationFee2: string;\r\n\tassociationFee2Frequency: string;\r\n\tassociationFee3: string;\r\n\tassociationFee3Frequency: string;\r\n\tassociationFeeFrequency: string;\r\n\tassociationManagementName: string;\r\n\tassociationManagementName2: string;\r\n\tassociationManagementName3: string;\r\n\tassociationName: string;\r\n\tassociationName2: string;\r\n\tassociationName3: string;\r\n\tassociationPhone: string;\r\n\tassociationPhone2: string;\r\n\tassociationPhone2Ext: string;\r\n\tassociationPhone3: string;\r\n\tassociationPhoneExt: string;\r\n\tassociationPhone3Ext: string;\r\n\tassociationYN: boolean;\r\n\tattachedGarageYN: string;\r\n\tautoSoldDate: string;\r\n\tautoSoldYN: boolean;\r\n\tavailabilityDate: string;\r\n\taverage1BedArea: string;\r\n\taverage1BedAreaUnits: string;\r\n\taverage2BedArea: string;\r\n\taverage2BedAreaUnits: string;\r\n\taverage3BedArea: string;\r\n\taverage3BedAreaUnits: string;\r\n\taverageStudioArea: string;\r\n\taverageStudioAreaUnits: string;\r\n\tbackOnMarketDate: string;\r\n\tbackupDate: string;\r\n\tbasement: string;\r\n\tbathroomsFull: number;\r\n\tbathroomsFullAndThreeQuarter: number;\r\n\tbathroomsHalf: string;\r\n\tbathroomsOneQuarter: string;\r\n\tbathroomsThreeQuarter: string;\r\n\tbathroomsTotalInteger: number;\r\n\tbedroomsTotal: number;\r\n\tbelowGradeFinishedArea: string;\r\n\tbelowGradeFinishedAreaUnits: string;\r\n\tbodyType: string;\r\n\tbuilderModel: string;\r\n\tbuilderModelCode: string;\r\n\tbuilderName: string;\r\n\tbuildingAreaTotal: string;\r\n\tbuildingAreaUnits: string;\r\n\tbuildingExpenses: string;\r\n\tbuildingFeatures: string;\r\n\tbuildingName: string;\r\n\tbuildingStatus: string;\r\n\tbusinessName: string;\r\n\tbusinessType: string;\r\n\tbusinessURL: string;\r\n\tbuyerAgencyCompensation: number;\r\n\tbuyerAgencyCompensationPer: string;\r\n\tbuyerAgencyCompensationRemarks: string;\r\n\tbuyerAgencyCompensationType: string;\r\n\tbuyerAgentAOR: string;\r\n\tbuyerAgentBrokerKeyNumeric: string;\r\n\tbuyerAgentBrokerMlsId: string;\r\n\tbuyerAgentFirstName: string;\r\n\tbuyerAgentKeyNumeric: number;\r\n\tbuyerAgentLastName: string;\r\n\tbuyerAgentMainOfficeKeyNumeric: string;\r\n\tbuyerAgentMainOfficeMlsId: string;\r\n\tbuyerAgentMlsId: string;\r\n\tbuyerAgentStateLicense: string;\r\n\tbuyerFinancing: string;\r\n\tbuyerOfficeAOR: string;\r\n\tbuyerOfficeKeyNumeric: number;\r\n\tbuyerOfficeMlsId: string;\r\n\tbuyerOfficeName: string;\r\n\tbuyerOfficeStateLicense: string;\r\n\tbuyerTeamEmail: string;\r\n\tbuyerTeamKey: string;\r\n\tbuyerTeamKeyNumeric: string;\r\n\tbuyerTeamName: string;\r\n\tbuyerTeamPreferredPhone: string;\r\n\tcableTvExpense: string;\r\n\tcancellationDate: string;\r\n\tcapRate: string;\r\n\tcarportSpaces: number;\r\n\tcashiersCheck: string;\r\n\tcdomResetYN: string;\r\n\tcertified433aYN: string;\r\n\tcity: string;\r\n\tclearanceHeightMax: string;\r\n\tclearanceHeightMin: string;\r\n\tcleared: string;\r\n\tcloseDate: string;\r\n\tclosePrice: number;\r\n\tcoBuyerAgentAOR: string;\r\n\tcoBuyerAgentBrokerKeyNumeric: string;\r\n\tcoBuyerAgentBrokerMlsId: string;\r\n\tcoBuyerAgentFirstName: string;\r\n\tcoBuyerAgentKeyNumeric: string;\r\n\tcoBuyerAgentLastName: string;\r\n\tcoBuyerAgentMainOfficeKeyNumeric: string;\r\n\tcoBuyerAgentMainOfficeMlsId: string;\r\n\tcoBuyerAgentMlsId: string;\r\n\tcoBuyerAgentStateLicense: string;\r\n\tcoBuyerOfficeAOR: string;\r\n\tcoBuyerOfficeKeyNumeric: string;\r\n\tcoBuyerOfficeMlsId: string;\r\n\tcoBuyerOfficeName: string;\r\n\tcoBuyerOfficeStateLicense: string;\r\n\tcoBuyerTeamEmail: string;\r\n\tcoBuyerTeamKey: string;\r\n\tcoBuyerTeamKeyNumeric: string;\r\n\tcoBuyerTeamName: string;\r\n\tcoBuyerTeamPreferredPhone: string;\r\n\tcoListAgentAOR: string;\r\n\tcoListAgentBrokerKeyNumeric: string;\r\n\tcoListAgentBrokerMlsId: string;\r\n\tcoListAgentDirectPhone: string;\r\n\tcoListAgentDirectPhoneExt: string;\r\n\tcoListAgentEmail: string;\r\n\tcoListAgentFax: string;\r\n\tcoListAgentFirstName: string;\r\n\tcoListAgentHomePhone: string;\r\n\tcoListAgentHomePhoneExt: string;\r\n\tcoListAgentKeyNumeric: string;\r\n\tcoListAgentLanguages: string;\r\n\tcoListAgentLastName: string;\r\n\tcoListAgentMainOfficeKeyNumeric: string;\r\n\tcoListAgentMainOfficeMlsId: string;\r\n\tcoListAgentMlsId: string;\r\n\tcoListAgentMobilePhone: string;\r\n\tcoListAgentPager: string;\r\n\tcoListAgentStateLicense: string;\r\n\tcoListAgentTollFreePhone: string;\r\n\tcoListAgentTollFreePhoneExt: string;\r\n\tcoListAgentVoiceMail: string;\r\n\tcoListAgentVoiceMailExt: string;\r\n\tcoListOfficeAOR: string;\r\n\tcoListOfficeFax: string;\r\n\tcoListOfficeKeyNumeric: string;\r\n\tcoListOfficeMlsId: string;\r\n\tcoListOfficeName: string;\r\n\tcoListOfficePhone: string;\r\n\tcoListOfficePhoneExt: string;\r\n\tcoListOfficeStateLicense: string;\r\n\tcoListTeamEmail: string;\r\n\tcoListTeamKey: string;\r\n\tcoListTeamKeyNumeric: string;\r\n\tcoListTeamName: string;\r\n\tcoListTeamPreferredPhone: string;\r\n\tcommonInterest: string;\r\n\tcommonWalls: string;\r\n\tcommunityFeatures: string;\r\n\tcompListingYN: string;\r\n\tconcessionsAmount: number;\r\n\tconcessionsComments: string;\r\n\tcondoArea: string;\r\n\tcondoAreaUnits: string;\r\n\tconstructionMaterials: string;\r\n\tcontactOrder1: string;\r\n\tcontactOrder2: string;\r\n\tcontactOrder3: string;\r\n\tcontactOrder4: string;\r\n\tcontactOrder5: string;\r\n\tcontactOrder6: string;\r\n\tcontingency: string;\r\n\tcontingencyEndDate: string;\r\n\tcontingencyList: string;\r\n\tcontingentDate: string;\r\n\tcontractStatusChangeDate: string;\r\n\tcooling: string;\r\n\tcoolingYN: boolean;\r\n\tcountry: string;\r\n\tcountyOrParish: string;\r\n\tcreditAmount: string;\r\n\tcreditCheckPaidBy: string;\r\n\tcreditCheckYN: string;\r\n\tcumulativeDaysOnMarket: number;\r\n\tcurrentCommercialUse: string;\r\n\tcurrentFinancing: string;\r\n\tcurrentGeologicalYN: string;\r\n\tcurrentPrice: number;\r\n\tcurrentUse: string;\r\n\tcurrentUseComments: string;\r\n\tdateLeaseExpires: string;\r\n\tdaysOnMarket: number;\r\n\tdeletedYN: boolean;\r\n\tdepositKey: string;\r\n\tdepositOther: string;\r\n\tdepositPets: string;\r\n\tdepositSecurity: string;\r\n\tdirectionFaces: string;\r\n\tdirections: string;\r\n\tdisclosures: string;\r\n\tdistanceToBusComments: string;\r\n\tdistanceToElectricComments: string;\r\n\tdistanceToFreewayComments: string;\r\n\tdistanceToGasComments: string;\r\n\tdistanceToPhoneServiceComments: string;\r\n\tdistanceToPlaceofWorshipComments: string;\r\n\tdistanceToSchoolsComments: string;\r\n\tdistanceToSewerComments: string;\r\n\tdistanceToShoppingComments: string;\r\n\tdistanceToStreetComments: string;\r\n\tdistanceToWaterComments: string;\r\n\tdivisibleSQFT: string;\r\n\tdocumentNumber: string;\r\n\tdocumentsChangeTimestamp: string;\r\n\tdocumentsCount: string;\r\n\tdoH1: string;\r\n\tdoH2: string;\r\n\tdoH3: string;\r\n\tdoorFeatures: string;\r\n\tdualVariableCompensationYN: boolean;\r\n\teatingArea: string;\r\n\teffectiveGross: string;\r\n\telectric: string;\r\n\telectricExpense: string;\r\n\telementarySchool: string;\r\n\telementarySchoolOther: string;\r\n\televation: string;\r\n\televationUnits: string;\r\n\tendingDate: string;\r\n\tentryLevel: string;\r\n\tentryLocation: string;\r\n\tequipmentExpense: string;\r\n\tequipmentValue: string;\r\n\testimatedBuyerAgentAOR: string;\r\n\testimatedBuyerAgentFirstName: string;\r\n\testimatedBuyerAgentKeyNumeric: string;\r\n\testimatedBuyerAgentLastName: string;\r\n\testimatedBuyerAgentMlsId: string;\r\n\testimatedBuyerAgentStateLicense: string;\r\n\testimatedBuyerFinancing: string;\r\n\testimatedBuyerOfficeAOR: string;\r\n\testimatedBuyerOfficeKeyNumeric: string;\r\n\testimatedBuyerOfficeMlsId: string;\r\n\testimatedBuyerOfficeName: string;\r\n\testimatedBuyerOfficeStateLicense: string;\r\n\testimatedBuyerTeamEmail: string;\r\n\testimatedBuyerTeamKey: string;\r\n\testimatedBuyerTeamKeyNumeric: string;\r\n\testimatedBuyerTeamName: string;\r\n\testimatedBuyerTeamPreferredPhone: string;\r\n\testimatedCloseDate: string;\r\n\testimatedClosePrice: number;\r\n\testimatedCoBuyerAgentAOR: string;\r\n\testimatedCoBuyerAgentFirstName: string;\r\n\testimatedCoBuyerAgentKeyNumeric: string;\r\n\testimatedCoBuyerAgentLastName: string;\r\n\testimatedCoBuyerAgentMlsId: string;\r\n\testimatedCoBuyerAgentStateLicense: string;\r\n\testimatedCoBuyerOfficeAOR: string;\r\n\testimatedCoBuyerOfficeKeyNumeric: string;\r\n\testimatedCoBuyerOfficeMlsId: string;\r\n\testimatedCoBuyerOfficeName: string;\r\n\testimatedCoBuyerOfficeStateLicense: string;\r\n\testimatedCoBuyerTeamEmail: string;\r\n\testimatedCoBuyerTeamKey: string;\r\n\testimatedCoBuyerTeamKeyNumeric: string;\r\n\testimatedCoBuyerTeamName: string;\r\n\testimatedCoBuyerTeamPreferredPhone: string;\r\n\testimatedConcessionsAmount: string;\r\n\testimatedConcessionsComments: string;\r\n\testimatedContingencyList: string;\r\n\texclusions: string;\r\n\texistingLeaseType: string;\r\n\texpenseYear: string;\r\n\texpirationDate: string;\r\n\texteriorFeatures: string;\r\n\tfenceYN: boolean;\r\n\tfencing: string;\r\n\tfhaEligibility: string;\r\n\tfinancialInfoAsOf: string;\r\n\tfinancialRemarks: string;\r\n\tfireplaceFeatures: string;\r\n\tfireplaceYN: string;\r\n\tfirstRepairs: string;\r\n\tflooring: string;\r\n\tfoundationDetails: string;\r\n\tfuelExpense: string;\r\n\tfurnished: string;\r\n\tfurnitureReplacementExpense: string;\r\n\tgarageIncome: string;\r\n\tgarageRentalRate: string;\r\n\tgarageSpaces: number;\r\n\tgardenerExpense: string;\r\n\tgeocodeModificationTimestamp: string;\r\n\tgeocodeOverrideYN: string;\r\n\tgeocodeSource: string;\r\n\tgreenEnergyEfficient: string;\r\n\tgreenEnergyGeneration: string;\r\n\tgreenIndoorAirQuality: string;\r\n\tgreenLocation: string;\r\n\tgreenSustainability: string;\r\n\tgreenWaterConservation: string;\r\n\tgrossEquity: string;\r\n\tgrossIncome: string;\r\n\tgrossMultiplier: string;\r\n\tgrossOperatingIncome: string;\r\n\tgrossScheduledIncome: string;\r\n\tgrossSpendableIncome: string;\r\n\thave: string;\r\n\theating: string;\r\n\theatingYN: boolean;\r\n\thighSchool: string;\r\n\thighSchoolDistrict: string;\r\n\thighSchoolOther: string;\r\n\thighTechFlexSquareFootage: string;\r\n\tholdActivationDate: string;\r\n\tholdDate: string;\r\n\thoursDaysOfOperation: string;\r\n\thoursDaysOfOperationDescription: string;\r\n\thoursOwnerWorks: string;\r\n\timprovements: string;\r\n\timprovementsAmount: string;\r\n\timprovementsPercent: string;\r\n\tinclusions: string;\r\n\tindustrialSquareFootage: string;\r\n\tindustrialSquareFootageMax: string;\r\n\tindustrialSquareFootageMin: string;\r\n\tindustrialType: string;\r\n\tingressEgress: string;\r\n\tinsuranceExpense: string;\r\n\tinsuranceWaterFurnitureYN: string;\r\n\tinteriorFeatures: string;\r\n\tinternetAddressDisplayYN: boolean;\r\n\tinternetAutomatedValuationDisplayYN: boolean;\r\n\tinternetConsumerCommentYN: boolean;\r\n\tinternetEntireListingDisplayYN: boolean;\r\n\tinternetSendListPriceYN: string;\r\n\tinventoryValue: string;\r\n\tinvestmentPropertyYN: string;\r\n\tlandLeaseAmount: number;\r\n\tlandLeaseAmountFrequency: string;\r\n\tlandLeaseAmountSource: string;\r\n\tlandLeaseExpirationDate: string;\r\n\tlandLeasePurchaseYN: string;\r\n\tlandLeaseRenewalDate: string;\r\n\tlandLeaseTransferFee: string;\r\n\tlandLeaseYN: boolean;\r\n\tlandUse: string;\r\n\tlandValue: string;\r\n\tlandValuePercent: string;\r\n\tlargestContigiousSquareFootage: string;\r\n\tlatitude: number;\r\n\tlatitudeManual: number;\r\n\tlaundryEquipmentOwnLease: string;\r\n\tlaundryFeatures: string;\r\n\tlaundryIncome: string;\r\n\tlaundryYN: boolean;\r\n\tleasableArea: string;\r\n\tleasableAreaUnits: string;\r\n\tleaseAssignableYN: string;\r\n\tleaseConsideredYN: string;\r\n\tleaseRenewalCompensation: string;\r\n\tleaseRenewalOptionYN: string;\r\n\tleaseTerm: string;\r\n\tlegalAccountingExpense: string;\r\n\tlevels: string;\r\n\tlicense1: string;\r\n\tlicense2: string;\r\n\tlicense3: string;\r\n\tlicensesExpense: string;\r\n\tlistAgentAOR: string;\r\n\tlistAgentBrokerKeyNumeric: number;\r\n\tlistAgentBrokerMlsId: string;\r\n\tlistAgentDirectPhone: string;\r\n\tlistAgentDirectPhoneExt: string;\r\n\tlistAgentEmail: string;\r\n\tlistAgentEmailConfidential: string;\r\n\tlistAgentFax: string;\r\n\tlistAgentFirstName: string;\r\n\tlistAgentHomePhone: string;\r\n\tlistAgentHomePhoneExt: string;\r\n\tlistAgentKeyNumeric: number;\r\n\tlistAgentLanguages: string;\r\n\tlistAgentLastName: string;\r\n\tlistAgentMainOfficeKeyNumeric: number;\r\n\tlistAgentMainOfficeMlsId: string;\r\n\tlistAgentMlsId: string;\r\n\tlistAgentMobilePhone: string;\r\n\tlistAgentPager: string;\r\n\tlistAgentStateLicense: string;\r\n\tlistAgentTollFreePhone: string;\r\n\tlistAgentTollFreePhoneExt: string;\r\n\tlistAgentVoiceMail: string;\r\n\tlistAgentVoiceMailExt: string;\r\n\tlistingAgreement: string;\r\n\tlistingContractDate: string;\r\n\tlistingId: string;\r\n\tlistingKeyNumeric: number;\r\n\tlistingService: string;\r\n\tlistingTerms: string;\r\n\tlistOfficeAOR: string;\r\n\tlistOfficeFax: string;\r\n\tlistOfficeKeyNumeric: number;\r\n\tlistOfficeMlsId: string;\r\n\tlistOfficeName: string;\r\n\tlistOfficePhone: string;\r\n\tlistOfficePhoneExt: string;\r\n\tlistOfficeStateLicense: string;\r\n\tlistPrice: number;\r\n\tlistPriceLow: string;\r\n\tlistTeamEmail: string;\r\n\tlistTeamKey: string;\r\n\tlistTeamKeyNumeric: string;\r\n\tlistTeamName: string;\r\n\tlistTeamPreferredPhone: string;\r\n\tlivingArea: number;\r\n\tlivingAreaSource: string;\r\n\tlivingAreaUnits: string;\r\n\tloanPayment: string;\r\n\tlockBoxLocation: string;\r\n\tlockBoxSerialNumber: string;\r\n\tlockBoxType: string;\r\n\tlockBoxVersion: string;\r\n\tlongitude: number;\r\n\tlongitudeManual: number;\r\n\tlotDimensionsSource: string;\r\n\tlotFeatures: string;\r\n\tlotSizeAcres: number;\r\n\tlotSizeArea: number;\r\n\tlotSizeDimensions: string;\r\n\tlotSizeSource: string;\r\n\tlotSizeSquareFeet: number;\r\n\tlotSizeUnits: string;\r\n\tmainLevelBathrooms: string;\r\n\tmainLevelBedrooms: string;\r\n\tmaintenanceExpense: string;\r\n\tmaintenancePercent: string;\r\n\tmajorChangeTimestamp: string;\r\n\tmajorChangeType: string;\r\n\tmake: string;\r\n\tmanagementCo: string;\r\n\tmanagementCoPhone: string;\r\n\tmanagementCoPhoneExt: string;\r\n\tmanagerApprovalYN: boolean;\r\n\tmanagersFax: string;\r\n\tmaxTotalArea: string;\r\n\tmaxTotalAreaUnits: string;\r\n\tmiddleOrJuniorSchool: string;\r\n\tmiddleOrJuniorSchoolOther: string;\r\n\tminimumDownAmount: string;\r\n\tminTotalArea: string;\r\n\tminTotalAreaUnits: string;\r\n\tmlsAreaMajor: string;\r\n\tmobileHomeRemainsYN: boolean;\r\n\tmobileLength: number;\r\n\tmobileWidth: number;\r\n\tmodel: string;\r\n\tmodificationTimestamp: string;\r\n\tmonthlyNNN: string;\r\n\tmoveIn: string;\r\n\tneighborhood: string;\r\n\tadminUpdateYN: string;\r\n\tnetOperatingIncome: string;\r\n\tnetProfit: string;\r\n\tnewConstructionYN: string;\r\n\tnewTaxesExpense: string;\r\n\tnmrSellerParticipationYN: boolean;\r\n\tnumberOfBuildings: string;\r\n\tnumberOfFullTimeEmployees: string;\r\n\tnumberOfPads: string;\r\n\tnumberOfPartTimeEmployees: string;\r\n\tnumberOfRentedGarages: string;\r\n\tnumberOfSeparateElectricMeters: string;\r\n\tnumberOfSeparateGasMeters: string;\r\n\tnumberOfSeparateWaterMeters: string;\r\n\tnumberOfSheds: number;\r\n\tnumberOfUnitsInCommunity: string;\r\n\tnumberOfUnitsLeased: string;\r\n\tnumberOfUnitsTotal: string;\r\n\tnumberRemotes: string;\r\n\tnumberWallAC: string;\r\n\tnumberWithCarpet: string;\r\n\tnumberWithDishwasher: string;\r\n\tnumberWithDisposal: string;\r\n\tnumberWithDrapes: string;\r\n\tnumberWithPatio: string;\r\n\tnumberWithRange: string;\r\n\tnumberWithRefrigerator: string;\r\n\toccupancy: string;\r\n\toccupantName: string;\r\n\toccupantPhone: string;\r\n\toccupantPhoneExt: string;\r\n\toccupantType: string;\r\n\toffersEmail: string;\r\n\tofficeClass: string;\r\n\tofficeSquareFootage: string;\r\n\tofficeSquareFootageMax: string;\r\n\tofficeSquareFootageMin: string;\r\n\tofficeType: string;\r\n\toffMarketDate: string;\r\n\toffMarketTimestamp: string;\r\n\tonMarketDate: string;\r\n\tonMarketTimestamp: string;\r\n\topenHouseCount: number;\r\n\toperatingExpense: string;\r\n\toperatingExpensePercent: string;\r\n\toriginalEntryTimestamp: string;\r\n\toriginalListPrice: number;\r\n\toriginatingSystemID: string;\r\n\toriginatingSystemKey: number;\r\n\toriginatingSystemModificationTimestamp: string;\r\n\totherExpense: string;\r\n\totherExpenseDescription: string;\r\n\totherFees: string;\r\n\totherIncome1: string;\r\n\totherIncome2: string;\r\n\totherIncomeDescription: string;\r\n\totherPhoneDescription: string;\r\n\totherPhoneExt: string;\r\n\totherPhoneNumber: string;\r\n\totherStructures: string;\r\n\townerName: string;\r\n\townerPays: string;\r\n\townerPhone: string;\r\n\townershipType: string;\r\n\tparcelMaster: string;\r\n\tparcelNumber: string;\r\n\tparkingFeatures: string;\r\n\tparkingRatio: string;\r\n\tparkingTotal: number;\r\n\tparkingYN: boolean;\r\n\tparkManagerName: string;\r\n\tparkManagerPhone: string;\r\n\tparkManagerPhoneExt: string;\r\n\tparkName: string;\r\n\tpatioAndPorchFeatures: string;\r\n\tpatioYN: boolean;\r\n\tpersonalPropertyAmount: string;\r\n\tpersonalPropertyPercent: string;\r\n\tpestControlExpense: string;\r\n\tpetsAllowed: string;\r\n\tphase: string;\r\n\tphotosChangeTimestamp: string;\r\n\tphotosCount: number;\r\n\tpoints: string;\r\n\tpoolExpense: string;\r\n\tpoolFeatures: string;\r\n\tpoolPrivateYN: boolean;\r\n\tpossession: string;\r\n\tpossibleUse: string;\r\n\tpossibleUseComments: string;\r\n\tpostalCode: string;\r\n\tpostalCodePlus4: string;\r\n\tpresentLoans: string;\r\n\tpreviousListPrice: number;\r\n\tpreviousStandardStatus: string;\r\n\tpriceChangeTimestamp: string;\r\n\tpricePerLotSquareFoot: string;\r\n\tpricePerSquareFoot: number;\r\n\tpricePerUnit: string;\r\n\tprivateRemarks: string;\r\n\tprobateAuthority: string;\r\n\tprofessionalManagementExpense: string;\r\n\tpropertyAttachedYN: string;\r\n\tpropertyCondition: string;\r\n\tpropertySubType: string;\r\n\tpropertyType: string;\r\n\tpublicRemarks: string;\r\n\tpurchaseContractDate: string;\r\n\trealEstateTaxExpense: string;\r\n\treasonForSelling: string;\r\n\tregisteredYN: boolean;\r\n\trentControlYN: string;\r\n\trentExcludes: string;\r\n\trentIncludes: string;\r\n\trentMax: string;\r\n\trentMin: string;\r\n\treservesExpense: string;\r\n\tresidentialSquareFootage: string;\r\n\tresidentManagerExpense: string;\r\n\tretailCenterType: string;\r\n\tretailSquareFootage: string;\r\n\troadFrontageType: string;\r\n\troadSurfaceType: string;\r\n\troof: string;\r\n\troomBathroomFeatures: string;\r\n\troomKitchenFeatures: string;\r\n\troomType: string;\r\n\trvParkingDimensions: string;\r\n\trvParkingFee: string;\r\n\tsaleConsideredYN: string;\r\n\tseatingCapacity: string;\r\n\tsecurityExpense: string;\r\n\tsecurityFeatures: string;\r\n\tsellerInstructedToExcludeYN: string;\r\n\tseniorCommunityYN: boolean;\r\n\tserialU: string;\r\n\tserialX: string;\r\n\tserialXX: string;\r\n\tsewer: string;\r\n\tshowingContactName: string;\r\n\tshowingContactPhone: string;\r\n\tshowingContactPhoneExt: string;\r\n\tshowingContactType: string;\r\n\tshowingInstructions: string;\r\n\tsignage: string;\r\n\tsignOnPropertyYN: boolean;\r\n\tskirt: string;\r\n\tsoilType: string;\r\n\tsoldCapRate: string;\r\n\tsourceSystemID: string;\r\n\tsourceSystemKey: string;\r\n\tsourceSystemModificationTimestamp: string;\r\n\tspaFeatures: string;\r\n\tspaYN: boolean;\r\n\tspecialAssessments: string;\r\n\tspecialLicenses: string;\r\n\tspecialListingConditions: string;\r\n\tsprinklersYN: string;\r\n\tstandardStatus: string;\r\n\tstartShowingDate: string;\r\n\tstateOrProvince: string;\r\n\tstatusChangeTimestamp: string;\r\n\tstatusPriceChangeTimestamp: string;\r\n\tstoriesTotal: number;\r\n\tstreetDirPrefix: string;\r\n\tstreetDirSuffix: string;\r\n\tstreetName: string;\r\n\tstreetNumber: string;\r\n\tstreetNumberNumeric: number;\r\n\tstreetSuffix: string;\r\n\tstreetSuffixModifier: string;\r\n\tstructureType: string;\r\n\tsubdivisionCode: string;\r\n\tsubdivisionName: string;\r\n\tsubdivisionNameOther: string;\r\n\tsuppliesExpense: string;\r\n\tsurvey: string;\r\n\tsurveyType: string;\r\n\tsyndicateTo: string;\r\n\tsyndicationRemarks: string;\r\n\ttaxAnnualAmount: string;\r\n\ttaxArea: string;\r\n\ttaxBlock: string;\r\n\ttaxCensusTract: string;\r\n\ttaxesPercent: string;\r\n\ttaxLot: string;\r\n\ttaxMapNumber: string;\r\n\ttaxModel: string;\r\n\ttaxOtherAnnualAssessmentAmount: string;\r\n\ttaxOtherAnnualAssessmentAmountSource: string;\r\n\ttaxParcelLetter: string;\r\n\ttaxRate: string;\r\n\ttaxRateTotal: string;\r\n\ttaxTract: string;\r\n\ttaxTractMapStatus: string;\r\n\ttaxTractNumber: string;\r\n\ttaxYear: string;\r\n\ttenantPays: string;\r\n\ttopography: string;\r\n\ttotalActualRent: string;\r\n\ttotalBuildingNRA: string;\r\n\ttotalExpenses: string;\r\n\ttotalMonthlyRent: string;\r\n\ttotalMoveInCosts: string;\r\n\ttractSubAreaCode: string;\r\n\ttransferFee: string;\r\n\ttransferFeePaidBy: string;\r\n\ttrashExpense: string;\r\n\ttrees: string;\r\n\tuncoveredSpaces: string;\r\n\tunitNumber: string;\r\n\tuniversalPropertyId: string;\r\n\tunparsedAddress: string;\r\n\turlDescription: string;\r\n\tusableLandPercent: string;\r\n\tutilities: string;\r\n\tvacancyAllowance: string;\r\n\tvacancyAllowanceRate: string;\r\n\tview: string;\r\n\tviewYN: boolean;\r\n\tvirtualTourURLBranded: string;\r\n\tvirtualTourURLUnbranded: string;\r\n\tvirtualTourURLUnbranded2: string;\r\n\tvoltage: string;\r\n\twalkScore: number;\r\n\twaterBodyName: string;\r\n\twaterfrontFeatures: string;\r\n\twaterSewerExpense: string;\r\n\twaterSource: string;\r\n\twaterTableDepth: string;\r\n\twaterWellYN: string;\r\n\twellDepth: string;\r\n\twellGallonsPerMinute: string;\r\n\twellHoleSize: string;\r\n\twellPumpHorsepower: string;\r\n\twellReportYN: string;\r\n\twindowFeatures: string;\r\n\twithdrawnDate: string;\r\n\tworkmansCompensationExpense: string;\r\n\tyearBuilt: number;\r\n\tyearBuiltSource: string;\r\n\tyearEstablished: string;\r\n\tyearsCurrentOwner: string;\r\n\tzoning: string;\r\n\tzoningDescription: string;\r\n\tpowerProductionYN: string;\r\n\tgreenVerificationYN: string;\r\n\trentalApplication: string;\r\n\tadditionalInfo: string;\r\n\tidxContactInfo: string;\r\n\tspecialConsiderations: string;\r\n\tparcelNumberAvailableYN: string;\r\n\tdpResourceYN: string;\r\n\trentalApplicationURL: string;\r\n\tcreatedBy: string;\r\n\tcreatedOn: string;\r\n\tmodifiedBy: string;\r\n\tmodifiedOn: string;\r\n}\r\n\r\n/// Todo remove mock data\r\nexport const mockCase = {\r\n\tmemberName: \"Bill Nicholas\",\r\n\tmemberStatus: \"Active\",\r\n\tmemberAor: \"Arcadia Association of REALTORS\",\r\n\tunseenChanges: false,\r\n\tticklerAlert: false,\r\n\ttickler: \"0001-01-01T00:00:00+00:00\",\r\n\treason: null,\r\n\tpriority: null,\r\n\tassignName: null,\r\n\treportIds: [\r\n\t\t\"e8ab4a39-f2b3-43c0-2252-08dadc807608\",\r\n\t\t\"ab8f8e7a-34e0-4646-adf6-08dadeff4366\",\r\n\t\t\"dd51ded9-24af-4cc2-adf5-08dadeff4366\",\r\n\t\t\"e8ab4a39-f2b3-43c0-2252-08dadc807608\",\r\n\t\t\"ab8f8e7a-34e0-4646-adf6-08dadeff4366\",\r\n\t\t\"dd51ded9-24af-4cc2-adf5-08dadeff4366\",\r\n\t\t\"e8ab4a39-f2b3-43c0-2252-08dadc807608\",\r\n\t\t\"ab8f8e7a-34e0-4646-adf6-08dadeff4366\",\r\n\t\t\"dd51ded9-24af-4cc2-adf5-08dadeff4366\",\r\n\t\t\"e8ab4a39-f2b3-43c0-2252-08dadc807608\",\r\n\t\t\"ab8f8e7a-34e0-4646-adf6-08dadeff4366\",\r\n\t\t\"dd51ded9-24af-4cc2-adf5-08dadeff4366\",\r\n\t\t\"e8ab4a39-f2b3-43c0-2252-08dadc807608\",\r\n\t],\r\n\trulesIds: [\r\n\t\t\"f108df6d-d748-426d-bd4a-08dabc1aa7ba\",\r\n\t\t\"1dbcabe6-b48d-4749-bd4f-08dabc1aa7ba\",\r\n\t\t\"b2848b36-6df6-454b-bd4c-08dabc1aa7ba\",\r\n\t\t\"f108df6d-d748-426d-bd4a-08dabc1aa7ba\",\r\n\t\t\"1dbcabe6-b48d-4749-bd4f-08dabc1aa7ba\",\r\n\t\t\"b2848b36-6df6-454b-bd4c-08dabc1aa7ba\",\r\n\t\t\"f108df6d-d748-426d-bd4a-08dabc1aa7ba\",\r\n\t\t\"1dbcabe6-b48d-4749-bd4f-08dabc1aa7ba\",\r\n\t\t\"b2848b36-6df6-454b-bd4c-08dabc1aa7ba\",\r\n\t\t\"f108df6d-d748-426d-bd4a-08dabc1aa7ba\",\r\n\t\t\"1dbcabe6-b48d-4749-bd4f-08dabc1aa7ba\",\r\n\t\t\"b2848b36-6df6-454b-bd4c-08dabc1aa7ba\",\r\n\t\t\"f108df6d-d748-426d-bd4a-08dabc1aa7ba\",\r\n\t\t\"b2848b36-6df6-454b-bd4c-08dabc1aa7ba\",\r\n\t\t\"1dbcabe6-b48d-4749-bd4f-08dabc1aa7ba\",\r\n\t\t\"f108df6d-d748-426d-bd4a-08dabc1aa7ba\",\r\n\t\t\"1dbcabe6-b48d-4749-bd4f-08dabc1aa7ba\",\r\n\t\t\"f1c6f6c9-8b85-4ca4-bd4e-08dabc1aa7ba\",\r\n\t],\r\n\trules: [\r\n\t\t{\r\n\t\t\truleNumber: \"8.3\",\r\n\t\t\truleTitle: \"Display of Inaccurate Listing Status\",\r\n\t\t\twarning: true,\r\n\t\t\tcitationFee: 250,\r\n\t\t\tmlsRulebookText:\r\n\t\t\t\t\"8.3  Accuracy of Information; Responsibility for Accuracy. By inputting information into the MLS computer database, the Listing Broker represents that the information input is accurate to the best of the Listing Broker’s knowledge. The Listing Broker shall use good faith efforts to determine the accuracy of the information and shall not submit or input information which the Listing Broker knows to be inaccurate. Upon receipt of the first publication or electronic transfer by the MLS of such information, the Listing Broker shall make all necessary corrections. The MLS merely publishes the MLS information and has no affirmative responsibility to verify the accuracy of the MLS information. The AOR/MLS, however, reserves the right to require Participants and Subscribers to change their MLS information if the AOR/MLS is made aware of alleged inaccuracies in the MLS information and the AOR/MLS determines that such inaccuracies do in fact exist. The MLS also reserves the right to remove a listing that contains said inaccurate information from the MLS compilation of current listings should Participant or Subscriber refuse or fail to timely correct. A Participant or Subscriber is required to correct inaccurate information within 2 days after being notified of the inaccuracies by the MLS. If a Participant or Subscriber fails to make necessary or required corrections to their MLS information, the Participant and Subscriber shall indemnify and hold harmless the AOR/MLS for any claims, cost, damage, or losses, including reasonable attorney fees and court costs, incurred by the MLS as a result of such failure. The AOR/MLS also reserves the right to remove information and listings from the database when it is clear that inaccurate data has been entered, in addition to disciplining the Participant and Subscriber for violations of the MLS rules. In no event will the AOR/MLS be liable to any Participant, Subscriber, or any other party for any indirect, special, or consequential damages arising out of any information published in the MLS, and all other damages shall be limited to an amount not to exceed the MLS fees paid by the Listing Broker. \",\r\n\t\t\tprocessingGuideline:\r\n\t\t\t\t\"Policy: To investigate all reports made regarding inaccurate statuses and ensure that all information entered on the MLS is accurate.\\r\\n Application:\\r\\n 1.This violation usually occurs when a report is received regarding a property that is not available for showings and is listed as Active on the MLS.Other reports include listings that are currently Active on the MLS but should be Withdrawn by the brokerage, per the request of the seller(s).\\r\\n Comments:\\r\\n 1.A listing that has not been updated to reflect the acceptance of an offer is NOT handled under this Rule.Please refer to Rule 10.2 for further processing regarding reports of Active listings that should be Pending or Active Under Contract.\\r\\n \\r\\n 35\\r\\n Procedures:\\r\\n 1.Issue a Warning Notice to the listing agent.\\r\\n a.WARNING NOTICE: This notice will advise the listing agent of the report received and will request the listing agent either make the necessary modification(s), or, respond to the warning and advise that the current status is correct within 2 business days to prevent the issuance of a citation.All brokers and office managers will be copied on this notice and the Association contact will be BCC’d.\\r\\n 2.If evidence proving the inaccurate status is provided by the reporting agent and corrective action is not taken within the time frame provided on the Warning Notice, a Citation will be issued for violating section 8.3 – Inaccurate Information.The status will be modified by CRMLS Staff.\\r\\n a.CITATION NOTICE: This notice will reiterate the report received and will reference the fact that we reached out on[DATE] and requested the necessary modification be made within 2 business days.Because corrective action was not taken within the allotted time frame on the Warning Notice, a citation was issued.Note all modifications made by CRMLS Staff and copy all brokers and office managers on this notice.The Association contact will be BCC’d.\\r\\n 3.If evidence is not received and corrective action is not taken, reissue a Warning Notice, as outlined above and reference this as our second attempt at resolving the violation.As noted above, all brokers and office managers are to be copied and the Association contact is to be BCC’d.If corrective action is still not taken, close the case as Unable to Verify and advise the reporting party that the listing was not found in violation at this time.Request additional information from the reporting party to assist in our investigation.\\r\\n 4.If additional information is provided, we can reopen the case or create a new case.\\r\\n 5.If the listing status was modified prior to your review of the report, correcting the violation, close the case as Corrected and advise the reporting party of this resolution.\",\r\n\t\t\temailTemplate: \"N/A\",\r\n\t\t\tcreatedBy: \"\",\r\n\t\t\tcreatedOn: \"2022-11-01T11:06:29.5773977-04:00\",\r\n\t\t\tid: \"f108df6d-d748-426d-bd4a-08dabc1aa7ba\",\r\n\t\t\tmodifiedBy: \"\",\r\n\t\t\tmodifiedOn: \"2022-11-01T11:06:29.5773977-04:00\",\r\n\t\t},\r\n\t\t{\r\n\t\t\truleNumber: \"13.2\",\r\n\t\t\truleTitle: \"Unauthorized Sharing of Lockbox Key\",\r\n\t\t\twarning: false,\r\n\t\t\tcitationFee: 1500,\r\n\t\t\tmlsRulebookText:\r\n\t\t\t\t\"

Key Use and Service. Keys may not be used under any circumstances by anyone other than the key holder, including, but not limiting to, lending, borrowing or sharing keys with others. Access codes may not be provided to third-parties without the consent of the seller. The AOR/MLS is not obligated to provide service on keys or lockboxes to an individual who is not the registered lessee or owner of the component. The key will only be used for the purpose of facilitating the sale/lease of a property.

\",\r\n\t\t\tprocessingGuideline:\r\n\t\t\t\t\"

Policy: To investigate and aggressively enforce this rule to prevent the sharing of Lockbox keys and unauthorized entry to a listed property. '

\\n

These infractions are considered very serious due to the property and privacy rights of the homeowners. Application:

\\n

1. Reports of this violation are typically made when the person accessing the property is not the actual agent registered to the Supra Key.

\\n

2. The typical scenario found is an agent or broker sends an assistant with their Supra Key to access the property on their behalf.

\\n

3. This violation is not limited to the use of Supra Keys. Accessing the property by entry of a combo lock or other lockbox in which the person at the property is not the actual agent that communicated with the listing agent is also a violation.

\\n

4. All evidence must be saved and attached to the case prior to the issuance of a citation. Procedures: Upon receipt of a report, make a case in Salesforce if there is not already one in an open status. Review all evidence to determine if a violation of this rule occurred.

\\n

1. If enough evidence was not provided by the reporting agent, send a follow-up/confirmation of report received and request they provide additional information regarding their report. a. If additional information is provided, proceed to step 3. b. If additional information is not provided, proceed to step 2. 2. If enough evidence is not provided by the reporting party after our follow-up confirmation, reach out to the reported agent via an inquiry to confirm they were the person to access the property. a. Inquiry: In this notice, advise the reported agent of the report received and request that they confirm they were the person at the property. Copy all Brokers and Office Managers on the inquiry. b. If they state they were the person accessing the property, close the case as AOR Referral and request the reporting party reach out to the reported agent’s AOR’s Pro Standard Administrator to file a grievance. 78 c. If they admit an assistant or other person was sent to the property on their behalf, issue a Citation. i. Citation Notice: Reference the report received and include all evidence used to determine the outcome of the investigation. All admissions MUST be included in this notice. Copy all Brokers and Office Managers and include the Association Contact as a BCC. 3. If enough evidence is provided, issue a Citation. a. Citation Notice: Reference the report received and include all evidence used to determine the outcome of the investigation. Copy all Brokers and Office Managers and include the Association Contact as a BCC.

\",\r\n\t\t\temailTemplate: \"

N/A

\",\r\n\t\t\tcreatedBy: \"\",\r\n\t\t\tcreatedOn: \"2022-11-01T11:06:31.2879652-04:00\",\r\n\t\t\tid: \"1dbcabe6-b48d-4749-bd4f-08dabc1aa7ba\",\r\n\t\t\tmodifiedBy: \"a181ec35-cfd1-409e-b2cc-af0f7c32621a\",\r\n\t\t\tmodifiedOn: \"2023-01-12T19:23:35.1019952+00:00\",\r\n\t\t},\r\n\t\t{\r\n\t\t\truleNumber: \"10.2\",\r\n\t\t\truleTitle: \"Failure to Timely Report Listing Status Chanes and Sales\",\r\n\t\t\twarning: false,\r\n\t\t\tcitationFee: 250,\r\n\t\t\tmlsRulebookText:\r\n\t\t\t\t\"a) Listings with accepted offers shall be reported to the MLS or input into the MLS database as “pending” or “active under contract” within 2 business days of the acceptance by the Listing Broker unless the negotiations were carried on under Section 9.1 (a) or (b), in which case, the Buyer Broker shall notify the Listing Broker of the “pending” or “active under contract” status within 2 business days after acceptance, whereby the Listing Broker shall then report or input the status change to the MLS within 2 business days of receiving notice from the Buyer Broker.\\r\\n b) The listing shall be published on the MLS as “pending” or “active under contract” with no price or terms prior to the final closing.\\r\\n c) Upon final closing, the Listing Broker shall report or input the listing in the MLS as “sold” and report the selling price within 2 business days of the final closing date unless the negotiations were carried on under Section 9.1 (a) or (b), in which case, the Buyer Broker shall notify the Listing Broker of the “sold” status and selling price within 2 business days after the final closing date, whereby the Listing Broker shall then report or input the status change and selling price to the MLS within 2 business days of receiving notice from the Buyer Broker.\\r\\n d) Listings which were not input into the MLS as a result of the seller’s(s’) instructions may be input into the MLS “sold” data at the Listing Broker's option. However, listings which were input into the MLS but subsequently withdrawn must still be reported under this section if the seller is represented by the Listing Broker when it closes.\\r\\n e) The MLS may accept the reporting of sales information for comparable purposes about other properties which were not otherwise eligible for input into the MLS but are located in the MLS’s service area and “sold” by an MLS participant and/or subscriber who represented a party in the transaction (i.e. broker who represented the seller or broker who represented the buyer), as long as such reporting is authorized by a party in the transaction to the broker who represented it, (if requested by the MLS documentation must be presented to MLS within 2 business days), and the circumstances of the representation are disclosed on the Service by the reporting participant or subscriber. Any submission of sales information must occur within 2 business days after close of escrow.\",\r\n\t\t\tprocessingGuideline:\r\n\t\t\t\t\"Policy: To maintain the quality of data by investigating reports of late reporting of sales and late reporting of acceptance of offers.\\r\\n Application:\\r\\n 1. This violation typically occurs when a listing is not changed to Pending or Active Under Contract upon the seller(s)’s acceptance of an offer, resulting in the status change from Active to Sold on the same day. In those cases, the agent violated this rule because the acceptance of the offer was never reported on the MLS.\\r\\n 37\\r\\n 2. Another common report involves a listing that is displaying a status of Pending or Active Under Contract but should be in the status of Closed. In this instance, the agent failed to update the listing upon the property closing escrow.\\r\\n Comments:\\r\\n 1. Listings that display a status of Auto Sold (noted with a red flag) are NOT to be processed under this rule. Reference Rule 8.3 – Auto Sold for instructions on how to process under the associated violation.\\r\\n 2. Pending should be used when an offer is accepted, and the seller(s) is not accepting back- up offers. If back-up offers are being accepted, Active Under Contract is the proper status. However, it is up to the broker to decide which status is to be used. Compliance does not make that decision for the listing agent or broker.\\r\\n Procedures:\\r\\n 1. Upon review of the report, verify the current status of the listing.\\r\\n 2. If the listing is still in a status other than Pending, Active under Contract, or Closed, send an\\r\\n inquiry.\\r\\n a. Inquiry: This notice will reference the report received and will include information regarding the potential violation of Rule 10.2. Within the notice, request the agent either confirm that the current status is correct, or, make the necessary updates. Provide the agent a corrective action deadline of 2 business days and copy all brokers and office managers.\\r\\n b. If corrective action is not taken within the 2 business days, request additional information from the reporting party as a separate inquiry. If additional information is not provided, close the case as Unable to Verify and make a note that a violation was not determined at this time due to insufficient evidence If additional information is provided, such as a copy of an email thread or text message between the reporting party and the listing agent, and the listing is found to be in an inaccurate status based on an admission from the listing agent, issue a Citation Notice under Rule 10.2.\\r\\n i. CITATION NOTICE: This notice will reference the report received and will include information regarding the violation of Rule 10.2. Within the notice, reference the evidence received and request that the listing agent make the necessary changes to the listing within 2 business days. All brokers and office managers will be copied on this notice and the Association contact will be BCC’d.\\r\\n ii. If corrective action is not taken within 2 business days after the issuance of a citation, issue another Citation under Rule 14.4. Reference this section for instructions how to proceed.\\r\\n 3. If the listing status was updated prior to your review of the report and is Pending, send an inquiry and request a copy of the signed purchase agreement.\\r\\n a. Inquiry: This notice will reference the report received and will include information regarding the potential violation of Rule 10.2. Within the notice, request the agent\\r\\n 38\\r\\n \\r\\n provide CRMLS with a copy of the signed purchase agreement for the accepted offer. Provide the agent with a corrective action deadline of 2 business days. All brokers and office managers will be copied on this notice.\\r\\n b. Review of Documentation: Upon receipt of the signed purchase agreement, verify that the purchase contract date on the MLS is consistent with the date of the accepted offer.\\r\\n c. If the dates are consistent but the change in status was made after the 2-business day time frame, as outlined in Rule 10.2, issue a Citation.\\r\\n i. CITATION NOTICE: This notice will reference the report received and will include information regarding the violation of Rule 10.2. Within the notice, reference the evidence received. All brokers and office managers will be copied on this notice and the Association contact will be BCC’d.\\r\\n This violation CANNOT be corrected.\\r\\n d. If the date on the MLS is inconsistent with the documentation provided, follow-up with the agent via email and request if any other documentation, such as signed counter offers, can be provided which would support the date on the MLS.\\r\\n e. If additional documentation cannot be provided, issue a Citation under Rule 10.2, as outlined above. Upon the issuance of the citation, modify the purchase contract date to reflect the signed purchase agreement.\\r\\n f. If additional documentation is provided and matches the MLS but the change was made outside of the 2-business day timeframe, issue a Citation under Rule 10.2, as outlined above.\\r\\n 4. If the listing status was updated prior to your review of the report and is Closed, send an inquiry and request a copy of the Final Closing Statement.\\r\\n a. Inquiry: This notice will reference the report received and will include information regarding the potential violation of Rule 10.2. Within the notice, request the agent provide CRMLS with a copy of the Final Closing Statement. Provide the agent with a corrective action deadline of 2 business days. All brokers and office managers will be copied on this notice.\\r\\n b. Review of Documentation: Upon receipt of the Final Closing Statement, verify that the Reported Date on the document is consistent with the close of escrow date on the MLS.\\r\\n c. If the dates are consistent but the change in status was made after the 2-business day time frame, as outlined in Rule 10.2, issue a Citation Notice.\\r\\n i. CITATION NOTICE: This notice will reference the report received and will include information regarding the violation of Rule 10.2. Within the notice, reference the evidence received. All brokers and office managers will be copied on this notice and the Association contact will be BCC’d. This violation CANNOT be corrected.\\r\\n 39\\r\\n \\r\\n d. If the date on the MLS is inconsistent with the documentation provided, modify the close of escrow date to reflect the closing statement and issue a Citation under Rule 10.2, as outlined above, if the status change occurred more than 2 business days from the close of escrow date.\",\r\n\t\t\temailTemplate: \"N/A\",\r\n\t\t\tcreatedBy: \"\",\r\n\t\t\tcreatedOn: \"2022-11-01T11:06:30.1631807-04:00\",\r\n\t\t\tid: \"b2848b36-6df6-454b-bd4c-08dabc1aa7ba\",\r\n\t\t\tmodifiedBy: \"\",\r\n\t\t\tmodifiedOn: \"2022-11-01T11:06:30.1631807-04:00\",\r\n\t\t},\r\n\t],\r\n\tmemberId: \"e96f07d3-2fca-4a16-816b-752a758e0be9\",\r\n\tassignTo: \"00000000-0000-0000-0000-000000000000\",\r\n\treferenceNumber: null,\r\n\tfirstNotifiedOn: \"0001-01-01T00:00:00+00:00\",\r\n\tclosedOn: \"0001-01-01T00:00:00+00:00\",\r\n\tcaseObject: null,\r\n\tdisposition: \"CaseDispositions.InAppeal\",\r\n\tstatus: \"Closed\",\r\n\tlistingId: \"PW19234310\",\r\n\tdescription:\r\n\t\t\"Accuracy of Information; Responsibility for Accuracy. By inputting information into the MLS computer database, the Listing Broker represents that the information input is accurate to the best of the Listing Broker’s knowledge. The Listing Broker shall use good faith efforts to determine the accuracy of the information and shall not submit or input information which the Listing Broker knows to be inaccurate. Upon receipt of the first publication or electronic transfer by the MLS of such information, the Listing Broker shall make all necessary corrections. The MLS merely publishes the MLS information and has no affirmative responsibility to verify the accuracy of the MLS information. The AOR/MLS, however, reserves the right to require Participants and Subscribers to change their MLS information if the AOR/MLS is made aware of alleged inaccuracies in the MLS information and the AOR/MLS determines that such inaccuracies do in fact exist. The MLS also reserves the right to remove a listing that contains said inaccurate information from the MLS compilation of current listings should Participant or Subscriber refuse or fail to timely correct. A Participant or Subscriber is required to correct inaccurate information within 2 days after being notified of the inaccuracies by the MLS. If a Participant or Subscriber fails to make necessary or required corrections to their MLS information, the Participant and Subscriber shall indemnify and hold harmless the AOR/MLS for any claims, cost, damage, or losses, including reasonable attorney fees and court costs, incurred by the MLS as a result of such failure. The AOR/MLS also reserves the right to remove information and listings from the database when it is clear that inaccurate data has been entered, in addition to disciplining the Participant and Subscriber for violations of the MLS rules. In no event will the AOR/MLS be liable to any Participant, Subscriber, or any other party for any indirect, special, or consequential damages arising out of any information published in the MLS, and all other damages shall be limited to an amount not to exceed the MLS fees paid by the Listing Broker. \",\r\n\tcaseNumber: \"AA 1.01\",\r\n\tcreatedBy: \"5c1f9d04-2404-44ac-9e9d-148eff99b89c\",\r\n\tcreatedOn: \"2023-01-10T19:59:37.2817659+00:00\",\r\n\tid: \"0c573855-634e-43af-405a-08daf344bac7\",\r\n\tmodifiedBy: \"5c1f9d04-2404-44ac-9e9d-148eff99b89c\",\r\n\tmodifiedOn: \"2023-01-24T15:58:32.8280147+00:00\",\r\n\tviolations: [],\r\n\tviolationIds: [],\r\n};\r\n\r\nexport const mockChatLogNotice: NoticeDefinitionEntityProperties = {\r\n\tviolationIds: [\"d2265035-67c2-45a4-e5df-08db45c72407\", \"7387163b-6d6f-46dd-e5e0-08db45c72407\"],\r\n\tchatLog: [\r\n\t\t{\r\n\t\t\tdate: \"2023-04-29T17:57:06.053+00:00\",\r\n\t\t\tuser: \"analyst\",\r\n\t\t\tsender: \"Jane Smith\",\r\n\t\t\ttext: \"Hi John, I am your compliance analyst and I'll be handling your case today.\",\r\n\t\t},\r\n\t\t{\r\n\t\t\tdate: \"2023-04-29T17:57:06.053+00:00\",\r\n\t\t\tuser: \"agent\",\r\n\t\t\tsender: \"John Smith\",\r\n\t\t\ttext: \"That sounds great.\",\r\n\t\t},\r\n\t\t{\r\n\t\t\tdate: \"2023-04-29T17:57:06.053+00:00\",\r\n\t\t\tuser: \"analyst\",\r\n\t\t\tsender: \"Jane Smith\",\r\n\t\t\ttext: \"There appears to be some reports on one of your listings. Is now a good time to go over them?\",\r\n\t\t},\r\n\t\t{\r\n\t\t\tdate: \"2023-04-29T17:57:06.053+00:00\",\r\n\t\t\tuser: \"agent\",\r\n\t\t\tsender: \"John Smith\",\r\n\t\t\ttext: \"Yes, I'm ready to get started.\",\r\n\t\t},\r\n\t\t{\r\n\t\t\tdate: \"2023-04-29T17:57:06.053+00:00\",\r\n\t\t\tuser: \"analyst\",\r\n\t\t\tsender: \"Jane Smith\",\r\n\t\t\ttext: \"The first reports says that you have some pictures on your listing that are not allowed.\",\r\n\t\t},\r\n\t\t{\r\n\t\t\tdate: \"2023-04-29T17:57:06.053+00:00\",\r\n\t\t\tuser: \"agent\",\r\n\t\t\tsender: \"John Smith\",\r\n\t\t\ttext: \"I'll take them down immediately, thank you.\",\r\n\t\t},\r\n\t\t{\r\n\t\t\tdate: \"2023-04-29T17:57:06.053+00:00\",\r\n\t\t\tuser: \"analyst\",\r\n\t\t\tsender: \"Jane Smith\",\r\n\t\t\ttext: \"There are also reports on listing #128 4br Rockwood Dr. is actually a 1 BR.\",\r\n\t\t},\r\n\t\t{\r\n\t\t\tdate: \"2023-04-29T17:57:06.053+00:00\",\r\n\t\t\tuser: \"agent\",\r\n\t\t\tsender: \"John Smith\",\r\n\t\t\ttext: \"I must have entered 4 bedrooms in error. I will correct it.\",\r\n\t\t},\r\n\t],\r\n\tviolations: [\r\n\t\t{\r\n\t\t\tcomplianceCaseId: \"ed60c444-28ca-4be3-b28c-08db3f743250\",\r\n\t\t\tmlsRuleId: \"750909b8-17c0-469d-bd4b-08dabc1aa7ba\",\r\n\t\t\tmlsRule: {\r\n\t\t\t\truleNumber: \"12.8.1\",\r\n\t\t\t\truleTitle: \"Displaying Unauthorized Photograph on Neighborhood Market Report\",\r\n\t\t\t\twarning: false,\r\n\t\t\t\tcitationFee: 10,\r\n\t\t\t\tmlsRulebookText:\r\n\t\t\t\t\t\"Advertising of Listing in Printed Neighborhood Market Report.\\r\\n Subject to the conditions set forth in (a)through(c) below, as well as throughout these Rules,\\r\\n Participants and Subscribers may include the listings of others in their printed “Neighborhood Market Reports.” The “Neighborhood Market Report” is defined as an advertising and / or information sheet(typically appearing in the form of a postcard, flier or newsletter) compiled by and / or for use by a licensee which sets forth a list of home activity in a particular neighborhood area.Advertising appearing in newspapers, magazines or other classified forms is not included in the definition of “Neighborhood Market Report” and is not authorized by this Rule 12.8.1.\\r\\n c) Allowable Listing Content.Broker Participants and Subscribers may include only those portions of the MLS compilation consisting of the following: property address(and whether attached or detached), status, price, number of bedrooms, number of bathrooms, number of garages(and whether attached or detached), square footage, lot size, year built, tract or development name, and if there’s a pool.Display of other fields, as well as confidential information and photographs, is prohibited.\",\r\n\t\t\t\tprocessingGuideline:\r\n\t\t\t\t\t\"Policy: To investigate reports of this violation and enforce this rule to prevent the use of prohibited and confidential information on the MLS.\\r\\n Application:\\r\\n 9. The most common reports received under this subsection include Neighborhood Market Reports (NMR) which advertise confidential information, such as compensation amounts, Days on Market (DOM), and list prices. The inclusion of photographs is not permitted.\\r\\n a. A violation for the inclusion of prohibited or confidential information results in a fine in the amount of $250.\\r\\n b. A violation for the inclusion of an unauthorized photograph results in a fine in the amount of $1,500.\\r\\n 10. Flyers are not the same as NMRs. NMRs have a grid-like layout, similar to Matrix’s Agent 1- line display, and usually include minimal information such as the bedroom count, bathroom count, square footage, address, and status. The information on an NMR is also concentrated to include a specific area.\\r\\n 11. A copy of each side of the Neighborhood Market Report must be saved as evidence and attached to the case prior to issuing a citation.\\r\\n 65\\r\\n Procedures:\\r\\n 9. Review the information displayed on the NMR and confirm that all data is accessible by public records.\\r\\n 10. If the NMR reported does not include prohibited or confidential information, close the case as No Violation.\\r\\n 11. If the NMR includes information that is prohibited or deemed confidential, issue a Citation:\\r\\n a. Citation Notice: This notice will reference the rule and include all information gathered as evidence to conclude our investigation. The NMR received will be referenced as well as which specific fields or information were inappropriately advertised. All brokers and office managers will be copied on this notice and the Association contact will be included as a BCC.\\r\\n 12. If the flyer is found to be in violation of other Rules, such as 12.8.1(a) for the use of unauthorized listings or 12.8.1(b) for not including proper attribution, issue a new Citation Notice under such rule. Reference the appropriate section for instructions on how to proceed with your investigation.\",\r\n\t\t\t\temailTemplate: \"N/A\",\r\n\t\t\t\tfineType: \"fixed\",\r\n\t\t\t\tcreatedBy: \"\",\r\n\t\t\t\tcreatedOn: \"2022-11-01T11:06:29.8775198-04:00\",\r\n\t\t\t\tid: \"750909b8-17c0-469d-bd4b-08dabc1aa7ba\",\r\n\t\t\t\tmodifiedBy: \"\",\r\n\t\t\t\tmodifiedOn: \"2022-11-01T11:06:29.8775198-04:00\",\r\n\t\t\t},\r\n\t\t\tenumerationLookupId: \"\",\r\n\t\t\tcorrected: false,\r\n\t\t\tcreatedOn: \"2023-04-25T19:56:20.8371784+00:00\",\r\n\t\t\tid: \"d2265035-67c2-45a4-e5df-08db45c72407\",\r\n\t\t},\r\n\t\t{\r\n\t\t\tcomplianceCaseId: \"ed60c444-28ca-4be3-b28c-08db3f743250\",\r\n\t\t\tmlsRuleId: \"f1c6f6c9-8b85-4ca4-bd4e-08dabc1aa7ba\",\r\n\t\t\tmlsRule: {\r\n\t\t\t\truleNumber: \"7.8\",\r\n\t\t\t\truleTitle: \"Failure to Input Listing in MLS or Register Property\",\r\n\t\t\t\twarning: false,\r\n\t\t\t\tcitationFee: 10,\r\n\t\t\t\tmlsRulebookText:\r\n\t\t\t\t\t\"

Within 2 business days after all necessary signatures of the seller(s) have been obtained on the listing, or at the beginning date of the listing as specified in the contract, whichever is later, on any exclusive right to sell/lease or seller reserved listing on one to four unit residential property and vacant lots located within the service area of the MLS, Broker Participants shall (1) input the listing to the service, or (2) submit a seller-signed exclusion in accordance with Section 7.9 (Exempted Listings) to the AOR/MLS. All necessary signatures are those needed to create an enforceable listing, which generally means all named signatories to the listing agreement. In the event there are known additional property owners not made a signatory to the listing, the Listing Broker shall disclose said fact to the AOR/MLS and state whether the listed seller will make the sale contingent on the consent of the additional property owners. In the event the listing agent is prevented from complying with the 2-business day time period due to seller’s delay in returning the signed listing agreement, the Listing Broker must submit the listing to the MLS within 2 business days of receipt back from seller. The AOR/MLS may require the Listing Broker to present documentation to the AOR/MLS evidencing the seller’s delayed transmission. Only those listings that are within the service area of the MLS must be input. Open listings or listings of property located outside the MLS's service area (see Section 7.10) are not required by the MLS but may be input at the Broker Participant’s option.

\",\r\n\t\t\t\tprocessingGuideline:\r\n\t\t\t\t\t'
\\n
\\n
\\n

WARNING: NO

\\n

Policy:

\\n

Investigate and have the agent: 1. Enter the listing into the MLS, or; 2. file an exclusion form with the MLS.

\\n

Application:

\\n

1. When an agent fails to either: 1. Enter a listing into the MLS, or; 2. File an exclusion form with the MLS within 2 business days of the effective list date.

\\n

Comments:

\\n
    \\n
  1. \\n

    This Rule is often implicated when a reporting agent notices a property has a for sale or coming soon sign out front, or is being promoted on social media, and the reporting agent then goes to the MLS and does not find the property listed.

    \\n
  2. \\n
  3. \\n

    If there is an exclusion form on file with the MLS and the exclusion period has not yet expired, this will not be a violation.

    \\n
  4. \\n
  5. \\n

    If the agent on the advertisement is NOT a member of CRMLS, we cannot begin an investigation. The report will need to be forwarded to the appropriate MLS and the reporting party is to be informed of this information.

    \\n
  6. \\n
  7. \\n

    CRMLS has the right to request a copy of a listing agreement even if the listing is not yet entered to the MLS. Per Section 8.2 of the CRMLS Rules and Regulations, a copy of the listing agreement may be requested at any time.

    \\n
  8. \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n

Procedures:

\\n

1. Upon receipt of the report check to see if 1) the violating agent is a member of CRMLS, 2) if an exclusion form was filed with the MLS for the property reported, and 3) if the property was entered in the MLS.

\\n
    \\n
  1. \\n

    If the agent is NOT a member of CRMLS, this will not be a violation. The report will be forwarded to the appropriate MLS and the reporting agent is to be informed of this information.

    \\n
  2. \\n
  3. \\n

    If there is an exclusion form on file with the MLS and the exclusion period has not yet expired, this will not be a violation. Create a Task to follow up and review for the date in the Exclusion Form that the property should be placed in the MLS. Verify that the DOM is accurate in the listing.

    \\n
  4. \\n
  5. \\n

    If there is no listing on the MLS nor was an exclusion form filed with the MLS within 2 business days of the receipt of the report, and the advertising agent is a member of CRMLS, issue a Citation for violating Section 7.8. A case must be created which will contain the initial report and all photographic evidence.

    \\n
  6. \\n
\\n

i. CITATION NOTICE: Because this rule does not require a warning to be sent prior to the issuance of a citation, a citation will be issued under the assumption there is a valid listing agreement in place. A case will be created under the agent on the for-sale sign or other advertisement. On the Citation Notice, copy all brokers and office managers, then BCC the Association contact. Within 2 business days, the agent must either enter the listing into the MLS or file an exclusion form. If neither is done, issue a Citation for violating Rule 14.4. Reference this section for instructions on how to proceed.

\\n

2. If there is a listing on the MLS, search for a filed exclusion form then look at the List Contract Date on the listing. If the listing was entered into the MLS after the report was provided to Compliance, create a case and request a copy of the complete listing agreement (under the authority of CRMLS Rule 8.2) via an inquiry email to the agent. CC all brokers and office managers. At this time, we are requesting the agreement to ensure all information entered on the MLS is accurate.

\\n

3. Review of Listing Agreements: A complete listing agreement consists of having the following: a beginning date and end date, an identified property, an identified seller(s), an identified brokerage, a compensation amount (unless Open Listing), and all necessary signatures and signature dates.

\\n
    \\n
  1. \\n

    If the listing agreement is complete and all dates match the listing on the MLS, the case will be closed as an AOR Referral and the reporting party will need to be referred to the listing agent’s Association’s Pro Standards Committee.

    \\n
  2. \\n
  3. \\n

    If the listing agreement became effective more than 2 business days prior to the entry into the MLS, issue a Citation for violating Rule 7.8.

    \\n
  4. \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n

i. CITATION NOTICE: The citation will be issued based on the evidence that the listing was not entered into the MLS within the 2-business day time frame, nor was an exclusion filed with the MLS. On the Citation Notice, copy all brokers and office managers, then BCC the Association contact. This is a non-correctable violation as the late entry cannot be resolved.

\\n

c. If the effective list date of the agreement does NOT match the list contract date on the listing and more than 2 business days passed before entering the property into the MLS, CRMLS will request additional documentation, such as a signed Modification of Terms, that supports the date entered on the MLS via an inquiry email. All brokers and office managers will be copied on this request.

\\n

i. If supporting documentation can be provided, the case will be closed as No Violation and the reporting party will be advised of this resolution.

\\n

ii. If no documentation can be provided, issue a Citation for violating Rule 7.8.

\\n

a. CITATION NOTICE: The citation will be issued based on the evidence that the listing was not entered into the MLS within the 2-business day time frame, nor was an exclusion filed with the MLS. On the Citation Notice, copy all brokers and office managers, then BCC the Association contact. This is a non-correctable violation as the late entry cannot be resolved. Upon the issuance of this citation, the effective list date on the MLS must be updated to reflect the listing agreement provided.

\\n

d. If the agent and the broker fail to provide a copy of the complete listing agreement by the requested deadline on any inquiry outlined above, issue a Citation for violating Rule 8.2. Please reference this section for the issuance of this citation.

\\n
\\n
\\n
',\r\n\t\t\t\temailTemplate: \"

Gotta enter yer listings bro.

\",\r\n\t\t\t\tfineType: \"fixed\",\r\n\t\t\t\tcreatedBy: \"\",\r\n\t\t\t\tcreatedOn: \"2022-11-01T11:06:30.8657997-04:00\",\r\n\t\t\t\tid: \"f1c6f6c9-8b85-4ca4-bd4e-08dabc1aa7ba\",\r\n\t\t\t\tmodifiedBy: \"a181ec35-cfd1-409e-b2cc-af0f7c32621a\",\r\n\t\t\t\tmodifiedOn: \"2022-11-07T18:59:08.754788+00:00\",\r\n\t\t\t},\r\n\t\t\tenumerationLookupId: \"\",\r\n\t\t\tcorrected: true,\r\n\t\t\tcreatedOn: \"2023-04-25T19:56:20.8645829+00:00\",\r\n\t\t\tid: \"7387163b-6d6f-46dd-e5e0-08db45c72407\",\r\n\t\t},\r\n\t],\r\n\tcreatedByName: \"Robert Maher\",\r\n\tname: \"\",\r\n\tdisplayName: \"\",\r\n\ttemplateName: \"\",\r\n\texpiresOn: \"0001-01-01T00:00:00+00:00\",\r\n\tpolicyReference: \"\",\r\n\tfineAmount: \"20\",\r\n\tactionClassName: \"\",\r\n\tnoticeType: \"NoticeType.Chat\",\r\n\tstatus: \"\",\r\n\tactiveOn: \"0001-01-01T00:00:00+00:00\",\r\n\treportViolationId: \"00000000-0000-0000-0000-000000000000\",\r\n\tcorrectiveActionDeadline: \"2023-04-29T17:57:06.053+00:00\",\r\n\tcomplianceCaseId: \"ed60c444-28ca-4be3-b28c-08db3f743250\",\r\n\tcomplianceCase: {} as any,\r\n\treviewDeadline: \"\",\r\n\tsuspensionDate: \"\",\r\n\tcombineWith: \"00000000-0000-0000-0000-000000000000\",\r\n\tccEmails: \"\",\r\n\tccAor: \"\",\r\n\tccOfice: \"\",\r\n\tdescription: \"\",\r\n\tstatement: \"

This is a test

\",\r\n\tcorrectiveAction: \"This is a test\",\r\n\tanalystNote: \"This is a test\",\r\n\tcorrected: true,\r\n\tissuedFailureToCorrect: true,\r\n\tcreatedBy: \"5c1f9d04-2404-44ac-9e9d-148eff99b89c\",\r\n\tcreatedOn: \"2023-04-26T17:57:18.0609634+00:00\",\r\n\tid: \"mock-data-id-828337437382828\",\r\n\tmodifiedBy: \"5c1f9d04-2404-44ac-9e9d-148eff99b89c\",\r\n\tmodifiedOn: \"2023-04-26T17:57:18.0609634+00:00\",\r\n} as any;\r\n\r\nexport const mockCallNotice: NoticeDefinitionEntityProperties = {\r\n\tviolationIds: [\"d2265035-67c2-45a4-e5df-08db45c72407\", \"7387163b-6d6f-46dd-e5e0-08db45c72407\"],\r\n\tviolations: [\r\n\t\t{\r\n\t\t\tcomplianceCaseId: \"ed60c444-28ca-4be3-b28c-08db3f743250\",\r\n\t\t\tmlsRuleId: \"750909b8-17c0-469d-bd4b-08dabc1aa7ba\",\r\n\t\t\tmlsRule: {\r\n\t\t\t\truleNumber: \"12.8.1\",\r\n\t\t\t\truleTitle: \"Displaying Unauthorized Photograph on Neighborhood Market Report\",\r\n\t\t\t\twarning: false,\r\n\t\t\t\tcitationFee: 10,\r\n\t\t\t\tmlsRulebookText:\r\n\t\t\t\t\t\"Advertising of Listing in Printed Neighborhood Market Report.\\r\\n Subject to the conditions set forth in (a)through(c) below, as well as throughout these Rules,\\r\\n Participants and Subscribers may include the listings of others in their printed “Neighborhood Market Reports.” The “Neighborhood Market Report” is defined as an advertising and / or information sheet(typically appearing in the form of a postcard, flier or newsletter) compiled by and / or for use by a licensee which sets forth a list of home activity in a particular neighborhood area.Advertising appearing in newspapers, magazines or other classified forms is not included in the definition of “Neighborhood Market Report” and is not authorized by this Rule 12.8.1.\\r\\n c) Allowable Listing Content.Broker Participants and Subscribers may include only those portions of the MLS compilation consisting of the following: property address(and whether attached or detached), status, price, number of bedrooms, number of bathrooms, number of garages(and whether attached or detached), square footage, lot size, year built, tract or development name, and if there’s a pool.Display of other fields, as well as confidential information and photographs, is prohibited.\",\r\n\t\t\t\tprocessingGuideline:\r\n\t\t\t\t\t\"Policy: To investigate reports of this violation and enforce this rule to prevent the use of prohibited and confidential information on the MLS.\\r\\n Application:\\r\\n 9. The most common reports received under this subsection include Neighborhood Market Reports (NMR) which advertise confidential information, such as compensation amounts, Days on Market (DOM), and list prices. The inclusion of photographs is not permitted.\\r\\n a. A violation for the inclusion of prohibited or confidential information results in a fine in the amount of $250.\\r\\n b. A violation for the inclusion of an unauthorized photograph results in a fine in the amount of $1,500.\\r\\n 10. Flyers are not the same as NMRs. NMRs have a grid-like layout, similar to Matrix’s Agent 1- line display, and usually include minimal information such as the bedroom count, bathroom count, square footage, address, and status. The information on an NMR is also concentrated to include a specific area.\\r\\n 11. A copy of each side of the Neighborhood Market Report must be saved as evidence and attached to the case prior to issuing a citation.\\r\\n 65\\r\\n Procedures:\\r\\n 9. Review the information displayed on the NMR and confirm that all data is accessible by public records.\\r\\n 10. If the NMR reported does not include prohibited or confidential information, close the case as No Violation.\\r\\n 11. If the NMR includes information that is prohibited or deemed confidential, issue a Citation:\\r\\n a. Citation Notice: This notice will reference the rule and include all information gathered as evidence to conclude our investigation. The NMR received will be referenced as well as which specific fields or information were inappropriately advertised. All brokers and office managers will be copied on this notice and the Association contact will be included as a BCC.\\r\\n 12. If the flyer is found to be in violation of other Rules, such as 12.8.1(a) for the use of unauthorized listings or 12.8.1(b) for not including proper attribution, issue a new Citation Notice under such rule. Reference the appropriate section for instructions on how to proceed with your investigation.\",\r\n\t\t\t\temailTemplate: \"N/A\",\r\n\t\t\t\tfineType: \"fixed\",\r\n\t\t\t\tcreatedBy: \"\",\r\n\t\t\t\tcreatedOn: \"2022-11-01T11:06:29.8775198-04:00\",\r\n\t\t\t\tid: \"750909b8-17c0-469d-bd4b-08dabc1aa7ba\",\r\n\t\t\t\tmodifiedBy: \"\",\r\n\t\t\t\tmodifiedOn: \"2022-11-01T11:06:29.8775198-04:00\",\r\n\t\t\t} as any,\r\n\t\t\tenumerationLookupId: \"\",\r\n\t\t\tcorrected: false,\r\n\t\t\tcreatedOn: \"2023-04-25T19:56:20.8371784+00:00\",\r\n\t\t\tid: \"d2265035-67c2-45a4-e5df-08db45c72407\",\r\n\t\t},\r\n\t\t{\r\n\t\t\tcomplianceCaseId: \"ed60c444-28ca-4be3-b28c-08db3f743250\",\r\n\t\t\tmlsRuleId: \"f1c6f6c9-8b85-4ca4-bd4e-08dabc1aa7ba\",\r\n\t\t\tmlsRule: {\r\n\t\t\t\truleNumber: \"7.8\",\r\n\t\t\t\truleTitle: \"Failure to Input Listing in MLS or Register Property\",\r\n\t\t\t\twarning: false,\r\n\t\t\t\tcitationFee: 10,\r\n\t\t\t\tmlsRulebookText:\r\n\t\t\t\t\t\"

Within 2 business days after all necessary signatures of the seller(s) have been obtained on the listing, or at the beginning date of the listing as specified in the contract, whichever is later, on any exclusive right to sell/lease or seller reserved listing on one to four unit residential property and vacant lots located within the service area of the MLS, Broker Participants shall (1) input the listing to the service, or (2) submit a seller-signed exclusion in accordance with Section 7.9 (Exempted Listings) to the AOR/MLS. All necessary signatures are those needed to create an enforceable listing, which generally means all named signatories to the listing agreement. In the event there are known additional property owners not made a signatory to the listing, the Listing Broker shall disclose said fact to the AOR/MLS and state whether the listed seller will make the sale contingent on the consent of the additional property owners. In the event the listing agent is prevented from complying with the 2-business day time period due to seller’s delay in returning the signed listing agreement, the Listing Broker must submit the listing to the MLS within 2 business days of receipt back from seller. The AOR/MLS may require the Listing Broker to present documentation to the AOR/MLS evidencing the seller’s delayed transmission. Only those listings that are within the service area of the MLS must be input. Open listings or listings of property located outside the MLS's service area (see Section 7.10) are not required by the MLS but may be input at the Broker Participant’s option.

\",\r\n\t\t\t\tprocessingGuideline:\r\n\t\t\t\t\t'
\\n
\\n
\\n

WARNING: NO

\\n

Policy:

\\n

Investigate and have the agent: 1. Enter the listing into the MLS, or; 2. file an exclusion form with the MLS.

\\n

Application:

\\n

1. When an agent fails to either: 1. Enter a listing into the MLS, or; 2. File an exclusion form with the MLS within 2 business days of the effective list date.

\\n

Comments:

\\n
    \\n
  1. \\n

    This Rule is often implicated when a reporting agent notices a property has a for sale or coming soon sign out front, or is being promoted on social media, and the reporting agent then goes to the MLS and does not find the property listed.

    \\n
  2. \\n
  3. \\n

    If there is an exclusion form on file with the MLS and the exclusion period has not yet expired, this will not be a violation.

    \\n
  4. \\n
  5. \\n

    If the agent on the advertisement is NOT a member of CRMLS, we cannot begin an investigation. The report will need to be forwarded to the appropriate MLS and the reporting party is to be informed of this information.

    \\n
  6. \\n
  7. \\n

    CRMLS has the right to request a copy of a listing agreement even if the listing is not yet entered to the MLS. Per Section 8.2 of the CRMLS Rules and Regulations, a copy of the listing agreement may be requested at any time.

    \\n
  8. \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n

Procedures:

\\n

1. Upon receipt of the report check to see if 1) the violating agent is a member of CRMLS, 2) if an exclusion form was filed with the MLS for the property reported, and 3) if the property was entered in the MLS.

\\n
    \\n
  1. \\n

    If the agent is NOT a member of CRMLS, this will not be a violation. The report will be forwarded to the appropriate MLS and the reporting agent is to be informed of this information.

    \\n
  2. \\n
  3. \\n

    If there is an exclusion form on file with the MLS and the exclusion period has not yet expired, this will not be a violation. Create a Task to follow up and review for the date in the Exclusion Form that the property should be placed in the MLS. Verify that the DOM is accurate in the listing.

    \\n
  4. \\n
  5. \\n

    If there is no listing on the MLS nor was an exclusion form filed with the MLS within 2 business days of the receipt of the report, and the advertising agent is a member of CRMLS, issue a Citation for violating Section 7.8. A case must be created which will contain the initial report and all photographic evidence.

    \\n
  6. \\n
\\n

i. CITATION NOTICE: Because this rule does not require a warning to be sent prior to the issuance of a citation, a citation will be issued under the assumption there is a valid listing agreement in place. A case will be created under the agent on the for-sale sign or other advertisement. On the Citation Notice, copy all brokers and office managers, then BCC the Association contact. Within 2 business days, the agent must either enter the listing into the MLS or file an exclusion form. If neither is done, issue a Citation for violating Rule 14.4. Reference this section for instructions on how to proceed.

\\n

2. If there is a listing on the MLS, search for a filed exclusion form then look at the List Contract Date on the listing. If the listing was entered into the MLS after the report was provided to Compliance, create a case and request a copy of the complete listing agreement (under the authority of CRMLS Rule 8.2) via an inquiry email to the agent. CC all brokers and office managers. At this time, we are requesting the agreement to ensure all information entered on the MLS is accurate.

\\n

3. Review of Listing Agreements: A complete listing agreement consists of having the following: a beginning date and end date, an identified property, an identified seller(s), an identified brokerage, a compensation amount (unless Open Listing), and all necessary signatures and signature dates.

\\n
    \\n
  1. \\n

    If the listing agreement is complete and all dates match the listing on the MLS, the case will be closed as an AOR Referral and the reporting party will need to be referred to the listing agent’s Association’s Pro Standards Committee.

    \\n
  2. \\n
  3. \\n

    If the listing agreement became effective more than 2 business days prior to the entry into the MLS, issue a Citation for violating Rule 7.8.

    \\n
  4. \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n

i. CITATION NOTICE: The citation will be issued based on the evidence that the listing was not entered into the MLS within the 2-business day time frame, nor was an exclusion filed with the MLS. On the Citation Notice, copy all brokers and office managers, then BCC the Association contact. This is a non-correctable violation as the late entry cannot be resolved.

\\n

c. If the effective list date of the agreement does NOT match the list contract date on the listing and more than 2 business days passed before entering the property into the MLS, CRMLS will request additional documentation, such as a signed Modification of Terms, that supports the date entered on the MLS via an inquiry email. All brokers and office managers will be copied on this request.

\\n

i. If supporting documentation can be provided, the case will be closed as No Violation and the reporting party will be advised of this resolution.

\\n

ii. If no documentation can be provided, issue a Citation for violating Rule 7.8.

\\n

a. CITATION NOTICE: The citation will be issued based on the evidence that the listing was not entered into the MLS within the 2-business day time frame, nor was an exclusion filed with the MLS. On the Citation Notice, copy all brokers and office managers, then BCC the Association contact. This is a non-correctable violation as the late entry cannot be resolved. Upon the issuance of this citation, the effective list date on the MLS must be updated to reflect the listing agreement provided.

\\n

d. If the agent and the broker fail to provide a copy of the complete listing agreement by the requested deadline on any inquiry outlined above, issue a Citation for violating Rule 8.2. Please reference this section for the issuance of this citation.

\\n
\\n
\\n
',\r\n\t\t\t\temailTemplate: \"

Gotta enter yer listings bro.

\",\r\n\t\t\t\tfineType: \"fixed\",\r\n\t\t\t\tcreatedBy: \"\",\r\n\t\t\t\tcreatedOn: \"2022-11-01T11:06:30.8657997-04:00\",\r\n\t\t\t\tid: \"f1c6f6c9-8b85-4ca4-bd4e-08dabc1aa7ba\",\r\n\t\t\t\tmodifiedBy: \"a181ec35-cfd1-409e-b2cc-af0f7c32621a\",\r\n\t\t\t\tmodifiedOn: \"2022-11-07T18:59:08.754788+00:00\",\r\n\t\t\t} as any,\r\n\t\t\tenumerationLookupId: \"\",\r\n\t\t\tcorrected: true,\r\n\t\t\tcreatedOn: \"2023-04-25T19:56:20.8645829+00:00\",\r\n\t\t\tid: \"7387163b-6d6f-46dd-e5e0-08db45c72407\",\r\n\t\t},\r\n\t],\r\n\tcall: {\r\n\t\turl: \"https://thepaciellogroup.github.io/AT-browser-tests/audio/jeffbob.mp3\",\r\n\t\tanalyst: \"Jane Smith\",\r\n\t\tagent: \"George Jefferson\",\r\n\t},\r\n\tcreatedByName: \"Robert Maher\",\r\n\tname: \"\",\r\n\tdisplayName: \"\",\r\n\ttemplateName: \"\",\r\n\texpiresOn: \"0001-01-01T00:00:00+00:00\",\r\n\tpolicyReference: \"\",\r\n\tfineAmount: \"20\",\r\n\tactionClassName: \"\",\r\n\tnoticeType: \"NoticeType.Call\",\r\n\tstatus: \"\",\r\n\tactiveOn: \"0001-01-01T00:00:00+00:00\",\r\n\treportViolationId: \"00000000-0000-0000-0000-000000000000\",\r\n\tcorrectiveActionDeadline: \"2023-04-29T17:57:06.053+00:00\",\r\n\tcomplianceCaseId: \"ed60c444-28ca-4be3-b28c-08db3f743250\",\r\n\tcomplianceCase: {} as any,\r\n\treviewDeadline: \"\",\r\n\tsuspensionDate: \"\",\r\n\tcombineWith: \"00000000-0000-0000-0000-000000000000\",\r\n\tccEmails: \"\",\r\n\tccAor: \"\",\r\n\tccOfice: \"\",\r\n\tdescription: \"\",\r\n\tstatement: \"

This is a test

\",\r\n\tcorrectiveAction: \"This is a test\",\r\n\tanalystNote: \"This is a test\",\r\n\tcorrected: true,\r\n\tissuedFailureToCorrect: true,\r\n\tcreatedBy: \"5c1f9d04-2404-44ac-9e9d-148eff99b89c\",\r\n\tcreatedOn: \"2023-04-26T17:57:18.0609634+00:00\",\r\n\tid: \"mock-data-id-83838292929\",\r\n\tmodifiedBy: \"5c1f9d04-2404-44ac-9e9d-148eff99b89c\",\r\n\tmodifiedOn: \"2023-04-26T17:57:18.0609634+00:00\",\r\n} as any;\r\n\r\nexport const mockSessionStorage = {\r\n\ttimestamp: 1683137613,\r\n\tdata: {\r\n\t\tisSuccessful: true,\r\n\t\tresults: [\r\n\t\t\t{\r\n\t\t\t\twebhookEventStats: [\r\n\t\t\t\t\t...[27, 28, 29, 30, 1, 2, 3, 4].map((item, idx) => {\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tevent: \"new\", ////////////////\r\n\t\t\t\t\t\t\tcount: Math.floor(Math.random() * (20 - 1 + 1)) + 1,\r\n\t\t\t\t\t\t\tday: parseInt(dayjs().format(\"DD\")) - 7 + idx,\r\n\t\t\t\t\t\t\tweek: 18,\r\n\t\t\t\t\t\t\tmonth: dayjs().format(\"MM\"),\r\n\t\t\t\t\t\t\tyear: 2023,\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}),\r\n\t\t\t\t\t...[27, 28, 29, 30, 1, 2, 3, 4].map((item, idx) => {\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tevent: \"unassigned\", ////////////////\r\n\t\t\t\t\t\t\tcount: Math.floor(Math.random() * (20 - 1 + 1)) + 1,\r\n\t\t\t\t\t\t\tday: parseInt(dayjs().format(\"DD\")) - 7 + idx,\r\n\t\t\t\t\t\t\tweek: 18,\r\n\t\t\t\t\t\t\tmonth: dayjs().format(\"MM\"),\r\n\t\t\t\t\t\t\tyear: 2023,\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}),\r\n\t\t\t\t\t...[27, 28, 29, 30, 1, 2, 3, 4].map((item, idx) => {\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tevent: \"assigned\", ////////////////\r\n\t\t\t\t\t\t\tcount: Math.floor(Math.random() * (20 - 1 + 1)) + 1,\r\n\t\t\t\t\t\t\tday: parseInt(dayjs().format(\"DD\")) - 7 + idx,\r\n\t\t\t\t\t\t\tweek: 18,\r\n\t\t\t\t\t\t\tmonth: dayjs().format(\"MM\"),\r\n\t\t\t\t\t\t\tyear: 2023,\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}),\r\n\t\t\t\t\t...[27, 28, 29, 30, 1, 2, 3, 4].map((item, idx) => {\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tevent: \"closed\", ////////////////\r\n\t\t\t\t\t\t\tcount: Math.floor(Math.random() * (20 - 1 + 1)) + 1,\r\n\t\t\t\t\t\t\tday: parseInt(dayjs().format(\"DD\")) - 7 + idx,\r\n\t\t\t\t\t\t\tweek: 18,\r\n\t\t\t\t\t\t\tmonth: dayjs().format(\"MM\"),\r\n\t\t\t\t\t\t\tyear: 2023,\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}),\r\n\t\t\t\t],\r\n\t\t\t},\r\n\t\t],\r\n\t},\r\n};\r\n\r\nexport const mockViolations = [\r\n\t{\r\n\t\tcomplianceCaseId: \"0b4c3be2-b4fd-4df2-e8f3-08db4a52d47a\",\r\n\t\tmlsRuleId: \"e6ae4b8a-e20f-491b-bd4d-08dabc1aa7ba\",\r\n\t\tmlsRule: {\r\n\t\t\truleNumber: \"12.5\",\r\n\t\t\truleTitle: \"Misuse of Public Remarks\",\r\n\t\t\twarning: false,\r\n\t\t\tcitationFee: 250,\r\n\t\t\tmlsRulebookText:\r\n\t\t\t\t\"Information in the public remarks shall only relate to the marketing, description and condition of the property. No contact information is permitted, including names, phone or fax numbers, email addresses or website addresses (including virtual tours and transaction tracking URLs). No showing instructions are permitted, including references to lockbox, alarm, gate or other security codes, or the occupancy of the property (a statement that the property shall be delivered vacant is not a violation of this section). No information directed toward real estate agents or Brokers, including compensation or bonuses offered to Buyer Brokers may be shown in public remarks. No information other than the marketing, description and condition of the property is permitted. By submitting remarks to the MLS, Participant and/or Subscriber represents and warrants he or she has the authority to grant, and hereby grants the MLS and the other Participants and Subscribers the right to reproduce and display the remarks in accordance with these rules. Copying of remarks by a subsequent listing agent for use in his or her own listing requires prior written authorization from the originating listing agent or other appropriate party with the legal right to reproduce and display such remarks. \",\r\n\t\t\tprocessingGuideline:\r\n\t\t\t\t\"Policy: To investigate and aggressively enforce violations of this rule to prevent unnecessary commentary or information from being shared with the public.\\r\\n Application:\\r\\n 1. Common reports reference the inclusion of the listing agent’s contact information, brokerage information or showing instructions in the property description.\\r\\n Comments:\\r\\n 1. The following CANNOT be included in the property description or other public remarks:\\r\\n a. Gate codes, showing instructions, compensation information, lockbox information, occupancy status of the property (Ex: Long-term tenants), email addresses, website addresses, phone numbers, agent or brokerage information, open house information (Ex: Do not disturb tenants, drive-by only), any language that violates applicable fair housing laws and guidelines.\\r\\n 2. Prohibited information, listed above, found in the driving directions or photograph captions WILL be subject to a citation under this rule.\\r\\n 3. The property description may include verbiage that states the property will be delivered vacant.\\r\\n 4. References to “Seller Financing” are permissible.\\r\\n 5. Phrases such as, “Don't wait! Make an appointment to see this one today!” or “Easy to show!” will not be found in violation as they are not intended to advertise the agent or brokerage listing the property.\\r\\n 54\\r\\n a. Remarks like, “Agents. Please see private remarks.” will also not be found in violation.\\r\\n Procedures: Review the listing to confirm the reported violation still exists.\\r\\n 1. If the remarks were removed prior to your review and confirmation is made by reviewing the\\r\\n audit log, close the case as Corrected.\\r\\n 2. If the listing is still in violation of Rule 12.5, remove the remarks from the listing and issue a\\r\\n Citation.\\r\\n a. CITATION NOTICE: This notice will reference the rule and our findings which resulted in the issuance of the citation. The verbiage found in violation MUST be copied directly from the listing and be referenced in the Citation Notice within quotations. The location of this verbiage must also be included (Ex: Driving Directions, Property Description, or the photograph captions). Including the prohibited remarks verbatim strengthens our case and helps support the issuance of the citation. Advise the agent that the prohibited verbiage was removed from the listing by CRMLS Staff. All brokers and office managers will be included on this notice and the Association contact will be included as a BCC.\\r\\n 3. If the listing includes verbiage that is inappropriate (such as safety concerns) but does not cause a violation of this rule, remove the verbiage and send an email.\\r\\n a. The email will reference our findings which resulted in the issuance of the notice. The inappropriate verbiage MUST be copied directly from the listing and referenced in the email within quotations. The location of this verbiage must also be included (Ex: Driving Directions, Property Description, or the photograph captions). Including the remarks verbatim strengthens our case and helps support our decision to remove the verbiage from the MLS. Advise the agent that the quoted verbiage was removed from the listing by CRMLS Staff. All brokers and office managers will be included on this inquiry.\\r\\n b. An example of inappropriate verbiage found within the Showing Instructions field is “5-year-old left home alone. Please make appointment before showing property.” Though this is not a violation of Rule 12.5, such verbiage must be removed immediately. No citation will be issued for remarks outside of a public remarks field. However, communication must be sent addressing the use of the remarks and the modification to the listing by CRMLS Staff.\",\r\n\t\t\temailTemplate: \"N/A\",\r\n\t\t\tfineType: \"fixed\",\r\n\t\t\tcreatedBy: null,\r\n\t\t\tcreatedOn: \"2022-11-01T11:06:30.5910211-04:00\",\r\n\t\t\tid: \"e6ae4b8a-e20f-491b-bd4d-08dabc1aa7ba\",\r\n\t\t\tmodifiedBy: null,\r\n\t\t\tmodifiedOn: \"2022-11-01T11:06:30.5910211-04:00\",\r\n\t\t},\r\n\t\tenumerationLookupId: null,\r\n\t\tenumerationLookup: null,\r\n\t\tcorrected: null,\r\n\t\tcreatedBy: \"a181ec35-cfd1-409e-b2cc-af0f7c32621a\",\r\n\t\tcreatedOn: \"2023-05-01T20:04:04.9352389+00:00\",\r\n\t\tid: \"adfbd98a-8805-452b-1608-08db4a52d484\",\r\n\t\tmodifiedBy: \"a181ec35-cfd1-409e-b2cc-af0f7c32621a\",\r\n\t\tmodifiedOn: \"2023-05-01T20:04:04.9352389+00:00\",\r\n\t},\r\n\t{\r\n\t\tcomplianceCaseId: \"0b4c3be2-b4fd-4df2-e8f3-08db4a52d47a\",\r\n\t\tmlsRuleId: \"b2848b36-6df6-454b-bd4c-08dabc1aa7ba\",\r\n\t\tmlsRule: {\r\n\t\t\truleNumber: \"10.2\",\r\n\t\t\truleTitle: \"Failure to Timely Report Listing Status Changes and Sales\",\r\n\t\t\twarning: false,\r\n\t\t\tcitationFee: 50,\r\n\t\t\tmlsRulebookText:\r\n\t\t\t\t\"

a) Listings with accepted offers shall be reported to the MLS or input into the MLS database as “pending” or “active under contract” within 2 business days of the acceptance by the Listing Broker unless the negotiations were carried on under Section 9.1 (a) or (b), in which case, the Buyer Broker shall notify the Listing Broker of the “pending” or “active under contract” status within 2 business days after acceptance, whereby the Listing Broker shall then report or input the status change to the MLS within 2 business days of receiving notice from the Buyer Broker.

\\n

b) The listing shall be published on the MLS as “pending” or “active under contract” with no price or terms prior to the final closing.

\\n

c) Upon final closing, the Listing Broker shall report or input the listing in the MLS as “sold” and report the selling price within 2 business days of the final closing date unless the negotiations were carried on under Section 9.1 (a) or (b), in which case, the Buyer Broker shall notify the Listing Broker of the “sold” status and selling price within 2 business days after the final closing date, whereby the Listing Broker shall then report or input the status change and selling price to the MLS within 2 business days of receiving notice from the Buyer Broker.

\\n

d) Listings which were not input into the MLS as a result of the seller’s(s’) instructions may be input into the MLS “sold” data at the Listing Broker's option. However, listings which were input into the MLS but subsequently withdrawn must still be reported under this section if the seller is represented by the Listing Broker when it closes.

\\n

e) The MLS may accept the reporting of sales information for comparable purposes about other properties which were not otherwise eligible for input into the MLS but are located in the MLS’s service area and “sold” by an MLS participant and/or subscriber who represented a party in the transaction (i.e. broker who represented the seller or broker who represented the buyer), as long as such reporting is authorized by a party in the transaction to the broker who represented it, (if requested by the MLS documentation must be presented to MLS within 2 business days), and the circumstances of the representation are disclosed on the Service by the reporting participant or subscriber. Any submission of sales information must occur within 2 business days after close of escrow.

\",\r\n\t\t\tprocessingGuideline:\r\n\t\t\t\t\"

Policy: To maintain the quality of data by investigating reports of late reporting of sales and late reporting of acceptance of offers.

\\n

Application:

\\n
    \\n
  1. This violation typically occurs when a listing is not changed to Pending or Active Under Contract upon the seller(s)’s acceptance of an offer, resulting in the status change from Active to Sold on the same day. In those cases, the agent violated this rule because the acceptance of the offer was never reported on the MLS. 37
  2. \\n
  3. Another common report involves a listing that is displaying a status of Pending or Active Under Contract but should be in the status of Closed. In this instance, the agent failed to update the listing upon the property closing escrow.
  4. \\n
\\n

Comments:

\\n
    \\n
  1. Listings that display a status of Auto Sold (noted with a red flag) are NOT to be processed under this rule. Reference Rule 8.3 – Auto Sold for instructions on how to process under the associated violation.
  2. \\n
  3. Pending should be used when an offer is accepted, and the seller(s) is not accepting back- up offers. If back-up offers are being accepted, Active Under Contract is the proper status. However, it is up to the broker to decide which status is to be used. Compliance does not make that decision for the listing agent or broker.
  4. \\n
\\n

Procedures:

\\n
    \\n
  1. Upon review of the report, verify the current status of the listing.
  2. \\n
  3. If the listing is still in a status other than Pending, Active under Contract, or Closed, send an inquiry.\\n
      \\n
    1. Inquiry: This notice will reference the report received and will include information regarding the potential violation of Rule 10.2. Within the notice, request the agent either confirm that the current status is correct, or, make the necessary updates. Provide the agent a corrective action deadline of 2 business days and copy all brokers and office managers.
    2. \\n
    3. If corrective action is not taken within the 2 business days, request additional information from the reporting party as a separate inquiry. If additional information is not provided, close the case as Unable to Verify and make a note that a violation was not determined at this time due to insufficient evidence If additional information is provided, such as a copy of an email thread or text message between the reporting party and the listing agent, and the listing is found to be in an inaccurate status based on an admission from the listing agent, issue a Citation Notice under Rule 10.2. i. CITATION NOTICE: This notice will reference the report received and will include information regarding the violation of Rule 10.2. Within the notice, reference the evidence received and request that the listing agent make the necessary changes to the listing within 2 business days. All brokers and office managers will be copied on this notice and the Association contact will be BCC’d. ii. If corrective action is not taken within 2 business days after the issuance of a citation, issue another Citation under Rule 14.4. Reference this section for instructions how to proceed.
    4. \\n
    \\n
  4. \\n
  5. If the listing status was updated prior to your review of the report and is Pending, send an inquiry and request a copy of the signed purchase agreement. a. Inquiry: This notice will reference the report received and will include information regarding the potential violation of Rule 10.2. Within the notice, request the agent 38 provide CRMLS with a copy of the signed purchase agreement for the accepted offer. Provide the agent with a corrective action deadline of 2 business days. All brokers and office managers will be copied on this notice. b. Review of Documentation: Upon receipt of the signed purchase agreement, verify that the purchase contract date on the MLS is consistent with the date of the accepted offer. c. If the dates are consistent but the change in status was made after the 2-business day time frame, as outlined in Rule 10.2, issue a Citation. i. CITATION NOTICE: This notice will reference the report received and will include information regarding the violation of Rule 10.2. Within the notice, reference the evidence received. All brokers and office managers will be copied on this notice and the Association contact will be BCC’d. This violation CANNOT be corrected. d. If the date on the MLS is inconsistent with the documentation provided, follow-up with the agent via email and request if any other documentation, such as signed counter offers, can be provided which would support the date on the MLS. e. If additional documentation cannot be provided, issue a Citation under Rule 10.2, as outlined above. Upon the issuance of the citation, modify the purchase contract date to reflect the signed purchase agreement. f. If additional documentation is provided and matches the MLS but the change was made outside of the 2-business day timeframe, issue a Citation under Rule 10.2, as outlined above.
  6. \\n
  7. If the listing status was updated prior to your review of the report and is Closed, send an inquiry and request a copy of the Final Closing Statement. a. Inquiry: This notice will reference the report received and will include information regarding the potential violation of Rule 10.2. Within the notice, request the agent provide CRMLS with a copy of the Final Closing Statement. Provide the agent with a corrective action deadline of 2 business days. All brokers and office managers will be copied on this notice. b. Review of Documentation: Upon receipt of the Final Closing Statement, verify that the Reported Date on the document is consistent with the close of escrow date on the MLS. c. If the dates are consistent but the change in status was made after the 2-business day time frame, as outlined in Rule 10.2, issue a Citation Notice. i. CITATION NOTICE: This notice will reference the report received and will include information regarding the violation of Rule 10.2. Within the notice, reference the evidence received. All brokers and office managers will be copied on this notice and the Association contact will be BCC’d. This violation CANNOT be corrected. 39 d. If the date on the MLS is inconsistent with the documentation provided, modify the close of escrow date to reflect the closing statement and issue a Citation under Rule 10.2, as outlined above, if the status change occurred more than 2 business days from the close of escrow date.
  8. \\n
\",\r\n\t\t\temailTemplate: \"

Please correct the Listing to update the Status and Sale Date.

\",\r\n\t\t\tfineType: \"percentage\",\r\n\t\t\tcreatedBy: null,\r\n\t\t\tcreatedOn: \"2022-11-01T11:06:30.1631807-04:00\",\r\n\t\t\tid: \"b2848b36-6df6-454b-bd4c-08dabc1aa7ba\",\r\n\t\t\tmodifiedBy: \"5c1f9d04-2404-44ac-9e9d-148eff99b89c\",\r\n\t\t\tmodifiedOn: \"2023-03-17T19:29:39.8175501+00:00\",\r\n\t\t},\r\n\t\tenumerationLookupId: null,\r\n\t\tenumerationLookup: null,\r\n\t\tcorrected: null,\r\n\t\tcreatedBy: \"a181ec35-cfd1-409e-b2cc-af0f7c32621a\",\r\n\t\tcreatedOn: \"2023-05-04T15:24:20.2423198+00:00\",\r\n\t\tid: \"483daa36-eab9-4f08-9f91-08db4cb3a1e9\",\r\n\t\tmodifiedBy: \"a181ec35-cfd1-409e-b2cc-af0f7c32621a\",\r\n\t\tmodifiedOn: \"2023-05-04T15:24:20.2423198+00:00\",\r\n\t},\r\n];\r\n\r\nexport const mockReportReasonCategories = [\r\n\t{\r\n\t\tdisplayText: \"Other\",\r\n\t\tdescription: \"Other\",\r\n\t\tvalue: \"8\",\r\n\t\tcreatedBy: null,\r\n\t\tcreatedOn: \"2023-06-06T11:28:59.6692874-04:00\",\r\n\t\tid: 8,\r\n\t\tmodifiedBy: null,\r\n\t\tmodifiedOn: \"2023-06-06T11:28:59.6692874-04:00\",\r\n\t},\r\n\t{\r\n\t\tdisplayText: \"Fair Housing Law/Guidance Violation\",\r\n\t\tdescription: \"Fair Housing Law/Guidance Violation\",\r\n\t\tvalue: \"7\",\r\n\t\tcreatedBy: null,\r\n\t\tcreatedOn: \"2023-06-06T11:28:59.3764386-04:00\",\r\n\t\tid: 7,\r\n\t\tmodifiedBy: null,\r\n\t\tmodifiedOn: \"2023-06-06T11:28:59.3764386-04:00\",\r\n\t},\r\n\t{\r\n\t\tdisplayText: \"Misleading Information\",\r\n\t\tdescription: \"Misleading Information\",\r\n\t\tvalue: \"6\",\r\n\t\tcreatedBy: null,\r\n\t\tcreatedOn: \"2023-06-06T11:28:59.090609-04:00\",\r\n\t\tid: 6,\r\n\t\tmodifiedBy: null,\r\n\t\tmodifiedOn: \"2023-06-06T11:28:59.090609-04:00\",\r\n\t},\r\n\t{\r\n\t\tdisplayText: \"Inaccurate Information\",\r\n\t\tdescription: \"Inaccurate Information\",\r\n\t\tvalue: \"5\",\r\n\t\tcreatedBy: null,\r\n\t\tcreatedOn: \"2023-06-06T11:28:58.7934417-04:00\",\r\n\t\tid: 5,\r\n\t\tmodifiedBy: null,\r\n\t\tmodifiedOn: \"2023-06-06T11:28:58.7934417-04:00\",\r\n\t},\r\n\t{\r\n\t\tdisplayText: \"Status\",\r\n\t\tdescription: \"Status\",\r\n\t\tvalue: \"4\",\r\n\t\tcreatedBy: null,\r\n\t\tcreatedOn: \"2023-06-06T11:28:58.5047553-04:00\",\r\n\t\tid: 4,\r\n\t\tmodifiedBy: null,\r\n\t\tmodifiedOn: \"2023-06-06T11:28:58.5047553-04:00\",\r\n\t},\r\n\t{\r\n\t\tdisplayText: \"Compensation\",\r\n\t\tdescription: \"Compensation\",\r\n\t\tvalue: \"3\",\r\n\t\tcreatedBy: null,\r\n\t\tcreatedOn: \"2023-06-06T11:28:58.2205239-04:00\",\r\n\t\tid: 3,\r\n\t\tmodifiedBy: null,\r\n\t\tmodifiedOn: \"2023-06-06T11:28:58.2205239-04:00\",\r\n\t},\r\n\t{\r\n\t\tdisplayText: \"Public/Private Remarks\",\r\n\t\tdescription: \"Public/Private Remarks\",\r\n\t\tvalue: \"2\",\r\n\t\tcreatedBy: null,\r\n\t\tcreatedOn: \"2023-06-06T11:28:57.9341423-04:00\",\r\n\t\tid: 2,\r\n\t\tmodifiedBy: null,\r\n\t\tmodifiedOn: \"2023-06-06T11:28:57.9341423-04:00\",\r\n\t},\r\n\t{\r\n\t\tdisplayText: \"Photographs/Media\",\r\n\t\tdescription: \"Photographs/Media\",\r\n\t\tvalue: \"1\",\r\n\t\tcreatedBy: null,\r\n\t\tcreatedOn: \"2023-06-06T11:28:57.509455-04:00\",\r\n\t\tid: 1,\r\n\t\tmodifiedBy: null,\r\n\t\tmodifiedOn: \"2023-06-06T11:28:57.509455-04:00\",\r\n\t},\r\n];\r\n","import axios from \"axios\";\r\nimport MD5 from \"crypto-js/md5\";\r\nimport dayjs from \"dayjs\";\r\nimport { setReplyRead } from \"../../features/complianceFeature/complianceSlice\";\r\nclass QueryHelper {\r\n\tenvironment;\r\n\t// tokens\r\n\tcampaignSupportToken;\r\n\tnotificationToken;\r\n\tmembershipToken;\r\n\twebApiToken;\r\n\ttrainingToken;\r\n\tpowerBiToken;\r\n\tmemberPortalToken;\r\n\tworkflowToken;\r\n\t// endpoints\r\n\tCampaignSupport;\r\n\tMemberDirectory;\r\n\tMembershipV3;\r\n\tNotification;\r\n\tTraining;\r\n\tMemberPortal;\r\n\tCompliance;\r\n\tRegisteredListings;\r\n\tWorkflow;\r\n\t// generics\r\n\tbase_url;\r\n\tbase_config;\r\n\r\n\tconstructor({ environment, tokens }) {\r\n\t\tthis.environment = environment;\r\n\t\tthis.notificationToken = tokens.notification;\r\n\t\tthis.campaignSupportToken = tokens.mace;\r\n\t\tthis.workflowToken = tokens.workflow;\r\n\t\tthis.membershipToken = tokens.membership;\r\n\t\tthis.trainingToken = tokens.training;\r\n\t\tthis.powerBiToken = tokens.powerBi;\r\n\t\tthis.complianceToken = tokens.mace;\r\n\t\tthis.memberPortalToken = tokens.memberPortal;\r\n\t\t// this.webApiToken = JSON.parse(context.environment.resoWebApiAccess).access_token;\r\n\r\n\t\tif (this.environment === \"production\" || this.environment === \"staging\") {\r\n\t\t\t// PROD and STAGING both hit PROD endpoints\r\n\t\t\tthis.base_url = \"https://macewindu.azurewebsites.net/api/app/\";\r\n\t\t\tthis.CampaignSupport = \"https://macewindu.azurewebsites.net/api/app/\";\r\n\t\t\tthis.MemberDirectory = \"https://membershipdirectory.azurewebsites.net/api/app/\";\r\n\t\t\tthis.MemberShipV3 = \"https://membershipapi-prod.azurewebsites.net/api/app/\";\r\n\t\t\tthis.Notification = \"https://crmlsnotification.azurewebsites.net/api/app/\";\r\n\t\t\tthis.Training = \"https://trainingapi-prod.azurewebsites.net/api/app/\";\r\n\t\t\tthis.MemberPortal = \"https://prod-memberportalapi.azurewebsites.net/api/app/\";\r\n\t\t\t// Cosmos special case. Preview points to preview endpoints\r\n\t\t\tthis.Compliance = `https://complianceapi-prod-app${this.environment === \"staging\" ? \"-staging\" : \"\"}.azurewebsites.net/api/app/`;\r\n\t\t\tthis.RegisteredListings = \"https://prod-registeredlistings-api.azurewebsites.net/\";\r\n\t\t\tthis.Workflow = \"https://workflowapi-prod-app.azurewebsites.net/api/app/\";\r\n\t\t} else if (this.environment === \"testing\") {\r\n\t\t\tthis.base_url = \"https://macewindu-test.azurewebsites.net/api/app/\";\r\n\t\t\tthis.CampaignSupport = \"https://macewindu-test.azurewebsites.net/api/app/\";\r\n\t\t\tthis.MemberDirectory = \"https://membershipdirectory-api-test.azurewebsites.net/api/app/\";\r\n\t\t\tthis.MemberShipV3 = \"https://membershipapi-test.azurewebsites.net/api/app/\";\r\n\t\t\tthis.Notification = \"https://crmlsnotification-test.azurewebsites.net/api/app/\";\r\n\t\t\tthis.Training = \"https://trainingapi-test.azurewebsites.net/api/app/\";\r\n\t\t\tthis.MemberPortal = \"https://test-memberportalapi.azurewebsites.net/api/app/\";\r\n\t\t\tthis.Compliance = \"https://complianceapi-uat-app-westus.azurewebsites.net/api/app/\";\r\n\t\t\tthis.RegisteredListings = \"https://test-registeredlistings-api.azurewebsites.net/\"; //TODO Maher confirm this\r\n\t\t\tthis.Workflow = \"https://workflowapi-test.azurewebsites.net/api/app/\";\r\n\t\t} else {\r\n\t\t\t// force to the dev endpoints\r\n\t\t\tthis.base_url = \"https://macewindu-dev.azurewebsites.net/api/app/\";\r\n\t\t\tthis.CampaignSupport = \"https://macewindu-dev.azurewebsites.net/api/app/\";\r\n\t\t\tthis.MemberDirectory = \"https://membershipdirectory-dev.azurewebsites.net/api/app/\";\r\n\t\t\tthis.MemberShipV3 = \"https://membership-dev.azurewebsites.net/api/app/\";\r\n\t\t\tthis.Notification = \"https://crmlsnotification-dev.azurewebsites.net/api/app/\";\r\n\t\t\tthis.Training = \"https://trainingapi-dev.azurewebsites.net/api/app/\";\r\n\t\t\tthis.Compliance = \"https://complianceapi-dev.azurewebsites.net/api/app/\";\r\n\r\n\t\t\tthis.MemberPortal = \"https://dev-memberportalapi.azurewebsites.net/api/app/\";\r\n\t\t\tthis.RegisteredListings = \"https://dev-registeredlistings-api.azurewebsites.net/\"; //TODO Maher confirm this\r\n\t\t\tthis.Workflow = \"https://workflow-dev-app-westus.azurewebsites.net/api/app/\";\r\n\t\t}\r\n\r\n\t\tthis.base_config = {\r\n\t\t\theaders: {\r\n\t\t\t\t\"Content-Type\": \"application/json\",\r\n\t\t\t\tAccept: \"application/json\",\r\n\t\t\t\tAuthorization: `Bearer ${this.campaignSupportToken}`,\r\n\t\t\t},\r\n\t\t};\r\n\t}\r\n\r\n\toperators = {\r\n\t\tEqual: 0,\r\n\t\tGreaterThan: 1,\r\n\t\tGreaterThanOrEqual: 2,\r\n\t\tLessThan: 3,\r\n\t\tLessThanOrEqual: 4,\r\n\t\tBetween: 5,\r\n\t\tNotEqual: 6,\r\n\t\tNotEmpty: 7,\r\n\t\tLike: 8,\r\n\t\tHasAny: 9,\r\n\t\tContains: 10,\r\n\t\tStartsWith: 11,\r\n\t\tNotLike: 12,\r\n\t\tContainsAny: 13,\r\n\t};\r\n\tpageId = 0;\r\n\tpageSize = 50;\r\n\tsearch = [];\r\n\tfield = \"\";\r\n\tcriteria = [];\r\n\torderBy = [];\r\n\tfields = [];\r\n\tuse_q = \"/q\";\r\n\r\n\tget campaign_config() {\r\n\t\treturn {\r\n\t\t\theaders: {\r\n\t\t\t\t\"Content-Type\": \"application/json\",\r\n\t\t\t\tAccept: \"application/json\",\r\n\t\t\t\tAuthorization: `Bearer ${this.campaignSupportToken}`,\r\n\t\t\t},\r\n\t\t};\r\n\t}\r\n\r\n\tget notification_config() {\r\n\t\treturn {\r\n\t\t\theaders: {\r\n\t\t\t\t\"Content-Type\": \"application/json\",\r\n\t\t\t\tAccept: \"application/json\",\r\n\t\t\t\tAuthorization: `Bearer ${this.notificationToken}`,\r\n\t\t\t},\r\n\t\t};\r\n\t}\r\n\r\n\tget membership_config() {\r\n\t\treturn {\r\n\t\t\theaders: {\r\n\t\t\t\t\"Content-Type\": \"application/json\",\r\n\t\t\t\tAccept: \"application/json\",\r\n\t\t\t\tAuthorization: `Bearer ${this.membershipToken}`,\r\n\t\t\t},\r\n\t\t};\r\n\t}\r\n\r\n\tget membership_new_config() {\r\n\t\treturn {\r\n\t\t\theaders: {\r\n\t\t\t\t\"Content-Type\": \"application/json\",\r\n\t\t\t\tAccept: \"application/json\",\r\n\t\t\t\tAuthorization: `Bearer ${this.membershipToken}`,\r\n\t\t\t},\r\n\t\t};\r\n\t}\r\n\r\n\tget training_config() {\r\n\t\treturn {\r\n\t\t\theaders: {\r\n\t\t\t\t\"Content-Type\": \"application/json\",\r\n\t\t\t\tAccept: \"application/json\",\r\n\t\t\t\tAuthorization: `Bearer ${this.campaignSupportToken}`,\r\n\t\t\t},\r\n\t\t};\r\n\t}\r\n\r\n\tget powerbi_config() {\r\n\t\treturn {\r\n\t\t\theaders: {\r\n\t\t\t\t\"Content-Type\": \"application/json\",\r\n\t\t\t\tAccept: \"application/json\",\r\n\t\t\t\tAuthorization: `Bearer ${this.powerBiToken}`,\r\n\t\t\t},\r\n\t\t};\r\n\t}\r\n\r\n\tget compliance_config() {\r\n\t\treturn {\r\n\t\t\theaders: {\r\n\t\t\t\t\"Content-Type\": \"application/json\",\r\n\t\t\t\tAccept: \"application/json\",\r\n\t\t\t\tAuthorization: `Bearer ${this.complianceToken}`,\r\n\t\t\t},\r\n\t\t};\r\n\t}\r\n\r\n\tget memberPortal_config() {\r\n\t\treturn {\r\n\t\t\theaders: {\r\n\t\t\t\t\"Content-Type\": \"application/json\",\r\n\t\t\t\tAccept: \"application/json\",\r\n\t\t\t\tAuthorization: `Bearer ${this.memberPortalToken}`,\r\n\t\t\t},\r\n\t\t};\r\n\t}\r\n\r\n\tget workflow_config() {\r\n\t\treturn {\r\n\t\t\theaders: {\r\n\t\t\t\t\"Content-Type\": \"application/json\",\r\n\t\t\t\tAccept: \"application/json\",\r\n\t\t\t\tAuthorization: `Bearer ${this.workflowToken}`,\r\n\t\t\t},\r\n\t\t};\r\n\t}\r\n\r\n\tget payload() {\r\n\t\treturn {\r\n\t\t\tpageId: this.pageId,\r\n\t\t\tpageSize: this.pageSize,\r\n\t\t\tcriteria: this.criteria,\r\n\t\t\torderBy: this.orderBy,\r\n\t\t\tfields: this.fields,\r\n\t\t};\r\n\t}\r\n\r\n\tsetMace() {\r\n\t\tthis.base_url = this.CampaignSupport;\r\n\t\tthis.base_config = this.campaign_config;\r\n\t}\r\n\r\n\tsetNotification() {\r\n\t\tthis.base_url = this.Notification;\r\n\t\tthis.base_config = this.notification_config;\r\n\t}\r\n\r\n\tsetMembership() {\r\n\t\tthis.base_url = this.MemberDirectory;\r\n\t\tthis.base_config = this.membership_config;\r\n\t}\r\n\r\n\tsetTraining() {\r\n\t\tthis.base_url = this.Training;\r\n\t\tthis.base_config = this.training_config;\r\n\t}\r\n\r\n\tsetMembershipV3() {\r\n\t\tthis.base_url = this.MemberShipV3;\r\n\t\tthis.base_config = this.membership_config;\r\n\t}\r\n\r\n\tsetPowerBi() {\r\n\t\tthis.base_config = this.powerbi_config;\r\n\t}\r\n\r\n\tsetCompliance() {\r\n\t\tthis.base_url = this.Compliance;\r\n\t\tthis.base_config = this.compliance_config;\r\n\t}\r\n\r\n\tsetMemberPortal() {\r\n\t\tthis.base_url = this.MemberPortal;\r\n\t\tthis.base_config = this.memberPortal_config;\r\n\t}\r\n\r\n\tsetPowerBi() {\r\n\t\tthis.base_config = this.powerbi_config;\r\n\t}\r\n\r\n\tsetRegisteredListings() {\r\n\t\tthis.base_url = this.RegisteredListings;\r\n\t\tthis.base_config = this.compliance_config;\r\n\t}\r\n\r\n\tsetWorkflow() {\r\n\t\tthis.base_url = this.Workflow;\r\n\t\tthis.base_config = this.workflow_config;\r\n\t}\r\n\r\n\tset payload(payload) {}\r\n\r\n\tasync get(path) {\r\n\t\tconst resp = await axios.get(this.base_url + path, this.base_config);\r\n\t\treturn resp.data;\r\n\t}\r\n\r\n\tasync put(path, payload) {\r\n\t\tconst resp = await axios.put(this.base_url + path, payload, this.base_config);\r\n\t\treturn resp.data;\r\n\t}\r\n\r\n\tasync patch(path, payload) {\r\n\t\tconst resp = await axios.patch(this.base_url + path, payload, this.base_config);\r\n\t\treturn resp.data;\r\n\t}\r\n\r\n\tasync post(path, payload) {\r\n\t\tconst resp = await axios.post(this.base_url + path, payload, this.base_config);\r\n\t\treturn resp.data;\r\n\t}\r\n\r\n\tasync fetchData(resource) {\r\n\t\tconst resp = await axios.post(this.base_url + resource + this.use_q, this.payload, this.base_config);\r\n\t\treturn resp.data;\r\n\t}\r\n\r\n\tasync fetchDataWithCriteria(resource, criteria) {\r\n\t\tthis.criteria = criteria;\r\n\t\tconst resp = await axios.post(this.base_url + resource + this.use_q, this.payload, this.base_config);\r\n\t\treturn resp.data;\r\n\t}\r\n\r\n\tasync fetchNotes(resource, entityIdKey, entityId, noteContextValue) {\r\n\t\tthis.criteria = [\r\n\t\t\t{\r\n\t\t\t\tfield: entityIdKey,\r\n\t\t\t\top: 0,\r\n\t\t\t\tvalues: [entityId],\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tfield: \"noteContext\",\r\n\t\t\t\top: 0,\r\n\t\t\t\tvalues: [noteContextValue],\r\n\t\t\t},\r\n\t\t];\r\n\t\tconst resp = await axios.post(this.base_url + resource + this.use_q, this.payload, this.base_config);\r\n\r\n\t\treturn resp.data;\r\n\t}\r\n\r\n\tasync fetchDataWithCriteriaOrderBy(resource, criteria, orderBy) {\r\n\t\tthis.criteria = criteria;\r\n\t\tthis.orderBy = orderBy;\r\n\t\tconst resp = await axios.post(this.base_url + resource + this.use_q, this.payload, this.base_config);\r\n\r\n\t\treturn resp.data;\r\n\t}\r\n\r\n\tasync fetchUserRoles() {\r\n\t\tconst resp = await axios.get(`${this.base_url}UserRole`, this.base_config);\r\n\t\treturn resp.data;\r\n\t}\r\n\r\n\tasync fetchAllData(resource) {\r\n\t\tthis.pageSize = 10000;\r\n\t\tlet totalPages = 1;\r\n\t\tlet results = [];\r\n\r\n\t\tlet resp = await axios.post(resource == \"user\" && this.environment === \"testing\" ? \"https://macewindu.azurewebsites.net/api/app/user\" + this.use_q : this.base_url + resource + this.use_q, this.payload, this.base_config);\r\n\t\tresults = resp.data.results;\r\n\r\n\t\ttotalPages = resp.data.totalResults / resp.data.pageSize;\r\n\r\n\t\twhile (this.pageId + 1 < totalPages) {\r\n\t\t\tthis.pageId++;\r\n\t\t\tresp = await axios.post(this.base_url + resource + this.use_q, this.payload, this.base_config);\r\n\t\t\tresults = results.concat(resp.data.results);\r\n\t\t}\r\n\r\n\t\treturn results;\r\n\t}\r\n\r\n\tasync fetchResource(resource, id, expanded) {\r\n\t\tlet exp = expanded ? \"/expanded\" : \"\";\r\n\t\tconst resp = await axios.get(this.base_url + resource + \"/\" + id + exp, this.base_config);\r\n\t\treturn resp.data;\r\n\t}\r\n\r\n\tasync createResource(resource, payload) {\r\n\t\tconst resp = await axios.post(this.base_url + resource, payload, this.base_config);\r\n\t\treturn resp.data;\r\n\t}\r\n\r\n\tasync updateResource(resource, id, payload) {\r\n\t\tconst resp = await axios.put(this.base_url + resource + \"/\" + id, payload, this.base_config);\r\n\t\treturn resp.data;\r\n\t}\r\n\r\n\tasync deleteResource(resource, id) {\r\n\t\tconst resp = await axios.delete(this.base_url + resource + \"/\" + id, this.base_config);\r\n\t\treturn resp.data;\r\n\t}\r\n\r\n\t// async changeStatus(campaign_id, new_status) {\r\n\t// const resp = await axios.post(this.CampaignSupport + 'campaign/status/' + new_status + '/' + campaign_id, '', this.base_config);\r\n\t// return resp.data;\r\n\t// }\r\n\r\n\tasync fetchReportData(criteria) {\r\n\t\tconst key = MD5(JSON.stringify(criteria)).toString();\r\n\t\tlet existing = false;\r\n\t\ttry {\r\n\t\t\texisting = JSON.parse(sessionStorage.getItem(key));\r\n\t\t} catch (e) {\r\n\t\t\tconsole.log(e);\r\n\t\t}\r\n\r\n\t\tif (existing && existing.hasOwnProperty(\"timestamp\")) {\r\n\t\t\tif (dayjs.unix(existing.timestamp) > dayjs().add(50, \"second\").unix()) {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tconsole.log(\"returning cached\");\r\n\t\t\t\t\treturn new Promise(function (resolve, reject) {\r\n\t\t\t\t\t\tsetTimeout(() => resolve(existing.data), 1);\r\n\t\t\t\t\t});\r\n\t\t\t\t} catch (e) {\r\n\t\t\t\t\tconsole.log(e);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tconsole.log(\"Cache expired\");\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tconsole.log(\"No cache, returning fresh\");\r\n\t\t\tconst resp = await axios.post(this.Notification + \"WebhookEvent/Stats\", criteria, this.notification_config);\r\n\t\t\tlet cached_data = JSON.stringify({\r\n\t\t\t\ttimestamp: dayjs().unix(),\r\n\t\t\t\tdata: resp.data,\r\n\t\t\t});\r\n\r\n\t\t\tsessionStorage.setItem(key, cached_data);\r\n\t\t\treturn resp.data;\r\n\t\t}\r\n\t}\r\n\tasync fetchMembershipAudienceMembers() {\r\n\t\tconst resp = await axios.get(`${this.MemberShipV3}AudienceIndexes/ta/${this.criteria[0].values[0]}?top=50`, this.membership_config);\r\n\r\n\t\treturn resp.data;\r\n\t}\r\n\tasync fetchMembershipAudienceMember(id) {\r\n\t\tlet payload = {\r\n\t\t\tpageId: 0,\r\n\t\t\tpageSize: 1,\r\n\t\t\tcriteria: [\r\n\t\t\t\t{\r\n\t\t\t\t\tfield: \"contactId\",\r\n\t\t\t\t\top: 0,\r\n\t\t\t\t\tvalues: [id],\r\n\t\t\t\t},\r\n\t\t\t],\r\n\t\t};\r\n\t\tconst resp = await axios.post(`${this.MemberShipV3}AudienceIndexes/q`, payload, this.membership_config);\r\n\r\n\t\treturn resp.data;\r\n\t}\r\n\tasync fetchMembershipAudienceMemberDenormalized(id) {\r\n\t\tlet payload = {\r\n\t\t\tpageId: 0,\r\n\t\t\tpageSize: 1,\r\n\t\t\tcriteria: [\r\n\t\t\t\t{\r\n\t\t\t\t\tfield: \"contactId\",\r\n\t\t\t\t\top: 0,\r\n\t\t\t\t\tvalues: [id],\r\n\t\t\t\t},\r\n\t\t\t],\r\n\t\t};\r\n\t\tconst resp = await axios.get(`${this.MemberShipV3}Contacts/${id}/denormalized`, this.membership_config);\r\n\r\n\t\treturn resp.data;\r\n\t}\r\n\r\n\tasync fetchAudienceMembers() {\r\n\t\tconst resp = await axios.post(\r\n\t\t\tthis.MemberDirectory + \"AudienceIndex/q\",\r\n\t\t\t{\r\n\t\t\t\t...this.payload,\r\n\t\t\t\torderBy: [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tfield: \"lastName\",\r\n\t\t\t\t\t\tdirection: \"Asc\",\r\n\t\t\t\t\t},\r\n\t\t\t\t],\r\n\t\t\t\tpageSize: 200,\r\n\t\t\t},\r\n\t\t\tthis.membership_config\r\n\t\t);\r\n\t\treturn resp.data;\r\n\t}\r\n\r\n\t//https://dev-memberportalapi.azurewebsites.net/api/app/AudienceIndexes/ta/Dan\r\n\tasync fetchAudienceMembersTa(searchTerm) {\r\n\t\tconst resp = await axios.get(this.MemberPortal + `AudienceIndexes/ta/${searchTerm}`, this.base_config);\r\n\t\treturn resp.data;\r\n\t}\r\n\tasync fetchAudienceMemberTa(contact_id) {\r\n\t\tconst resp = await axios.get(this.MemberPortal + `AudienceIndexes/${contact_id}`, this.base_config);\r\n\t\treturn resp.data;\r\n\t}\r\n\r\n\tasync fetchAudienceTypeAhead(searchString) {\r\n\t\tconst resp = await axios.get(this.MemberDirectory + \"AudienceIndexes/ta/\" + searchString, this.membership_config);\r\n\t\treturn resp.data;\r\n\t}\r\n\r\n\tasync fetchAudienceMember(contact_id) {\r\n\t\tlet payload = {\r\n\t\t\tpageId: 0,\r\n\t\t\tpageSize: 1,\r\n\t\t\tcriteria: [\r\n\t\t\t\t{\r\n\t\t\t\t\tfield: \"contactId\",\r\n\t\t\t\t\top: 0,\r\n\t\t\t\t\tvalues: [contact_id],\r\n\t\t\t\t},\r\n\t\t\t],\r\n\t\t};\r\n\t\tconst resp = await axios.post(this.MemberDirectory + \"AudienceIndex/q\", payload, this.membership_config);\r\n\t\treturn resp.data;\r\n\t}\r\n\r\n\tasync fetchAllAudienceMembers() {\r\n\t\t// set limit to max\r\n\t\tthis.pageSize = 10000;\r\n\t\tlet totalPages = 1;\r\n\t\tlet results = [];\r\n\t\tlet resp = await axios.post(this.MemberDirectory + \"AudienceIndex/q\", this.payload, this.membership_config);\r\n\t\tresults = resp.data.results;\r\n\r\n\t\ttotalPages = resp.data.totalResults / resp.data.pageSize;\r\n\r\n\t\twhile (this.pageId + 1 < totalPages) {\r\n\t\t\tthis.pageId++;\r\n\t\t\tresp = await axios.post(this.MemberDirectory + \"AudienceIndex/q\", this.payload, this.membership_config);\r\n\t\t\tresults = results.concat(resp.data.results);\r\n\t\t}\r\n\r\n\t\treturn results;\r\n\t}\r\n\r\n\tasync sendTestEmail(criteria) {\r\n\t\tconst resp = await axios.post(this.CampaignSupport + \"Notification/SendPreview\", criteria, this.campaign_config);\r\n\t\treturn resp.data;\r\n\t}\r\n\r\n\tasync unsubscribe(criteria) {\r\n\t\tconst resp = await axios.post(this.Notification + \"OptOutRequest/Unsubscribe\", criteria, this.base_config);\r\n\t\treturn resp.data;\r\n\t}\r\n\r\n\tasync csvUpload(audience_id, file) {\r\n\t\tconst resp = await axios.post(this.MemberDirectory + \"CustomContact/uploadCsvFile/\" + audience_id, file, {\r\n\t\t\theaders: {\r\n\t\t\t\t\"Content-Type\": \"multipart/form-data\",\r\n\t\t\t\tAccept: \"application/json\",\r\n\t\t\t\tAuthorization: `Bearer ${this.membershipToken}`,\r\n\t\t\t},\r\n\t\t});\r\n\t\treturn resp.data;\r\n\t}\r\n\r\n\tasync fetchMemberCount(start_date, end_date) {\r\n\t\tthis.criteria = [\r\n\t\t\t{\r\n\t\t\t\tfield: \"CreatedOn\",\r\n\t\t\t\top: 1,\r\n\t\t\t\tvalues: [start_date],\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tfield: \"CreatedOn\",\r\n\t\t\t\top: 3,\r\n\t\t\t\tvalues: [end_date],\r\n\t\t\t},\r\n\t\t];\r\n\t\tthis.orderBy = [\r\n\t\t\t{\r\n\t\t\t\tfield: \"CreatedOn\",\r\n\t\t\t\tdirection: \"Desc\",\r\n\t\t\t},\r\n\t\t];\r\n\t\tthis.pageSize = 10000;\r\n\r\n\t\tconst resp = await axios.post(this.MemberDirectory + \"MemberCount/q\", this.payload, this.membership_config);\r\n\t\treturn resp.data;\r\n\t}\r\n\r\n\tasync fetchMemberRollup(start_date, end_date) {\r\n\t\tthis.criteria = [\r\n\t\t\t{\r\n\t\t\t\tfield: \"CreatedOn\",\r\n\t\t\t\top: 1,\r\n\t\t\t\tvalues: [start_date],\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tfield: \"CreatedOn\",\r\n\t\t\t\top: 3,\r\n\t\t\t\tvalues: [end_date],\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tfield: \"lastDayOfMonth\",\r\n\t\t\t\top: 0,\r\n\t\t\t\tvalues: [\"true\"],\r\n\t\t\t},\r\n\t\t];\r\n\t\tthis.orderBy = [\r\n\t\t\t{\r\n\t\t\t\tfield: \"CreatedOn\",\r\n\t\t\t\tdirection: \"Desc\",\r\n\t\t\t},\r\n\t\t];\r\n\t\tthis.pageSize = 10000;\r\n\r\n\t\tconst resp = await axios.post(this.MemberDirectory + \"MemberCount/q\", this.payload, this.membership_config);\r\n\t\treturn resp.data;\r\n\t}\r\n\r\n\tasync fetchListing(listing_id) {\r\n\t\t// eq 'SW18192065'\r\n\t\tif (listing_id && listing_id.length > 4) {\r\n\t\t\tconst resp = await axios.get(\"https://staging.h.api.crmls.org/RESO/OData/Property?$filter=ListingId eq '\" + listing_id + \"'&$expand=Media\", {\r\n\t\t\t\theaders: {\r\n\t\t\t\t\tAccept: \"application/json\",\r\n\t\t\t\t\tAuthorization: `Bearer ${this.webApiToken}`,\r\n\t\t\t\t},\r\n\t\t\t});\r\n\t\t\treturn resp.data;\r\n\t\t}\r\n\t}\r\n\r\n\tasync fetchReportEmbedUrl(report_id) {\r\n\t\tconst resp = await axios.get(\"https://api.powerbi.com/v1.0/myorg/groups/f26d3ff1-a9f5-4bee-9cae-eaef04d77f74/reports/\" + report_id, {\r\n\t\t\theaders: {\r\n\t\t\t\tAccept: \"application/json\",\r\n\t\t\t\tAuthorization: `Bearer ${this.powerBiToken}`,\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\treturn {\r\n\t\t\ttoken: this.powerBiToken,\r\n\t\t\tembedUrl: resp.data.embedUrl,\r\n\t\t};\r\n\t}\r\n\r\n\tasync fetchAttendees(class_id = false) {\r\n\t\tif (class_id) {\r\n\t\t\tthis.criteria = [\r\n\t\t\t\t{\r\n\t\t\t\t\tfield: \"trainingClassId\",\r\n\t\t\t\t\top: 0,\r\n\t\t\t\t\tvalues: [class_id],\r\n\t\t\t\t},\r\n\t\t\t];\r\n\r\n\t\t\tthis.orderBy = [\r\n\t\t\t\t{\r\n\t\t\t\t\tfield: \"createdOn\",\r\n\t\t\t\t\tdirection: 0,\r\n\t\t\t\t},\r\n\t\t\t];\r\n\t\t}\r\n\r\n\t\tconst resp = await axios.post(this.base_url + \"attendee/q\", this.payload, this.training_config);\r\n\t\treturn resp.data;\r\n\t}\r\n\r\n\tasync fetchTopicsByClass(id) {\r\n\t\treturn await axios.post(\r\n\t\t\t`${this.base_url}trainingClass/q?stupid`,\r\n\t\t\t{\r\n\t\t\t\tpageId: 0,\r\n\t\t\t\tpageSize: 20,\r\n\t\t\t\tcriteria: [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tfield: \"id\",\r\n\t\t\t\t\t\top: 0,\r\n\t\t\t\t\t\tvalues: [id],\r\n\t\t\t\t\t},\r\n\t\t\t\t],\r\n\t\t\t},\r\n\t\t\tthis.base_config\r\n\t\t);\r\n\t}\r\n\r\n\tasync getRenderedPdf(campaignId) {\r\n\t\treturn await axios.get(`${this.base_url}Campaign/PDFRender/${campaignId}`, this.base_config);\r\n\t}\r\n\r\n\tasync getRegisteredListings() {\r\n\t\treturn await axios.post(this.RegisteredListings + \"api/app/Registration/q\", {\r\n\t\t\tpageId: 0,\r\n\t\t\tpageSize: 10000,\r\n\t\t});\r\n\t}\r\n\tasync getMemberManagers(memberId) {\r\n\t\tthis.setCompliance();\r\n\t\treturn this.get(`ComplianceCases/memberManagers/${memberId}`);\r\n\t\t//return this.get(`ComplianceCases/memberManagers/2744FB2C-528C-41F0-989C-0000D81B8C67`);\r\n\t}\r\n\tasync getCaseAlerts(caseId) {\r\n\t\tthis.setCompliance();\r\n\t\treturn this.get(`Alerts/complianceCase/${caseId}`);\r\n\t}\r\n\tasync dismissAlert(alertId) {\r\n\t\tthis.setCompliance();\r\n\t\treturn this.put(`Alerts/dismissAlert/${alertId}`);\r\n\t}\r\n\tasync dismissAllAlerts(caseId) {\r\n\t\tthis.setCompliance();\r\n\t\treturn this.put(`Alerts/dismissAll/${caseId}`);\r\n\t}\r\n\tasync getDispositions(type) {\r\n\t\tthis.setCompliance();\r\n\r\n\t\tthis.pageSize = 100000;\r\n\t\treturn this.fetchDataWithCriteria(\"EnumerationLookups\", [\r\n\t\t\t{\r\n\t\t\t\tfield: \"enumerationName\",\r\n\t\t\t\top: 0,\r\n\t\t\t\tvalues: [type], //Todo \"Complaints\"\r\n\t\t\t},\r\n\t\t]);\r\n\t}\r\n\tasync replyRead(reply, notice, dispatch) {\r\n\t\tthis.setCompliance();\r\n\t\tdispatch(setReplyRead({ noticeId: notice.id, replyId: reply.id }));\r\n\t\treturn this.put(`Replies/${reply.id}`, {\r\n\t\t\t...reply,\r\n\t\t\tisRead: true,\r\n\t\t});\r\n\t}\r\n\r\n\tasync uploadReportCsv(formData, userId, notifyUser) {\r\n\t\treturn await axios.post(this.Compliance + `ICheck/upload?notifyUser=${notifyUser}&userId=${userId}`, formData, {\r\n\t\t\theaders: {\r\n\t\t\t\t\"Content-Type\": \"multipart/form-data\",\r\n\t\t\t\tAuthorization: `Bearer ${this.complianceToken}`,\r\n\t\t\t\tAccept: \"application/json\",\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\r\n\tasync memberTypeahead(searchString, cancelToken) {\r\n\t\tconst resp = await axios.get(`${this.MemberShipV3}AudienceIndexes/ta/${searchString}`, {\r\n\t\t\t...this.membership_config,\r\n\t\t\tcancelToken: cancelToken,\r\n\t\t});\r\n\t\treturn resp.data;\r\n\t}\r\n}\r\n\r\nexport default QueryHelper;\r\n","import { useEffect, useRef } from \"react\";\r\nimport QueryHelper from \"../Utilities/QueryHelper\";\r\nimport { useAppSelector } from \"../../app/hooks\";\r\nimport { getEnvironment, getTokens } from \"../../features/userFeature/userSlice\";\r\n\r\nfunction useQuery(callback) {\r\n\tconst tokens = useAppSelector(getTokens);\r\n\tconst environment = useAppSelector(getEnvironment);\r\n\r\n\t// callback will be a setQueryHelper function\r\n\tconst savedCallback = useRef();\r\n\r\n\tuseEffect(() => {\r\n\t\tsavedCallback.current = callback;\r\n\t}, [callback]);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (environment && tokens.mace?.length && tokens.membership?.length && tokens.notification?.length && tokens.workflow?.length) {\r\n\t\t\tsavedCallback.current(new QueryHelper({environment, tokens}));\r\n\t\t}\r\n\t}, [tokens, environment]);\r\n}\r\n\r\nexport default useQuery;\r\n","import {createAsyncThunk, createSlice, PayloadAction} from '@reduxjs/toolkit'\r\nimport * as dot from \"dot-object\";\r\nimport {RootState, store} from \"../../app/store\";\r\n\r\nconst storageName = 'CosmosPrefs';\r\n\r\nexport type Selector = (state: RootState) => S;\r\n\r\nexport type prefPayload = {\r\n\tkey: string, // this should be in dot notation for the whole nested structure, eg. marketing.campaigns.selectors.campaignType\r\n\tvalue: any, // this can be another object, array, etc.\r\n}\r\n\r\nexport type prefCategories = {\r\n\tmarketing: any;\r\n\ttraining: any;\r\n\t// add additional departments as we go\r\n}\r\n\r\nexport type crmlsUserPrefs = {\r\n\tAPIPrefs: prefCategories,\r\n\tlocalPrefs: prefCategories,\r\n\tsessionPrefs: prefCategories,\r\n}\r\n\r\n// Define the initial state\r\nconst initialState: crmlsUserPrefs = {\r\n\tAPIPrefs: {\r\n\t\tmarketing: null,\r\n\t\ttraining: null,\r\n\t\t...(window.localStorage.getItem(\"APIPrefs\") ? JSON.parse(window.localStorage.getItem(\"APIPrefs\") as string) : {}),\r\n\t},\r\n\tlocalPrefs: {\r\n\t\tmarketing: null,\r\n\t\ttraining: null,\r\n\t},\r\n\tsessionPrefs: {\r\n\t\tmarketing: null,\r\n\t\ttraining: null,\r\n\t},\r\n}\r\n\r\nexport const fetchAPIMemberPrefs = createAsyncThunk(\r\n 'prefs/fetchAPIMemberPrefs',\r\n async () => {\r\n\t// do request to API service here\r\n\treturn {\r\n\t\tmarketing: {},\r\n\t\ttraining: {},\r\n\t};\r\n}\r\n)\r\n\r\nexport const fetchStoredMemberPrefs = createAsyncThunk(\"prefs/fetchStoredMemberPrefs\", async () => {\r\n\t// do request to local storage service here\r\n\tlet retrievedPrefs = localStorage.getItem(storageName);\r\n\r\n\tif (retrievedPrefs && retrievedPrefs !== '') {\r\n\t\treturn JSON.parse(retrievedPrefs);\r\n\t}\r\n}\r\n)\r\n\r\nexport const fetchSessionMemberPrefs = createAsyncThunk(\r\n 'prefs/fetchSessionMemberPrefs',\r\n async () => {\r\n\t// do request to session service here\r\n\tlet retrievedPrefs = sessionStorage.getItem(storageName);\r\n\r\n\tif (retrievedPrefs && retrievedPrefs !== '') {\r\n\t\treturn JSON.parse(retrievedPrefs);\r\n\t}\r\n}\r\n)\r\n\r\nexport const prefsSlice = createSlice({\r\n\tname: 'prefs',\r\n\tinitialState,\r\n\treducers: {\r\n\t\tsetAPIPref: (state, action: PayloadAction) => {\r\n\t\t\tlet currentState = {...state.APIPrefs};\r\n\t\t\t// unset the current path or dot-object pukes\r\n\t\t\tdot.delete(action.payload.key, currentState);\r\n\t\t\tdot.str(action.payload.key, action.payload.value, currentState);\r\n\t\t\twindow.localStorage.setItem(\"APIPrefs\", JSON.stringify(currentState));\r\n\t\t\t// TODO: write back to storage\r\n\t\t\tstate.APIPrefs = currentState;\r\n\t\t},\r\n\t\tsetLocalStoragePref: (state, action: PayloadAction) => {\r\n\t\t\tlet currentState = {...state.localPrefs};\r\n\t\t\t// unset the current path or dot-object pukes\r\n\t\t\tdot.delete(action.payload.key, currentState);\r\n\t\t\tdot.str(action.payload.key, action.payload.value, currentState);\r\n\t\t\t// write back to storage\r\n\t\t\tlocalStorage.setItem(storageName, JSON.stringify(currentState));\r\n\t\t\tstate.localPrefs = currentState;\r\n\t\t},\r\n\t\tsetSessionPref: (state, action: PayloadAction) => {\r\n\t\t\tlet currentState = {...state.sessionPrefs};\r\n\t\t\t// unset the current path or dot-object pukes\r\n\t\t\tdot.delete(action.payload.key, currentState);\r\n\t\t\tdot.str(action.payload.key, action.payload.value, currentState);\r\n\t\t\t// write back to storage\r\n\t\t\tsessionStorage.setItem(storageName, JSON.stringify(currentState));\r\n\t\t\tstate.sessionPrefs = currentState;\r\n\t\t},\r\n\t},\r\n\textraReducers: (builder) => {\r\n\t\tbuilder\r\n\t\t\t.addCase(fetchAPIMemberPrefs.fulfilled, (state, action) => {\r\n\t\t\t\tstate.APIPrefs = action.payload;\r\n\t\t\t})\r\n\t\t\t.addCase(fetchStoredMemberPrefs.fulfilled, (state, action) => {\r\n\t\t\t\tstate.localPrefs = action.payload;\r\n\t\t\t})\r\n\t\t\t.addCase(fetchSessionMemberPrefs.fulfilled, (state, action) => {\r\n\t\t\t\tstate.sessionPrefs = action.payload;\r\n\t\t\t})\r\n }\r\n})\r\n\r\nexport const selectPrefByPath = (path: string): any => {\r\n\tlet state: RootState = store.getState();\r\n\r\n\t// loop over the settings starting from the API level settings and work down\r\n\tif (dot.pick(path, state.prefs.APIPrefs)) {\r\n\t\treturn dot.pick(path, state.prefs.APIPrefs);\r\n\t}\r\n\tif (dot.pick(path, state.prefs.localPrefs)) {\r\n\t\treturn dot.pick(path, state.prefs.localPrefs);\r\n\t}\r\n\tif (dot.pick(path, state.prefs.sessionPrefs)) {\r\n\t\treturn dot.pick(path, state.prefs.sessionPrefs);\r\n\t}\r\n\r\n\treturn undefined;\r\n}\r\n\r\nexport const { setAPIPref, setLocalStoragePref, setSessionPref } = prefsSlice.actions;\r\nconst { reducer } = prefsSlice;\r\nexport default reducer;\r\n","/*\r\n * NOTE: use fontawesome 5 free icons or icomoon icons but use full icon class, with fas etc.\r\n * FA 5: https://fontawesome.com/icons?d=gallery&q=buildin&m=free\r\n * IcoMoon: https://iconsmind.com/view_icons/\r\n */\r\n// Todo remove for development only\r\n\r\nconst listManagementCrumbs = [\r\n\t{ name: \"Home\", path: \"/\" },\r\n\t{ name: \"Compliance\", path: \"/compliance\" },\r\n\t{\r\n\t\tname: \"List Management\",\r\n\t\tpath: \"/compliance/list-management/rules\",\r\n\t},\r\n];\r\n\r\nexport enum AdminRoles {\r\n\tWorkFlowAdmin = \"workflow.admin\",\r\n}\r\n\r\nconst listManagementDefaults = {\r\n\tpath: \"/compliance/list-management/rules\",\r\n\tname: \"List Management\",\r\n\ticon: \"fas fa-list\",\r\n\tshowWelcome: false,\r\n\tcrumbs: listManagementCrumbs,\r\n};\r\n\r\nexport const ROUTESINDIVIDUAL = {\r\n\tALLTICKETS: {\r\n\t\tpath: \"/support/tickets\",\r\n\t\tname: \"Active Tickets\",\r\n\t\ticon: \"icon-Gaugage\",\r\n\t\tshowWelcome: false,\r\n\t\tcrumbs: [\r\n\t\t\t{ name: \"Home\", path: \"/\" },\r\n\t\t\t{ name: \"Support Services\", path: \"/support\" },\r\n\t\t\t{\r\n\t\t\t\tname: \"Active Tickets\",\r\n\t\t\t\tpath: \"/support/tickets\",\r\n\t\t\t},\r\n\t\t],\r\n\t},\r\n\tVIEWS: {\r\n\t\tpath: \"/support/views\",\r\n\t\tname: \"Views\",\r\n\t\ticon: \"icon-Gaugage\",\r\n\t\tshowWelcome: false,\r\n\t\tcrumbs: [\r\n\t\t\t{ name: \"Home\", path: \"/\" },\r\n\t\t\t{ name: \"Support Services\", path: \"/support\" },\r\n\t\t\t{\r\n\t\t\t\tname: \"Views\",\r\n\t\t\t\tpath: \"/support/views\",\r\n\t\t\t},\r\n\t\t],\r\n\t},\r\n\tEDITTICKET_VIEWS: {\r\n\t\tpath: \"/support/views\",\r\n\t\tname: \"Edit Ticket\",\r\n\t\ticon: \"icon-Gaugage\",\r\n\t\tshowWelcome: false,\r\n\t\tcrumbs: [\r\n\t\t\t{ name: \"Home\", path: \"/\" },\r\n\t\t\t{ name: \"Support Services\", path: \"/support\" },\r\n\t\t\t{\r\n\t\t\t\tname: \"Views\",\r\n\t\t\t\tpath: \"/support/views\",\r\n\t\t\t},\r\n\t\t],\r\n\t},\r\n\tEDITTICKET_ALLTICKETS: {\r\n\t\tpath: \"/support/views\",\r\n\t\tname: \"Edit Ticket\",\r\n\t\ticon: \"icon-Gaugage\",\r\n\t\tshowWelcome: false,\r\n\t\tcrumbs: [\r\n\t\t\t{ name: \"Home\", path: \"/\" },\r\n\t\t\t{ name: \"Support Services\", path: \"/support\" },\r\n\t\t\t{\r\n\t\t\t\tname: \"Active Tickets\",\r\n\t\t\t\tpath: \"/support/tickets\",\r\n\t\t\t},\r\n\t\t],\r\n\t},\r\n};\r\n\r\nconst Routes = [\r\n\t{\r\n\t\tname: \"Communications\",\r\n\t\tabbrev: \"CO\",\r\n\t\ticon: \"fas fa-bullhorn\",\r\n\t\trootpath: \"/communications\",\r\n\t\tpaths: [\r\n\t\t\t{\r\n\t\t\t\tpath: \"/communications\",\r\n\t\t\t\tname: \"Dashboard\",\r\n\t\t\t\ticon: \"icon-Gaugage\",\r\n\t\t\t\tshowWelcome: true,\r\n\t\t\t\tcrumbs: [\r\n\t\t\t\t\t{ name: \"Home\", path: \"/\" },\r\n\t\t\t\t\t{ name: \"Communications\", path: \"/communications\" },\r\n\t\t\t\t],\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tpath: \"/communications/campaigns\",\r\n\t\t\t\tname: \"Campaigns\",\r\n\t\t\t\ticon: \"fas fa-envelope\",\r\n\t\t\t\tshowWelcome: false,\r\n\t\t\t\tcrumbs: [\r\n\t\t\t\t\t{ name: \"Home\", path: \"/\" },\r\n\t\t\t\t\t{ name: \"Communications\", path: \"/communications\" },\r\n\t\t\t\t\t{ name: \"Campaigns\", path: \"/communications/campaigns\" },\r\n\t\t\t\t],\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tpath: \"/communications/audiences\",\r\n\t\t\t\tname: \"Audiences\",\r\n\t\t\t\ticon: \"fas fa-users\",\r\n\t\t\t\tshowWelcome: false,\r\n\t\t\t\tcrumbs: [\r\n\t\t\t\t\t{ name: \"Home\", path: \"/\" },\r\n\t\t\t\t\t{ name: \"Communications\", path: \"/communications\" },\r\n\t\t\t\t\t{ name: \"Audiences\", path: \"/communications/audiences\" },\r\n\t\t\t\t],\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tpath: \"/communications/reports\",\r\n\t\t\t\tname: \"Reports\",\r\n\t\t\t\ticon: \"fas fa-chart-bar\",\r\n\t\t\t\tshowWelcome: false,\r\n\t\t\t\tcrumbs: [\r\n\t\t\t\t\t{ name: \"Home\", path: \"/\" },\r\n\t\t\t\t\t{ name: \"Communications\", path: \"/communications\" },\r\n\t\t\t\t\t{ name: \"Reports\", path: \"/communications/reports\" },\r\n\t\t\t\t],\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tpath: \"/communications/templates\",\r\n\t\t\t\tname: \"Templates\",\r\n\t\t\t\ticon: \"fas fa-file\",\r\n\t\t\t\tshowWelcome: false,\r\n\t\t\t\tcrumbs: [\r\n\t\t\t\t\t{ name: \"Home\", path: \"/\" },\r\n\t\t\t\t\t{ name: \"Communications\", path: \"/communications\" },\r\n\t\t\t\t\t{ name: \"Templates\", path: \"/communications/templates\" },\r\n\t\t\t\t],\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tpath: \"/communications/articles\",\r\n\t\t\t\tname: \"Articles\",\r\n\t\t\t\ticon: \"fas fa-file\",\r\n\t\t\t\tshowWelcome: false,\r\n\t\t\t\tcrumbs: [\r\n\t\t\t\t\t{ name: \"Home\", path: \"/\" },\r\n\t\t\t\t\t{ name: \"Communications\", path: \"/communications\" },\r\n\t\t\t\t\t{ name: \"Articles\", path: \"/communications/articles\" },\r\n\t\t\t\t],\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tpath: \"/communications/media\",\r\n\t\t\t\tname: \"Media Manager\",\r\n\t\t\t\ticon: \"fas fa-photo-video\",\r\n\t\t\t\tshowWelcome: false,\r\n\t\t\t\tcrumbs: [\r\n\t\t\t\t\t{ name: \"Home\", path: \"/\" },\r\n\t\t\t\t\t{ name: \"Communications\", path: \"/communications\" },\r\n\t\t\t\t\t{ name: \"Media Manager\", path: \"/communications/media\" },\r\n\t\t\t\t],\r\n\t\t\t},\r\n\t\t],\r\n\t},\r\n\t{\r\n\t\tname: \"Operations\",\r\n\t\ticon: \"fas fa-building\",\r\n\t\tabbrev: \"OP\",\r\n\t\trootpath: \"/operations\",\r\n\t\tpaths: [\r\n\t\t\t{\r\n\t\t\t\tpath: \"/operations/system-alerts\",\r\n\t\t\t\tname: \"System Messages\",\r\n\t\t\t\ticon: \"fas fa-bell\",\r\n\t\t\t\tshowWelcome: false,\r\n\t\t\t\tcrumbs: [\r\n\t\t\t\t\t{ name: \"Home\", path: \"/\" },\r\n\t\t\t\t\t{ name: \"Operations\", path: \"/operations\" },\r\n\t\t\t\t],\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tpath: \"/operations/audience-applications\",\r\n\t\t\t\tname: \"Applications\",\r\n\t\t\t\ticon: \"fas fa-users\",\r\n\t\t\t\tshowWelcome: false,\r\n\t\t\t\tcrumbs: [\r\n\t\t\t\t\t{ name: \"Home\", path: \"/\" },\r\n\t\t\t\t\t{ name: \"Operations\", path: \"/operations\" },\r\n\t\t\t\t],\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tpath: \"/operations/custom-canvases\",\r\n\t\t\t\tname: \"Custom Canvases\",\r\n\t\t\t\ticon: \"fas fa-table\",\r\n\t\t\t\tshowWelcome: false,\r\n\t\t\t\tcrumbs: [\r\n\t\t\t\t\t{ name: \"Home\", path: \"/\" },\r\n\t\t\t\t\t{ name: \"Operations\", path: \"/operations\" },\r\n\t\t\t\t],\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tpath: \"/operations/eula\",\r\n\t\t\t\tname: \"EULA Manager\",\r\n\t\t\t\ticon: \"fas fa-file-signature\",\r\n\t\t\t\tshowWelcome: false,\r\n\t\t\t\tcrumbs: [\r\n\t\t\t\t\t{ name: \"Home\", path: \"/\" },\r\n\t\t\t\t\t{ name: \"Operations\", path: \"/operations\" },\r\n\t\t\t\t],\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tpath: \"/operations/email-validator\",\r\n\t\t\t\tname: \"Email Validator\",\r\n\t\t\t\ticon: \"fas fa-envelope\",\r\n\t\t\t\tshowWelcome: false,\r\n\t\t\t\tcrumbs: [\r\n\t\t\t\t\t{ name: \"Home\", path: \"/\" },\r\n\t\t\t\t\t{ name: \"Operations\", path: \"/operations\" },\r\n\t\t\t\t],\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tpath: \"/operations/media\",\r\n\t\t\t\tname: \"Media Manager\",\r\n\t\t\t\ticon: \"fas fa-photo-video\",\r\n\t\t\t\tshowWelcome: false,\r\n\t\t\t\tcrumbs: [\r\n\t\t\t\t\t{ name: \"Home\", path: \"/\" },\r\n\t\t\t\t\t{ name: \"Operations\", path: \"/operations\" },\r\n\t\t\t\t],\r\n\t\t\t},\r\n\t\t],\r\n\t\tadminPaths: [\r\n\t\t\t{\r\n\t\t\t\taccessRole: AdminRoles.WorkFlowAdmin,\r\n\t\t\t\tpath: \"/operations/work-items/admin/work-item-definitions\",\r\n\t\t\t\tname: \"Tickets Admin\",\r\n\t\t\t\ticon: \"fas fa-photo-video\",\r\n\t\t\t\tshowWelcome: false,\r\n\t\t\t\tcrumbs: [\r\n\t\t\t\t\t{ name: \"Home\", path: \"/\" },\r\n\t\t\t\t\t{ name: \"Operations\", path: \"/operations\" },\r\n\t\t\t\t],\r\n\t\t\t},\r\n\t\t],\r\n\t},\r\n\t{\r\n\t\tname: \"Membership\",\r\n\t\ticon: \"fas fa-users-cog\",\r\n\t\tabbrev: \"ME\",\r\n\t\trootpath: \"/membership\",\r\n\t\tpaths: [\r\n\t\t\t{\r\n\t\t\t\tpath: \"/membership/aors\",\r\n\t\t\t\tname: \"AORs\",\r\n\t\t\t\ticon: \"fas fa-users\",\r\n\t\t\t\tshowWelcome: false,\r\n\t\t\t\tcrumbs: [\r\n\t\t\t\t\t{ name: \"Home\", path: \"/\" },\r\n\t\t\t\t\t{ name: \"AORs\", path: \"/membership/aors\" },\r\n\t\t\t\t],\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tpath: \"/membership/settings\",\r\n\t\t\t\tname: \"Settings\",\r\n\t\t\t\ticon: \"fas fa-cogs\",\r\n\t\t\t\tshowWelcome: false,\r\n\t\t\t\tcrumbs: [\r\n\t\t\t\t\t{ name: \"Home\", path: \"/\" },\r\n\t\t\t\t\t{ name: \"Settings\", path: \"/membership/settings\" },\r\n\t\t\t\t],\r\n\t\t\t},\r\n\t\t],\r\n\t},\r\n\t{\r\n\t\tname: \"Training\",\r\n\t\ticon: \"fas fa-graduation-cap\",\r\n\t\tabbrev: \"TR\",\r\n\t\trootpath: \"/training\",\r\n\t\tpaths: [\r\n\t\t\t{\r\n\t\t\t\tpath: \"/training\",\r\n\t\t\t\tname: \"Dashboard\",\r\n\t\t\t\ticon: \"icon-Gaugage\",\r\n\t\t\t\tshowWelcome: false,\r\n\t\t\t\tcrumbs: [\r\n\t\t\t\t\t{ name: \"Home\", path: \"/\" },\r\n\t\t\t\t\t{ name: \"Training\", path: \"/training\" },\r\n\t\t\t\t],\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tpath: \"/training/events\",\r\n\t\t\t\tname: \"Training Events\",\r\n\t\t\t\ticon: \"far fa-calendar-alt\",\r\n\t\t\t\tshowWelcome: false,\r\n\t\t\t\tcrumbs: [\r\n\t\t\t\t\t{ name: \"Home\", path: \"/\" },\r\n\t\t\t\t\t{ name: \"Training\", path: \"/training\" },\r\n\t\t\t\t\t{ name: \"Training Events\", path: \"/training/events\" },\r\n\t\t\t\t],\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tpath: \"/training/topics\",\r\n\t\t\t\tname: \"Topics\",\r\n\t\t\t\ticon: \"fas fa-book\",\r\n\t\t\t\tshowWelcome: false,\r\n\t\t\t\tcrumbs: [\r\n\t\t\t\t\t{ name: \"Home\", path: \"/\" },\r\n\t\t\t\t\t{ name: \"Training\", path: \"/training\" },\r\n\t\t\t\t\t{ name: \"Courses\", path: \"/training/topics\" },\r\n\t\t\t\t],\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tpath: \"/training/locations\",\r\n\t\t\t\tname: \"Locations\",\r\n\t\t\t\ticon: \"fas fa-building\",\r\n\t\t\t\tshowWelcome: false,\r\n\t\t\t\tcrumbs: [\r\n\t\t\t\t\t{ name: \"Home\", path: \"/\" },\r\n\t\t\t\t\t{ name: \"Training\", path: \"/training\" },\r\n\t\t\t\t\t{ name: \"Attendees\", path: \"/training/locations\" },\r\n\t\t\t\t],\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tpath: \"/training/instructors\",\r\n\t\t\t\tname: \"Instructors\",\r\n\t\t\t\ticon: \"fas fa-chalkboard-teacher\",\r\n\t\t\t\tshowWelcome: false,\r\n\t\t\t\tcrumbs: [\r\n\t\t\t\t\t{ name: \"Home\", path: \"/\" },\r\n\t\t\t\t\t{ name: \"Training\", path: \"/training\" },\r\n\t\t\t\t\t{ name: \"Instructors\", path: \"/training/instructors\" },\r\n\t\t\t\t],\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tpath: \"/training/registrations\",\r\n\t\t\t\tname: \"Registrations\",\r\n\t\t\t\ticon: \"fas fa-users\",\r\n\t\t\t\tshowWelcome: false,\r\n\t\t\t\tcrumbs: [\r\n\t\t\t\t\t{ name: \"Home\", path: \"/\" },\r\n\t\t\t\t\t{ name: \"Training\", path: \"/training\" },\r\n\t\t\t\t\t{ name: \"Registrations\", path: \"/training/registrations\" },\r\n\t\t\t\t],\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tpath: \"/training/requests\",\r\n\t\t\t\tname: \"Class Requests\",\r\n\t\t\t\ticon: \"fas fa-users\",\r\n\t\t\t\tshowWelcome: false,\r\n\t\t\t\tcrumbs: [\r\n\t\t\t\t\t{ name: \"Home\", path: \"/\" },\r\n\t\t\t\t\t{ name: \"Training\", path: \"/training\" },\r\n\t\t\t\t\t{ name: \"Class Requests\", path: \"/training/requests\" },\r\n\t\t\t\t],\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tpath: \"/training/media\",\r\n\t\t\t\tname: \"Media Manager\",\r\n\t\t\t\ticon: \"fas fa-photo-video\",\r\n\t\t\t\tshowWelcome: false,\r\n\t\t\t\tcrumbs: [\r\n\t\t\t\t\t{ name: \"Home\", path: \"/\" },\r\n\t\t\t\t\t{ name: \"Training\", path: \"/training\" },\r\n\t\t\t\t\t{ name: \"Media Manager\", path: \"/training/media\" },\r\n\t\t\t\t],\r\n\t\t\t},\r\n\t\t],\r\n\t},\r\n\r\n\t{\r\n\t\tname: \"Support Services\",\r\n\t\ticon: \"fas fa-heart\",\r\n\t\tabbrev: \"SS\",\r\n\t\trootpath: \"/support\",\r\n\t\tpaths: [\r\n\t\t\t{\r\n\t\t\t\tpath: \"/support/views\",\r\n\t\t\t\tname: \"Views\",\r\n\t\t\t\ticon: \"icon-Gaugage\",\r\n\t\t\t\tshowWelcome: false,\r\n\t\t\t\tcrumbs: [\r\n\t\t\t\t\t{ name: \"Home\", path: \"/\" },\r\n\t\t\t\t\t{ name: \"Support Services\", path: \"/support\" },\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tname: \"Views\",\r\n\t\t\t\t\t\tpath: \"/support/views\",\r\n\t\t\t\t\t},\r\n\t\t\t\t],\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tpath: \"/support/tickets\",\r\n\t\t\t\tname: \"Active Tickets\",\r\n\t\t\t\ticon: \"icon-Gaugage\",\r\n\t\t\t\tshowWelcome: false,\r\n\t\t\t\tcrumbs: [\r\n\t\t\t\t\t{ name: \"Home\", path: \"/\" },\r\n\t\t\t\t\t{ name: \"Support Services\", path: \"/support\" },\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tname: \"Active Tickets\",\r\n\t\t\t\t\t\tpath: \"/support/tickets\",\r\n\t\t\t\t\t},\r\n\t\t\t\t],\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tpath: \"/support/closed\",\r\n\t\t\t\tname: \"Closed Tickets\",\r\n\t\t\t\ticon: \"icon-Gaugage\",\r\n\t\t\t\tshowWelcome: false,\r\n\t\t\t\tcrumbs: [\r\n\t\t\t\t\t{ name: \"Home\", path: \"/\" },\r\n\t\t\t\t\t{ name: \"Support Services\", path: \"/support\" },\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tname: \"Closed Tickets\",\r\n\t\t\t\t\t\tpath: \"/support/closed\",\r\n\t\t\t\t\t},\r\n\t\t\t\t],\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tpath: \"/support/reports\",\r\n\t\t\t\tname: \"Reports\",\r\n\t\t\t\ticon: \"icon-Gaugage\",\r\n\t\t\t\tshowWelcome: false,\r\n\r\n\t\t\t\tcrumbs: [\r\n\t\t\t\t\t{ name: \"Home\", path: \"/\" },\r\n\t\t\t\t\t{ name: \"Support Services\", path: \"/support\" },\r\n\t\t\t\t],\r\n\t\t\t},\r\n\t\t],\r\n\t},\r\n\t{\r\n\t\tname: \"Finance\",\r\n\t\ticon: \"fas fa-search-dollar\",\r\n\t\tabbrev: \"FI\",\r\n\t\trootpath: \"/finance/media\",\r\n\t\tpaths: [\r\n\t\t\t{\r\n\t\t\t\tpath: \"/finance/media\",\r\n\t\t\t\tname: \"Media Manager\",\r\n\t\t\t\ticon: \"fas fa-photo-video\",\r\n\t\t\t\tshowWelcome: false,\r\n\t\t\t\tcrumbs: [\r\n\t\t\t\t\t{ name: \"Home\", path: \"/\" },\r\n\t\t\t\t\t{ name: \"Media Manager\", path: \"/finance/media\" },\r\n\t\t\t\t],\r\n\t\t\t},\r\n\t\t],\r\n\t},\r\n];\r\n// Compliance Sections\r\nRoutes.push({\r\n\tname: \"Compliance\",\r\n\ticon: \"fas fa-user-shield\",\r\n\tabbrev: \"CP\",\r\n\trootpath: \"/compliance\",\r\n\tpaths: [\r\n\t\t{\r\n\t\t\tpath: \"/compliance/dashboard\",\r\n\t\t\tname: \"Dashboard\",\r\n\t\t\ticon: \"icon-Gaugage\",\r\n\t\t\tshowWelcome: false,\r\n\r\n\t\t\tcrumbs: [\r\n\t\t\t\t{ name: \"Home\", path: \"/\" },\r\n\t\t\t\t{ name: \"Compliance\", path: \"/compliance\" },\r\n\t\t\t\t{\r\n\t\t\t\t\tname: \"Dashboard\",\r\n\t\t\t\t\tpath: \"/compliance/dashboard\",\r\n\t\t\t\t},\r\n\t\t\t],\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: \"/compliance/queue\",\r\n\t\t\tname: \"Case Management\",\r\n\t\t\ticon: \"fas fa-archive\",\r\n\t\t\tshowWelcome: false,\r\n\r\n\t\t\tcrumbs: [\r\n\t\t\t\t{ name: \"Home\", path: \"/\" },\r\n\t\t\t\t{ name: \"Compliance\", path: \"/compliance\" },\r\n\t\t\t\t{\r\n\t\t\t\t\tname: \"Queue\",\r\n\t\t\t\t\tpath: \"/compliance/queue\",\r\n\t\t\t\t},\r\n\t\t\t],\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: \"/compliance/report-queue\",\r\n\t\t\tname: \"Report Management\",\r\n\t\t\ticon: \"fas fa-archive\",\r\n\t\t\tshowWelcome: false,\r\n\r\n\t\t\tcrumbs: [\r\n\t\t\t\t{ name: \"Home\", path: \"/\" },\r\n\t\t\t\t{ name: \"Compliance\", path: \"/compliance\" },\r\n\t\t\t\t{\r\n\t\t\t\t\tname: \"Report Management\",\r\n\t\t\t\t\tpath: \"/compliance/report-queue\",\r\n\t\t\t\t},\r\n\t\t\t],\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: \"/compliance/note-reminders\",\r\n\t\t\tname: \"Reminders\",\r\n\t\t\ticon: \"fas fa-bell\",\r\n\t\t\tshowWelcome: false,\r\n\r\n\t\t\tcrumbs: [\r\n\t\t\t\t{ name: \"Home\", path: \"/\" },\r\n\t\t\t\t{ name: \"Compliance\", path: \"/compliance\" },\r\n\t\t\t\t{\r\n\t\t\t\t\tname: \"Reminders\",\r\n\t\t\t\t\tpath: \"/compliance/note-reminders\",\r\n\t\t\t\t},\r\n\t\t\t],\r\n\t\t},\r\n\t\t{\r\n\t\t\t...listManagementDefaults,\r\n\t\t\tadminOnly: true,\r\n\t\t\tsubPaths: [\"/compliance/list-management/categories\", \"/compliance/list-management/reasons\", \"/compliance/list-management/dispositions\", \"/compliance/list-management/status\"],\r\n\t\t\tcrumbs: [\r\n\t\t\t\t...listManagementCrumbs,\r\n\t\t\t\t{\r\n\t\t\t\t\tname: \"Rules\",\r\n\t\t\t\t\tpath: \"/compliance/list-management/rules\",\r\n\t\t\t\t},\r\n\t\t\t],\r\n\t\t},\r\n\t\t{\r\n\t\t\t...listManagementDefaults,\r\n\t\t\tpath: \"/compliance/list-management/categories\",\r\n\t\t\tchildPath: true,\r\n\t\t\tcrumbs: [\r\n\t\t\t\t...listManagementCrumbs,\r\n\t\t\t\t{\r\n\t\t\t\t\tname: \"Reason Categories\",\r\n\t\t\t\t\tpath: \"/compliance/list-management/categories\",\r\n\t\t\t\t},\r\n\t\t\t],\r\n\t\t},\r\n\t\t{\r\n\t\t\t...listManagementDefaults,\r\n\t\t\tpath: \"/compliance/list-management/reasons\",\r\n\t\t\tchildPath: true,\r\n\t\t\tcrumbs: [\r\n\t\t\t\t...listManagementCrumbs,\r\n\t\t\t\t{\r\n\t\t\t\t\tname: \"Report Reasons\",\r\n\t\t\t\t\tpath: \"/compliance/list-management/reasons\",\r\n\t\t\t\t},\r\n\t\t\t],\r\n\t\t} as any,\r\n\t\t{\r\n\t\t\t...listManagementDefaults,\r\n\t\t\tpath: \"/compliance/list-management/dispositions\",\r\n\t\t\tchildPath: true,\r\n\t\t\tcrumbs: [\r\n\t\t\t\t...listManagementCrumbs,\r\n\t\t\t\t{\r\n\t\t\t\t\tname: \"Resolutions\",\r\n\t\t\t\t\tpath: \"/compliance/list-management/dispositions\",\r\n\t\t\t\t},\r\n\t\t\t],\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: \"/compliance/case-detail\",\r\n\t\t\tname: \"Case Management\",\r\n\t\t\ticon: \"fas fa-archive\",\r\n\t\t\tshowWelcome: false,\r\n\t\t\tchildPath: true,\r\n\t\t\tcrumbs: [\r\n\t\t\t\t{ name: \"Home\", path: \"/\" },\r\n\t\t\t\t{ name: \"Compliance\", path: \"/compliance\" },\r\n\t\t\t\t{\r\n\t\t\t\t\tname: \"Queue\",\r\n\t\t\t\t\tpath: \"/compliance/queue\",\r\n\t\t\t\t},\r\n\t\t\t],\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: \"/compliance/history\",\r\n\t\t\tname: \"History\",\r\n\t\t\ticon: \"fas fa-clock\",\r\n\t\t\tshowWelcome: false,\r\n\r\n\t\t\tcrumbs: [\r\n\t\t\t\t{ name: \"Compliance\", path: \"/compliance\" },\r\n\t\t\t\t{\r\n\t\t\t\t\tname: \"History\",\r\n\t\t\t\t\tpath: \"/compliance/History\",\r\n\t\t\t\t},\r\n\t\t\t],\r\n\t\t},\r\n\t],\r\n});\r\n\r\nexport default Routes;\r\n","import React from \"react\";\r\nimport { Link } from \"react-router-dom\";\r\n\r\ninterface cardProps {\r\n\tlink: string;\r\n\tcolor: string;\r\n\ticon: string;\r\n\tcount: number;\r\n\tcontent: string;\r\n\texpected: number | false;\r\n\ticonSize?: number;\r\n\ttext?: string;\r\n\ttextAfter?: boolean;\r\n}\r\n\r\nconst Card = (props: cardProps) => {\r\n\tconst cardContent = (\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{props.textAfter ? (\r\n\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t{props.count.toLocaleString()} {props.text ? props.text : \"\"}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t{props.text ? props.text : \"\"} {props.count.toLocaleString()}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\r\n\t\t\t\t\t{props.content}\r\n\t\t\t\t\t{props.expected &&\r\n\t\t\t\t\t\t((props.count / props.expected) * 100 > 100 ? (\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t {((props.count / props.expected) * 100).toFixed(2)}%\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t {((props.count / props.expected) * 100).toFixed(2)}%\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t))}\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t
\r\n\t);\r\n\r\n\tif (props.link) {\r\n\t\treturn (\r\n\t\t\t
\r\n\t\t\t\t{cardContent}\r\n\t\t\t
\r\n\t\t);\r\n\t}\r\n\r\n\treturn
{cardContent}
;\r\n};\r\n\r\nexport default Card;\r\n","import dayjs from \"dayjs\";\r\n\r\n// TODO: replace this with service at some point\r\nexport let CampaignStatuses = ['Draft', 'Pending', 'Approved', 'Sending', 'Complete'];\r\n\r\n// TODO: replace this with service at some point\r\nexport let CampaignPriorities = [\r\n {\r\n name: 'Low',\r\n priority: 15\r\n },\r\n {\r\n name: 'Normal',\r\n priority: 50\r\n },\r\n {\r\n name: 'High',\r\n priority: 75\r\n },\r\n {\r\n name: 'Critical',\r\n priority: 90\r\n },\r\n];\r\n\r\nexport const getRange = (startDate, endDate, type, keys) => {\r\n // build the return shape\r\n let shape = {}\r\n keys.forEach(key => shape[key] = 0);\r\n\r\n let interval;\r\n switch (type) {\r\n case 'month':\r\n interval = 'day';\r\n break;\r\n case 'year':\r\n interval = 'month';\r\n break;\r\n default:\r\n interval = 'day'\r\n break;\r\n }\r\n\r\n let fromDate = dayjs(startDate).startOf('day');\r\n let toDate = dayjs(endDate);\r\n let diff = toDate.diff(fromDate, interval) + 1;\r\n let range = [];\r\n for (let i = 0; i < diff; i++) {\r\n const cloned_shape = { ...shape }\r\n cloned_shape.date = dayjs(startDate).add(i, interval).startOf('day').toDate();\r\n range.push(cloned_shape);\r\n }\r\n\r\n return range;\r\n}\r\n\r\nexport const getRawRange = (startDate, endDate, keys, interval) => {\r\n // build the return shape\r\n let shape = {}\r\n keys.forEach(key => shape[key] = 0);\r\n\r\n let fromDate = dayjs(startDate).startOf('day');\r\n let toDate = dayjs(endDate);\r\n let diff = toDate.diff(fromDate, interval);\r\n let range_array = [];\r\n for (let i = 0; i < diff; i++) {\r\n const cloned_shape = { ...shape }\r\n cloned_shape.date = dayjs(startDate).add(i, interval).startOf(interval).toDate();\r\n range_array.push(cloned_shape);\r\n }\r\n\r\n // cut off ther first day because math is hard\r\n range_array.shift();\r\n console.log(range_array);\r\n return range_array;\r\n}\r\n\r\nexport const getPalette = () => {\r\n return [\r\n '#e5effd', // processed\r\n '#e5fcd0', // sent\r\n '#dfc14a', // prior bounce\r\n '#e3423d', // prior unsub\r\n '#94df4a', // delivered\r\n '#828897', // blocked\r\n '#f3d768', // bounce \r\n '#f4daff', // dropped\r\n '#86d4f5', // open\r\n '#69c1e6', // click\r\n '#f77dc2', // spam report\r\n '#fa625e' // unsubscribe\r\n ];\r\n}\r\n\r\nexport function sameDay(d1, d2) {\r\n return d1.getFullYear() === d2.getFullYear() &&\r\n d1.getDate() === d2.getDate() &&\r\n d1.getMonth() === d2.getMonth();\r\n}\r\n\r\nexport const mlses = [\r\n 'CDAR', 'CR Paragon', 'CRF', 'GSMLS', 'ITECH', 'Matrix', 'PFAR', 'SPN Paragon', 'VCRDS'\r\n];\r\n\r\nexport const getTrainingRequestStatuses = () => {\r\n return [\r\n {\r\n value: 1,\r\n label: 'New',\r\n },\r\n {\r\n value: 2,\r\n label: 'Approved',\r\n },\r\n {\r\n value: 3,\r\n label: 'Scheduled',\r\n },\r\n {\r\n value: 4,\r\n label: 'Cancelled',\r\n },\r\n ];\r\n}\r\n\r\nexport const getTrainingRequestStatusById = (id) => {\r\n switch (id) {\r\n case 2:\r\n return 'ACTIVE';\r\n case 3:\r\n return 'SCHEDULED';\r\n case 4:\r\n return 'COMPLETED';\r\n case 5:\r\n return 'CANCELLED';\r\n case 1:\r\n default:\r\n return 'NEW';\r\n }\r\n}\r\n\r\nexport function isGUID(input) {\r\n const regex = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-5][0-9a-f]{3}-[089ab][0-9a-f]{3}-[0-9a-f]{12}$/i;\r\n return regex.test(input);\r\n}\r\n\r\nexport const sanitizeHTML = (content) => {\r\n return content?.replace?.(/)<[^<]*)*<\\/script>/gi, \"\") || content;\r\n}\r\n\r\nexport const containsHtmlMarkup = (str) => {\r\n // Regular expression to detect HTML tags\r\n const htmlRegExp = /<[^>]*>/;\r\n return htmlRegExp.test(str);\r\n}\r\n\r\nexport const dateStandard = (value) => {\r\n return dayjs(value).format(\"MM/DD/YYYY\");\r\n}\r\n\r\nexport const dateTimeStandard = (value) => {\r\n return dayjs(value).format(\"MM/DD/YYYY hh:mm A\");\r\n}\r\n\r\nexport const dateHTMLInput = (value) => {\r\n return dayjs(value).format(\"YYYY-MM-DD\");\r\n}","import Swal from \"sweetalert2\";\r\nimport \"../../CSS/toast.css\";\r\n\r\nconst Toast = Swal.mixin({\r\n toast: true,\r\n position: 'top-end',\r\n showConfirmButton: false,\r\n timer: 3000,\r\n timerProgressBar: true,\r\n didOpen: (toast) => {\r\n toast.addEventListener('mouseenter', Swal.stopTimer)\r\n toast.addEventListener('mouseleave', Swal.resumeTimer)\r\n }\r\n})\r\n\r\nexport default Toast;","/* eslint-disable react-hooks/exhaustive-deps */\r\nimport React, { useEffect, useState } from \"react\";\r\nimport { selectorDefinition, selectorQueryDefinition, SyncfusionOptions } from \"../../Reporting/Configuration\";\r\nimport GenericTrainingSelect from \"../../../Widgets/GenericTrainingSelect\";\r\nimport { enumSelectOptionType } from \"../../../Utilities/formHelper\";\r\nimport { SwitchComponent } from \"@syncfusion/ej2-react-buttons\";\r\nimport { selectPrefByPath, setAPIPref } from \"../../../../features/prefsFeature/prefsSlice\";\r\nimport { useAppDispatch } from \"../../../../app/hooks\";\r\n\r\ntype selectorValue = {\r\n\tid: string;\r\n\tvalue: string | boolean | number; // TODO: possibly add number support?\r\n};\r\n\r\nconst GenericSyncfusionSelectors = ({ options, setSelectorQuery, showClearBtn = false }: { options: SyncfusionOptions; setSelectorQuery: (selectorDefinitions: selectorQueryDefinition[]) => void; showClearBtn: boolean }) => {\r\n\tconst selectors = options.selectors;\r\n\tconst [selectorValues, setSelectorValues] = useState([]);\r\n\tconst [activeFilters, setActiveFilters] = useState(false);\r\n\tconst [filterInputs, setFilterInputs] = useState([]);\r\n\tconst [checkedDefaults, setCheckedDefaults] = useState(false);\r\n\tconst filterClass = \"form-control list-filter\";\r\n\tconst dispatch = useAppDispatch();\r\n\tlet prefsPath = [options.resourceType, options.resourceName, \"selectors\"].join(\".\");\r\n\r\n\t// Set query data as filters change\r\n\tuseEffect(() => {\r\n\t\tif (!checkedDefaults) {\r\n\t\t\tcheckDefaultValues();\r\n\t\t}\r\n\t\tlet svs: selectorQueryDefinition[] = [];\r\n\t\tif (selectorValues.length) {\r\n\t\t\tselectorValues.forEach((sv) => {\r\n\t\t\t\tsvs.push({\r\n\t\t\t\t\tfield: sv.id,\r\n\t\t\t\t\top: 0,\r\n\t\t\t\t\tvalues: [sv.value],\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t\tsetActiveFilters(true);\r\n\t\t} else {\r\n\t\t\tsetActiveFilters(false);\r\n\t\t}\r\n\t\tsetSelectorQuery(svs);\r\n\t\tdispatch(\r\n\t\t\tsetAPIPref({\r\n\t\t\t\tkey: prefsPath,\r\n\t\t\t\tvalue: svs,\r\n\t\t\t})\r\n\t\t);\r\n\t}, [dispatch, setSelectorQuery, selectorValues]);\r\n\r\n\t// Set selected filter values for new or updated filters\r\n\tconst selectorChangeHandler = (id: string, value: string | boolean | number) => {\r\n\t\tlet s = selectorValues.find((selector) => selector.id === id);\r\n\t\tif (s) {\r\n\t\t\ts.value = value;\r\n\t\t} else {\r\n\t\t\tselectorValues.push({\r\n\t\t\t\tid: id,\r\n\t\t\t\tvalue: value,\r\n\t\t\t});\r\n\t\t}\r\n\t\t// remove any values that are unset\r\n\t\tlet newSelectedValues = selectorValues.filter((s) => s.value !== \"Select One\");\r\n\t\tsetSelectorValues(newSelectedValues);\r\n\t};\r\n\r\n\t// Build filter html elements\r\n\tconst buildSelector = (selector: selectorDefinition) => {\r\n\t\t// for now we can only support items where we know the values (eg. enum) or have a foreign key relationship)\r\n\t\tlet supportedDataTypes = [\"select\", \"staticSelect\", \"staticSelectInt\", \"enumSelect\", \"boolean\"];\r\n\t\t// this is not a good way to do it. . .\r\n\t\tlet selectorColumn = options.columns.filter((column) => supportedDataTypes.includes(column.dataType)).find((column) => column.id === selector.id);\r\n\t\tif (selectorColumn && selectorColumn.id && supportedDataTypes.includes(selectorColumn.dataType)) {\r\n\t\t\tlet i = selectorColumn.id;\r\n\t\t\tlet currentValue = selectorValues.find((filter) => filter.id === i);\r\n\t\t\tswitch (selectorColumn.dataType) {\r\n\t\t\t\tcase \"select\":\r\n\t\t\t\t\treturn (\r\n\t\t\t\t\t\t selectorChangeHandler(i, e.target.value)}\r\n\t\t\t\t\t\t\tonBlur={null}\r\n\t\t\t\t\t\t\tservice_name={selector.service}\r\n\t\t\t\t\t\t\tvalue={currentValue && typeof currentValue.value === \"string\" ? currentValue.value : \"Select One\"}\r\n\t\t\t\t\t\t\tcssClass={`${selector?.cssClass} ${filterClass}`}\r\n\t\t\t\t\t\t\tselect_field={selector.selectField ?? undefined}\r\n\t\t\t\t\t\t\tvalueKey={selector.valueKey ?? undefined}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t);\r\n\t\t\t\tcase \"staticSelect\":\r\n\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t);\r\n\t\t\t\tcase \"staticSelectInt\":\r\n\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t);\r\n\t\t\t\tcase \"enumSelect\":\r\n\t\t\t\t\tif (selectorColumn.values[0]?.category) {\r\n\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t}\r\n\t\t\t\tcase \"boolean\":\r\n\t\t\t\t\treturn (\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t selectorChangeHandler(i, e.checked)} />\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t);\r\n\t\t\t}\r\n\t\t} else if (selectorColumn && !supportedDataTypes.includes(selectorColumn.dataType)) {\r\n\t\t\tconsole.log(\"Datatype not supported for selector\", selector);\r\n\t\t} else {\r\n\t\t\tconsole.log(\"No column definition found for selector\", selector);\r\n\t\t}\r\n\r\n\t\t// fail through to\r\n\t\treturn <>;\r\n\t};\r\n\r\n\tconst refreshFilters = () => {\r\n\t\tif (selectors && selectors.length) {\r\n\t\t\tsetSelectorValues([]);\r\n\t\t}\r\n\t};\r\n\r\n\tconst buildFilters = () => {\r\n\t\tif (selectors && selectors.length) {\r\n\t\t\tsetFilterInputs(selectors.map((selector) => buildSelector(selector)));\r\n\t\t}\r\n\t};\r\n\r\n\tuseEffect(() => {\r\n\t\tbuildFilters();\r\n\t}, [selectorValues]);\r\n\r\n\tconst checkDefaultValues = () => {\r\n\t\tif (selectors && selectors.length && options.enablePersistence !== false) {\r\n\t\t\tconst lsFilters = selectPrefByPath(prefsPath);\r\n\t\t\tif (lsFilters && lsFilters.length) {\r\n\t\t\t\t// We have values in redux prefs - populate dropdowns with those values\r\n\t\t\t\tlsFilters.map((filter: any) => {\r\n\t\t\t\t\treturn selectorChangeHandler(filter.field, filter.values[0]);\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\t// No stored prefs, so check if we have default values & populate default filters\r\n\t\t\t\tlet filtersWithDefaultValue = selectors.filter((select) => select.default || select.dynamicDefault);\r\n\t\t\t\tfiltersWithDefaultValue.map((filter) => {\r\n\t\t\t\t\t// check for dynamic default first\r\n\t\t\t\t\tif (filter.dynamicDefault) {\r\n\t\t\t\t\t\tlet filterValue = filter.dynamicDefault();\r\n\t\t\t\t\t\tif (filterValue) {\r\n\t\t\t\t\t\t\treturn selectorChangeHandler(filter.id, filterValue);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else if (filter.default) {\r\n\t\t\t\t\t\treturn selectorChangeHandler(filter.id, filter.default);\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t\tsetCheckedDefaults(true);\r\n\t};\r\n\r\n\tif (!selectors || selectors.length === 0) {\r\n\t\treturn <>;\r\n\t} else {\r\n\t\treturn (\r\n\t\t\t
\r\n\t\t\t\t{showClearBtn && activeFilters && (\r\n\t\t\t\t\t\r\n\t\t\t\t)}\r\n\t\t\t\t{filterInputs}\r\n\t\t\t
\r\n\t\t);\r\n\t}\r\n};\r\n\r\nexport default GenericSyncfusionSelectors;\r\n","/* eslint-disable react-hooks/exhaustive-deps */\r\nimport React, { useCallback, useContext, useEffect, useRef, useState } from \"react\";\r\nimport { OrderByType, selectorQueryDefinition, SyncfusionOptions } from \"../../Reporting/Configuration\";\r\nimport useQuery from \"../../../Hooks/Query\";\r\nimport QueryHelper from \"../../../Utilities/QueryHelper\";\r\nimport { ColumnChooser, ColumnDirective, ColumnsDirective, EditSettingsModel, GridComponent, Group, Inject, Page, Resize, Search, Sort, Toolbar } from \"@syncfusion/ej2-react-grids\";\r\nimport { swalWithBootstrapButtons } from \"../../../Utilities/SweetAlert\";\r\nimport Swal from \"sweetalert2\";\r\nimport dayjs from \"dayjs\";\r\nimport { Link, useHistory } from \"react-router-dom\";\r\nimport { useAppDispatch, useAppSelector } from \"../../../../app/hooks\";\r\nimport { getUserId } from \"../../../../features/userFeature/userSlice\";\r\nimport { AbilityContext } from \"../../../../Auth/can\";\r\nimport ThemeLoader from \"../../../Widgets/ThemeLoader\";\r\nimport \"../../../../CSS/grid.css\";\r\nimport GenericSyncfusionSelectors from \"./GenericSyncfusionSelectors\";\r\nimport GenericActionsMenu from \"./GenericActionsMenu\";\r\nimport isEqual from \"lodash/isEqual\";\r\nimport _, { isArray } from \"lodash\";\r\nimport MemberLookup from \"../../../Widgets/MemberLookup\";\r\nimport { QueryParameterOperation, icons, unassignedCaseDefault } from \"../../Compliance/shared/helpers\";\r\nimport { setAPIPref } from \"../../../../features/prefsFeature/prefsSlice\";\r\nimport { debounce } from \"lodash\";\r\n\r\nconst initialState = {\r\n\tresult: undefined as any,\r\n\tcount: 0,\r\n};\r\n\r\nconst initialQueryData = {\r\n\tpageId: 0,\r\n\tpageSize: 10,\r\n\tcriteria: [] as any[],\r\n\torderBy: [] as any[],\r\n\tfields: [] as any[],\r\n\trefresh: undefined,\r\n};\r\n\r\nexport const findObjectTitle = (options: SyncfusionOptions) => {\r\n\tlet title;\r\n\r\n\toptions.columns.forEach((col) => {\r\n\t\tif (col.id === \"name\" || col.isLabel) {\r\n\t\t\ttitle = col.id;\r\n\t\t}\r\n\t});\r\n\r\n\treturn title;\r\n};\r\n\r\nconst GenericSyncfusionTable = ({ options }: { options: SyncfusionOptions }) => {\r\n\tconst ability = useContext(AbilityContext);\r\n\tconst accountId = useAppSelector(getUserId);\r\n\tconst [activePage, setActivePage] = useState(0);\r\n\tconst [pageSize, setPageSize] = useState(options.defaultPageSize);\r\n\tconst [isLoaded, setIsLoaded] = useState(false);\r\n\tconst [firstLoad, setFirstLoad] = useState(true);\r\n\tconst [error, setError] = useState();\r\n\tconst [searchString, setSearchString] = useState(\"\");\r\n\tconst [memberIdString, setMemberIdString] = useState(\"\");\r\n\tconst [settings] = useState(JSON.parse(window.localStorage.getItem(\"APIPrefs\") as string)?.[options.resourceType]?.[options.resourceName]);\r\n\tconst [selectorQuery, setSelectorQuery] = useState(options.enablePersistence && settings?.selectors ? settings.selectors : []);\r\n\tconst [sortParams, setSortParams] = useState(options.enablePersistence && settings?.orderBy ? settings?.orderBy : []);\r\n\tconst [helper, setHelper] = useState(null);\r\n\tconst gridControl = useRef(\"\");\r\n\tuseQuery(setHelper);\r\n\tlet history = useHistory();\r\n\tconst [items, setItems] = useState(initialState);\r\n\tconst [previousQueryData, setPreviousQueryData] = useState();\r\n\tconst [queryData, setQueryData] = useState();\r\n\tconst [refreshData, setRefreshData] = useState(false);\r\n\tconst formView = options.parent && options.parent.id ? options.parent.formView : options.routePath;\r\n\tlet orderByPath = [options.resourceType, options.resourceName, \"orderBy\"].join(\".\");\r\n\tlet pageSizePath = [options.resourceType, options.resourceName, \"pageSize\"].join(\".\");\r\n\tlet pageIdPath = [options.resourceType, options.resourceName, \"pageId\"].join(\".\");\r\n\tconst [multiSearchTerm, setMultiSearchTerm] = useState(\"\");\r\n\r\n\tconst dispatch = useAppDispatch();\r\n\r\n\tuseEffect(() => {\r\n\t\tif (helper) {\r\n\t\t\tbuildQuery();\r\n\t\t}\r\n\t}, [isLoaded, helper, activePage, pageSize, searchString, sortParams, options, selectorQuery, memberIdString]);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (options.afterFetchCallback && items) {\r\n\t\t\toptions.afterFetchCallback(items);\r\n\t\t}\r\n\t\tif (items?.result?.length || items?.result) {\r\n\t\t\t//TODO this is a hack fix to keep the page from cashing on table load. unsure as to why this happens\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tsetIsLoaded(true);\r\n\t\t\t\tif (gridControl.current) {\r\n\t\t\t\t\tgridControl.current.hideSpinner();\r\n\t\t\t\t}\r\n\t\t\t}, 1000);\r\n\t\t}\r\n\t}, [items]);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (!refreshData && isEqual(queryData, previousQueryData)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (helper && queryData) {\r\n\t\t\tfetchNow();\r\n\t\t}\r\n\t}, [queryData]);\r\n\r\n\tconst fetchNow = () => {\r\n\t\tif (helper) {\r\n\t\t\tif (options.onLoadCallback) {\r\n\t\t\t\toptions.onLoadCallback(false);\r\n\t\t\t}\r\n\t\t\tif (isLoaded && gridControl.current) {\r\n\t\t\t\tgridControl.current.showSpinner();\r\n\t\t\t}\r\n\r\n\t\t\tif (options.resourceCriteria) {\r\n\t\t\t\thelper.criteria = [...helper.criteria, ...options.resourceCriteria];\r\n\t\t\t}\r\n\t\t\tif (!options.getResource) {\r\n\t\t\t\thelper\r\n\t\t\t\t\t.fetchData(options.resourceName)\r\n\t\t\t\t\t.then((result) => {\r\n\t\t\t\t\t\tif (options.onLoadCallback) {\r\n\t\t\t\t\t\t\toptions.onLoadCallback(true);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\treturn result;\r\n\t\t\t\t\t})\r\n\t\t\t\t\t.then((result) => {\r\n\t\t\t\t\t\tsetItems({\r\n\t\t\t\t\t\t\tresult: result.results,\r\n\t\t\t\t\t\t\tcount: result.totalResults,\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t})\r\n\t\t\t\t\t.then(() => {\r\n\t\t\t\t\t\tif (isLoaded && gridControl.current) {\r\n\t\t\t\t\t\t\tgridControl.current.hideSpinner();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t})\r\n\t\t\t\t\t.catch((error: any) => {\r\n\t\t\t\t\t\tsetError(error.message);\r\n\t\t\t\t\t\tconsole.error(`error: ${error}`);\r\n\t\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\thelper\r\n\t\t\t\t\t.get(options.resourceName)\r\n\t\t\t\t\t.then((result) => {\r\n\t\t\t\t\t\tif (options.onLoadCallback) {\r\n\t\t\t\t\t\t\toptions.onLoadCallback(true);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\treturn result;\r\n\t\t\t\t\t})\r\n\t\t\t\t\t.then((result) => {\r\n\t\t\t\t\t\tsetItems({\r\n\t\t\t\t\t\t\tresult: result.results,\r\n\t\t\t\t\t\t\tcount: result.totalResults,\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t})\r\n\t\t\t\t\t.then(() => {\r\n\t\t\t\t\t\tif (isLoaded && gridControl.current) {\r\n\t\t\t\t\t\t\tgridControl.current.hideSpinner();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t})\r\n\t\t\t\t\t.catch((error: any) => {\r\n\t\t\t\t\t\tsetError(error.message);\r\n\t\t\t\t\t\tconsole.error(`error: ${error}`);\r\n\t\t\t\t\t});\r\n\t\t\t}\r\n\t\t\tsetPreviousQueryData(queryData);\r\n\t\t}\r\n\t};\r\n\tconst buildQuery = () => {\r\n\t\tif (helper) {\r\n\t\t\thelper.criteria = [];\r\n\t\t\tswitch (options.service) {\r\n\t\t\t\tcase \"training\":\r\n\t\t\t\t\thelper.setTraining();\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"membership\":\r\n\t\t\t\t\thelper.setMembership();\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"membershipv3\":\r\n\t\t\t\t\thelper.setMembershipV3();\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"mace\":\r\n\t\t\t\t\thelper.setMace();\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"notification\":\r\n\t\t\t\t\thelper.setNotification();\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"compliance\":\r\n\t\t\t\t\thelper.setCompliance();\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"memberPortal\":\r\n\t\t\t\t\thelper.setMemberPortal();\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\thelper.pageSize =\r\n\t\t\t\toptions.enablePersistence && JSON.parse(window.localStorage.getItem(\"APIPrefs\") as string)?.[options.resourceType]?.[options.resourceName]?.pageSize ? JSON.parse(window.localStorage.getItem(\"APIPrefs\") as string)?.[options.resourceType]?.[options.resourceName]?.pageSize : pageSize;\r\n\t\t\thelper.pageId =\r\n\t\t\t\toptions.enablePersistence && JSON.parse(window.localStorage.getItem(\"APIPrefs\") as string)?.[options.resourceType]?.[options.resourceName]?.pageId ? JSON.parse(window.localStorage.getItem(\"APIPrefs\") as string)?.[options.resourceType]?.[options.resourceName]?.pageId - 1 : activePage;\r\n\t\t\tsetActivePage(helper.pageId);\r\n\r\n\t\t\tif (sortParams.length) {\r\n\t\t\t\thelper.orderBy = sortParams;\r\n\t\t\t\tlet svs: OrderByType[] = [];\r\n\t\t\t\tsortParams.forEach((sp) => {\r\n\t\t\t\t\tsvs.push({\r\n\t\t\t\t\t\tfield: sp.field,\r\n\t\t\t\t\t\tdirection: sp.direction,\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\t\tif (options.enablePersistence) {\r\n\t\t\t\t\tdispatch(\r\n\t\t\t\t\t\tsetAPIPref({\r\n\t\t\t\t\t\t\tkey: orderByPath,\r\n\t\t\t\t\t\t\tvalue: svs,\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t} else if (options.defaultSort && options.defaultSort.columns) {\r\n\t\t\t\t// convert from syncfusion sort object to q format\r\n\t\t\t\thelper.orderBy = options.defaultSort.columns.map((c) => {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tfield: c.field,\r\n\t\t\t\t\t\tdirection: c.direction === \"Descending\" ? \"Desc\" : \"Asc\",\r\n\t\t\t\t\t};\r\n\t\t\t\t});\r\n\t\t\t\tif (options.enablePersistence) {\r\n\t\t\t\t\tdispatch(\r\n\t\t\t\t\t\tsetAPIPref({\r\n\t\t\t\t\t\t\tkey: orderByPath,\r\n\t\t\t\t\t\t\tvalue: [],\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (selectorQuery.length) {\r\n\t\t\t\t// IF there's a default query, check if there's a selector intentionally set that overrides the\r\n\t\t\t\t// default query-- if not, then include the default query alongside the selectors\r\n\t\t\t\tif (options.defaultQuery) {\r\n\t\t\t\t\tlet setDefault = true;\r\n\t\t\t\t\toptions.defaultQuery?.forEach((dq) => {\r\n\t\t\t\t\t\tlet field = dq.field;\r\n\t\t\t\t\t\tselectorQuery.forEach((sq) => {\r\n\t\t\t\t\t\t\tif (sq.field === field) {\r\n\t\t\t\t\t\t\t\tsetDefault = false;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t});\r\n\t\t\t\t\tif (setDefault) {\r\n\t\t\t\t\t\thelper.criteria = options.defaultQuery;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\thelper.criteria = [...helper.criteria, ...selectorQuery];\r\n\t\t\t} else if (options.defaultQuery) {\r\n\t\t\t\thelper.criteria = options.defaultQuery;\r\n\t\t\t}\r\n\r\n\t\t\thelper.criteria = helper.criteria.filter((criteria) => criteria.field !== options.searchField);\r\n\t\t\tif (searchString.length) {\r\n\t\t\t\thelper.criteria.push({\r\n\t\t\t\t\tfield: options.searchField,\r\n\t\t\t\t\top: 10,\r\n\t\t\t\t\tvalues: [searchString],\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\tif (memberIdString?.length) {\r\n\t\t\t\thelper.criteria.push({\r\n\t\t\t\t\tfield: \"memberId\",\r\n\t\t\t\t\top: 0,\r\n\t\t\t\t\tvalues: [memberIdString],\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tsetQueryData({\r\n\t\t\t\tpageId: helper.pageId,\r\n\t\t\t\tpageSize: helper.pageSize,\r\n\t\t\t\tcriteria: helper.criteria,\r\n\t\t\t\torderBy: helper.orderBy,\r\n\t\t\t\tfields: helper.fields,\r\n\t\t\t\trefresh: options.refreshData,\r\n\t\t\t});\r\n\t\t}\r\n\t};\r\n\r\n\tconst handleStateChange = (state: any) => {\r\n\t\tif (state.action.requestType === \"refresh\" && state.action.name === \"actionBegin\") {\r\n\t\t\tgridControl.current.hideSpinner();\r\n\t\t}\r\n\r\n\t\tif (state.action) {\r\n\t\t\tif (options.resourceType !== \"compliance\") {\r\n\t\t\t\tsetItems(initialState); // try clearing this here\r\n\t\t\t}\r\n\t\t\tif (state.action.requestType === \"sorting\") {\r\n\t\t\t\tif (\"sorted\" in state) {\r\n\t\t\t\t\tlet sortOrder: OrderByType[] = [];\r\n\t\t\t\t\tstate.sorted.forEach((sort: any) => {\r\n\t\t\t\t\t\tsortOrder.push({\r\n\t\t\t\t\t\t\tfield: sort.name,\r\n\t\t\t\t\t\t\tdirection: sort.direction === \"ascending\" ? \"Asc\" : \"Desc\",\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t});\r\n\t\t\t\t\tsetActivePage(0);\r\n\t\t\t\t\tsetSortParams(sortOrder);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tsetSortParams([]);\r\n\t\t\t\t}\r\n\t\t\t} else if (state.action.requestType === \"searching\") {\r\n\t\t\t\tsetActivePage(0);\r\n\t\t\t\tsetSearchString(state.action.searchString);\r\n\t\t\t} else if (state.action.requestType === \"paging\") {\r\n\t\t\t\tdispatch(\r\n\t\t\t\t\tsetAPIPref({\r\n\t\t\t\t\t\tkey: pageSizePath,\r\n\t\t\t\t\t\tvalue: state.take,\r\n\t\t\t\t\t})\r\n\t\t\t\t);\r\n\r\n\t\t\t\tif (state.take !== pageSize) {\r\n\t\t\t\t\tsetPageSize(state.take);\r\n\t\t\t\t}\r\n\t\t\t\tif (state.action.currentPage - 1 !== activePage) {\r\n\t\t\t\t\tdispatch(\r\n\t\t\t\t\t\tsetAPIPref({\r\n\t\t\t\t\t\t\tkey: pageIdPath,\r\n\t\t\t\t\t\t\tvalue: state.action.currentPage,\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t);\r\n\t\t\t\t\tsetActivePage(state.action.currentPage - 1); // we're zero-indexed so subtract\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tstate.skip = 1;\r\n\t\t}\r\n\t};\r\n\r\n\tconst pageOptions = {\r\n\t\tpageCount: 4,\r\n\t\tpageSize: pageSize,\r\n\t\tpageSizes: [\"5\", \"10\", \"20\", \"50\"],\r\n\t};\r\n\r\n\tconst deleteObject = (id: string) => {\r\n\t\tswalWithBootstrapButtons\r\n\t\t\t.fire({\r\n\t\t\t\ttitle: \"Are you sure?\",\r\n\t\t\t\ttext: \"You won't be able to revert this!\",\r\n\t\t\t\ticon: \"warning\",\r\n\t\t\t\tshowCancelButton: true,\r\n\t\t\t\tconfirmButtonText: \"Delete it!\",\r\n\t\t\t\tcancelButtonText: \"Cancel!\",\r\n\t\t\t\treverseButtons: true,\r\n\t\t\t})\r\n\t\t\t.then((result) => {\r\n\t\t\t\tif (result.isConfirmed && helper) {\r\n\t\t\t\t\thelper.deleteResource(options.resourceName, id).then((result) => {\r\n\t\t\t\t\t\toptions.refreshData = !refreshData;\r\n\t\t\t\t\t\tbuildQuery();\r\n\t\t\t\t\t\tswalWithBootstrapButtons.fire(\"Deleted!\", `${options.singularTitle} deleted.`, \"success\");\r\n\t\t\t\t\t});\r\n\t\t\t\t} else if (result.dismiss === Swal.DismissReason.cancel) {\r\n\t\t\t\t\tconsole.log(\"cancelled\");\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t};\r\n\r\n\tconst cloneObject = (object: any) => {\r\n\t\tlet newObject = { ...object };\r\n\t\tif (helper) {\r\n\t\t\t// remove this prop since it comes from syncfusion grid\r\n\t\t\tdelete newObject.column;\r\n\t\t\tdelete newObject.index;\r\n\t\t\tdelete newObject.id;\r\n\t\t\tdelete newObject.createdOn;\r\n\t\t\tdelete newObject.createdBy;\r\n\t\t\tdelete newObject.modifiedOn;\r\n\t\t\tdelete newObject.modifiedBy;\r\n\r\n\t\t\t// remove any model that isn't set\r\n\t\t\tif (options.deleteOnUpdate?.length) {\r\n\t\t\t\toptions.deleteOnUpdate.forEach((dOu) => delete newObject[dOu]);\r\n\t\t\t}\r\n\r\n\t\t\t// get the name of the title object\r\n\t\t\tlet title = findObjectTitle(options);\r\n\r\n\t\t\tif (title) {\r\n\t\t\t\tnewObject[title] = newObject[title] + \" - CLONE\";\r\n\t\t\t}\r\n\r\n\t\t\tnewObject.createdBy = accountId;\r\n\t\t\tnewObject.createdOn = dayjs().toISOString();\r\n\t\t\tnewObject.modifiedBy = accountId;\r\n\t\t\tnewObject.modifiedOn = dayjs().toISOString();\r\n\r\n\t\t\t// Not all cloned objects need a draft status - for now, check if this is a campaign, article or training event being cloned, and update the status if so\r\n\t\t\t// @TODO: This needs to be better thought out - campaigns store 'status' all uppercase 'DRAFT'. Training classes store 'Draft'.\r\n\t\t\tif ([\"campaign\", \"article\", \"trainingClass\"].includes(options.resourceName)) {\r\n\t\t\t\tlet newStatus = options.resourceName === \"campaign\" ? \"DRAFT\" : \"Draft\";\r\n\t\t\t\tnewObject.status = newStatus;\r\n\t\t\t}\r\n\t\t\thelper\r\n\t\t\t\t.createResource(options.resourceName, newObject)\r\n\t\t\t\t.then((data) => {\r\n\t\t\t\t\thistory.push(`/${formView}/edit/${data.id}`);\r\n\t\t\t\t})\r\n\t\t\t\t.catch((error: Error) => setError(error.message));\r\n\t\t}\r\n\t};\r\n\r\n\tconst nameTemplate = (props: any) => {\r\n\t\tlet field = props.column.field; // this will be the actual column\r\n\t\tlet tag = props[field] ?? \"No Name\";\r\n\t\tif (isArray(tag)) {\r\n\t\t\ttag = tag.join(\", \");\r\n\t\t}\r\n\t\tif (formView) {\r\n\t\t\tlet link = `/${formView}/edit/` + props.id;\r\n\t\t\treturn {tag};\r\n\t\t}\r\n\r\n\t\treturn tag;\r\n\t};\r\n\r\n\t// this is stupid but syncfusion can't handle more complex templates\r\n\tconst booleanTemplate = (props: any) => {\r\n\t\tlet value = props[props.column.field]; // this will be the actual value of the column\r\n\t\tif (value) {\r\n\t\t\treturn (\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t);\r\n\t\t} else {\r\n\t\t\treturn (\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t);\r\n\t\t}\r\n\t};\r\n\tconst alertTemplate = (props: any) => {\r\n\t\tlet value = props[props.column.field]; // this will be the actual value of the column\r\n\t\tif (props.unseenChanges) {\r\n\t\t\treturn (\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t);\r\n\t\t} else {\r\n\t\t\treturn (\r\n\t\t\t\t\r\n\t\t\t\t\t-\r\n\t\t\t\t\r\n\t\t\t);\r\n\t\t}\r\n\t};\r\n\tconst alertFlagTemplate = (props: { column: { field: string }; [key: string]: any }) => {\r\n\t\tconst value = props[props.column.field];\r\n\r\n\t\tif (value?.length) {\r\n\t\t\treturn (\r\n\t\t\t\t<>\r\n\t\t\t\t\t{Object.entries(icons).map(\r\n\t\t\t\t\t\t([keyword, iconClass], index) =>\r\n\t\t\t\t\t\t\tvalue.includes(keyword) && (\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t)\r\n\t\t\t\t\t)}\r\n\t\t\t\t\r\n\t\t\t);\r\n\t\t} else {\r\n\t\t\treturn -;\r\n\t\t}\r\n\t};\r\n\r\n\tconst imageTemplate = (props: any) => {\r\n\t\tlet value = props[props.column.field]; // this will be the actual value of the column\r\n\r\n\t\tif (value) {\r\n\t\t\treturn {props.name;\r\n\t\t} else {\r\n\t\t\treturn ;\r\n\t\t}\r\n\t};\r\n\r\n\tconst selectTemplate = (props: any) => {\r\n\t\tlet column = options.columns.find((c) => {\r\n\t\t\treturn c.id === props.column.field && [\"staticSelect\", \"enumSelect\", \"staticSelectInt\"].includes(c.dataType);\r\n\t\t});\r\n\t\tlet value = props[props.column.field]; // this will be the actual value of the column\r\n\t\tif (column && column.values) {\r\n\t\t\tswitch (column.dataType) {\r\n\t\t\t\tcase \"enumSelect\":\r\n\t\t\t\t\tlet enumeration = column.values.find((e: any) => e.value === value);\r\n\t\t\t\t\tif (enumeration) {\r\n\t\t\t\t\t\treturn enumeration.label;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\treturn options.noEnumFoundText ? options.noEnumFoundText + value : \"No value found for \" + value;\r\n\t\t\t\t\t}\r\n\t\t\t\tcase \"staticSelect\":\r\n\t\t\t\t\treturn value ?? \"Undefined\";\r\n\t\t\t\tcase \"staticSelectInt\":\r\n\t\t\t\t\treturn column.values[parseInt(value)];\r\n\t\t\t\tdefault:\r\n\t\t\t\t\t// catchall\r\n\t\t\t\t\treturn column.values[value] ?? column.values[parseInt(value)];\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\treturn options.noEnumFoundText ? options.noEnumFoundText + value : \"No value found for \" + value;\r\n\t\t}\r\n\t};\r\n\r\n\tconst customTemplate = (props: any) => {\r\n\t\tlet c = options.columns.find((column) => column.id === props.column.field);\r\n\t\tif (c && c.customComponent) {\r\n\t\t\treturn ;\r\n\t\t}\r\n\t};\r\n\r\n\tconst actionsTemplate = (props: any) => {\r\n\t\tlet itemActions: any[] = [];\r\n\t\tif (options.actions && options.actions.length) {\r\n\t\t\titemActions = [\r\n\t\t\t\t...options.actions.map((action) => {\r\n\t\t\t\t\treturn { ...action, callback: () => action.callback(props) };\r\n\t\t\t\t}),\r\n\t\t\t];\r\n\t\t}\r\n\r\n\t\tif (options.showClone === true && ability.can(\"clone\", options.resourceType)) {\r\n\t\t\titemActions.push({ label: \"Clone Item\", iconClass: \"far fa-copy text-info\", callback: () => cloneObject(props) });\r\n\t\t}\r\n\r\n\t\tif (options.showDelete === true && ability.can(\"delete\", options.resourceType)) {\r\n\t\t\titemActions.push({ label: \"Delete Item\", iconClass: \"far fa-trash-alt text-danger\", callback: () => deleteObject(props.id) });\r\n\t\t}\r\n\r\n\t\tif (options.showEdit === true) {\r\n\t\t\titemActions.push({\r\n\t\t\t\tlabel: \"Edit Item\",\r\n\t\t\t\ticonClass: \"far fa-edit\",\r\n\t\t\t\tcallback: () => {\r\n\t\t\t\t\toptions.editClick ? options.editClick({ data: props }) : options.rowClick({ data: props });\r\n\t\t\t\t},\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (options.showAssign === true) {\r\n\t\t\titemActions.push({\r\n\t\t\t\tlabel: options.assignCopy ? options.assignCopy : props.assignTo === unassignedCaseDefault ? \"Assign\" : \"Reassign\",\r\n\t\t\t\ticonClass: \"far fa-edit\",\r\n\t\t\t\tcallback: (e: any) => {\r\n\t\t\t\t\toptions.assignClick({ e, data: props });\r\n\t\t\t\t},\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (options.showClaim === true) {\r\n\t\t\tif (props.assignTo === unassignedCaseDefault || options.userType === \"ADMIN\") {\r\n\t\t\t\titemActions.push({\r\n\t\t\t\t\tlabel: \"Claim\",\r\n\t\t\t\t\ticonClass: \"far fa-edit\",\r\n\t\t\t\t\tcallback: (e: any) => {\r\n\t\t\t\t\t\toptions.assignClick({ e, data: { ...props, claim: true } });\r\n\t\t\t\t\t},\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn ;\r\n\t};\r\n\r\n\tconst dateTemplate = (props: any) => {\r\n\t\tlet value = props[props.column.field]; // this will be the actual value of the column\r\n\t\tif (value) {\r\n\t\t\treturn dayjs(value).format(\"MMM D, YYYY hh:mm A\");\r\n\t\t}\r\n\t};\r\n\r\n\tconst shortDate = (props: any) => {\r\n\t\tlet value = props[props.column.field]; // this will be the actual value of the column\r\n\t\tif (!value) {\r\n\t\t\tvalue = props.createdOn;\r\n\t\t}\r\n\t\tif (value) {\r\n\t\t\treturn dayjs(value).format(\"MM/DD/YYYY\");\r\n\t\t} else return \"\";\r\n\t};\r\n\r\n\tconst textTemplate = (props: any) => {\r\n\t\tlet value = props[props.column.field]; // this will be the actual value of the column\r\n\t\treturn value ? value : \"-\";\r\n\t};\r\n\r\n\tconst untruncatedText = (props: any) => {\r\n\t\tlet value = <>{props[props.column.field]}; // this will be the actual value of the column\r\n\t\treturn value ?
{value}
: \"-\";\r\n\t};\r\n\tconst htmlText = (props: any) => {\r\n\t\tlet value = <>{props[props.column.field]}; // this will be the actual value of the column\r\n\t\treturn value ?
: \"-\";\r\n\t};\r\n\r\n\tconst ticklerTemplate = (props: any) => {\r\n\t\tlet value = props[props.column.field]; // this will be the actual value of the column\r\n\t\treturn !value ? \"\" :
;\r\n\t};\r\n\r\n\tlet keyLookups: string[] = [];\r\n\tconst arrayTemplate = (props: any) => {\r\n\t\tlet value =\r\n\t\t\tArray.isArray(props[props.column.field]) && props[props.column.field].length ? (\r\n\t\t\t\t<>\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t{props[props.column.field]?.map((item: any, index: number) => (\r\n\t\t\t\t\t\t\t
  • {keyLookups?.map((keyName: string) => item[\"mlsRule\"]?.[keyName] + \" \")}
  • \r\n\t\t\t\t\t\t))}\r\n\t\t\t\t\t
\r\n\t\t\t\t\r\n\t\t\t) : undefined; // this will be the actual value of the column\r\n\t\treturn value ? value : \"None\";\r\n\t};\r\n\tconst arrayCountTemplate = (props: any) => {\r\n\t\tlet value = Array.isArray(props[props.column.field]) && props[props.column.field].length ? props[props.column.field].length : undefined; // this will be the actual value of the column\r\n\t\treturn value ? value : \"None\";\r\n\t};\r\n\r\n\tconst subResourceTemplate = (props: any) => {\r\n\t\tlet column = options.columns.find((c) => c.id === props.column.field);\r\n\r\n\t\t// this template is used if we need to drill down into a subresource using dot notation\r\n\t\t// so we'll split the column name on the dots\r\n\t\tlet columnParts = props.column.field.split(\".\");\r\n\r\n\t\t// TODO: hardcode this to nesting only one level deep for now\r\n\t\tlet value = null;\r\n\r\n\t\tif (props.hasOwnProperty(columnParts[0]) && props[columnParts[0]]) {\r\n\t\t\tvalue = props[columnParts[0]][columnParts[1]]; // this will be the actual value of the column\r\n\t\t}\r\n\r\n\t\tif (value) {\r\n\t\t\tif (column && column.isLabel) {\r\n\t\t\t\tlet link = `/${formView}/edit/` + props.id;\r\n\t\t\t\treturn {value};\r\n\t\t\t}\r\n\t\t\treturn value;\r\n\t\t} else {\r\n\t\t\treturn \"\";\r\n\t\t}\r\n\t};\r\n\r\n\tconst buildFilters = () => {\r\n\t\tif (!options.selectors || options.selectors.length === 0) {\r\n\t\t\treturn <>;\r\n\t\t}\r\n\r\n\t\treturn ;\r\n\t};\r\n\r\n\t// Table header toolbar actions\r\n\tlet toolbarActions = [];\r\n\tif (options.searchField) {\r\n\t\ttoolbarActions.push(\"Search\");\r\n\t}\r\n\tif (options.showRefresh !== false) {\r\n\t\ttoolbarActions.push({ text: \"Refresh\", tooltipText: \"Refresh List\", prefixIcon: \"e-refresh\", id: \"RefreshView\" });\r\n\t}\r\n\ttoolbarActions.push(\"ColumnChooser\");\r\n\r\n\tconst handleToolbarClick = (args: any) => {\r\n\t\tif (args.item.id === \"RefreshView\") {\r\n\t\t\tfetchNow();\r\n\t\t}\r\n\t};\r\n\r\n\tconst getCustomToolbarAction = (tool: any, key: number) => {\r\n\t\treturn (\r\n\t\t\t
  • \r\n\t\t\t\t{tool}\r\n\t\t\t
  • \r\n\t\t);\r\n\t};\r\n\r\n\tlet tableColumns = options.columns.filter((col) => col.showInTable !== false);\r\n\ttableColumns = _.sortBy(tableColumns, \"tableOrder\");\r\n\r\n\tconst memberSelected = (memberId: string) => {\r\n\t\tsetMemberIdString(memberId);\r\n\t};\r\n\tconst tableCreated = (args: any) => {\r\n\t\tdocument\r\n\t\t\t?.getElementsByClassName(\"e-search\")[0]\r\n\t\t\t?.getElementsByClassName(\"e-input\")[0]\r\n\t\t\t?.setAttribute(\"placeholder\", options.defaultSearchPlaceholder || \"Search\");\r\n\t\t//const inputElement = document.querySelector(\".e-input\") as HTMLInputElement;\r\n\t\t//inputElement.value = \"\";\r\n\t\t// get input by class name and clear it\r\n\t};\r\n\tconst [searchOnField, setSearchOnField] = useState(options.columns.filter((c) => c.searchable)[0]?.id);\r\n\r\n\tconst handleSearch = (term: string) => {\r\n\t\tdebounceSearch.cancel();\r\n\t\tif (isLoaded && gridControl.current) {\r\n\t\t\tgridControl.current.showSpinner();\r\n\t\t}\r\n\t\tif (helper) {\r\n\t\t\tconst checkForOverride = options.columns.find((c) => c.id === searchOnField)?.searchOp;\r\n\t\t\thelper.pageId = 0;\r\n\t\t\thelper.criteria = [\r\n\t\t\t\t{\r\n\t\t\t\t\tfield: searchOnField,\r\n\t\t\t\t\top: checkForOverride !== undefined ? checkForOverride : QueryParameterOperation.Contains,\r\n\t\t\t\t\tvalues: [term],\r\n\t\t\t\t},\r\n\t\t\t];\r\n\t\t\thelper\r\n\t\t\t\t.fetchData(options.resourceName)\r\n\t\t\t\t.then((result) => {\r\n\t\t\t\t\tif (options.onLoadCallback) {\r\n\t\t\t\t\t\toptions.onLoadCallback(true);\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn result;\r\n\t\t\t\t})\r\n\t\t\t\t.then((result) => {\r\n\t\t\t\t\tsetItems({\r\n\t\t\t\t\t\tresult: result.results,\r\n\t\t\t\t\t\tcount: result.totalResults,\r\n\t\t\t\t\t});\r\n\t\t\t\t})\r\n\t\t\t\t.then(() => {\r\n\t\t\t\t\tif (isLoaded && gridControl.current) {\r\n\t\t\t\t\t\tgridControl.current.hideSpinner();\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t\t.catch((error: any) => {\r\n\t\t\t\t\tsetError(error.message);\r\n\t\t\t\t\tconsole.error(`error: ${error}`);\r\n\t\t\t\t});\r\n\t\t}\r\n\t};\r\n\tconst debounceSearch = debounce(handleSearch, 500);\r\n\tconst debouncedHandleSearch = useCallback(debounceSearch, [helper, searchOnField]);\r\n\tif (error?.length) {\r\n\t\treturn
    {error}
    ;\r\n\t} else if (isLoaded) {\r\n\t\treturn (\r\n\t\t\t<>\r\n\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t

    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t
      \r\n\t\t\t\t\t\t\t\t\t{ability.can(\"manage\", options.resourceType) && options.showNew !== false && formView && (\r\n\t\t\t\t\t\t\t\t\t\t
    • \r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t New\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t
    • \r\n\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t{/* Additional toolbar options */}\r\n\t\t\t\t\t\t\t\t\t{options.customToolbar && options.customToolbar.length && options.customToolbar.map((tool, key) => getCustomToolbarAction(tool, key))}\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t{buildFilters()}\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t{options.columns.filter((col) => col.searchable)?.length > 0 && (\r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\t\tdebouncedHandleSearch(e.target.value);\r\n\t\t\t\t\t\t\t\t\t\t\t\tsetMultiSearchTerm(e.target.value);\r\n\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\tvalue={multiSearchTerm}\r\n\t\t\t\t\t\t\t\t\t\t\tplaceholder={`Search by ${options.columns.find((col) => col.id === searchOnField)?.label}`}\r\n\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\t\tsetSearchOnField(e.target.value);\r\n\t\t\t\t\t\t\t\t\t\t\t\tsetMultiSearchTerm(\"\");\r\n\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t{options.columns.map((col) => {\r\n\t\t\t\t\t\t\t\t\t\t\t\tif (col.searchable) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t})}\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t{options.showMemberSearch && (\r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t {}}\r\n\t\t\t\t\t\t\t\t\t\t\tselectedMemberObj={(selected: any) => {\r\n\t\t\t\t\t\t\t\t\t\t\t\tsetMemberIdString(selected?.contactId);\r\n\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\tif (document.querySelectorAll(\"input[type=search]\")[1] && firstLoad) {\r\n\t\t\t\t\t\t\t\t\t\t\tsetFirstLoad(false);\r\n\t\t\t\t\t\t\t\t\t\t\tsetSearchString((document.querySelectorAll(\"input[type=search]\")[1] as any).value);\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\tif (!options.manualSizeColumns) {\r\n\t\t\t\t\t\t\t\t\t\t\tgridControl.current.autoFitColumns([]);\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\trowSelected={\r\n\t\t\t\t\t\t\t\t\t\toptions.rowClick\r\n\t\t\t\t\t\t\t\t\t\t\t? (e) => {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tif (e.isInteracted) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\toptions.rowClick(e);\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t }\r\n\t\t\t\t\t\t\t\t\t\t\t: () => {}\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\trowDeselected={\r\n\t\t\t\t\t\t\t\t\t\toptions.rowClick\r\n\t\t\t\t\t\t\t\t\t\t\t? (e) => {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tif (e.isInteracted) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\toptions.rowClick(e);\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t }\r\n\t\t\t\t\t\t\t\t\t\t\t: () => {}\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t{tableColumns.map((c) => {\r\n\t\t\t\t\t\t\t\t\t\t\tlet columnProperties: { [key: string]: any } = {\r\n\t\t\t\t\t\t\t\t\t\t\t\tkey: c.id,\r\n\t\t\t\t\t\t\t\t\t\t\t\tfield: c.id,\r\n\t\t\t\t\t\t\t\t\t\t\t\twidth: c.width ?? undefined,\r\n\t\t\t\t\t\t\t\t\t\t\t\theaderText: c.label,\r\n\t\t\t\t\t\t\t\t\t\t\t\tclipMode: \"EllipsisWithTooltip\",\r\n\t\t\t\t\t\t\t\t\t\t\t\thideAtMedia: c.hideAtMedia ? `(min-width: ${c.hideAtMedia}px)` : undefined,\r\n\t\t\t\t\t\t\t\t\t\t\t\ttextAlign: c.textAlign ?? undefined,\r\n\t\t\t\t\t\t\t\t\t\t\t\tallowSorting: c.allowSorting ?? undefined,\r\n\t\t\t\t\t\t\t\t\t\t\t\tarrayKeyNames: c.arrayKeyNames ? c.arrayKeyNames : [],\r\n\t\t\t\t\t\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\t\t\t\t\t\tswitch (c.dataType) {\r\n\t\t\t\t\t\t\t\t\t\t\t\tcase \"staticSelect\":\r\n\t\t\t\t\t\t\t\t\t\t\t\tcase \"staticSelectInt\":\r\n\t\t\t\t\t\t\t\t\t\t\t\tcase \"enumSelect\":\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t//columnProperties.headerText = '';\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tcolumnProperties.template = selectTemplate;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t\t\t\t\tcase \"image\":\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tcolumnProperties.template = imageTemplate;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tcolumnProperties.textAlign = \"center\";\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t\t\t\t\tcase \"subResource\":\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tcolumnProperties.template = subResourceTemplate;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t\t\t\t\tcase \"array\":\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tkeyLookups = columnProperties.arrayKeyNames;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tcolumnProperties.maxWidth = c.maxWidth;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tcolumnProperties.minWidth = c.width;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tcolumnProperties.template = arrayTemplate;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t\t\t\t\tcase \"arrayCount\":\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tcolumnProperties.maxWidth = c.maxWidth;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tcolumnProperties.minWidth = c.width;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tcolumnProperties.template = arrayCountTemplate;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t\t\t\t\tcase \"date\":\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tcolumnProperties.template = dateTemplate;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t\t\t\t\tcase \"shortDate\":\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tcolumnProperties.template = shortDate;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tcolumnProperties.maxWidth = c.maxWidth;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tcolumnProperties.field = c.id;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t\t\t\t\tcase \"currency\":\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t// add any specific updates for currency formatting, etc\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t\t\t\t\tcase \"boolean\":\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tcolumnProperties.template = booleanTemplate;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t\t\t\t\tcase \"alert\":\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tcolumnProperties.template = alertTemplate;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t\t\t\t\tcase \"alertFlags\":\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tcolumnProperties.template = alertFlagTemplate;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t\t\t\t\tcase \"custom\":\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tcolumnProperties.template = customTemplate;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t\t\t\t\tcase \"text\":\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tcolumnProperties.template = textTemplate;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tcolumnProperties.maxWidth = c.maxWidth;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tcolumnProperties.minWidth = c.width;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t\t\t\t\tcase \"untruncatedText\":\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tcolumnProperties.template = untruncatedText;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t\t\t\t\tcase \"html\":\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tcolumnProperties.template = htmlText;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t\t\t\t\tcase \"tickler\":\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tcolumnProperties.template = ticklerTemplate;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tcolumnProperties.maxWidth = c.maxWidth;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tcolumnProperties.minWidth = c.width;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tcolumnProperties.template = nameTemplate;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tcolumnProperties.maxWidth = 290;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\t\t\t})}\r\n\r\n\t\t\t\t\t\t\t\t\t\t{(ability.can(\"manage\", options.resourceType) || options.displayActionColumnOverride) && (options.showDelete || options.showClone || options.showEdit || options.showAssign || options.showClaim || (options.actions && options.actions.length)) && (\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\r\n\t\t);\r\n\t} else {\r\n\t\treturn ;\r\n\t}\r\n};\r\n\r\nexport default GenericSyncfusionTable;\r\n","import { createAsyncThunk, createSelector, createSlice } from \"@reduxjs/toolkit\";\r\nimport { RootState, store } from \"../../app/store\";\r\nimport { IAppUser, NoteHeadlineEntityProperties, NoticeDefinitionEntityProperties, NoticeType, ReportReasonEntityProperties, filterComplianceUsers } from \"../../Components/Main/Compliance/shared/helpers\";\r\nimport QueryHelper from \"../../Components/Utilities/QueryHelper\";\r\n\r\nexport const fetchComplianceAnalysts = createAsyncThunk(\"compliance/fetchComplianceAnalysts\", async (arg: { queryHelper: QueryHelper }) => {\r\n\targ.queryHelper.pageSize = 1000;\r\n\targ.queryHelper.criteria = [];\r\n\targ.queryHelper.setMace();\r\n\r\n\tconst res = await arg.queryHelper.fetchAllData(\"user\");\r\n\tconst filteredResults = filterComplianceUsers(res);\r\n\r\n\treturn filteredResults;\r\n});\r\n\r\nexport const fetchAors = createAsyncThunk(\"compliance/fetchAors\", async (arg: { queryHelper: QueryHelper }) => {\r\n\tif (!store.getState().compliance?.aors?.length) {\r\n\t\targ.queryHelper.setCompliance();\r\n\t\targ.queryHelper.pageSize = 1000;\r\n\t\targ.queryHelper.criteria = [];\r\n\t\targ.queryHelper.setMembershipV3();\r\n\r\n\t\tconst res = await arg.queryHelper.fetchAllData(\"aors\");\r\n\t\treturn res;\r\n\t} else {\r\n\t\treturn store.getState().compliance.aors;\r\n\t}\r\n});\r\n\r\nexport const fetchReportReasons = createAsyncThunk(\"compliance/reportReasons\", async (arg: { queryHelper: QueryHelper }) => {\r\n\tif (!store.getState().compliance?.aors?.length) {\r\n\t\targ.queryHelper.setCompliance();\r\n\t\targ.queryHelper.pageSize = 1000;\r\n\t\targ.queryHelper.criteria = [];\r\n\r\n\t\tconst res = await arg.queryHelper.fetchAllData(\"reportReasons\");\r\n\t\treturn res;\r\n\t} else {\r\n\t\treturn store.getState().compliance.reportReasons;\r\n\t}\r\n});\r\n\r\nlet currentRequest: any = null;\r\n\r\nexport const fetchNotices = createAsyncThunk(\"compliance/fetchNotices\", async (arg: { queryHelper: QueryHelper; caseId: string }, { rejectWithValue }) => {\r\n\targ.queryHelper.setCompliance();\r\n\tconst criteria = [\r\n\t\t{\r\n\t\t\tfield: \"complianceCaseId\",\r\n\t\t\top: 0,\r\n\t\t\tvalues: [arg.caseId],\r\n\t\t},\r\n\t];\r\n\r\n\tconst orderBy = [\r\n\t\t{\r\n\t\t\tfield: \"createdOn\",\r\n\t\t\tdirection: \"Desc\",\r\n\t\t},\r\n\t];\r\n\r\n\tif (currentRequest) {\r\n\t\tcurrentRequest.cancel();\r\n\t}\r\n\r\n\tcurrentRequest = arg.queryHelper.fetchDataWithCriteriaOrderBy(\"NoticeDefinitions\", criteria, orderBy);\r\n\tcurrentRequest.cancel = rejectWithValue;\r\n\r\n\ttry {\r\n\t\tconst res = await currentRequest;\r\n\t\treturn res.results;\r\n\t} catch (err) {\r\n\t\tif (!err.isCancelled) {\r\n\t\t\tthrow err;\r\n\t\t}\r\n\t} finally {\r\n\t\tcurrentRequest = null;\r\n\t}\r\n});\r\n\r\nexport const setCase = createAsyncThunk(\"compliance/setCase\", async (arg: { complianceCase: any }) => {\r\n\treturn arg.complianceCase;\r\n});\r\n\r\nexport const setReplyRead = createAsyncThunk(\"compliance/setReplyRead\", async (arg: { noticeId: string; replyId: string }) => {\r\n\treturn { noticeId: arg.noticeId, replyId: arg.replyId };\r\n});\r\nexport const addNotice = createAsyncThunk(\"compliance/addNotice\", async (arg: { notice: NoticeDefinitionEntityProperties }) => {\r\n\treturn { notice: arg.notice };\r\n});\r\n\r\nexport const addNoticeReply = createAsyncThunk(\"compliance/addReply\", async (arg: { notice: NoticeDefinitionEntityProperties }) => {\r\n\treturn { notice: arg.notice };\r\n});\r\nexport const fetchCase = createAsyncThunk(\"compliance/fetchCase\", async (arg: { queryHelper: QueryHelper; caseId: string }) => {\r\n\targ.queryHelper.setCompliance();\r\n\r\n\tconst res = await arg.queryHelper.fetchResource(\"ComplianceCases\", arg.caseId, false);\r\n\treturn res.results[0];\r\n});\r\n\r\nexport const fetchCitationDispositions = createAsyncThunk(\"compliance/citationDispositions\", async (arg: { queryHelper: QueryHelper }) => {\r\n\tif (!store.getState().compliance?.citationDispositions?.length) {\r\n\t\targ.queryHelper.setCompliance();\r\n\t\tconst res = await arg.queryHelper.fetchDataWithCriteria(\"EnumerationLookups\", [\r\n\t\t\t{\r\n\t\t\t\tfield: \"enumerationName\",\r\n\t\t\t\top: 0,\r\n\t\t\t\tvalues: [\"Citation\"],\r\n\t\t\t},\r\n\t\t]);\r\n\t\treturn res.results;\r\n\t} else {\r\n\t\treturn store.getState().compliance.citationDispositions;\r\n\t}\r\n});\r\n\r\nexport const fetchNoteHeaders = createAsyncThunk(\"compliance/noteHeaders\", async (arg: { queryHelper: QueryHelper }) => {\r\n\targ.queryHelper.setCompliance();\r\n\targ.queryHelper.criteria = [];\r\n\tconst res = await arg.queryHelper.fetchAllData(\"Headlines\");\r\n\treturn res?.filter((headline: any) => !headline.isDeleted);\r\n});\r\n\r\nexport const fetchInvestigationDispositions = createAsyncThunk(\"compliance/investigationDispositions\", async (arg: { queryHelper: QueryHelper }) => {\r\n\tif (!store.getState().compliance?.investigationDispositions?.length) {\r\n\t\targ.queryHelper.setCompliance();\r\n\t\tconst res = await arg.queryHelper.fetchDataWithCriteria(\"EnumerationLookups\", [\r\n\t\t\t{\r\n\t\t\t\tfield: \"enumerationName\",\r\n\t\t\t\top: 0,\r\n\t\t\t\tvalues: [\"Investigation\"],\r\n\t\t\t},\r\n\t\t]);\r\n\t\treturn res.results;\r\n\t} else {\r\n\t\treturn store.getState().compliance.investigationDispositions;\r\n\t}\r\n});\r\n\r\nexport const complianceSlice = createSlice({\r\n\tname: \"compliance\",\r\n\tinitialState: {\r\n\t\tnoteHeaders: [] as NoteHeadlineEntityProperties[],\r\n\t\tcomplianceCase: undefined as any,\r\n\t\tinvestigationDispositions: undefined as any,\r\n\t\tcitationDispositions: undefined as any,\r\n\t\tnotices: [] as NoticeDefinitionEntityProperties[],\r\n\t\tanalysts: [] as IAppUser[],\r\n\t\taors: [] as any[],\r\n\t\treportReasons: [] as ReportReasonEntityProperties[],\r\n\t\tloadingNotices: false,\r\n\t},\r\n\treducers: {\r\n\t\tgetCase: (state, action) => {\r\n\t\t\tstate.complianceCase = action.payload;\r\n\t\t},\r\n\t\tgetInvestigationDispositions: (state, action) => {\r\n\t\t\tstate.investigationDispositions = action.payload;\r\n\t\t},\r\n\t\tgetCitationDispositions: (state, action) => {\r\n\t\t\tstate.citationDispositions = action.payload;\r\n\t\t},\r\n\t\tgetNotices: (state, action) => {\r\n\t\t\tstate.notices = action.payload;\r\n\t\t},\r\n\t\tgetComplianceAnalysts: (state, action) => {\r\n\t\t\tstate.analysts = action.payload;\r\n\t\t},\r\n\t\tgetAors: (state, action) => {\r\n\t\t\tstate.aors = action.payload;\r\n\t\t},\r\n\t\tgetNoteHeaders: (state, action) => {\r\n\t\t\tstate.noteHeaders = action.payload;\r\n\t\t},\r\n\t\tgetReportReasons: (state, action) => {\r\n\t\t\tstate.reportReasons = action.payload;\r\n\t\t},\r\n\t},\r\n\textraReducers: (builder) => {\r\n\t\tbuilder\r\n\t\t\t.addCase(fetchCase.fulfilled, (state, action) => {\r\n\t\t\t\tstate.complianceCase = action.payload;\r\n\t\t\t})\r\n\t\t\t.addCase(fetchInvestigationDispositions.fulfilled, (state, action) => {\r\n\t\t\t\tstate.investigationDispositions = action.payload;\r\n\t\t\t})\r\n\t\t\t.addCase(fetchCitationDispositions.fulfilled, (state, action) => {\r\n\t\t\t\tstate.citationDispositions = action.payload;\r\n\t\t\t})\r\n\t\t\t.addCase(fetchNotices.fulfilled, (state, action) => {\r\n\t\t\t\tstate.notices = action.payload;\r\n\t\t\t\tstate.loadingNotices = false;\r\n\t\t\t})\r\n\t\t\t.addCase(fetchNotices.pending, (state) => {\r\n\t\t\t\tstate.loadingNotices = true;\r\n\t\t\t})\r\n\t\t\t.addCase(setCase.fulfilled, (state, action) => {\r\n\t\t\t\tstate.complianceCase = action.payload;\r\n\t\t\t})\r\n\t\t\t.addCase(fetchComplianceAnalysts.fulfilled, (state, action) => {\r\n\t\t\t\tstate.analysts = action.payload;\r\n\t\t\t})\r\n\t\t\t.addCase(fetchAors.fulfilled, (state, action) => {\r\n\t\t\t\tstate.aors = action.payload;\r\n\t\t\t})\r\n\t\t\t.addCase(fetchReportReasons.fulfilled, (state, action) => {\r\n\t\t\t\tstate.reportReasons = action.payload;\r\n\t\t\t})\r\n\t\t\t.addCase(setReplyRead.fulfilled, (state, action) => {\r\n\t\t\t\tstate.notices = [\r\n\t\t\t\t\t...state.notices.map((notice) => {\r\n\t\t\t\t\t\tif (notice.id === action.payload.noticeId) {\r\n\t\t\t\t\t\t\tnotice.replies = notice.replies.map((reply) => {\r\n\t\t\t\t\t\t\t\tif (reply.id === action.payload.replyId) {\r\n\t\t\t\t\t\t\t\t\treply.isRead = true;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\treturn reply;\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\treturn notice;\r\n\t\t\t\t\t}),\r\n\t\t\t\t];\r\n\t\t\t})\r\n\t\t\t.addCase(addNotice.fulfilled, (state, action) => {\r\n\t\t\t\tstate.notices = [action.payload.notice, ...state.notices];\r\n\t\t\t})\r\n\t\t\t.addCase(addNoticeReply.fulfilled, (state, action) => {\r\n\t\t\t\tstate.notices.find((notice) => notice.id === action.payload.notice.id)?.replies.push(action.payload.notice.replies[action.payload.notice.replies?.length - 1]);\r\n\t\t\t})\r\n\t\t\t.addCase(fetchNoteHeaders.fulfilled, (state, action) => {\r\n\t\t\t\tstate.noteHeaders = action.payload;\r\n\t\t\t});\r\n\t},\r\n});\r\n\r\nexport const selectInvestigationDispositionsFromStore = createSelector(\r\n\t(state: RootState) => state.compliance.investigationDispositions,\r\n\t(investigationDispositions) => {\r\n\t\tif (investigationDispositions) {\r\n\t\t\treturn investigationDispositions;\r\n\t\t}\r\n\t}\r\n);\r\nexport const selectCitationDispositions = createSelector(\r\n\t(state: RootState) => state.compliance.citationDispositions,\r\n\t(citationDispositions) => {\r\n\t\tif (citationDispositions) {\r\n\t\t\treturn citationDispositions;\r\n\t\t}\r\n\t}\r\n);\r\n\r\nexport const selectCaseFromStore = createSelector(\r\n\t(state: RootState) => state.compliance.complianceCase,\r\n\t(complianceCase) => {\r\n\t\tif (complianceCase) {\r\n\t\t\treturn complianceCase;\r\n\t\t}\r\n\t}\r\n);\r\nexport const selectNoticesFromStore = createSelector(\r\n\t(state: RootState) => state.compliance.notices,\r\n\t(notices) => {\r\n\t\tif (notices) {\r\n\t\t\treturn notices;\r\n\t\t}\r\n\t}\r\n);\r\nexport const selectCitationFromStore = createSelector(\r\n\t(state: RootState) => state.compliance.notices,\r\n\t(notices) => {\r\n\t\tif (notices.filter((notice) => notice.noticeType === NoticeType.Citation).length > 0) {\r\n\t\t\treturn notices.filter((notice) => notice.noticeType === NoticeType.Citation)[0];\r\n\t\t}\r\n\t}\r\n);\r\nexport const selectCitationNoticeFromStore = createSelector(\r\n\t(state: RootState) => state.compliance.notices,\r\n\t(notices) => {\r\n\t\tif (notices) {\r\n\t\t\treturn notices.filter((notice) => notice.noticeType === NoticeType.Citation);\r\n\t\t}\r\n\t}\r\n);\r\nexport const selectWarningNoticeFromStore = createSelector(\r\n\t(state: RootState) => state.compliance.notices,\r\n\t(notices) => {\r\n\t\tif (notices) {\r\n\t\t\treturn notices.filter((notice) => notice.noticeType === NoticeType.Warning);\r\n\t\t}\r\n\t}\r\n);\r\nexport const selectAnalystsFromStore = createSelector(\r\n\t(state: RootState) => state.compliance.analysts,\r\n\t(analysts) => {\r\n\t\tif (analysts) {\r\n\t\t\treturn analysts.slice().sort((a: IAppUser, b: IAppUser) => a.firstName.localeCompare(b.firstName));\r\n\t\t}\r\n\t}\r\n);\r\nexport const selectAorsFromStore = createSelector(\r\n\t(state: RootState) => state.compliance.aors,\r\n\t(aors) => {\r\n\t\tif (aors) {\r\n\t\t\treturn aors;\r\n\t\t}\r\n\t}\r\n);\r\n\r\nexport const selectReportReasonsFromStore = createSelector(\r\n\t(state: RootState) => state.compliance.reportReasons,\r\n\t(reportReasons) => {\r\n\t\tif (reportReasons) {\r\n\t\t\treturn reportReasons;\r\n\t\t}\r\n\t}\r\n);\r\n\r\nexport const selectNoticesLoadingFromStore = createSelector(\r\n\t(state: RootState) => state.compliance.loadingNotices,\r\n\t(loadingNotices) => {\r\n\t\treturn loadingNotices;\r\n\t}\r\n);\r\n\r\nexport const selectRuleWikiAnalysts = createSelector(\r\n\t(state: RootState) => state.compliance.analysts,\r\n\t(analysts) => {\r\n\t\tif (analysts) {\r\n\t\t\treturn analysts.map((user) => {\r\n\t\t\t\treturn { id: user.id, display: user.displayName };\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n);\r\n\r\nexport const selectNoteHeadlinesFromStore = createSelector(\r\n\t(state: RootState) => state.compliance.noteHeaders,\r\n\t(noteHeaders) => {\r\n\t\tif (noteHeaders) {\r\n\t\t\treturn noteHeaders;\r\n\t\t}\r\n\t}\r\n);\r\n// Action creators are generated for each case reducer function\r\nexport const { getCase, getInvestigationDispositions, getNotices, getComplianceAnalysts, getAors } = complianceSlice.actions;\r\n\r\nconst { reducer } = complianceSlice;\r\nexport default reducer;\r\n","import { createContext } from 'react';\r\nimport { createContextualCan } from '@casl/react';\r\n\r\nexport const AbilityContext = createContext();\r\nexport const Can = createContextualCan(AbilityContext.Consumer);\r\n","import {LogLevel} from \"@azure/msal-browser\";\r\n\r\nconst ua = window.navigator.userAgent;\r\nconst msie = ua.indexOf(\"MSIE \");\r\nconst msie11 = ua.indexOf(\"Trident/\");\r\nconst msedge = ua.indexOf(\"Edge/\");\r\nconst firefox = ua.indexOf(\"Firefox\");\r\nconst isIE = msie > 0 || msie11 > 0;\r\nconst isEdge = msedge > 0;\r\nconst isFirefox = firefox > 0; // Only needed if you need to support the redirect flow in Firefox incognito\r\n\r\n//AD tenant ID config\r\nexport const msalConfig = {\r\n auth: {\r\n clientId: \"5ee98f62-d458-4997-a277-3d5432054437\",\r\n authority: \"https://login.microsoftonline.com/d8a15cf7-32a2-49ab-890e-b12bb322405b\",\r\n redirectUri: \"/\",\r\n postLogoutRedirectUri: \"/\"\r\n },\r\n cache: {\r\n cacheLocation: \"localStorage\",\r\n storeAuthStateInCookie: isIE || isEdge || isFirefox\r\n },\r\n system: {\r\n loggerOptions: {\r\n loggerCallback: (level: LogLevel, message: string, containsPii: boolean) => {\r\n if (containsPii) {\r\n return;\r\n }\r\n switch (level) {\r\n case LogLevel.Error:\r\n console.error(message);\r\n return;\r\n case LogLevel.Info:\r\n console.info(message);\r\n return;\r\n case LogLevel.Verbose:\r\n console.debug(message);\r\n return;\r\n case LogLevel.Warning:\r\n console.warn(message);\r\n return;\r\n default:\r\n return;\r\n }\r\n }\r\n }\r\n }\r\n};\r\n\r\n// Add here scopes for id token to be used at MS Identity Platform endpoints.\r\nexport const loginRequest = {\r\n scopes: ['openid', 'profile', 'User.Read']\r\n};\r\n\r\n// REVIEW: These different scopes are required to grab the initial access token to use for the various API's.\r\n// 'msScope' (graph scope is to obtain user's profile + info) ATM will be the only one used/needed.\r\n\r\nexport const notificationScope = {\r\n scopes: ['https://crmlsnotification.azurewebsites.net/.default']\r\n};\r\n\r\nexport const maceScope = {\r\n scopes: ['https://macewindu.azurewebsites.net/.default']\r\n};\r\n\r\nexport const localScope = {\r\n scopes: ['26cf3f5c-cde4-4e31-bf07-2c1349ba5724/api-access']\r\n}\r\n\r\nexport const msScope = {\r\n scopes: ['https://graph.microsoft.com/User.ReadBasic.All']\r\n}\r\n\r\nexport const membershipScope = {\r\n scopes: ['https://membershipdirectory.azurewebsites.net/.default']\r\n};\r\n\r\nexport const workflowScope = {\r\n\tscopes: [\"api://workflow/.default\"],\r\n};\r\n\r\nexport const powerBiScope = {\r\n scopes: [\"https://analysis.windows.net/powerbi/api/Report.Read.All\"],\r\n};\r\n\r\nexport const graphConfig = {\r\n graphMeEndpoint: \"https://graph.microsoft.com/v1.0/me\"\r\n};\r\n","import Swal from \"sweetalert2\";\r\n\r\nexport const swalWithBootstrapButtons = Swal.mixin({\r\n customClass: {\r\n confirmButton: 'btn btn-success btn-square',\r\n cancelButton: 'btn btn-danger btn-square ml-2'\r\n },\r\n buttonsStyling: false\r\n})","import React, { useEffect, useRef, useState, useCallback } from \"react\";\r\nimport { AutoCompleteComponent } from \"@syncfusion/ej2-react-dropdowns\";\r\nimport \"@syncfusion/ej2-base/styles/bootstrap.css\";\r\nimport \"@syncfusion/ej2-react-inputs/styles/bootstrap.css\";\r\nimport \"@syncfusion/ej2-react-dropdowns/styles/bootstrap.css\";\r\nimport \"@syncfusion/ej2-popups/styles/bootstrap.css\";\r\nimport \"@syncfusion/ej2-inputs/styles/bootstrap.css\";\r\nimport { Query } from \"@syncfusion/ej2-data\";\r\nimport useQuery from \"../Hooks/Query\";\r\nimport { debounce } from \"lodash\";\r\nimport axios from \"axios\";\r\nimport { useAppSelector } from \"../../app/hooks\";\r\nimport { getEnvironment } from \"../../features/userFeature/userSlice\";\r\n\r\nconst MemberLookup = ({ memberSelected, selectedMemberObj = (member) => {}, getFullObject = false, placeholder = \"Find a contact (optional)\", defaultValue = \"\", autoFocus = false, useTaEndpoint = false }) => {\r\n\tconst [helper, setHelper] = useState(false);\r\n\tuseQuery(setHelper);\r\n\tlet listObj = useRef();\r\n\tconst [isSearching, setIsSearching] = useState(true);\r\n\tconst [cancelToken, setCancelToken] = useState(undefined);\r\n\tconst environment = useAppSelector(getEnvironment);\r\n\r\n\tconst optionSelected = (event) => {\r\n\t\tlet memberData = event.itemData;\r\n\r\n\t\tif (memberData?.id || memberData?.result) {\r\n\t\t\t// @Note - memberData.id is a json stringified object - we need to parse it to get the member id/data\r\n\t\t\tif (!getFullObject) {\r\n\t\t\t\tmemberSelected(JSON.parse(memberData.id).contactId);\r\n\t\t\t} else {\r\n\t\t\t\tif (memberData.result) {\r\n\t\t\t\t\tselectedMemberObj(memberData.result);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tselectedMemberObj(JSON.parse(memberData.id));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\t// Set the callback values blank when clearing the dropdown input or when there is not member data\r\n\t\t\tmemberSelected(\"\");\r\n\t\t\tif (selectedMemberObj !== undefined) {\r\n\t\t\t\tselectedMemberObj(\"\");\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tconst searchStringChanged = (args) => {\r\n\t\tif (!args.text.length) {\r\n\t\t\tmemberSelected(\"\");\r\n\t\t}\r\n\t\tif (args.text.length < 3) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tlistObj.current.showSpinner();\r\n\r\n\t\tlet query = new Query();\r\n\t\t//frame the query based on search string with filter type.\r\n\t\tquery = args.text !== \"\" ? query.where(\"name\", \"contains\", args.text, true) : query;\r\n\r\n\t\tif (args.text.length > 0 && helper) {\r\n\t\t\tlistObj.current.showSpinner();\r\n\t\t\thelper.criteria = [\r\n\t\t\t\t{\r\n\t\t\t\t\tfield: \"searchIndex\",\r\n\t\t\t\t\top: 10, // contains\r\n\t\t\t\t\tvalues: [args.text],\r\n\t\t\t\t},\r\n\t\t\t];\r\n\t\t\tsetIsSearching(true);\r\n\t\t\thelper\r\n\t\t\t\t.fetchAudienceMembers()\r\n\t\t\t\t.then(\r\n\t\t\t\t\t(result) => {\r\n\t\t\t\t\t\targs.updateData(\r\n\t\t\t\t\t\t\tresult.results.map((result) => {\r\n\t\t\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\t\t\tid: JSON.stringify(result),\r\n\t\t\t\t\t\t\t\t\tlabel: result.firstName + \" \" + result.lastName + \" - \" + result.id + \" - \" + result.emailAddress,\r\n\t\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\t}, query)\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t\tlistObj.current.showClearButton = true;\r\n\t\t\t\t\t},\r\n\t\t\t\t\t(error) => {\r\n\t\t\t\t\t\tconsole.log(error);\r\n\t\t\t\t\t\targs.updateData([], query);\r\n\t\t\t\t\t}\r\n\t\t\t\t)\r\n\t\t\t\t.then((r) => {\r\n\t\t\t\t\tlistObj.current.hideSpinner();\r\n\t\t\t\t\tlistObj.current.showClearButton = true;\r\n\t\t\t\t\tsetIsSearching(false);\r\n\t\t\t\t});\r\n\t\t} else {\r\n\t\t\tlistObj.current.hideSpinner();\r\n\t\t}\r\n\t};\r\n\r\n\tconst searchStringChangedTa = (args) => {\r\n\t\tif (!args.text.length) {\r\n\t\t\tmemberSelected(\"\");\r\n\t\t}\r\n\t\tif (args.text.length < 3) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (typeof cancelToken != typeof undefined) {\r\n\t\t\tcancelToken.cancel(\"Operation canceled due to new request.\");\r\n\t\t}\r\n\t\tconst newToken = axios.CancelToken.source();\r\n\t\tsetCancelToken(newToken);\r\n\r\n\t\tlistObj.current.showSpinner();\r\n\r\n\t\tlet query = new Query();\r\n\t\t//frame the query based on search string with filter type.\r\n\t\tquery = args.text !== \"\" ? query.where(\"name\", \"contains\", args.text, true) : query;\r\n\t\tif (args.text.length > 0 && helper) {\r\n\t\t\thelper.criteria = [\r\n\t\t\t\t{\r\n\t\t\t\t\tfield: \"searchIndex\",\r\n\t\t\t\t\top: 10, // contains\r\n\t\t\t\t\tvalues: [args.text],\r\n\t\t\t\t},\r\n\t\t\t];\r\n\t\t\tsetIsSearching(true);\r\n\t\t\targs.updateData([], query);\r\n\t\t\tlistObj.current.showSpinner();\r\n\t\t\taxios\r\n\t\t\t\t.get(`https://membership${environment === \"staging\" || environment === \"production\" ? \"api-prod\" : \"-dev\"}.azurewebsites.net/api/app/Contacts/ta/nonkeyword/${helper.criteria[0].values[0]}?activeOnly=false`, {\r\n\t\t\t\t\t...helper.membership_config,\r\n\t\t\t\t\tcancelToken: newToken.token,\r\n\t\t\t\t})\r\n\t\t\t\t.then(\r\n\t\t\t\t\t(result) => {\r\n\t\t\t\t\t\targs.updateData(\r\n\t\t\t\t\t\t\tresult.data.results.map((result) => {\r\n\t\t\t\t\t\t\t\tlet label = result.firstName + \" \" + result.lastName + \" - \" + result.loginId;\r\n\t\t\t\t\t\t\t\tif (result.memberStateLicense) {\r\n\t\t\t\t\t\t\t\t\tlabel = label + \" - \" + result.memberStateLicense;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\t\t\tresult: result,\r\n\t\t\t\t\t\t\t\t\tlabel: label,\r\n\t\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\t}, query)\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t\tlistObj.current.showClearButton = true;\r\n\t\t\t\t\t\treturn result;\r\n\t\t\t\t\t},\r\n\t\t\t\t\t(error) => {\r\n\t\t\t\t\t\targs.updateData([], query);\r\n\t\t\t\t\t}\r\n\t\t\t\t)\r\n\t\t\t\t.then((r) => {\r\n\t\t\t\t\tlistObj.current.hideSpinner();\r\n\t\t\t\t\tlistObj.current.showClearButton = true;\r\n\t\t\t\t\tsetIsSearching(false);\r\n\t\t\t\t\tif (!r?.data.results?.length) {\r\n\t\t\t\t\t\targs.updateData([], query);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t} else {\r\n\t\t\tlistObj.current.hideSpinner();\r\n\t\t}\r\n\t};\r\n\tconst debouncedHandleSearch = debounce(searchStringChangedTa, 500);\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default MemberLookup;\r\n","import React, { useState, useEffect } from \"react\";\r\n// syncfusion imports\r\nimport \"@syncfusion/ej2-base/styles/bootstrap.css\";\r\nimport \"@syncfusion/ej2-buttons/styles/bootstrap.css\";\r\nimport \"@syncfusion/ej2-inputs/styles/bootstrap.css\";\r\nimport \"@syncfusion/ej2-react-dropdowns/styles/bootstrap.css\";\r\nimport useQuery from \"../Hooks/Query\";\r\nimport ThemeLoader from \"./ThemeLoader\";\r\nimport { isArray } from \"lodash\";\r\n\r\nconst GenericSelect = ({ id, onChange, onBlur, value, resource_name, service_name, resource_label = \"One\", cssClass = \"form-control\", select_field = \"name\", valueKey = \"id\" }) => {\r\n\tconst [items, setItems] = useState([]);\r\n\tconst [error, setError] = useState(null);\r\n\tconst [isLoaded, setIsLoaded] = useState(false);\r\n\tconst [helper, setHelper] = useState(false);\r\n\tuseQuery(setHelper);\r\n\r\n\tconst userFilters = [\r\n\t\t{ service: \"mace\", department: [\"marketing\", \"training\"] },\r\n\t\t{ service: \"training\", department: \"training\" },\r\n\t];\r\n\r\n\tuseEffect(() => {\r\n\t\tif (helper) {\r\n\t\t\tfetchData();\r\n\t\t}\r\n\t}, [helper]);\r\n\r\n\tconst fetchData = () => {\r\n\t\tsetIsLoaded(false);\r\n\t\tswitch (service_name) {\r\n\t\t\tcase \"notification\":\r\n\t\t\t\thelper.setNotification();\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"membership\":\r\n\t\t\t\thelper.setMembership();\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"mace\":\r\n\t\t\t\thelper.setMace();\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"training\":\r\n\t\t\tdefault:\r\n\t\t\t\thelper.setTraining();\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\thelper.criteria = [];\r\n\t\thelper.orderBy = [\r\n\t\t\t{\r\n\t\t\t\tfield: select_field,\r\n\t\t\t\tdirection: 0,\r\n\t\t\t},\r\n\t\t];\r\n\r\n\t\thelper.fetchAllData(resource_name).then(\r\n\t\t\t(result) => {\r\n\t\t\t\tlet results = result;\r\n\r\n\t\t\t\t// Filter user dropdown to relevant department users\r\n\t\t\t\tif (resource_name === \"user\" && userFilters.find((filter) => filter.service === service_name)) {\r\n\t\t\t\t\tlet filteredUsers;\r\n\t\t\t\t\tconst departmentFilter = userFilters.find((filter) => filter.service === service_name);\r\n\r\n\t\t\t\t\tif (departmentFilter && isArray(departmentFilter.department)) {\r\n\t\t\t\t\t\tfilteredUsers = result.filter((r) => departmentFilter.department.includes(r.department.toLowerCase()));\r\n\t\t\t\t\t} else if (departmentFilter) {\r\n\t\t\t\t\t\tfilteredUsers = results.filter((r) => r.department.toLowerCase() === departmentFilter.department);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (filteredUsers.length) {\r\n\t\t\t\t\t\tresults = filteredUsers;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tresults = results.sort((a, b) => (a.lastName > b.lastName ? 1 : -1));\r\n\t\t\t\t\tresults.map((result) => {\r\n\t\t\t\t\t\treturn (result[\"displayName\"] = result.displayName ?? result.firstName + \" \" + result.lastName);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\tsetItems(results);\r\n\t\t\t\tsetIsLoaded(true);\r\n\t\t\t},\r\n\t\t\t(error) => {\r\n\t\t\t\tsetError(error);\r\n\t\t\t\tsetIsLoaded(true);\r\n\t\t\t}\r\n\t\t);\r\n\t};\r\n\r\n\tif (error) {\r\n\t\treturn
    Error: {error.message ?? \"Could not retrieve results\"}
    ;\r\n\t} else if (!isLoaded) {\r\n\t\treturn ;\r\n\t} else {\r\n\t\treturn (\r\n\t\t\t\r\n\t\t);\r\n\t}\r\n};\r\n\r\nexport default GenericSelect;\r\n","import React, {useState} from 'react';\r\n\r\n/**** USAGE EXAMPLE \r\n * \r\n * const testAction = () => {\r\n * console.log('TRIGGERED TEST ACTION')\r\n * }\r\n * \r\n * const itemActions = [\r\n * { label: 'Custom Action', iconClass: 'fas fa-check text-info', callback: testAction },\r\n * { label: 'Another Action', iconClass: 'fas fa-check-circle text-success', callback: anotherAction }\r\n * ]\r\n * \r\n * \r\n * \r\n * ******/\r\n\r\n\r\nfunction GenericActionsMenu({actions}: {actions: any[] | undefined}) {\r\n const [isActive, setIsActive] = useState(false);\r\n let className = 'crmls-actions-dropdown-container';\r\n className += (isActive) ? ' active' : '';\r\n\r\n const toggleActiveState = () => {\r\n if (isActive) {\r\n closeMenu();\r\n } else {\r\n setIsActive(!isActive);\r\n document.addEventListener('click', closeMenu);\r\n }\r\n }\r\n\r\n const closeMenu = () => {\r\n setIsActive(false);\r\n document.removeEventListener('click', closeMenu);\r\n }\r\n\r\n if (actions && actions.length) {\r\n return (\r\n
    \r\n
    \r\n {isActive &&\r\n
    \r\n {actions.map((action, i) => {\r\n return (
    {}}>{(action?.iconClass) ? : ''}{action.label}
    )\r\n })}\r\n
    \r\n } \r\n
    \r\n );\r\n }\r\n return <>;\r\n}\r\n\r\nexport default GenericActionsMenu;\r\n","import React from \"react\";\r\n\r\nexport const IconText: { [key: string]: string } = {\r\n\tpublished: \"fas fa-book text-info\",\r\n\tpending: \"fas fa-clock text-warning\",\r\n\tsending: \"fas fa-paper-plane text-success\",\r\n\tcompleted: \"far fa-check-circle text-success\",\r\n\tfinalized: \"far fa-check-circle text-success\",\r\n\tapproved: \"fa fa-check text-success\",\r\n\tcancelled: \"far fa-times-circle text-danger\",\r\n\trejected: \"far fa-times-circle text-danger\",\r\n\texpired: \"fas fa-clock text-danger\",\r\n\tarchived: \"fa fa-trash text-muted\",\r\n\tdraft: \"fas fa-hammer text-muted\",\r\n\tdeleted: \"fa fa-trash text-danger\",\r\n\tunknown: \"fa fa-question text-muted\",\r\n};\r\n\r\nexport const StatusIcon = (props: any) => {\r\n\tconst status = props.object.status ? props.object.status.toLowerCase() : \"unknown\";\r\n\tconst statusIconText = IconText[status] || \"fa fa-question text-muted\";\r\n\treturn ;\r\n};\r\n\r\n/*\r\nSYSTEM STATUS OPTIONS\r\n=====================\r\nMACE:\r\n---------------------\r\nCAMPAIGN STATUSES\r\ndraft\r\npending\r\napproved\r\nsending\r\ncompleted\r\ncancelled\r\narchived\r\nrejected\r\nexpired\r\ndeleted\r\n\r\nTRAINING:\r\n---------------------\r\nCLASS STATUSES\r\ndraft\r\npublished\r\nfinalized\r\ncancelled\r\n*/\r\n","import React, {useState, useEffect} from \"react\";\r\nimport Card from \"./Card\";\r\n\r\nconst DashRollupStats = ({dateRange, campaignId, helper, completed, expected_count}) => {\r\n const [delivered, setDelivered] = useState(0);\r\n const [open, setOpen] = useState(0);\r\n const [bounce, setBounce] = useState(0);\r\n const [unsubscribe, setUnsubscribe] = useState(0);\r\n const [clicks, setClicks] = useState(0);\r\n\r\n const parseResults = (results) => {\r\n let data = results.webhookEventStats;\r\n data.forEach((point) => {\r\n let c = point.count;\r\n\r\n if (['delivered', 'processed', 'dropped'].includes(point.event)) {\r\n // use the unique context events\r\n c = point.uniqueContextEvents;\r\n } else if (['click','open'].includes(point.event)) {\r\n // if this is opens and clicks, use the unique members count and not the total\r\n c = point.uniqueMembers;\r\n }\r\n\r\n switch (point.event) {\r\n case 'delivered':\r\n setDelivered(c)\r\n break;\r\n case 'open':\r\n setOpen(c)\r\n break;\r\n case 'bounce':\r\n setBounce(c)\r\n break;\r\n case 'unsubscribe':\r\n setUnsubscribe(c)\r\n break;\r\n case 'click':\r\n setClicks(c)\r\n break;\r\n default:\r\n break;\r\n }\r\n });\r\n }\r\n\r\n useEffect(() => {\r\n let criteria = {...dateRange}\r\n if (campaignId && campaignId.length) {\r\n criteria.emailContextId = campaignId;\r\n }\r\n\r\n if (helper) {\r\n console.log(\"fetching rollup\");\r\n helper.setNotification();\r\n helper.fetchReportData(criteria)\r\n .then(\r\n (result) => {\r\n console.log(result);\r\n if (result.isSuccessful) {\r\n parseResults(result.results[0]);\r\n }\r\n }\r\n )\r\n }\r\n }, [dateRange, JSON.stringify(helper)])\r\n\r\n const generateLink = (event) => {\r\n if (completed) {\r\n return false;\r\n } else if (campaignId) {\r\n return \"/communications/reports?event=\" + event + \"&campaign_id=\" + campaignId + \"&start=\" + dateRange.startDate;\r\n } else {\r\n return \"/communications/reports?event=\" + event + \"&start=\" + dateRange.startDate;\r\n }\r\n }\r\n\r\n return (\r\n <>\r\n \r\n \r\n {completed &&\r\n \r\n }\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default DashRollupStats;","import React, { useEffect, useRef, useState } from \"react\";\r\nimport { AccumulationChartComponent, AccumulationSeriesCollectionDirective, AccumulationSeriesDirective, AccumulationLegend, PieSeries, AccumulationDataLabel, Inject } from \"@syncfusion/ej2-react-charts\";\r\nimport { getPalette } from \"../Utilities\";\r\nimport dayjs from \"dayjs\";\r\nimport ThemeLoader from \"./ThemeLoader\";\r\n\r\nconst ReportDonutChart = ({ dateRange, campaignType, campaignId, helper, showTextStats = false, aorShortname }) => {\r\n\tconst criteria = useRef();\r\n\tconst [items, setItems] = useState({});\r\n\tconst [error, setError] = useState(null);\r\n\tconst [isLoaded, setIsLoaded] = useState(false);\r\n\tconst [isEmpty, setIsEmpty] = useState(false);\r\n\tconst palette = getPalette();\r\n\r\n\tuseEffect(() => {\r\n\t\tif (helper === null) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet c = {\r\n\t\t\tstartDate: dayjs(dateRange.startDate).startOf(\"day\").toISOString(),\r\n\t\t\tendDate: dayjs(dateRange.endDate).endOf(\"day\").toISOString(),\r\n\t\t};\r\n\r\n\t\tif (campaignId && campaignId.length) {\r\n\t\t\tc.emailContextId = campaignId;\r\n\t\t}\r\n\r\n\t\tif (aorShortname && aorShortname.length) {\r\n\t\t\tc.audienceCriteria = [\r\n\t\t\t\t{\r\n\t\t\t\t\tfield: \"AorShortName\",\r\n\t\t\t\t\top: \"Equal\",\r\n\t\t\t\t\tvalues: [aorShortname],\r\n\t\t\t\t},\r\n\t\t\t];\r\n\t\t}\r\n\r\n\t\tif (campaignType && campaignType.length) {\r\n\t\t\tc.emailCategory = campaignType;\r\n\t\t}\r\n\r\n\t\tif (criteria.current !== c || criteria.current === undefined) {\r\n\t\t\tfetchData(c);\r\n\t\t\tcriteria.current = c;\r\n\t\t}\r\n\t}, [dateRange, campaignType, campaignId, aorShortname, JSON.stringify(helper)]);\r\n\r\n\tconst parseResults = (results) => {\r\n\t\tlet events_we_track = [\"sent\", \"delivered\", \"priorbounced\", \"priorunsubscribed\"];\r\n\t\tlet data = results.webhookEventStats;\r\n\t\tlet d_data = [];\r\n\r\n\t\tdata.forEach((point) => {\r\n\t\t\tlet c = point.count;\r\n\t\t\tlet label = \"\";\r\n\r\n\t\t\tif (events_we_track.includes(point.event)) {\r\n\t\t\t\tswitch (point.event) {\r\n\t\t\t\t\tcase \"sent\":\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tlabel = \"Sent\";\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"delivered\":\r\n\t\t\t\t\t\tlabel = \"Delivered\";\r\n\t\t\t\t\t\tc = point.uniqueContextEvents;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"priorbounced\":\r\n\t\t\t\t\t\tlabel = \"Prior Bounce\";\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"priorunsubscribed\":\r\n\t\t\t\t\t\tlabel = \"Prior Unsubscribe\";\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet shape = {\r\n\t\t\t\t\tx: label,\r\n\t\t\t\t\ty: c,\r\n\t\t\t\t};\r\n\t\t\t\td_data.push(shape);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif (d_data.length === 0) {\r\n\t\t\tsetIsEmpty(true);\r\n\t\t} else {\r\n\t\t\tsetIsEmpty(false);\r\n\t\t}\r\n\r\n\t\treturn d_data;\r\n\t};\r\n\r\n\tconst fetchData = (criteria) => {\r\n\t\tsetIsLoaded(false);\r\n\t\tsetError(null);\r\n\t\tif (helper) {\r\n\t\t\thelper.setNotification();\r\n\t\t\thelper.fetchReportData(criteria).then(\r\n\t\t\t\t(result) => {\r\n\t\t\t\t\tif (result.isSuccessful) {\r\n\t\t\t\t\t\tsetError(null);\r\n\t\t\t\t\t\tsetIsLoaded(true);\r\n\t\t\t\t\t\tsetItems(parseResults(result.results[0]));\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tsetError(result.message);\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t(error) => {\r\n\t\t\t\t\tsetIsLoaded(true);\r\n\t\t\t\t\tsetError(error.message);\r\n\t\t\t\t}\r\n\t\t\t);\r\n\t\t}\r\n\t};\r\n\r\n\tif (error) {\r\n\t\treturn
    Error: {error}
    ;\r\n\t} else if (!isLoaded) {\r\n\t\treturn ;\r\n\t} else {\r\n\t\tif (isEmpty) {\r\n\t\t\treturn

    No results found

    ;\r\n\t\t} else {\r\n\t\t\treturn (\r\n\t\t\t\t<>\r\n\t\t\t\t\t {\r\n\t\t\t\t\t\t\tif (args.point.x === \"Sent\") {\r\n\t\t\t\t\t\t\t\targs.fill = palette[1];\r\n\t\t\t\t\t\t\t} else if (args.point.x === \"Delivered\") {\r\n\t\t\t\t\t\t\t\targs.fill = palette[4];\r\n\t\t\t\t\t\t\t} else if (args.point.x === \"Prior Bounce\") {\r\n\t\t\t\t\t\t\t\targs.fill = palette[2];\r\n\t\t\t\t\t\t\t} else if (args.point.x === \"Prior Unsubscribe\") {\r\n\t\t\t\t\t\t\t\targs.fill = palette[3];\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t{items.length && showTextStats && (\r\n\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t
    Details:
    \r\n\t\t\t\t\t\t\t
      \r\n\t\t\t\t\t\t\t\t{items.map((item, index) => {\r\n\t\t\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t\t\t
    • \r\n\t\t\t\t\t\t\t\t\t\t\t{item.x}: {item.y}\r\n\t\t\t\t\t\t\t\t\t\t
    • \r\n\t\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\t})}\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t)}\r\n\t\t\t\t\r\n\t\t\t);\r\n\t\t}\r\n\t}\r\n};\r\n\r\nexport default ReportDonutChart;\r\n","import React, { useState } from 'react';\r\n\r\nconst DashTimeframe = ({ label, changeTimeframe }) => {\r\n const [active, setActive] = useState('week');\r\n\r\n const changeState = (timeframe) => {\r\n setActive(timeframe);\r\n changeTimeframe(timeframe);\r\n }\r\n\r\n return (\r\n <>\r\n
    \r\n
    \r\n
    \r\n
    \r\n

    {label}

    \r\n
    \r\n
    \r\n
    \r\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 DashTimeframe;\r\n","import React from 'react';\r\nimport GenericSyncfusionTable from \"../../SubComponents/GenericSyncfusion/GenericSyncfusionTable\";\r\nimport * as Yup from \"yup\";\r\nimport {SyncfusionOptions} from \"../../Reporting/Configuration\";\r\nimport {StatusIcon} from \"../../../Widgets/StatusIcon\";\r\nimport {store} from \"../../../../app/store\";\r\n\r\nexport const campaignStatuses = ['UNDEFINED','DRAFT','PENDING','APPROVED','SENDING','COMPLETED','CANCELLED','ARCHIVED','REJECTED','EXPIRED','DELETED'];\r\n\r\nconst GetUserDept = () => {\r\n const state = store.getState();\r\n return state.user.department.department;\r\n}\r\n\r\nexport const CampaignResource: SyncfusionOptions = {\r\n resourceType: 'marketing',\r\n service: 'mace',\r\n defaultPageSize: 50,\r\n searchField: 'name',\r\n showDelete: true,\r\n showClone: true,\r\n resourceName: 'campaign',\r\n title: 'Campaigns',\r\n singularTitle: 'Campaign',\r\n defaultSort: {\r\n columns: [\r\n {\r\n field: 'executionDate',\r\n direction: 'Descending'\r\n }\r\n ]\r\n },\r\n defaultQuery: [ // Hide deleted items in default view\r\n {\r\n field: 'status',\r\n op: 6,\r\n values: ['DELETED']\r\n }\r\n ],\r\n routePath: 'communications/campaigns',\r\n\r\n selectors: [\r\n {\r\n id: \"audienceId\",\r\n label: \"Audience\",\r\n cssClass: \"col-md-2 ml-2\",\r\n service: \"mace\",\r\n },\r\n {\r\n id: 'assignedToId',\r\n label: 'Assigned To',\r\n cssClass: 'col-md-2 ml-2',\r\n service: 'mace',\r\n selectField: 'displayName',\r\n },\r\n {\r\n id: 'campaignType',\r\n label: 'Campaign Type',\r\n cssClass: 'col-md-2 ml-2',\r\n service: 'mace',\r\n valueKey: 'name',\r\n dynamicDefault: () => {\r\n let dept = GetUserDept();\r\n\r\n switch (dept) {\r\n case 'Marketing':\r\n return 'MARKETING';\r\n }\r\n return undefined;\r\n }\r\n },\r\n {\r\n id: 'status',\r\n label: 'Status',\r\n cssClass: 'col-md-2 ml-2',\r\n service: 'mace',\r\n },\r\n ],\r\n\r\n columns: [\r\n {\r\n id: 'assignedToId',\r\n label: 'Assigned To',\r\n dataType: 'select',\r\n selectResource: 'user',\r\n showInTable: false,\r\n validation: Yup.string().required('This field is required'),\r\n },\r\n {\r\n id: 'name',\r\n label: 'Campaign',\r\n dataType: 'none',\r\n validation: Yup.string().required('This field is required'),\r\n },\r\n {\r\n id: 'campaignType',\r\n label: 'Type',\r\n dataType: 'select',\r\n selectResource: 'campaignType',\r\n validation: Yup.string().required('This field is required'),\r\n hideAtMedia: '1200',\r\n },\r\n {\r\n id: 'executionDate',\r\n label: 'Execution Date',\r\n dataType: 'date',\r\n validation: Yup.string().required('This field is required'),\r\n hideAtMedia: '1200'\r\n },\r\n {\r\n id: 'sent',\r\n label: 'Sent',\r\n dataType: 'none',\r\n validation: Yup.string().required('This field is required'),\r\n textAlign: 'Right',\r\n hideAtMedia: '767'\r\n },\r\n {\r\n id: 'sandbox',\r\n label: 'Sandbox',\r\n dataType: 'boolean',\r\n validation: Yup.string().required('This field is required'),\r\n textAlign: 'Center',\r\n hideAtMedia: '767'\r\n },\r\n {\r\n id: 'status',\r\n label: 'Status',\r\n dataType: 'custom',\r\n showOnForm: false,\r\n customComponent: StatusIcon,\r\n hideAtMedia: '767'\r\n },\r\n {\r\n id: 'status',\r\n label: '',\r\n dataType: 'enumSelect',\r\n showInTable: false,\r\n showOnForm: false,\r\n values: campaignStatuses.map((s) => {\r\n return {\r\n value: s,\r\n label: s,\r\n }\r\n }),\r\n },\r\n {\r\n id: \"audienceId\",\r\n label: \"Audience\",\r\n dataType: \"select\",\r\n serviceName: \"mace\",\r\n selectResource: \"Audience\",\r\n showInTable: false,\r\n },\r\n ],\r\n}\r\n\r\nfunction Campaigns() {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n}\r\n\r\nexport default Campaigns;\r\n","import React, {useEffect, useState, useRef} from \"react\";\r\nimport {\r\n ChartComponent, SeriesCollectionDirective, SeriesDirective, Inject, Export,\r\n StackingColumnSeries, DateTime, Legend, Tooltip, DataLabel, Category, Zoom\r\n} from '@syncfusion/ej2-react-charts';\r\nimport dayjs from \"dayjs\";\r\nimport { getPalette, getRange } from \"../Utilities\"\r\nimport ThemeLoader from \"./ThemeLoader\";\r\n\r\nconst DashChartColumns = ({dateRange, timeframe, helper}) => {\r\n const chartInstance = useRef();\r\n const [data, setData] = useState([]);\r\n const [error, setError] = useState(null);\r\n const [isLoaded, setIsLoaded] = useState(false);\r\n const [interval, setInterval] = useState('Days');\r\n const [dateFormat, setDateFormat] = useState();\r\n \r\n const parseResults = (results) => {\r\n let events_we_track = ['delivered', 'open', 'bounce', 'unsubscribe', 'click', 'deferred', 'processed', 'blocked', 'dropped', 'priorbounced', 'priorunsubscribed', 'spamreport', 'sent'];\r\n // jimmy's not returning data for all dates in range so let's figure that out\r\n let d_data = getRange(dayjs().subtract(1, timeframe).toISOString(), dayjs().endOf('day').toISOString(), timeframe, events_we_track);\r\n let data = results.webhookEventStats;\r\n\r\n data.forEach((point) => {\r\n let new_date;\r\n if (timeframe === 'year') {\r\n new_date = new Date(point.year, (point.month - 1), 1);\r\n } else {\r\n new_date = new Date(point.year, (point.month - 1), point.day);\r\n }\r\n let c = point.count;\r\n // check if we already have a data item with this date\r\n let i = d_data.findIndex(element => element.date.getTime() == new_date.getTime());\r\n\r\n if (i > -1) {\r\n d_data[i][point.event] = c;\r\n } else if (events_we_track.includes(point.event)) {\r\n if (['delivered', 'processed', 'dropped'].includes(point.event)) {\r\n // use the unique context events\r\n c = point.uniqueContextEvents;\r\n } else if (['click','open'].includes(point.event)) {\r\n // if this is opens and clicks, use the unique members count and not the total\r\n c = point.uniqueMembers;\r\n }\r\n \r\n let shape = {\r\n date: new_date,\r\n delivered: 0,\r\n open: 0,\r\n bounce: 0,\r\n unsubscribe: 0,\r\n click: 0,\r\n sent: 0,\r\n spamreport: 0,\r\n priorunsubscribed: 0,\r\n priorbounced: 0,\r\n dropped: 0,\r\n blocked: 0,\r\n processed: 0,\r\n deferred: 0\r\n }\r\n // do this nonsense because we need to make sure all the zeros exist per date\r\n shape[point.event] = c;\r\n d_data.push(shape);\r\n }\r\n });\r\n \r\n return d_data;\r\n }\r\n\r\n useEffect(() => {\r\n setIsLoaded(false);\r\n setError(null);\r\n console.log(\"fetching column chart\")\r\n let bucket = 'groupByDay';\r\n let criteria = {...dateRange};\r\n\r\n switch (timeframe) {\r\n case 'week':\r\n setInterval('Days');\r\n setDateFormat('MMM d');\r\n break;\r\n case 'month':\r\n setInterval('Days');\r\n setDateFormat('M/d');\r\n break;\r\n case 'year':\r\n setInterval('Months');\r\n setDateFormat('MMMM');\r\n bucket = 'groupByMonth';\r\n break;\r\n }\r\n\r\n criteria[bucket] = true;\r\n\r\n // set the vars for the query helper\r\n if (helper) {\r\n helper.fetchReportData(criteria)\r\n .then(\r\n (result) => {\r\n if (result.isSuccessful) {\r\n setError(null)\r\n setIsLoaded(true);\r\n setData(parseResults(result.results[0]));\r\n } else {\r\n setError(result.message)\r\n }\r\n },\r\n (error) => {\r\n setIsLoaded(true);\r\n setError(error.message);\r\n }\r\n )\r\n }\r\n }, [timeframe, helper])\r\n\r\n if (error) {\r\n return
    Error: {error}
    ;\r\n } else if (!isLoaded) {\r\n return (\r\n \r\n );\r\n } else {\r\n return (\r\n <>\r\n
    \r\n \r\n \r\n \r\n {/* first group is processed */}\r\n \r\n \r\n {/* second group is sent and unsent (because of prior bounce, prior unsub) */}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {/* third group is delivered, blocked, bounce, deferred, dropped */}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {/**/}\r\n {/**/}\r\n \r\n \r\n {/* fourth group is open, click, spamreport, unsubscribe */}\r\n \r\n \r\n \r\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 DashChartColumns;","import React from \"react\";\r\nimport DashChartColumns from \"./DashChartColumns\";\r\nimport ReportDonutChart from \"./ReportDonutChart\";\r\nimport dayjs from \"dayjs\";\r\n\r\nconst DashChartAnalytics = ({timeframe, helper}) => {\r\n const criteria = {\r\n startDate: dayjs().subtract(1, timeframe).startOf('day').toISOString(),\r\n endDate: dayjs().endOf('day').toISOString()\r\n };\r\n return (\r\n <>\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n );\r\n};\r\n\r\nexport default DashChartAnalytics;","import React from \"react\";\r\nimport {CampaignResource} from \"./Campaigns\";\r\nimport {selectorQueryDefinition} from \"../../Reporting/Configuration\";\r\nimport GenericSyncfusionTable from \"../../SubComponents/GenericSyncfusion/GenericSyncfusionTable\";\r\n\r\nconst CampaignWrapper = ({title, query, pageSize}: {title: string, query: selectorQueryDefinition[], pageSize: number}) => {\r\n let configuration = {...CampaignResource};\r\n configuration.title = title;\r\n configuration.showNew = false;\r\n configuration.defaultQuery = query;\r\n configuration.defaultPageSize = pageSize;\r\n configuration.selectors = [];\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n}\r\n\r\nexport default CampaignWrapper;\r\n","import React, { useState } from 'react';\r\nimport DashRollupStats from \"../../Widgets/DashRollupStats\";\r\nimport DashChartAnalytics from \"../../Widgets/DashChartAnalytics\";\r\nimport DashTimeframe from \"../../Widgets/DashTimeframe\";\r\nimport dayjs from \"dayjs\";\r\nimport useQuery from \"../../Hooks/Query\";\r\nimport {useAppSelector} from \"../../../app/hooks\";\r\nimport {getUserId} from \"../../../features/userFeature/userSlice\";\r\nimport {Link} from \"react-router-dom\";\r\nimport CampaignWrapper from \"./Campaigns/CampaignWrapper\";\r\n\r\nconst CommunicationsDashboard = () => {\r\n const userId = useAppSelector(getUserId);\r\n const [timeframe, setTimeframe] = useState('week');\r\n const changeTimeframe = (tf) => {\r\n setTimeframe(tf);\r\n }\r\n const [helper, setHelper] = useState(false);\r\n useQuery(setHelper);\r\n\r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n );\r\n}\r\n\r\nexport default CommunicationsDashboard;\r\n","import { createAsyncThunk, createSelector, createSlice } from \"@reduxjs/toolkit\";\r\nimport { PublicClientApplication } from \"@azure/msal-browser\";\r\nimport { msalConfig } from \"../../Auth/authProvider\";\r\nimport { ICrmlsUser } from \"../../Auth/CrmlsUser\";\r\nimport { RootState } from \"../../app/store\";\r\nimport { MongoQuery, SubjectRawRule, SubjectType } from \"@casl/ability\";\r\nimport { useAppSelector } from \"../../app/hooks\";\r\nimport { AdminRoles } from \"../../Components/Utilities/Routes\";\r\n\r\nconst pca = new PublicClientApplication(msalConfig);\r\n\r\nexport type tokenType = {\r\n\tmace: string | null;\r\n\tnotification: string | null;\r\n\tmembership: string | null;\r\n\tpowerBi: string | null;\r\n\ttraining: string | null;\r\n\tms: string | null;\r\n\tmemberPortal: string | null;\r\n\tworkflow: string | null;\r\n};\r\n\r\nexport type crmlsUser = {\r\n\tuser: ICrmlsUser | null;\r\n\taccountInfo: any | null;\r\n\tdepartment: any | null;\r\n\tabilities: SubjectRawRule>>[] | undefined;\r\n\tenvironment: \"development\" | \"production\" | \"testing\" | \"staging\";\r\n\ttokens: tokenType;\r\n\taccessRoles: string[];\r\n};\r\n\r\n// Define the initial state using that type\r\nconst initialState: crmlsUser = {\r\n\tuser: null,\r\n\taccountInfo: null,\r\n\tdepartment: null,\r\n\tabilities: [],\r\n\tenvironment: \"development\",\r\n\taccessRoles: [],\r\n\ttokens: {\r\n\t\tmace: \"\",\r\n\t\tnotification: \"\",\r\n\t\tmembership: \"\",\r\n\t\tpowerBi: \"\",\r\n\t\ttraining: \"\",\r\n\t\tms: \"\",\r\n\t\tmemberPortal: \"\",\r\n\t\tworkflow: \"\",\r\n\t},\r\n};\r\n\r\nexport const fetchMaceToken = createAsyncThunk(\"user/fetchMaceToken\", async (arg, thunkAPI) => {\r\n\tconst request = {\r\n\t\tscopes: [\"https://macewindu.azurewebsites.net/.default\"],\r\n\t};\r\n\r\n\treturn await pca\r\n\t\t.acquireTokenSilent(request)\r\n\t\t.then((response) => {\r\n\t\t\tthunkAPI.dispatch(getUserDepartment(response.accessToken));\r\n\t\t\treturn response.accessToken;\r\n\t\t})\r\n\t\t.catch((error) => {\r\n\t\t\t// Do not fallback to interaction when running outside the context of MsalProvider. Interaction should always be done inside context.\r\n\t\t\tconsole.log(error);\r\n\t\t\treturn null;\r\n\t\t});\r\n});\r\n\r\nexport const fetchNotificationToken = createAsyncThunk(\"user/fetchNotificationToken\", async () => {\r\n\tconst request = {\r\n\t\tscopes: [\"https://crmlsnotification.azurewebsites.net/.default\"],\r\n\t};\r\n\r\n\treturn await pca\r\n\t\t.acquireTokenSilent(request)\r\n\t\t.then((response) => {\r\n\t\t\treturn response.accessToken;\r\n\t\t})\r\n\t\t.catch((error) => {\r\n\t\t\t// Do not fallback to interaction when running outside the context of MsalProvider. Interaction should always be done inside context.\r\n\t\t\tconsole.log(error);\r\n\t\t\treturn null;\r\n\t\t});\r\n});\r\n\r\nexport const fetchMembershipToken = createAsyncThunk(\"user/fetchMembershipToken\", async () => {\r\n\tconst request = {\r\n\t\tscopes: [\"https://membershipdirectory.azurewebsites.net/.default\"],\r\n\t};\r\n\r\n\treturn await pca\r\n\t\t.acquireTokenSilent(request)\r\n\t\t.then((response) => {\r\n\t\t\treturn response.accessToken;\r\n\t\t})\r\n\t\t.catch((error) => {\r\n\t\t\t// Do not fallback to interaction when running outside the context of MsalProvider. Interaction should always be done inside context.\r\n\t\t\tconsole.log(error);\r\n\t\t\treturn null;\r\n\t\t});\r\n});\r\n\r\nexport const fetchMemberPortalToken = createAsyncThunk(\"user/fetchMemberPortalToken\", async () => {\r\n\tconst request = {\r\n\t\tscopes: [\"https://macewindu.azurewebsites.net/user_impersonation\"],\r\n\t};\r\n\r\n\treturn await pca\r\n\t\t.acquireTokenSilent(request)\r\n\t\t.then((response) => {\r\n\t\t\treturn response.accessToken;\r\n\t\t})\r\n\t\t.catch((error) => {\r\n\t\t\t// Do not fallback to interaction when running outside the context of MsalProvider. Interaction should always be done inside context.\r\n\t\t\tconsole.log(\"Member portal api token error: \", error);\r\n\t\t\treturn null;\r\n\t\t});\r\n});\r\n\r\nexport const fetchWorkflowToken = createAsyncThunk(\"user/fetchWorkflowToken\", async () => {\r\n\tconst request = {\r\n\t\tscopes: [\"api://workflow/.default\"],\r\n\t};\r\n\r\n\treturn await pca\r\n\t\t.acquireTokenSilent(request)\r\n\t\t.then((response) => {\r\n\t\t\treturn response.accessToken;\r\n\t\t})\r\n\t\t.catch((error) => {\r\n\t\t\tconsole.log(error);\r\n\t\t\t// Do not fallback to interaction when running outside the context of MsalProvider. Interaction should always be done inside context.\r\n\t\t\t// console.log(\"Member portal api token error: \", error);\r\n\t\t\treturn null;\r\n\t\t});\r\n});\r\n\r\nexport const fetchPowerBiToken = createAsyncThunk(\"user/fetchPowerBiToken\", async () => {\r\n\tconst request = {\r\n\t\tscopes: [\"https://analysis.windows.net/powerbi/api/Report.Read.All\"],\r\n\t};\r\n\r\n\treturn await pca\r\n\t\t.acquireTokenSilent(request)\r\n\t\t.then((response) => {\r\n\t\t\treturn response.accessToken;\r\n\t\t})\r\n\t\t.catch((error) => {\r\n\t\t\t// Do not fallback to interaction when running outside the context of MsalProvider. Interaction should always be done inside context.\r\n\t\t\tconsole.log(error);\r\n\t\t\treturn null;\r\n\t\t});\r\n});\r\n\r\nexport const fetchMsToken = createAsyncThunk(\"user/fetchMsToken\", async (arg, thunkAPI) => {\r\n\tconst request = {\r\n\t\tscopes: [\"https://graph.microsoft.com/User.ReadBasic.All\"],\r\n\t};\r\n\r\n\treturn await pca\r\n\t\t.acquireTokenSilent(request)\r\n\t\t.then((response) => {\r\n\t\t\t// once we get the MS token grab the profile\r\n\t\t\tthunkAPI.dispatch(fetchProfileData(response.accessToken));\r\n\t\t\treturn response.accessToken;\r\n\t\t})\r\n\t\t.catch((error) => {\r\n\t\t\t// Do not fallback to interaction when running outside the context of MsalProvider. Interaction should always be done inside context.\r\n\t\t\tconsole.log(error);\r\n\t\t\treturn null;\r\n\t\t});\r\n});\r\n\r\nexport const fetchProfileData = createAsyncThunk(\"user/fetchProfileData\", async (token: string, { fulfillWithValue, rejectWithValue }) => {\r\n\tconst headers = { Authorization: `Bearer ${token}` };\r\n\r\n\tconst svcEndpoint = \"https://graph.microsoft.com/v1.0/me\";\r\n\tconst svcPhotoEndpoint = svcEndpoint + \"/photo/$value\";\r\n\r\n\tconst authUser: ICrmlsUser = {\r\n\t\tid: \"\",\r\n\t\tlogin: \"\",\r\n\t\tisAuthenticated: false,\r\n\t\tfirst: \"\",\r\n\t\tlast: \"\",\r\n\t\ttitle: \"\",\r\n\t\tdepartment: \"\",\r\n\t\tuserType: \"\",\r\n\t\timage: \"\",\r\n\t\temail: \"\",\r\n\t};\r\n\r\n\ttry {\r\n\t\tconst response = await fetch(svcEndpoint, { headers })\r\n\t\t\t.then((response) => response.json())\r\n\t\t\t.then((data) => {\r\n\t\t\t\t// console.log(data);\r\n\t\t\t\tif (data) {\r\n\t\t\t\t\tauthUser.id = data[\"id\"];\r\n\t\t\t\t\tauthUser.email = data[\"mail\"];\r\n\t\t\t\t\tauthUser.title = data[\"jobTitle\"];\r\n\t\t\t\t\tauthUser.department = data[\"department\"];\r\n\t\t\t\t\tauthUser.userType = data[\"userType\"];\r\n\t\t\t\t\tauthUser.first = data[\"givenName\"];\r\n\t\t\t\t\tauthUser.last = data[\"surname\"];\r\n\t\t\t\t\tauthUser.isAuthenticated = true;\r\n\t\t\t\t}\r\n\t\t\t\treturn authUser;\r\n\t\t\t})\r\n\t\t\t.then((authUser) => {\r\n\t\t\t\treturn fetch(svcPhotoEndpoint, { headers })\r\n\t\t\t\t\t.then((response) => response.blob())\r\n\t\t\t\t\t.then((blob) => {\r\n\t\t\t\t\t\tconst url = window.URL || window.webkitURL;\r\n\t\t\t\t\t\tauthUser.image = url.createObjectURL(blob);\r\n\t\t\t\t\t\treturn authUser;\r\n\t\t\t\t\t});\r\n\t\t\t});\r\n\t\treturn fulfillWithValue(response, null);\r\n\t} catch (e) {\r\n\t\treturn rejectWithValue((e as any).response);\r\n\t}\r\n});\r\n\r\nexport const getUserDepartment = createAsyncThunk(\"department/getUserDepartment\", async (token: string, { fulfillWithValue, rejectWithValue }) => {\r\n\tconst headers = { Authorization: `Bearer ${token}` };\r\n\r\n\tconst authUser: ICrmlsUser = {\r\n\t\tid: \"\",\r\n\t\tlogin: \"\",\r\n\t\tisAuthenticated: false,\r\n\t\tfirst: \"\",\r\n\t\tlast: \"\",\r\n\t\ttitle: \"\",\r\n\t\tdepartment: \"\",\r\n\t\tuserType: \"\",\r\n\t\timage: \"\",\r\n\t\temail: \"\",\r\n\t};\r\n\r\n\ttry {\r\n\t\tconst response = await fetch(\"https://macewindu.azurewebsites.net/api/User/current\", { headers })\r\n\t\t\t.then((response) => response.json())\r\n\t\t\t.then((data) => {\r\n\t\t\t\t// console.log(data);\r\n\t\t\t\tif (data) {\r\n\t\t\t\t\tauthUser.department = data[\"department\"];\r\n\t\t\t\t\tauthUser.userType = data[\"userType\"];\r\n\t\t\t\t}\r\n\t\t\t\treturn authUser;\r\n\t\t\t});\r\n\t\treturn fulfillWithValue(response, null);\r\n\t} catch (e) {\r\n\t\treturn rejectWithValue((e as any).response);\r\n\t}\r\n});\r\n\r\nexport const userSlice = createSlice({\r\n\tname: \"user\",\r\n\tinitialState,\r\n\treducers: {\r\n\t\tsetAccountInfo: (state, action) => {\r\n\t\t\tstate.accountInfo = action.payload;\r\n\t\t},\r\n\t\tsetEnvironment: (state, action) => {\r\n\t\t\tstate.environment = action.payload;\r\n\t\t},\r\n\t\tsetAbilities: (state, action) => {\r\n\t\t\tstate.abilities = action.payload;\r\n\t\t},\r\n\t\tsetAccessRoles: (state, action) => {\r\n\t\t\tstate.accessRoles = action.payload;\r\n\t\t},\r\n\t},\r\n\textraReducers: (builder) => {\r\n\t\tbuilder\r\n\t\t\t.addCase(fetchMaceToken.fulfilled, (state, action) => {\r\n\t\t\t\tstate.tokens.mace = action.payload;\r\n\t\t\t})\r\n\t\t\t.addCase(fetchMembershipToken.fulfilled, (state, action) => {\r\n\t\t\t\tstate.tokens.membership = action.payload;\r\n\t\t\t})\r\n\t\t\t.addCase(fetchMemberPortalToken.fulfilled, (state, action) => {\r\n\t\t\t\tstate.tokens.memberPortal = action.payload;\r\n\t\t\t})\r\n\t\t\t.addCase(fetchNotificationToken.fulfilled, (state, action) => {\r\n\t\t\t\tstate.tokens.notification = action.payload;\r\n\t\t\t})\r\n\t\t\t.addCase(fetchWorkflowToken.fulfilled, (state, action) => {\r\n\t\t\t\tstate.tokens.workflow = action.payload;\r\n\t\t\t})\r\n\t\t\t.addCase(fetchPowerBiToken.fulfilled, (state, action) => {\r\n\t\t\t\tstate.tokens.powerBi = action.payload;\r\n\t\t\t})\r\n\t\t\t.addCase(fetchMsToken.fulfilled, (state, action) => {\r\n\t\t\t\tstate.tokens.ms = action.payload;\r\n\t\t\t})\r\n\t\t\t.addCase(fetchProfileData.fulfilled, (state, action) => {\r\n\t\t\t\tif (action.payload) {\r\n\t\t\t\t\tstate.user = action.payload;\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.addCase(getUserDepartment.fulfilled, (state, action) => {\r\n\t\t\t\tif (action.payload) {\r\n\t\t\t\t\tstate.department = action.payload;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t},\r\n});\r\nexport const selectUserIdFromStore = createSelector(\r\n\t(state: RootState) => state.user.user,\r\n\t(user) => {\r\n\t\tif (user) {\r\n\t\t\treturn user.id;\r\n\t\t}\r\n\t}\r\n);\r\n\r\nexport const getUser = createSelector(\r\n\t(state: RootState) => state.user.user,\r\n\t(user) => {\r\n\t\tif (user) {\r\n\t\t\treturn user;\r\n\t\t}\r\n\t}\r\n);\r\n\r\nexport const getUserDept = createSelector(\r\n\t(state: RootState) => state.user.department,\r\n\t(department) => {\r\n\t\tif (department) {\r\n\t\t\treturn department.department;\r\n\t\t}\r\n\t}\r\n);\r\n\r\nexport const getUserType = createSelector(\r\n\t(state: RootState) => state.user.department,\r\n\t(department) => {\r\n\t\tif (department) {\r\n\t\t\treturn department.userType;\r\n\t\t}\r\n\t}\r\n);\r\n\r\nexport const getUserId = createSelector(\r\n\t(state: RootState) => state.user.accountInfo,\r\n\t(userInfo) => {\r\n\t\tif (userInfo) {\r\n\t\t\treturn userInfo.localAccountId;\r\n\t\t}\r\n\t}\r\n);\r\n\r\nexport const getAbilities = createSelector(\r\n\t(state: RootState) => state.user.abilities,\r\n\t(abilities) => {\r\n\t\treturn abilities;\r\n\t}\r\n);\r\n\r\nexport const getEnvironment = createSelector(\r\n\t(state: RootState) => state.user.environment,\r\n\t(environment) => {\r\n\t\tif (environment) {\r\n\t\t\treturn environment;\r\n\t\t}\r\n\t}\r\n);\r\n\r\nexport const getTokens = createSelector(\r\n\t(state: RootState) => state.user.tokens,\r\n\t(userTokens) => {\r\n\t\tif (userTokens) {\r\n\t\t\treturn userTokens;\r\n\t\t}\r\n\t}\r\n);\r\n\r\nexport const getAccessRoles = createSelector(\r\n\t(state: RootState) => state.user.accessRoles,\r\n\t(accessRoles) => {\r\n\t\tif (accessRoles) {\r\n\t\t\treturn accessRoles;\r\n\t\t}\r\n\t}\r\n);\r\n\r\nexport function useRoleCheck() {\r\n\tconst accessRoles = useAppSelector(getAccessRoles);\r\n\tconst isAdmin = accessRoles?.includes(AdminRoles.WorkFlowAdmin);\r\n\treturn { isAdmin };\r\n}\r\n\r\nexport const { setAccountInfo, setEnvironment, setAbilities, setAccessRoles } = userSlice.actions;\r\nconst { reducer } = userSlice;\r\nexport default reducer;\r\n","export default __webpack_public_path__ + \"static/media/houses.839d807e.jpg\";","import React, {useState} from \"react\";\r\nimport Houses from '../../Assets/houses.jpg';\r\nimport {useLocation} from \"react-router-dom\";\r\nimport Swal from 'sweetalert2'\r\nimport '@sweetalert2/theme-bootstrap-4/bootstrap-4.css';\r\nimport axios from \"axios\";\r\n\r\nconst Unsubscribe = () => {\r\n const development = (window.location.href.includes('localhost') || process.env.NODE_ENV === 'development' || window.location.href.includes('ui-dev'));\r\n const query = new URLSearchParams(useLocation().search);\r\n\r\n const [email, setEmail] = useState(query.get('email') ?? '');\r\n const campaignId = query.get('campaignId') ?? '';\r\n const encryptedId = query.get('encryptedId') ?? '';\r\n\r\n const base_config = {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json',\r\n }\r\n }\r\n\r\n const doUnsubscribe = () => {\r\n const email_regex = /^(([^<>()\\[\\]\\\\.,;:\\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,}))$/;\r\n let criteria = {\r\n email: email,\r\n emailContextId: campaignId,\r\n encryptedId: decodeURIComponent(encryptedId.replace(/ /g, '+'))\r\n // encryptedId: encryptedId\r\n };\r\n\r\n if (email_regex.test(email)) {\r\n let base_url = '';\r\n if (development) {\r\n // force to the staging endpoints\r\n base_url = \"https://crmlsnotification-dev.azurewebsites.net/api/app/\";\r\n } else {\r\n base_url = \"https://crmlsnotification.azurewebsites.net/api/app/\";\r\n }\r\n\r\n axios.post(base_url + 'OptOutRequest/Unsubscribe', criteria, base_config)\r\n .then((response) => {\r\n console.log(response.data);\r\n if (response.data.isSuccessful) {\r\n Swal.fire({\r\n icon: 'success',\r\n title: 'Unsubscribed',\r\n html: 'You have been unsubscribed from this communication.',\r\n })\r\n }\r\n })\r\n .catch((error) => {\r\n Swal.fire({\r\n icon: 'error',\r\n title: 'Unexpected error',\r\n html: error.response.data.message,\r\n })\r\n });\r\n } else {\r\n Swal.fire({\r\n icon: 'error',\r\n title: 'Invalid email',\r\n html: 'Please supply a valid email address',\r\n })\r\n }\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    Sorry to see you go!
    \r\n

    Unsubscribe from further marketing emails

    \r\n
    \r\n
    \r\n
    \r\n setEmail(e.target.value)} required className=\"form-control\" placeholder=\"Enter Email\" />\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n Or Follow Us\r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n Photo by CHUTTERSNAP on Unsplash\r\n \r\n
    \r\n
    \r\n
    \r\n )\r\n}\r\n\r\nexport default Unsubscribe;\r\n","import React from \"react\";\r\nimport Houses from '../Assets/houses.jpg';\r\nimport '@sweetalert2/theme-bootstrap-4/bootstrap-4.css';\r\nimport {Line} from \"react-chartjs-2\";\r\nimport { Link } from \"react-router-dom\";\r\n\r\nconst Unauthenticated = () => {\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
    CRMLS Internal Resource
    \r\n

    COSMOS is an internal application. If you came across this page in error please notify IT.

    \r\n\r\n
    \r\n Or Follow Us\r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n Photo by CHUTTERSNAP on Unsplash\r\n \r\n
    \r\n
    \r\n
    \r\n )\r\n}\r\n\r\nexport default Unauthenticated;\r\n","import React, { useState, useEffect } from 'react';\r\nimport { NavLink } from \"react-router-dom\";\r\nimport { useLocation } from 'react-router-dom'\r\nimport Routes, {ROUTESINDIVIDUAL} from \"../Utilities/Routes\";\r\nimport CommunicationsDashboard from \"../Main/Communications/CommunicationsDashboard\";\r\nimport \"../../CSS/breadcrumbs.css\";\r\n\r\n\r\nconst urlBreadcrumbMap = [\r\n {\r\n match: /\\/support\\/work-items\\/.+&referrer=\\/support\\/my-tickets/,\r\n route: ROUTESINDIVIDUAL.EDITTICKET_VIEWS\r\n },\r\n {\r\n match: /\\/support\\/work-items\\/.+&referrer=\\/support\\/tickets/,\r\n route: ROUTESINDIVIDUAL.EDITTICKET_ALLTICKETS\r\n },\r\n {\r\n match: /\\/support\\/work-items/,\r\n route: ROUTESINDIVIDUAL.EDITTICKET_ALLTICKETS\r\n },\r\n]\r\n\r\nconst Breadcrumbs = () => {\r\n let location = useLocation();\r\n\r\n const [currentPath, setCurrentPath] = useState(location.pathname);\r\n const [currentRouteObject, setCurrentRouteObject] = useState({\r\n path: \"/communications\",\r\n name: \"Dashboard\",\r\n Component: CommunicationsDashboard,\r\n icon: \"icon-Gaugage\",\r\n showWelcome: true,\r\n crumbs: [\r\n {name: 'Home', path: '/'},\r\n {name: 'Communications', path: '/communications'},\r\n ],\r\n });\r\n\r\n useEffect(function() {\r\n setCurrentRouteObject(() => {\r\n let cp = currentRouteObject;\r\n let newRouteFound = false;\r\n Routes.forEach(element => {\r\n if (currentPath.includes(element.rootpath)) {\r\n element.paths.forEach(subpath => {\r\n if (currentPath.includes(subpath.path)) {\r\n cp = subpath;\r\n newRouteFound = true;\r\n }\r\n })\r\n }\r\n });\r\n\r\n if (!newRouteFound) {\r\n const url = `${location.pathname}${location.search}`;\r\n const routeSerch = urlBreadcrumbMap.find((item) => item.match.test(url))\r\n if (routeSerch) {\r\n cp = routeSerch.route;\r\n }\r\n }\r\n\r\n return cp;\r\n });\r\n }, [ currentPath, currentRouteObject ] );\r\n\r\n useEffect(function() {\r\n setCurrentPath(location.pathname)\r\n }, [location.pathname])\r\n\r\n const getSlug = () => {\r\n if (currentRouteObject.showWelcome) {\r\n return (\r\n
    \r\n
    \r\n {/*

    Welcome {props.name}

    */}\r\n

    Marketing and Communication Email (MACE)

    \r\n

    MACE

    \r\n
    \r\n
    \r\n );\r\n } else {\r\n return (\r\n
    \r\n
    \r\n

    {currentRouteObject.name}

    \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 {getSlug()}\r\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 Breadcrumbs;\r\n","import React from \"react\";\r\n\r\nconst Footer = () => {\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    © Copyright {new Date().getFullYear()} CRMLS
    \r\n
    \r\n
    \r\n
    \r\n );\r\n}\r\n\r\nexport default Footer;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport Routes from \"../Utilities/Routes\";\r\nimport { NavLink, useLocation } from \"react-router-dom\";\r\nimport QueryHelper from \"../Utilities/QueryHelper\";\r\nimport useQuery from \"../Hooks/Query\";\r\nimport { useAppDispatch, useAppSelector } from \"../../app/hooks\";\r\nimport { getUserType, setAccessRoles } from \"../../features/userFeature/userSlice\";\r\nimport ThemeLoader from \"./ThemeLoader\";\r\n\r\nfunction Menu() {\r\n\tlet location = useLocation();\r\n\tconst [activeMenu, setActiveMenu] = useState(location.pathname);\r\n\tconst [helper, setHelper] = useState(false);\r\n\tconst [rolesCalled, setRolesCalled] = useState(false);\r\n\tconst [routes, setRoutes] = useState(Routes);\r\n\tuseQuery(setHelper);\r\n\tconst dispatch = useAppDispatch();\r\n\tconst userType = useAppSelector(getUserType);\r\n\r\n\tuseEffect(() => {\r\n\t\tsetActiveMenu(location.pathname);\r\n\t}, [location.pathname]);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (helper && !rolesCalled) {\r\n\t\t\tsetRolesCalled(true);\r\n\t\t\thelper.setWorkflow();\r\n\t\t\thelper.fetchUserRoles().then((responseAccessRoles) => {\r\n\t\t\t\tdispatch(setAccessRoles(responseAccessRoles));\r\n\t\t\t\tconst newRoutes = [...routes];\r\n\t\t\t\tlet routeUpdated = false;\r\n\t\t\t\tnewRoutes.forEach((route: any) => {\r\n\t\t\t\t\tif (route.adminPaths) {\r\n\t\t\t\t\t\troute.adminPaths.forEach((adminPath: any) => {\r\n\t\t\t\t\t\t\tif ((responseAccessRoles as string[]).includes(adminPath.accessRole)) {\r\n\t\t\t\t\t\t\t\troute.paths = [...route.paths, adminPath];\r\n\t\t\t\t\t\t\t\trouteUpdated = true;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif (routeUpdated) {\r\n\t\t\t\t\tsetRoutes(newRoutes);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}, [helper]);\r\n\r\n\tconst isActiveSection = (item: any) => {\r\n\t\treturn activeMenu.includes(item.rootpath) as any;\r\n\t};\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t
      \r\n\t\t\t\t{routes.map((item: any, key: number) => {\r\n\t\t\t\t\treturn (\r\n\t\t\t\t\t\t
    • \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t 0 ? \"has-arrow\" : \"\"}`} to={item.rootpath}>\r\n\t\t\t\t\t\t\t\t{item.name}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
        \r\n\t\t\t\t\t\t\t\t{item.paths.map((path: any, path_key: number) => {\r\n\t\t\t\t\t\t\t\t\tif (!path.childPath) {\r\n\t\t\t\t\t\t\t\t\t\tif (path.adminOnly && userType !== \"ADMIN\") return null;\r\n\t\t\t\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t\t\t\t
      • \r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t{path.name}\r\n\t\t\t\t\t\t\t\t\t\t\t
      • \r\n\t\t\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t})}\r\n\t\t\t\t\t\t\t\t{item.adminPaths?.length > 0 && !rolesCalled && (\r\n\t\t\t\t\t\t\t\t\t
      • \r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t
      • \r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t
      \r\n\t\t\t\t\t\t
    • \r\n\t\t\t\t\t);\r\n\t\t\t\t})}\r\n\t\t\t
    \r\n\t\t\r\n\t);\r\n}\r\n\r\nexport default Menu;\r\n","import React from \"react\";\r\nimport Menu from \"./Widgets/Menu\";\r\nimport {Link} from \"react-router-dom\";\r\nimport {getEnvironment} from \"../features/userFeature/userSlice\";\r\nimport {useAppSelector} from \"../app/hooks\";\r\nimport {RootState} from \"../app/store\";\r\n\r\nconst LogoBar = ({version}: {version: string}) => {\r\n const environment = useAppSelector((state: RootState) => getEnvironment(state));\r\n /*\r\n * Color code:\r\n * Dev / Localhost: YELLOW\r\n * Test / UAT: GREEN\r\n * Staging: RED\r\n * Prod: WHITE\r\n */\r\n const getLogo = () => {\r\n let logo = \"Mace\";\r\n\r\n switch (environment) {\r\n case \"development\":\r\n logo = \"Mace\";\r\n break;\r\n case \"testing\":\r\n logo = \"Mace\";\r\n break;\r\n case \"staging\":\r\n logo = \"Mace\";\r\n break;\r\n case \"production\":\r\n logo = \"Mace\";\r\n break;\r\n }\r\n\r\n return logo;\r\n }\r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\nexport default LogoBar;\r\n","import React, { lazy, Suspense } from \"react\";\r\nimport { Switch, Route, Redirect } from \"react-router-dom\";\r\nimport ThemeLoader from \"../Components/Widgets/ThemeLoader\";\r\n\r\n// lazy-load home components\r\nconst CommunicationsHome = lazy(() => import(\"./Main/CommunicationsHome\"));\r\nconst ComplianceHome = lazy(() => import(\"./Main/ComplianceHome\"));\r\nconst CustomerCareHome = lazy(() => import(\"./Main/CustomerCareHome\"));\r\nconst MembershipHome = lazy(() => import(\"./Main/MembershipHome\"));\r\nconst DevelopmentHome = lazy(() => import(\"./Main/DevelopmentHome\"));\r\nconst FinanceHome = lazy(() => import(\"./Main/FinanceHome\"));\r\nconst OperationsHome = lazy(() => import(\"./Main/OperationsHome\"));\r\nconst TrainingHome = lazy(() => import(\"./Main/TrainingHome\"));\r\nconst ReportingHome = lazy(() => import(\"./Main/ReportingHome\"));\r\nconst NoMatch = lazy(() => import(\"./NoMatch\"));\r\n\r\nconst Main = () => {\r\n return (\r\n }>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default Main;\r\n","import React from \"react\";\r\nimport { useAppSelector } from \"../../app/hooks\";\r\nimport { getUser } from \"../../features/userFeature/userSlice\";\r\nimport { useMsal } from \"@azure/msal-react\";\r\n\r\nfunction User() {\r\n\tconst user = useAppSelector(getUser);\r\n\tconst { instance } = useMsal();\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\"\"\r\n\t\t\t\t\r\n\t\t\t\tHi, {user?.first}\r\n\t\t\t\r\n\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t\t\tHi!{\" \"}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{user?.first} {user?.last}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t{user?.title}\r\n\t\t\t\t
    \r\n\t\t\t\t{/*My Profile*/}\r\n\t\t\t\t {\r\n\t\t\t\t\t\tinstance.logout();\r\n\t\t\t\t\t}}\r\n\t\t\t\t>\r\n\t\t\t\t\t logout\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t\r\n\t);\r\n}\r\n\r\nexport default User;\r\n","import React from \"react\";\r\nimport User from \"./Widgets/User\";\r\nimport {Link} from \"react-router-dom\";\r\n\r\nconst Header = () => {\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
      Campaign
      \r\n \r\n
      \r\n
      \r\n \r\n \r\n
      Audience
      \r\n \r\n
      \r\n
      \r\n \r\n \r\n
      My Profile
      \r\n \r\n
      \r\n
      \r\n
      \r\n
    • \r\n
    • \r\n \r\n
    • \r\n
    • \r\n \r\n \r\n \r\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 Header;\r\n","import React, { useEffect } from \"react\";\r\nimport Breadcrumbs from \"./Components/Widgets/Breadcrumbs\";\r\nimport { useAppDispatch } from \"./app/hooks\";\r\nimport { fetchMaceToken, fetchMembershipToken, fetchMemberPortalToken, fetchNotificationToken, fetchPowerBiToken, fetchMsToken, setAccountInfo, fetchWorkflowToken, setEnvironment } from \"./features/userFeature/userSlice\";\r\nimport Footer from \"./Components/Footer\";\r\nimport LogoBar from \"./Components/LogoBar\";\r\nimport Main from \"./Components/Main\";\r\nimport Header from \"./Components/Header\";\r\nimport { useMsal } from \"@azure/msal-react\";\r\nimport { AbilityContext } from \"./Auth/can\";\r\nimport { defineAbility } from \"@casl/ability\";\r\nimport { getCaslAbilities } from \"./Auth/caslAuth\";\r\nimport { useAppSelector } from \"./app/hooks\";\r\nimport { getUserDept } from \"./features/userFeature/userSlice\";\r\nimport createAuthRefreshInterceptor from \"axios-auth-refresh\";\r\nimport axios from \"axios\";\r\nimport { DraggableModalProvider } from \"ant-design-draggable-modal\";\r\n\r\nfunction App() {\r\n\tconst dispatch = useAppDispatch();\r\n\tconst { accounts } = useMsal();\r\n\tconst department = useAppSelector(getUserDept);\r\n\t// set default abilities\r\n\tconst caslAbilities = defineAbility((can, cannot) => {\r\n\t\tcannot(\"manage\", \"all\"); // not able to do anything but read\r\n\t\tcan(\"read\", \"all\"); // and can read all\r\n\t});\r\n\r\n\tuseEffect(() => {\r\n\t\tdispatch(setAccountInfo(accounts[0]));\r\n\t\t// if we have an account, get the abilities for that account\r\n\t\tgetCaslAbilities(caslAbilities, department);\r\n\t\t// set the environment\r\n\t\tif (window.location.href.includes(\"localhost\") || process.env.NODE_ENV === \"development\" || window.location.href.includes(\"ui-dev\") || window.location.href.includes(\"cosmos-dev\")) {\r\n\t\t\tdispatch(setEnvironment(\"development\"));\r\n\t\t} else if (window.location.href.includes(\"test-maceui\") || window.location.href.includes(\"cosmos-uat\") || window.location.href.includes(\"maceui-wfuat\")) {\r\n\t\t\tdispatch(setEnvironment(\"testing\"));\r\n\t\t} else if (window.location.href.includes(\"maceui-staging\") || window.location.href.includes(\"cosmos-preview\")) {\r\n\t\t\tdispatch(setEnvironment(\"staging\"));\r\n\t\t} else if (window.location.href.includes(\"cosmos.crmls\")) {\r\n\t\t\tdispatch(setEnvironment(\"production\"));\r\n\t\t} else {\r\n\t\t\tdispatch(setEnvironment(\"development\"));\r\n\t\t}\r\n\t}, [caslAbilities, dispatch, accounts]);\r\n\r\n\tconst fetchTokens = () => {\r\n\t\tif (dispatch) {\r\n\t\t\treturn dispatch(fetchMaceToken())\r\n\t\t\t\t.then(() => dispatch(fetchMembershipToken()))\r\n\t\t\t\t.then(() => dispatch(fetchMemberPortalToken()))\r\n\t\t\t\t.then(() => dispatch(fetchNotificationToken()))\r\n\t\t\t\t.then(() => dispatch(fetchPowerBiToken()))\r\n\t\t\t\t.then(() => dispatch(fetchWorkflowToken()))\r\n\t\t\t\t.then(() => dispatch(fetchMsToken()).then(() => Promise.resolve()));\r\n\t\t} else {\r\n\t\t\treturn Promise.reject(\"No dispatch\");\r\n\t\t}\r\n\t};\r\n\r\n\tuseEffect(() => {\r\n\t\tfetchTokens();\r\n\r\n\t\t// Set interval to refresh tokens every 30 minutes - to prevent random 401 error on axios requests after sitting idle\r\n\t\tconst tokenInterval = setInterval(() => {\r\n\t\t\tfetchTokens();\r\n\t\t}, 1800000);\r\n\r\n\t\treturn () => {\r\n\t\t\tclearInterval(tokenInterval);\r\n\t\t};\r\n\t}, [dispatch]);\r\n\r\n\tconst version = \"3.6.2\";\r\n\r\n\t// refresh token mechanism\r\n\tcreateAuthRefreshInterceptor(axios, fetchTokens);\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t
    \r\n\t);\r\n}\r\n\r\nexport default App;\r\n","import {AbilityBuilder} from \"@casl/ability\";\r\n\r\ntype accessLevel = 'admin' | 'marketing' | 'dev' | 'training' | 'ops' | 'compliance' | 'engineering' | 'default'; // etc\r\n\r\nexport const getCaslAbilities = (ability: any, dept: string | undefined): void => {\r\n const { can, rules } = new AbilityBuilder(ability);\r\n // coming into here we should have `ability` defined as the default ability set-- read all, manage none\r\n console.log(`Looking for abilities for ${dept}`);\r\n\r\n let access: string | undefined = 'default';\r\n\r\n // get the department access level\r\n if (dept) {\r\n access = dept.toLowerCase();\r\n console.log(\"Found access level \" + access);\r\n }\r\n\r\n can('manage', 'workflow');\r\n\r\n switch (access) {\r\n case 'admin':\r\n console.log(\"setting admin\");\r\n can('manage', 'all');\r\n break;\r\n case 'marketing':\r\n console.log(\"setting marketing\");\r\n can('manage', 'communications');\r\n can('manage', 'marketing');\r\n break;\r\n case 'training':\r\n console.log(\"setting training\");\r\n can('manage', 'training');\r\n\r\n // @note - this is temporary workaround - give training users marketing admin privs\r\n can('manage', 'communications');\r\n can('manage', 'marketing');\r\n break;\r\n case 'engineering':\r\n console.log(\"setting engineering\");\r\n can('manage', 'all');\r\n break;\r\n case 'finance':\r\n console.log(\"setting finance\");\r\n can('manage', 'finance');\r\n break;\r\n case 'operations':\r\n console.log(\"setting operations\");\r\n can('manage', 'operations');\r\n break;\r\n case 'dev':\r\n case 'compliance':\r\n console.log('setting compliance');\r\n can('manage', 'compliance');\r\n break;\r\n default:\r\n }\r\n\r\n ability.update(rules);\r\n}\r\n","import React from \"react\";\r\nimport ReactDOM from \"react-dom\";\r\nimport Unsubscribe from \"./Components/Main/Unsubscribe\";\r\nimport { BrowserRouter, Route, Switch } from \"react-router-dom\";\r\nimport { EventType, InteractionType, PublicClientApplication } from \"@azure/msal-browser\";\r\nimport { msalConfig } from \"./Auth/authProvider\";\r\nimport { store } from \"./app/store\";\r\nimport { Provider } from \"react-redux\";\r\nimport { MsalAuthenticationTemplate, MsalProvider, UnauthenticatedTemplate } from \"@azure/msal-react\";\r\nimport Unauthenticated from \"./Components/Unauthenticated\";\r\nimport App from \"./App\";\r\nimport ThemeLoader from \"./Components/Widgets/ThemeLoader\";\r\n\r\nexport const msalInstance = new PublicClientApplication(msalConfig);\r\n\r\n// This will update account state if a user signs in from another tab or window\r\nmsalInstance.enableAccountStorageEvents();\r\n\r\nmsalInstance.addEventCallback((event: any) => {\r\n\tif (event.eventType === EventType.LOGIN_SUCCESS && event.payload.account) {\r\n\t\tconst account = event.payload.account;\r\n\t\tmsalInstance.setActiveAccount(account);\r\n\t}\r\n});\r\n\r\nfunction ErrorComponent({ error }: { error: any }) {\r\n\tif (error) {\r\n\t\treturn (\r\n\t\t\t
    \r\n\t\t\t\t

    {error.name}

    \r\n\t\t\t\t

    {error.message}

    \r\n\t\t\t
    \r\n\t\t);\r\n\t} else {\r\n\t\treturn <>;\r\n\t}\r\n}\r\n\r\nfunction LoadingComponent() {\r\n\treturn ;\r\n}\r\n\r\nReactDOM.render(\r\n\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t,\r\n\tdocument.getElementById(\"page-wrapper\")\r\n);\r\n","import { TypedUseSelectorHook, useDispatch, useSelector } from 'react-redux';\r\nimport type { RootState, AppDispatch } from \"./store\";\r\n\r\n// Use throughout your app instead of plain `useDispatch` and `useSelector`\r\nexport const useAppDispatch = () => useDispatch();\r\nexport const useAppSelector: TypedUseSelectorHook = useSelector;\r\n","import { configureStore, ThunkAction, Action } from \"@reduxjs/toolkit\";\r\nimport userReducer from \"../features/userFeature/userSlice\";\r\nimport prefsReducer from \"../features/prefsFeature/prefsSlice\";\r\nimport complianceReducer from \"../features/complianceFeature/complianceSlice\";\r\n\r\nexport const store = configureStore({\r\n\treducer: {\r\n\t\tuser: userReducer,\r\n\t\tprefs: prefsReducer,\r\n\t\tcompliance: complianceReducer\r\n\t},\r\n});\r\n\r\nexport type AppDispatch = typeof store.dispatch;\r\nexport type RootState = ReturnType;\r\nexport type AppThunk = ThunkAction<\r\n ReturnType,\r\n RootState,\r\n unknown,\r\n Action\r\n >;\r\n","import React from 'react';\r\nimport Loader from 'react-loader-spinner';\r\n\r\n// @todo: vk - replace instances of Loader with ThemeLoader\r\n// set default props to use theme variables\r\nconst defaultParams = {\r\n type: 'ThreeDots',\r\n color: '#2BAD60',\r\n height: 100,\r\n width: 100,\r\n customClass: 'default-loader'\r\n}\r\n\r\nconst ThemeLoader = (props) => (\r\n
    \r\n \r\n
    \r\n)\r\n\r\nexport default ThemeLoader;\r\n"],"sourceRoot":""}