{"version":3,"sources":["component/reusables/message-bar.tsx","component/reusables/uploadFile.tsx","component/routes/partner-operations-tool/manage-partners/add-new-partner/add-new-partner.tsx","mocks/country-code-mapping.ts","component/routes/partner-operations-tool/company-details/company-details.tsx","component/routes/partner-operations-tool/onboarding-history/onboarding-history.tsx","component/reusables/formElements/FilterDropdown.tsx","component/routes/partner-operations-tool/enrolledInvited.constants.ts","mocks/api/scopelist.ts","services/api/eua.service.ts","component/routes/partner-operations-tool/manage-partners/manage-partners.tsx","component/routes/partner-operations-tool/partner-operations-tool.tsx","mocks/api/partnerInvitations.ts","mocks/api/invitation.ts","services/api/invitation.service.ts","services/api/upload.service.ts"],"names":["MessageBar","createScope","reactInstance","React","theme","partnerCenterTheme","forReact","messageBar","showMessageBar","message","appearance","_jsxs","_Fragment","children","_jsx","open","style","whiteSpace","UploadFile","forwardRef","props","className","Pipe","ResourcePipe","label","extensions","required","accept","acceptedFormats","type","onChange","e","event","target","value","file","files","fileExtension","name","split","at","allowedFileTypes","includes","setFileTypeErrorMessage","concat","join","setChooseFileMessageAppearance","size","fileSizeLimit","setFileSizeErrorMessage","setFile","undefined","onChooseFile","scope","Button","button","ProgressRing","progressRing","Icon","icon","AddNewPartners","_ref","_inviteConfig$section","inviteConfig","getFormConfigurations","sectionChildren","forEach","element","setRegionsOfPartners","partnerRegionConfig","countries","id","fieldInformation","options","useEffect","sectionChild","FormConfigUtility","clearConfigValues","inviteStore","StoreUtility","getState","partnerContactConfig","setPartnerContactConfig","useState","Invite","isFormValid","setFormValidity","disableInvite","setDisableInviteButton","isInviteInProgress","setInviteProgress","inviteMessage","setinviteMessage","inviteMessageAppearance","setInviteMessageAppearance","showLoader","setShowLoader","displayUploadSuccess","setDisplayUploadSuccess","isUploadInProgress","setUploadInProgress","uploadErrorMessage","setUploadErrorMessage","uploadErrorMessageAppearance","setUploadErrorMessageAppearance","fileTypeErrorMessage","fileSizeErrorMessage","chooseFileMessageAppearance","unsubscribe","Subject","artifactUrl","setArtifactUrl","checkFormValidity","formValidity","Object","values","reduce","acc","curr","accu","currValue","keys","length","valid","FormManager","formStructure","onFieldChange","key","object","fieldName","setConfigValues","partnerInviteInformation","inviteInformation","ProgramsUtility","requireApprovalUploadArtifact","disabled","onClick","UploadService","uploadFile","pipe","takeUntil","catchError","err","correlationId","of","subscribe","response","blobUrl","slot","marginLeft","display","color","indeterminate","labelPlacement","partnerDataValues","partnerData","sectionChildId","sectionChildValue","payload","programName","country","PartnerRegion","inviteUrl","EXTERNAL_ROUTES","INVITE_REDIRECTION_URL","InvitationService","submitInvitation","CountryCodeMapping","Réunion","Romania","Serbia","Russia","Rwanda","Qatar","Venezuela","Vietnam","Vanuatu","Seychelles","Sweden","Singapore","Slovenia","Slovakia","Somalia","Senegal","Suriname","Swaziland","Panama","Peru","Pakistan","Philippines","Poland","Palau","Portugal","Paraguay","Uganda","Ukraine","Uzbekistan","Uruguay","Zambia","Zimbabwe","Samoa","Togo","Chad","Tunisia","Tonga","Turkmenistan","Tajikistan","Tokelau","Thailand","Tuvalu","Taiwan","Turkey","Tanzania","Yemen","Mayotte","Kosovo","Saba","Brazil","Bahamas","Bhutan","Botswana","Belarus","Belize","Barbados","Bangladesh","Belgium","Bulgaria","Bahrain","Burundi","Benin","Bermuda","Brunei","Bolivia","Argentina","Antarctica","Aruba","Australia","Austria","Azerbaijan","Afghanistan","Andorra","Anguilla","Angola","Armenia","Albania","France","Micronesia","Finland","Fiji","Curaçao","Cyprus","Canada","Congo","Switzerland","Cameroon","Chile","Colombia","China","Ethiopia","Spain","Eritrea","Egypt","Estonia","Ecuador","Japan","Jamaica","Jordan","Jersey","Guam","Guatemala","Guadeloupe","Greece","Guyana","Georgia","Grenada","Guernsey","Gabon","Gambia","Greenland","Guinea","Gibraltar","Ghana","Algeria","Germany","Dominica","Djibouti","Denmark","Iceland","Iraq","Italy","India","Israel","Ireland","Indonesia","Niue","Nepal","Nauru","Netherlands","Norway","Nicaragua","Niger","Nigeria","Namibia","Kazakhstan","Korea","Kuwait","Kiribati","Cambodia","Comoros","Kenya","Kyrgyzstan","Croatia","Haiti","Hungary","Honduras","Mozambique","Malaysia","Mexico","Malawi","Maldives","Mauritius","Malta","Montserrat","Mauritania","Martinique","Mongolia","Myanmar","Mali","Madagascar","Montenegro","Moldova","Monaco","Morocco","Oman","Libya","Latvia","Lithuania","Luxembourg","Liberia","Lesotho","Liechtenstein","Lebanon","Laos","CompanyDetails","ServerData","opsToolConfiguration","Error","isReviewActionable","setIsReviewActionable","isRejectionAllowed","setRejectionAllowed","approveRejectMessage","setApproveRejectMessage","approveRejectMessageAppearance","setApproveRejectMessageAppearance","isApprovalAllowed","setApprovalAllowed","isReviewInProgress","setReviewInProgress","showReviewLoader","setShowReviewLoader","vettingErrorMessage","setVettingErrorMessage","vettingErrorMessageAppearance","setVettingErrorMessageAppearance","reviewFormDetails","setReviewFormDetails","structuredClone","reviewFields","countryCodeToCountryNameMapping","fromEntries","entries","map","_ref2","programConfig","programFamilies","programFamily","programs","reviewFieldKeys","reviewFieldKey","fieldConfigValue","valuePropertyName","getFieldValueFromCompanyDetails","companyDetails","_programConfig$review","_programConfig$review2","_programConfig$review3","_programConfig$review4","_programConfig$review5","_programConfig$review6","_programConfig$review7","_programConfig$review8","_programConfig$review9","_programConfig$review10","_programConfig$review11","_programConfig$review12","review","approvalValuesMatched","approveConditions","valueMatch","every","_ref3","_reviewFormDetails$ke","_reviewFormDetails$ke2","approvalRequiredFieldsPresent","requiredFields","_reviewFormDetails$ke3","_reviewFormDetails$ke4","rejectionValuesMatched","rejectConditions","_ref4","_reviewFormDetails$ke5","_reviewFormDetails$ke6","rejectionRequiredFieldsPresent","_reviewFormDetails$ke7","_reviewFormDetails$ke8","partnerDetail","fieldKey","pathToValue","CommonUtility","getValueFromPath","Date","handleApproveReject","enrollmentReviewData","_props$companyDetails","_props$companyDetails2","_props$companyDetails3","_props$companyDetails4","_props$companyDetails5","_props$companyDetails6","_props$companyDetails7","accountId","account","partnerProfile","address","UnifiedEnrollmentService","reviewEnrollmentDecision","then","isReviewLoading","accountProfileErrorMessage","_ref6","DynamicFormField","reviewFormDetailsClone","onApproval","_reviewFormDetails$ap","_reviewFormDetails$ap2","enrollmentReview","decision","justification","approveRejectComment","additionalProperties","_ref5","catch","error","onRejection","_reviewFormDetails$ap3","_reviewFormDetails$ap4","Text","text","OnboardingHistory","onboardingHistoryRecords","filter","record","actor","eventDate","sort","a","b","getTime","onboardingStatus","index","Fragment","Intl","DateTimeFormat","locale","year","month","day","format","eventName","ButtonGroup","buttonGroup","Checkbox","checkbox","CheckboxGroup","checkboxGroup","FilterPill","filterPill","Dropdown","dropdown","VisuallyHidden","visuallyHidden","Menu","menu","MenuItem","menuItem","FilterDropdown","multiSelect","canClear","tooltip","onSelectionChange","onClear","checkboxGroupRef","useRef","dropdownRef","ref","title","height","caret","valueCount","clear","valueAsArray","option","_checkboxGroupRef$cur","_checkboxGroupRef$cur2","current","role","checked","onHeChange","InvitationStatus","SCOPE_LIST","instance","axios","create","baseURL","BASE_API_PATH","EuaService","_dec","Logger","_dec2","_dec3","_dec4","_class","BaseHelperService","handleApiError","constructor","super","getSuccessResponse","getUserJurisdiction","uri","from","this","performGet","getClaimsFromEUA","applicationName","_applyDecoratedDescriptor","prototype","getOwnPropertyDescriptor","TaskMenu","taskMenu","TaskItem","taskItem","DataGrid","dataGrid","PageTitle","pageTitle","CommandBar","commandBar","SearchBox","searchBox","Pagination","pagination","Tabs","tabs","Tab","tab","TabPanel","tabPanel","FlyInPanel","flyInPanel","Divider","divider","Tooltip","withRouter","useCache","loadingClaims","setLoadingClaims","isOpenInvitePanel","setIsOpenInvitePanel","isOpenReviewPanel","setIsOpenReviewPanel","showReviewButton","setShowReviewButton","partnerDetailsRows","setPartnerDetailsRows","paginationApis","setPaginationApis","firstPage","prevPage","nextPage","lastPage","pageNumber","setPageNumber","loadingDataGrid","setLoadingDataGrid","pageSize","setCountries","setProgramFamily","setProgramName","isInviteSupported","setIsInviteSupported","hasInviteRole","setHasInviteRole","enrollmentRequestsError","setEnrollmentRequestsErrorMessage","setAccountProfileErrorMessage","isPartnerDetailSectionLoading","setIsPartnerDetailSectionLoading","isHistorySectionLoading","setIsHistorySectionLoading","selectedEnrollmentVettingRecords","setSelectedEnrollmentVettingRecords","hasNextPage","setHasNextPage","hasPreviousPage","setHasPreviousPage","roleInfo","setRoleInfo","columns","setColumns","programFilters","setProgramFilters","searchableColumns","setSearchableColumns","searchedColumn","setSearchedColumn","searchFilter","setSearchFilter","selectedCompanyDetails","setSelectedCompanyDetails","sortColumn","setSortColumn","totalCount","setTotalCount","getOpsToolProgramConfig","_opsToolConfiguration","_opsToolConfiguration2","_opsToolConfiguration3","prevFilter","_programConfig$isInvi","setProgramSpecificScopeValues","some","_programConfig$rolesR","rolesRequiredToInvite","scopes","scopeName","scopeValue","getFilters","getColumns","getSearchFilter","_inviteFilter$values","inviteFilter","INVITED","fetchInvitations","fetchEnrollmentRequests","handleSort","sortBy","detail","sortDirection","isAscending","next","complete","createCountriesParam","_programFilters$count","_programFilters$count2","countryNamesArray","countriesParam","_searchFilter$values$","_searchFilter$values","_programFilters$enrol","_programFilters$enrol2","_programFilters$enrol3","_programFilters$vetti","_programFilters$vetti2","_programFilters$vetti3","searchString","encodeURIComponent","getEnrollmentRequestsFromGQL","createCountriesParamForInvite","_programFilters$count3","_programFilters$count4","_programFilters$count5","_searchFilter$values$2","_searchFilter$values2","getInvitations","_programConfig$access","_authorizedProgramSco","programFamilyConfig","accessScopes","authorizedProgramScopeValues","_role$scopes$find","find","flat","Set","setDataGridFields","cell","column","isGqlCall","columnConfig","field","getCellValueFromPartnerDetails","columnKey","dataPropertyName","getRequests","url","_inviteFilter$values2","enrollmentRequestsResponse","_enrollmentRequestsRe","setPartnerDetailsAndPaginatedUrls","setRowsForDataGrid","data","JSON","parse","getAllInvitations","invitationsResponse","enrollment","cells","customData","fetchParams","startIndex","indexOf","substring","fetchParamsForGQL","_searchFilter$values$3","_searchFilter$values3","_programFilters$enrol4","_programFilters$enrol5","_programFilters$enrol6","_programFilters$vetti4","_programFilters$vetti5","_programFilters$vetti6","before","after","enrollmentRequestResponseFromGQL","prefix","endCursor","startCursor","setPaginationForGQLResponse","prev","first","last","setPaginationForInvitations","handlePreventDefaultEvent","currentTarget","source","preventDefault","_inviteFilter$values3","_programConfig$datagr","_columns","datagridInviteColumnsKeys","datagridColumnsKeys","content","displayName","sortable","width","lineClamp","opsToolFilters","filters","_programFilters","defaultValues","_opsToolFilters$key$o","elem","visible","getDynamicFilterOptions","filterKey","setFilterValue","isChecked","programFiltersClone","filterconfig","disabledConditions","isDisabled","conditionKey","conditionValues","conditionValue","_programFiltersClone$","_programFiltersClone$2","hideConditions","isHidden","_programFiltersClone$3","_programFiltersClone$4","search","_inviteFilter$values4","_programConfig$datagr2","_programConfig$datagr3","_programConfig$datagr4","_programConfig$datagr5","columnsForSearch","col","searchable","onReviewClick","partnerDetails","_partnerDetails$accou","_partnerDetails$accou2","_partnerDetails$accou3","getProgramEnrollmentprofile","companyDetailsUpdated","mapAccountDetails","_enrollment$agreement","_enrollment$enrollmen","_enrollment$enrollmen3","_enrollment$account","_enrollment$account$a","_enrollment$account$a2","_enrollment$enrollmen5","_enrollment$enrollmen2","_enrollment$enrollmen4","_enrollment$enrollmen6","_enrollment$enrollmen7","enrollmentCreatedDate","push","enrollmentLastUpdatedDate","enrollmentStatus","agreementSignatures","agreementSignature","_agreementSignature$a","_agreementSignature$a2","_agreementSignature$a3","_agreementSignature$a4","agreementSignatureEvent","agreementDetails","agreementType","agreementVersion","replace","signedOn","agreementSignatureUser","email","enrollmentVetting","enrollmentVettingStatus","VettingStartedEvent","vettingStartDate","vettingCompletedDate","VettingCompletedEvent","accountMetadata","digitalCertificates","digitalCertificate","certificateName","validatedDate","enrollmentApproval","enrollmentReviewedOn","enrollmentApprovalStatus","enrollmentReviewedBy","createOnboardingHistory","accountProfileError","item-type","_ref7","_ref8","onHeSelectedChange","selected","activeId","tabChangeEvent","_tabChangeEvent$targe","activeProgram","_ref9","_ref10","_programFilters$invit","_programFilters$invit2","_opsToolConfiguration4","_searchFilter$values$4","_searchFilter$values5","_opsToolConfiguration6","select","rows","Array","onHeSort","onHeRowSelectChange","handleDataGridChange","loading","flex","_ref11","_filterConfig$values","_filterConfig$options","filterConfig","_filterConfig$values2","border","anchor","placement","fixedPlacement","_opsToolConfiguration5","onHeSearch","input","_input$trim","_searchFilter$values4","trim","handleSearchInput","placeholder","non-numeric","onHeFirstPage","onHeLastPage","onHeNextPage","onHePreviousPage","heading","onHeRequestClose","onHeAfterHide","_ref12","_ref13","Loader","blockOperation","fullScreen","NotAuthorizedComponent","ManagePartners","PARTNER_INVITATIONS","totalPageCount","enrollmentId","programId","isActive","expiryDateTime","PartnerName","contactEmail","contactPhone","contactName","PartnerMPNId","preApprovalDateTime","createdDateTime","createdBy","updatedDateTime","updatedBy","PARTNER_INVITATION","PartnerId","PartnerContactName","PartnerContactEmail","PartnerContactPhone","ApproverName","ApprovalDate","CLASS_NAME","_dec5","invitationFormPayload","location","window","host","toLowerCase","performPost","getInvitationById","encodedInviteId","bodyFormData","FormData","append","config","headers"],"mappings":"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","file":"en-us/dashboard/account/exp/staticres/static/js/14.d08acff1.chunk.js","sourcesContent":["import React from \"react\";\r\nimport {\r\n messageBar,\r\n createScope,\r\n partnerCenterTheme,\r\n} from \"@harmony/enablers/react\";\r\n\r\nconst scope = createScope({\r\n reactInstance: React,\r\n theme: partnerCenterTheme,\r\n});\r\n\r\nconst MessageBar = scope.forReact(messageBar);\r\n\r\nexport function showMessageBar(message: string, appearance: any) {\r\n return (\r\n <>\r\n {\" \"}\r\n <MessageBar appearance={appearance} open>\r\n <div style={{ whiteSpace: \"pre-wrap\" }}>{message}</div>\r\n </MessageBar>\r\n </>\r\n );\r\n}\r\n","import React from \"react\";\r\nimport { Pipe, ResourcePipe } from \"src/pipes\";\r\n\r\nconst UploadFile = React.forwardRef((props: any) => {\r\n const onChooseFile = (event: any) => {\r\n if (!!event.target.value) {\r\n let file = event.target.files[0];\r\n if (!!file) {\r\n const fileExtension = file.name.split(\".\").at(-1);\r\n const allowedFileTypes = props?.allowedFileTypes;\r\n if (!allowedFileTypes.includes(fileExtension)) {\r\n props.setFileTypeErrorMessage(\r\n `File type not supported. Allowed types are ${allowedFileTypes.join(\r\n \", \"\r\n )}`\r\n );\r\n props.setChooseFileMessageAppearance(\"error\");\r\n return false;\r\n } else if (file.size > props?.fileSizeLimit) {\r\n props.setFileSizeErrorMessage(\r\n \"Please upload a file smaller than \" + props?.fileSizeLimit.split(\"e\")[0] + \" MB\"\r\n );\r\n props.setChooseFileMessageAppearance(\"error\");\r\n\r\n return false;\r\n } else {\r\n props.setFileSizeErrorMessage(\"\");\r\n props.setFileTypeErrorMessage(\"\");\r\n props.setChooseFileMessageAppearance(\"\");\r\n props.setChooseFileMessageAppearance(\"\");\r\n props.setFile(file);\r\n }\r\n }\r\n } else {\r\n event.target.value = null;\r\n props.setFile(undefined);\r\n props.setFileSizeErrorMessage(\"\");\r\n props.setFileTypeErrorMessage(\"\");\r\n props.setChooseFileMessageAppearance(\"\");\r\n props.setChooseFileMessageAppearance(\"\");\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n <label className=\"form-control__label spacer-sm-top\">\r\n {Pipe(ResourcePipe)(props.label)}\r\n {Pipe(ResourcePipe)(props.extensions)}\r\n {props?.required && <>{Pipe(ResourcePipe)(\"Required\")}</>}\r\n </label>\r\n\r\n <input\r\n className=\"spacer-xxs-top\"\r\n required\r\n accept={props?.acceptedFormats}\r\n type=\"file\"\r\n onChange={(e: any) => onChooseFile(e)}\r\n />\r\n </>\r\n );\r\n});\r\n\r\nexport default UploadFile;\r\n","import {\r\n createScope,\r\n partnerCenterTheme,\r\n button,\r\n icon,\r\n progressRing,\r\n} from \"@harmony/enablers/react\";\r\nimport React, { useEffect, useState } from \"react\";\r\nimport { FormManager } from \"src/component/reusables/form-manager/form-manager\";\r\nimport { getFormConfigurations } from \"src/constants/form-configurations.constants\";\r\nimport { InvitationService } from \"src/services/api/invitation.service\";\r\nimport { InvitationFormPayload } from \"src/models/invitation-form-payload\";\r\nimport { UploadService } from \"src/services/api/upload.service\";\r\nimport { Pipe, ResourcePipe } from \"src/pipes\";\r\nimport { ApiError, Dictionary } from \"src/models\";\r\n\r\nimport { showMessageBar } from \"src/component/reusables/message-bar\";\r\nimport { catchError, of, Subject } from \"rxjs\";\r\nimport { takeUntil } from \"rxjs/operators\";\r\nimport UploadFile from \"src/component/reusables/uploadFile\";\r\nimport { ProgramsUtility, StoreUtility, FormConfigUtility } from \"src/utility\";\r\nimport { TInviteState } from \"src/store/invitation\";\r\nimport { CSSProperties } from \"@harmony/enablers/react/scope-for-react\";\r\nimport { EXTERNAL_ROUTES } from \"src/constants\";\r\n\r\nconst scope = createScope({\r\n reactInstance: React,\r\n theme: partnerCenterTheme,\r\n});\r\n\r\nconst Button = scope.forReact(button);\r\n\r\nconst ProgressRing = scope.forReact(progressRing);\r\nconst Icon = scope.forReact(icon);\r\ntype NewPartnerPropType = Partial<{\r\n programName: string;\r\n countries: string[];\r\n dispatch: {\r\n invite: Dictionary<(...args: any[]) => void>;\r\n };\r\n}>;\r\n\r\nconst setRegionsOfPartners = (\r\n partnerRegionConfig: any,\r\n countries: string[] | undefined\r\n) => {\r\n if (!!partnerRegionConfig) {\r\n partnerRegionConfig.fieldInformation.options = countries;\r\n }\r\n};\r\n\r\nexport const AddNewPartners: React.FC<NewPartnerPropType> = ({ ...props }) => {\r\n let inviteConfig: any = getFormConfigurations(\"Invite\");\r\n\r\n // Adding partner region based on EUA response\r\n inviteConfig?.sectionChildren?.forEach((element: any) => {\r\n if (!!element && element.id === \"PartnerRegion\") {\r\n setRegionsOfPartners(element, props?.countries);\r\n }\r\n });\r\n\r\n //Unmounting\r\n useEffect(\r\n () => () => {\r\n inviteConfig.sectionChildren.forEach((sectionChild: any) => {\r\n FormConfigUtility.clearConfigValues(sectionChild);\r\n });\r\n },\r\n []\r\n );\r\n\r\n let inviteStore = StoreUtility.getState(\"invite\") as TInviteState;\r\n\r\n let [partnerContactConfig, setPartnerContactConfig]: any = useState({\r\n Invite: inviteConfig,\r\n });\r\n\r\n let [isFormValid, setFormValidity] = useState(false);\r\n let [disableInvite, setDisableInviteButton] = useState(false);\r\n let [isInviteInProgress, setInviteProgress] = useState(false);\r\n\r\n const [inviteMessage, setinviteMessage] = useState(\"\");\r\n const [inviteMessageAppearance, setInviteMessageAppearance] = useState(\"\");\r\n\r\n let [showLoader, setShowLoader] = useState(false);\r\n let [displayUploadSuccess, setDisplayUploadSuccess] = useState(false);\r\n const [isUploadInProgress, setUploadInProgress] = useState(false);\r\n const [uploadErrorMessage, setUploadErrorMessage] = useState(\"\");\r\n const [uploadErrorMessageAppearance, setUploadErrorMessageAppearance] =\r\n useState(\"\");\r\n\r\n const [fileTypeErrorMessage, setFileTypeErrorMessage] = useState(\"\");\r\n const [fileSizeErrorMessage, setFileSizeErrorMessage] = useState(\"\");\r\n const [chooseFileMessageAppearance, setChooseFileMessageAppearance] =\r\n useState(\"\");\r\n\r\n const unsubscribe = new Subject<void>();\r\n const [file, setFile] = React.useState();\r\n const [artifactUrl, setArtifactUrl] = React.useState(\"\");\r\n\r\n const onFieldChange = (key: string, object: any) => {\r\n const fieldName = object[\"fieldName\"];\r\n let fieldValue: any = {};\r\n fieldValue[fieldName] = object[fieldName];\r\n\r\n partnerContactConfig[key].sectionChildren.forEach((sectionChild: any) => {\r\n if (sectionChild?.id === fieldName) {\r\n FormConfigUtility.setConfigValues(sectionChild, object, fieldName);\r\n }\r\n });\r\n setPartnerContactConfig(partnerContactConfig);\r\n checkFormValidity();\r\n\r\n let partnerInviteInformation = inviteStore.inviteInformation;\r\n if (!(key in partnerInviteInformation)) {\r\n partnerInviteInformation[key] = {};\r\n }\r\n partnerInviteInformation[key][fieldName] =\r\n !!object && !!object[fieldName] && !!object[fieldName][\"value\"]\r\n ? object[fieldName][\"value\"]\r\n : partnerInviteInformation[key][fieldName];\r\n };\r\n\r\n const checkFormValidity = () => {\r\n let formValidity = Object.values(\r\n partnerContactConfig.Invite\r\n ).reduce<boolean>((acc, curr: any) => {\r\n return (\r\n acc &&\r\n Object.values(curr).reduce<boolean>((accu, currValue: any) => {\r\n if (currValue == null || Object.keys(currValue).length == 0)\r\n return accu && true;\r\n else {\r\n return accu && currValue.fieldInformation.valid;\r\n }\r\n }, true)\r\n );\r\n }, true);\r\n setFormValidity(formValidity);\r\n };\r\n\r\n const onUploadFile = (event: any) => {\r\n setUploadInProgress(true);\r\n if (!!file) {\r\n UploadService.uploadFile(file)\r\n .pipe(\r\n takeUntil(unsubscribe),\r\n catchError((err: ApiError) => {\r\n setUploadErrorMessage(\r\n Pipe(ResourcePipe)(\"SomethingWentWrong\") +\r\n `\\nCorrelationId : ${err?.correlationId}`\r\n );\r\n setUploadErrorMessageAppearance(\"error\");\r\n setUploadInProgress(false);\r\n setFile(undefined);\r\n return of(null);\r\n })\r\n )\r\n .subscribe((response: any) => {\r\n if (!!response) {\r\n setArtifactUrl(response?.blobUrl);\r\n setDisplayUploadSuccess(true);\r\n setUploadInProgress(false);\r\n setFile(undefined);\r\n }\r\n });\r\n }\r\n };\r\n\r\n const onFormSubmit = (event: any) => {\r\n setDisableInviteButton(true);\r\n setInviteProgress(true);\r\n setShowLoader(true);\r\n let partnerDataValues = partnerContactConfig.Invite;\r\n let partnerData: any = {};\r\n\r\n partnerDataValues.sectionChildren.forEach((sectionChild: any) => {\r\n let sectionChildId = sectionChild.id;\r\n let sectionChildValue = sectionChild.fieldInformation.value;\r\n partnerData[sectionChildId] = sectionChildValue;\r\n });\r\n\r\n let payload: InvitationFormPayload = {\r\n programName: props?.programName,\r\n artifactUrl: artifactUrl,\r\n country: partnerData.PartnerRegion,\r\n inviteUrl: EXTERNAL_ROUTES.INVITE_REDIRECTION_URL,\r\n partnerData: partnerData,\r\n };\r\n\r\n if (!!props?.programName) {\r\n InvitationService.submitInvitation(props?.programName, payload)\r\n .pipe(\r\n takeUntil(unsubscribe),\r\n catchError((err: ApiError) => {\r\n setinviteMessage(\r\n Pipe(ResourcePipe)(\"SomethingWentWrong\") +\r\n `\\nCorrelationId : ${err?.correlationId}`\r\n );\r\n setInviteMessageAppearance(\"error\");\r\n setInviteProgress(false);\r\n setShowLoader(false);\r\n return of(null);\r\n })\r\n )\r\n .subscribe((response: any) => {\r\n if (!!response) {\r\n setinviteMessage(Pipe(ResourcePipe)(\"PartnerInvitedSuccessfully\"));\r\n setInviteMessageAppearance(\"success\");\r\n setInviteProgress(false);\r\n setShowLoader(false);\r\n }\r\n });\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n {!!inviteMessage &&\r\n showMessageBar(inviteMessage, inviteMessageAppearance)}\r\n {!!uploadErrorMessage &&\r\n showMessageBar(uploadErrorMessage, uploadErrorMessageAppearance)}\r\n {!!fileSizeErrorMessage &&\r\n showMessageBar(fileSizeErrorMessage, chooseFileMessageAppearance)}\r\n {!!fileTypeErrorMessage &&\r\n showMessageBar(fileTypeErrorMessage, chooseFileMessageAppearance)}\r\n\r\n <FormManager\r\n formStructure={partnerContactConfig}\r\n onFieldChange={onFieldChange}\r\n />\r\n\r\n {!!ProgramsUtility.requireApprovalUploadArtifact && (\r\n <>\r\n <UploadFile\r\n required={true}\r\n extensions=\"(.msg, .pdf)\"\r\n setFileSizeErrorMessage={setFileSizeErrorMessage}\r\n allowedFileTypes={[\"msg\", \"pdf\", \"application/pdf\"]}\r\n fileSizeLimit=\"5e6\"\r\n acceptedFormats=\"application/pdf, pdf/*, .msg\"\r\n label=\"ApprovalMail\"\r\n setFileTypeErrorMessage={setFileTypeErrorMessage}\r\n setChooseFileMessageAppearance={setChooseFileMessageAppearance}\r\n setFile={setFile}\r\n ></UploadFile>\r\n\r\n <Button\r\n className=\"remove-all-padding\"\r\n appearance=\"command\"\r\n disabled={!file || isUploadInProgress}\r\n onClick={onUploadFile}\r\n >\r\n <Icon slot=\"start\" name=\"cloudupload\"></Icon>\r\n {Pipe(ResourcePipe)(\"Upload\")}\r\n\r\n {!isUploadInProgress && displayUploadSuccess && (\r\n <div style={{ marginLeft: \"16px\", display: \"inline\" }}>\r\n <Icon\r\n slot=\"start\"\r\n name=\"accept\"\r\n style={{ color: \"green\" }}\r\n ></Icon>\r\n </div>\r\n )}\r\n </Button>\r\n\r\n {isUploadInProgress && (\r\n <ProgressRing\r\n style={{ \"--ring-size\": \"16px\" } as CSSProperties}\r\n indeterminate={true}\r\n label=\"loading\"\r\n labelPlacement=\"bottom\"\r\n />\r\n )}\r\n </>\r\n )}\r\n\r\n <div slot=\"footer\" className=\"spacer-xxs-top\">\r\n <Button\r\n disabled={!isFormValid || !artifactUrl || disableInvite}\r\n appearance=\"primary\"\r\n onClick={onFormSubmit}\r\n >\r\n Invite\r\n </Button>\r\n {isInviteInProgress && showLoader && (\r\n <ProgressRing\r\n style={\r\n { \"--ring-size\": \"32px\", \"margin-left\": \"32px\" } as CSSProperties\r\n }\r\n indeterminate={true}\r\n label=\"loading\"\r\n labelPlacement=\"bottom\"\r\n />\r\n )}\r\n </div>\r\n </>\r\n );\r\n};\r\n","export const CountryCodeMapping = {\r\n Réunion: \"RE\",\r\n Romania: \"RO\",\r\n Serbia: \"RS\",\r\n Russia: \"RU\",\r\n Rwanda: \"RW\",\r\n Qatar: \"QA\",\r\n Venezuela: \"VE\",\r\n \"British Virgin Islands\": \"VG\",\r\n \"Vatican City\": \"VA\",\r\n \"Saint Vincent and the Grenadines\": \"VC\",\r\n Vietnam: \"VN\",\r\n \"U.S. Virgin Islands\": \"VI\",\r\n Vanuatu: \"VU\",\r\n \"Saudi Arabia\": \"SA\",\r\n Seychelles: \"SC\",\r\n \"Solomon Islands\": \"SB\",\r\n Sweden: \"SE\",\r\n Singapore: \"SG\",\r\n Slovenia: \"SI\",\r\n \"St Helena Ascension Tristan da Cunha\": \"SH\",\r\n Slovakia: \"SK\",\r\n \"Svalbard and Jan Mayen\": \"SJ\",\r\n \"San Marino\": \"SM\",\r\n \"Sierra Leone\": \"SL\",\r\n Somalia: \"SO\",\r\n Senegal: \"SN\",\r\n \"South Sudan\": \"SS\",\r\n Suriname: \"SR\",\r\n \"São Tomé and PrÃncipe\": \"ST\",\r\n \"El Salvador\": \"SV\",\r\n \"Sint Maarten\": \"SX\",\r\n Swaziland: \"SZ\",\r\n Panama: \"PA\",\r\n \"French Polynesia\": \"PF\",\r\n \"Papua New Guinea\": \"PG\",\r\n Peru: \"PE\",\r\n Pakistan: \"PK\",\r\n Philippines: \"PH\",\r\n \"Pitcairn Islands\": \"PN\",\r\n Poland: \"PL\",\r\n \"Saint Pierre and Miquelon\": \"PM\",\r\n \"Puerto Rico\": \"PR\",\r\n \"Palestinian Authority\": \"PS\",\r\n Palau: \"PW\",\r\n Portugal: \"PT\",\r\n Paraguay: \"PY\",\r\n Uganda: \"UG\",\r\n Ukraine: \"UA\",\r\n \"U.S. Outlying Islands\": \"UM\",\r\n \"United States\": \"US\",\r\n Uzbekistan: \"UZ\",\r\n Uruguay: \"UY\",\r\n Zambia: \"ZM\",\r\n \"South Africa\": \"ZA\",\r\n Zimbabwe: \"ZW\",\r\n \"Wallis and Futuna\": \"WF\",\r\n Samoa: \"WS\",\r\n \"French Southern Territories\": \"TF\",\r\n Togo: \"TG\",\r\n Chad: \"TD\",\r\n \"Turks and Caicos Islands\": \"TC\",\r\n Tunisia: \"TN\",\r\n Tonga: \"TO\",\r\n \"Timor-Leste\": \"TL\",\r\n Turkmenistan: \"TM\",\r\n Tajikistan: \"TJ\",\r\n Tokelau: \"TK\",\r\n Thailand: \"TH\",\r\n Tuvalu: \"TV\",\r\n Taiwan: \"TW\",\r\n \"Trinidad and Tobago\": \"TT\",\r\n Turkey: \"TR\",\r\n Tanzania: \"TZ\",\r\n Yemen: \"YE\",\r\n Mayotte: \"YT\",\r\n \"Jan Mayen\": \"XJ\",\r\n Kosovo: \"XK\",\r\n \"Sint Eustatius\": \"XE\",\r\n Saba: \"XS\",\r\n \"Bonaire Sint Eustatius and Saba\": \"BQ\",\r\n Brazil: \"BR\",\r\n Bahamas: \"BS\",\r\n Bhutan: \"BT\",\r\n \"Bouvet Island\": \"BV\",\r\n Botswana: \"BW\",\r\n Belarus: \"BY\",\r\n Belize: \"BZ\",\r\n \"Bosnia and Herzegovina\": \"BA\",\r\n Barbados: \"BB\",\r\n Bangladesh: \"BD\",\r\n Belgium: \"BE\",\r\n \"Burkina Faso\": \"BF\",\r\n Bulgaria: \"BG\",\r\n Bahrain: \"BH\",\r\n Burundi: \"BI\",\r\n Benin: \"BJ\",\r\n \"Saint Barthélemy\": \"BL\",\r\n Bermuda: \"BM\",\r\n Brunei: \"BN\",\r\n Bolivia: \"BO\",\r\n \"American Samoa\": \"AS\",\r\n Argentina: \"AR\",\r\n Antarctica: \"AQ\",\r\n Aruba: \"AW\",\r\n Australia: \"AU\",\r\n Austria: \"AT\",\r\n Azerbaijan: \"AZ\",\r\n \"Ã…land Islands\": \"AX\",\r\n \"Antigua and Barbuda\": \"AG\",\r\n Afghanistan: \"AF\",\r\n \"United Arab Emirates\": \"AE\",\r\n Andorra: \"AD\",\r\n Anguilla: \"AI\",\r\n Angola: \"AO\",\r\n Armenia: \"AM\",\r\n Albania: \"AL\",\r\n France: \"FR\",\r\n Micronesia: \"FM\",\r\n \"Faroe Islands\": \"FO\",\r\n Finland: \"FI\",\r\n Fiji: \"FJ\",\r\n \"Falkland Islands\": \"FK\",\r\n \"Costa Rica\": \"CR\",\r\n Curaçao: \"CW\",\r\n \"Cabo Verde\": \"CV\",\r\n Cyprus: \"CY\",\r\n \"Christmas Island\": \"CX\",\r\n \"Czechia\": \"CZ\",\r\n Canada: \"CA\",\r\n \"Cocos (Keeling) Islands\": \"CC\",\r\n \"Congo (DRC)\": \"CD\",\r\n Congo: \"CG\",\r\n \"Central African Republic\": \"CF\",\r\n \"Côte d’Ivoire\": \"CI\",\r\n Switzerland: \"CH\",\r\n \"Cook Islands\": \"CK\",\r\n Cameroon: \"CM\",\r\n Chile: \"CL\",\r\n Colombia: \"CO\",\r\n China: \"CN\",\r\n Ethiopia: \"ET\",\r\n Spain: \"ES\",\r\n Eritrea: \"ER\",\r\n Egypt: \"EG\",\r\n Estonia: \"EE\",\r\n Ecuador: \"EC\",\r\n Japan: \"JP\",\r\n Jamaica: \"JM\",\r\n Jordan: \"JO\",\r\n Jersey: \"JE\",\r\n Guam: \"GU\",\r\n Guatemala: \"GT\",\r\n \"Guinea-Bissau\": \"GW\",\r\n \"Equatorial Guinea\": \"GQ\",\r\n Guadeloupe: \"GP\",\r\n \"South Georgia and South Sandwich Islands\": \"GS\",\r\n Greece: \"GR\",\r\n Guyana: \"GY\",\r\n Georgia: \"GE\",\r\n Grenada: \"GD\",\r\n Guernsey: \"GG\",\r\n \"French Guiana\": \"GF\",\r\n Gabon: \"GA\",\r\n \"United Kingdom\": \"GB\",\r\n Gambia: \"GM\",\r\n Greenland: \"GL\",\r\n Guinea: \"GN\",\r\n Gibraltar: \"GI\",\r\n Ghana: \"GH\",\r\n Algeria: \"DZ\",\r\n Germany: \"DE\",\r\n \"Dominican Republic\": \"DO\",\r\n Dominica: \"DM\",\r\n Djibouti: \"DJ\",\r\n Denmark: \"DK\",\r\n Iceland: \"IS\",\r\n Iraq: \"IQ\",\r\n Italy: \"IT\",\r\n \"British Indian Ocean Territory\": \"IO\",\r\n India: \"IN\",\r\n \"Isle of Man\": \"IM\",\r\n Israel: \"IL\",\r\n Ireland: \"IE\",\r\n Indonesia: \"ID\",\r\n \"New Zealand\": \"NZ\",\r\n Niue: \"NU\",\r\n Nepal: \"NP\",\r\n Nauru: \"NR\",\r\n Netherlands: \"NL\",\r\n Norway: \"NO\",\r\n Nicaragua: \"NI\",\r\n Niger: \"NE\",\r\n \"Norfolk Island\": \"NF\",\r\n Nigeria: \"NG\",\r\n Namibia: \"NA\",\r\n \"New Caledonia\": \"NC\",\r\n \"Cayman Islands\": \"KY\",\r\n Kazakhstan: \"KZ\",\r\n Korea: \"KR\",\r\n Kuwait: \"KW\",\r\n Kiribati: \"KI\",\r\n Cambodia: \"KH\",\r\n Comoros: \"KM\",\r\n \"Saint Kitts and Nevis\": \"KN\",\r\n Kenya: \"KE\",\r\n Kyrgyzstan: \"KG\",\r\n Croatia: \"HR\",\r\n Haiti: \"HT\",\r\n Hungary: \"HU\",\r\n \"Hong Kong SAR\": \"HK\",\r\n Honduras: \"HN\",\r\n \"Heard Island and McDonald Islands\": \"HM\",\r\n Mozambique: \"MZ\",\r\n Malaysia: \"MY\",\r\n Mexico: \"MX\",\r\n Malawi: \"MW\",\r\n Maldives: \"MV\",\r\n Mauritius: \"MU\",\r\n Malta: \"MT\",\r\n Montserrat: \"MS\",\r\n Mauritania: \"MR\",\r\n Martinique: \"MQ\",\r\n \"Northern Mariana Islands\": \"MP\",\r\n \"Macao SAR\": \"MO\",\r\n Mongolia: \"MN\",\r\n Myanmar: \"MM\",\r\n Mali: \"ML\",\r\n \"North Macedonia\": \"MK\",\r\n \"Marshall Islands\": \"MH\",\r\n Madagascar: \"MG\",\r\n \"Saint Martin\": \"MF\",\r\n Montenegro: \"ME\",\r\n Moldova: \"MD\",\r\n Monaco: \"MC\",\r\n Morocco: \"MA\",\r\n Oman: \"OM\",\r\n Libya: \"LY\",\r\n Latvia: \"LV\",\r\n Lithuania: \"LT\",\r\n Luxembourg: \"LU\",\r\n Liberia: \"LR\",\r\n Lesotho: \"LS\",\r\n \"Sri Lanka\": \"LK\",\r\n Liechtenstein: \"LI\",\r\n Lebanon: \"LB\",\r\n \"Saint Lucia\": \"LC\",\r\n Laos: \"LA\",\r\n};\r\n","import {\r\n createScope,\r\n partnerCenterTheme,\r\n button,\r\n messageBar,\r\n progressRing,\r\n} from \"@harmony/enablers/react\";\r\nimport React, { useEffect, useState } from \"react\";\r\nimport { Pipe, ResourcePipe } from \"src/pipes\";\r\nimport { UnifiedEnrollmentService } from \"src/services\";\r\nimport { IEnrollmentReview } from \"src/models/partner-operations-tool/partnerDetails.model\";\r\nimport { ApiError, Dictionary } from \"../../../../models\";\r\nimport { CSSProperties } from \"@harmony/enablers/react/scope-for-react\";\r\nimport { OpsToolReviewFieldConfig } from \"../../../../models/partner-operations-tool/opstoolConfig.model\";\r\nimport { CommonUtility, ServerData } from \"src/utility\";\r\nimport { CountryCodeMapping } from \"src/mocks/country-code-mapping\";\r\nimport { DynamicFormField } from \"src/component/reusables/dynamic-form-field/dynamic-form-field\";\r\n\r\nconst scope = createScope({\r\n reactInstance: React,\r\n theme: partnerCenterTheme,\r\n});\r\n\r\nconst ProgressRing = scope.forReact(progressRing);\r\nconst MessageBar = scope.forReact(messageBar);\r\n\r\ntype CompanyDetailsPropType = {\r\n programFamily: string;\r\n programName: string;\r\n companyDetails: any;\r\n} & Partial<{\r\n isReviewLoading?: boolean;\r\n accountProfileErrorMessage: string;\r\n}>;\r\nconst Button = scope.forReact(button);\r\n\r\nexport const CompanyDetails: React.FC<CompanyDetailsPropType> = ({\r\n ...props\r\n}) => {\r\n if (!ServerData.opsToolConfiguration)\r\n throw new Error(\"OpsToolConfiguration is not set\");\r\n\r\n const opsToolConfiguration = ServerData.opsToolConfiguration;\r\n const [isReviewActionable, setIsReviewActionable] = useState(false);\r\n const [isRejectionAllowed, setRejectionAllowed] = useState(false);\r\n const [approveRejectMessage, setApproveRejectMessage] = useState(\"\");\r\n const [approveRejectMessageAppearance, setApproveRejectMessageAppearance] =\r\n useState(\"\");\r\n const [isApprovalAllowed, setApprovalAllowed] = useState(false);\r\n\r\n const [isReviewInProgress, setReviewInProgress] = useState(false);\r\n const [showReviewLoader, setShowReviewLoader] = useState(false);\r\n const [vettingErrorMessage, setVettingErrorMessage] = useState(\"\");\r\n const [vettingErrorMessageAppearance, setVettingErrorMessageAppearance] =\r\n useState(\"\");\r\n const [reviewFormDetails, setReviewFormDetails] = useState<\r\n Dictionary<OpsToolReviewFieldConfig>\r\n >(structuredClone(opsToolConfiguration.reviewFields));\r\n\r\n const countryCodeToCountryNameMapping = Object.fromEntries(\r\n Object.entries(CountryCodeMapping).map(([key, value]) => [value, key])\r\n );\r\n\r\n const programConfig =\r\n opsToolConfiguration.programFamilies[props.programFamily].programs[\r\n props.programName\r\n ];\r\n\r\n // Unmounting while closing company details component\r\n useEffect(\r\n () => () => {\r\n setApproveRejectMessage(\"\");\r\n setApproveRejectMessageAppearance(\"\");\r\n setVettingErrorMessage(\"\");\r\n setVettingErrorMessageAppearance(\"\");\r\n },\r\n []\r\n );\r\n\r\n useEffect(() => {\r\n if (programConfig.reviewFieldKeys) {\r\n setReviewFormDetails(\r\n Object.fromEntries(\r\n programConfig.reviewFieldKeys.map((reviewFieldKey) => {\r\n const fieldConfigValue = structuredClone(\r\n opsToolConfiguration.reviewFields[reviewFieldKey]\r\n );\r\n if (fieldConfigValue.valuePropertyName) {\r\n fieldConfigValue.fieldInformation.value =\r\n getFieldValueFromCompanyDetails(\r\n props?.companyDetails,\r\n reviewFieldKey,\r\n fieldConfigValue.valuePropertyName\r\n );\r\n }\r\n return [reviewFieldKey, fieldConfigValue];\r\n })\r\n )\r\n );\r\n }\r\n }, [props.companyDetails]);\r\n\r\n useEffect(() => {\r\n setIsReviewActionable(!!programConfig.review);\r\n const approvalValuesMatched = Object.entries(\r\n programConfig.review?.approveConditions?.valueMatch ?? {}\r\n ).every(([key, value]) =>\r\n value.includes(reviewFormDetails[key]?.fieldInformation?.value)\r\n );\r\n const approvalRequiredFieldsPresent = programConfig.review\r\n ?.approveConditions?.requiredFields?.length\r\n ? programConfig.review.approveConditions.requiredFields.every(\r\n (key) => reviewFormDetails[key]?.fieldInformation?.value\r\n )\r\n : true;\r\n setApprovalAllowed(approvalValuesMatched && approvalRequiredFieldsPresent);\r\n\r\n const rejectionValuesMatched = Object.entries(\r\n programConfig.review?.rejectConditions?.valueMatch ?? {}\r\n ).every(([key, value]) =>\r\n value.includes(reviewFormDetails[key]?.fieldInformation?.value)\r\n );\r\n const rejectionRequiredFieldsPresent = programConfig.review\r\n ?.rejectConditions?.requiredFields?.length\r\n ? programConfig.review.rejectConditions.requiredFields.every(\r\n (key) => reviewFormDetails[key]?.fieldInformation?.value\r\n )\r\n : true;\r\n\r\n setRejectionAllowed(\r\n rejectionValuesMatched && rejectionRequiredFieldsPresent\r\n );\r\n }, [reviewFormDetails]);\r\n\r\n const getFieldValueFromCompanyDetails = (\r\n partnerDetail: any,\r\n fieldKey: string,\r\n pathToValue: string\r\n ) => {\r\n let value = CommonUtility.getValueFromPath(partnerDetail, pathToValue);\r\n\r\n switch (fieldKey) {\r\n case \"approvalDate\":\r\n case \"inviteDate\":\r\n value = value ? new Date(value) : \"\";\r\n break;\r\n case \"country\":\r\n value = value\r\n ? countryCodeToCountryNameMapping[\r\n value as keyof typeof countryCodeToCountryNameMapping\r\n ] || value\r\n : \"\";\r\n break;\r\n case \"enrollmentStatus\":\r\n value = value ? Pipe(ResourcePipe)(`EnrollmentStatus_${value}`) : \"\";\r\n break;\r\n case \"vettingStatus\":\r\n value = value ? Pipe(ResourcePipe)(`VettingStatus_${value}`) : \"\";\r\n break;\r\n case \"hdcCopilotScreenStatus\":\r\n value =\r\n value === \"Active\"\r\n ? \"Completed\"\r\n : value === \"InProgress\"\r\n ? \"Sent\"\r\n : \"Not sent\";\r\n break;\r\n case \"inviteStatus\":\r\n value = value ? \"Invited\" : \"Not active\";\r\n break;\r\n default:\r\n value = typeof value !== \"boolean\" && !value ? \"\" : value;\r\n break;\r\n }\r\n\r\n return value;\r\n };\r\n\r\n const onFieldChange = (key: string, event: any) => {\r\n if (event.fieldName === key && event[key]) {\r\n const reviewFormDetailsClone = structuredClone(reviewFormDetails);\r\n if (!reviewFormDetailsClone[key].fieldInformation.disabled) {\r\n reviewFormDetailsClone[key].fieldInformation.value = event[key].value;\r\n setReviewFormDetails(reviewFormDetailsClone);\r\n }\r\n }\r\n };\r\n\r\n const onApproval = () => {\r\n if (!isReviewActionable) return;\r\n let enrollmentReview: IEnrollmentReview = {\r\n decision: \"Approved\",\r\n justification:\r\n reviewFormDetails.approveRejectComment?.fieldInformation?.value,\r\n additionalProperties: Object.entries(reviewFormDetails).reduce(\r\n (acc, [key, value]) => {\r\n acc[key] = value.fieldInformation.value;\r\n return acc;\r\n },\r\n {} as Dictionary<string>\r\n ),\r\n };\r\n setReviewInProgress(true);\r\n setShowReviewLoader(true);\r\n setRejectionAllowed(false);\r\n setApprovalAllowed(false);\r\n handleApproveReject(enrollmentReview)\r\n .then((response: any) => {\r\n setApproveRejectMessage(Pipe(ResourcePipe)(\"PartnerApproved\"));\r\n setApproveRejectMessageAppearance(\"success\");\r\n setShowReviewLoader(false);\r\n })\r\n .catch((error: ApiError) => {\r\n setApproveRejectMessage(\r\n Pipe(ResourcePipe)(\"SomethingWentWrong\") +\r\n `\\nCorrelationId : ${error?.correlationId}`\r\n );\r\n setApproveRejectMessageAppearance(\"error\");\r\n\r\n setShowReviewLoader(false);\r\n });\r\n };\r\n\r\n const onRejection = () => {\r\n if (!isReviewActionable) return;\r\n let enrollmentReview: IEnrollmentReview = {\r\n decision: \"Rejected\",\r\n justification:\r\n reviewFormDetails.approveRejectComment?.fieldInformation?.value,\r\n };\r\n setReviewInProgress(true);\r\n setRejectionAllowed(false);\r\n setApprovalAllowed(false);\r\n setShowReviewLoader(true);\r\n handleApproveReject(enrollmentReview)\r\n .then((response: any) => {\r\n setApproveRejectMessage(Pipe(ResourcePipe)(\"PartnerRejected\"));\r\n setApproveRejectMessageAppearance(\"success\");\r\n\r\n setShowReviewLoader(false);\r\n })\r\n .catch((error: ApiError) => {\r\n setApproveRejectMessage(\r\n Pipe(ResourcePipe)(\"SomethingWentWrong\") +\r\n `\\nCorrelationId : ${error?.correlationId}`\r\n );\r\n setApproveRejectMessageAppearance(\"error\");\r\n\r\n setShowReviewLoader(false);\r\n });\r\n };\r\n\r\n function handleApproveReject<T>(\r\n enrollmentReviewData: IEnrollmentReview\r\n ): Promise<T> {\r\n const accountId = props.companyDetails?.account?.accountId;\r\n const country =\r\n countryCodeToCountryNameMapping[\r\n props.companyDetails?.account?.partnerProfile?.address?.country ?? \"\"\r\n ];\r\n const programName = props.programName;\r\n return UnifiedEnrollmentService.reviewEnrollmentDecision(\r\n accountId,\r\n programName,\r\n enrollmentReviewData,\r\n country\r\n ).then((response: any) => {\r\n return response;\r\n });\r\n }\r\n\r\n const showMessageBar = (message: string, appearance: any) => {\r\n return (\r\n <>\r\n <MessageBar appearance={appearance} open>\r\n <div style={{ whiteSpace: \"pre-wrap\" }}>{message}</div>\r\n </MessageBar>\r\n </>\r\n );\r\n };\r\n\r\n return (\r\n <>\r\n {!!props.isReviewLoading && (\r\n <>\r\n <ProgressRing\r\n indeterminate={true}\r\n label=\"loading\"\r\n labelPlacement=\"bottom\"\r\n />\r\n </>\r\n )}\r\n {!props.isReviewLoading &&\r\n !!vettingErrorMessage &&\r\n showMessageBar(vettingErrorMessage, vettingErrorMessageAppearance)}\r\n {!props.isReviewLoading &&\r\n !!approveRejectMessage &&\r\n showMessageBar(approveRejectMessage, approveRejectMessageAppearance)}\r\n {!props.isReviewLoading &&\r\n !!props.accountProfileErrorMessage &&\r\n showMessageBar(props.accountProfileErrorMessage, \"error\")}\r\n\r\n {!props.isReviewLoading &&\r\n Object.entries(reviewFormDetails).map(([key, value]) => {\r\n return (\r\n <DynamicFormField\r\n key={`review-form-field-${key}`}\r\n id={key}\r\n label={Pipe(ResourcePipe)(value.label)}\r\n fieldInformation={value.fieldInformation}\r\n onChange={(event) => onFieldChange(key, event)}\r\n ></DynamicFormField>\r\n );\r\n })}\r\n\r\n {!props.isReviewLoading && isReviewActionable && (\r\n <>\r\n <Button\r\n className=\"spacer-sm-top\"\r\n appearance=\"primary\"\r\n disabled={!isApprovalAllowed || isReviewInProgress}\r\n onClick={onApproval}\r\n >\r\n Approve\r\n </Button>\r\n  \r\n <Button\r\n className=\"spacer-sm-top\"\r\n appearance=\"secondary\"\r\n disabled={!isRejectionAllowed || isReviewInProgress}\r\n onClick={onRejection}\r\n >\r\n Reject\r\n </Button>\r\n {isReviewInProgress && showReviewLoader && (\r\n <ProgressRing\r\n style={{ \"--ring-size\": \"16px\" } as CSSProperties}\r\n indeterminate={true}\r\n label=\"loading\"\r\n labelPlacement=\"bottom\"\r\n />\r\n )}\r\n {!props.isReviewLoading && !!approveRejectMessage && (\r\n <div className=\"spacer-xs-top\">\r\n {showMessageBar(\r\n approveRejectMessage,\r\n approveRejectMessageAppearance\r\n )}\r\n </div>\r\n )}\r\n </>\r\n )}\r\n </>\r\n );\r\n};\r\n","import React from \"react\";\r\n\r\nimport {\r\n createScope,\r\n partnerCenterTheme,\r\n text,\r\n progressRing,\r\n} from \"@harmony/enablers/react\";\r\nimport { IOnboardingHistoryRecord } from \"src/models/partner-operations-tool/partnerDetails.model\";\r\nimport { ServerData } from \"src/utility\";\r\n\r\nconst scope = createScope({\r\n reactInstance: React,\r\n theme: partnerCenterTheme,\r\n});\r\n\r\ntype OnboardingHistoryPropType = Partial<{\r\n onboardingHistoryRecords?: IOnboardingHistoryRecord[];\r\n isReviewLoading?: boolean;\r\n}>;\r\n\r\nconst Text = scope.forReact(text);\r\nconst ProgressRing = scope.forReact(progressRing);\r\n\r\nexport const OnboardingHistory: React.FC<OnboardingHistoryPropType> = ({\r\n onboardingHistoryRecords,\r\n isReviewLoading,\r\n}) => {\r\n return (\r\n <>\r\n <Text className=\"spacer-sm-top spacer-sm-bottom\" appearance=\"heading-3\">\r\n History\r\n </Text>\r\n {!!isReviewLoading && (\r\n <>\r\n <ProgressRing\r\n indeterminate={true}\r\n label=\"loading\"\r\n labelPlacement=\"bottom\"\r\n />\r\n </>\r\n )}\r\n {onboardingHistoryRecords\r\n ?.filter((record) => record.actor && record.eventDate)\r\n .sort(\r\n (a, b) =>\r\n new Date(a.eventDate!).getTime() - new Date(b.eventDate!).getTime()\r\n )\r\n .map((onboardingStatus: any, index: number) => {\r\n return (\r\n <React.Fragment key={index}>\r\n <Text className=\"spacer-xs-top\">\r\n {`${new Intl.DateTimeFormat(ServerData.locale || \"en-US\", {\r\n year: \"numeric\",\r\n month: \"2-digit\",\r\n day: \"2-digit\",\r\n }).format(new Date(onboardingStatus.eventDate!))} - ${\r\n onboardingStatus.actor\r\n }`}\r\n </Text>\r\n <Text className=\"spacer-xxxs-top spacer-xxs-bottom\">\r\n {onboardingStatus?.eventName}\r\n </Text>\r\n </React.Fragment>\r\n );\r\n })}\r\n </>\r\n );\r\n};\r\n","import React, { useRef } from \"react\";\r\n\r\nimport {\r\n button,\r\n buttonGroup,\r\n checkbox,\r\n checkboxGroup,\r\n dropdown,\r\n filterPill,\r\n icon,\r\n menu,\r\n menuItem,\r\n visuallyHidden,\r\n partnerCenterTheme,\r\n createScope,\r\n} from \"@harmony/enablers/react\";\r\n\r\nconst scope = createScope({\r\n reactInstance: React,\r\n theme: partnerCenterTheme,\r\n});\r\nconst Button = scope.forReact(button);\r\nconst ButtonGroup = scope.forReact(buttonGroup);\r\nconst Checkbox = scope.forReact(checkbox);\r\nconst CheckboxGroup = scope.forReact(checkboxGroup);\r\nconst FilterPill = scope.forReact(filterPill);\r\nconst Icon = scope.forReact(icon);\r\nconst Dropdown = scope.forReact(dropdown);\r\nconst VisuallyHidden = scope.forReact(visuallyHidden);\r\nconst Menu = scope.forReact(menu);\r\nconst MenuItem = scope.forReact(menuItem);\r\n\r\ninterface FilterDropDownPropType {\r\n id: string;\r\n label: string;\r\n values: string[];\r\n options: string[];\r\n multiSelect?: boolean;\r\n disabled?: boolean;\r\n canClear?: boolean;\r\n className?: string;\r\n tooltip?: string;\r\n onSelectionChange: (id: string, values: string[], checked: boolean) => void;\r\n onClear?: () => void;\r\n}\r\n\r\nexport const FilterDropdown = ({\r\n id,\r\n label,\r\n values,\r\n options,\r\n multiSelect,\r\n disabled,\r\n canClear,\r\n className,\r\n tooltip,\r\n onSelectionChange,\r\n onClear,\r\n}: FilterDropDownPropType) => {\r\n const checkboxGroupRef = useRef(null as any);\r\n const dropdownRef = useRef(null as any);\r\n\r\n return (\r\n <>\r\n <Dropdown ref={dropdownRef} className={className} title={tooltip}>\r\n <ButtonGroup slot=\"trigger\">\r\n <FilterPill\r\n className=\"filter-pill--ops-tool\"\r\n style={{ height: \"32px\" }}\r\n caret\r\n values={values}\r\n valueCount={1}\r\n disabled={disabled}\r\n >\r\n <Icon slot=\"start\" name=\"filter\"></Icon>\r\n {label}\r\n </FilterPill>\r\n {!!values.length && (\r\n <FilterPill\r\n className=\"filter-pill--ops-tool\"\r\n style={{ height: \"32px\" }}\r\n disabled={disabled || !canClear}\r\n title={`${canClear ? \"\" : \"This filter cannot be cleared\"}`}\r\n onClick={onClear}\r\n clear\r\n >\r\n <VisuallyHidden>Remove filter</VisuallyHidden>\r\n </FilterPill>\r\n )}\r\n </ButtonGroup>\r\n\r\n {multiSelect ? (\r\n <div className=\"dropdown-contents\">\r\n <CheckboxGroup\r\n className=\"ops-dropdown-checkbox-grp\"\r\n valueAsArray={values}\r\n ref={checkboxGroupRef}\r\n >\r\n {options?.map((option) => (\r\n <Checkbox key={`${id}-filter-option-${option}`}>\r\n {option}\r\n </Checkbox>\r\n ))}\r\n </CheckboxGroup>\r\n <div className=\"dropdown-contents__buttons\">\r\n <Button\r\n appearance=\"primary\"\r\n className=\"apply\"\r\n onClick={() => {\r\n if (checkboxGroupRef.current?.valueAsArray?.length) {\r\n onSelectionChange(\r\n id,\r\n checkboxGroupRef.current.valueAsArray,\r\n true\r\n );\r\n if (dropdownRef.current) {\r\n dropdownRef.current.open = false;\r\n }\r\n }\r\n }}\r\n >\r\n Apply\r\n </Button>\r\n <Button\r\n className=\"cancel\"\r\n onClick={() => {\r\n if (checkboxGroupRef.current) {\r\n checkboxGroupRef.current.valueAsArray = values;\r\n }\r\n\r\n if (dropdownRef.current) {\r\n dropdownRef.current.open = false;\r\n }\r\n }}\r\n >\r\n Cancel\r\n </Button>\r\n </div>\r\n </div>\r\n ) : (\r\n <Menu>\r\n {options?.map((option) => (\r\n <MenuItem\r\n key={`${id}-filter-option-${option}`}\r\n role=\"menuitemradio\"\r\n checked={values.includes(option)}\r\n onHeChange={(e: any) =>\r\n onSelectionChange(id, [option], e.target.checked)\r\n }\r\n >\r\n {option}\r\n </MenuItem>\r\n ))}\r\n </Menu>\r\n )}\r\n </Dropdown>\r\n </>\r\n );\r\n};\r\n","// initial status filter values\r\nexport const enrolledInvitedFilterValues: any = {\r\n Enrolled: false,\r\n Invited: false,\r\n};\r\n\r\nexport enum InvitationStatus {\r\n ENROLLED = \"Enrolled\",\r\n INVITED = \"Invited\",\r\n}\r\n","export const SCOPE_LIST = [\"India\", \"USA\"]","/**\r\n * @description The Eua Service\r\n */\r\nimport axios from \"axios\";\r\nimport { BASE_API_PATH } from \"../../constants\";\r\nimport { ApiError, RoleInfo } from \"../../models\";\r\n\r\nimport { BaseHelperService } from \"./helper.base\";\r\nimport { Logger } from \"../../decorators\";\r\nimport { from, Observable } from \"rxjs\";\r\nimport { SCOPE_LIST } from \"src/mocks/api/scopelist\";\r\n\r\nconst instance = axios.create({\r\n baseURL: `${BASE_API_PATH}eua`,\r\n});\r\n\r\nconst CLASS_NAME = \"EuaService\";\r\n\r\nclass EuaServiceClass extends BaseHelperService {\r\n @Logger(CLASS_NAME, [], [\"error\"])\r\n private handleApiError(error: ApiError): ApiError {\r\n return error;\r\n }\r\n\r\n constructor() {\r\n super(instance);\r\n }\r\n\r\n @Logger(CLASS_NAME, [], [\"success\"])\r\n private getSuccessResponse<T>(response: T): T {\r\n return response;\r\n }\r\n\r\n @Logger(CLASS_NAME, [], [\"scope\"])\r\n public getUserJurisdiction(scope: string): Observable<string[]> {\r\n let uri = `/claims/scope/${scope}`;\r\n return from(\r\n this.performGet<string[]>(uri, undefined, SCOPE_LIST)\r\n .catch((err: ApiError) => {\r\n this.handleApiError(err);\r\n return [];\r\n })\r\n .then((response: string[]) => {\r\n return this.getSuccessResponse<string[]>(response);\r\n })\r\n );\r\n }\r\n\r\n @Logger(CLASS_NAME, [], [\"applicationName\"])\r\n public getClaimsFromEUA(applicationName: string) {\r\n let uri = `/claims?applicationName=${applicationName}`;\r\n return from(\r\n this.performGet<RoleInfo[]>(uri)\r\n .catch((err: ApiError) => {\r\n this.handleApiError(err);\r\n return [];\r\n })\r\n .then((response: RoleInfo[]) => {\r\n return this.getSuccessResponse<RoleInfo[]>(response);\r\n })\r\n );\r\n }\r\n}\r\n\r\nexport const EuaService = new EuaServiceClass();\r\n","import React, { useEffect, useState } from \"react\";\r\nimport {\r\n createScope,\r\n dataGrid,\r\n dropdown,\r\n pageTitle,\r\n button,\r\n icon,\r\n searchBox,\r\n commandBar,\r\n partnerCenterTheme,\r\n tabs,\r\n tab,\r\n tabPanel,\r\n flyInPanel,\r\n pagination,\r\n divider,\r\n taskMenu,\r\n taskItem,\r\n menu,\r\n menuItem,\r\n buttonGroup,\r\n text,\r\n tooltip,\r\n} from \"@harmony/enablers/react\";\r\nimport { withRouter } from \"react-router\";\r\nimport { Pipe, ResourcePipe } from \"src/pipes\";\r\nimport { UnifiedEnrollmentService } from \"src/services\";\r\nimport { AddNewPartners } from \"./add-new-partner/add-new-partner\";\r\nimport {\r\n IOnboardingHistoryRecord,\r\n IPartnerDetails,\r\n PaginatedGQLResponse,\r\n PaginatedResponse,\r\n} from \"../../../../models/partner-operations-tool/partnerDetails.model\";\r\nimport { CompanyDetails } from \"../company-details/company-details\";\r\nimport { OnboardingHistory } from \"../onboarding-history/onboarding-history\";\r\nimport { VettingCompletedEvent, VettingStartedEvent } from \"src/constants\";\r\nimport { FilterDropdown } from \"../../../reusables/formElements/FilterDropdown\";\r\nimport { CommonUtility } from \"src/utility\";\r\nimport { InvitationStatus } from \"../enrolledInvited.constants\";\r\nimport { InvitationService } from \"src/services/api/invitation.service\";\r\nimport { EuaService } from \"src/services/api/eua.service\";\r\nimport { IPartnerInviteDetails } from \"src/models/partner-operations-tool/invitations.model\";\r\nimport { ApiError, Dictionary, RoleInfo } from \"src/models\";\r\nimport { CountryCodeMapping } from \"src/mocks/country-code-mapping\";\r\nimport {\r\n OpsToolFilterConfig,\r\n SortColumn,\r\n} from \"../../../../models/partner-operations-tool/opstoolConfig.model\";\r\nimport { ServerData } from \"src/utility\";\r\nimport { Column, Row } from \"@harmony/enablers/components/data-grid/data-grid\";\r\nimport { NotAuthorizedComponent } from \"src/component/shared\";\r\nimport { Loader } from \"src/component/reusables\";\r\n\r\nconst scope = createScope({\r\n reactInstance: React,\r\n theme: partnerCenterTheme,\r\n});\r\n\r\nconst Text = scope.forReact(text);\r\nconst TaskMenu = scope.forReact(taskMenu);\r\nconst TaskItem = scope.forReact(taskItem);\r\nconst DataGrid: any = scope.forReact(dataGrid);\r\nconst PageTitle = scope.forReact(pageTitle);\r\nconst CommandBar = scope.forReact(commandBar);\r\nconst SearchBox = scope.forReact(searchBox);\r\nconst Pagination = scope.forReact(pagination);\r\nconst Icon = scope.forReact(icon);\r\nconst Button = scope.forReact(button);\r\nconst Tabs = scope.forReact(tabs);\r\nconst Tab = scope.forReact(tab);\r\nconst TabPanel = scope.forReact(tabPanel);\r\nconst FlyInPanel: any = scope.forReact(flyInPanel);\r\nconst Divider = scope.forReact(divider);\r\nconst ButtonGroup = scope.forReact(buttonGroup);\r\nconst Tooltip = scope.forReact(tooltip);\r\nconst Dropdown = scope.forReact(dropdown);\r\nconst Menu = scope.forReact(menu);\r\nconst MenuItem = scope.forReact(menuItem);\r\n\r\nfunction ManagePartners() {\r\n if (!ServerData.opsToolConfiguration)\r\n throw new Error(\"OpsToolConfiguration is not set\");\r\n\r\n const opsToolConfiguration = ServerData.opsToolConfiguration;\r\n const useCache = opsToolConfiguration.useCache;\r\n\r\n const [loadingClaims, setLoadingClaims] = useState(true);\r\n const [isOpenInvitePanel, setIsOpenInvitePanel] = useState(false);\r\n const [isOpenReviewPanel, setIsOpenReviewPanel] = useState(false);\r\n const [showReviewButton, setShowReviewButton] = useState(true);\r\n const [partnerDetailsRows, setPartnerDetailsRows] = useState([]);\r\n\r\n const [paginationApis, setPaginationApis] = useState({\r\n firstPage: \"\",\r\n prevPage: \"\",\r\n nextPage: \"\",\r\n lastPage: \"\",\r\n });\r\n\r\n const [pageNumber, setPageNumber] = useState(1);\r\n const [loadingDataGrid, setLoadingDataGrid] = useState(true);\r\n const [pageSize] = useState(20);\r\n\r\n const [countries, setCountries] = useState([] as string[]); //For Local testing, Countries Constant can be set\r\n\r\n //TODO: setProgramFamily will be called for initialization once we have EUA integration completed\r\n const [programFamily, setProgramFamily] = useState(\"\");\r\n const [programName, setProgramName] = useState(\"\");\r\n const [isInviteSupported, setIsInviteSupported] = useState(false);\r\n const [hasInviteRole, setHasInviteRole] = useState(false);\r\n\r\n const [enrollmentRequestsError, setEnrollmentRequestsErrorMessage] =\r\n useState(\"\");\r\n const [accountProfileErrorMessage, setAccountProfileErrorMessage] =\r\n useState(\"\");\r\n const [isPartnerDetailSectionLoading, setIsPartnerDetailSectionLoading] =\r\n useState(false);\r\n const [isHistorySectionLoading, setIsHistorySectionLoading] = useState(false);\r\n const [\r\n selectedEnrollmentVettingRecords,\r\n setSelectedEnrollmentVettingRecords,\r\n ] = useState<IOnboardingHistoryRecord[]>();\r\n const [hasNextPage, setHasNextPage] = useState(false);\r\n const [hasPreviousPage, setHasPreviousPage] = useState(false);\r\n\r\n const [roleInfo, setRoleInfo] = useState<RoleInfo[]>();\r\n const [columns, setColumns] = useState<Column[]>([]);\r\n const [programFilters, setProgramFilters] = useState<\r\n Dictionary<OpsToolFilterConfig>\r\n >({} as Dictionary<OpsToolFilterConfig>);\r\n const [searchableColumns, setSearchableColumns] = useState<string[]>([]);\r\n const [searchedColumn, setSearchedColumn] = useState(\"\");\r\n const [searchFilter, setSearchFilter] = useState<\r\n OpsToolFilterConfig | undefined\r\n >(undefined);\r\n const [selectedCompanyDetails, setSelectedCompanyDetails] = useState<any>();\r\n const [sortColumn, setSortColumn] = useState<SortColumn>();\r\n const [totalCount, setTotalCount] = useState(0);\r\n\r\n const countryCodeToCountryNameMapping = Object.fromEntries(\r\n Object.entries(CountryCodeMapping).map(([key, value]) => [value, key])\r\n );\r\n\r\n const getOpsToolProgramConfig = (\r\n programFamily: string,\r\n programName: string\r\n ) =>\r\n opsToolConfiguration.programFamilies?.[programFamily]?.programs?.[\r\n programName\r\n ];\r\n\r\n useEffect(() => {\r\n getClaimsFromEUA();\r\n }, []);\r\n\r\n useEffect(() => {\r\n setSearchFilter((prevFilter: any) => ({\r\n ...prevFilter,\r\n values: [\"\"],\r\n }));\r\n }, [searchedColumn])\r\n\r\n useEffect(() => {\r\n if (programFamily && programName && roleInfo) {\r\n setProgramSpecificScopeValues();\r\n let programConfig = getOpsToolProgramConfig(programFamily, programName);\r\n setIsInviteSupported(programConfig.isInviteSupported ?? false);\r\n const hasInviteRole = roleInfo.some(\r\n (role) =>\r\n programConfig.rolesRequiredToInvite?.includes(role.role) &&\r\n role.scopes.some(\r\n (scope) =>\r\n scope.scopeName === \"Program\" &&\r\n scope.scopeValue.includes(programConfig.scopeName)\r\n )\r\n );\r\n setHasInviteRole(hasInviteRole);\r\n setProgramFilters({});\r\n setSortColumn(undefined);\r\n }\r\n }, [programName]);\r\n\r\n useEffect(() => {\r\n if (programFamily && programName) {\r\n getFilters(); \r\n }\r\n }, [countries, isInviteSupported]);\r\n\r\n useEffect(() => {\r\n if (programFamily && programName && Object.keys(programFilters).length) {\r\n getColumns();\r\n getSearchFilter();\r\n setSelectedCompanyDetails(undefined);\r\n }\r\n }, [programFilters]);\r\n\r\n useEffect(() => {\r\n let inviteFilter = programFilters[\"inviteStatus\"];\r\n if (\r\n isInviteSupported &&\r\n inviteFilter?.values?.includes(InvitationStatus.INVITED)\r\n ) {\r\n setShowReviewButton(false);\r\n fetchInvitations();\r\n } else {\r\n const programConfig = getOpsToolProgramConfig(programFamily, programName);\r\n setShowReviewButton(!!programConfig?.reviewFieldKeys?.length);\r\n fetchEnrollmentRequests();\r\n }\r\n }, [columns, searchFilter, sortColumn]);\r\n\r\n const handleSort = (e: any) => {\r\n let sortBy = e.detail.sortBy;\r\n let sortDirection = e.detail.isAscending ? \"ASC\" : \"DESC\";\r\n setSortColumn({ sortBy, sortDirection });\r\n };\r\n\r\n const getClaimsFromEUA = () => {\r\n EuaService.getClaimsFromEUA(\"PartnerOps\").subscribe({\r\n next: (response) => {\r\n setRoleInfo(response);\r\n },\r\n complete: () => {\r\n setLoadingClaims(false);\r\n },\r\n });\r\n };\r\n\r\n const createCountriesParam = () => {\r\n const countryNamesArray = programFilters[\"country\"]?.values ?? [];\r\n return countryNamesArray.length\r\n ? `&countries=${countryNamesArray.join(\"&countries=\")}`\r\n : \"\";\r\n };\r\n\r\n const createCountriesParamForInvite = () => {\r\n const countryNamesArray = programFilters[\"country\"]?.values?.length\r\n ? programFilters[\"country\"]?.values\r\n : countries;\r\n return countryNamesArray.length\r\n ? `&countries=${countryNamesArray.join(\"&countries=\")}`\r\n : \"\";\r\n };\r\n\r\n const fetchEnrollmentRequests = () => {\r\n let countriesParam = \"\";\r\n if (programName) {\r\n countriesParam = createCountriesParam();\r\n let searchString = encodeURIComponent(searchFilter?.values?.[0] ?? \"\");\r\n let url = `graph/requests?programName=${programName}${countriesParam}&enrollmentStatuses=${\r\n programFilters[\"enrollmentStatus\"]?.values?.join(\",\") ?? \"\"\r\n }&vettingStatuses=${\r\n programFilters[\"vettingStatus\"]?.values?.join(\",\") ?? \"\"\r\n }&${searchedColumn}=${searchString}${\r\n sortColumn\r\n ? `&order=${sortColumn.sortBy}:${sortColumn.sortDirection}`\r\n : \"\"\r\n }&pageSize=${pageSize}`;\r\n getEnrollmentRequestsFromGQL(url);\r\n }\r\n };\r\n\r\n const fetchInvitations = () => {\r\n let countriesParam = createCountriesParamForInvite();\r\n\r\n if (programName) {\r\n let searchString = encodeURIComponent(searchFilter?.values?.[0] ?? \"\");\r\n let url = `?programName=${programName}${countriesParam}&pageNumber=${pageNumber}&pageSize=${pageSize}&searchString=${searchString}`;\r\n getInvitations(url);\r\n }\r\n };\r\n\r\n const setProgramSpecificScopeValues = () => {\r\n let programFamilyConfig =\r\n opsToolConfiguration.programFamilies[programFamily];\r\n let programConfig = programFamilyConfig.programs[programName];\r\n let accessScopes =\r\n programConfig.accessScopes ?? programFamilyConfig.accessScopes;\r\n\r\n let authorizedProgramScopeValues = roleInfo\r\n ?.filter((role) =>\r\n role.scopes.some(\r\n (scope) =>\r\n scope.scopeName === \"Program\" &&\r\n scope.scopeValue.includes(programConfig.scopeName)\r\n )\r\n )\r\n .map(\r\n (role) =>\r\n role.scopes.find((scope) => accessScopes?.includes(scope.scopeName))\r\n ?.scopeValue || []\r\n )\r\n .flat();\r\n\r\n authorizedProgramScopeValues = [...new Set(authorizedProgramScopeValues)];\r\n setCountries(\r\n accessScopes?.includes(\"Country\") || accessScopes?.includes(\"Region\")\r\n ? authorizedProgramScopeValues ?? []\r\n : Object.values(countryCodeToCountryNameMapping).sort()\r\n );\r\n };\r\n\r\n const getCellValueFromPartnerDetails = (\r\n partnerDetail: any,\r\n pathToValue: string,\r\n columnKey: string,\r\n isGqlCall?: boolean\r\n ) => {\r\n let value = CommonUtility.getValueFromPath(partnerDetail, pathToValue);\r\n if (typeof value !== \"boolean\" && !value) return \"\";\r\n\r\n switch (columnKey) {\r\n case \"approvalDate\":\r\n case \"inviteDate\":\r\n value = isGqlCall ? new Date(value) : new Date(value + \"Z\");\r\n break;\r\n case \"country\":\r\n value = isGqlCall\r\n ? countryCodeToCountryNameMapping[\r\n value as keyof typeof countryCodeToCountryNameMapping\r\n ]\r\n : value;\r\n break;\r\n case \"enrollmentStatus\":\r\n value = Pipe(ResourcePipe)(`EnrollmentStatus_${value}`);\r\n break;\r\n case \"inviteStatus\":\r\n value = value ? \"Invited\" : \"Not active\";\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n return value;\r\n };\r\n\r\n function setDataGridFields(\r\n cell: Record<string, string>,\r\n column: Column,\r\n partnerDetail: any,\r\n isGqlCall?: boolean\r\n ) {\r\n if (partnerDetail) {\r\n let columnConfig = opsToolConfiguration.columns[column.field];\r\n cell[column.field] = getCellValueFromPartnerDetails(\r\n partnerDetail,\r\n columnConfig.dataPropertyName,\r\n column.field,\r\n isGqlCall\r\n );\r\n }\r\n\r\n return cell;\r\n }\r\n\r\n function getRequests(url: string) {\r\n let inviteFilter = programFilters[\"inviteStatus\"];\r\n if (\r\n isInviteSupported &&\r\n inviteFilter.values?.includes(InvitationStatus.INVITED)\r\n ) {\r\n getInvitations(url);\r\n } else {\r\n getEnrollmentRequestsFromGQL(url);\r\n }\r\n }\r\n\r\n function getEnrollmentRequestsFromGQL(url: string) {\r\n setLoadingDataGrid(true);\r\n setTotalCount(0);\r\n UnifiedEnrollmentService.getEnrollmentRequestsFromGQL(url, useCache)\r\n .then((enrollmentRequestsResponse: PaginatedGQLResponse<string>) => {\r\n if (enrollmentRequestsResponse) {\r\n setPartnerDetailsAndPaginatedUrls(\r\n null,\r\n enrollmentRequestsResponse\r\n );\r\n setRowsForDataGrid(\r\n { data: JSON.parse(enrollmentRequestsResponse.data) },\r\n true\r\n );\r\n setTotalCount(enrollmentRequestsResponse.totalCount ?? 0);\r\n setLoadingDataGrid(false);\r\n }\r\n })\r\n .catch((error: ApiError) => {\r\n setLoadingDataGrid(false);\r\n setRowsForDataGrid({ data: [] });\r\n setEnrollmentRequestsErrorMessage(\r\n Pipe(ResourcePipe)(\"SomethingWentWrong\") +\r\n `\\nCorrelationId : ${error?.correlationId}`\r\n );\r\n });\r\n }\r\n\r\n function getInvitations(url: string) {\r\n setLoadingDataGrid(true);\r\n setTotalCount(0);\r\n InvitationService.getAllInvitations(url)\r\n .then(\r\n (invitationsResponse: PaginatedResponse<IPartnerInviteDetails[]>) => {\r\n if (!!invitationsResponse) {\r\n setPartnerDetailsAndPaginatedUrls(invitationsResponse);\r\n setRowsForDataGrid(invitationsResponse);\r\n setLoadingDataGrid(false);\r\n }\r\n }\r\n )\r\n .catch((error: ApiError) => {\r\n setLoadingDataGrid(false);\r\n setRowsForDataGrid({ data: [] });\r\n setEnrollmentRequestsErrorMessage(\r\n Pipe(ResourcePipe)(\"SomethingWentWrong\") +\r\n `\\nCorrelationId : ${error?.correlationId}`\r\n );\r\n });\r\n }\r\n\r\n function setRowsForDataGrid(response: any, isGqlCall?: boolean) {\r\n let partnerDetailsRows: any = response.data.map(\r\n (enrollment: any, index: number) => {\r\n const row: Row = {\r\n id: index + 1,\r\n cells: columns.reduce((cell: Record<string, string>, column) => {\r\n return setDataGridFields(cell, column, enrollment, isGqlCall);\r\n }, {}),\r\n customData: enrollment,\r\n };\r\n return row;\r\n }\r\n );\r\n setPartnerDetailsRows(partnerDetailsRows);\r\n }\r\n\r\n function fetchParams(data: any) {\r\n if (!!data) {\r\n let startIndex = data.indexOf(\"?\");\r\n let result = data.substring(startIndex + 1);\r\n return result;\r\n }\r\n return \"\";\r\n }\r\n\r\n function fetchParamsForGQL({\r\n before,\r\n after,\r\n }: {\r\n before?: string;\r\n after?: string;\r\n }) {\r\n let countriesParam = createCountriesParam();\r\n let searchString = encodeURIComponent(searchFilter?.values?.[0] ?? \"\");\r\n\r\n let url = `programName=${programName}${countriesParam}&enrollmentStatuses=${\r\n programFilters[\"enrollmentStatus\"]?.values?.join(\",\") ?? \"\"\r\n }&vettingStatuses=${\r\n programFilters[\"vettingStatus\"]?.values?.join(\",\") ?? \"\"\r\n }&${searchedColumn}=${searchString}${\r\n sortColumn\r\n ? `&order=${sortColumn.sortBy}:${sortColumn.sortDirection}`\r\n : \"\"\r\n }&pageSize=${pageSize}`;\r\n\r\n if (before) {\r\n url += `&before=${before}`;\r\n } else if (after) {\r\n url += `&after=${after}`;\r\n }\r\n return url;\r\n }\r\n\r\n function setPartnerDetailsAndPaginatedUrls(\r\n invitationsResponse?: PaginatedResponse<IPartnerInviteDetails[]> | null,\r\n enrollmentRequestResponseFromGQL?: PaginatedGQLResponse<string> | null\r\n ) {\r\n if (enrollmentRequestResponseFromGQL) {\r\n setPaginationForGQLResponse(enrollmentRequestResponseFromGQL);\r\n } else if (!!invitationsResponse) {\r\n setPaginationForInvitations(invitationsResponse);\r\n }\r\n }\r\n\r\n function setPaginationForInvitations(\r\n response:\r\n | PaginatedResponse<IPartnerInviteDetails[]>\r\n | PaginatedResponse<IPartnerDetails[]>\r\n ) {\r\n let prefix = \"?\";\r\n setHasPreviousPage(response?.prev ? true : false);\r\n setHasNextPage(response?.next ? true : false);\r\n let paginationApis = {\r\n firstPage: prefix + fetchParams(response?.first) || \"\",\r\n nextPage: prefix + fetchParams(response.next) || \"\",\r\n lastPage: prefix + fetchParams(response.last) || \"\",\r\n prevPage: prefix + fetchParams(response.prev) || \"\",\r\n };\r\n setPaginationApis(paginationApis);\r\n }\r\n\r\n function setPaginationForGQLResponse(response: PaginatedGQLResponse<string>) {\r\n let prefix = \"graph/requests?\";\r\n setHasNextPage(response?.hasNextPage || false);\r\n setHasPreviousPage(response?.hasPreviousPage || false);\r\n let paginationApis = {\r\n firstPage: prefix + fetchParamsForGQL({}),\r\n nextPage:\r\n response?.hasNextPage && response?.endCursor\r\n ? prefix + fetchParamsForGQL({ after: response.endCursor })\r\n : \"\",\r\n lastPage: \"\",\r\n prevPage:\r\n response?.hasPreviousPage && response?.startCursor\r\n ? prefix + fetchParamsForGQL({ before: response.startCursor })\r\n : \"\",\r\n };\r\n setPaginationApis(paginationApis);\r\n }\r\n\r\n const handleDataGridChange = (e: Row<any>) => {\r\n setSelectedCompanyDetails(e.customData);\r\n setSelectedEnrollmentVettingRecords([]);\r\n };\r\n\r\n const handleTabSelection = (tabChangeEvent: any) => {\r\n if (\r\n tabChangeEvent &&\r\n tabChangeEvent.target &&\r\n tabChangeEvent.target.id === \"ops-tool-tabs\"\r\n ) {\r\n let activeProgram =\r\n tabChangeEvent.target.activeId?.split(\"program-tab-\")[1];\r\n setProgramName(activeProgram);\r\n }\r\n };\r\n\r\n function handlePreventDefaultEvent(event: any) {\r\n if (\r\n event.target === event.currentTarget &&\r\n event.detail.source === \"overlay\"\r\n ) {\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n function handleReviewClose(event: any) {\r\n setIsOpenReviewPanel(false);\r\n handlePreventDefaultEvent(event);\r\n setAccountProfileErrorMessage(\"\");\r\n setSelectedEnrollmentVettingRecords([]);\r\n }\r\n\r\n function handleInviteClose(event: any) {\r\n handlePreventDefaultEvent(event);\r\n }\r\n\r\n const getColumns = () => {\r\n let programConfig = getOpsToolProgramConfig(programFamily, programName);\r\n let inviteFilter = programFilters[\"inviteStatus\"];\r\n let _columns: Column[] = (\r\n programConfig.isInviteSupported &&\r\n inviteFilter?.values?.includes(InvitationStatus.INVITED)\r\n ? programConfig.datagridInviteColumnsKeys ?? []\r\n : programConfig.datagridColumnsKeys\r\n ).map((columnKey) => {\r\n let columnConfig = opsToolConfiguration.columns[columnKey];\r\n return {\r\n field: columnKey,\r\n content: columnConfig.displayName,\r\n sortable: columnConfig.sortable,\r\n display: {\r\n width: \"300px\",\r\n lineClamp: 2,\r\n },\r\n };\r\n });\r\n\r\n setColumns(structuredClone(_columns));\r\n };\r\n\r\n const getFilters = () => {\r\n let programConfig = getOpsToolProgramConfig(programFamily, programName);\r\n let opsToolFilters: Dictionary<OpsToolFilterConfig> = structuredClone(\r\n opsToolConfiguration.filters\r\n );\r\n\r\n let _programFilters = Object.entries(programConfig.filters).reduce(\r\n (filters, [key, defaultValues]) => {\r\n if (opsToolFilters[key]) {\r\n filters[key] = opsToolFilters[key];\r\n filters[key].values = defaultValues.filter((elem) => elem);\r\n filters[key].visible = true;\r\n if (!opsToolFilters[key].options?.length) {\r\n filters[key].options = getDynamicFilterOptions(key);\r\n }\r\n }\r\n return filters;\r\n },\r\n {} as Dictionary<OpsToolFilterConfig>\r\n );\r\n\r\n setProgramFilters(_programFilters);\r\n };\r\n\r\n const getDynamicFilterOptions = (filterKey: string): string[] => {\r\n switch (filterKey) {\r\n case \"country\":\r\n return countries;\r\n default:\r\n return [];\r\n }\r\n };\r\n\r\n const handleSearchInput = (input: string) => {\r\n let searchString = input?.trim() ?? \"\";\r\n if (\r\n searchFilter &&\r\n ((searchString.length > 3 && searchString.length < 50) ||\r\n !searchString.length) &&\r\n searchString !== searchFilter.values?.[0]\r\n ) {\r\n searchFilter.values = [searchString];\r\n setSearchFilter(structuredClone(searchFilter));\r\n }\r\n };\r\n\r\n const setFilterValue = (\r\n filterKey: string,\r\n values: string[],\r\n isChecked: boolean\r\n ) => {\r\n if (isChecked) {\r\n let programFiltersClone = structuredClone(programFilters);\r\n programFiltersClone[filterKey].values = values;\r\n Object.entries(programFiltersClone).forEach(([key, filterconfig]) => {\r\n if (filterconfig.disabledConditions) {\r\n const isDisabled = Object.entries(\r\n filterconfig.disabledConditions\r\n ).some(([conditionKey, conditionValues]) =>\r\n conditionValues.some((conditionValue) =>\r\n programFiltersClone[conditionKey]?.values?.includes(\r\n conditionValue\r\n )\r\n )\r\n );\r\n programFiltersClone[key].disabled = isDisabled;\r\n programFiltersClone[key].values = isDisabled\r\n ? []\r\n : programFiltersClone[key].values;\r\n }\r\n\r\n if (filterconfig.hideConditions) {\r\n const isHidden = Object.entries(filterconfig.hideConditions).some(\r\n ([conditionKey, conditionValues]) =>\r\n conditionValues.some((conditionValue) =>\r\n programFiltersClone[conditionKey]?.values?.includes(\r\n conditionValue\r\n )\r\n )\r\n );\r\n programFiltersClone[key].visible = !isHidden;\r\n }\r\n });\r\n setProgramFilters(programFiltersClone);\r\n setPageNumber(1);\r\n }\r\n };\r\n\r\n const getSearchFilter = () => {\r\n const programConfig = getOpsToolProgramConfig(programFamily, programName);\r\n if (programConfig.search) {\r\n let inviteFilter = programFilters[\"inviteStatus\"];\r\n const columnsForSearch =\r\n programConfig.isInviteSupported &&\r\n inviteFilter?.values?.includes(InvitationStatus.INVITED)\r\n ? programConfig.datagridInviteColumnsKeys?.filter(\r\n (col) => opsToolConfiguration.columns[col].searchable\r\n ) ?? []\r\n : programConfig.datagridColumnsKeys?.filter(\r\n (col) => opsToolConfiguration.columns[col].searchable\r\n ) ?? [];\r\n if (columnsForSearch.length) {\r\n setSearchableColumns(columnsForSearch);\r\n setSearchedColumn(columnsForSearch[0]);\r\n setSearchFilter({\r\n displayName: \"Search\",\r\n values: [\"\"],\r\n canClear: true,\r\n });\r\n return;\r\n }\r\n }\r\n\r\n setSearchableColumns([]);\r\n setSearchFilter(undefined);\r\n };\r\n\r\n function onReviewClick(partnerDetails: any) {\r\n let country =\r\n countryCodeToCountryNameMapping[\r\n partnerDetails.account?.partnerProfile?.address?.country\r\n ];\r\n\r\n setIsOpenReviewPanel(true);\r\n if (!!programName && !!partnerDetails.id) {\r\n setIsPartnerDetailSectionLoading(true);\r\n setIsHistorySectionLoading(true);\r\n UnifiedEnrollmentService.getProgramEnrollmentprofile(\r\n partnerDetails.id,\r\n programName,\r\n country,\r\n useCache\r\n )\r\n .then((response: any) => {\r\n mapAccountDetails(response, partnerDetails);\r\n createOnboardingHistory(response);\r\n })\r\n .catch((error: ApiError) => {\r\n let accountProfileError =\r\n Pipe(ResourcePipe)(\"FetchAccountProfileError\") +\r\n `\\nCorrelationId : ${error?.correlationId}`;\r\n setAccountProfileErrorMessage(accountProfileError);\r\n setIsPartnerDetailSectionLoading(false);\r\n setIsHistorySectionLoading(false);\r\n setSelectedEnrollmentVettingRecords([]);\r\n });\r\n }\r\n }\r\n\r\n function createOnboardingHistory(enrollment: any) {\r\n let onboardingHistoryRecords: IOnboardingHistoryRecord[] = [];\r\n if (enrollment) {\r\n if (enrollment.enrollmentCreatedDate) {\r\n onboardingHistoryRecords.push({\r\n eventName: `Onboarding started`,\r\n eventDate: enrollment.enrollmentCreatedDate,\r\n actor: `System`,\r\n });\r\n }\r\n\r\n if (enrollment.enrollmentLastUpdatedDate) {\r\n onboardingHistoryRecords.push({\r\n eventName: `Enrollment status updated to ${Pipe(ResourcePipe)(\r\n `EnrollmentStatus_${enrollment.enrollmentStatus}`\r\n )}`,\r\n eventDate: enrollment.enrollmentLastUpdatedDate,\r\n actor: `System`,\r\n });\r\n }\r\n\r\n enrollment.agreementSignatures?.forEach((agreementSignature: any) => {\r\n let agreementSignatureEvent: IOnboardingHistoryRecord = {};\r\n agreementSignatureEvent.eventName = `${Pipe(ResourcePipe)(\r\n `AgreementType_${agreementSignature.agreementDetails?.agreementType}${\r\n agreementSignature.agreementDetails?.agreementVersion\r\n ? `_Version_${agreementSignature.agreementDetails?.agreementVersion}`\r\n : \"\"\r\n }`.replace(/ /g, \"_\")\r\n )} accepted`;\r\n agreementSignatureEvent.eventDate = agreementSignature.signedOn;\r\n agreementSignatureEvent.actor =\r\n agreementSignature.agreementSignatureUser?.email || \"Not Available\";\r\n onboardingHistoryRecords.push(agreementSignatureEvent);\r\n });\r\n\r\n if (enrollment.enrollmentVetting?.enrollmentVettingStatus) {\r\n onboardingHistoryRecords.push({\r\n eventName: VettingStartedEvent,\r\n eventDate: enrollment.enrollmentVetting?.vettingStartDate,\r\n actor: \"System\",\r\n });\r\n }\r\n\r\n if (enrollment?.enrollmentVetting?.vettingCompletedDate) {\r\n onboardingHistoryRecords.push({\r\n eventName: VettingCompletedEvent,\r\n eventDate: enrollment.enrollmentVetting?.vettingCompletedDate,\r\n actor: \"System\",\r\n });\r\n }\r\n\r\n if (enrollment?.account?.accountMetadata?.digitalCertificates?.length) {\r\n onboardingHistoryRecords = onboardingHistoryRecords.concat(\r\n enrollment.account.accountMetadata.digitalCertificates.map(\r\n (digitalCertificate: any) => {\r\n return {\r\n eventName: `${digitalCertificate.certificateName} certificate uploaded`,\r\n eventDate: digitalCertificate.validatedDate,\r\n actor: \"Not Available\",\r\n };\r\n }\r\n )\r\n );\r\n }\r\n\r\n if (enrollment?.enrollmentApproval?.enrollmentReviewedOn) {\r\n onboardingHistoryRecords.push({\r\n eventName: `Enrollment review status: ${enrollment.enrollmentApproval.enrollmentApprovalStatus}`,\r\n eventDate: enrollment.enrollmentApproval.enrollmentReviewedOn,\r\n actor:\r\n enrollment.enrollmentApproval.enrollmentReviewedBy?.email ??\r\n \"Not Available\",\r\n });\r\n }\r\n }\r\n setSelectedEnrollmentVettingRecords(onboardingHistoryRecords);\r\n setIsHistorySectionLoading(false);\r\n }\r\n\r\n function mapAccountDetails(enrollment: any, companyDetails: any) {\r\n let companyDetailsUpdated = structuredClone(companyDetails);\r\n companyDetailsUpdated = { ...companyDetailsUpdated, ...enrollment };\r\n setSelectedCompanyDetails(companyDetailsUpdated);\r\n setIsPartnerDetailSectionLoading(false);\r\n }\r\n\r\n return roleInfo?.length ? (\r\n <div className=\"flex\">\r\n <TaskMenu item-type=\"page\">\r\n <TaskItem>\r\n {Pipe(ResourcePipe)(\"ManagePartners\")}\r\n {Object.entries(opsToolConfiguration.programFamilies)\r\n .filter(([key, programFamilyConfig]) =>\r\n roleInfo?.some((role) =>\r\n role.scopes.some(\r\n (scope) =>\r\n scope.scopeName === \"ProgramFamily\" &&\r\n scope.scopeValue.includes(programFamilyConfig.scopeName)\r\n )\r\n )\r\n )\r\n .map(([key, programFamilyConfig], index) => {\r\n if (index === 0 && !programFamily) {\r\n setProgramFamily(key);\r\n }\r\n return (\r\n <TaskItem\r\n key={`program-family-menu${index}`}\r\n onHeSelectedChange={() => setProgramFamily(key)}\r\n selected={programFamily === key}\r\n >\r\n {Pipe(ResourcePipe)(`ProgramFamily_${key}`)}\r\n </TaskItem>\r\n );\r\n })}\r\n </TaskItem>\r\n </TaskMenu>\r\n <div className=\"container\">\r\n <PageTitle>\r\n {Pipe(ResourcePipe)(\"PartnerOperationsTool\")}\r\n\r\n <span slot=\"active-title\">\r\n {Pipe(ResourcePipe)(\"ManagePartners\")}\r\n </span>\r\n </PageTitle>\r\n\r\n {programFamily && (\r\n <>\r\n <h2 className=\"spacer-xs-top spacer-xs-bottom\">\r\n {Pipe(ResourcePipe)(`ProgramFamily_${programFamily}`)}\r\n </h2>\r\n <Tabs\r\n id=\"ops-tool-tabs\"\r\n className=\"spacer-sm-top\"\r\n activeId={`program-tab-${programName}`}\r\n size=\"large\"\r\n onHeChange={handleTabSelection}\r\n >\r\n {Object.entries(\r\n opsToolConfiguration.programFamilies[programFamily].programs\r\n )\r\n .filter(([key, programConfig]) =>\r\n roleInfo?.some((role) =>\r\n role.scopes.some(\r\n (scope) =>\r\n scope.scopeName === \"Program\" &&\r\n scope.scopeValue.includes(programConfig.scopeName)\r\n )\r\n )\r\n )\r\n .map(([key, programConfig], index) => {\r\n if (\r\n index === 0 &&\r\n !opsToolConfiguration.programFamilies[programFamily]\r\n .programs[programName]\r\n ) {\r\n setProgramName(key);\r\n }\r\n return (\r\n <React.Fragment key={`program-tab-${index}`}>\r\n <Tab id={`program-tab-${key}`}>\r\n {Pipe(ResourcePipe)(`OpsTool_Tab_ProgramName_${key}`)}\r\n </Tab>\r\n <TabPanel>\r\n {key === programName && (\r\n <>\r\n <DataGrid\r\n className=\"spacer-xs-top\"\r\n {...(programFilters[\r\n \"inviteStatus\"\r\n ]?.values?.includes(InvitationStatus.INVITED)\r\n ? { select: undefined }\r\n : {\r\n select: \"single\",\r\n })}\r\n rows={\r\n loadingDataGrid\r\n ? [...new Array(10)]\r\n : partnerDetailsRows\r\n }\r\n columns={columns}\r\n onHeSort={handleSort}\r\n onHeRowSelectChange={(e: CustomEvent) =>\r\n handleDataGridChange(e.detail)\r\n }\r\n loading={loadingDataGrid}\r\n >\r\n <div\r\n slot=\"data-grid-controls\"\r\n style={{ display: \"flex\" }}\r\n >\r\n <CommandBar\r\n style={{ flex: 2 }}\r\n key=\"commandBar\"\r\n >\r\n {isInviteSupported && hasInviteRole && (\r\n <Button\r\n appearance=\"command\"\r\n onClick={() => setIsOpenInvitePanel(true)}\r\n >\r\n <Icon slot=\"start\" name=\"add\"></Icon>\r\n {Pipe(ResourcePipe)(\"Invite\")}\r\n </Button>\r\n )}\r\n\r\n {showReviewButton && (\r\n <Button\r\n appearance=\"command\"\r\n disabled={!selectedCompanyDetails}\r\n onClick={() =>\r\n onReviewClick(selectedCompanyDetails)\r\n }\r\n >\r\n <Icon slot=\"start\" name=\"preview\"></Icon>\r\n {Pipe(ResourcePipe)(\"Review\")}\r\n </Button>\r\n )}\r\n </CommandBar>\r\n {Object.entries(programFilters).map(\r\n ([filterKey, filterConfig]) => {\r\n return (\r\n filterConfig.visible && (\r\n <React.Fragment\r\n key={`ops-tool-filter-wrapper-${key}-${filterKey}`}\r\n >\r\n <FilterDropdown\r\n className=\"spacer-xxs-right\"\r\n id={filterKey}\r\n tooltip={\r\n filterConfig.disabled\r\n ? filterConfig.tooltip\r\n : \"\"\r\n }\r\n disabled={filterConfig.disabled}\r\n label={Pipe(ResourcePipe)(\r\n filterConfig.displayName\r\n )}\r\n values={filterConfig.values ?? []}\r\n options={filterConfig.options ?? []}\r\n canClear={filterConfig.canClear}\r\n multiSelect={\r\n filterConfig.multiSelect\r\n }\r\n onSelectionChange={setFilterValue}\r\n onClear={() =>\r\n setFilterValue(\r\n filterKey,\r\n [],\r\n !!filterConfig.values?.length\r\n )\r\n }\r\n />\r\n </React.Fragment>\r\n )\r\n );\r\n }\r\n )}\r\n\r\n {!!searchFilter && (\r\n <ButtonGroup\r\n id=\"search-by-column\"\r\n style={{\r\n border:\r\n \"solid var(--he-form-control-border-width) var(--he-form-control-border-color)\",\r\n }}\r\n >\r\n {!!(\r\n searchFilter.disabled &&\r\n searchFilter.tooltip\r\n ) && (\r\n <Tooltip\r\n anchor=\"opstool-searchbox\"\r\n placement=\"top\"\r\n fixedPlacement\r\n >\r\n {searchFilter.tooltip}\r\n </Tooltip>\r\n )}\r\n <Dropdown>\r\n <Button\r\n className=\"btn-searchby-column-dropdown\"\r\n slot=\"trigger\"\r\n caret\r\n >\r\n {\r\n opsToolConfiguration.columns[\r\n searchedColumn\r\n ]?.displayName\r\n }\r\n </Button>\r\n <Menu>\r\n {searchableColumns.map((column) => (\r\n <MenuItem\r\n key={`searchColumn-${column}`}\r\n onClick={() =>\r\n setSearchedColumn(column)\r\n }\r\n >\r\n {\r\n opsToolConfiguration.columns[\r\n column\r\n ]?.displayName\r\n }\r\n </MenuItem>\r\n ))}\r\n </Menu>\r\n </Dropdown>\r\n <SearchBox\r\n style={{\r\n width: \"200px\",\r\n marginLeft: \"auto\",\r\n }}\r\n id=\"opstool-searchbox\"\r\n disabled={searchFilter.disabled}\r\n onHeSearch={(e: any) =>\r\n handleSearchInput(e.target.value)\r\n }\r\n value={searchFilter.values?.[0] ?? \"\"}\r\n placeholder={\r\n opsToolConfiguration.columns[\r\n searchedColumn\r\n ]?.displayName\r\n }\r\n className=\"input-searchby-column-dropdown\"\r\n ></SearchBox>\r\n </ButtonGroup>\r\n )}\r\n </div>\r\n\r\n <span slot=\"no-records\">\r\n {Pipe(ResourcePipe)(\"NoSearchResults\")}\r\n </span>\r\n {!!enrollmentRequestsError &&\r\n enrollmentRequestsError}\r\n\r\n <Pagination\r\n slot=\"pagination\"\r\n non-numeric\r\n lastPage={!hasNextPage}\r\n firstPage={!hasPreviousPage}\r\n onHeFirstPage={() =>\r\n getRequests(paginationApis.firstPage)\r\n }\r\n onHeLastPage={() =>\r\n getRequests(paginationApis.lastPage)\r\n }\r\n onHeNextPage={() =>\r\n getRequests(paginationApis.nextPage)\r\n }\r\n onHePreviousPage={() =>\r\n getRequests(paginationApis.prevPage)\r\n }\r\n ></Pagination>\r\n </DataGrid>\r\n {!!totalCount && (\r\n <Text>\r\n Total number of records found: {totalCount}\r\n </Text>\r\n )}\r\n </>\r\n )}\r\n </TabPanel>\r\n </React.Fragment>\r\n );\r\n })}\r\n </Tabs>\r\n <FlyInPanel\r\n key=\"invitePartnerPanel\"\r\n heading={Pipe(ResourcePipe)(\"InvitePartner\")}\r\n open={isOpenInvitePanel}\r\n onHeRequestClose={handleInviteClose}\r\n style={\r\n {\r\n \"--size\": \"400px\",\r\n } as React.CSSProperties\r\n }\r\n onHeAfterHide={({\r\n target,\r\n currentTarget,\r\n }: {\r\n target: any;\r\n currentTarget: any;\r\n }) =>\r\n target === currentTarget ? setIsOpenInvitePanel(false) : null\r\n }\r\n >\r\n {!!isOpenInvitePanel && (\r\n <AddNewPartners\r\n key={\"AddNewPartner\" + programName}\r\n programName={programName}\r\n countries={countries}\r\n ></AddNewPartners>\r\n )}\r\n </FlyInPanel>\r\n\r\n <FlyInPanel\r\n key=\"PartnerDetailsPanel\"\r\n heading={Pipe(ResourcePipe)(\"PartnerDetails\")}\r\n open={isOpenReviewPanel}\r\n onHeRequestClose={handleReviewClose}\r\n style={\r\n {\r\n \"--size\": \"400px\",\r\n } as React.CSSProperties\r\n }\r\n onHeAfterHide={({\r\n target,\r\n currentTarget,\r\n }: {\r\n target: any;\r\n currentTarget: any;\r\n }) =>\r\n target === currentTarget ? setIsOpenReviewPanel(false) : null\r\n }\r\n >\r\n {!!isOpenReviewPanel && !!selectedCompanyDetails && (\r\n <>\r\n <CompanyDetails\r\n programFamily={programFamily}\r\n programName={programName}\r\n companyDetails={selectedCompanyDetails}\r\n isReviewLoading={isPartnerDetailSectionLoading}\r\n accountProfileErrorMessage={accountProfileErrorMessage}\r\n ></CompanyDetails>\r\n <Divider className=\"spacer-sm-top\" role=\"presentation\" />\r\n <OnboardingHistory\r\n onboardingHistoryRecords={selectedEnrollmentVettingRecords}\r\n isReviewLoading={isHistorySectionLoading}\r\n ></OnboardingHistory>\r\n </>\r\n )}\r\n </FlyInPanel>\r\n </>\r\n )}\r\n </div>\r\n </div>\r\n ) : loadingClaims ? (\r\n <Loader size=\"large\" blockOperation={true} fullScreen={true} />\r\n ) : (\r\n <NotAuthorizedComponent />\r\n );\r\n}\r\n\r\nexport default withRouter(ManagePartners as any);\r\n","import { withRouter } from \"react-router\";\r\nimport ManagePartners from \"./manage-partners\";\r\n\r\nfunction PartnerOperationsTool() {\r\n return (<ManagePartners key={0}></ManagePartners>);\r\n}\r\n\r\nexport default withRouter(PartnerOperationsTool as any);","/**\r\n * @description the mocks for partner invitation\r\n */\r\nexport const PARTNER_INVITATIONS = {\r\n pageNumber: 1,\r\n totalPageCount: 1,\r\n pageSize: 10,\r\n first:\r\n \"/api/v1/invitation?programName=surfaceadr&countries=india&pageNumber=1&pageSize=10&pageNumber=1&pageSize=10\",\r\n prev: null,\r\n next: null,\r\n last: \"/api/v1/invitation?programName=surfaceadr&countries=india&pageNumber=1&pageSize=10&pageNumber=1&pageSize=10\",\r\n data: [\r\n {\r\n id: \"7898cf8d-c654-4a4d-b7ba-e44aa150976d\",\r\n enrollmentId: null,\r\n inviteUrl:\r\n \"https://partner.microsoft-ppe.com/en-us/dashboard/account/exp/enrollment/welcome/redirect?X-Redirect_Shared_Context=ewoJIkNyZWF0ZWRCeSI6ICJPcHNUb29sIiwKCSJNb2RpZmllZEJ5IjogIk9wc1Rvb2wiLAoJIkRpc2NvdmVyeUFjdGlvbiI6ICJTdXJmYWNlQURSRW5yb2xsbWVudEZsb3ciLAoJIlByb3BlcnR5QmFnIjogewoJCSJwcm9ncmFtTmFtZSI6ICJTdXJmYWNlQURSIiwKCQkiaW52aXRlSWQiOiAiTnpnNU9FTkdPRVF0UXpZMU5DMDBRVFJFTFVJM1FrRXRSVFEwUVVFeE5UQTVOelpDIiwKCQkibG9jYWxlIiA6ICJlbi11cyIKCX0KfQ==\",\r\n programId: \"6298CF8D-C654-4A4D-B7BA-E44AA150976A\",\r\n artifactUrl: \"artifactUrlLink1\",\r\n country: \"india\",\r\n isActive: true,\r\n expiryDateTime: \"2024-01-25T06:03:34.6\",\r\n partnerData: {\r\n PartnerName: \"Sine\",\r\n contactEmail: \"sine@abc.com\",\r\n contactPhone: \"81718387632\",\r\n contactName: \"Skine\",\r\n PartnerMPNId: \"3737\",\r\n preApprovalDateTime: \"27 Oct 2022 00:00:00\",\r\n },\r\n createdDateTime: \"2023-01-25T06:03:34.6\",\r\n createdBy: \"Test Test Sine Test Test Co\",\r\n updatedDateTime: \"2023-01-25T06:03:34.6\",\r\n updatedBy: null,\r\n },\r\n {\r\n id: \"7898cf8d-c654-4a4d-b7ba-e44aa150975d\",\r\n enrollmentId: null,\r\n inviteUrl:\r\n \"https://partner.microsoft-ppe.com/en-us/dashboard/account/exp/enrollment/welcome/redirect?X-Redirect_Shared_Context=ewoJIkNyZWF0ZWRCeSI6ICJPcHNUb29sIiwKCSJNb2RpZmllZEJ5IjogIk9wc1Rvb2wiLAoJIkRpc2NvdmVyeUFjdGlvbiI6ICJTdXJmYWNlQURSRW5yb2xsbWVudEZsb3ciLAoJIlByb3BlcnR5QmFnIjogewoJCSJwcm9ncmFtTmFtZSI6ICJTdXJmYWNlQURSIiwKCQkiaW52aXRlSWQiOiAiTnpnNU9FTkdPRVF0UXpZMU5DMDBRVFJFTFVJM1FrRXRSVFEwUVVFeE5UQTVOelpDIiwKCQkibG9jYWxlIiA6ICJlbi11cyIKCX0KfQ==\",\r\n programId: \"6298CF8D-C654-4A4D-B7BA-E44AA150976A\",\r\n artifactUrl: \"artifactUrlLink1\",\r\n country: \"india\",\r\n isActive: true,\r\n expiryDateTime: \"2024-01-25T06:03:34.6\",\r\n partnerData: {\r\n PartnerName: \"ABC\",\r\n contactEmail: \"abc@abc.com\",\r\n contactPhone: \"81718387632\",\r\n contactName: \"Matt\",\r\n PartnerMPNId: \"3737\",\r\n preApprovalDateTime: \"27 Oct 2022 00:00:00\",\r\n },\r\n createdDateTime: \"2023-01-25T06:03:34.6\",\r\n createdBy: \"Test Test ABC\",\r\n updatedDateTime: \"2023-01-25T06:03:34.6\",\r\n updatedBy: null,\r\n },\r\n {\r\n id: \"7898df8d-c654-4a4d-b7ba-e44aa150976d\",\r\n enrollmentId: null,\r\n inviteUrl:\r\n \"https://partner.microsoft-ppe.com/en-us/dashboard/account/exp/enrollment/welcome/redirect?X-Redirect_Shared_Context=ewoJIkNyZWF0ZWRCeSI6ICJPcHNUb29sIiwKCSJNb2RpZmllZEJ5IjogIk9wc1Rvb2wiLAoJIkRpc2NvdmVyeUFjdGlvbiI6ICJTdXJmYWNlQURSRW5yb2xsbWVudEZsb3ciLAoJIlByb3BlcnR5QmFnIjogewoJCSJwcm9ncmFtTmFtZSI6ICJTdXJmYWNlQURSIiwKCQkiaW52aXRlSWQiOiAiTnpnNU9FTkdPRVF0UXpZMU5DMDBRVFJFTFVJM1FrRXRSVFEwUVVFeE5UQTVOelpDIiwKCQkibG9jYWxlIiA6ICJlbi11cyIKCX0KfQ==\",\r\n programId: \"6298CF8D-C654-4A4D-B7BA-E44AA150976A\",\r\n artifactUrl: \"artifactUrlLink1\",\r\n country: \"india\",\r\n isActive: true,\r\n expiryDateTime: \"2024-01-25T06:03:34.6\",\r\n partnerData: {\r\n PartnerName: \"PS\",\r\n contactEmail: \"ps@ps.com\",\r\n contactPhone: \"81718387632\",\r\n contactName: \"Pooja\",\r\n PartnerMPNId: \"3737\",\r\n preApprovalDateTime: \"27 Oct 2022 00:00:00\",\r\n },\r\n createdDateTime: \"2023-01-25T06:03:34.6\",\r\n createdBy: \"Test Test xyz\",\r\n updatedDateTime: \"2023-01-25T06:03:34.6\",\r\n updatedBy: null,\r\n },\r\n ],\r\n};\r\n","/**\r\n * @description the mock for partner invitation\r\n */\r\nexport const PARTNER_INVITATION = {\r\n id: \"72491c39-30b8-47a0-9fd5-2b6d15f80e94\",\r\n enrollmentId: null,\r\n inviteUrl:\r\n \"https://partner.microsoft-ppe.com/en-us/dashboard/account/exp/enrollment/welcome/redirect?X-Redirect_Shared_Context=eyJDcmVhdGVkQnkiOiJPcHNUb29sIiwiTW9kaWZpZWRCeSI6Ik9wc1Rvb2wiLCJSZXF1ZXN0SWQiOm51bGwsIkRpc2NvdmVyeUFjdGlvbiI6IlN1cmZhY2VBRFJFbnJvbGxtZW50RmxvdyIsIlByb3BlcnR5QmFnIjp7InByb2dyYW1OYW1lIjoiU1VSRkFDRUFEUiIsImludml0ZUlkIjoiTnpJME9URmpNemt0TXpCaU9DMDBOMkV3TFRsbVpEVXRNbUkyWkRFMVpqZ3daVGswIiwibG9jYWxlIjoiZW4tdXMifX0=\",\r\n programId: null,\r\n artifactUrl:\r\n \"https://amsdnidatappe.blob.core.windows.net/opstoolpreapprovalartifacts/Approval%20Mail%20-%20Jai%20-%20Convergent2b.msg\",\r\n country: \"Germany \",\r\n isActive: true,\r\n expiryDateTime: \"2024-02-08T12:15:41.397\",\r\n partnerData: {\r\n PartnerId: \"789\",\r\n PartnerName: \"Batra Tech\",\r\n PartnerRegion: \"Germany \",\r\n PartnerContactName: \"Karan batra\",\r\n PartnerContactEmail: \"karan@bbmail.com\",\r\n PartnerContactPhone: \"938349726343\",\r\n ApproverName: \"Mr. RK Satija\",\r\n ApprovalDate: \"2023-02-07\",\r\n },\r\n createdDateTime: \"2023-02-08T12:15:41.39\",\r\n createdBy: \"Pooja Satija\",\r\n updatedDateTime: \"2023-02-08T12:15:41.39\",\r\n updatedBy: \"Pooja Satija\",\r\n};\r\n","/**\r\n * @description The Invitation Service\r\n */\r\nimport axios from \"axios\";\r\nimport { BASE_API_PATH } from \"../../constants\";\r\nimport { ApiError } from \"../../models\";\r\n\r\nimport { BaseHelperService } from \"./helper.base\";\r\nimport { Logger } from \"../../decorators\";\r\nimport { from, Observable } from \"rxjs\";\r\nimport { PARTNER_INVITATIONS } from \"../../../src/mocks/api/partnerInvitations\";\r\nimport { InvitationResponse } from \"../../../src/models/invitation-response\";\r\nimport { InvitationFormPayload } from \"../../../src/models/invitation-form-payload\";\r\nimport { InvitationRequest } from \"../../../src/models/invitation-request\";\r\nimport { IPartnerInviteDetails } from \"src/models/partner-operations-tool/invitations.model\";\r\nimport { PARTNER_INVITATION } from \"../../../src/mocks/api/invitation\";\r\nimport { PaginatedResponse } from \"../../../src/models/partner-operations-tool/partnerDetails.model\";\r\n\r\nconst instance = axios.create({\r\n baseURL: `${BASE_API_PATH}invitation`,\r\n});\r\n\r\nconst CLASS_NAME = \"InvitationService\";\r\n\r\nclass InvitationServiceClass extends BaseHelperService {\r\n @Logger(CLASS_NAME, [], [\"error\"])\r\n private handleApiError(error: ApiError): ApiError {\r\n return error;\r\n }\r\n\r\n constructor() {\r\n super(instance);\r\n }\r\n\r\n @Logger(CLASS_NAME, [], [\"success\"])\r\n private getSuccessResponse<T>(response: T): T {\r\n return response;\r\n }\r\n @Logger(CLASS_NAME, [], [\"programName\", \"invitationFormPayload\"])\r\n public submitInvitation(\r\n programName: string,\r\n invitationFormPayload: InvitationFormPayload\r\n ): Observable<InvitationResponse> {\r\n const location = window.location.host.toLowerCase();\r\n invitationFormPayload.inviteUrl = `https://${location}${invitationFormPayload.inviteUrl}`;\r\n return from(\r\n this.performPost<InvitationResponse, InvitationRequest>(\r\n `?programName=${programName}`,\r\n invitationFormPayload,\r\n undefined,\r\n undefined\r\n )\r\n .catch((err: ApiError) => {\r\n throw this.handleApiError(err);\r\n })\r\n .then((response: InvitationResponse) => {\r\n return response;\r\n })\r\n );\r\n }\r\n\r\n @Logger(CLASS_NAME, [], [\"url\"])\r\n public getAllInvitations(\r\n url: string\r\n ): Promise<PaginatedResponse<IPartnerInviteDetails[]>> {\r\n return this.performGet<PaginatedResponse<IPartnerInviteDetails[]>>(\r\n url,\r\n undefined,\r\n PARTNER_INVITATIONS\r\n )\r\n .catch((err: ApiError) => {\r\n throw this.handleApiError(err);\r\n })\r\n .then((response: PaginatedResponse<IPartnerInviteDetails[]>) => {\r\n return this.getSuccessResponse<\r\n PaginatedResponse<IPartnerInviteDetails[]>\r\n >(response);\r\n });\r\n }\r\n\r\n @Logger(CLASS_NAME, [], [\"encodedInviteId\"])\r\n public getInvitationById(\r\n encodedInviteId: string\r\n ): Promise<IPartnerInviteDetails> {\r\n return this.performGet<IPartnerInviteDetails>(\r\n `/${encodedInviteId}`,\r\n undefined,\r\n PARTNER_INVITATION\r\n )\r\n .catch((err: ApiError) => {\r\n throw this.handleApiError(err);\r\n })\r\n .then((response: IPartnerInviteDetails) => {\r\n return this.getSuccessResponse<IPartnerInviteDetails>(response);\r\n });\r\n }\r\n}\r\n\r\nexport const InvitationService = new InvitationServiceClass();\r\n","/**\r\n * @description The Upload Service\r\n */\r\nimport axios from \"axios\";\r\nimport { BASE_API_PATH } from \"../../constants\";\r\nimport {\r\n ApiError,\r\n} from \"../../models\";\r\n\r\nimport { BaseHelperService } from \"./helper.base\";\r\nimport { Logger } from \"../../decorators\";\r\nimport { from, Observable } from \"rxjs\";\r\n\r\nconst instance = axios.create({\r\n baseURL: `${BASE_API_PATH}`,\r\n});\r\n\r\nconst CLASS_NAME = \"UploadService\";\r\n\r\nclass UploadServiceClass extends BaseHelperService {\r\n @Logger(CLASS_NAME, [], [\"error\"])\r\n private handleApiError(error: ApiError): ApiError {\r\n return error;\r\n }\r\n\r\n constructor() {\r\n super(instance);\r\n }\r\n\r\n @Logger(CLASS_NAME, [], [\"file\"])\r\n public uploadFile(file: any): Observable<string> {\r\n var bodyFormData = new FormData();\r\n bodyFormData.append(\"Files\", file);\r\n\r\n let config = {\r\n url: \"myurl\",\r\n data: bodyFormData,\r\n headers: { \"Content-Type\": \"multipart/form-data\" },\r\n };\r\n return from(\r\n this.performPost<string, any>(\r\n `/fileupload`,\r\n bodyFormData,\r\n config,\r\n undefined\r\n )\r\n .catch((err: ApiError) => {\r\n throw this.handleApiError(err);\r\n })\r\n .then((response: string) => {\r\n return this.getSuccessResponse(response);\r\n })\r\n );\r\n }\r\n\r\n @Logger(CLASS_NAME, [], [\"success\"])\r\n private getSuccessResponse<T>(response: T): T {\r\n return response;\r\n }\r\n}\r\n\r\nexport const UploadService = new UploadServiceClass();\r\n"],"sourceRoot":""}