{"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          &emsp;\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":""}