{"version":3,"file":"main.318d6905d0771dba.js","mappings":"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AfRvB,KAAY,wCAQb,CACT9nE,KACAQ,KACAy9C,KACAqrB,SAAkBC,UACnBtsB,QAAA,CAXCusB,KACAC,KACA5G,GACAjuB,IACA2vB,KAAgB,SASP6E,CAAS,aC7BlB/oE,EAAY29C,eACd0rB,SAGFC,OACGC,gBAAgBR,IAChBS,MAAOzwE,GAAQC,QAAQxG,MAAMuG,oBCZhC,IAAA3G,EAAA,CACA,YACA,eACA,YACA,eACA,kBACA,eACA,kBACA,eACA,kBACA,eACA,kBACA,eACA,kBACA,eACA,kBACA,eACA,YACA,eACA,YACA,eACA,YACA,eACA,YACA,eACA,YACA,eACA,kBACA,eACA,YACA,eACA,YACA,eACA,YACA,eACA,YACA,eACA,YACA,eACA,YACA,eACA,WACA,cACA,YACA,eACA,YACA,eACA,kBACA,eACA,kBACA,eACA,YACA,eACA,YACA,eACA,eACA,kBACA,eACA,kBACA,eACA,kBACA,eACA,kBACA,eACA,kBACA,cACA,iBACA,eACA,kBACA,eACA,kBACA,YACA,eACA,YACA,eACA,kBACA,eACA,kBACA,eACA,kBACA,eACA,YACA,eACA,WACA,cACA,WACA,cACA,YACA,eACA,aACA,gBACA,YACA,eACA,YACA,eACA,kBACA,eACA,kBACA,eACA,YACA,eACA,YACA,eACA,YACA,eACA,YACA,eACA,kBACA,qBACA,kBACA,qBACA,YACA,eACA,YACA,eACA,YACA,eACA,YACA,eACA,YACA,eACA,eACA,kBACA,YACA,eACA,YACA,eACA,YACA,eACA,kBACA,eACA,YACA,eACA,WACA,cACA,WACA,cACA,YACA,eACA,YACA,eACA,YACA,eACA,YACA,eACA,YACA,eACA,YACA,eACA,YACA,eACA,YACA,eACA,WACA,cACA,YACA,eACA,YACA,eACA,YACA,eACA,YACA,eACA,YACA,eACA,YACA,eACA,YACA,eACA,YACA,eACA,kBACA,eACA,WACA,cACA,YACA,eACA,UACA,aACA,YACA,eACA,YACA,eACA,kBACA,eACA,YACA,eACA,eACA,kBACA,cACA,iBACA,YACA,eACA,YACA,eACA,kBACA,eACA,YACA,eACA,YACA,eACA,YACA,eACA,YACA,eACA,WACA,cACA,YACA,eACA,YACA,eACA,YACA,eACA,WACA,iBACA,oBACA,cACA,YACA,eACA,YACA,eACA,YACA,eACA,YACA,eACA,YACA,eACA,aACA,gBACA,YACA,eACA,YACA,eACA,YACA,eACA,eACA,kBACA,aACA,gBACA,YACA,eACA,aACA,gBACA,aACA,gBACA,mBACA,gBACA,eACA,kBACA,YACA,eACA,YACA,eACA,WACA,iBACA,oBACA,cACA,UACA,aACA,iBACA,oBACA,WACA,cACA,eACA,kBACA,eACA,kBACA,eACA,kBACA,eACA,mBAIA,SAAAq3E,EAAAzrB,GACA,IAAAjrD,EAAA22E,EAAA1rB,GACA,OAAAklB,EAAAnwE,EACA,CACA,SAAA22E,EAAA1rB,GACA,IAAAklB,EAAAyG,EAAAv3E,EAAA4rD,GAAA,CACA,IAAAmlB,EAAA,IAAAlkB,MAAA,uBAAAjB,EAAA,KACA,MAAAmlB,EAAAyG,KAAA,mBACAzG,CACA,CACA,OAAA/wE,EAAA4rD,EACA,CACAyrB,EAAA3uD,KAAA,WACA,OAAAD,OAAAC,KAAA1oB,EACA,EACAq3E,EAAA3L,QAAA4L,EACAG,EAAAC,QAAAL,EACAA,EAAA12E,GAAA","names":["AccountStatus","Active","Pending","Disapproved","Locked","Suspended","ApplicationStatus","InReview","Approved","OnHold","AssistanceType","HowToJoinMSEP","GeneralProgramQuestions","SharingAnInstallationEvent","OtherNotRegistered","TechnicalAssistance","JobPostingOrFeeds","PartnerReporting","OtherRegistered","BecomeMSEPPartner","NewUserAccount","ContactUsTicketStatus","InProgress","Resolved","SpouseTicket","Countries","UnitedStates","Docks","EngagementTracker","Helpdesk","Jobs","PartnerActivity","PartnerEngagement","PartnerMetrics","RecentlyAccessedPartner","SpouseActivity","SpouseEngagement","UserMetrics","PartnerBadge","GhostLoaderType","Card","Page","PartnerLogo","Table","Icon","LinkedIn","Facebook","Twitter","Pinterest","Instagram","JobFeedSourceUrlType","FeedUrl","S3","USAJOBS","JobFeedType","XML","CSV","JSON","MsepChartType","Line","Pie","SpouseEngagementMultiLine","TotalPublishedJobsMultiLine","JobMap","SpouseMap","LineChart","CandidateSearch","SpousesHired","SpousesCurrentlyEmployed","PartnersWhoReported","TotalPartners","TotalJobs","PieChart","Industry","YearsOfExperience","EducationLevel","RemoteTeleworkJob","PartnerIndustry","RemoteTeleworkPartner","PartnershipType","PartnershipTypeId","EmployerPartners","SpouseAmbassadorNetwork","FederalAgencyPartners","MsepEducation","MsepSmallBusiness","PartnerReports","PartnerJobs","HiringData","TeleworkRemote","SpecialistSpouseEngagement","SpecialistSpousesHired","SpouseHire","SpouseEmploymentDetails","SpecialistHotJobs","CandidateStatus","PartnerCandidateView","PartnerResourceType","UserManual","SpouseClickedApply","SpouseSearchedProfile","SpouseSavedProfile","SpouseViewedProfile","SpouseEnteredBooth","Permission","ManageReports","ManageUsers","ManageJobs","ManagePartnerProfiles","PartnerAdmin","PermissionId","Role","SysOp","Govt","Specialist","User","RoleId","ManageReportsGuard","constructor","authService","jwtService","router","this","canActivate","isAuthenticated","userHasRole","userHasPermission","handleInvalidAccess","navigate","i0","i1","i2","i3","factory","ɵfac","providedIn","SysOpGuard","VhfTempGuard","showVhfToAllUsers","showVhfToBetaUsers","isBetaUser","AccountService","configService","http","msepPartnerApiUrl","config","msepPartnerApiBaseUrl","getUserChallengeQuestions","token","get","pipe","map","result","data","catchError","error","handleError","resetAccount","post","resetPassword","sendFullResetToken","user","id","response","sendPasswordResetToken","form","sendPasswordResetTokenWithRecaptcha","reCaptchaResponse","headers","throwError","AdminDashboardService","secoApiUrl","secoApiBaseUrl","getErrorTrends","getEventLogTrends","getHelpDeskCounts","forkJoin","pendingUserCount","getPendingUserCount","ticketCounts","getTicketCounts","getJobFeedInfo","isSapAvailable","isRunning","statusCode","HttpStatusCode","Ok","of","isSecoAvailable","AdminService","utilService","getEmailServiceStatus","getHistoricalHiresLog","filters","url","params","HttpParams","fromObject","removeFalseyProperties","getPartnersAutoComplete","searchTerm","getReportConfiguration","searchAuthLogs","searchPartners","undefined","sendTestEmail","updateReportConfiguration","reportConfiguration","AuthenticationService","delayOffset","isAuthenticatedSubject","BehaviorSubject","next","isTokenExpired","baseUrl","clearSession","deleteAllTokens","refreshSubscription","unsubscribe","getDisplayName","decodeToken","unique_name","getNewJwtFromRefreshTokenObservable","requestBody","refreshToken","getRefreshToken","authenticateResponse","setTokenData","jwt","getTimeoutTimeFromJwt","logIn","logOut","getNewJwtFromRefreshToken","subscribe","x","handleManualTokenDeletion","window","addEventListener","event","key","tokenStorageKey","newValue","scheduleRefresh","tokenStream","delay","calculateDelay","timer","takeWhile","now","Date","valueOf","decodedJwt","jwtExp","exp","setUTCSeconds","setToken","jwtToken","setRefreshToken","err","console","i4","BlobService","download","blob","base64toBlob","fileContent","fileMimeType","a","document","createElement","objectUrl","URL","createObjectURL","href","fileName","click","revokeObjectURL","downloadBlob","base64Data","contentType","sliceSize","byteCharacters","atob","bytesLength","length","slicesCount","Math","ceil","byteArrays","Array","sliceIndex","begin","end","min","bytes","offset","i","charCodeAt","Uint8Array","Blob","type","ChartsService","getCandidateSearchMetrics","partnerId","exportCandidateSearchMetrics","getJobMapMetrics","exportJobMapMetrics","getJobMetrics","exportJobMetrics","getPartnerIndustryMetrics","exportPartnerIndustryMetrics","getPartnershipTypeMetrics","exportPartnershipTypeMetrics","getPartnersWhoReportedMetrics","exportPartnersWhoReportedMetrics","getRemoteTeleworkJobMetrics","exportRemoteTeleworkJobMetrics","getRemoteTeleworkPartnerMetrics","exportRemoteTeleworkPartnerMetrics","getSpouseCurrentlyEmployedMetrics","exportSpouseCurrentlyEmployedMetrics","getSpouseHiredMetrics","exportSpouseHiredMetrics","getTotalJobsMetrics","exportTotalJobsMetrics","getTotalPartnersMetrics","exportTotalPartnersMetrics","SystemAlertService","publishedSystemAlertCount$","savedFilters","clearSavedFilters","createSystemAlert","deleteSystemAlert","editSystemAlert","alert","getSavedFilters","getSystemAlertById","publishedSystemAlerts","saveFilters","searchSystemAlerts","DashboardService","getExactTotalSpousesHired","count","getDefaultRoleDocks","roleId","getDocks","getPartnerEngagement","getPartnerTracker","getPartnerMetrics","statusCounts","filter","statusId","getRecentlyAccessedPartners","getUserMetrics","toggleCollapseDock","dockId","updateDocks","docks","HelpDeskService","createHelpDeskTicket","createAuthHelpDeskTicket","getContactUsTicket","ticketId","getContactUsTickets","updateContactUsTicket","ticket","ConfigService","loadConfig","_this","_asyncToGenerator","config$","environment","configSettings","lastValueFrom","CONFIG_SERVICE_PROVIDER","provide","APP_INITIALIZER","useFactory","configProviderFactory","deps","multi","ctx_r0","title","GeneralDialogComponent","dialogRef","viewContainerRef","ngOnInit","templatePortal","TemplatePortal","templateRef","MAT_DIALOG_DATA","selectors","decls","vars","consts","template","rf","ctx","GeneralDialogComponent_div_1_Template","GeneralDialogComponent_ng_template_3_Template","DialogService","dialog","confirm","message","confirmation","generalConfirmation","open","ConfirmationDialogComponent","buttonYes","buttonNo","generalDialog","width","showDeleteConfirmation","dialogContent","governmentExitModal","linkUrl","GoogleAnalyticsService","googleAnalyticsKey","generateScript","gTagLoaderId","tagManagerLoaderId","getElementById","tagManagerScript","buildTagManagerScript","googleAnalyticsScript","buildGTagScript","head","appendChild","trackExternalLinkClick","linkHref","ga","eventCategory","eventAction","eventLabel","scriptId","script","async","defer","innerHTML","src","JwtService","refreshTokenKey","refreshTokenStorageKey","tokenKey","Observable","obs","getToken","jwtDecode","sessionStorage","clear","doesTokenExist","getDaysUntilPasswordExpires","decodedToken","Number","daysUntilPasswordExpires","getEmail","email","getHomePage","organizationId","getOrganizationId","organizationStatus","getOrganizationApplicationStatusId","getLastLoginDate","lastLoginDate","organizationApplicationStatusId","getItem","getTokenExpiration","date","getUserId","getValue","offsetSeconds","isPasswordExpiring","routeToHomePage","setItem","permissionToCheck","getPermissions","some","permission","roleToCheck","getRole","permissions","role","NotificationService","materialSnackbar","failureNotification$","Subject","failureFullDurationNotification$","successNotification$","successFullDurationNotification$","serverValidationNotification$","defaultDisplayTime","defaultSuccessClass","defaultFailureClass","emitServerValidationError","errors","emitFailure","emitFailureFullDuration","emitSuccess","emitSuccessFullDuration","showSuccess","duration","panelClass","showSuccessFullDuration","showFailure","showFailureFullDuration","JobService","utilitiesService","createJob","deleteJob","documentId","extendPublishDate","extendPublishJob","isJobsIndexAvailable","builder","bodybuilder","size","rawOption","query","build","hits","searchJobs","buildOpenSearchQuery","total","value","job","_source","toggleHotJob","toggleJob","toggleJobPublish","toggleRemoteJob","toggleTeleworkJob","updateJob","buildBaseQuery","from","skip","take","sort","sortByProperty","sortDirection","buildCoordinatesQuery","coordinates","latitude","lat","longitude","lon","distance","location","buildPublishedDateQuery","isPublished","createdEndDate","createdStartDate","startDate","getDateAtMidnight","endDate","getDateAtLatestTimestamp","gte","lte","keyword","jid","buildHotJobQuery","isHotJob","jobFeedId","jobHash","state","orQuery","b","notQuery","lt","c","PartnerDashboardService","getAlerts","getPartnerActivity","getPartnerInfo","getPartnerScoreFromSap","logAccess","PartnerReportService","dateUtils","currentYtd","getYtdDetails","defaultFilter","toLocaleDateString","reportSubject","createMonthlyReport","editMonthlyReport","exportSpousesEmploymentDetails","exportSpousesHiredData","getSpousesEmploymentDetailsData","getSpousesHiredData","getReportForPeriod","reportPeriod","hasPartnerReported","setReportFilters","reportFilters","SecoService","secoApiUrlRoot","downloadProfile","getHeader","responseType","downloadSpouseFile","endpoint","partnerName","getCandidateByProfileId","profileId","getClearance","getClickedApplyCount","getClickedApplyExport","getEducationLevels","getJobTypes","getJobSearchStatuses","getSpouseEngagementChartData","exportSpouseEngagementChartData","getProfileViewCount","getSpouseSavedData","sortField","getSpouseSavedExport","getSpouseViewedData","getSpouseViewedExport","getSpouseEnteredBoothData","getSpouseEnteredBoothExport","getSavedProfileCount","toString","moment","format","getSearchData","searchedStartDate","searchedEndDate","getSpouseMapMetrics","getSpouseSearchExport","searchCandidate","candidate","searchByMsepUserId","secoFormattedParams","secoFixFilter","cleanedParams","querySkills","HttpHeaders","apiKey","candidateParams","firstName","hasLinkedInUrl","jobSearchStatusId","lastName","locationDistance","profilePercentage","searchByMsepPartnerId","stateId","searchResumes","sortByDirection","clearancesId","arr","push","clearanceList","educationId","educationIds","includeSavedCandidates","profileList","jobTypeId","jobTypeIds","skill","skills","PartnersService","canViewOurPartner","downloadPartnerApplication","deletePartner","getMsep360NewsLetters","getPartnerProfile","getPartnerResourcesAutoComplete","getPartnerResources","getPartnerTrainingVideos","getPrimaryPointOfContact","getRandomPartners","getRoundedPartnerCount","search","roundDown","getSysopPartnerProfile","resendApplication","updateLogoUrl","updateProfile","sapId","updateSapId","ReportService","currentFy","getFyDetails","exportPartnerEngagement","exportPartnerCandidateView","exportPartnerJobs","exportPartnersAndSpousesHired","exportTeleworkRemote","exportCandidateStatusReport","exportSpecialistSpouseEngagement","exportSpecialistHotJobs","exportSpecialistSpousesHired","getPartnerEngagementReport","getPartnerCandidateViewReport","getPartnersAndSpousesHired","getTeleworkRemoteReport","getCandidateStatusReport","getSpecialistHotJobsReport","getSpecialistSpouseEngagementReport","getSpecialistSpousesHiredReport","partnerJobs","ResourcesService","partnerApiBaseUrl","getAccountStatuses","getAllSpecialists","getApplicationStatuses","getAuthenticationLogReasons","getCandidateStatuses","getCandidateTags","getCareerLevels","getCategories","getChallengeQuestions","getCompensationTypes","getContactUsAssistanceTypes","isRegistered","forRegistered","getContactUsContactWindows","getContactUsPreferredCommunications","getContactUsTicketStatuses","getCountry","getEmploymentDetailTypes","getEventLogMinimumLevels","getEventLogTitles","getFaqCategories","getFaqs","getFiscalYears","getIndustrySectors","getJobBenefits","getJobCommunicationMethods","getJobFeedImportStatus","description","getJobFeedImportSteps","getJobFeedParameters","getJobFeedTypes","getJobFeedSourceUrlTypes","getScheduledTasks","getSpouseHiredReportMetricGroup","getPartnershipTypes","getResourceCategories","getRoles","getRoundedTotalSpousesHired","getStates","getUserManualSize","getUserManual","blockIndex","getYearsOfExperience","getYesNoListBoolean","getYesNoList","DateUtilsService","convertStartAndEndDateFilters","isDateCompatible","getCurrentFiscalYear","currentDate","getMonth","getUTCFullYear","getCurrentYear","getDateWithNoTime","utcOffset","getDateStringWithoutUtcDesignator","replace","getDayOfMonth","getUTCDate","fiscalYear","setMonth","setDate","setUTCFullYear","currentYear","minDate","maxDate","getPreviousMonthName","getUTCMonth","toLocaleString","month","getPreviousMonthYear","year","input","target","interval","floor","UtilsService","addNDaysToDate","n","newDate","getDate","buildEncodedS3Url","s3BucketUrl","encodeURIComponent","convertToKebabCase","term","toLowerCase","setUTCHours","toISOString","getStringListFromArray","join","isInt32","pow","object","falseyValues","Set","output","Object","keys","has","forEach","AppLayoutComponent","authenticationService","dapId","isDevMode","dapScript","remove","newDapScript","_r1","sidenav_r2","toggle","FooterComponent","version","setTimeout","fixDuplicateSvgIds","updateSvgElement","selector","uniqueId","svgElement","querySelector","setAttribute","_c0","_c1","_c2","_c3","_c4","_r3","_r4","_r6","_c20","_r7","_c21","_r8","_c22","_r9","_c23","_r5","SideMenuComponent_ng_container_4_mat_accordion_6_a_21_Template","SideMenuComponent_ng_container_4_mat_accordion_6_a_24_Template","SideMenuComponent_ng_container_4_mat_accordion_6_a_31_Template","SideMenuComponent_ng_container_4_mat_accordion_6_a_42_Template","_c5","_c6","_c7","_c8","_c9","_c10","userHasHelpDeskPermission","_c11","userHasManageJobsPermission","_c12","_c13","_c14","userHasManageReportsPermission","_c15","_c16","_c17","_c18","_c19","userHasManageUsersPermission","_r10","_c24","_r11","_c25","_r12","_c26","_r2","SideMenuComponent_ng_container_4_mat_list_item_4_Template","SideMenuComponent_ng_container_4_mat_list_item_5_Template","SideMenuComponent_ng_container_4_mat_accordion_6_Template","SideMenuComponent_ng_container_4_mat_list_item_7_Template","SideMenuComponent_ng_container_4_mat_list_item_8_Template","SideMenuComponent_ng_container_4_mat_list_item_20_Template","getHomepageLink","userHasUserRole","shouldShowPartnerDirectoryLink","userIsSysOp","shouldShowReportMenu","userHasSpecialistRole","_c27","_c28","_c29","_r13","onLogout","_r14","_c30","_c31","_c32","_c33","SideMenuComponent","menuNavigated","EventEmitter","panelOpenState","subscriptions","authenticationSubscription","onLogin","logoutSubscription","emit","ngOnDestroy","outputs","SideMenuComponent_div_1_Template","SideMenuComponent_mat_divider_2_Template","SideMenuComponent_ng_container_4_Template","SideMenuComponent_div_7_Template","SideMenuComponent_button_9_Template","SideMenuComponent_button_11_Template","SideMenuComponent_ng_template_12_Template","publicMenu_r15","TopHeaderComponent_ul_10_li_6_a_32_Template","TopHeaderComponent_ul_10_li_6_a_33_Template","TopHeaderComponent_ul_10_li_6_a_36_Template","TopHeaderComponent_ul_10_li_6_a_39_Template","adminMenu_r2","ctx_r2","TopHeaderComponent_ul_10_li_4_Template","TopHeaderComponent_ul_10_li_5_Template","TopHeaderComponent_ul_10_li_6_Template","TopHeaderComponent_ul_10_li_7_Template","TopHeaderComponent_ul_10_li_8_Template","TopHeaderComponent_ul_10_li_20_Template","helpMenu_r4","menu_r5","resourcesMenu_r6","helpMenu_r7","_c34","TopHeaderComponent","getHideMenuClass","menuToggled","isLoading","navigationStartSub","events","NavigationStart","navigationOverSub","NavigationEnd","NavigationCancel","NavigationError","TopHeaderComponent_ul_10_Template","TopHeaderComponent_div_12_Template","TopHeaderComponent_div_13_Template","TopHeaderComponent_mat_progress_bar_17_Template","TopHeaderComponent_ng_template_18_Template","unAuthenticatedMenu_r8","WizardLayoutComponent","ctx_r1","takeMeThere","buttonText","hideAlert","AlertComponent","titleValue","elementRef","nativeElement","showCloseAlert","isHidden","alertClass","setButtonLinkText","setClass","setIcon","buttonLink","AlertType","Info","Success","Warn","icon","inputs","ngContentSelectors","AlertComponent_button_9_Template","AlertComponent_div_10_Template","tmp_1_0","Alert","BackButtonComponent","goBack","back","CardLoaderComponent","CardLoaderComponent_mat_progress_bar_1_Template","CardLoaderComponent_ng_template_2_Template","placeholder_r1","CenteredLoaderComponent","chart_r3","$event","onSelectionChanged","ChartDockComponent_form_7_mat_option_5_Template","charts","chartId","ChartDockComponent","formBuilder","lineChart","isSysOpOrGov","spouseEngagementMultiLineChart","totalPublishedJobsMultiLineChart","lineCharts","mapChart","spouseMapChart","pieChart","pieCharts","chartType","buildForm","patchValue","active","group","ChartDockComponent_form_7_Template","ChartDockComponent_msep_line_chart_9_Template","ChartDockComponent_msep_spouse_engagement_multi_line_chart_10_Template","ChartDockComponent_msep_total_published_jobs_multi_line_chart_11_Template","ChartDockComponent_msep_pie_chart_12_Template","ChartDockComponent_msep_map_chart_13_Template","ChartDockComponent_msep_spouse_map_chart_14_Template","tmp_0_0","ExportLineChartButtonComponent","blobService","chartsService","notificationService","secoService","onExportClick","setObservable","subscription","chartsObservable$","complete","setCandidateSearchObservable","setPartnersWhoReportedObservable","setSpouseHiredObservable","setSpouseCurrentlyEmployedObservable","setSpouseEngagementObservable","setTotalJobsObservable","setTotalPartnersObservable","ExportMapChartButtonComponent","setJobMapObservable","ExportPieChartButtonComponent","onOrganizationSelected","partnershipType_r4","onPartnershipTypeChanged","LineChartComponent_mat_form_field_4_mat_option_4_Template","partnershipTypes$","chart","LineChartComponent","lineChartId","setChartValues","loadChartData","resourceService","dateFormat","partnershipTypeId","lineChartMetricsSubject","Subscription","setDateFilterDefaults","ngAfterViewInit","createChart","currentFilter","onEndDateSelected","toDate","setHours","selectedDate","DatePipe","transform","organization","organizationName","onStartDateSelected","onReset","Chart","labels","datasets","fill","options","responsive","maintainAspectRatio","layout","padding","left","right","bottom","plugins","legend","display","scales","y","beginAtZero","lineChartMetricsAction$","asObservable","lineChartMetrics$","tap","switchMap","results","lineChartMetrics","updateChart","chartTitle","today","selectedEndDate","getFullYear","selectedStartDate","update","destroy","LineChartComponent_msep_partner_autocomplete_2_Template","LineChartComponent_mat_form_field_4_Template","LineChartComponent_ng_container_14_Template","MapChartComponent_ng_container_0_p_3_Template","mapChartMetrics","MapChartComponent","jobMapMetricsSubject","loadMapData","calculateUpperBound","upperLimmit","createMap","d3","selectAll","then","mapData","newMapData","topojson","objects","states","features","d","svg","append","attr","color","colorRange","domain","range","enter","stateData","find","s","text","legendColor","labelFormat","scale","call","mapChartMetricsAction$","mapChartMetrics$","viewQuery","MapChartComponent_ng_container_0_Template","PieChartComponent","pieChartType","pieChartId","shouldHideFilters","partnerIndustryChartId","remoteTeleworkPartnerChartId","partnershipTypeChartId","field","chartName","pieChartMetricsSubject","reset","backgroundColor","hoverOffset","top","position","afterDraw","save","textAlign","textBaseline","font","getComputedStyle","body","fontFamily","fillText","height","restore","pieChartMetricsAction$","pieChartMetrics$","pieChartMetrics","PieChartComponent_div_2_Template","PieChartComponent_button_4_Template","PieChartComponent_ng_container_8_Template","SpouseEngagementMultiLineChartComponent","spouseEngagementChartId","secoChartMetricsSubject","loadSecoChartData","endOf","borderColor","secoLineChartMetricsAction$","secoLineChartMetrics$","secoLineChartMetrics","clickApply","label","saveProfile","searchProfile","viewProfile","SpouseEngagementMultiLineChartComponent_msep_partner_autocomplete_2_Template","SpouseEngagementMultiLineChartComponent_ng_container_13_Template","SpouseMapChartComponent","valueChanges","emitEvent","SpouseMapChartComponent_ng_container_0_Template","partnershipType_r3","TotalPublishedJobsMultiLineChartComponent","totalJobsChartId","totalJobsMetricsSubject","loadTotalJobsChartData","totalJobsLineChartMetricsAction$","totalJobsLineChartMetrics$","totalJobsLineChartMetrics","feedCount","manualCount","TotalPublishedJobsMultiLineChartComponent_msep_partner_autocomplete_2_Template","TotalPublishedJobsMultiLineChartComponent_mat_option_8_Template","TotalPublishedJobsMultiLineChartComponent_ng_container_19_Template","onNoClick","onYesClick","googleAnalyticService","close","ConfirmationDialogComponent_button_11_Template","ConfirmationDialogComponent_button_12_Template","CuiBannerComponent","CuiBannerComponent_div_0_Template","dock_r4","$implicit","toggleCollapse","isCollapsed","dropped","DashboardDocksComponent_div_0_div_1_div_1_msep_help_desk_dock_2_Template","DashboardDocksComponent_div_0_div_1_div_1_msep_recently_accessed_partners_dock_3_Template","DashboardDocksComponent_div_0_div_1_div_1_msep_spouse_activity_dock_4_Template","DashboardDocksComponent_div_0_div_1_div_1_msep_partner_metrics_dock_5_Template","DashboardDocksComponent_div_0_div_1_div_1_msep_jobs_dock_6_Template","DashboardDocksComponent_div_0_div_1_div_1_msep_partner_engagement_dock_7_Template","DashboardDocksComponent_div_0_div_1_div_1_msep_user_metrics_dock_8_Template","helpDesk","recentlyAccessed","spouseActivity","partnerMetrics","jobs","partnerEngagement","userMetrics","DashboardDocksComponent_div_0_div_1_div_1_Template","column_r11","DashboardDocksComponent_div_0_div_1_Template","DashboardDocksComponent_div_0_ng_template_2_Template","ghostLoaderType","DashboardDocksComponent","dashboardService","transferArrayItem","previousContainer","container","previousIndex","currentIndex","dock","updatedDocks","column","columnIndex","index","sortOrder","DashboardDocksComponent_div_0_Template","DashboardDocksComponent_msep_ghost_loader_list_1_Template","ticketCount_r2","HelpDeskDockComponent_ng_container_1_div_1_div_2_Template","HelpDeskDockComponent_ng_container_1_div_1_ng_template_3_Template","ctx_r3","userIsSysOpWithPermission","readOnlyTickets_r3","userAccountPendingStatusId","HelpDeskDockComponent_ng_container_1_div_1_Template","HelpDeskDockComponent_ng_container_1_div_4_Template","HelpDeskDockComponent_ng_container_1_ng_template_5_Template","helpDeskCounts_r5","readOnlyPending_r6","HelpDeskDockComponent","adminDashboardService","helpDeskCounts$","HelpDeskDockComponent_ng_container_1_Template","HelpDeskDockComponent_ng_template_3_Template","loading_r7","JobsDockComponent_ng_container_1_div_2_Template","JobsDockComponent_ng_container_1_ng_template_3_Template","readOnlyPublished_r3","jobCount_r2","jobFeedInfo_r5","totalEnabledFeeds","totalDisabledFeeds","totalSucceeded","totalFailed","totalRunning","JobsDockComponent_div_3_ng_container_2_Template","jobFeedInfo$","loading_r6","JobsDockComponent","jobService","isAdminView","jobCount","publishedJobCount$","createdDate","publishEndDate","JobsDockComponent_ng_container_1_Template","JobsDockComponent_div_3_Template","JobsDockComponent_ng_template_4_Template","partnerMetrics_r2","candidateSearchCount","completedMonthlyReportCount","fourPlusOnePartnerCount","partnerTracker_r3","highlyEngaged","increaseEngagement","limitedEngagement","noEngagement","PartnerEngagementDockComponent","partnerEngagement$","partnerTracker$","PartnerEngagementDockComponent_ng_container_1_Template","PartnerEngagementDockComponent_ng_container_3_Template","PartnerEngagementDockComponent_ng_template_5_Template","loading_r4","PartnerMetricsDockComponent_ng_container_1_div_1_mat_divider_7_Template","statusCount_r2","last_r3","PartnerMetricsDockComponent_ng_container_1_div_1_Template","partnerMetrics_r4","PartnerMetricsDockComponent","partnerMetrics$","PartnerMetricsDockComponent_ng_container_1_Template","PartnerMetricsDockComponent_ng_template_3_Template","loading_r5","RecentlyAccessedPartnersDockComponent_ng_container_1_ng_container_1_div_1_mat_divider_8_Template","accessedPartner_r2","accessedDate","RecentlyAccessedPartnersDockComponent_ng_container_1_ng_container_1_div_1_Template","accessedPartners_r4","RecentlyAccessedPartnersDockComponent_ng_container_1_ng_container_1_Template","noResults_r5","RecentlyAccessedPartnersDockComponent","recentlyAccessedPartners$","RecentlyAccessedPartnersDockComponent_ng_container_1_Template","RecentlyAccessedPartnersDockComponent_ng_template_3_Template","RecentlyAccessedPartnersDockComponent_ng_template_5_Template","SpouseActivityDockComponent_ng_container_1_div_2_Template","SpouseActivityDockComponent_ng_container_1_ng_template_3_Template","readOnly_r3","spousesHired_r2","totalClicks_r5","SpouseActivityDockComponent","clickApplyCount$","spousesHired$","SpouseActivityDockComponent_ng_container_1_Template","SpouseActivityDockComponent_ng_container_3_Template","SpouseActivityDockComponent_ng_template_5_Template","totalUsers","activeUsers","lockedUsers","suspendedUsers","UserMetricsDockComponent","isLoadingUserMetrics","loadUserMetrics","UserMetricsDockComponent_ng_container_1_Template","UserMetricsDockComponent_ng_template_2_Template","loading_r3","onClick","DockComponent","DockComponent_mat_icon_5_Template","DockComponent_mat_icon_7_Template","DockComponent_div_9_Template","onResetPasswordClick","expiredPasswordAlertType","ExpiringPasswordNotificationComponent","accountService","resetPasswordErrorMessage","resetPasswordSuccessMessage","confirmEmail","afterClosed","concatMap","i5","i6","ExpiringPasswordNotificationComponent_msep_alert_0_Template","ExportReportButtonComponent","dateUtilsService","partnerReportService","reportService","disabled","inButtonGroup","reportObservable$","cleanUpFilter","fyDetails","getFilter","filtersSubscription","partnerReport","cleanedFilters","setPartnerJobsObservable","setPartnerEngagementObservable","setPartnerCandidateViewObservable","setHiringDataObservable","setTeleworkRemoteObservable","setCandidateStatusObservable","setSpecialistHotJobsObservable","setSpecialistSpouseEngagementObservable","setSpecialistSpousesHiredObservable","setSpouseHireObservable","setSpouseEmploymentDetailsObservable","partnerIds","specialistId","currentStatus","employmentDetailId","getTotals","reportMetricId","listOfErrors","FormErrorComponent","control","errorMessages","required","phoneNumber","minlength","requiredLength","maxlength","pattern","requiredPattern","years","countryCity","uniqueName","telephoneNumbers","telephoneNumber","startGreaterThanEnd","dateIsInThePast","maxLengthArray","maximumLength","minLengthArray","minimumLength","patternWithCustomMessage","customRequired","max","atLeastOneValueRequiredArray","objectToValidate","atLeastTwoValueRequiredArray","stringCompareMismatch","urlQueryParams","zipCode","matDatepickerMax","maxDateString","matDatepickerMin","minDateString","matDatepickerParse","unique","getMessage","shouldShowErrors","dirty","touched","customMessage","FormErrorComponent_div_0_Template","FourPlusOneBadgeComponent","pageGhost_r1","tableGhost_r2","defaultGhost_r3","GhostLoaderListComponent_ng_template_6_tr_4_td_1_Template","tableColumnGhosts","GhostLoaderListComponent_ng_template_6_tr_4_Template","tableRowGhosts","flexClasses","GhostLoaderListComponent_ng_template_8_msep_ghost_loader_mat_card_0_Template","ghosts","GhostLoaderListComponent","ghostLength","ghostTypePage","ghostTypeTable","classes","childFlex","childFlexGtSm","childFlexGtLg","tableColumnLength","tableRowLength","GhostLoaderListComponent_ng_container_1_Template","GhostLoaderListComponent_ng_container_2_Template","GhostLoaderListComponent_ng_container_3_Template","GhostLoaderListComponent_ng_template_4_Template","GhostLoaderListComponent_ng_template_6_Template","GhostLoaderListComponent_ng_template_8_Template","logoGhost_r1","defaultGhost_r2","GhostLoaderMatCardComponent","ghostLoaderLogo","GhostLoaderMatCardComponent_ng_container_1_Template","GhostLoaderMatCardComponent_ng_container_2_Template","GhostLoaderMatCardComponent_ng_template_3_Template","GhostLoaderMatCardComponent_ng_template_5_Template","GooglePlaceAutocompleteComponent","googleAutocompleteChanged","reverseGeocodeLoaded","loaderOptions","googleMapsApiKey","libraries","loader","Loader","autocompleteLoader$","load","initAutocomplete","geocodeRequest","geocodeLoader$","buildGeocodeObservable","getReverseGeocodingData","checkClearedInput","autocompleteInput","geocoder","google","maps","Geocoder","placeId","address","isNullCoordinates","latlng","LatLng","geocode","addressComponentMostInfoIndex","reduce","pendingIndex","current","currentIndexOfLongestArray","geocoderResults","address_components","formattedAddress","formatted_address","googleLocation","getGoogleLocation","geometry","autocomplete","places","Autocomplete","fields","addListener","place","getPlace","autocompleteResult","GooglePlaceAutocompleteResult","GooglePlaceAutocompleteComponent_mat_icon_3_Template","GooglePlaceAutocompleteComponent_mat_spinner_4_Template","GooglePlaceAutocompleteComponent_mat_hint_7_Template","rollupMoment","momentImport","monthYearFormat","parse","dateInput","monthYearLabel","dateA11yLabel","monthYearA11yLabel","MonthlyDatepickerComponent","inputLabel","isRequired","selectedDateMonth","UntypedFormControl","ngOnChanges","passedDate","isDisabled","ytdDetails","chosenMonthHandler","normalizedMonth","datepicker","ctrlValue","setValue","chosenYearHandler","normalizedYear","DateAdapter","useClass","MomentDateAdapter","MAT_DATE_LOCALE","MAT_MOMENT_DATE_ADAPTER_OPTIONS","useValue","useUtc","MAT_DATE_FORMATS","picker_r2","NoResultsComponent","PageTitleComponent","forceBackgroundImageUse","fxLayoutInput","fxLayoutAlignInput","getCssClass","PaginationComponent","pageIndex","pageSize","pageSizeOptions","pagingChange","emitPaginationChange","firstPage","paginator","partner_r2","PartnerAutocompleteComponent","controlDir","adminService","partnersService","changeDetectorRef","overrideShowApprovedActiveOnly","partnerSelected","showAllOrganizationsValue","showHint","inputControl","valueAccessor","partnersAutocomplete$","startWith","partner","autocompleteDisplay","onAutocompleteSelect","option","registerOnChange","fn","detectChanges","registerOnTouched","writeValue","obj","PartnerAutocompleteComponent_mat_hint_4_Template","PartnerAutocompleteComponent_mat_option_7_Template","auto_r3","PartnerLogoComponent","utilsService","defaultLogoFileName","defaultLogoUrl","resourcesS3BucketUrl","onLogoError","image","onerror","logoUrl","PartnerMenuComponent","canViewEvents","PartnerMenuComponent_a_23_Template","PartnerMenuComponent_a_52_Template","mobileMenu_r2","displayOverlay","score","partnerInfo","inductedDate","PartnerPageTitleComponent","activatedRoute","overlay","partnerDashboardService","isLoadingTracker","showTracker","partnerIsApproved","status","partnerIsSmallBusiness","partnershipType","indexOf","snapshot","resolvedData","getScoreById","overlayRef","create","hasBackdrop","backdropClass","positionStrategy","flexibleConnectedTo","withPositions","originX","originY","overlayX","overlayY","component","ComponentPortal","PartnerTrackerComponent","attach","instance","backdropClick","detach","PartnerPageTitleComponent_div_2_Template","PartnerPageTitleComponent_div_5_Template","PartnerPageTitleComponent_div_6_Template","PartnerTrackerComponent_div_0_Template","PartnerTrackerComponent_ng_template_1_Template","noScore_r2","PasswordChecklistComponent","alertType","hasCapitalLetter","test","password","hasLowerCaseLetter","hasNumber","hasSpecialCharacter","meetsLengthRequirement","PasswordChecklistComponent_ng_container_3_Template","PasswordChecklistComponent_ng_container_7_Template","PasswordChecklistComponent_ng_container_11_Template","PasswordChecklistComponent_ng_container_15_Template","PasswordChecklistComponent_ng_container_19_Template","PasswordChecklistComponent_ng_template_24_Template","PasswordChecklistComponent_ng_template_26_Template","requirementMetIcon_r1","requirementNotMetIcon_r2","systemAlert_r1","PublishedAlertsIconComponent","systemAlertService","getPublishedAlertCount","systemAlert$","PublishedAlertsIconComponent_ng_container_1_Template","PublishedAlertsIconComponent_ng_template_3_Template","loading_r2","error_r1","ServerValidationMessageComponent_msep_alert_0_li_2_Template","errors_r2","ServerValidationMessageComponent","scrollToTop","errors$","scrollTo","ServerValidationMessageComponent_msep_alert_0_Template","StaticDisplayComponent","ignoreTitleCase","StaticDisplayComponent_span_1_Template","StaticDisplayComponent_span_2_Template","VideoPlayerComponent","domSanitizer","altText","addScript","videoPath","getVideoPath","addVideoEndScript","wistia","base","source","sanitize","SecurityContext","wistiaClass","querySelectorAll","ExitModalDirective","dialogService","handleClick","stopPropagation","preventDefault","anchor","getAnchorElement","includes","hostname","attributes","getNamedItem","confirmDialogRef","dialogSubscription","tagName","closest","hostBindings","RemoveRoleDirective","el","removeAttribute","MaterialModule","DragDropModule","MatAutocompleteModule","MatBadgeModule","MatButtonModule","MatButtonToggleModule","MatCardModule","MatCheckboxModule","MatChipsModule","MatDatepickerModule","MatDialogModule","MatExpansionModule","MatFormFieldModule","MatGridListModule","MatIconModule","MatInputModule","MatListModule","MatMenuModule","MatNativeDateModule","MatPaginatorModule","MatProgressBarModule","MatProgressSpinnerModule","MatRadioModule","MatRippleModule","MatSelectModule","MatSidenavModule","MatSliderModule","MatSlideToggleModule","MatSnackBarModule","MatStepperModule","MatSortModule","MatTableModule","MatTabsModule","MatToolbarModule","MatTooltipModule","Coordinates","isNaN","GoogleGeocoderRequest","googlePlaceId","buildAddress","address1","city","postal","Boolean","placeResult","place_id","isStateOnly","locationHasStateInformationOnly","getStateCode","addressComponents","stateComponent","addressComponent","types","AddressComponentType","State","short_name","addressComponentTypes","addressComponentType","add","hasNonStateLocationInformation","StreetNumber","Address1","City","ZipCode","County","latitudeAndLongtitude","long_name","Country","country","zip","getCoordinates","lng","CandidateDegreeInfoPipe","education","hasDegreeLevel","degreeLevel","hasFieldOfStudy","fieldOfStudy","pure","CandidateJobInfoPipe","experience","hasJobTitle","jobTitle","hasCompanyName","companyName","CandidateLocationPipe","hasCity","hasState","EventsLocalDateTimePipe","oldTimezone","msepFormat","dateWithTimezone","eventOffset","getTimezoneOffset","getHours","super","timezone","tzDate","getTime","__ngFactoryType__","FormatAddressPipe","profile","headquartersAddress1","headquartersAddress2","headquartersCity","headquartersState","headquartersZip","IsJobPublishedPipe","startOfToday","publishStartDate","IsValueProvidedPipe","JobLogTimePipe","formattedDate","utc","LocalDateTimePipe","dateTimeWithUtcZoneDesignator","match","LocalDatePipe","endsWith","PrefixHttpsPipe","startsWith","UtcDateTimePipe","UtcDatePipe","YesNoPipe","FriendlyBytesPipe","decimals","decimalPlaces","exponent","log","parseFloat","toFixed","SHARED_PIPES","SharedModule","imports","CommonModule","FormsModule","RouterModule","PortalModule","ReactiveFormsModule","AngularEditorModule","OverlayModule","phoneValidator","isValidPhoneNumber","phoneUtil","phoneLib","getInstance","parseAndKeepRawInput","isValidNumber","production","CORE_INTERCEPTORS","HTTP_INTERCEPTORS","AuthInterceptor","intercept","req","isTokenRequest","secoRequest","sapRequest","clone","setHeaders","authorization","pragma","expires","handle","ErrorMessages","EMPTY","exceptionId","CoreModule","parentModule","throwIfAlreadyLoaded","moduleName","Error","BrowserNotSupportedLayoutComponent","HiringNumbersComponent","AboutUsComponent","secoBaseUrl","onClickSeco","BecomeAPartnerComponent","BrowserNotSupportedComponent","infoAlertType","registeredOption_r3","assistanceType_r5","preferredCommunication_r6","window_r7","ContactUsComponent","helpDeskService","resourcesService","contactUsContactWindows$","contactUsPreferredCommunications$","faqAssistanceTypes","maxMessageLength","recaptchaSiteKey","registeredOptions$","submissionFailureMessage","submissionSuccessMessage","createAccount","isGeneralProgramQuestionOrOther","isJobPostingOrFeeds","onRegisteredChange","changeEvent","enable","contactUsAssistanceTypeId","clearNonPartnerValidators","setValidators","Validators","maxLength","onSubmit","reCaptcha","phone","nonPartnerOrganizationName","nonPartnerOrganizationWebsite","contactUsContactWindowId","contactUsPreferredCommunicationId","clearValidators","updateValueAndValidity","contactUsAssistanceTypes$","values","distinctUntilChanged","ContactUsComponent_msep_alert_7_Template","ContactUsComponent_msep_alert_8_Template","ContactUsComponent_msep_alert_9_Template","ContactUsComponent_mat_option_45_Template","ContactUsComponent_msep_partner_autocomplete_49_Template","ContactUsComponent_mat_option_55_Template","ContactUsComponent_mat_form_field_59_Template","ContactUsComponent_mat_form_field_60_Template","ContactUsComponent_mat_option_66_Template","ContactUsComponent_mat_option_75_Template","message_r8","valid","ErrorComponent","route","homePage","paramMap","urlPath","faq_r1","question","FaqsComponent_section_15_mat_divider_1_Template","i_r4","faq_r3","answer","FaqsComponent","faqs","faq","HTML","string","FaqsComponent_ng_container_8_Template","FaqsComponent_section_15_Template","GroupComparisonErrorStateMatcher","isErrorState","parent","invalid","EqualityValidator","stringCompare","controlName1","controlName2","friendlyErrorMessage","firstControl","secondControl","pristine","expiredTokenAlertType","ForgotPasswordComponent","hasExpiredToken","matcher","emailGroup","validator","queryParams","expiredToken","ForgotPasswordComponent_msep_alert_6_Template","ForgotPasswordComponent_msep_form_error_26_Template","ForgotPasswordComponent_mat_card_footer_32_Template","tmp_5_0","HelpComponent","partner_r1","HomeWelcomeComponent_ng_container_71_div_1_div_1_Template","partners","HomeWelcomeComponent_ng_container_71_div_1_Template","HomeWelcomeComponent","partnerService","navyFederalLogo","logosS3BucketUrl","randomPartners$","selectedPartnerIndex","HomeWelcomeComponent_ng_container_71_Template","HomeWelcomeComponent_msep_ghost_loader_list_73_Template","enterTransition","transition","style","opacity","animate","leaveTransition","fadeIn","trigger","fadeOut","JobFeedGuidanceService","getExampleCsv","jobIdentifier","industry","jobType","compensationType","hourlyRate","minSalary","maxSalary","minQualifications","prefQualifications","yearsOfExperience","career","address2","isTelework","isRemoteJob","jobOpenings","tags","getExampleJson","stringify","getExampleXml","getNavLinks","fragment","getRequiredSpecs","navLink_r1","field_r3","field_r4","field_r5","field_r6","field_r7","field_r8","field_r9","field_r10","field_r11","field_r12","field_r13","field_r14","field_r15","field_r16","field_r17","field_r18","field_r19","field_r20","field_r21","field_r22","field_r23","field_r24","field_r25","field_r26","field_r27","field_r28","field_r29","field_r30","field_r31","field_r32","field_r33","field_r34","_r35","JobFeedGuidanceComponent","jobFeedGuidanceService","careerLevels$","educationLevels$","exampleCsvColumns","exampleCsv","exampleCsvUrl","exampleJson","exampleJsonUrl","exampleXml","fieldColumns","industries$","jobTypes$","navLinks","requiredFields","yearsOfExperience$","highlyRecommendedData","setJobTypeDescription","setIndustryDescription","setEducationDescription","setCareerDescription","setYearsOfExperienceDescription","requiredField","ngAfterContentInit","header","scroll$","fromEvent","headerIsVisible$","isHeaderVisible","onClickExample","getBoundingClientRect","careerLevels","careerLevel","educations","industries","jobTypes","yearsOfExperiences","JobFeedGuidanceComponent_ng_container_6_Template","JobFeedGuidanceComponent_th_47_Template","JobFeedGuidanceComponent_td_48_Template","JobFeedGuidanceComponent_th_50_Template","JobFeedGuidanceComponent_td_51_Template","JobFeedGuidanceComponent_th_53_Template","JobFeedGuidanceComponent_td_54_Template","JobFeedGuidanceComponent_tr_55_Template","JobFeedGuidanceComponent_tr_56_Template","JobFeedGuidanceComponent_th_62_Template","JobFeedGuidanceComponent_td_63_Template","JobFeedGuidanceComponent_th_65_Template","JobFeedGuidanceComponent_td_66_Template","JobFeedGuidanceComponent_th_68_Template","JobFeedGuidanceComponent_td_69_Template","JobFeedGuidanceComponent_tr_70_Template","JobFeedGuidanceComponent_tr_71_Template","JobFeedGuidanceComponent_th_99_Template","JobFeedGuidanceComponent_td_100_Template","JobFeedGuidanceComponent_th_102_Template","JobFeedGuidanceComponent_td_103_Template","JobFeedGuidanceComponent_th_105_Template","JobFeedGuidanceComponent_td_106_Template","JobFeedGuidanceComponent_th_108_Template","JobFeedGuidanceComponent_td_109_Template","JobFeedGuidanceComponent_th_111_Template","JobFeedGuidanceComponent_td_112_Template","JobFeedGuidanceComponent_th_114_Template","JobFeedGuidanceComponent_td_115_Template","JobFeedGuidanceComponent_th_117_Template","JobFeedGuidanceComponent_td_118_Template","JobFeedGuidanceComponent_th_120_Template","JobFeedGuidanceComponent_td_121_Template","JobFeedGuidanceComponent_th_123_Template","JobFeedGuidanceComponent_td_124_Template","JobFeedGuidanceComponent_th_126_Template","JobFeedGuidanceComponent_td_127_Template","JobFeedGuidanceComponent_th_129_Template","JobFeedGuidanceComponent_td_130_Template","JobFeedGuidanceComponent_th_132_Template","JobFeedGuidanceComponent_td_133_Template","JobFeedGuidanceComponent_th_135_Template","JobFeedGuidanceComponent_td_136_Template","JobFeedGuidanceComponent_th_138_Template","JobFeedGuidanceComponent_td_139_Template","JobFeedGuidanceComponent_th_141_Template","JobFeedGuidanceComponent_td_142_Template","JobFeedGuidanceComponent_th_144_Template","JobFeedGuidanceComponent_td_145_Template","JobFeedGuidanceComponent_th_147_Template","JobFeedGuidanceComponent_td_148_Template","JobFeedGuidanceComponent_th_150_Template","JobFeedGuidanceComponent_td_151_Template","JobFeedGuidanceComponent_th_153_Template","JobFeedGuidanceComponent_td_154_Template","JobFeedGuidanceComponent_th_156_Template","JobFeedGuidanceComponent_td_157_Template","JobFeedGuidanceComponent_th_159_Template","JobFeedGuidanceComponent_td_160_Template","JobFeedGuidanceComponent_th_162_Template","JobFeedGuidanceComponent_td_163_Template","JobFeedGuidanceComponent_th_165_Template","JobFeedGuidanceComponent_td_166_Template","JobFeedGuidanceComponent_th_168_Template","JobFeedGuidanceComponent_td_169_Template","JobFeedGuidanceComponent_th_171_Template","JobFeedGuidanceComponent_td_172_Template","JobFeedGuidanceComponent_th_174_Template","JobFeedGuidanceComponent_td_175_Template","JobFeedGuidanceComponent_tr_176_Template","JobFeedGuidanceComponent_tr_177_Template","JobFeedGuidanceComponent_button_185_Template","LegalAndSecurityComponent","LoginComponent","showPassword","onClickSecoGettingStarted","userHasLoggedInSuccessfully","toggleShowPassword","LoginComponent_mat_card_footer_39_Template","LogoutComponent","MediaLinksService","getMediaLinks","publishedDate","thumbnail","media_r1","MediaComponent","mediaLinksService","mediaLinks","MediaComponent_div_7_Template","NoticeAndConsentComponent","onAgreeClick","industrySector_r2","partnershipType_r5","OurPartnersListComponent_mat_form_field_16_mat_option_6_Template","state_r7","onStateChanged","OurPartnersListComponent_mat_form_field_17_mat_option_6_Template","states$","country_r9","hasInternationalFacilities","onCountryChanged","OurPartnersListComponent_div_28_mat_option_11_Template","countries$","OurPartnersListComponent_div_33_ng_container_1_div_2_div_23_Template","OurPartnersListComponent_div_33_ng_container_1_div_2_div_24_Template","OurPartnersListComponent_div_33_ng_container_1_div_2_div_25_Template","OurPartnersListComponent_div_33_ng_container_1_div_2_div_26_Template","partner_r11","primaryIndustrySector","approvedDate","numberOfActiveJobs","isTeleworkAvailable","offersPermanentRemotePositions","isInternational","offersChildcare","OurPartnersListComponent_div_33_ng_container_1_div_2_Template","onPagingChange","resultTotal","OurPartnersListComponent_div_33_ng_container_1_Template","OurPartnersListComponent_div_33_ng_template_2_Template","noResults_r12","OurPartnersListComponent","industrySectors$","partnersSubject","name","industrySectorId","internationalFacilities","countryId","checked","countryDropdown","disable","countries","handleTeleworkQueryParameter","handleRemoteQueryParameter","setPartnerRequestStream","onIndustrySectorChanged","onPartnerSelected","onTeleworkChange","onRemoteChange","queryParamMap","shouldFilterByTelework","shouldFilterByRemote","partnersAction$","partners$","OurPartnersListComponent_div_1_Template","OurPartnersListComponent_ng_template_2_Template","OurPartnersListComponent_mat_option_14_Template","OurPartnersListComponent_mat_form_field_16_Template","OurPartnersListComponent_mat_form_field_17_Template","OurPartnersListComponent_div_28_Template","OurPartnersListComponent_div_33_Template","OurPartnersListComponent_msep_ghost_loader_list_35_Template","unauthenticated_r13","partnerResource_r2","PartnerResourcesAutocompleteComponent","resourceSelected","partnerResourcesAutocomplete$","resource","PartnerResourcesAutocompleteComponent_mat_hint_4_Template","PartnerResourcesAutocompleteComponent_mat_option_7_Template","category_r1","partnerResource_r3","tmp_8_0","ctx_r4","downloadProgress","downloadUserManual","PartnerResourcesComponent_div_20_ng_container_1_div_2_mat_card_2_div_1_Template","isDownloading","PartnerResourcesComponent_div_20_ng_container_1_div_2_mat_card_1_Template","PartnerResourcesComponent_div_20_ng_container_1_div_2_mat_card_2_Template","userManual","PartnerResourcesComponent_div_20_ng_container_1_div_2_Template","partnerResources","PartnerResourcesComponent_div_20_ng_container_1_Template","PartnerResourcesComponent_div_20_ng_template_2_Template","noResults_r6","PartnerResourcesComponent","categories$","fileType","isTestEnvironment","partnerResourcesSubject","categoryId","setPartnerResourcesRequestStream","fileData","downloadBlocks","fullFile","downloadUrl","link","onCategoryChanged","onTitleSelected","currentBlockIndex","fileSize","blockSize","onComplete","blockData","arrayBuffer","uint8Array","isBase64Encoded","base64Blob","handleBase64Encoding","round","decodedString","TextDecoder","decode","trim","buffer","base64String","binaryString","byteArray","partnerResourcesAction$","partnerResources$","PartnerResourcesComponent_mat_option_14_Template","PartnerResourcesComponent_div_20_Template","PartnerResourcesComponent_msep_ghost_loader_list_22_Template","profile_r1","headquartersPhone","facebookUrl","linkedInUrl","twitterUrl","instagramUrl","ViewOurPartnerComponent_ng_container_0_div_16_div_6_a_1_Template","ViewOurPartnerComponent_ng_container_0_div_16_div_6_a_2_Template","ViewOurPartnerComponent_ng_container_0_div_16_div_6_a_3_Template","ViewOurPartnerComponent_ng_container_0_div_16_div_6_a_4_Template","hasValue","ViewOurPartnerComponent_ng_container_0_div_16_msep_four_plus_one_badge_5_Template","ViewOurPartnerComponent_ng_container_0_div_16_div_6_Template","website","isFourPlusOnePartner","shouldShowSocialMediaLinks","benefit_r3","ViewOurPartnerComponent_ng_container_0_div_21_div_1_div_8_Template","pointOfContact$","benefits","pointOfContact_r4","ViewOurPartnerComponent_ng_container_0_div_21_div_2_div_7_Template","ViewOurPartnerComponent_ng_container_0_div_21_div_2_div_8_Template","ViewOurPartnerComponent_ng_container_0_div_21_div_2_div_9_Template","ViewOurPartnerComponent_ng_container_0_div_21_div_1_Template","ViewOurPartnerComponent_ng_container_0_div_21_div_2_Template","numberOfEmployees","getResourceString","countriesWithFacilities","ViewOurPartnerComponent_ng_container_0_mat_card_24_div_6_Template","ViewOurPartnerComponent_ng_container_0_mat_card_24_div_7_Template","ViewOurPartnerComponent_ng_container_0_mat_card_24_div_8_Template","calculateWidth","primaryIndustry","getSecondaryIndustryHeading","secondaryIndustries","geographicReach","ViewOurPartnerComponent_ng_container_0_mat_card_25_div_6_Template","ViewOurPartnerComponent_ng_container_0_mat_card_25_div_7_Template","ViewOurPartnerComponent_ng_container_0_mat_card_25_div_8_Template","partnerVideoUrl","ViewOurPartnerComponent_ng_container_0_div_11_Template","ViewOurPartnerComponent_ng_container_0_div_15_Template","ViewOurPartnerComponent_ng_container_0_div_16_Template","ViewOurPartnerComponent_ng_container_0_mat_card_20_Template","ViewOurPartnerComponent_ng_container_0_div_21_Template","ViewOurPartnerComponent_ng_container_0_mat_card_24_Template","ViewOurPartnerComponent_ng_container_0_mat_card_25_Template","ViewOurPartnerComponent_ng_container_0_mat_card_26_Template","hasLink","shouldShowStatistics","shouldShowIndustry","shouldShowPartnerVideo","ViewOurPartnerComponent","partnerProfile","setPointOfContact","resourceDescriptions","r","isArray","ViewOurPartnerComponent_ng_container_0_Template","PartnerProfileResolverService","resolve","ResetPasswordComponent","showHidden","Map","dto","challengeQuestionAnswers","formatChallengeQuestionAnswers","newPassword","resetSubscription","toggleShowHidden","set","challengeQuestions","routeSubscription","challengeAnswer1","challengeAnswer2","challengeAnswer3","passwordGroup","newPasswordConfirm","challengeQuestionId","tmp_21_0","controls","SessionExpiredComponent","SitemapComponent","ResetPasswordResolverService","navigateByUrl","challengeQuestion_r2","ResetAccountComponent_ng_container_21_mat_option_1_Template","tmp_3_0","challengeQuestion_r4","ResetAccountComponent_ng_container_38_mat_option_1_Template","challengeQuestion_r5","ResetAccountComponent_ng_container_55_mat_option_1_Template","ResetAccountComponent","challengeQuestions$","challengeQuestion1","challengeQuestion2","challengeQuestion3","challengeQuestionAnswer1","challengeQuestionAnswer2","challengeQuestionAnswer3","ResetAccountComponent_ng_container_21_Template","ResetAccountComponent_ng_container_38_Template","ResetAccountComponent_ng_container_55_Template","tmp_24_0","UserAgreementComponent","CreateAccountOverviewComponent","systemAlert_r2","systemAlert_r3","AlertsAndInformationComponent_div_5_ng_container_1_th_3_Template","AlertsAndInformationComponent_div_5_ng_container_1_td_4_Template","AlertsAndInformationComponent_div_5_ng_container_1_th_6_Template","AlertsAndInformationComponent_div_5_ng_container_1_td_7_Template","AlertsAndInformationComponent_div_5_ng_container_1_tr_8_Template","AlertsAndInformationComponent_div_5_ng_container_1_tr_9_Template","systemAlerts","displayedColumns","alertCount","AlertsAndInformationComponent_div_5_ng_container_1_Template","AlertsAndInformationComponent_div_5_ng_template_3_Template","publishedAlert_r5","AlertsAndInformationComponent","systemAlertSubject","systemAlertActions$","AlertsAndInformationComponent_div_5_Template","AlertsAndInformationComponent_msep_ghost_loader_list_7_Template","PrivacyActStatementComponent","routes","path","children","FaqsResolverService","CanViewOurPartnerGuard","HomeRoutingModule","forChild","PageNotFoundComponent","APP_MODULES","HomeModule","RecaptchaFormsModule","RecaptchaModule","AuthenticatedGuard","SpecialistGuard","GovtGuard","loadChildren","Promise","all","__webpack_require__","e","bind","AdminModule","CanViewChartsGuard","ChartsModule","CmsModule","GovernmentModule","HelpModule","PartnersModule","RegistrationModule","ReportModule","SpecialistsModule","VirtualEventsModule","redirectTo","pathMatch","AppRoutingModule","forRoot","anchorScrolling","CustomIconService","matIconRegistry","registerCustomIcons","loadIcons","iconKeys","iconUrl","addSvgIcon","bypassSecurityTrustResourceUrl","SeoService","htmlTitle","meta","defaultTitle","getMetaDetailsFromRoute","child","firstChild","metaDetails","setMetaTags","setMetaTitle","setMetaDescription","deleteMetaDescription","setTitle","removeTag","getTag","updateTag","content","addTag","IdleTimeoutWarningComponent","isModalOpen","getUsersTimeout","createTimerEvents","logoutByTimeout","logoutByManualClick","openDialog","warningDialogRef","buildMessage","timeoutInMinutes","eventStreams","eventName","merge","showModalIfOneMinuteLeft","handleAutomaticTimeout","idleTimeout","authenticated","encapsulation","MosUniversalNavComponent","renderer","removeEventListener","listen","HTMLAnchorElement","handleAnchorClick","scriptLoaderId","navScript","AppComponent","customIconService","googleAnalyticsService","seoService","addTabListener","handleFailureNotifications","handleFailureFullDurationNotifications","handleSuccessNotifications","handleSuccessFullDurationNotifications","trackNavigationEnd","tabClass","classList","resetFocus","focusedElement","activeElement","blur","contains","tabIndex","focus","failureSubscription","successSubscription","navEndSubscription","AppModule","bootstrap","provideHttpClient","withInterceptorsFromDi","BrowserModule","BrowserAnimationsModule","enableProdMode","__NgCli_bootstrap_1","bootstrapModule","catch","webpackContext","webpackContextResolve","o","code","module","exports"],"ignoreList":[],"sourceRoot":"webpack:///","sources":["./src/app/core/enums.ts","./src/app/core/guards/manage-reports.guard.ts","./src/app/core/guards/sysOp.guard.ts","./src/app/core/guards/vhfTemp.guard.ts","./src/app/core/services/account.service.ts","./src/app/core/services/admin/admin-dashboard.service.ts","./src/app/core/services/admin/admin.service.ts","./src/app/core/services/authentication.service.ts","./src/app/core/services/blob.service.ts","./src/app/core/services/charts.service.ts","./src/app/core/services/cms/system-alert.service.ts","./src/app/core/services/dashboard.service.ts","./src/app/core/services/help-desk.service.ts","./src/app/core/services/infrastructure/config.service.ts","./src/app/shared/components/general-dialog/general-dialog.component.html","./src/app/shared/components/general-dialog/general-dialog.component.ts","./src/app/core/services/infrastructure/dialog.service.ts","./src/app/core/services/infrastructure/google-analytics.service.ts","./src/app/core/services/infrastructure/jwt.service.ts","./src/app/core/services/infrastructure/notification.service.ts","./src/app/core/services/jobs.service.ts","./src/app/core/services/partner/partner-dashboard.service.ts","./src/app/core/services/partner/partner-report.service.ts","./src/app/core/services/partner/seco.service.ts","./src/app/core/services/partners.service.ts","./src/app/core/services/report.service.ts","./src/app/core/services/resources.service.ts","./src/app/core/utilities/date-utils.service.ts","./src/app/core/utilities/mat-utils.ts","./src/app/core/utilities/utils.service.ts","./src/app/layout/app-layout/app-layout.component.ts","./src/app/layout/app-layout/app-layout.component.html","./src/app/layout/footer/footer.component.ts","./src/app/layout/footer/footer.component.html","./src/app/layout/side-menu/side-menu.component.html","./src/app/layout/side-menu/side-menu.component.ts","./src/app/layout/top-header/top-header.component.html","./src/app/layout/top-header/top-header.component.ts","./src/app/layout/wizard-layout/wizard-layout.component.ts","./src/app/layout/wizard-layout/wizard-layout.component.html","./src/app/shared/components/alert/alert.component.html","./src/app/shared/components/alert/alert.component.ts","./src/app/shared/components/back-button/back-button.component.ts","./src/app/shared/components/back-button/back-button.component.html","./src/app/shared/components/card-loader/card-loader.component.html","./src/app/shared/components/card-loader/card-loader.component.ts","./src/app/shared/components/centered-loader/centered-loader.component.ts","./src/app/shared/components/centered-loader/centered-loader.component.html","./src/app/shared/components/charts/chart-dock.component.html","./src/app/shared/components/charts/chart-dock.component.ts","./src/app/shared/components/charts/export-line-chart-button/export-line-chart-button.component.ts","./src/app/shared/components/charts/export-line-chart-button/export-line-chart-button.component.html","./src/app/shared/components/charts/export-map-chart-button/export-map-chart-button.component.ts","./src/app/shared/components/charts/export-map-chart-button/export-map-chart-button.component.html","./src/app/shared/components/charts/export-pie-chart-button/export-pie-chart-button.component.ts","./src/app/shared/components/charts/export-pie-chart-button/export-pie-chart-button.component.html","./src/app/shared/components/charts/line-chart/line-chart.component.html","./src/app/shared/components/charts/line-chart/line-chart.component.ts","./src/app/shared/components/charts/map-chart/map-chart.component.html","./src/app/shared/components/charts/map-chart/map-chart.component.ts","./src/app/shared/components/charts/pie-chart/pie-chart.component.html","./src/app/shared/components/charts/pie-chart/pie-chart.component.ts","./src/app/shared/components/charts/spouse-engagement-multi-line-chart/spouse-engagement-multi-line-chart.component.html","./src/app/shared/components/charts/spouse-engagement-multi-line-chart/spouse-engagement-multi-line-chart.component.ts","./src/app/shared/components/charts/spouse-map-chart/spouse-map-chart.component.html","./src/app/shared/components/charts/spouse-map-chart/spouse-map-chart.component.ts","./src/app/shared/components/charts/total-published-jobs-multi-line-chart/total-published-jobs-multi-line-chart.component.html","./src/app/shared/components/charts/total-published-jobs-multi-line-chart/total-published-jobs-multi-line-chart.component.ts","./src/app/shared/components/confirmation-dialog/confirmation-dialog.component.html","./src/app/shared/components/confirmation-dialog/confirmation-dialog.component.ts","./src/app/shared/components/cui-banner/cui-banner.component.html","./src/app/shared/components/cui-banner/cui-banner.component.ts","./src/app/shared/components/dashboard-docks/dashboard-docks.component.html","./src/app/shared/components/dashboard-docks/dashboard-docks.component.ts","./src/app/shared/components/dashboard-docks/help-desk-dock/help-desk-dock.component.html","./src/app/shared/components/dashboard-docks/help-desk-dock/help-desk-dock.component.ts","./src/app/shared/components/dashboard-docks/jobs-dock/jobs-dock.component.html","./src/app/shared/components/dashboard-docks/jobs-dock/jobs-dock.component.ts","./src/app/shared/components/dashboard-docks/partner-engagement-dock/partner-engagement-dock.component.html","./src/app/shared/components/dashboard-docks/partner-engagement-dock/partner-engagement-dock.component.ts","./src/app/shared/components/dashboard-docks/partner-metrics-dock/partner-metrics-dock.component.html","./src/app/shared/components/dashboard-docks/partner-metrics-dock/partner-metrics-dock.component.ts","./src/app/shared/components/dashboard-docks/recently-accessed-partners-dock/recently-accessed-partners-dock.component.html","./src/app/shared/components/dashboard-docks/recently-accessed-partners-dock/recently-accessed-partners-dock.component.ts","./src/app/shared/components/dashboard-docks/spouse-activity-dock/spouse-activity-dock.component.html","./src/app/shared/components/dashboard-docks/spouse-activity-dock/spouse-activity-dock.component.ts","./src/app/shared/components/dashboard-docks/user-metrics-dock/user-metrics-dock.component.html","./src/app/shared/components/dashboard-docks/user-metrics-dock/user-metrics-dock.component.ts","./src/app/shared/components/dock/dock.component.html","./src/app/shared/components/dock/dock.component.ts","./src/app/shared/components/expiring-password-notification/expiring-password-notification.component.html","./src/app/shared/components/expiring-password-notification/expiring-password-notification.component.ts","./src/app/shared/components/export-report-button/export-report-button.component.ts","./src/app/shared/components/export-report-button/export-report-button.component.html","./src/app/shared/components/form-error/form-error.component.html","./src/app/shared/components/form-error/form-error.component.ts","./src/app/shared/components/four-plus-one-badge/four-plus-one-badge.component.ts","./src/app/shared/components/four-plus-one-badge/four-plus-one-badge.component.html","./src/app/shared/components/ghost-loader-list/ghost-loader-list.component.html","./src/app/shared/components/ghost-loader-list/ghost-loader-list.component.ts","./src/app/shared/components/ghost-loader-mat-card/ghost-loader-mat-card.component.html","./src/app/shared/components/ghost-loader-mat-card/ghost-loader-mat-card.component.ts","./src/app/shared/components/google-place-autocomplete/google-place-autocomplete.component.html","./src/app/shared/components/google-place-autocomplete/google-place-autocomplete.component.ts","./src/app/shared/components/monthly-datepicker/monthly-datepicker.component.ts","./src/app/shared/components/monthly-datepicker/monthly-datepicker.component.html","./src/app/shared/components/no-results/no-results.component.ts","./src/app/shared/components/no-results/no-results.component.html","./src/app/shared/components/page-title/page-title.component.ts","./src/app/shared/components/page-title/page-title.component.html","./src/app/shared/components/pagination/pagination.component.ts","./src/app/shared/components/pagination/pagination.component.html","./src/app/shared/components/partner-autocomplete/partner-autocomplete.component.html","./src/app/shared/components/partner-autocomplete/partner-autocomplete.component.ts","./src/app/shared/components/partner-logo/partner-logo.component.ts","./src/app/shared/components/partner-logo/partner-logo.component.html","./src/app/shared/components/partner-menu/partner-menu.component.html","./src/app/shared/components/partner-menu/partner-menu.component.ts","./src/app/shared/components/partner-page-title/partner-page-title.component.html","./src/app/shared/components/partner-page-title/partner-page-title.component.ts","./src/app/shared/components/partner-tracker/partner-tracker.component.html","./src/app/shared/components/partner-tracker/partner-tracker.component.ts","./src/app/shared/components/password-checklist/password-checklist.component.html","./src/app/shared/components/password-checklist/password-checklist.component.ts","./src/app/shared/components/published-alerts-icon/published-alerts-icon.component.html","./src/app/shared/components/published-alerts-icon/published-alerts-icon.component.ts","./src/app/shared/components/server-validation-message/server-validation-message.component.html","./src/app/shared/components/server-validation-message/server-validation-message.component.ts","./src/app/shared/components/static-display/static-display.component.html","./src/app/shared/components/static-display/static-display.component.ts","./src/app/shared/components/video-player/video-player.component.ts","./src/app/shared/components/video-player/video-player.component.html","./src/app/shared/directives/exit-modal.directive.ts","./src/app/shared/directives/remove-role.directive.ts","./src/app/shared/material.module.ts","./src/app/shared/models/google-location.ts","./src/app/shared/pipes/candidate-degree-info.pipe.ts","./src/app/shared/pipes/candidate-job-info.pipe.ts","./src/app/shared/pipes/candidate-location.pipe.ts","./src/app/shared/pipes/events-local-date-time.pipe.ts","./src/app/shared/pipes/format-address.pipe.ts","./src/app/shared/pipes/is-job-published.pipe.ts","./src/app/shared/pipes/is-value-provided.pipe.ts","./src/app/shared/pipes/job-log-date.pipe.ts","./src/app/shared/pipes/local-date-time.pipe.ts","./src/app/shared/pipes/local-date.pipe.ts","./src/app/shared/pipes/prefix-https.pipe.ts","./src/app/shared/pipes/utc-date-time.pipe.ts","./src/app/shared/pipes/utc-date.pipe.ts","./src/app/shared/pipes/yes-no.pipe.ts","./src/app/shared/pipes/friendly-bytes.pipe.ts","./src/app/shared/pipes/index.ts","./src/app/shared/shared.module.ts","./src/app/shared/validation/phone-number.validator.ts","./src/environments/environment.prod.ts","./src/app/core/index.ts","./src/app/core/auth-interceptor.ts","./src/app/core/core.module.ts","./src/app/core/guards/module-import.guard.ts","./src/app/layout/browser-not-supported-layout/browser-not-supported-layout.component.ts","./src/app/layout/browser-not-supported-layout/browser-not-supported-layout.component.html","./src/app/shared/components/hiring-numbers/hiring-numbers.component.ts","./src/app/shared/components/hiring-numbers/hiring-numbers.component.html","./src/app/home/about-us/about-us.component.ts","./src/app/home/about-us/about-us.component.html","./src/app/home/become-a-partner/become-a-partner.component.ts","./src/app/home/become-a-partner/become-a-partner.component.html","./src/app/home/browser-not-supported/browser-not-supported.component.ts","./src/app/home/browser-not-supported/browser-not-supported.component.html","./src/app/home/contact-us/contact-us.component.html","./src/app/home/contact-us/contact-us.component.ts","./src/app/home/error/error.component.ts","./src/app/home/error/error.component.html","./src/app/home/faqs/faqs.component.html","./src/app/home/faqs/faqs.component.ts","./src/app/shared/validation/group-errorstate-matcher.ts","./src/app/shared/validation/equality.validator.ts","./src/app/home/forgot-password/forgot-password.component.html","./src/app/home/forgot-password/forgot-password.component.ts","./src/app/home/help/help.component.ts","./src/app/home/help/help.component.html","./src/app/home/home-welcome/home-welcome.component.html","./src/app/home/home-welcome/home-welcome.component.ts","./src/app/core/utilities/animations.ts","./src/app/core/services/job-feed-guidance.service.ts","./src/app/home/job-feed-guidance/job-feed-guidance.component.html","./src/app/home/job-feed-guidance/job-feed-guidance.component.ts","./src/app/home/legal-and-security/legal-and-security.component.ts","./src/app/home/legal-and-security/legal-and-security.component.html","./src/app/home/login/login.component.html","./src/app/home/login/login.component.ts","./src/app/home/logout/logout.component.ts","./src/app/home/logout/logout.component.html","./src/app/core/services/media-links.service.ts","./src/app/home/media/media.component.html","./src/app/home/media/media.component.ts","./src/app/home/notice-and-consent/notice-and-consent.component.ts","./src/app/home/notice-and-consent/notice-and-consent.component.html","./src/app/home/our-partners-list/our-partners-list.component.html","./src/app/home/our-partners-list/our-partners-list.component.ts","./src/app/home/partner-resources/partner-resources-autocomplete/partner-resources-autocomplete.component.html","./src/app/home/partner-resources/partner-resources-autocomplete/partner-resources-autocomplete.component.ts","./src/app/home/partner-resources/partner-resources.component.html","./src/app/home/partner-resources/partner-resources.component.ts","./src/app/home/view-our-partner/view-our-partner.component.html","./src/app/home/view-our-partner/view-our-partner.component.ts","./src/app/core/services/resolvers/partner-profile-resolver.service.ts","./src/app/home/reset-password/reset-password.component.ts","./src/app/home/reset-password/reset-password.component.html","./src/app/home/session-expired/session-expired.component.ts","./src/app/home/session-expired/session-expired.component.html","./src/app/home/sitemap/sitemap.component.ts","./src/app/home/sitemap/sitemap.component.html","./src/app/core/services/resolvers/reset-password-resolver.service.ts","./src/app/home/reset-account/reset-account.component.html","./src/app/home/reset-account/reset-account.component.ts","./src/app/home/user-agreement/user-agreement.component.ts","./src/app/home/user-agreement/user-agreement.component.html","./src/app/home/create-account-overview/create-account-overview.component.ts","./src/app/home/create-account-overview/create-account-overview.component.html","./src/app/home/alerts-and-information/alerts-and-information.component.html","./src/app/home/alerts-and-information/alerts-and-information.component.ts","./src/app/home/privacy-act-statement/privacy-act-statement.component.ts","./src/app/home/privacy-act-statement/privacy-act-statement.component.html","./src/app/home/home-routing.module.ts","./src/app/core/services/resolvers/faqs-resolver.service.ts","./src/app/core/guards/can-view-our-partner.guard.ts","./src/app/home/page-not-found/page-not-found.component.ts","./src/app/home/page-not-found/page-not-found.component.html","./src/app/index.ts","./src/app/home/home.module.ts","./src/app/core/guards/authenticated.guard.ts","./src/app/core/guards/specialist.guard.ts","./src/app/core/guards/government.guard.ts","./src/app/app-routing.module.ts","./src/app/core/guards/can-view-charts.guard.ts","./src/app/core/services/infrastructure/custom-icon.service.ts","./src/app/core/services/seo.service.ts","./src/app/layout/idle-timeout-warning/idle-timeout-warning.component.ts","./src/app/layout/mos-universal-nav/mos-universal-nav.component.ts","./src/app/layout/mos-universal-nav/mos-universal-nav.component.html","./src/app/app.component.ts","./src/app/app.component.html","./src/app/app.module.ts","./src/main.ts","./node_modules/moment/locale/ sync ^\\.\\/.*$"],"sourcesContent":["export enum AccountStatus {\n Active = 1,\n Pending,\n Disapproved,\n Locked,\n Suspended,\n}\n\nexport enum ApplicationStatus {\n Pending = 1,\n InReview,\n Approved,\n Disapproved,\n OnHold,\n}\n\nexport enum AssistanceType {\n HowToJoinMSEP = 1,\n GeneralProgramQuestions,\n SharingAnInstallationEvent,\n OtherNotRegistered,\n TechnicalAssistance,\n JobPostingOrFeeds,\n PartnerReporting,\n OtherRegistered,\n BecomeMSEPPartner,\n NewUserAccount,\n}\n\nexport enum Benefits {\n Offers401k = 1,\n TuitionAssistance,\n FinancialAssistance,\n StockOptions,\n LifeInsurance,\n HealthInsurance,\n DentalInsurance,\n Childcare,\n JobPortability,\n}\n\nexport enum ContactUsTicketStatus {\n Pending = 1,\n InProgress,\n Resolved,\n OnHold,\n SpouseTicket,\n}\n\nexport enum Countries {\n UnitedStates = 1,\n}\n\nexport enum Docks {\n EngagementTracker = 1,\n Helpdesk,\n Jobs,\n PartnerActivity,\n PartnerEngagement,\n PartnerMetrics,\n RecentlyAccessedPartner,\n SpouseActivity,\n SpouseEngagement,\n UserMetrics,\n PartnerBadge,\n}\n\nexport enum GhostLoaderType {\n Card = 'card',\n Page = 'page',\n PartnerLogo = 'logo',\n Table = 'table',\n}\n\nexport enum Icon {\n LinkedIn = 'linkedin',\n Facebook = 'facebook',\n Twitter = 'twitter',\n Pinterest = 'pinterest',\n Instagram = 'instagram',\n}\n\nexport enum JobFeedSourceUrlType {\n FeedUrl = 1,\n S3,\n USAJOBS,\n}\n\nexport enum JobFeedType {\n XML = 1,\n CSV,\n JSON,\n}\n\nexport enum MsepChartType {\n Line = 1,\n Pie,\n SpouseEngagementMultiLine,\n TotalPublishedJobsMultiLine,\n JobMap,\n SpouseMap,\n}\n\nexport enum LineChart {\n CandidateSearch = 1,\n SpousesHired,\n SpousesCurrentlyEmployed,\n SpouseEngagement,\n PartnersWhoReported,\n TotalPartners,\n TotalJobs,\n}\n\nexport enum PieChart {\n Industry = 1,\n YearsOfExperience,\n EducationLevel,\n RemoteTeleworkJob,\n PartnerIndustry,\n RemoteTeleworkPartner,\n PartnershipType,\n}\n\nexport enum PartnershipTypeId {\n EmployerPartners = 1,\n SpouseAmbassadorNetwork,\n FederalAgencyPartners,\n MsepEducation,\n MsepSmallBusiness,\n}\n\nexport enum PartnerReports {\n PartnerJobs = 1,\n PartnerEngagement,\n HiringData,\n TeleworkRemote,\n SpecialistSpouseEngagement,\n SpecialistSpousesHired,\n SpouseHire,\n SpouseEmploymentDetails,\n SpecialistHotJobs,\n CandidateStatus,\n PartnerCandidateView,\n}\n\nexport enum PartnerResourceType {\n UserManual = 39,\n}\n\nexport enum SpouseEngagement {\n SpouseClickedApply = 1,\n SpouseSearchedProfile,\n SpouseSavedProfile,\n SpouseViewedProfile,\n SpouseEnteredBooth,\n}\n\nexport enum Permission {\n ManageReports = 'Manage Reports',\n ManageUsers = 'Manage Users',\n Helpdesk = 'Helpdesk',\n ManageJobs = 'Manage Jobs',\n ManagePartnerProfiles = 'Manage Partner Profiles',\n PartnerAdmin = 'PartnerAdmin',\n}\n\nexport enum PermissionId {\n ManageReports = 1,\n ManageUsers,\n Helpdesk = 4,\n ManageJobs,\n ManagePartnerProfiles,\n PartnerAdmin,\n}\n\nexport enum Role {\n SysOp = 'SysOp',\n Govt = 'Govt',\n Specialist = 'Specialist',\n User = 'User',\n}\n\nexport enum RoleId {\n SysOp = 1,\n Govt,\n Specialist,\n User,\n}\n","import { Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { Permission, Role } from 'core/enums';\nimport { JwtService } from 'core/services/infrastructure/jwt.service';\nimport { AuthenticationService } from '../services/authentication.service';\n\n@Injectable({ providedIn: 'root' })\nexport class ManageReportsGuard {\n constructor(\n private authService: AuthenticationService,\n private jwtService: JwtService,\n private router: Router\n ) {}\n\n canActivate(): boolean {\n if (\n !this.authService.isAuthenticated() ||\n this.jwtService.userHasRole(Role.User) ||\n !this.jwtService.userHasPermission(Permission.ManageReports)\n ) {\n return this.handleInvalidAccess();\n }\n\n return true;\n }\n\n private handleInvalidAccess(): boolean {\n this.router.navigate(['/not-found']);\n return false;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { Role } from 'core/enums';\nimport { JwtService } from 'core/services/infrastructure/jwt.service';\nimport { AuthenticationService } from '../services/authentication.service';\n\n@Injectable({ providedIn: 'root' })\nexport class SysOpGuard {\n constructor(\n private authService: AuthenticationService,\n private jwtService: JwtService,\n private router: Router\n ) {}\n\n canActivate(): boolean {\n if (!this.authService.isAuthenticated()) {\n return this.handleInvalidAccess();\n }\n\n if (!this.jwtService.userHasRole(Role.SysOp)) {\n return this.handleInvalidAccess();\n }\n\n return true;\n }\n\n private handleInvalidAccess(): boolean {\n this.router.navigate(['/not-found']);\n return false;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { Role } from 'core/enums';\nimport { AuthenticationService } from 'core/services/authentication.service';\nimport { JwtService } from 'core/services/infrastructure/jwt.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class VhfTempGuard {\n constructor(\n private authService: AuthenticationService,\n private jwtService: JwtService,\n private router: Router\n ) {}\n\n canActivate(): boolean {\n if (\n this.authService.isAuthenticated() &&\n (this.jwtService.userHasRole(Role.SysOp) ||\n this.jwtService.userHasRole(Role.Govt) ||\n this.jwtService.userHasRole(Role.Specialist) ||\n this.jwtService.showVhfToAllUsers() ||\n (this.jwtService.showVhfToBetaUsers() && this.jwtService.isBetaUser()))\n ) {\n return true;\n }\n\n return this.handleInvalidAccess();\n }\n\n private handleInvalidAccess(): boolean {\n this.router.navigate(['/not-found']);\n return false;\n }\n}\n","import { HttpClient, HttpErrorResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { catchError, map, Observable, throwError } from 'rxjs';\nimport { ApiResponse } from 'shared/models/api-response';\nimport { User } from './admin/user-management.service';\nimport { ConfigService } from './infrastructure/config.service';\nimport { Resource } from './resources.service';\n\n@Injectable({ providedIn: 'root' })\nexport class AccountService {\n private readonly msepPartnerApiUrl =\n this.configService.config.msepPartnerApiBaseUrl;\n\n constructor(private configService: ConfigService, private http: HttpClient) {}\n\n getUserChallengeQuestions(token: string): Observable {\n const url = `${this.msepPartnerApiUrl}/user/challenge-questions/${token}`;\n return this.http.get>(url).pipe(\n map((result: ApiResponse) => result.data),\n catchError((error) => this.handleError(error))\n );\n }\n\n resetAccount(data: ResetPassword): Observable {\n const url = `${this.msepPartnerApiUrl}/user/reset-account`;\n return this.http\n .post(url, data)\n .pipe(catchError((error) => this.handleError(error)));\n }\n\n resetPassword(data: ResetPassword): Observable {\n const url = `${this.msepPartnerApiUrl}/user/reset-password`;\n return this.http\n .post(url, data)\n .pipe(catchError((error) => this.handleError(error)));\n }\n\n sendFullResetToken(user: User): Observable {\n return this.http\n .post(\n `${this.msepPartnerApiUrl}/admin/users/send-full-reset-email`,\n user.id\n )\n .pipe((response) => {\n return response;\n }, catchError(this.handleError));\n }\n\n sendPasswordResetToken(form: ForgotPasswordForm): Observable {\n return this.http\n .post(\n `${this.msepPartnerApiUrl}/account/send-reset-password-token`,\n form\n )\n .pipe(catchError(this.handleError));\n }\n\n sendPasswordResetTokenWithRecaptcha(\n form: ForgotPasswordForm,\n reCaptchaResponse: string | undefined\n ): Observable {\n const headers: Record = {};\n\n if (reCaptchaResponse) {\n headers['g-recaptcha-response'] = reCaptchaResponse;\n }\n return this.http\n .post(\n `${this.msepPartnerApiUrl}/account/send-reset-password-token-recaptcha`,\n form,\n {\n headers,\n }\n )\n .pipe(catchError(this.handleError));\n }\n\n private handleError(error: HttpErrorResponse): Observable {\n return throwError(() => error || 'Server error');\n }\n}\n\nexport interface ChallengeQuestionAnswer {\n challengeQuestionId: number;\n answer: string;\n}\n\nexport interface ForgotPasswordForm {\n email: string;\n confirmEmail: string;\n}\n\nexport interface ResetPassword {\n token: string;\n newPassword: string;\n challengeQuestionAnswers: ChallengeQuestionAnswer[];\n}\n","import {\n HttpClient,\n HttpErrorResponse,\n HttpStatusCode,\n} from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { catchError, forkJoin, map, Observable, of, throwError } from 'rxjs';\nimport {\n ApiResponse,\n ExternalApiResponse,\n HeartbeatResponse,\n} from 'shared/models/api-response';\nimport { DashboardStatusCount } from 'shared/models/dashboard';\nimport { ConfigService } from '../infrastructure/config.service';\n\n@Injectable({ providedIn: 'root' })\nexport class AdminDashboardService {\n private readonly msepPartnerApiUrl =\n this.configService.config.msepPartnerApiBaseUrl;\n private readonly secoApiUrl = this.configService.config.secoApiBaseUrl;\n\n constructor(private http: HttpClient, private configService: ConfigService) {}\n\n getErrorTrends(): Observable {\n const url = `${this.msepPartnerApiUrl}/admin-dashboard/error-trends`;\n return this.http\n .get(url)\n .pipe(catchError(this.handleError));\n }\n\n getEventLogTrends(): Observable {\n const url = `${this.msepPartnerApiUrl}/admin-dashboard/event-log-trends`;\n return this.http\n .get(url)\n .pipe(catchError(this.handleError));\n }\n\n getHelpDeskCounts(): Observable {\n return forkJoin({\n pendingUserCount: this.getPendingUserCount(),\n ticketCounts: this.getTicketCounts(),\n });\n }\n\n getJobFeedInfo(): Observable {\n const url = `${this.msepPartnerApiUrl}/admin-dashboard/job-feed-info`;\n return this.http.get>(url).pipe(\n map(response => response.data),\n catchError(this.handleError)\n );\n }\n\n isSapAvailable(): Observable {\n const url = `${this.msepPartnerApiUrl}/health-check/sap`;\n return this.http.get(url).pipe(\n map(response => ({\n isRunning: response.statusCode === HttpStatusCode.Ok,\n })),\n catchError(() => of({ isRunning: false } as HeartbeatResponse))\n );\n }\n\n isSecoAvailable(): Observable {\n const url = `${this.secoApiUrl}/healthcheck`;\n return this.http.get(url).pipe(\n map(response => ({\n isRunning: response !== null,\n })),\n catchError(() => of({ isRunning: false } as HeartbeatResponse))\n );\n }\n\n private getPendingUserCount(): Observable {\n const url = `${this.msepPartnerApiUrl}/admin-dashboard/pending-user-count`;\n return this.http.get>(url).pipe(\n map(result => result.data),\n catchError(this.handleError)\n );\n }\n\n private getTicketCounts(): Observable {\n const url = `${this.msepPartnerApiUrl}/admin-dashboard/ticket-counts`;\n return this.http.get>(url).pipe(\n map(result => result.data),\n catchError(this.handleError)\n );\n }\n\n private handleError(error: HttpErrorResponse): Observable {\n return throwError(() => error || 'Server error');\n }\n}\n\nexport interface DashboardTrend {\n changeString: string;\n countToday: number;\n countYesterday: number;\n percentageChange: number;\n}\n\nexport interface HelpDeskCounts {\n pendingUserCount: number;\n ticketCounts: DashboardStatusCount[];\n}\n\nexport interface JobFeedInfo {\n totalEnabledFeeds: number;\n totalDisabledFeeds: number;\n totalRunning: number;\n totalSucceeded: number;\n totalFailed: number;\n}\n","import {\n HttpClient,\n HttpErrorResponse,\n HttpParams,\n} from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { AdminPartner } from 'partners/partner-list/models/admin-partner';\nimport { AdminPartnerFilters } from 'partners/partner-list/models/admin-partner-filters';\nimport { UtilsService } from 'core/utilities/utils.service';\nimport { catchError, map, Observable, throwError } from 'rxjs';\nimport { ApiResponse } from 'shared/models/api-response';\nimport { SearchFilter } from 'shared/models/search-filter';\nimport { ConfigService } from '../infrastructure/config.service';\nimport { Resource } from '../resources.service';\n\n@Injectable({ providedIn: 'root' })\nexport class AdminService {\n private readonly msepPartnerApiUrl =\n this.configService.config.msepPartnerApiBaseUrl;\n\n constructor(\n private http: HttpClient,\n private configService: ConfigService,\n private utilService: UtilsService\n ) {}\n\n getEmailServiceStatus(): Observable {\n const url = `${this.msepPartnerApiUrl}/admin/email-service-status`;\n return this.http.get>(url).pipe(\n map(result => result.data),\n catchError(this.handleError)\n );\n }\n\n getHistoricalHiresLog(\n filters: HistoricalHiresLogFilters\n ): Observable> {\n const url = `${this.msepPartnerApiUrl}/admin/historical-hire-logs`;\n const params = new HttpParams({\n fromObject: this.utilService.removeFalseyProperties(filters),\n });\n return this.http\n .get>(url, { params })\n .pipe(\n map(result => result),\n catchError(error => this.handleError(error))\n );\n }\n\n getPartnersAutoComplete(searchTerm: string): Observable {\n const url = `${this.msepPartnerApiUrl}/partner/autocomplete`;\n\n return this.http\n .get>(url, {\n params: { searchTerm: searchTerm },\n })\n .pipe(\n map((result: ApiResponse) => result.data),\n catchError(error => this.handleError(error))\n );\n }\n\n getReportConfiguration(): Observable {\n const url = `${this.msepPartnerApiUrl}/admin/report-configuration`;\n return this.http.get>(url).pipe(\n map(result => result.data),\n catchError(this.handleError)\n );\n }\n\n searchAuthLogs(\n filters: AuthenticationLogFilters\n ): Observable> {\n const url = `${this.msepPartnerApiUrl}/admin/authentication-logs`;\n const params = new HttpParams({\n fromObject: this.utilService.removeFalseyProperties(filters),\n });\n return this.http\n .get>(url, { params })\n .pipe(\n map(result => result),\n catchError(error => this.handleError(error))\n );\n }\n\n searchPartners(\n filters?: AdminPartnerFilters\n ): Observable> {\n const url = `${this.msepPartnerApiUrl}/partner/search`;\n const params = filters\n ? new HttpParams({\n fromObject: this.utilService.removeFalseyProperties(filters),\n })\n : undefined;\n return this.http.get>(url, { params }).pipe(\n map(result => result),\n catchError(error => this.handleError(error))\n );\n }\n\n sendTestEmail(): Observable {\n const url = `${this.msepPartnerApiUrl}/admin/email-health-check`;\n return this.http.post(url, {}).pipe(catchError(this.handleError));\n }\n\n updateReportConfiguration(\n reportConfiguration: ReportConfiguration\n ): Observable {\n return this.http\n .post(\n `${this.msepPartnerApiUrl}/admin/report-configuration`,\n reportConfiguration\n )\n .pipe(catchError(this.handleError));\n }\n\n private handleError(error: HttpErrorResponse): Observable {\n return throwError(() => error || 'Server error');\n }\n}\n\nexport interface AuthenticationLog {\n email: string;\n reason: string;\n ipAddress: string;\n createdDate: Date;\n}\n\nexport interface AuthenticationLogFilters extends SearchFilter {\n email?: string;\n reasonId?: number;\n ipAddress?: string;\n startDate?: string;\n endDate?: string;\n}\n\nexport interface HistoricalHiresLog {\n changeReason: string;\n createdByUser: string;\n createdDate: Date;\n historicalHiresCount: number;\n}\n\nexport interface HistoricalHiresLogFilters {\n skip: number;\n take: number;\n sortByProperty?: string;\n sortDirection?: string;\n}\n\nexport interface ReportConfiguration {\n id: number;\n openDay: number;\n closeDay: number;\n override: boolean;\n historicalHiresCount: number;\n showVhfToAllUsers: boolean;\n showVhfToBetaUsers: boolean;\n}\n","import { HttpClient, HttpErrorResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { Role } from 'core/enums';\nimport {\n BehaviorSubject,\n Observable,\n Subscription,\n throwError,\n timer,\n} from 'rxjs';\nimport { catchError, map, takeWhile } from 'rxjs/operators';\nimport { ApiResponse } from 'shared/models/api-response';\nimport { ConfigService } from './infrastructure/config.service';\nimport { JwtService } from './infrastructure/jwt.service';\n\n@Injectable({ providedIn: 'root' })\nexport class AuthenticationService {\n // Refresh JWT 60 seconds before token expires.\n delayOffset = 60000;\n isAuthenticatedSubject = new BehaviorSubject(false);\n refreshSubscription: Subscription | undefined;\n\n private baseUrl: string;\n\n constructor(\n private configService: ConfigService,\n private http: HttpClient,\n private jwtService: JwtService,\n private router: Router\n ) {\n this.isAuthenticatedSubject.next(!this.jwtService.isTokenExpired());\n this.baseUrl = this.configService.config.msepPartnerApiBaseUrl;\n }\n\n clearSession(): void {\n this.isAuthenticatedSubject.next(false);\n this.jwtService.deleteAllTokens();\n this.refreshSubscription?.unsubscribe();\n }\n\n getDisplayName(): string {\n const decodedToken = this.jwtService.decodeToken();\n return decodedToken?.unique_name ?? '';\n }\n\n getNewJwtFromRefreshTokenObservable(): Observable<\n | AuthenticateResponse\n | {\n jwt: string;\n refreshToken: string;\n }\n > {\n const requestBody: RefreshTokenFormBody = {\n refreshToken: this.jwtService.getRefreshToken(),\n };\n const url = `${this.baseUrl}/authentication/refresh`;\n\n return this.http\n .post>(url, requestBody)\n .pipe(\n map((response) => {\n const { data: authenticateResponse } = response;\n if (!authenticateResponse) return { jwt: '', refreshToken: '' };\n this.setTokenData(authenticateResponse);\n\n return authenticateResponse;\n }),\n catchError(this.handleError)\n );\n }\n\n getTimeoutTimeFromJwt(): number {\n return this.jwtService.userHasRole(Role.SysOp) ? 10 : 15;\n }\n\n isAuthenticated(): boolean {\n return !this.jwtService.isTokenExpired();\n }\n\n logIn(requestBody: LoginFormBody): Observable {\n const url = `${this.baseUrl}/authentication/login`;\n\n return this.http\n .post>(url, requestBody)\n .pipe(\n map((response) => {\n const { data: authenticateResponse } = response;\n if (!authenticateResponse) return false;\n\n this.setTokenData(authenticateResponse);\n\n return true;\n }),\n catchError(this.handleError)\n );\n }\n\n logOut(): Observable {\n const url = `${this.baseUrl}/authentication/logout`;\n\n return this.http.post(url, null).pipe(\n map((response) => {\n this.clearSession();\n return response;\n }),\n catchError(this.handleError)\n );\n }\n\n private getNewJwtFromRefreshToken(): void {\n this.getNewJwtFromRefreshTokenObservable().subscribe((x) => x);\n }\n\n handleManualTokenDeletion(): void {\n window.addEventListener(\n 'storage',\n (event) => {\n if (\n event.key === this.configService.config.tokenStorageKey &&\n event.newValue === null\n ) {\n this.isAuthenticatedSubject.next(false);\n this.router.navigate(['/session-expired']);\n }\n },\n false\n );\n }\n\n scheduleRefresh(): void {\n this.jwtService.tokenStream.subscribe(() => {\n const delay = this.calculateDelay();\n\n //When timer eq 0, get new JWT using refresh token\n this.refreshSubscription = timer(delay - this.delayOffset)\n .pipe(takeWhile(() => !!this.jwtService.getRefreshToken()))\n .subscribe(() => {\n this.getNewJwtFromRefreshToken();\n });\n });\n }\n\n private calculateDelay(): number {\n const now: number = new Date().valueOf();\n const decodedJwt = this.jwtService.decodeToken();\n if (decodedJwt) {\n const jwtExp: number = decodedJwt.exp;\n const exp: Date = new Date(0);\n exp.setUTCSeconds(jwtExp);\n const delay: number = exp.valueOf() - now;\n\n return delay;\n }\n return 0;\n }\n\n private setTokenData(authenticateResponse: AuthenticateResponse): void {\n this.jwtService.setToken(authenticateResponse.jwtToken);\n this.jwtService.setRefreshToken(authenticateResponse.refreshToken);\n // wait to notify subscribers until after tokens are set\n this.isAuthenticatedSubject.next(true);\n this.scheduleRefresh();\n }\n\n private handleError(err: HttpErrorResponse): Observable {\n console.error(err.error);\n const errorMessage = 'Whoops, something went wrong!';\n return throwError(() => errorMessage);\n }\n}\n\ninterface AuthenticateResponse {\n jwtToken: string;\n refreshToken: string;\n}\n\ninterface LoginFormBody {\n email: string;\n password: string;\n}\n\ninterface RefreshTokenFormBody {\n refreshToken: string;\n}\n","import { Injectable } from '@angular/core';\nimport { ServerBlobResult } from 'shared/models/server-blob-result';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class BlobService {\n download(result: ServerBlobResult): void {\n if (!result) {\n return;\n }\n const blob = this.base64toBlob(result.fileContent, result.fileMimeType);\n const a = document.createElement('a');\n const objectUrl = URL.createObjectURL(blob);\n a.href = objectUrl;\n a.download = result.fileName;\n a.click();\n URL.revokeObjectURL(objectUrl);\n }\n\n downloadBlob(blob: Blob, fileName: string): void {\n const a = document.createElement('a');\n const objectUrl = URL.createObjectURL(blob);\n a.href = objectUrl;\n a.download = fileName;\n a.click();\n URL.revokeObjectURL(objectUrl);\n }\n\n private base64toBlob(base64Data: string, contentType: string): Blob {\n contentType = contentType || '';\n const sliceSize = 1024;\n const byteCharacters = atob(base64Data);\n const bytesLength = byteCharacters.length;\n const slicesCount = Math.ceil(bytesLength / sliceSize);\n const byteArrays = new Array(slicesCount);\n for (let sliceIndex = 0; sliceIndex < slicesCount; ++sliceIndex) {\n const begin = sliceIndex * sliceSize;\n const end = Math.min(begin + sliceSize, bytesLength);\n\n const bytes = new Array(end - begin);\n for (let offset = begin, i = 0; offset < end; ++i, ++offset) {\n bytes[i] = byteCharacters[offset].charCodeAt(0);\n }\n byteArrays[sliceIndex] = new Uint8Array(bytes);\n }\n return new Blob(byteArrays, { type: contentType });\n }\n}\n","import {\n HttpClient,\n HttpErrorResponse,\n HttpParams,\n} from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { ConfigService } from './infrastructure/config.service';\nimport { Observable, catchError, throwError } from 'rxjs';\nimport { UtilsService } from 'core/utilities/utils.service';\nimport { ApiResponse } from 'shared/models/api-response';\nimport { ServerBlobResult } from 'shared/models/server-blob-result';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ChartsService {\n private readonly msepPartnerApiUrl =\n this.configService.config.msepPartnerApiBaseUrl;\n\n constructor(\n private configService: ConfigService,\n private http: HttpClient,\n private utilService: UtilsService\n ) {}\n\n getCandidateSearchMetrics(\n filters: LineChartMetricsFilter,\n partnerId?: number\n ): Observable> {\n let url: string;\n if (partnerId !== undefined) {\n url = `${this.msepPartnerApiUrl}/partner/charts/${partnerId}/candidate-search`;\n } else {\n url = `${this.msepPartnerApiUrl}/charts/candidate-search`;\n }\n\n const params = filters\n ? new HttpParams({\n fromObject: this.utilService.removeFalseyProperties(filters),\n })\n : undefined;\n return this.http\n .get>(url, { params })\n .pipe(catchError(error => this.handleError(error)));\n }\n\n exportCandidateSearchMetrics(\n filters: LineChartMetricsFilter,\n partnerId?: number\n ): Observable {\n let url: string;\n if (partnerId !== undefined) {\n url = `${this.msepPartnerApiUrl}/partner/charts/${partnerId}/candidate-search/export`;\n } else {\n url = `${this.msepPartnerApiUrl}/charts/candidate-search/export`;\n }\n\n const params = filters\n ? new HttpParams({\n fromObject: this.utilService.removeFalseyProperties(filters),\n })\n : undefined;\n\n return this.http\n .get(url, { params })\n .pipe(catchError(error => this.handleError(error)));\n }\n\n getJobMapMetrics(\n filters: MapChartFilter,\n partnerId?: number\n ): Observable> {\n let url: string;\n\n if (partnerId !== undefined) {\n url = `${this.msepPartnerApiUrl}/partner/charts/${partnerId}/job-map-metrics`;\n } else {\n url = `${this.msepPartnerApiUrl}/charts/job-map-metrics`;\n }\n const params = filters\n ? new HttpParams({\n fromObject: this.utilService.removeFalseyProperties(filters),\n })\n : undefined;\n return this.http\n .get>(url, { params })\n .pipe(catchError(error => this.handleError(error)));\n }\n\n exportJobMapMetrics(\n filters: MapChartFilter,\n partnerId?: number\n ): Observable {\n let url: string;\n\n if (partnerId !== undefined) {\n url = `${this.msepPartnerApiUrl}/partner/charts/${partnerId}/job-map-metrics/export`;\n } else {\n url = `${this.msepPartnerApiUrl}/charts/job-map-metrics/export`;\n }\n const params = filters\n ? new HttpParams({\n fromObject: this.utilService.removeFalseyProperties(filters),\n })\n : undefined;\n return this.http\n .get(url, { params })\n .pipe(catchError(error => this.handleError(error)));\n }\n\n getJobMetrics(\n filters: PieChartMetricsFilter,\n partnerId?: number\n ): Observable> {\n let url: string;\n if (partnerId !== undefined) {\n url = `${this.msepPartnerApiUrl}/partner/charts/${partnerId}/job-metrics`;\n } else {\n url = `${this.msepPartnerApiUrl}/charts/job-metrics`;\n }\n const params = filters\n ? new HttpParams({\n fromObject: this.utilService.removeFalseyProperties(filters),\n })\n : undefined;\n return this.http\n .get>(url, { params })\n .pipe(catchError(error => this.handleError(error)));\n }\n\n exportJobMetrics(\n filters: PieChartMetricsFilter,\n partnerId?: number\n ): Observable {\n let url: string;\n if (partnerId !== undefined) {\n url = `${this.msepPartnerApiUrl}/partner/charts/${partnerId}/job-metrics/export`;\n } else {\n url = `${this.msepPartnerApiUrl}/charts/job-metrics/export`;\n }\n const params = filters\n ? new HttpParams({\n fromObject: this.utilService.removeFalseyProperties(filters),\n })\n : undefined;\n return this.http\n .get(url, { params })\n .pipe(catchError(error => this.handleError(error)));\n }\n\n getPartnerIndustryMetrics(): Observable> {\n const url = `${this.msepPartnerApiUrl}/charts/partner-industry-metrics`;\n return this.http\n .get>(url)\n .pipe(catchError(error => this.handleError(error)));\n }\n\n exportPartnerIndustryMetrics(): Observable {\n const url = `${this.msepPartnerApiUrl}/charts/partner-industry-metrics/export`;\n return this.http\n .get(url)\n .pipe(catchError(error => this.handleError(error)));\n }\n\n getPartnershipTypeMetrics(): Observable> {\n const url = `${this.msepPartnerApiUrl}/charts/partnership-types`;\n return this.http\n .get>(url)\n .pipe(catchError(error => this.handleError(error)));\n }\n\n exportPartnershipTypeMetrics(): Observable {\n const url = `${this.msepPartnerApiUrl}/charts/partnership-types/export`;\n return this.http\n .get(url)\n .pipe(catchError(error => this.handleError(error)));\n }\n\n getPartnersWhoReportedMetrics(\n filters: LineChartMetricsFilter\n ): Observable> {\n const url = `${this.msepPartnerApiUrl}/charts/completed-reports`;\n const params = filters\n ? new HttpParams({\n fromObject: this.utilService.removeFalseyProperties(filters),\n })\n : undefined;\n return this.http\n .get>(url, { params })\n .pipe(catchError(error => this.handleError(error)));\n }\n\n exportPartnersWhoReportedMetrics(\n filters: LineChartMetricsFilter\n ): Observable {\n const url = `${this.msepPartnerApiUrl}/charts/completed-reports/export`;\n const params = filters\n ? new HttpParams({\n fromObject: this.utilService.removeFalseyProperties(filters),\n })\n : undefined;\n\n return this.http\n .get(url, { params })\n .pipe(catchError(error => this.handleError(error)));\n }\n\n getRemoteTeleworkJobMetrics(\n filters: PieChartMetricsFilter,\n partnerId?: number\n ): Observable> {\n let url: string;\n\n if (partnerId !== undefined) {\n url = `${this.msepPartnerApiUrl}/partner/charts/${partnerId}/remote-telework-job-metrics`;\n } else {\n url = `${this.msepPartnerApiUrl}/charts/remote-telework-job-metrics`;\n }\n const params = filters\n ? new HttpParams({\n fromObject: this.utilService.removeFalseyProperties(filters),\n })\n : undefined;\n return this.http\n .get>(url, { params })\n .pipe(catchError(error => this.handleError(error)));\n }\n\n exportRemoteTeleworkJobMetrics(\n filters: PieChartMetricsFilter,\n partnerId?: number\n ): Observable {\n let url: string;\n if (partnerId !== undefined) {\n url = `${this.msepPartnerApiUrl}/partner/charts/${partnerId}/remote-telework-job-metrics/export`;\n } else {\n url = `${this.msepPartnerApiUrl}/charts/remote-telework-job-metrics/export`;\n }\n\n const params = filters\n ? new HttpParams({\n fromObject: this.utilService.removeFalseyProperties(filters),\n })\n : undefined;\n return this.http\n .get(url, { params })\n .pipe(catchError(error => this.handleError(error)));\n }\n\n getRemoteTeleworkPartnerMetrics(): Observable<\n ApiResponse\n > {\n const url = `${this.msepPartnerApiUrl}/charts/remote-telework-partners`;\n return this.http\n .get>(url)\n .pipe(catchError(error => this.handleError(error)));\n }\n\n exportRemoteTeleworkPartnerMetrics(): Observable {\n const url = `${this.msepPartnerApiUrl}/charts/remote-telework-partners/export`;\n return this.http\n .get(url)\n .pipe(catchError(error => this.handleError(error)));\n }\n\n getSpouseCurrentlyEmployedMetrics(\n filters: LineChartMetricsFilter,\n partnerId?: number\n ): Observable> {\n let url: string;\n if (partnerId !== undefined) {\n url = `${this.msepPartnerApiUrl}/partner/charts/${partnerId}/spouse-currently-employed`;\n } else {\n url = `${this.msepPartnerApiUrl}/charts/spouse-currently-employed`;\n }\n\n const params = filters\n ? new HttpParams({\n fromObject: this.utilService.removeFalseyProperties(filters),\n })\n : undefined;\n\n return this.http\n .get>(url, { params })\n .pipe(catchError(error => this.handleError(error)));\n }\n\n exportSpouseCurrentlyEmployedMetrics(\n filters: LineChartMetricsFilter,\n partnerId?: number\n ): Observable {\n let url: string;\n if (partnerId !== undefined) {\n url = `${this.msepPartnerApiUrl}/partner/charts/${partnerId}/spouse-currently-employed/export`;\n } else {\n url = `${this.msepPartnerApiUrl}/charts/spouse-currently-employed/export`;\n }\n\n const params = filters\n ? new HttpParams({\n fromObject: this.utilService.removeFalseyProperties(filters),\n })\n : undefined;\n\n return this.http\n .get(url, { params })\n .pipe(catchError(error => this.handleError(error)));\n }\n\n getSpouseHiredMetrics(\n filters: LineChartMetricsFilter,\n partnerId?: number\n ): Observable> {\n let url: string;\n\n if (partnerId !== undefined) {\n url = `${this.msepPartnerApiUrl}/partner/charts/${partnerId}/spouse-hired`;\n } else {\n url = `${this.msepPartnerApiUrl}/charts/spouse-hired`;\n }\n const params = filters\n ? new HttpParams({\n fromObject: this.utilService.removeFalseyProperties(filters),\n })\n : undefined;\n return this.http\n .get>(url, { params })\n .pipe(catchError(error => this.handleError(error)));\n }\n\n exportSpouseHiredMetrics(\n filters: LineChartMetricsFilter,\n partnerId?: number\n ): Observable {\n let url: string;\n if (partnerId !== undefined) {\n url = `${this.msepPartnerApiUrl}/partner/charts/${partnerId}/spouse-hired/export`;\n } else {\n url = `${this.msepPartnerApiUrl}/charts/spouse-hired/export`;\n }\n\n const params = filters\n ? new HttpParams({\n fromObject: this.utilService.removeFalseyProperties(filters),\n })\n : undefined;\n\n return this.http\n .get(url, { params })\n .pipe(catchError(error => this.handleError(error)));\n }\n\n getTotalJobsMetrics(\n filters: LineChartMetricsFilter\n ): Observable> {\n const url = `${this.msepPartnerApiUrl}/charts/total-jobs`;\n const params = filters\n ? new HttpParams({\n fromObject: this.utilService.removeFalseyProperties(filters),\n })\n : undefined;\n return this.http\n .get>(url, { params })\n .pipe(catchError(error => this.handleError(error)));\n }\n\n exportTotalJobsMetrics(\n filters: LineChartMetricsFilter\n ): Observable {\n const url = `${this.msepPartnerApiUrl}/charts/total-jobs/export`;\n\n const params = filters\n ? new HttpParams({\n fromObject: this.utilService.removeFalseyProperties(filters),\n })\n : undefined;\n return this.http\n .get(url, { params })\n .pipe(catchError(error => this.handleError(error)));\n }\n\n getTotalPartnersMetrics(\n filters: LineChartMetricsFilter\n ): Observable> {\n const url = `${this.msepPartnerApiUrl}/charts/total-partners`;\n const params = filters\n ? new HttpParams({\n fromObject: this.utilService.removeFalseyProperties(filters),\n })\n : undefined;\n return this.http\n .get>(url, { params })\n .pipe(catchError(error => this.handleError(error)));\n }\n\n exportTotalPartnersMetrics(\n filters: LineChartMetricsFilter\n ): Observable {\n const url = `${this.msepPartnerApiUrl}/charts/total-partners/export`;\n\n const params = filters\n ? new HttpParams({\n fromObject: this.utilService.removeFalseyProperties(filters),\n })\n : undefined;\n return this.http\n .get(url, { params })\n .pipe(catchError(error => this.handleError(error)));\n }\n\n private handleError(err: HttpErrorResponse): Observable {\n return throwError(() => err || 'Server error');\n }\n}\n\nexport interface LineChartMetrics {\n date: string;\n count: number;\n}\n\nexport interface TotalJobsLineChartMetrics {\n date: string;\n manualCount: number;\n feedCount: number;\n}\n\nexport interface MapChartMetrics {\n id: string;\n key: string;\n count: number;\n}\n\nexport interface MapChartFilter {\n organizationId?: number;\n}\n\nexport interface LineChartMetricsFilter {\n startDate: string;\n endDate: string;\n organizationId?: number;\n partnershipTypeId?: number;\n}\n\nexport interface PieChartMetrics {\n description: string;\n count: number;\n}\n\nexport interface PieChartMetricsFilter {\n field: string;\n organizationId?: number;\n}\n","import {\n HttpClient,\n HttpErrorResponse,\n HttpParams,\n} from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { UtilsService } from 'core/utilities/utils.service';\nimport { BehaviorSubject, catchError, map, Observable, throwError } from 'rxjs';\nimport { ApiResponse } from 'shared/models/api-response';\nimport { SearchFilter } from 'shared/models/search-filter';\nimport { ConfigService } from '../infrastructure/config.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SystemAlertService {\n publishedSystemAlertCount$ = new BehaviorSubject(true);\n private msepPartnerApiUrl = this.configService.config.msepPartnerApiBaseUrl;\n private baseUrl = `${this.msepPartnerApiUrl}`;\n private savedFilters: SystemAlertSearchFilter | null = null;\n\n constructor(\n private configService: ConfigService,\n private http: HttpClient,\n private utilService: UtilsService\n ) {}\n\n clearSavedFilters(): void {\n this.savedFilters = null;\n }\n\n createSystemAlert(createSystemAlert: SystemAlert): Observable {\n const url = `${this.baseUrl}/cms/system-alerts/create`;\n\n return this.http\n .post(url, createSystemAlert)\n .pipe(catchError(this.handleError));\n }\n\n deleteSystemAlert(id?: number): Observable {\n const url = `${this.baseUrl}/cms/system-alerts/${id}/delete`;\n return this.http\n .post(url, {})\n .pipe(catchError(error => this.handleError(error)));\n }\n\n editSystemAlert(alert: SystemAlert): Observable {\n return this.http\n .post(`${this.baseUrl}/cms/system-alerts/${alert.id}/edit`, alert)\n .pipe(catchError(error => this.handleError(error)));\n }\n\n getSavedFilters(): SystemAlertSearchFilter | null {\n return this.savedFilters;\n }\n\n getSystemAlertById(id?: number): Observable {\n const url = `${this.baseUrl}/cms/system-alerts/${id}`;\n return this.http.get>(url).pipe(\n map(result => result.data),\n catchError(error => this.handleError(error))\n );\n }\n\n publishedSystemAlerts(\n params: HttpParams\n ): Observable> {\n const url = `${this.baseUrl}/public/system-alerts`;\n return this.http\n .get>(url, { params })\n .pipe(catchError(error => this.handleError(error)));\n }\n\n saveFilters(filters: SystemAlertSearchFilter): void {\n this.savedFilters = filters;\n }\n\n searchSystemAlerts(\n filters: SystemAlertSearchFilter\n ): Observable> {\n const url = `${this.baseUrl}/cms/system-alerts`;\n const params = new HttpParams({\n fromObject: this.utilService.removeFalseyProperties(filters),\n });\n return this.http\n .get>(url, { params })\n .pipe(catchError(error => this.handleError(error)));\n }\n\n private handleError(error: HttpErrorResponse): Observable {\n return throwError(() => error || 'Server error');\n }\n}\n\nexport interface CreateSystemAlert {\n title: string;\n categoryId: number;\n body: string;\n publishedStartDate?: Date;\n publishedEndDate?: Date;\n}\n\nexport interface SystemAlert {\n body?: string;\n categoryDescription?: string;\n categoryId?: number;\n id?: number;\n publishStartDate?: Date;\n publishEndDate?: Date;\n title?: string;\n}\n\nexport interface SystemAlertSearchFilter extends SearchFilter {\n categoryId?: number;\n endDate?: string;\n startDate?: string;\n title?: string;\n}\n\nexport interface SystemAlertsSearchParams {\n categoryId?: number;\n skip?: number;\n sortDirection?: string;\n sortField?: string;\n take?: number;\n}\n","import { HttpClient, HttpErrorResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { ApplicationStatus } from 'core/enums';\nimport { catchError, Observable, throwError, map } from 'rxjs';\nimport { ApiResponse } from 'shared/models/api-response';\nimport { DashboardStatusCount } from 'shared/models/dashboard';\nimport { ConfigService } from './infrastructure/config.service';\n\n@Injectable({ providedIn: 'root' })\nexport class DashboardService {\n private readonly msepPartnerApiUrl =\n this.configService.config.msepPartnerApiBaseUrl;\n constructor(private http: HttpClient, private configService: ConfigService) {}\n\n getExactTotalSpousesHired(): Observable {\n return this.http\n .get>(\n `${this.msepPartnerApiUrl}/resources/total-spouses-hired`\n )\n .pipe(\n map(response => response.data.count),\n catchError(this.handleError)\n );\n }\n\n getDefaultRoleDocks(roleId: number): Observable {\n const url = `${this.msepPartnerApiUrl}/admin/default-role-docks/${roleId}`;\n return this.http.get>(url).pipe(\n map(result => result.data),\n catchError(this.handleError)\n );\n }\n\n getDocks(): Observable {\n const url = `${this.msepPartnerApiUrl}/dashboard/dock/get-docks`;\n return this.http.get>(url).pipe(\n map(result => result.data),\n catchError(this.handleError)\n );\n }\n\n getPartnerEngagement(): Observable {\n const url = `${this.msepPartnerApiUrl}/dashboard/partner-engagement`;\n return this.http\n .get(url)\n .pipe(catchError(this.handleError));\n }\n\n getPartnerTracker(): Observable {\n const url = `${this.msepPartnerApiUrl}/dashboard/partner-tracker`;\n return this.http\n .get(url)\n .pipe(catchError(this.handleError));\n }\n\n getPartnerMetrics(): Observable {\n const url = `${this.msepPartnerApiUrl}/dashboard/partner-metrics`;\n return this.http.get(url).pipe(\n map((result: PartnerMetrics) => {\n const visibleStatus = result.statusCounts.filter(\n x =>\n x.statusId === ApplicationStatus.InReview ||\n x.statusId === ApplicationStatus.Approved ||\n x.statusId === ApplicationStatus.Disapproved\n );\n\n return {\n statusCounts: visibleStatus,\n };\n }),\n catchError(this.handleError)\n );\n }\n\n getRecentlyAccessedPartners(): Observable {\n const url = `${this.msepPartnerApiUrl}/dashboard/recently-accessed-partners`;\n return this.http.get>(url).pipe(\n map(result => result.data),\n catchError(this.handleError)\n );\n }\n\n getUserMetrics(): Observable {\n const url = `${this.msepPartnerApiUrl}/dashboard/user-metrics`;\n return this.http.get>(url).pipe(\n map(result => result.data),\n catchError(this.handleError)\n );\n }\n\n toggleCollapseDock(dockId: number): Observable {\n const url = `${this.msepPartnerApiUrl}/dashboard/dock/toggle-collapse-dock`;\n return this.http.post(url, dockId).pipe(response => {\n return response;\n }, catchError(this.handleError));\n }\n\n updateDocks(docks: Dock[]): Observable {\n const url = `${this.msepPartnerApiUrl}/dashboard/dock/update-docks`;\n return this.http.post(url, { docks: docks }).pipe(response => {\n return response;\n }, catchError(this.handleError));\n }\n\n private handleError(error: HttpErrorResponse): Observable {\n return throwError(() => error || 'Server error');\n }\n}\n\nexport interface Dock {\n userId?: number;\n dockId: number;\n column?: number;\n sortOrder?: number;\n isCollapsed?: boolean;\n}\n\nexport interface PartnerEngagement {\n candidateSearchCount: number;\n completedMonthlyReportCount: number;\n fourPlusOnePartnerCount: number;\n}\n\nexport interface PartnerTracker {\n highlyEngaged: number;\n increaseEngagement: number;\n limitedEngagement: number;\n noEngagement: number;\n}\n\nexport interface PartnerMetrics {\n statusCounts: DashboardStatusCount[];\n}\n\nexport interface UserMetrics {\n totalUsers: number;\n activeUsers: number;\n lockedUsers: number;\n suspendedUsers: number;\n}\n\nexport interface RecentlyAccessedPartner {\n partnerId: number;\n partnerName: string;\n accessedDate: Date;\n}\n","import {\n HttpClient,\n HttpErrorResponse,\n HttpParams,\n} from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable, catchError, throwError, map } from 'rxjs';\nimport { ApiResponse } from 'shared/models/api-response';\nimport { ConfigService } from './infrastructure/config.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class HelpDeskService {\n private readonly msepPartnerApiUrl =\n this.configService.config.msepPartnerApiBaseUrl;\n private savedFilters: HttpParams | null = null;\n\n constructor(private http: HttpClient, private configService: ConfigService) {}\n\n clearSavedFilters(): void {\n this.savedFilters = null;\n }\n\n createHelpDeskTicket(\n form: ContactUsForm,\n reCaptchaResponse: string | undefined\n ): Observable {\n const headers: Record = {};\n\n if (reCaptchaResponse) {\n headers['g-recaptcha-response'] = reCaptchaResponse;\n }\n return this.http.post(`${this.msepPartnerApiUrl}/public/contact-us`, form, {\n headers,\n });\n }\n\n createAuthHelpDeskTicket(form: ContactUsAuthForm): Observable {\n return this.http.post(\n `${this.msepPartnerApiUrl}/admin/contact-us/auth-ticket`,\n form\n );\n }\n\n getContactUsTicket(ticketId: number): Observable {\n return this.http\n .get>(\n `${this.msepPartnerApiUrl}/admin/contact-us/${ticketId}`\n )\n .pipe(map(response => response.data));\n }\n\n getContactUsTickets(\n params: HttpParams\n ): Observable> {\n const url = `${this.msepPartnerApiUrl}/admin/contact-us/tickets`;\n return this.http\n .get>(url, { params })\n .pipe(catchError(this.handleError));\n }\n\n getSavedFilters(): HttpParams | null {\n return this.savedFilters;\n }\n\n saveFilters(filters: HttpParams): void {\n this.savedFilters = filters;\n }\n\n updateContactUsTicket(ticket: ContactUsTicket): Observable {\n return this.http\n .post(`${this.msepPartnerApiUrl}/admin/contact-us`, ticket)\n .pipe(response => {\n return response;\n }, catchError(this.handleError));\n }\n\n private handleError(error: HttpErrorResponse): Observable {\n return throwError(() => error || 'Server error');\n }\n}\n\nexport interface ContactUsTicketList {\n id: number;\n firstName: string;\n lastName: string;\n email: string;\n submitDate: Date;\n resolvedDate: Date | null;\n status: string;\n assignedTo: string | null;\n organizationId: number | null;\n organizationName: string | null;\n}\nexport interface ContactUsForm {\n firstName: string;\n lastName: string;\n email: string;\n phone: string;\n isRegistered: boolean;\n contactUsAssistanceTypeId: number;\n contactUsContactWindowId: number;\n contactUsPreferredCommunicationId: number;\n contactUsPriorityLevelId?: number;\n message: string;\n organizationId?: number;\n nonPartnerOrganizationName?: string;\n nonPartnerOrganizationWebsite?: string;\n}\n\nexport interface ContactUsAuthForm {\n contactUsAssistanceTypeId: number;\n contactUsContactWindowId: number;\n contactUsPreferredCommunicationId: number;\n message: string;\n}\n\nexport interface ContactUsTicket {\n id: number;\n firstName: string;\n lastName: string;\n email: string;\n phone: string;\n isRegistered: boolean;\n contactUsAssistanceTypeId: number;\n contactUsPriorityLevelId?: number;\n contactUsContactWindow: string;\n contactUsPreferredCommunication: string;\n nonPartnerOrganizationName?: string;\n nonPartnerOrganizationWebsite?: string;\n organizationId?: number;\n organizationName: string;\n areaOfAssistance: string;\n message: string;\n assignedToUserId?: number;\n statusId: number;\n resolvedDate?: Date;\n ipAddress: string;\n}\n","import { HttpClient } from '@angular/common/http';\nimport { APP_INITIALIZER, Injectable } from '@angular/core';\nimport { lastValueFrom } from 'rxjs';\nimport { environment } from '../../../../environments/environment';\n\n@Injectable({ providedIn: 'root' })\nexport class ConfigService {\n public config!: Config;\n constructor(private http: HttpClient) {}\n\n async loadConfig(): Promise {\n const config$ = this.http.get(\n `assets/config/${environment.configSettings}`\n );\n this.config = await lastValueFrom(config$);\n }\n}\n\nexport function configProviderFactory(configService: ConfigService) {\n return () => configService.loadConfig();\n}\n\nexport const CONFIG_SERVICE_PROVIDER = {\n provide: APP_INITIALIZER,\n useFactory: configProviderFactory,\n deps: [ConfigService],\n multi: true,\n};\n\nexport interface Config {\n chatHubBaseUrl: string;\n googleAnalyticsKey: string;\n googleMapsApiKey: string;\n msepPartnerApiBaseUrl: string;\n recaptchaSiteKey: string;\n refreshTokenStorageKey: string;\n resourcesS3BucketUrl: string;\n logosS3BucketUrl: string;\n sapApiBaseUrl: string;\n secoApiBaseUrl: string;\n secoBaseUrl: string;\n tokenStorageKey: string;\n version: string;\n}\n","
\n
\n {{ title }}\n
\n \n \n \n \n \n \n
\n","import { TemplatePortal } from '@angular/cdk/portal';\nimport { Component, Inject, OnInit, ViewContainerRef } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\n\n@Component({\n selector: 'msep-general-dialog',\n templateUrl: './general-dialog.component.html',\n styleUrls: ['./general-dialog.component.scss'],\n})\nexport class GeneralDialogComponent implements OnInit {\n displayData: unknown;\n templatePortal!: TemplatePortal;\n title!: string;\n constructor(\n public dialogRef: MatDialogRef,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n @Inject(MAT_DIALOG_DATA) public data: any,\n private viewContainerRef: ViewContainerRef\n ) {}\n\n // assumption here is that callers will pass in a TemplateRef\n ngOnInit(): void {\n this.templatePortal = new TemplatePortal(\n this.data.templateRef,\n this.viewContainerRef\n );\n this.title = this.data.title;\n }\n}\n","import { Injectable, TemplateRef } from '@angular/core';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { Observable, of } from 'rxjs';\nimport { ConfirmationDialogComponent } from 'shared/components/confirmation-dialog/confirmation-dialog.component';\nimport { GeneralDialogComponent } from 'shared/components/general-dialog/general-dialog.component';\n\n@Injectable({ providedIn: 'root' })\nexport class DialogService {\n confirmDialogRef!: MatDialogRef;\n constructor(private dialog: MatDialog) {}\n\n confirm(message?: string): Observable {\n const confirmation = window.confirm(message || 'Is it OK?');\n\n return of(confirmation);\n }\n\n generalConfirmation(\n message?: string\n ): MatDialogRef {\n return this.dialog.open(ConfirmationDialogComponent, {\n data: {\n title: 'Are you sure?',\n message: message || 'Is it OK?',\n buttonYes: 'Ok',\n buttonNo: 'Cancel',\n },\n });\n }\n\n generalDialog(\n title: string,\n templateRef: TemplateRef | undefined,\n width = '80vw'\n ): MatDialogRef {\n return this.dialog.open(GeneralDialogComponent, {\n data: {\n templateRef: templateRef,\n title: title,\n },\n width: width,\n });\n }\n\n showDeleteConfirmation(\n dialogContent: MsepDialogContent | null = null\n ): MatDialogRef {\n return this.dialog.open(ConfirmationDialogComponent, {\n data: {\n title:\n dialogContent?.title ??\n 'Are you sure you want to delete this record?',\n message:\n dialogContent?.message ??\n 'You will not be able to recover this information!',\n buttonYes: dialogContent?.buttonYes ?? 'Delete',\n buttonNo: dialogContent?.buttonNo ?? 'Cancel',\n },\n });\n }\n\n governmentExitModal(href: string): MatDialogRef {\n return this.dialog.open(ConfirmationDialogComponent, {\n data: {\n title: 'Leaving the Military Spouse Employment Partnership portal',\n message:\n 'You are about to leave the site. The appearance of hyperlinks does not constitute endorsement by the Defense Department of non-U.S. government sites or the information, products, or services contained therein. Other than for authorized activities such as military exchanges and MWR sites, the United States Defense Department does not exercise any editorial control over the information you may find at these locations. Such links are provided consistent with the stated purpose of this website.',\n buttonYes: 'Ok',\n buttonNo: 'Cancel',\n linkUrl: href,\n },\n });\n }\n}\n\nexport interface MsepDialogContent {\n title: string | null;\n message: string | null;\n buttonYes: string | null;\n buttonNo: string | null;\n}\n","import { Injectable } from '@angular/core';\nimport { ConfigService } from './config.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class GoogleAnalyticsService {\n googleAnalyticsKey = this.configService.config.googleAnalyticsKey;\n constructor(private configService: ConfigService) {}\n\n generateScript(): void {\n const gTagLoaderId = 'gTag';\n const tagManagerLoaderId = 'tagManager';\n const areScriptsLoaded =\n document.getElementById(gTagLoaderId) &&\n document.getElementById(tagManagerLoaderId);\n\n if (areScriptsLoaded) {\n return;\n }\n\n const tagManagerScript = this.buildTagManagerScript(tagManagerLoaderId);\n const googleAnalyticsScript = this.buildGTagScript(gTagLoaderId);\n\n // tagmanager documentation asks for the script to be loaded as close as possible\n // to opening head element. https://developers.google.com/tag-manager/quickstart\n document.head.appendChild(tagManagerScript);\n document.head.appendChild(googleAnalyticsScript);\n }\n\n trackExternalLinkClick(linkHref: string): void {\n // eslint-disable-next-line\n (window).ga('send', 'event', {\n eventCategory: 'External Link Click',\n eventAction: 'click',\n eventLabel: linkHref,\n });\n }\n\n private buildGTagScript(scriptId: string): HTMLScriptElement {\n const script = document.createElement('script');\n script.type = 'text/javascript';\n script.async = true;\n script.defer = true;\n script.id = scriptId;\n script.innerHTML = `\n window.dataLayer = window.dataLayer || [];\n function gtag() {\n dataLayer.push(arguments);\n }\n gtag('js', new Date());\n gtag('config', '${this.googleAnalyticsKey}');`;\n\n return script;\n }\n\n private buildTagManagerScript(scriptId: string): HTMLScriptElement {\n const script = document.createElement('script');\n script.type = 'text/javascript';\n script.async = true;\n script.defer = true;\n script.id = scriptId;\n\n script.src = `https://www.googletagmanager.com/gtag/js?id=${this.googleAnalyticsKey}`;\n\n return script;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { ApplicationStatus, Permission, Role } from 'core/enums';\nimport jwtDecode from 'jwt-decode';\nimport { Observable } from 'rxjs';\nimport { JwtToken } from 'shared/models/jwt-token';\nimport { ConfigService } from './config.service';\n\n@Injectable({ providedIn: 'root' })\nexport class JwtService {\n private refreshTokenKey: string;\n private tokenKey: string;\n tokenStream: Observable;\n\n constructor(private configService: ConfigService, private router: Router) {\n this.refreshTokenKey = this.configService.config.refreshTokenStorageKey;\n this.tokenKey = this.configService.config.tokenStorageKey;\n this.tokenStream = new Observable((obs) => {\n obs.next(this.getToken());\n });\n }\n\n decodeToken(): JwtToken | null {\n const token = this.getToken();\n if (!token) {\n return null;\n }\n\n return jwtDecode(token);\n }\n\n deleteAllTokens(): void {\n sessionStorage.clear();\n }\n\n doesTokenExist(): boolean {\n return Boolean(this.getToken());\n }\n\n getDaysUntilPasswordExpires(): number {\n const decodedToken = this.decodeToken();\n return Number(decodedToken?.daysUntilPasswordExpires) ?? 0;\n }\n\n getEmail(): string {\n const decodedToken = this.decodeToken();\n\n return decodedToken?.email ?? '';\n }\n\n getHomePage(): string {\n const organizationId = this.getOrganizationId();\n const organizationStatus = this.getOrganizationApplicationStatusId();\n switch (true) {\n case this.decodeToken() === null:\n return '/';\n case this.userHasRole(Role.SysOp):\n return '/admin/dashboard';\n case this.userHasRole(Role.Specialist):\n return '/specialist/dashboard';\n case this.userHasRole(Role.Govt):\n return '/government/dashboard';\n case organizationStatus === 0:\n return '/registration/partner-application';\n case organizationStatus === ApplicationStatus.Approved:\n return `/partner/dashboard/${organizationId}`;\n default:\n return `/registration/application-dashboard/${organizationId}`;\n }\n }\n\n getLastLoginDate(): string {\n const decodedToken = this.decodeToken();\n\n return decodedToken?.lastLoginDate ?? '';\n }\n\n getOrganizationId(): number {\n const decodedToken = this.decodeToken();\n\n return Number(decodedToken?.organizationId) ?? 0;\n }\n\n getOrganizationApplicationStatusId(): number {\n const decodedToken = this.decodeToken();\n\n return Number(decodedToken?.organizationApplicationStatusId) ?? 0;\n }\n\n getToken(): string {\n return sessionStorage.getItem(this.tokenKey) ?? '';\n }\n\n getRefreshToken(): string {\n return sessionStorage.getItem(this.refreshTokenKey) ?? '';\n }\n\n getTokenExpiration(): Date {\n const decodedToken = this.decodeToken();\n const date = new Date(0);\n date.setUTCSeconds(decodedToken?.exp ?? 0);\n\n return date;\n }\n\n getUserId(): number {\n const token = this.getToken();\n\n if (!token) {\n return 0;\n }\n\n const decodedToken = this.decodeToken();\n\n return Number(decodedToken?.id ?? 0);\n }\n\n getValue(key: keyof JwtToken): JwtToken[keyof JwtToken] | null {\n const decodedToken = this.decodeToken();\n if (!decodedToken) {\n return null;\n }\n return decodedToken[key];\n }\n\n isBetaUser(): boolean {\n const decodedToken = this.decodeToken();\n if (!decodedToken) {\n return false;\n }\n return decodedToken.isBetaUser === 'True';\n }\n\n isTokenExpired(offsetSeconds = 0): boolean {\n if (!this.doesTokenExist()) {\n return true;\n }\n\n const date = this.getTokenExpiration();\n\n return date.valueOf() <= new Date().valueOf() + offsetSeconds * 1000;\n }\n\n isPasswordExpiring(): boolean {\n return Number(this.decodeToken()?.daysUntilPasswordExpires) <= 10;\n }\n\n routeToHomePage(): void {\n this.router.navigate([this.getHomePage()]);\n }\n\n setToken(token: string): void {\n sessionStorage.setItem(this.tokenKey, token);\n }\n\n setRefreshToken(token: string): void {\n sessionStorage.setItem(this.refreshTokenKey, token);\n }\n\n showVhfToAllUsers(): boolean {\n const decodedToken = this.decodeToken();\n if (!decodedToken) {\n return false;\n }\n return decodedToken.showVhfToAllUsers === 'True';\n }\n\n showVhfToBetaUsers(): boolean {\n const decodedToken = this.decodeToken();\n if (!decodedToken) {\n return false;\n }\n return decodedToken.showVhfToBetaUsers === 'True';\n }\n\n userHasPermission(permissionToCheck: Permission): boolean {\n return this.getPermissions().some(\n (permission) => permission === permissionToCheck\n );\n }\n\n userHasRole(roleToCheck: Role): boolean {\n return this.getRole() === roleToCheck;\n }\n\n private getPermissions(): Permission[] {\n const decodedToken = this.decodeToken();\n let permissions = decodedToken?.permissions ?? [];\n\n if (typeof permissions === 'string') {\n permissions = [permissions];\n }\n\n return permissions;\n }\n\n private getRole(): Role | undefined {\n return this.decodeToken()?.role;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { Subject } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NotificationService {\n failureNotification$ = new Subject();\n failureFullDurationNotification$ = new Subject();\n successNotification$ = new Subject();\n successFullDurationNotification$ = new Subject();\n serverValidationNotification$ = new Subject();\n private defaultDisplayTime = 3000;\n private defaultSuccessClass = 'snackbar-success';\n private defaultFailureClass = 'snackbar-failure';\n constructor(private materialSnackbar: MatSnackBar) {}\n\n emitServerValidationError(errors: string[]): void {\n this.serverValidationNotification$.next(errors);\n }\n\n emitFailure(message: string): void {\n this.failureNotification$.next(message);\n }\n\n emitFailureFullDuration(message: string): void {\n this.failureFullDurationNotification$.next(message);\n this.serverValidationNotification$.next(null);\n }\n\n // couldn't figure out how to test Subject directly, so\n // if someone figures out how to do it properly, this method\n // won't be necessary\n emitSuccess(message: string): void {\n this.successNotification$.next(message);\n this.serverValidationNotification$.next(null);\n }\n\n emitSuccessFullDuration(message: string): void {\n this.successFullDurationNotification$.next(message);\n this.serverValidationNotification$.next(null);\n }\n\n showSuccess(message: string): void {\n this.materialSnackbar.open(message, undefined, {\n duration: this.defaultDisplayTime,\n panelClass: this.defaultSuccessClass,\n });\n }\n\n showSuccessFullDuration(message: string): void {\n this.materialSnackbar.open(message, 'Dismiss', {\n duration: 0,\n panelClass: this.defaultSuccessClass,\n });\n }\n\n showFailure(message: string): void {\n this.materialSnackbar.open(message, undefined, {\n duration: this.defaultDisplayTime,\n panelClass: this.defaultFailureClass,\n });\n }\n\n showFailureFullDuration(message: string): void {\n this.materialSnackbar.open(message, 'Dismiss', {\n duration: 0,\n panelClass: this.defaultFailureClass,\n });\n }\n}\n","import { HttpClient, HttpErrorResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport * as bodybuilder from 'bodybuilder';\nimport { UtilsService } from 'core/utilities/utils.service';\nimport { catchError, map, Observable, of, throwError } from 'rxjs';\nimport { ApiResponse, HeartbeatResponse } from 'shared/models/api-response';\nimport { SearchFilter } from 'shared/models/search-filter';\nimport { ConfigService } from './infrastructure/config.service';\nimport { Coordinates } from 'shared/models/google-location';\n\n@Injectable({ providedIn: 'root' })\nexport class JobService {\n private builder!: bodybuilder.Bodybuilder;\n private filters!: JobSearchFilter;\n private msepPartnerApiUrl = this.configService.config.msepPartnerApiBaseUrl;\n private savedFilters: JobSearchFilter | null = null;\n\n constructor(\n private http: HttpClient,\n private configService: ConfigService,\n private utilitiesService: UtilsService\n ) {}\n\n clearSavedFilters(): void {\n this.savedFilters = null;\n }\n\n createJob(createJob: Job): Observable {\n const url = `${this.msepPartnerApiUrl}/partner/${createJob.organizationId}/jobs/create`;\n\n return this.http\n .post(url, createJob)\n .pipe(catchError(this.handleError));\n }\n\n deleteJob(deleteJob: DeleteJob): Observable {\n const url = `${this.msepPartnerApiUrl}/partner/${deleteJob.organizationId}/jobs/${deleteJob.documentId}/delete`;\n\n return this.http\n .post(url, deleteJob)\n .pipe(catchError(this.handleError));\n }\n\n extendPublishDate(extendPublishJob: ExtendPublishJob): Observable {\n const url = `${this.msepPartnerApiUrl}/partner/${extendPublishJob.organizationId}/jobs/${extendPublishJob.documentId}/extend-publish-date`;\n\n return this.http\n .post(url, extendPublishJob)\n .pipe(catchError(this.handleError));\n }\n\n getSavedFilters(): JobSearchFilter | null {\n return this.savedFilters;\n }\n\n isJobsIndexAvailable(): Observable {\n const url = `${this.msepPartnerApiUrl}/jobs/search`;\n this.builder = bodybuilder().size(1).rawOption('_source', 'title');\n const query = this.builder.build();\n return this.http.post>(url, query).pipe(\n map((response) => ({\n isRunning: response.hits.hits.length === 1,\n })),\n catchError(() => of({ isRunning: false } as HeartbeatResponse))\n );\n }\n\n saveFilters(filters: JobSearchFilter): void {\n this.savedFilters = filters;\n }\n\n searchJobs(filters: JobSearchFilter): Observable> {\n const url = `${this.msepPartnerApiUrl}/jobs/search`;\n this.filters = filters;\n const query = this.buildOpenSearchQuery();\n return this.http.post>(url, query).pipe(\n map((response) => ({\n total: response.hits.total.value,\n data: response.hits.hits.map((job) => job._source),\n })),\n catchError(this.handleError)\n );\n }\n\n toggleHotJob(toggleJob: ToggleHotJob): Observable {\n const url = `${this.msepPartnerApiUrl}/partner/${toggleJob.organizationId}/jobs/${toggleJob.documentId}/toggle-hot-job`;\n\n return this.http\n .post(url, toggleJob)\n .pipe(catchError(this.handleError));\n }\n\n toggleJobPublish(extendPublishJob: ToggleJobPublish): Observable {\n const url = `${this.msepPartnerApiUrl}/partner/${extendPublishJob.organizationId}/jobs/${extendPublishJob.documentId}/toggle-publish`;\n\n return this.http\n .post(url, extendPublishJob)\n .pipe(catchError(this.handleError));\n }\n\n toggleRemoteJob(toggleJob: ToggleRemoteJob): Observable {\n const url = `${this.msepPartnerApiUrl}/partner/${toggleJob.organizationId}/jobs/${toggleJob.documentId}/toggle-remote-job`;\n\n return this.http\n .post(url, toggleJob)\n .pipe(catchError(this.handleError));\n }\n\n toggleTeleworkJob(toggleJob: ToggleTeleworkJob): Observable {\n const url = `${this.msepPartnerApiUrl}/partner/${toggleJob.organizationId}/jobs/${toggleJob.documentId}/toggle-telework-job`;\n\n return this.http\n .post(url, toggleJob)\n .pipe(catchError(this.handleError));\n }\n\n updateJob(updateJob: Job): Observable {\n const url = `${this.msepPartnerApiUrl}/partner/${updateJob.organizationId}/jobs/update`;\n\n return this.http\n .post(url, updateJob)\n .pipe(catchError(this.handleError));\n }\n\n private buildBaseQuery(): void {\n this.builder = bodybuilder()\n .from(this.filters.skip)\n .size(this.filters.take)\n .sort(\n this.filters.sortByProperty,\n this.filters.sortDirection\n )\n // openSearch limits take to 10,000. This allows total size to come back for use in pager\n .rawOption('track_total_hits', true);\n }\n\n private buildCoordinatesQuery(coordinates: Coordinates): void {\n const { latitude: lat, longitude: lon } = coordinates;\n this.builder.filter('geo_distance', {\n distance: '80km',\n location: { lat, lon },\n });\n }\n\n private buildOpenSearchQuery(): object {\n this.buildBaseQuery();\n\n this.buildPublishedDateQuery(this.filters.isPublished);\n if (this.filters.coordinates) {\n this.buildCoordinatesQuery(this.filters.coordinates);\n }\n if (this.filters.createdEndDate && this.filters.createdStartDate) {\n const startDate = this.utilitiesService.getDateAtMidnight(\n this.filters.createdStartDate\n );\n const endDate = this.utilitiesService.getDateAtLatestTimestamp(\n this.filters.createdEndDate\n );\n\n this.builder\n .query('range', 'createdDate', {\n gte: startDate,\n })\n .query('range', 'createdDate', {\n lte: endDate,\n });\n }\n\n if (this.filters.title) {\n this.builder.query('match_phrase', 'title', this.filters.title);\n }\n if (this.filters.keyword) {\n this.builder.query('multi_match', 'fields', ['title', 'description'], {\n query: this.filters.keyword,\n });\n }\n if (this.filters.organizationId) {\n this.builder.query(\n 'match',\n 'organizationId',\n this.filters.organizationId\n );\n }\n\n if (this.filters.jid) {\n this.builder.query('match_phrase', 'jid', this.filters.jid);\n }\n\n this.buildHotJobQuery(this.filters.isHotJob);\n\n if (this.filters.jobFeedId) {\n this.builder.query('match', 'jobFeedId', this.filters.jobFeedId);\n }\n if (this.filters.jobHash) {\n this.builder.query('match', 'jobHash.keyword', this.filters.jobHash);\n }\n if (this.filters.state) {\n this.builder.query('match', 'state', this.filters.state);\n }\n\n return this.builder.build();\n }\n\n private buildHotJobQuery(isHotJob: boolean | null): void {\n if (isHotJob == null || isHotJob == undefined) {\n return;\n }\n if (!isHotJob) {\n this.builder.query('bool', (a) =>\n a\n .orQuery('match', 'isHotJob', false)\n .orQuery('bool', (b) => b.notQuery('exists', 'field', 'isHotJob'))\n );\n } else {\n this.builder.query('match', 'isHotJob', true);\n }\n }\n\n private buildPublishedDateQuery(isPublished: boolean | null): void {\n if (isPublished == null) {\n return;\n }\n if (!isPublished) {\n this.builder.query('bool', (b) =>\n b\n .orQuery('range', 'publishEndDate', {\n lt: 'now',\n })\n\n .orQuery('bool', (c) =>\n c.notQuery('exists', 'field', 'publishEndDate')\n )\n );\n return;\n }\n this.builder\n .query('range', 'publishStartDate', {\n lte: 'now',\n })\n .query('range', 'publishEndDate', {\n gte: 'now',\n });\n }\n\n private handleError(error: HttpErrorResponse): Observable {\n return throwError(() => error || 'Server error');\n }\n}\n\nexport interface ExtendPublishJob {\n documentId?: string;\n isHotJob: boolean;\n organizationId: number;\n}\nexport interface DeleteJob {\n documentId?: string;\n organizationId: number;\n}\n\nexport interface ToggleHotJob {\n documentId?: string;\n organizationId: number;\n isHotJob: boolean;\n}\n\nexport interface ToggleJobPublish {\n documentId?: string;\n isHotJob: boolean;\n publish: boolean;\n organizationId: number;\n}\n\nexport interface ToggleRemoteJob {\n documentId?: string;\n organizationId: number;\n isRemoteJob: boolean;\n}\n\nexport interface ToggleTeleworkJob {\n documentId?: string;\n organizationId: number;\n isTelework: boolean;\n}\n\nexport interface Job {\n address1?: string;\n career: string;\n careerLevelId?: number;\n careerLevel?: string;\n city?: string;\n compensationType?: string;\n createdByUserId?: number;\n createdDate: Date;\n description: string;\n education?: string;\n googlePlaceId?: string;\n hourlyRate?: string;\n industry?: string;\n isHotJob: boolean;\n isImported: boolean;\n isPublished: boolean;\n isRemoteJob: boolean;\n isTelework: false;\n jobBenefits?: string;\n jobFeedId?: number;\n jobHash?: string;\n jid?: string;\n jobOpenings?: number;\n jobType?: string;\n lastUpdatedByUserId?: number;\n lastUpdatedDate: Date;\n latitude?: number;\n location?: string;\n longitude?: number;\n minQualifications?: string;\n organizationId: number;\n organizationLogo?: string;\n organizationName: string;\n partnershipType?: string[];\n postal?: string;\n prefQualifications?: string;\n publishEndDate?: string;\n publishStartDate?: string;\n minSalary?: number;\n maxSalary?: number;\n state?: string;\n tags?: string;\n title: string;\n url: string;\n usRegion?: string;\n yearsOfExperience?: string;\n}\n\nexport interface JobSearchFilter extends SearchFilter {\n location: string | null;\n coordinates: Coordinates | null;\n googlePlaceId?: string;\n organizationId: number | null;\n organizationName: string | null;\n title: string | null;\n jid: string | null;\n jobFeedId: number | null;\n isHotJob: boolean | null;\n isPublished: boolean | null;\n createdDate: Date | null;\n publishEndDate: Date | null;\n jobHash: string | null;\n createdEndDate: Date | null;\n createdStartDate: Date | null;\n keyword: string | null;\n state: string | null;\n}\n\nexport interface ElasticsearchSearchResponse {\n hits: {\n total: {\n value: number;\n relation: string;\n };\n max_score: number | null;\n hits: Array<{\n _index: string;\n _type: string;\n _id: string;\n _score: number | null;\n _source: T;\n sort: string[];\n }>;\n };\n timed_out: boolean;\n took: number;\n _shards: {\n total: number;\n successful: number;\n failed: number;\n skipped: number;\n };\n}\n","import { HttpClient, HttpErrorResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { catchError, map, Observable, throwError } from 'rxjs';\nimport { ApiResponse } from 'shared/models/api-response';\nimport { ConfigService } from '../infrastructure/config.service';\n\n@Injectable({ providedIn: 'root' })\nexport class PartnerDashboardService {\n private readonly msepPartnerApiUrl =\n this.configService.config.msepPartnerApiBaseUrl;\n\n constructor(private http: HttpClient, private configService: ConfigService) {}\n\n getAlerts(organizationId: number): Observable {\n const url = `${this.msepPartnerApiUrl}/partners/${organizationId}/dashboard/alerts`;\n return this.http.get(url).pipe(\n map(result => result),\n catchError(this.handleError)\n );\n }\n\n getPartnerActivity(organizationId: number): Observable {\n const url = `${this.msepPartnerApiUrl}/partners/${organizationId}/partner-activity`;\n return this.http.get>(url).pipe(\n map(result => result.data),\n catchError(this.handleError)\n );\n }\n\n getPartnerInfo(organizationId: number): Observable {\n const url = `${this.msepPartnerApiUrl}/partners/${organizationId}/partner-info`;\n return this.http.get>(url).pipe(\n map(result => result.data),\n catchError(this.handleError)\n );\n }\n\n getPartnerScoreFromSap(organizationId: number): Observable {\n const url = `${this.msepPartnerApiUrl}/partners/${organizationId}/sap-partner-info`;\n return this.http.get(url).pipe(\n map(result => result),\n catchError(this.handleError)\n );\n }\n\n logAccess(organizationId: number): Observable {\n const url = `${this.msepPartnerApiUrl}/partners/${organizationId}/log-access`;\n return this.http\n .post(url, { organizationId: organizationId })\n .pipe(catchError(this.handleError));\n }\n\n private handleError(error: HttpErrorResponse): Observable {\n return throwError(() => error || 'Server error');\n }\n}\n\nexport interface MandatoryUpdates {\n hasMandatoryUpdates: boolean;\n noCandidateSearchLast30Days: boolean;\n noPostedJobsLast30Days: boolean;\n noSpouseHiresLast90Days: boolean;\n noHiringReportLast30Days: boolean;\n}\n\nexport interface PartnerActivity {\n spousesCurrentlyEmployed: number;\n totalPublishedJobs: number;\n totalSpousesHired: number;\n candidateSearchCount: number;\n completedMonthlyReportCount: number;\n candidateProfilesViewedCount: number;\n}\n\nexport interface PartnerInfo {\n partnerId: number;\n partnerName: string;\n partnerLogoUrl: string;\n partnershipType: number[];\n inductedDate: Date;\n resources: string[];\n score: number | null;\n statusId: number;\n status: string;\n specialistName?: string;\n specialistEmail?: string;\n}\n\nexport interface PartnerDashboardAlerts {\n isReportingWindowOpen: boolean;\n mandatoryUpdates?: MandatoryUpdates;\n}\n\nexport interface ScoreResult {\n score: number | null;\n error: boolean;\n}\n","import {\n HttpClient,\n HttpErrorResponse,\n HttpParams,\n} from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { DateUtilsService } from 'core/utilities/date-utils.service';\nimport { UtilsService } from 'core/utilities/utils.service';\nimport {\n Subject,\n BehaviorSubject,\n catchError,\n Observable,\n throwError,\n} from 'rxjs';\nimport { ApiResponse } from 'shared/models/api-response';\nimport { SearchFilter } from 'shared/models/search-filter';\nimport { ServerBlobResult } from 'shared/models/server-blob-result';\nimport { ConfigService } from '../infrastructure/config.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PartnerReportService {\n reportSubject: Subject;\n private defaultFilter: ReportFilters;\n private readonly msepPartnerApiUrl =\n this.configService.config.msepPartnerApiBaseUrl;\n\n constructor(\n private dateUtils: DateUtilsService,\n private http: HttpClient,\n private configService: ConfigService,\n private utilService: UtilsService\n ) {\n const currentYtd = this.dateUtils.getYtdDetails();\n this.defaultFilter = {\n startDate: currentYtd.startDate.toLocaleDateString(),\n endDate: currentYtd.endDate.toLocaleDateString(),\n skip: 0,\n take: 10,\n };\n this.reportSubject = new BehaviorSubject(this.defaultFilter);\n }\n\n createMonthlyReport(\n data: HiringReporting,\n organizationId: number\n ): Observable {\n const url = `${this.msepPartnerApiUrl}/partners/reports/${organizationId}/create-hiring`;\n const params = this.utilService.removeFalseyProperties(data);\n return this.http.post(url, params).pipe(catchError(this.handleError));\n }\n\n editMonthlyReport(\n data: HiringReporting,\n organizationId: number\n ): Observable {\n const url = `${this.msepPartnerApiUrl}/partners/reports/${organizationId}/edit-hiring`;\n const params = this.utilService.removeFalseyProperties(data);\n return this.http.post(url, params).pipe(catchError(this.handleError));\n }\n\n exportSpousesEmploymentDetails(\n filters: ReportFilters,\n organizationId: number\n ): Observable {\n const url = `${this.msepPartnerApiUrl}/partners/reports/${organizationId}/export-spouse-employment-details`;\n const params = new HttpParams({\n fromObject: this.utilService.removeFalseyProperties(filters),\n });\n return this.http\n .get(url, { params })\n .pipe(catchError(this.handleError));\n }\n\n exportSpousesHiredData(\n filters: ReportFilters,\n organizationId: number\n ): Observable {\n const url = `${this.msepPartnerApiUrl}/partners/reports/${organizationId}/export-spouse-hire`;\n const params = new HttpParams({\n fromObject: this.utilService.removeFalseyProperties(filters),\n });\n return this.http\n .get(url, { params })\n .pipe(catchError(this.handleError));\n }\n\n getSpousesEmploymentDetailsData(\n filters: ReportFilters,\n organizationId: number\n ): Observable> {\n const url = `${this.msepPartnerApiUrl}/partners/reports/${organizationId}/spouse-employment-details`;\n const params = new HttpParams({\n fromObject: this.utilService.removeFalseyProperties(filters),\n });\n return this.http\n .get>(url, { params })\n .pipe(catchError(this.handleError));\n }\n\n getSpousesHiredData(\n filters: ReportFilters,\n organizationId: number\n ): Observable> {\n const url = `${this.msepPartnerApiUrl}/partners/reports/${organizationId}/spouse-hire`;\n const params = new HttpParams({\n fromObject: this.utilService.removeFalseyProperties(filters),\n });\n return this.http\n .get>(url, { params })\n .pipe(catchError(this.handleError));\n }\n\n getReportForPeriod(\n organizationId: string,\n reportPeriod: string\n ): Observable> {\n const params = new HttpParams({\n fromObject: {\n reportPeriod,\n },\n });\n const url = `${this.msepPartnerApiUrl}/partners/reports/${organizationId}/period`;\n return this.http\n .get>(url, { params })\n .pipe(catchError(this.handleError));\n }\n\n hasPartnerReported(\n organizationId: string,\n reportPeriod: string\n ): Observable {\n const url = `${this.msepPartnerApiUrl}/partners/reports/${organizationId}/current-period`;\n const params = new HttpParams({\n fromObject: {\n reportPeriod,\n },\n });\n return this.http\n .get(url, { params })\n .pipe(catchError(this.handleError));\n }\n\n setReportFilters(reportFilters: ReportFilters): void {\n this.reportSubject.next(reportFilters);\n }\n\n private handleError(error: HttpErrorResponse): Observable {\n return throwError(() => error || 'Server error');\n }\n}\n\nexport interface HiringReporting {\n id?: number;\n organizationId: number;\n reportPeriod: Date;\n currentlyEmployed: HiredReportMetricGroup;\n newlyHired: HiredReportMetricGroup;\n promoted: number;\n maintainedThroughMove: number;\n virtually: number;\n fullTime: number;\n partTime: number;\n referrals: number;\n interns: number;\n fellowships: number;\n}\n\nexport interface HiredReportMetricGroup {\n airForce: number;\n army: number;\n coastGuard: number;\n marines: number;\n navy: number;\n spaceForce: number;\n unknown: number;\n}\n\nexport interface SpouseEmploymentData {\n employmentDetail: string;\n spouseCount: number;\n reportingPeriod: Date;\n createdDate: Date;\n}\n\nexport interface SpouseHireData {\n militaryService: string;\n spouseCount: number;\n reportingPeriod: Date;\n createdDate: Date;\n createdBy: string;\n updatedBy: string;\n}\n\nexport interface ReportFilters extends SearchFilter {\n employmentDetailId?: number;\n getTotals?: boolean;\n reportMetricId?: number;\n startDate?: string;\n endDate?: string;\n}\n\nexport interface HasPartnerReported {\n isReportingWindowOpen: boolean;\n hasReportedInPeriod: boolean;\n}\n","import {\n HttpClient,\n HttpErrorResponse,\n HttpHeaders,\n HttpParams,\n} from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { UtilsService } from 'core/utilities/utils.service';\nimport * as moment from 'moment';\nimport { Observable, catchError, throwError, map } from 'rxjs';\nimport { ConfigService } from '../infrastructure/config.service';\nimport { JwtService } from '../infrastructure/jwt.service';\nimport {\n LineChartMetrics,\n LineChartMetricsFilter,\n MapChartMetrics,\n} from '../charts.service';\nimport { ServerBlobResult } from 'shared/models/server-blob-result';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SecoService {\n private savedFilters: CandidateSearchForm | null = null;\n private secoApiUrlRoot = this.configService.config.secoApiBaseUrl;\n private secoApiUrl = `${this.secoApiUrlRoot}/external/msep`;\n\n constructor(\n private configService: ConfigService,\n private readonly jwtService: JwtService,\n private http: HttpClient,\n private utilService: UtilsService\n ) {}\n\n clearSavedFilters(): void {\n this.savedFilters = null;\n }\n\n downloadProfile(id: number): Observable {\n const url = `${this.secoApiUrl}/spouseprofilepdf/${id}`;\n const headers = this.getHeader();\n\n return this.http.get(url, { responseType: 'blob', headers }).pipe(\n map(\n (response: Blob) => new Blob([response], { type: 'application/pdf' })\n ),\n catchError(this.handleError)\n );\n }\n\n downloadSpouseFile(\n endpoint?: string,\n partnerId?: number,\n partnerName?: string\n ): Observable {\n const url = `${this.secoApiUrlRoot}${endpoint}&partnerId=${partnerId}&partnerName=${partnerName}`;\n const headers = this.getHeader();\n\n return this.http.get(url, { responseType: 'blob', headers }).pipe(\n map((response: Blob) => new Blob([response], { type: response.type })),\n catchError(this.handleError)\n );\n }\n\n getCandidateByProfileId(id: number): Observable {\n const url = `${this.secoApiUrl}/candidateDetails`;\n const params = {\n profileId: id,\n };\n\n return this.http\n .post>(url, params, {\n headers: this.getHeader(),\n })\n .pipe(\n map(response => response.data),\n catchError(this.handleError)\n );\n }\n\n getClearance(): Observable {\n // * This is a call in MSEP to SECO that does not follow the config path.\n return this.http\n .get>(\n `${this.secoApiUrlRoot}/lookups/clearance`\n )\n .pipe(\n map(response => response.data),\n catchError(this.handleError)\n );\n }\n\n getClickedApplyCount(\n params: SecoReportSearchParameters\n ): Observable {\n const url = `${this.secoApiUrl}/MsepApplyClick`;\n\n return this.http\n .post(url, params, {\n headers: this.getHeader(),\n })\n .pipe(catchError(this.handleError));\n }\n\n getClickedApplyExport(filters: SecoReportSearchParameters): Observable {\n const url = `${this.secoApiUrl}/MsepApplyClick/export`;\n const params = new HttpParams({\n fromObject: this.utilService.removeFalseyProperties(filters),\n });\n const headers = this.getHeader();\n\n return this.http.get(url, { responseType: 'blob', headers, params }).pipe(\n map((response: Blob) => new Blob([response], { type: 'text/xml' })),\n catchError(this.handleError)\n );\n }\n\n getEducationLevels(): Observable {\n return this.http\n .get(`${this.secoApiUrl}/educationlevelsearch`, {\n headers: this.getHeader(),\n })\n .pipe(catchError(this.handleError));\n }\n\n getJobTypes(): Observable {\n // * This is a call in MSEP to SECO that does not follow the config path.\n return this.http\n .get>(`${this.secoApiUrlRoot}/lookups/jobtypes`)\n .pipe(\n map(response => response.data),\n catchError(this.handleError)\n );\n }\n\n getJobSearchStatuses(): Observable {\n // * This is a call in MSEP to SECO that does not follow the config path.\n return this.http\n .get>(\n `${this.secoApiUrlRoot}/lookups/JobSearchStatus`\n )\n .pipe(\n map(response => response.data),\n catchError(this.handleError)\n );\n }\n\n getSpouseEngagementChartData(\n filters: LineChartMetricsFilter\n ): Observable> {\n const url = `${this.secoApiUrl}/charts/spouse-engagement`;\n const params = new HttpParams({\n fromObject: this.utilService.removeFalseyProperties(filters),\n });\n return this.http\n .get>(url, {\n headers: this.getHeader(),\n params: params,\n })\n .pipe(catchError(this.handleError));\n }\n\n exportSpouseEngagementChartData(\n filters: LineChartMetricsFilter\n ): Observable {\n const url = `${this.secoApiUrl}/charts/spouse-engagement/export`;\n const params = new HttpParams({\n fromObject: this.utilService.removeFalseyProperties(filters),\n });\n const headers = this.getHeader();\n\n return this.http\n .get(url, { headers, params })\n .pipe(catchError(this.handleError));\n }\n\n getProfileViewCount(\n params: SecoReportSearchParameters\n ): Observable {\n const url = `${this.secoApiUrl}/mseppartnerprofileviewcountreport`;\n\n return this.http\n .post(url, params, {\n headers: this.getHeader(),\n })\n .pipe(catchError(this.handleError));\n }\n\n getSpouseSavedData(\n filters: SpouseReportFilters\n ): Observable {\n const url = `${this.secoApiUrl}/partner/spouse-saves`;\n const params = new HttpParams({\n fromObject: {\n partnerId: filters.partnerId,\n skip: filters.skip,\n take: filters.take,\n sortField: filters.sortField ?? '',\n sortDirection: filters.sortDirection ?? '',\n },\n });\n\n return this.http\n .get(url, {\n headers: this.getHeader(),\n params,\n })\n .pipe(catchError(this.handleError));\n }\n\n getSpouseSavedExport(filters: SpouseReportFilters): Observable {\n const url = `${this.secoApiUrl}/partner/spouse-saves/export`;\n const params = new HttpParams({\n fromObject: this.utilService.removeFalseyProperties(filters),\n });\n const headers = this.getHeader();\n\n return this.http.get(url, { responseType: 'blob', headers, params }).pipe(\n map((response: Blob) => new Blob([response], { type: 'text/xml' })),\n catchError(this.handleError)\n );\n }\n\n getSpouseViewedData(\n filters: SpouseReportFilters\n ): Observable {\n const url = `${this.secoApiUrl}/partner/page-view`;\n const params = new HttpParams({\n fromObject: {\n partnerId: filters.partnerId,\n skip: filters.skip,\n take: filters.take,\n sortField: filters.sortField ?? '',\n sortDirection: filters.sortDirection ?? '',\n },\n });\n\n return this.http\n .get(url, {\n headers: this.getHeader(),\n params,\n })\n .pipe(catchError(this.handleError));\n }\n\n getSpouseViewedExport(filters: SpouseReportFilters): Observable {\n const url = `${this.secoApiUrl}/partner/page-view/export`;\n const params = new HttpParams({\n fromObject: this.utilService.removeFalseyProperties(filters),\n });\n const headers = this.getHeader();\n\n return this.http.get(url, { responseType: 'blob', headers, params }).pipe(\n map((response: Blob) => new Blob([response], { type: 'text/xml' })),\n catchError(this.handleError)\n );\n }\n\n getSpouseEnteredBoothData(\n filters: SpouseVhfReportFilters\n ): Observable {\n const url = `${this.secoApiUrl}/vhf/booth-attendance`;\n const params = new HttpParams({\n fromObject: this.utilService.removeFalseyProperties(filters),\n });\n\n return this.http\n .get(url, {\n headers: this.getHeader(),\n params,\n })\n .pipe(catchError(this.handleError));\n }\n\n getSpouseEnteredBoothExport(\n filters: SpouseVhfReportFilters\n ): Observable {\n const url = `${this.secoApiUrl}/vhf/booth-attendance/export`;\n const params = new HttpParams({\n fromObject: this.utilService.removeFalseyProperties(filters),\n });\n const headers = this.getHeader();\n\n return this.http.get(url, { responseType: 'blob', headers, params }).pipe(\n map((response: Blob) => new Blob([response], { type: 'text/xml' })),\n catchError(this.handleError)\n );\n }\n\n getSavedFilters(): CandidateSearchForm | null {\n return this.savedFilters;\n }\n\n getSavedProfileCount(\n params: SecoReportSearchParameters\n ): Observable {\n const url = `${this.secoApiUrl}/getpartnerbyid`;\n\n return this.http\n .get(url, {\n headers: this.getHeader(),\n params: {\n partnerId: params.partnerId.toString(),\n startDate: moment(params.startDate ?? new Date('1970-01-01')).format(\n 'YYYY-MM-DD'\n ),\n endDate: moment(params.endDate ?? Date.now()).format('YYYY-MM-DD'),\n },\n })\n .pipe(catchError(this.handleError));\n }\n\n getSearchData(\n filters: SpouseReportFilters\n ): Observable {\n const url = `${this.secoApiUrl}/spouse/searched-partner`;\n const params = new HttpParams({\n fromObject: {\n partnerId: filters.partnerId,\n skip: filters.skip,\n take: filters.take,\n sortField: filters.sortField ?? '',\n sortDirection: filters.sortDirection ?? '',\n searchedStartDate: filters.searchedStartDate ?? '',\n searchedEndDate: filters.searchedEndDate ?? '',\n },\n });\n\n return this.http\n .get(url, {\n headers: this.getHeader(),\n params,\n })\n .pipe(catchError(this.handleError));\n }\n\n getSpouseMapMetrics(): Observable {\n return this.http\n .get>(\n `${this.secoApiUrl}/registration-map`,\n {\n headers: this.getHeader(),\n }\n )\n .pipe(\n map(response => response.data),\n catchError(this.handleError)\n );\n }\n\n getSpouseSearchExport(filters: SpouseReportFilters): Observable {\n const url = `${this.secoApiUrl}/spouse/searched-partner/export`;\n const params = new HttpParams({\n fromObject: this.utilService.removeFalseyProperties(filters),\n });\n const headers = this.getHeader();\n\n return this.http.get(url, { responseType: 'blob', headers, params }).pipe(\n map((response: Blob) => new Blob([response], { type: 'text/xml' })),\n catchError(this.handleError)\n );\n }\n\n saveFilters(filters: CandidateSearchForm): void {\n this.savedFilters = filters;\n }\n\n searchCandidate(\n candidate: CandidateSearchForm\n ): Observable> {\n candidate.searchByMsepUserId = this.jwtService.getUserId();\n const secoFormattedParams = this.secoFixFilter(candidate);\n const cleanedParams =\n this.utilService.removeFalseyProperties(secoFormattedParams);\n\n return this.http\n .post>(\n `${this.secoApiUrl}/Candidate`,\n cleanedParams,\n {\n headers: this.getHeader(),\n }\n )\n .pipe(catchError(this.handleError));\n }\n\n querySkills(value: string): Observable {\n return this.http\n .get(`${this.secoApiUrl}/skills?value=${value}`, {\n headers: this.getHeader(),\n })\n .pipe(\n map(response => {\n return response;\n }),\n catchError(this.handleError)\n );\n }\n\n private getHeader(): HttpHeaders {\n return new HttpHeaders({\n apiKey: this.jwtService.getValue('secoApiKey')?.toString() ?? '',\n // eslint-disable-next-line @typescript-eslint/naming-convention\n 'content-type': 'application/json',\n // eslint-disable-next-line @typescript-eslint/naming-convention\n 'access-control-Allow-Origin': '*',\n });\n }\n\n private secoFixFilter(candidate: CandidateSearchForm): CandidateSearchParams {\n const candidateParams: CandidateSearchParams = {};\n candidateParams.email = candidate.email;\n candidateParams.firstName = candidate.firstName;\n candidateParams.hasLinkedInUrl = candidate.hasLinkedInUrl;\n candidateParams.jobSearchStatusId = candidate.jobSearchStatusId;\n candidateParams.keyword = candidate.keyword;\n candidateParams.lastName = candidate.lastName;\n candidateParams.latitude = candidate.latitude;\n candidateParams.longitude = candidate.longitude;\n candidateParams.locationDistance = candidate.locationDistance;\n candidateParams.profilePercentage = candidate.profilePercentage;\n candidateParams.searchByMsepPartnerId = candidate.searchByMsepPartnerId;\n candidateParams.searchByMsepUserId = candidate.searchByMsepUserId;\n candidateParams.stateId = candidate.stateId;\n candidateParams.skip = candidate.skip;\n candidateParams.take = candidate.take;\n candidateParams.searchResumes = candidate.searchResumes;\n candidateParams.sortByProperty = candidate.sortByProperty;\n candidateParams.sortByDirection = candidate.sortByDirection;\n\n if (candidate.clearancesId) {\n const arr: number[] = [];\n arr.push(candidate.clearancesId);\n candidateParams.clearanceList = arr;\n }\n if (candidate.educationId) {\n const arr: number[] = [];\n arr.push(candidate.educationId);\n candidateParams.educationIds = arr;\n }\n if (candidate.includeSavedCandidates) {\n candidateParams.profileList = candidate.profileList;\n }\n if (candidate.jobTypeId) {\n const arr: number[] = [];\n arr.push(candidate.jobTypeId);\n candidateParams.jobTypeIds = arr;\n }\n if (candidate.skill) {\n const arr: string[] = [];\n arr.push(candidate.skill);\n candidateParams.skills = arr;\n }\n\n return candidateParams;\n }\n\n private handleError(error: HttpErrorResponse): Observable {\n return throwError(() => error || 'Server error');\n }\n}\n\nexport interface AdditionalLocation {\n city: string;\n state: string;\n}\n\nexport interface Resource {\n id: number;\n description: string;\n}\n\nexport interface PartnerSpouseLineGraphMetrics {\n date: string;\n count: number;\n}\n\nexport interface CandidateSearchParams {\n skills?: string[];\n email?: string;\n jobSearchStatusId?: string;\n firstName?: string;\n lastName?: string;\n educationIds?: number[];\n clearanceList?: number[];\n hasLinkedInUrl?: boolean;\n jobTypeIds?: number[];\n profileList?: number[];\n profilePercentage?: number;\n keyword?: string;\n latitude?: number;\n longitude?: number;\n locationDistance?: number;\n skip?: number;\n take?: number;\n stateId?: string;\n searchByMsepPartnerId?: number;\n searchByMsepUserId?: number;\n searchResumes?: boolean;\n sortByProperty?: string;\n sortByDirection?: string;\n}\n\nexport interface CandidateSearchForm {\n skill?: string;\n email?: string;\n jobSearchStatusId?: string;\n firstName?: string;\n lastName?: string;\n educationId?: number;\n hasLinkedInUrl?: boolean;\n includeSavedCandidates?: boolean;\n keyword?: string;\n googlePlaceId?: string;\n latitude?: number;\n longitude?: number;\n locationDistance?: number;\n stateId?: string;\n skip?: number;\n take?: number;\n searchByMsepPartnerId?: number;\n searchByMsepUserId?: number;\n clearancesId?: number;\n jobTypeId?: number;\n profilePercentage?: number;\n profileList?: number[];\n searchResumes?: boolean;\n jobTitle?: string;\n sortByProperty?: string;\n sortByDirection?: string;\n}\n\nexport interface SecoApiResponse {\n data: T[];\n errors?: string[];\n httpStatusCode?: number;\n total: number;\n}\n\nexport interface SecoApiSingleResponse {\n data: T;\n errors?: string[];\n httpStatusCode?: number;\n total: number;\n}\n\nexport interface Skill {\n description?: string;\n skillDescription?: string;\n}\n\nexport interface Candidate {\n additionalLocations?: AdditionalLocation[];\n address?: string;\n certificationLicenses?: Certification[];\n city?: string;\n education?: Education[];\n email?: string;\n fullName?: string;\n isPrimaryResumeVerified?: boolean;\n linkedInProfileUrl?: string;\n locationZip?: string;\n phone?: string;\n profileId?: number;\n skills?: Skill[];\n state?: string;\n summary?: string;\n workExperience?: WorkExperience[];\n primaryResumeEndpoint?: string;\n primaryCoverLetterEndpoint?: string;\n headline?: string;\n}\n\nexport interface CandidateList {\n careerLevel?: string;\n city?: string;\n email?: string;\n fullName?: string;\n highestEducationLevel?: string;\n id?: number;\n isPrimaryResumeVerified?: boolean;\n jobSearchStatusDescription: string | null;\n jobTypes: Array<{ jobTypeDescription: string }>;\n linkedInProfileUrl?: string;\n profileId?: number;\n phone?: string;\n state?: string;\n zip?: string;\n primaryResumeEndpoint?: string;\n primaryCoverLetterEndpoint?: string;\n profileLastUpdatedDate?: string;\n}\n\nexport interface Certification {\n id?: number;\n certificationDescription?: string;\n}\n\nexport interface ClickApplyData {\n jobTitle?: string;\n email?: string;\n city?: string;\n state?: string;\n jobId?: string;\n spouseName?: string;\n profileId?: number;\n firstName?: string;\n lastName?: string;\n phoneNumber?: string;\n linkedInUrl?: string;\n}\n\nexport interface ClickApplyResponse {\n total?: number;\n data: ClickApplyData[];\n}\n\nexport interface Education {\n degreeLevel?: string;\n fieldOfStudy?: string;\n profileId?: number;\n school?: string;\n}\n\nexport interface SecoLineChartMetrics {\n clickApply: LineChartMetrics[];\n viewProfile: LineChartMetrics[];\n searchProfile: LineChartMetrics[];\n saveProfile: LineChartMetrics[];\n}\n\nexport interface SecoReportSearchParameters {\n partnerId: number;\n startDate?: string;\n endDate?: string;\n latitude?: number;\n longitude?: number;\n stateAbbreviation?: string;\n jobId?: string;\n title?: string;\n skip: number;\n take: number;\n sortField?: string;\n sortDirection?: string;\n}\n\nexport interface SecoReportResponse {\n total?: number;\n data: SecoReportData[];\n}\n\nexport interface SpouseReportFilters {\n partnerId: number;\n skip: number;\n take: number;\n sortField?: string;\n sortDirection?: string;\n searchedStartDate?: string;\n searchedEndDate?: string;\n}\n\nexport interface SpouseVhfReportFilters {\n partnerId: number;\n skip: number;\n take: number;\n sortField?: string;\n sortDirection?: string;\n boothEntryDate?: string;\n email?: string;\n eventId?: number;\n hasLinkedInURL?: boolean;\n hasResume?: boolean;\n primaryPhoneNumber?: string;\n spouseName?: string;\n}\n\nexport interface SecoReportData {\n count?: number;\n date?: Date;\n}\n\nexport interface SecoSpouseReportResponse {\n total?: number;\n data: SecoSpouseReportData[];\n}\n\nexport interface SecoSpouseReportData {\n spouseProfileId?: number;\n spouseFirstName?: string;\n spouseLastName?: string;\n linkedInProfileUrl?: string;\n email?: string;\n phoneNumber?: string;\n primaryResumeEndpoint?: string;\n primaryCoverLetterEndpoint?: string;\n searchedDate?: Date;\n profileId?: number;\n}\n\nexport interface SecoSpouseVhfReportData {\n spouseProfileId?: number;\n spouseName?: string;\n linkedInProfileUrl?: string;\n email?: string;\n primaryPhoneNumber?: string;\n primaryResumeEndpoint?: string;\n primaryCoverLetterEndpoint?: string;\n boothEntryDate?: Date;\n profileId?: number;\n}\n\nexport interface WorkExperience {\n companyName?: string;\n endDate?: Date;\n jobDescription?: string;\n jobTitle?: string;\n profileId?: number;\n startDate?: Date;\n}\n","import {\n HttpClient,\n HttpErrorResponse,\n HttpParams,\n} from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { PartnershipTypeId } from 'core/enums';\nimport { roundDown } from 'core/utilities/mat-utils';\nimport { UtilsService } from 'core/utilities/utils.service';\nimport { Observable, throwError } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\nimport { ApiResponse } from 'shared/models/api-response';\nimport { ConfigService } from './infrastructure/config.service';\nimport { Resource } from './resources.service';\nimport { SearchFilter } from 'shared/models/search-filter';\nimport { ServerBlobResult } from 'shared/models/server-blob-result';\n\n@Injectable({ providedIn: 'root' })\nexport class PartnersService {\n private msepPartnerApiUrl = this.configService.config.msepPartnerApiBaseUrl;\n\n constructor(\n private http: HttpClient,\n private configService: ConfigService,\n private utilService: UtilsService\n ) {}\n\n canViewOurPartner(id: number): Observable {\n const url = `${this.msepPartnerApiUrl}/public/partner/can-view-partner/${id}`;\n return this.http.get(url).pipe(catchError(this.handleError));\n }\n\n downloadPartnerApplication(id: number): Observable {\n const url = `${this.msepPartnerApiUrl}/partner/${id}/download-application`;\n return this.http\n .get(url)\n .pipe(catchError(error => this.handleError(error)));\n }\n\n deletePartner(id: number): Observable {\n const url = `${this.msepPartnerApiUrl}/partner/${id}/delete`;\n return this.http\n .post(url, {})\n .pipe(catchError(error => this.handleError(error)));\n }\n\n getMsep360NewsLetters(\n filters?: Msep360NewsLetterFilter\n ): Observable> {\n const url = `${this.msepPartnerApiUrl}/partner/msep-360-newsletters`;\n const params = filters\n ? new HttpParams({\n fromObject: this.utilService.removeFalseyProperties(filters),\n })\n : undefined;\n return this.http\n .get>(url, { params })\n .pipe(catchError(error => this.handleError(error)));\n }\n\n getPartnerProfile(id: number): Observable {\n const url = `${this.msepPartnerApiUrl}/public/partner/${id}`;\n\n return this.http.get>(url).pipe(\n map(result => result.data),\n catchError(this.handleError)\n );\n }\n\n getPartnersAutoComplete(searchTerm: string): Observable {\n const url = `${this.msepPartnerApiUrl}/public/partner/autocomplete`;\n\n return this.http\n .get>(url, {\n params: { searchTerm: searchTerm },\n })\n .pipe(\n map((result: ApiResponse) => result.data),\n catchError(error => this.handleError(error))\n );\n }\n\n getPartnerResourcesAutoComplete(searchTerm: string): Observable {\n const url = `${this.msepPartnerApiUrl}/public/partner/resources-autocomplete`;\n\n return this.http\n .get>(url, {\n params: { searchTerm: searchTerm },\n })\n .pipe(\n map((result: ApiResponse) => result.data),\n catchError(error => this.handleError(error))\n );\n }\n\n getPartnerResources(\n filters?: PartnerResourceFilter\n ): Observable> {\n const url = `${this.msepPartnerApiUrl}/public/partner/partner-resources`;\n const params = filters\n ? new HttpParams({\n fromObject: this.utilService.removeFalseyProperties(filters),\n })\n : undefined;\n return this.http.get>(url, { params }).pipe(\n map(result => result),\n catchError(error => this.handleError(error))\n );\n }\n\n getPartnerTrainingVideos(\n filters?: PartnerTrainingVideoFilter\n ): Observable> {\n const url = `${this.msepPartnerApiUrl}/partner/partner-training-videos`;\n const params = filters\n ? new HttpParams({\n fromObject: this.utilService.removeFalseyProperties(filters),\n })\n : undefined;\n return this.http\n .get>(url, { params })\n .pipe(catchError(error => this.handleError(error)));\n }\n\n getPrimaryPointOfContact(id: number): Observable {\n const url = `${this.msepPartnerApiUrl}/partner/${id}/primary-point-of-contact`;\n\n return this.http.get>(url).pipe(\n map(result => result.data),\n catchError(this.handleError)\n );\n }\n\n getRandomPartners(take?: number): Observable {\n const params = take ? { take } : undefined;\n return this.http\n .get>(\n `${this.msepPartnerApiUrl}/public/partner/random`,\n {\n params: params,\n }\n )\n .pipe(\n map(response => response.data),\n catchError(error => this.handleError(error))\n );\n }\n\n getRoundedPartnerCount(): Observable {\n return this.search().pipe(map(result => roundDown(result.total, 10)));\n }\n\n getSysopPartnerProfile(id: number): Observable {\n const url = `${this.msepPartnerApiUrl}/partner/${id}`;\n\n return this.http.get>(url).pipe(\n map(result => result.data),\n catchError(this.handleError)\n );\n }\n\n resendApplication(id: number): Observable {\n const url = `${this.msepPartnerApiUrl}/partner/resend-application`;\n return this.http\n .post(url, { partnerId: id })\n .pipe(catchError(error => this.handleError(error)));\n }\n\n search(filters?: PartnerSearch): Observable> {\n const url = `${this.msepPartnerApiUrl}/public/partner/search`;\n const params = filters\n ? new HttpParams({\n fromObject: this.utilService.removeFalseyProperties(filters),\n })\n : undefined;\n return this.http.get>(url, { params }).pipe(\n map(result => result),\n catchError(error => this.handleError(error))\n );\n }\n\n updateLogoUrl(fileName: string, organizationId: number): Observable {\n return this.http\n .post(\n `${this.msepPartnerApiUrl}/partner/${organizationId}/update-logo`,\n { fileName: fileName }\n )\n .pipe(response => {\n return response;\n }, catchError(this.handleError));\n }\n\n updateProfile(sapId: number): Observable {\n return this.http.post(\n `${this.msepPartnerApiUrl}/partner/update-profile`,\n { sapId: sapId }\n );\n }\n\n updateSapId(sapId: number, organizationId: number): Observable {\n return this.http\n .post(\n `${this.msepPartnerApiUrl}/partner/${organizationId}/update-sap-id`,\n { sapId: sapId }\n )\n .pipe(response => {\n return response;\n }, catchError(this.handleError));\n }\n\n private handleError(err: HttpErrorResponse): Observable {\n return throwError(() => err || 'Server error');\n }\n}\n\nexport interface PartnerData {\n approvedDate: Date;\n approveDate: Date;\n countriesWithFacilities: number[];\n facebookUrl: string;\n geographicReaches: Resource[];\n headquartersAddress1: string;\n headquartersAddress2: string;\n headquartersCity: string;\n headquartersCountryId: number;\n headquartersStateId: string;\n headquartersZip: string;\n id: number;\n instagramUrl: string;\n isInternational: boolean;\n isTeleworkAvailable: boolean;\n offersPermanentRemotePositions: boolean;\n offersChildcare: boolean;\n lastUpdatedDate: Date;\n linkedinUrl: string;\n logoUrl: string;\n numberOfActiveHotJobs: number;\n numberOfActiveJobs: number;\n numberOfEmployees: number;\n numberOfFacilities: number;\n numberOfTeleworkJobs: number;\n organizationDescription: string;\n organizationName: string;\n primaryIndustrySector: string;\n primaryIndustrySectorId: number;\n secondaryIndustrySectors: Resource[];\n twitterUrl: string;\n website: string;\n}\n\nexport interface PartnerLogo {\n id?: number;\n logoUrl?: string;\n organizationName?: string;\n}\n\nexport interface PartnerProfile {\n id: number;\n isFourPlusOnePartner: boolean;\n isTeleworkAvailable: boolean;\n offersPermanentRemotePositions: boolean;\n headquartersAddress1: string;\n headquartersAddress2: string;\n headquartersCity: string;\n headquartersPhone: string;\n headquartersState: string;\n headquartersZip: string;\n website: string;\n partnerVideoUrl: string;\n facebookUrl: string;\n instagramUrl: string;\n twitterUrl: string;\n linkedInUrl: string;\n logoUrl: string;\n name: string;\n description: string;\n numberOfEmployees: number;\n countriesWithFacilities: Resource[];\n primaryIndustry: string;\n sapStakeholderId: number;\n secondaryIndustries: Resource[];\n geographicReach: Resource[];\n partnershipTypes: PartnershipType[];\n approvedDate: Date;\n numberOfActiveJobs: number;\n benefits: Resource[];\n resources: Resource[];\n}\n\nexport interface SysopPartnerProfile extends PartnerProfile {\n lastUpdatedDate: Date;\n lastUpdatedName: string;\n}\n\nexport interface Msep360NewsLetters {\n id?: number;\n title?: string;\n url?: string;\n}\n\nexport interface Msep360NewsLetterFilter extends SearchFilter {\n date?: string;\n}\n\nexport interface PartnershipType extends Resource {\n id: PartnershipTypeId;\n}\n\nexport interface PartnerResourceFilter extends SearchFilter {\n id?: number;\n resourceCategoryId?: number;\n}\n\nexport interface PartnerSearch {\n name?: string;\n industrySectorId?: number;\n hasTelework?: boolean;\n stateId?: string;\n internationalFacilities: boolean;\n countryId?: number;\n skip?: number;\n take?: number;\n}\n\nexport interface PartnerResource {\n id?: number;\n title?: string;\n url?: string;\n icon?: string;\n authenticated?: boolean;\n}\n\nexport interface PartnerTrainingVideo {\n id: number;\n title: string;\n url: string;\n date: string;\n}\n\nexport interface PartnerTrainingVideoFilter extends SearchFilter {\n title?: string;\n}\n\nexport interface PointOfContact {\n name: string;\n email: string;\n phone: string;\n}\n","import {\n HttpClient,\n HttpErrorResponse,\n HttpParams,\n} from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { DateUtilsService } from 'core/utilities/date-utils.service';\nimport { UtilsService } from 'core/utilities/utils.service';\nimport {\n BehaviorSubject,\n catchError,\n Observable,\n Subject,\n throwError,\n} from 'rxjs';\nimport { ApiResponse } from 'shared/models/api-response';\nimport { SearchFilter } from 'shared/models/search-filter';\nimport { ServerBlobResult } from 'shared/models/server-blob-result';\nimport { ConfigService } from './infrastructure/config.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ReportService {\n reportSubject: Subject;\n private defaultFilter: ReportFilters;\n private readonly msepPartnerApiUrl =\n this.configService.config.msepPartnerApiBaseUrl;\n\n constructor(\n private dateUtils: DateUtilsService,\n private http: HttpClient,\n private configService: ConfigService,\n private utilService: UtilsService\n ) {\n const currentFy = this.dateUtils.getFyDetails();\n this.defaultFilter = {\n startDate: currentFy.startDate.toLocaleDateString(),\n endDate: currentFy.endDate.toLocaleDateString(),\n skip: 0,\n take: 10,\n };\n this.reportSubject = new BehaviorSubject(this.defaultFilter);\n }\n\n exportPartnerEngagement(filters: {\n startDate: string;\n endDate: string;\n organizationId: number;\n specialistId: number;\n }): Observable {\n const url = `${this.msepPartnerApiUrl}/admin/reporting/partner-engagement-export`;\n const params = new HttpParams({ fromObject: filters });\n return this.http\n .get(url, { params })\n .pipe(catchError(error => this.handleError(error)));\n }\n\n exportPartnerCandidateView(filters: {\n startDate: string;\n endDate: string;\n organizationId: number;\n }): Observable {\n const url = `${this.msepPartnerApiUrl}/admin/reporting/partner-candidate-view-export`;\n const params = new HttpParams({ fromObject: filters });\n return this.http\n .get(url, { params })\n .pipe(catchError(error => this.handleError(error)));\n }\n\n exportPartnerJobs(filters: {\n partnerIds: number[];\n specialistId: number;\n }): Observable {\n const url = `${this.msepPartnerApiUrl}/admin/reporting/partner-jobs-export`;\n const params = new HttpParams({ fromObject: filters });\n return this.http\n .get(url, { params })\n .pipe(catchError(error => this.handleError(error)));\n }\n\n exportPartnersAndSpousesHired(): Observable {\n const url = `${this.msepPartnerApiUrl}/admin/reporting/partners-and-spouses-hired-export`;\n return this.http\n .get(url)\n .pipe(catchError(error => this.handleError(error)));\n }\n\n exportTeleworkRemote(filters: {\n organizationId: number;\n specialistId: number;\n }): Observable {\n const url = `${this.msepPartnerApiUrl}/admin/reporting/telework-and-remote-export`;\n const params = new HttpParams({ fromObject: filters });\n return this.http\n .get(url, { params })\n .pipe(catchError(error => this.handleError(error)));\n }\n\n exportCandidateStatusReport(filters: {\n organizationId: number;\n currentStatus: boolean;\n }): Observable {\n const url = `${this.msepPartnerApiUrl}/admin/reporting/candidate-status-export`;\n const params = new HttpParams({ fromObject: filters });\n return this.http\n .get(url, { params })\n .pipe(catchError(error => this.handleError(error)));\n }\n\n exportSpecialistSpouseEngagement(filters: {\n startDate: string;\n endDate: string;\n organizationId: number;\n employmentDetailId: number;\n getTotals: boolean;\n specialistId: number;\n }): Observable {\n const url = `${this.msepPartnerApiUrl}/admin/reporting/specialist-spouse-engagement-export`;\n const params = new HttpParams({ fromObject: filters });\n return this.http\n .get(url, { params })\n .pipe(catchError(error => this.handleError(error)));\n }\n\n exportSpecialistHotJobs(filters: {\n organizationId: number;\n specialistId: number;\n }): Observable {\n const url = `${this.msepPartnerApiUrl}/admin/reporting/specialist-hot-jobs-export`;\n const params = new HttpParams({ fromObject: filters });\n return this.http\n .get(url, { params })\n .pipe(catchError(error => this.handleError(error)));\n }\n\n exportSpecialistSpousesHired(filters: {\n startDate: string;\n endDate: string;\n organizationId: number;\n reportMetricId: number;\n getTotals: boolean;\n specialistId: number;\n }): Observable {\n const url = `${this.msepPartnerApiUrl}/admin/reporting/specialist-spouses-hired-export`;\n const params = new HttpParams({ fromObject: filters });\n return this.http\n .get(url, { params })\n .pipe(catchError(error => this.handleError(error)));\n }\n\n getPartnerEngagementReport(\n filters: ReportFilters\n ): Observable> {\n const url = `${this.msepPartnerApiUrl}/admin/reporting/partner-engagement`;\n const params = new HttpParams({\n fromObject: this.utilService.removeFalseyProperties(filters),\n });\n return this.http\n .get>(url, { params })\n .pipe(catchError(this.handleError));\n }\n\n getPartnerCandidateViewReport(\n filters: ReportFilters\n ): Observable> {\n const url = `${this.msepPartnerApiUrl}/admin/reporting/partner-candidate-view`;\n const params = new HttpParams({\n fromObject: this.utilService.removeFalseyProperties(filters),\n });\n return this.http\n .get>(url, { params })\n .pipe(catchError(this.handleError));\n }\n\n getPartnersAndSpousesHired(\n filters: ReportFilters\n ): Observable> {\n const url = `${this.msepPartnerApiUrl}/admin/reporting/partners-and-spouses-hired`;\n const params = new HttpParams({\n fromObject: this.utilService.removeFalseyProperties(filters),\n });\n return this.http\n .get>(url, { params })\n .pipe(catchError(error => this.handleError(error)));\n }\n\n getTeleworkRemoteReport(\n filters: ReportFilters\n ): Observable> {\n const url = `${this.msepPartnerApiUrl}/admin/reporting/telework-and-remote`;\n const params = new HttpParams({\n fromObject: this.utilService.removeFalseyProperties(filters),\n });\n return this.http\n .get>(url, { params })\n .pipe(catchError(this.handleError));\n }\n\n getCandidateStatusReport(\n filters: ReportFilters\n ): Observable> {\n const url = `${this.msepPartnerApiUrl}/admin/reporting/candidate-status`;\n const params = new HttpParams({\n fromObject: this.utilService.removeFalseyProperties(filters),\n });\n return this.http\n .get>(url, { params })\n .pipe(catchError(this.handleError));\n }\n\n getSpecialistHotJobsReport(\n filters: ReportFilters\n ): Observable> {\n const url = `${this.msepPartnerApiUrl}/admin/reporting/specialist-hot-jobs`;\n const params = new HttpParams({\n fromObject: this.utilService.removeFalseyProperties(filters),\n });\n return this.http\n .get>(url, { params })\n .pipe(catchError(this.handleError));\n }\n\n getSpecialistSpouseEngagementReport(\n filters: ReportFilters\n ): Observable> {\n const url = `${this.msepPartnerApiUrl}/admin/reporting/specialist-spouse-engagement`;\n const params = new HttpParams({\n fromObject: this.utilService.removeFalseyProperties(filters),\n });\n return this.http\n .get>(url, { params })\n .pipe(catchError(this.handleError));\n }\n\n getSpecialistSpousesHiredReport(\n filters: ReportFilters\n ): Observable> {\n const url = `${this.msepPartnerApiUrl}/admin/reporting/specialist-spouses-hired`;\n const params = new HttpParams({\n fromObject: this.utilService.removeFalseyProperties(filters),\n });\n return this.http\n .get>(url, { params })\n .pipe(catchError(this.handleError));\n }\n\n setReportFilters(reportFilters: ReportFilters): void {\n this.reportSubject.next(reportFilters);\n }\n\n partnerJobs(filters: ReportFilters): Observable> {\n const url = `${this.msepPartnerApiUrl}/admin/reporting/partner-jobs`;\n const params = new HttpParams({\n fromObject: this.utilService.removeFalseyProperties(filters),\n });\n return this.http\n .get>(url, { params })\n .pipe(catchError(error => this.handleError(error)));\n }\n\n private handleError(error: HttpErrorResponse): Observable {\n return throwError(() => error || 'Server error');\n }\n}\n\nexport interface PartnerEngagementReport {\n id: number;\n firstName: string;\n lastName: string;\n email: string;\n accountStatus: string;\n organizationName: string;\n lastLoginDate: string;\n userRoles: string[];\n totalSuccessfulLogins: number;\n totalCandidateSearches: number;\n}\n\nexport interface PartnerCandidateView {\n organizationId: number;\n organizationName: string;\n profileId: number;\n dateViewed: Date;\n}\n\nexport interface PartnerJobs {\n partnerId: string;\n partnerName: string;\n hasFeed: boolean;\n isFeedEnabled: boolean;\n lastLogDate: Date;\n publishedJobCount: number;\n manualJobCount: number;\n totalJobCount: number;\n importedJobCount: number;\n lastFeedStatus: string;\n feedHasError: boolean;\n}\n\nexport interface PartnersAndSpousesHired {\n date: Date;\n totalPartners: number;\n partnersAdded: number;\n spousesHired: number;\n}\n\nexport interface ReportFilters extends SearchFilter {\n startDate?: string;\n endDate?: string;\n employmentDetailId?: number;\n organizationId?: number;\n reportMetricId?: number;\n specialistId?: number;\n getTotals?: boolean;\n currentStatus?: boolean;\n}\n\nexport interface TeleworkRemote {\n partnerName: string;\n partnerSecoUrl: string;\n offersRemote?: boolean;\n offersTelework?: boolean;\n internationalFacilities?: boolean;\n}\n\nexport interface CandidateStatus {\n partnerId: number;\n partnerName: string;\n candidateName: number;\n status: string;\n hireDate: string;\n lastUpdatedDate: string;\n}\n\nexport interface SpecialistHotJobs {\n organizationName: string;\n jobTitle: string;\n publishStartDate: Date;\n isRemote: boolean;\n isTelework: boolean;\n}\n\nexport interface SpecialistSpouseEngagement {\n organizationName: string;\n employmentDetail: string;\n spouseCount?: number;\n reportingPeriod: Date;\n createdDate: Date;\n}\n\nexport interface SpecialistSpousesHired {\n organizationName: string;\n militaryService: string;\n spousesHired?: number;\n reportingPeriod: Date;\n createdDate: Date;\n createdBy: string;\n updatedBy: string;\n}\n","import { HttpClient, HttpErrorResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { roundDown } from 'core/utilities/mat-utils';\nimport { UtilsService } from 'core/utilities/utils.service';\nimport { Observable, of, throwError } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\nimport { ApiResponse } from 'shared/models/api-response';\nimport { ConfigService } from './infrastructure/config.service';\n\n@Injectable({ providedIn: 'root' })\nexport class ResourcesService {\n private partnerApiBaseUrl = this.configService.config.msepPartnerApiBaseUrl;\n\n constructor(\n private http: HttpClient,\n private configService: ConfigService,\n private utilService: UtilsService\n ) {}\n\n getAccountStatuses(): Observable {\n return this.http\n .get>(\n `${this.partnerApiBaseUrl}/resources/account-statuses`\n )\n .pipe(\n map(result => result.data),\n catchError(this.handleError)\n );\n }\n\n getAllSpecialists(): Observable {\n return this.http\n .get>(\n `${this.partnerApiBaseUrl}/resources/all-specialists`\n )\n .pipe(\n map(result => result.data),\n catchError(error => this.handleError(error))\n );\n }\n\n getApplicationStatuses(): Observable {\n return this.http\n .get>(\n `${this.partnerApiBaseUrl}/resources/application-statuses`\n )\n .pipe(\n map(result => result.data),\n catchError(this.handleError)\n );\n }\n\n getAuthenticationLogReasons(): Observable {\n return this.http\n .get>(\n `${this.partnerApiBaseUrl}/resources/authentication-log-reasons`\n )\n .pipe(\n map(result => result.data),\n catchError(this.handleError)\n );\n }\n\n getCandidateStatuses(): Observable {\n return this.http\n .get>(\n `${this.partnerApiBaseUrl}/resources/candidate-statuses`\n )\n .pipe(\n map(result => result.data),\n catchError(this.handleError)\n );\n }\n\n getCandidateTags(\n searchTerm: string,\n organizationId: number\n ): Observable {\n const filters: CandidateTagFilter = {\n searchTerm: searchTerm,\n organizationId: organizationId,\n };\n return this.http\n .get>(\n `${this.partnerApiBaseUrl}/resources/candidate-tags`,\n {\n params: this.utilService.removeFalseyProperties(filters),\n }\n )\n .pipe(\n map(result => result.data),\n catchError(this.handleError)\n );\n }\n\n getCareerLevels(): Observable {\n return this.http\n .get>(\n `${this.partnerApiBaseUrl}/resources/career-levels`\n )\n .pipe(\n map(result => result.data),\n catchError(this.handleError)\n );\n }\n\n getCategories(): Observable {\n return this.http\n .get>(\n `${this.partnerApiBaseUrl}/resources/content-categories`\n )\n .pipe(\n map(result => result.data),\n catchError(this.handleError)\n );\n }\n\n getChallengeQuestions(): Observable {\n return this.http\n .get>(\n `${this.partnerApiBaseUrl}/resources/challenge-questions`\n )\n .pipe(\n map(result => result.data),\n catchError(this.handleError)\n );\n }\n\n getCompensationTypes(): Observable {\n return this.http\n .get>(\n `${this.partnerApiBaseUrl}/resources/compensation-types`\n )\n .pipe(\n map(result => result.data),\n catchError(this.handleError)\n );\n }\n\n getContactUsAssistanceTypes(\n isRegistered?: boolean\n ): Observable {\n return this.http\n .get>(\n `${this.partnerApiBaseUrl}/resources/contact-us-assistance-types`\n )\n .pipe(\n map(result => {\n return isRegistered !== undefined\n ? result.data.filter(type => type.forRegistered === isRegistered)\n : result.data;\n }),\n catchError(this.handleError)\n );\n }\n\n getContactUsContactWindows(): Observable {\n return this.http\n .get>(\n `${this.partnerApiBaseUrl}/resources/contact-us-contact-windows`\n )\n .pipe(\n map(result => result.data),\n catchError(this.handleError)\n );\n }\n\n getContactUsPreferredCommunications(): Observable {\n return this.http\n .get>(\n `${this.partnerApiBaseUrl}/resources/contact-us-preferred-communications`\n )\n .pipe(\n map(result => result.data),\n catchError(this.handleError)\n );\n }\n\n getContactUsTicketStatuses(): Observable {\n return this.http\n .get>(\n `${this.partnerApiBaseUrl}/resources/contact-us-ticket-statuses`\n )\n .pipe(\n map(result => result.data),\n catchError(this.handleError)\n );\n }\n\n getCountry(): Observable {\n return this.http\n .get>(\n `${this.partnerApiBaseUrl}/resources/countries`\n )\n .pipe(\n map(result => result.data),\n catchError(this.handleError)\n );\n }\n\n getEducationLevels(): Observable {\n return this.http\n .get>(\n `${this.partnerApiBaseUrl}/resources/education-levels`\n )\n .pipe(\n map(result => result.data),\n catchError(this.handleError)\n );\n }\n\n getEmploymentDetailTypes(): Observable {\n return this.http\n .get>(\n `${this.partnerApiBaseUrl}/resources/employment-detail-types`\n )\n .pipe(\n map(result => result.data),\n catchError(this.handleError)\n );\n }\n\n getEventLogMinimumLevels(): Observable {\n return this.http\n .get>(\n `${this.partnerApiBaseUrl}/resources/event-log-minimum-levels`\n )\n .pipe(\n map(result => result.data),\n catchError(this.handleError)\n );\n }\n\n getEventLogTitles(): Observable {\n return this.http\n .get>(\n `${this.partnerApiBaseUrl}/resources/event-log-titles`\n )\n .pipe(\n map(result => result.data),\n catchError(this.handleError)\n );\n }\n\n getFaqCategories(): Observable {\n return this.http\n .get>(\n `${this.partnerApiBaseUrl}/resources/faq-categories`\n )\n .pipe(\n map(result => result.data),\n catchError(this.handleError)\n );\n }\n\n getFaqs(): Observable {\n return this.http\n .get>(`${this.partnerApiBaseUrl}/resources/faqs`)\n .pipe(\n map(result => result.data),\n catchError(this.handleError)\n );\n }\n\n getFiscalYears(): Observable {\n return this.http\n .get>(\n `${this.partnerApiBaseUrl}/resources/fiscal-years`\n )\n .pipe(\n map(result => result.data),\n catchError(this.handleError)\n );\n }\n\n getIndustrySectors(): Observable {\n return this.http\n .get>(\n `${this.partnerApiBaseUrl}/resources/industry-sectors`\n )\n .pipe(\n map((result: ApiResponse) => result.data),\n catchError(this.handleError)\n );\n }\n\n getJobBenefits(): Observable {\n return this.http\n .get>(\n `${this.partnerApiBaseUrl}/resources/job-benefits`\n )\n .pipe(\n map(result => result.data),\n catchError(this.handleError)\n );\n }\n\n getJobCommunicationMethods(): Observable {\n return this.http\n .get>(\n `${this.partnerApiBaseUrl}/resources/job-communication-methods`\n )\n .pipe(\n map(result => result.data),\n catchError(this.handleError)\n );\n }\n\n getJobFeedImportStatus(): Observable {\n return of([\n { value: 'Failed', description: 'Failed' },\n { value: 'Succeeded', description: 'Succeeded' },\n { value: 'Running', description: 'Running' },\n { value: 'Unknown', description: 'Unknown' },\n ]);\n }\n\n getJobFeedImportSteps(): Observable {\n return of([\n { value: 'Sourcing', description: 'Sourcing' },\n { value: 'Extracting', description: 'Extracting' },\n { value: 'Transforming', description: 'Transforming' },\n { value: 'Done', description: 'Done' },\n ]);\n }\n\n getJobFeedParameters(): Observable {\n return this.http\n .get>(\n `${this.partnerApiBaseUrl}/resources/job-feed-parameters`\n )\n .pipe(\n map(result => result.data),\n catchError(this.handleError)\n );\n }\n\n getJobFeedTypes(): Observable {\n return this.http\n .get>(\n `${this.partnerApiBaseUrl}/resources/job-feed-types`\n )\n .pipe(\n map(result => result.data),\n catchError(this.handleError)\n );\n }\n\n getJobFeedSourceUrlTypes(): Observable {\n return this.http\n .get>(\n `${this.partnerApiBaseUrl}/resources/job-feed-source-url-types`\n )\n .pipe(\n map(result => result.data),\n catchError(this.handleError)\n );\n }\n\n getJobTypes(): Observable {\n return this.http\n .get>(\n `${this.partnerApiBaseUrl}/resources/job-types`\n )\n .pipe(\n map(result => result.data),\n catchError(this.handleError)\n );\n }\n\n getScheduledTasks(): Observable {\n return this.http\n .get>(\n `${this.partnerApiBaseUrl}/resources/scheduled-tasks`\n )\n .pipe(\n map(result => result.data),\n catchError(this.handleError)\n );\n }\n\n getSpouseHiredReportMetricGroup(): Observable {\n return this.http\n .get>(\n `${this.partnerApiBaseUrl}/resources/spouse-hired-metric-group`\n )\n .pipe(\n map(result => result.data),\n catchError(this.handleError)\n );\n }\n\n getPartnershipTypes(): Observable {\n return this.http\n .get>(\n `${this.partnerApiBaseUrl}/resources/partnership-types`\n )\n .pipe(\n map((result: ApiResponse) => result.data),\n catchError(this.handleError)\n );\n }\n\n getPermissions(roleId?: number): Observable {\n let url = `${this.partnerApiBaseUrl}/resources/permissions`;\n if (roleId) {\n url += `?roleId=${roleId}`;\n }\n return this.http.get>(url).pipe(\n map(result => result.data),\n catchError(this.handleError)\n );\n }\n\n getResourceCategories(): Observable {\n return this.http\n .get>(\n `${this.partnerApiBaseUrl}/resources/resource-categories`\n )\n .pipe(\n map(result => result.data),\n catchError(this.handleError)\n );\n }\n\n getRoles(): Observable {\n return this.http\n .get>(`${this.partnerApiBaseUrl}/resources/roles`)\n .pipe(\n map(result => result.data),\n catchError(this.handleError)\n );\n }\n\n getRoundedTotalSpousesHired(): Observable {\n return this.http\n .get>(\n `${this.partnerApiBaseUrl}/resources/total-spouses-hired`\n )\n .pipe(\n map(result => roundDown(result.data.count, 1000)),\n catchError(this.handleError)\n );\n }\n\n getStates(): Observable {\n return this.http\n .get>(\n `${this.partnerApiBaseUrl}/resources/states`\n )\n .pipe(\n map(result =>\n result.data.map(x => ({\n value: x.id,\n description: x.description,\n }))\n ),\n catchError(this.handleError)\n );\n }\n\n getUserManualSize(): Observable {\n return this.http\n .get<{ data: number }>(\n `${this.partnerApiBaseUrl}/resources/user-manual-size`\n )\n .pipe(\n map(response => response.data),\n catchError(this.handleError)\n );\n }\n\n getUserManual(blockIndex: number): Observable {\n const params = { blockIndex };\n return this.http\n .get(`${this.partnerApiBaseUrl}/resources/user-manual`, {\n params,\n responseType: 'blob',\n })\n .pipe(catchError(this.handleError));\n }\n\n getYearsOfExperience(): Observable {\n return this.http\n .get>(\n `${this.partnerApiBaseUrl}/resources/years-of-experience`\n )\n .pipe(\n map(result => result.data),\n catchError(this.handleError)\n );\n }\n\n getYesNoListBoolean(): Observable {\n return of([\n { value: true, description: 'Yes' },\n { value: false, description: 'No' },\n ]);\n }\n\n getYesNoList(): Observable {\n return of([\n { value: 'true', description: 'Yes' },\n { value: 'false', description: 'No' },\n ]);\n }\n\n private handleError(err: HttpErrorResponse): Observable {\n return throwError(() => err || 'Server error');\n }\n}\n\nexport interface CandidateTagFilter {\n searchTerm: string;\n organizationId: number;\n}\n\nexport interface ContactUsAssistanceType extends Resource {\n forRegistered: boolean;\n}\n\nexport interface EventLogMinimumLevel extends Resource {\n level: string;\n isActive: boolean;\n}\n\nexport interface Faq {\n id: number;\n question: string;\n answer: string;\n category: string;\n}\n\nexport interface Resource {\n id: number;\n description: string;\n}\n\nexport interface StateResourceValue {\n id: string;\n description: string;\n}\n\nexport interface StringResourceValue {\n value: string;\n description: string;\n}\n\nexport interface BooleanResourceValue {\n value: boolean;\n description: string;\n}\n","import { Injectable } from '@angular/core';\nimport moment from 'moment';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DateUtilsService {\n convertStartAndEndDateFilters(filter: {\n startDate?: unknown;\n endDate?: unknown;\n }): void {\n const { startDate, endDate } = filter;\n if (startDate && this.isDateCompatible(startDate)) {\n filter.startDate = new Date(startDate).toLocaleDateString();\n }\n if (endDate && this.isDateCompatible(endDate)) {\n filter.endDate = new Date(endDate).toLocaleDateString();\n }\n }\n\n getCurrentFiscalYear(): number {\n const currentDate = new Date();\n return currentDate.getMonth() >= 9\n ? currentDate.getUTCFullYear() + 1\n : currentDate.getUTCFullYear();\n }\n\n getCurrentYear(): number {\n return new Date().getUTCFullYear();\n }\n\n getDateWithNoTime(date: Date): string {\n // returns date as YYYY-MM-DDT00:00:00Z\n return moment(date).utcOffset(0, true).format();\n }\n\n getDateStringWithoutUtcDesignator(\n date: string | undefined\n ): string | undefined {\n if (date === undefined || date === null) {\n return undefined;\n }\n /* \n Our server dates are zero UTC offset (marked with Z). If the offset is present\n in the date string, Angular will convert the time into the local timezone.\n This method removes the designator to force the date to be displayed as\n the server time.\n */\n const zoneDesignatorZeroUtcOffset = 'Z';\n return date.replace(zoneDesignatorZeroUtcOffset, '');\n }\n\n getDayOfMonth(): number {\n const currentDate = new Date();\n return currentDate.getUTCDate();\n }\n\n getFyDetails(\n fiscalYear: number = this.getCurrentFiscalYear()\n ): CurrentFyDetails {\n // months are 0 indexed in javascript\n const startDate = new Date();\n startDate.setMonth(9);\n startDate.setDate(1);\n startDate.setUTCFullYear(fiscalYear - 1);\n\n const endDate = new Date();\n endDate.setMonth(8);\n endDate.setDate(30);\n endDate.setUTCFullYear(fiscalYear);\n\n return {\n fiscalYear,\n startDate,\n endDate,\n };\n }\n\n getYtdDetails(\n currentYear: number = this.getCurrentYear()\n ): CurrentYtdDetails {\n // months are 0 indexed in javascript\n const startDate = new Date();\n startDate.setMonth(0);\n startDate.setDate(1);\n startDate.setUTCFullYear(currentYear);\n\n const endDate = new Date();\n endDate.setUTCFullYear(currentYear);\n\n // Earliest Reported date\n const minDate = new Date(2013, 0);\n // Max reported search date is end of the Current Year\n const maxDate = new Date(currentYear, 11, 31);\n\n return {\n currentYear,\n startDate,\n endDate,\n minDate,\n maxDate,\n };\n }\n\n getPreviousMonthName(): string {\n const currentDate = new Date();\n currentDate.setMonth(currentDate.getUTCMonth() - 1);\n return currentDate.toLocaleString('default', { month: 'long' });\n }\n\n getPreviousMonthYear(): string {\n const currentDate = new Date();\n currentDate.setMonth(currentDate.getUTCMonth() - 1);\n return currentDate.toLocaleString('default', { year: 'numeric' });\n }\n\n private isDateCompatible(input: unknown): input is DateCompatible {\n return (\n typeof input === 'string' ||\n typeof input === 'number' ||\n input instanceof Date\n );\n }\n}\n\ntype DateCompatible = string | number | Date;\n\nexport interface CurrentFyDetails {\n fiscalYear: number;\n startDate: Date;\n endDate: Date;\n}\n\nexport interface CurrentYtdDetails {\n currentYear: number;\n startDate: Date;\n endDate: Date;\n minDate: Date;\n maxDate: Date;\n}\n","export const roundDown = (target: number, interval: number): number => {\n return Math.floor(target / interval) * interval;\n};\n","import { Injectable } from '@angular/core';\n\n@Injectable({ providedIn: 'root' })\nexport class UtilsService {\n addNDaysToDate(n: number, date: Date | undefined): Date | undefined {\n if (!date) return date;\n const newDate = new Date(date);\n newDate.setDate(newDate.getDate() + n);\n return newDate;\n }\n\n buildEncodedS3Url(s3BucketUrl: string, fileName: string): string {\n return (\n s3BucketUrl + '/' + encodeURIComponent(fileName).replace(/%20/g, '+')\n );\n }\n\n convertToKebabCase(term: string): string {\n term = term\n .replace(/[^a-zA-Z ]/g, '')\n .replace(/\\s+/g, '-')\n .toLowerCase();\n return term;\n }\n\n getDateAtMidnight(date: Date | null): string | null {\n if (!date) {\n return null;\n }\n\n date.setUTCHours(0, 0, 0, 0);\n\n return date.toISOString();\n }\n\n getDateAtLatestTimestamp(date: Date | null): string | null {\n if (!date) {\n return null;\n }\n\n date.setUTCHours(23, 59, 59, 999);\n\n return date.toISOString();\n }\n\n getStringListFromArray(input: string[]): string {\n return input.join(', ');\n }\n\n isInt32(input: number): boolean {\n return input <= Math.pow(2, 31) - 1;\n }\n\n removeFalseyProperties(object: O): Partial {\n const falseyValues = new Set([undefined, null, '']);\n const output = >{};\n\n Object.keys(object)\n .filter((key) => !falseyValues.has(object[key]))\n .forEach((key) => (output[key] = object[key]));\n\n return output;\n }\n}\n","import { Component, OnInit, isDevMode } from '@angular/core';\nimport { AuthenticationService } from 'core/services/authentication.service';\n\n@Component({\n selector: 'msep-app-layout',\n templateUrl: './app-layout.component.html',\n})\nexport class AppLayoutComponent implements OnInit {\n private dapId = '_fed_an_ua_tag';\n constructor(private authenticationService: AuthenticationService) {}\n\n ngOnInit(): void {\n if (isDevMode()) {\n return;\n }\n\n const dapScript = document.getElementById(this.dapId);\n\n if (this.authenticationService.isAuthenticated()) {\n dapScript?.remove();\n } else if (!dapScript) {\n const newDapScript = document.createElement('script');\n newDapScript.id = this.dapId;\n newDapScript.type = 'text/javascript';\n newDapScript.src =\n 'https://dap.digitalgov.gov/Universal-Federated-Analytics-Min.js?agency=DoD';\n newDapScript.async = true;\n document.head.appendChild(newDapScript);\n }\n }\n}\n","\n \n
\n \n
\n
\n \n \n
\n
\n \n
\n
\n \n
\n
\n","import { Component, OnInit } from '@angular/core';\nimport { ConfigService } from 'core/services/infrastructure/config.service';\n\n@Component({\n selector: 'msep-footer',\n templateUrl: './footer.component.html',\n styleUrls: ['./footer.component.scss'],\n})\nexport class FooterComponent implements OnInit {\n version = this.configService.config.version;\n\n constructor(private configService: ConfigService) {}\n\n ngOnInit(): void {\n /* timeout needed to allow HTTP request to finish. there is not currently\n a lifecycle hook in mat-icon to handle the loaded state, so relying on\n timeout for now.\n */\n setTimeout(() => {\n this.fixDuplicateSvgIds();\n }, 1000);\n }\n\n // update MOS and SECO facebook/twitter svgs. without this update, we'll\n // have duplicate IDs on the page\n private fixDuplicateSvgIds(): void {\n this.updateSvgElement('#mosFacebook svg', 'mosFacebookSvg');\n this.updateSvgElement('#mosTwitter svg', 'mosTwitterSvg');\n this.updateSvgElement('#secoFacebook svg', 'secoFacebookSvg');\n this.updateSvgElement('#secoTwitter svg', 'secoTwitterSvg');\n }\n\n // update relevant attributes to have a 508-compliant SVG\n private updateSvgElement(selector: string, uniqueId: string): void {\n const svgElement = document.querySelector(selector);\n svgElement?.setAttribute('aria-labelledby', uniqueId);\n svgElement?.querySelector('title')?.setAttribute('id', uniqueId);\n }\n}\n","
\n
\n \n\n \n\n \n \n
\n
\n","\n","import {\n Component,\n EventEmitter,\n OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\nimport { Router } from '@angular/router';\nimport { Permission, Role } from 'core/enums';\nimport { AuthenticationService } from 'core/services/authentication.service';\nimport { JwtService } from 'core/services/infrastructure/jwt.service';\nimport { map, Subscription } from 'rxjs';\n\n@Component({\n selector: 'msep-side-menu',\n templateUrl: './side-menu.component.html',\n styleUrls: ['./side-menu.component.scss'],\n})\nexport class SideMenuComponent implements OnInit, OnDestroy {\n isAuthenticated = false;\n @Output() menuNavigated = new EventEmitter();\n panelOpenState = false;\n private subscriptions: Subscription[] = [];\n\n constructor(\n private authenticationService: AuthenticationService,\n private jwtService: JwtService,\n private router: Router\n ) {}\n\n ngOnInit(): void {\n const authenticationSubscription =\n this.authenticationService.isAuthenticatedSubject\n .pipe(map((result) => (this.isAuthenticated = result)))\n .subscribe();\n\n this.subscriptions.push(authenticationSubscription);\n }\n\n getDisplayName(): string {\n return this.authenticationService.getDisplayName();\n }\n\n getHomepageLink(): string {\n return this.jwtService.getHomePage();\n }\n\n getLastLoginDate(): string {\n return this.jwtService.getLastLoginDate();\n }\n\n onLogin(): void {\n this.toggle();\n this.router.navigate(['/notice-and-consent', 'login']);\n }\n\n onLogout(): void {\n this.toggle();\n const logoutSubscription = this.authenticationService\n .logOut()\n .subscribe(() => {\n this.router.navigate(['/logout']);\n });\n\n this.subscriptions.push(logoutSubscription);\n }\n\n shouldShowPartnerDirectoryLink(): boolean {\n return this.authenticationService.isAuthenticated();\n }\n\n shouldShowReportMenu(): boolean {\n if (this.userHasUserRole()) {\n return false;\n }\n\n return this.userHasManageReportsPermission();\n }\n\n toggle(): void {\n this.menuNavigated.emit(true);\n }\n\n userHasHelpDeskPermission(): boolean {\n return this.jwtService.userHasPermission(Permission.Helpdesk);\n }\n\n userHasManageJobsPermission(): boolean {\n return this.jwtService.userHasPermission(Permission.ManageJobs);\n }\n\n userHasManageReportsPermission(): boolean {\n return this.jwtService.userHasPermission(Permission.ManageReports);\n }\n\n userHasManageUsersPermission(): boolean {\n return this.jwtService.userHasPermission(Permission.ManageUsers);\n }\n\n userHasSpecialistRole(): boolean {\n return this.jwtService.userHasRole(Role.Specialist);\n }\n\n userHasUserRole(): boolean {\n return this.jwtService.userHasRole(Role.User);\n }\n\n userIsSysOp(): boolean {\n return this.jwtService.userHasRole(Role.SysOp);\n }\n\n ngOnDestroy(): void {\n this.subscriptions?.forEach((x) => x.unsubscribe());\n }\n}\n","
\n \n
\n \n \n \n \n \n \n \n
\n \n \n \n\n \n \n
\n
\n \n\n\n \n\n","import {\n Component,\n EventEmitter,\n OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\nimport {\n NavigationCancel,\n NavigationEnd,\n NavigationError,\n NavigationStart,\n Router,\n} from '@angular/router';\nimport { Permission, Role } from 'core/enums';\nimport { AuthenticationService } from 'core/services/authentication.service';\nimport { JwtService } from 'core/services/infrastructure/jwt.service';\nimport { Subscription } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\n\n@Component({\n selector: 'msep-top-header',\n templateUrl: './top-header.component.html',\n styleUrls: ['./top-header.component.scss'],\n})\nexport class TopHeaderComponent implements OnInit, OnDestroy {\n @Output() menuToggled = new EventEmitter();\n isAuthenticated = false;\n isLoading = false;\n private subscriptions: Subscription[] = [];\n\n get getHideMenuClass(): string {\n return this.userIsSysOp() || this.userHasSpecialistRole()\n ? 'hide-menu'\n : '';\n }\n\n constructor(\n private authenticationService: AuthenticationService,\n private jwtService: JwtService,\n private router: Router\n ) {}\n\n ngOnInit(): void {\n const navigationStartSub = this.router.events\n .pipe(\n filter((event) => event instanceof NavigationStart),\n map(() => (this.isLoading = true))\n )\n .subscribe();\n\n const navigationOverSub = this.router.events\n .pipe(\n filter((event) => {\n return (\n event instanceof NavigationEnd ||\n event instanceof NavigationCancel ||\n event instanceof NavigationError\n );\n }),\n map(() => (this.isLoading = false))\n )\n .subscribe();\n\n const authenticationSubscription =\n this.authenticationService.isAuthenticatedSubject\n .pipe(map((result) => (this.isAuthenticated = result)))\n .subscribe();\n\n this.subscriptions.push(\n navigationStartSub,\n navigationOverSub,\n authenticationSubscription\n );\n }\n\n getHomepageLink(): string {\n if (!this.isAuthenticated) return '/';\n\n return this.jwtService.getHomePage();\n }\n\n shouldShowPartnerDirectoryLink(): boolean {\n return this.authenticationService.isAuthenticated();\n }\n\n shouldShowReportMenu(): boolean {\n if (this.userHasUserRole()) {\n return false;\n }\n\n return this.userHasManageReportsPermission();\n }\n\n toggle(): void {\n this.menuToggled.emit(true);\n }\n\n userHasHelpDeskPermission(): boolean {\n return this.jwtService.userHasPermission(Permission.Helpdesk);\n }\n\n userHasManageJobsPermission(): boolean {\n return this.jwtService.userHasPermission(Permission.ManageJobs);\n }\n\n userHasManageReportsPermission(): boolean {\n return this.jwtService.userHasPermission(Permission.ManageReports);\n }\n\n userHasManageUsersPermission(): boolean {\n return this.jwtService.userHasPermission(Permission.ManageUsers);\n }\n\n userHasSpecialistRole(): boolean {\n return this.jwtService.userHasRole(Role.Specialist);\n }\n\n userHasUserRole(): boolean {\n return this.jwtService.userHasRole(Role.User);\n }\n\n userIsSysOp(): boolean {\n return this.jwtService.userHasRole(Role.SysOp);\n }\n\n ngOnDestroy(): void {\n this.subscriptions.forEach((x) => x.unsubscribe());\n }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'msep-wizard-layout',\n templateUrl: './wizard-layout.component.html',\n styleUrls: ['./wizard-layout.component.scss'],\n})\nexport class WizardLayoutComponent {}\n","\n \n
\n \n
\n
\n \n \n
\n \n
\n \n
\n
\n","\n
\n
\n \n
\n\n \n {{ title }} \n \n \n \n\n
\n \n close\n \n
\n
\n
\n","import { Component, ElementRef, Input, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\n\n@Component({\n selector: 'msep-alert',\n templateUrl: './alert.component.html',\n styleUrls: ['./alert.component.scss'],\n})\nexport class AlertComponent implements OnInit {\n @Input() buttonLink?: string;\n @Input() buttonText?: string;\n @Input() icon?: string;\n @Input() showCloseAlert = false;\n /* @Input() title sets the HTML title attribute, which\n the browser turns into a tooltip. We don't want that functionality\n for this component, so we define the getter/setter explicitly\n and clear out the native element's title attribute.\n */\n private titleValue!: string;\n @Input() get title(): string {\n return this.titleValue;\n }\n set title(value: string) {\n this.titleValue = value;\n this.elementRef.nativeElement.title = '';\n }\n @Input() type!: AlertType;\n\n isHidden = false;\n alertClass = 'alert alert-alert';\n\n constructor(private elementRef: ElementRef, private router: Router) {}\n\n ngOnInit(): void {\n this.setButtonLinkText();\n this.setClass();\n this.setIcon();\n }\n\n takeMeThere(): void {\n this.router.navigate([this.buttonLink]);\n }\n\n hideAlert(): void {\n this.isHidden = true;\n }\n\n private setButtonLinkText(): void {\n if (this.buttonLink && !this.buttonText) {\n this.buttonText = 'Take me there';\n }\n }\n\n private setClass(): void {\n if (!this.type) return;\n\n switch (this.type) {\n case AlertType.Info:\n this.alertClass = 'alert alert-info';\n break;\n case AlertType.Success:\n this.alertClass = 'alert alert-success';\n break;\n case AlertType.Warn:\n this.alertClass = 'alert alert-warn';\n break;\n\n default:\n this.alertClass = 'alert alert-alert';\n break;\n }\n\n if (this.isHidden) {\n this.alertClass += ' hidden';\n }\n }\n\n private setIcon(): void {\n // don't override the icon if we've provided it to the component\n if (this.icon) return;\n\n switch (this.type) {\n case AlertType.Info:\n this.icon = 'announcement';\n break;\n case AlertType.Success:\n this.icon = 'check_circle';\n break;\n case AlertType.Warn:\n this.icon = 'report';\n break;\n\n default:\n this.icon = 'warning';\n break;\n }\n }\n}\n\nexport enum AlertType {\n Alert = 1,\n Info,\n Success,\n Warn,\n}\n","import { Component } from '@angular/core';\nimport { Location } from '@angular/common';\n\n@Component({\n selector: 'msep-back-button',\n templateUrl: './back-button.component.html',\n styleUrls: ['./back-button.component.scss'],\n})\nexport class BackButtonComponent {\n constructor(private location: Location) {}\n\n goBack(): void {\n this.location.back();\n }\n}\n","\n \n \n Back\n\n","\n \n
\n\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'msep-card-loader',\n templateUrl: './card-loader.component.html',\n styleUrls: ['./card-loader.component.scss'],\n})\nexport class CardLoaderComponent {\n @Input() isLoading = false;\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'msep-centered-loader',\n templateUrl: './centered-loader.component.html',\n styleUrls: ['./centered-loader.component.scss'],\n})\nexport class CenteredLoaderComponent {}\n","
\n \n
\n","\n \n \n
\n
\n {{ form.get('title')?.value }}\n
\n
\n
\n
\n \n \n \n Select Chart\n \n \n {{ chart.title }}\n \n \n \n \n
\n \n \n \n \n \n \n
\n
\n
\n","import { Component, Input, OnInit } from '@angular/core';\nimport { FormBuilder, UntypedFormGroup } from '@angular/forms';\nimport { MatSelectChange } from '@angular/material/select';\nimport { LineChart, MsepChartType, PieChart, Role } from 'core/enums';\nimport { JwtService } from 'core/services/infrastructure/jwt.service';\n\n@Component({\n selector: 'msep-chart-dock',\n templateUrl: './chart-dock.component.html',\n})\nexport class ChartDockComponent implements OnInit {\n @Input() chartType?: MsepChartType;\n @Input() partnerId?: number;\n\n charts!: MsepChart[];\n chartId!: number;\n form!: UntypedFormGroup;\n lineChart = MsepChartType.Line;\n isSysOpOrGov =\n this.jwtService.userHasRole(Role.SysOp) ||\n this.jwtService.userHasRole(Role.Govt);\n spouseEngagementMultiLineChart = MsepChartType.SpouseEngagementMultiLine;\n totalPublishedJobsMultiLineChart = MsepChartType.TotalPublishedJobsMultiLine;\n lineCharts = [\n {\n id: LineChart.CandidateSearch,\n title: 'Candidate Searches',\n },\n {\n id: LineChart.SpousesHired,\n title: 'Spouses Hired',\n },\n {\n id: LineChart.SpousesCurrentlyEmployed,\n title: 'Spouses Currently Employed',\n },\n {\n id: LineChart.SpouseEngagement,\n title: 'Spouse Engagement',\n },\n ] as MsepChart[];\n mapChart = MsepChartType.JobMap;\n spouseMapChart = MsepChartType.SpouseMap;\n pieChart = MsepChartType.Pie;\n pieCharts = [\n {\n id: PieChart.Industry,\n title: 'Jobs by Industry',\n },\n {\n id: PieChart.YearsOfExperience,\n title: 'Jobs by Years of Experience',\n },\n {\n id: PieChart.EducationLevel,\n title: 'Jobs by Education Level',\n },\n {\n id: PieChart.RemoteTeleworkJob,\n title: 'Remote/Telework Jobs',\n },\n ] as MsepChart[];\n\n constructor(\n private formBuilder: FormBuilder,\n private jwtService: JwtService\n ) {}\n\n ngOnInit(): void {\n switch (this.chartType) {\n case MsepChartType.Pie:\n this.charts = this.pieCharts;\n if (this.partnerId === undefined) {\n this.charts.push(\n { id: PieChart.PartnerIndustry, title: 'Partners by Industry' },\n {\n id: PieChart.RemoteTeleworkPartner,\n title: 'Partners who offer Remote/Telework',\n },\n {\n id: PieChart.PartnershipType,\n title: 'Partners by Partnership Type',\n }\n );\n }\n break;\n case MsepChartType.Line:\n this.charts = this.lineCharts;\n if (this.partnerId === undefined) {\n this.charts.push(\n {\n id: LineChart.PartnersWhoReported,\n title: 'Partners who completed a Monthly Spouse Hire Report',\n },\n {\n id: LineChart.TotalPartners,\n title: 'Total Approved/Active Partners',\n }\n );\n if (this.isSysOpOrGov) {\n this.charts.push({\n id: LineChart.TotalJobs,\n title: 'Total Published Jobs',\n });\n }\n }\n break;\n case MsepChartType.JobMap:\n this.charts = [\n {\n id: 1,\n title: 'Jobs offered by State',\n },\n ];\n break;\n case MsepChartType.SpouseMap:\n this.charts = [\n {\n id: 1,\n title: 'Military Spouse Candidates by State',\n },\n ];\n break;\n }\n\n this.chartId = this.charts[0].id;\n this.buildForm();\n }\n\n onSelectionChanged(event: MatSelectChange): void {\n this.chartId = event.value;\n\n if (\n this.chartType === this.spouseEngagementMultiLineChart ||\n this.chartType === this.totalPublishedJobsMultiLineChart\n ) {\n this.chartType = this.lineChart;\n }\n\n if (\n this.chartId === LineChart.SpouseEngagement &&\n this.chartType === this.lineChart\n ) {\n this.chartType = this.spouseEngagementMultiLineChart;\n } else if (\n this.chartId === LineChart.TotalJobs &&\n this.chartType === this.lineChart\n ) {\n this.chartType = this.totalPublishedJobsMultiLineChart;\n }\n\n this.form.patchValue({\n active: event.value,\n title: this.charts[event.value - 1].title,\n });\n }\n\n private buildForm(): void {\n this.form = this.formBuilder.group({\n active: 1,\n title: this.charts[0].title,\n });\n }\n}\n\nexport interface MsepChart {\n id: number;\n title: string;\n}\n","import { Component, Input, OnDestroy } from '@angular/core';\nimport { LineChart } from 'core/enums';\nimport { BlobService } from 'core/services/blob.service';\nimport {\n ChartsService,\n LineChartMetricsFilter,\n} from 'core/services/charts.service';\nimport { NotificationService } from 'core/services/infrastructure/notification.service';\nimport { SecoService } from 'core/services/partner/seco.service';\nimport { Observable, Subscription } from 'rxjs';\nimport { ServerBlobResult } from 'shared/models/server-blob-result';\n\n@Component({\n selector: 'msep-export-line-chart-button',\n templateUrl: './export-line-chart-button.component.html',\n})\nexport class ExportLineChartButtonComponent implements OnDestroy {\n @Input() chartId!: LineChart;\n @Input() organizationId?: number;\n @Input() filters!: LineChartMetricsFilter;\n\n isLoading = false;\n chartsObservable$!: Observable;\n\n private subscriptions: Subscription[] = [];\n\n constructor(\n private blobService: BlobService,\n private chartsService: ChartsService,\n private notificationService: NotificationService,\n private secoService: SecoService\n ) {}\n\n onExportClick(): void {\n this.isLoading = true;\n this.setObservable();\n const subscription = this.chartsObservable$.subscribe({\n next: result => {\n this.blobService.download(result);\n },\n error: () => {\n this.notificationService.emitFailure(\n 'Error exporting chart data. Please contact an administrator'\n );\n this.isLoading = false;\n },\n complete: () => {\n this.isLoading = false;\n },\n });\n\n this.subscriptions.push(subscription);\n }\n\n ngOnDestroy(): void {\n this.subscriptions?.forEach(x => x.unsubscribe());\n }\n\n private setObservable(): void {\n switch (this.chartId) {\n case LineChart.CandidateSearch:\n this.setCandidateSearchObservable();\n break;\n case LineChart.PartnersWhoReported:\n this.setPartnersWhoReportedObservable();\n break;\n case LineChart.SpousesHired:\n this.setSpouseHiredObservable();\n break;\n case LineChart.SpousesCurrentlyEmployed:\n this.setSpouseCurrentlyEmployedObservable();\n break;\n case LineChart.SpouseEngagement:\n this.setSpouseEngagementObservable();\n break;\n case LineChart.TotalJobs:\n this.setTotalJobsObservable();\n break;\n case LineChart.TotalPartners:\n this.setTotalPartnersObservable();\n break;\n }\n }\n\n private setCandidateSearchObservable(): void {\n this.chartsObservable$ = this.chartsService.exportCandidateSearchMetrics(\n this.filters,\n this.organizationId\n );\n }\n\n private setPartnersWhoReportedObservable(): void {\n this.chartsObservable$ =\n this.chartsService.exportPartnersWhoReportedMetrics(this.filters);\n }\n\n private setSpouseHiredObservable(): void {\n this.chartsObservable$ = this.chartsService.exportSpouseHiredMetrics(\n this.filters,\n this.organizationId\n );\n }\n\n private setSpouseCurrentlyEmployedObservable(): void {\n this.chartsObservable$ =\n this.chartsService.exportSpouseCurrentlyEmployedMetrics(\n this.filters,\n this.organizationId\n );\n }\n\n private setSpouseEngagementObservable(): void {\n this.chartsObservable$ = this.secoService.exportSpouseEngagementChartData(\n this.filters\n );\n }\n\n private setTotalJobsObservable(): void {\n this.chartsObservable$ = this.chartsService.exportTotalJobsMetrics(\n this.filters\n );\n }\n\n private setTotalPartnersObservable(): void {\n this.chartsObservable$ = this.chartsService.exportTotalPartnersMetrics(\n this.filters\n );\n }\n}\n","\n \n \n Export\n\n","import { Component, Input, OnDestroy } from '@angular/core';\nimport { BlobService } from 'core/services/blob.service';\nimport { ChartsService, MapChartFilter } from 'core/services/charts.service';\nimport { NotificationService } from 'core/services/infrastructure/notification.service';\nimport { Observable, Subscription } from 'rxjs';\nimport { ServerBlobResult } from 'shared/models/server-blob-result';\n\n@Component({\n selector: 'msep-export-map-chart-button',\n templateUrl: './export-map-chart-button.component.html',\n})\nexport class ExportMapChartButtonComponent implements OnDestroy {\n @Input() organizationId?: number;\n @Input() filters!: MapChartFilter;\n\n isLoading = false;\n chartsObservable$!: Observable;\n\n private subscriptions: Subscription[] = [];\n\n constructor(\n private blobService: BlobService,\n private chartsService: ChartsService,\n private notificationService: NotificationService\n ) {}\n\n onExportClick(): void {\n this.isLoading = true;\n this.setJobMapObservable();\n const subscription = this.chartsObservable$.subscribe({\n next: result => {\n this.blobService.download(result);\n },\n error: () => {\n this.notificationService.emitFailure(\n 'Error exporting chart data. Please contact an administrator'\n );\n this.isLoading = false;\n },\n complete: () => {\n this.isLoading = false;\n },\n });\n\n this.subscriptions.push(subscription);\n }\n\n ngOnDestroy(): void {\n this.subscriptions?.forEach(x => x.unsubscribe());\n }\n\n private setJobMapObservable(): void {\n this.chartsObservable$ = this.chartsService.exportJobMapMetrics(\n this.filters,\n this.organizationId\n );\n }\n}\n","\n \n \n Export\n\n","import { Component, Input, OnDestroy } from '@angular/core';\nimport { PieChart } from 'core/enums';\nimport { BlobService } from 'core/services/blob.service';\nimport {\n ChartsService,\n PieChartMetricsFilter,\n} from 'core/services/charts.service';\nimport { NotificationService } from 'core/services/infrastructure/notification.service';\nimport { Observable, Subscription } from 'rxjs';\nimport { ServerBlobResult } from 'shared/models/server-blob-result';\n\n@Component({\n selector: 'msep-export-pie-chart-button',\n templateUrl: './export-pie-chart-button.component.html',\n})\nexport class ExportPieChartButtonComponent implements OnDestroy {\n @Input() chartId!: PieChart;\n @Input() organizationId?: number;\n @Input() filters!: PieChartMetricsFilter;\n isLoading = false;\n chartsObservable$!: Observable;\n private subscriptions: Subscription[] = [];\n\n constructor(\n private blobService: BlobService,\n private chartsService: ChartsService,\n private notificationService: NotificationService\n ) {}\n\n onExportClick(): void {\n this.isLoading = true;\n this.setObservable();\n const subscription = this.chartsObservable$.subscribe({\n next: (result) => {\n this.blobService.download(result);\n },\n error: () => {\n this.notificationService.emitFailure(\n 'Error exporting chart data. Please contact an administrator'\n );\n this.isLoading = false;\n },\n complete: () => {\n this.isLoading = false;\n },\n });\n\n this.subscriptions.push(subscription);\n }\n\n ngOnDestroy(): void {\n this.subscriptions?.forEach((x) => x.unsubscribe());\n }\n\n private setObservable(): void {\n if (this.chartId === PieChart.RemoteTeleworkJob) {\n this.chartsObservable$ =\n this.chartsService.exportRemoteTeleworkJobMetrics(\n this.filters,\n this.organizationId\n );\n } else if (this.chartId === PieChart.RemoteTeleworkPartner) {\n this.chartsObservable$ =\n this.chartsService.exportRemoteTeleworkPartnerMetrics();\n } else if (this.chartId === PieChart.PartnerIndustry) {\n this.chartsObservable$ =\n this.chartsService.exportPartnerIndustryMetrics();\n } else if (this.chartId === PieChart.PartnershipType) {\n this.chartsObservable$ =\n this.chartsService.exportPartnershipTypeMetrics();\n } else {\n this.chartsObservable$ = this.chartsService.exportJobMetrics(\n this.filters,\n this.organizationId\n );\n }\n }\n}\n","\n \n \n Export\n\n","
\n \n \n
\n \n \n Partnership Type\n \n \n {{ partnershipType.description }}\n \n \n \n
\n \n \n
\n
\n
\n \n \n
\n\n
\n \n \n {{ chart }}\n \n \n
\n","import { DatePipe } from '@angular/common';\nimport {\n AfterViewInit,\n Component,\n Input,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport { UntypedFormBuilder, UntypedFormGroup } from '@angular/forms';\nimport { MatSelectChange } from '@angular/material/select';\nimport { Chart } from 'chart.js/auto';\nimport { LineChart } from 'core/enums';\nimport {\n LineChartMetrics,\n LineChartMetricsFilter,\n ChartsService,\n} from 'core/services/charts.service';\nimport { Resource, ResourcesService } from 'core/services/resources.service';\nimport moment from 'moment';\nimport {\n BehaviorSubject,\n Observable,\n Subscription,\n delay,\n switchMap,\n tap,\n} from 'rxjs';\nimport { ApiResponse } from 'shared/models/api-response';\n\n@Component({\n selector: 'msep-line-chart',\n templateUrl: './line-chart.component.html',\n styleUrls: ['./line-chart.component.scss'],\n})\nexport class LineChartComponent implements OnInit, AfterViewInit, OnDestroy {\n @Input() partnerId?: number;\n @Input() set lineChartId(value: LineChart) {\n this.lineChart = value;\n this.setChartValues();\n this.loadChartData();\n }\n\n get lineChartId(): LineChart {\n return this.lineChart;\n }\n\n lineChartMetrics!: LineChartMetrics[];\n lineChartMetrics$!: Observable>;\n lineChartMetricsAction$!: Observable;\n chart!: Chart;\n chartId!: string;\n chartTitle!: string;\n dateFormat = 'MM-dd-yyyy';\n form!: UntypedFormGroup;\n isLoading = false;\n partnershipTypes$ = this.resourceService.getPartnershipTypes();\n selectedEndDate!: Date;\n selectedStartDate!: Date;\n\n defaultFilter = {\n organizationId: undefined,\n partnershipTypeId: undefined,\n startDate: '',\n endDate: '',\n } as LineChartMetricsFilter;\n\n private lineChart!: LineChart;\n private lineChartMetricsSubject = new BehaviorSubject(\n this.defaultFilter\n );\n private subscription = new Subscription();\n\n constructor(\n private chartsService: ChartsService,\n private formBuilder: UntypedFormBuilder,\n private resourceService: ResourcesService\n ) {}\n\n ngOnInit(): void {\n this.defaultFilter.organizationId = this.partnerId;\n this.setChartValues();\n this.setDateFilterDefaults();\n this.buildForm();\n this.loadChartData();\n }\n\n ngAfterViewInit(): void {\n this.createChart();\n }\n\n get currentFilter(): LineChartMetricsFilter {\n return {\n ...this.form.value,\n };\n }\n\n onEndDateSelected(date: Date): void {\n const endDate = moment(date).toDate();\n endDate.setHours(0, 0, 0, 0);\n endDate.setMonth(endDate.getMonth() + 1);\n endDate.setDate(1);\n const selectedDate = new DatePipe('en-US').transform(\n endDate,\n this.dateFormat\n );\n\n if (!selectedDate) return;\n\n this.form.patchValue({\n endDate: selectedDate,\n });\n this.lineChartMetricsSubject.next(this.currentFilter);\n }\n\n onOrganizationSelected(organization: Resource): void {\n this.form.patchValue({\n organizationId: organization.id,\n organizationName: organization.description,\n });\n this.lineChartMetricsSubject.next(this.currentFilter);\n }\n\n onPartnershipTypeChanged(event: MatSelectChange): void {\n this.form.patchValue({\n partnershipTypeId: event.value,\n });\n this.lineChartMetricsSubject.next(this.currentFilter);\n }\n\n onStartDateSelected(date: Date): void {\n const startDate = moment(date).toDate();\n startDate.setHours(0, 0, 0, 0);\n startDate.setDate(1);\n const selectedDate = new DatePipe('en-US').transform(\n startDate,\n this.dateFormat\n );\n\n if (!selectedDate) return;\n\n this.form.patchValue({\n startDate: selectedDate,\n });\n this.lineChartMetricsSubject.next(this.currentFilter);\n }\n\n onReset(): void {\n this.form.patchValue({\n organizationId: this.defaultFilter.organizationId,\n organizationName: null,\n partnershipTypeId: this.defaultFilter.partnershipTypeId,\n startDate: this.defaultFilter.startDate,\n endDate: this.defaultFilter.endDate,\n });\n this.setDateFilterDefaults();\n this.lineChartMetricsSubject.next(this.currentFilter);\n }\n\n private buildForm(): void {\n this.form = this.formBuilder.group({\n organizationId: this.defaultFilter.organizationId,\n organizationName: null,\n partnershipTypeId: this.defaultFilter.partnershipTypeId,\n startDate: this.defaultFilter.startDate,\n endDate: this.defaultFilter.endDate,\n });\n }\n\n private createChart(): void {\n this.chart = new Chart(this.chartId, {\n type: 'line',\n data: {\n labels: [],\n datasets: [\n {\n data: [],\n fill: false,\n },\n ],\n },\n options: {\n responsive: true,\n maintainAspectRatio: true,\n layout: {\n padding: {\n left: 50,\n right: 50,\n bottom: 20,\n },\n },\n plugins: {\n legend: {\n display: false,\n },\n },\n scales: {\n y: {\n beginAtZero: true,\n },\n },\n },\n });\n }\n\n private loadChartData(): void {\n this.lineChartMetricsAction$ = this.lineChartMetricsSubject.asObservable();\n\n this.lineChartMetrics$ = this.lineChartMetricsAction$.pipe(\n delay(0),\n tap(() => (this.isLoading = true)),\n switchMap(filters => {\n switch (this.lineChart) {\n case LineChart.CandidateSearch:\n return this.chartsService.getCandidateSearchMetrics(\n filters,\n this.partnerId\n );\n case LineChart.PartnersWhoReported:\n return this.chartsService.getPartnersWhoReportedMetrics(filters);\n case LineChart.SpousesHired:\n return this.chartsService.getSpouseHiredMetrics(\n filters,\n this.partnerId\n );\n case LineChart.TotalPartners:\n return this.chartsService.getTotalPartnersMetrics(filters);\n default:\n return this.chartsService.getSpouseCurrentlyEmployedMetrics(\n filters,\n this.partnerId\n );\n }\n }),\n tap(results => {\n this.lineChartMetrics = results.data;\n this.updateChart();\n this.isLoading = false;\n })\n );\n }\n\n private setChartValues(): void {\n switch (this.lineChart) {\n case LineChart.CandidateSearch:\n this.chartId = 'lineChart';\n if (this.partnerId) this.chartId += this.partnerId;\n this.chartTitle = 'Candidate Searches';\n break;\n case LineChart.PartnersWhoReported:\n this.chartId = 'partnersWhoReportedChart';\n this.chartTitle =\n 'Total Partners who completed a monthly Spouse hire report';\n break;\n case LineChart.SpousesHired:\n this.chartId = 'spousesHiredChart';\n if (this.partnerId) this.chartId += this.partnerId;\n this.chartTitle = 'Spouses Hired';\n break;\n case LineChart.SpousesCurrentlyEmployed:\n this.chartId = 'spousesCurrentlyEmployedChart';\n if (this.partnerId) this.chartId += this.partnerId;\n this.chartTitle = 'Spouses Currently Employed';\n break;\n case LineChart.TotalPartners:\n this.chartId = 'totalPartnersChart';\n this.chartTitle = 'Total Partners';\n break;\n default:\n break;\n }\n }\n\n private setDateFilterDefaults(): void {\n const today = new Date();\n this.selectedEndDate = new Date(\n today.getFullYear(),\n today.getMonth() + 1,\n 1\n );\n today.setDate(today.getDate() - 365);\n this.selectedStartDate = new Date(today.getFullYear(), today.getMonth(), 1);\n\n this.defaultFilter.startDate =\n new DatePipe('en-US').transform(\n this.selectedStartDate,\n this.dateFormat\n ) ?? '';\n this.defaultFilter.endDate =\n new DatePipe('en-US').transform(this.selectedEndDate, this.dateFormat) ??\n '';\n }\n\n private updateChart(): void {\n this.chart.data.labels = [];\n this.chart.data.datasets[0].data = [];\n this.chart.data.labels = this.lineChartMetrics.map(x =>\n new DatePipe('en-US').transform(x.date, 'yyyy-MM')\n );\n this.chart.data.datasets[0].data = this.lineChartMetrics.map(x => x.count);\n this.chart.update();\n }\n\n ngOnDestroy(): void {\n this.chart?.destroy();\n this.subscription.unsubscribe();\n }\n}\n","\n
\n \n

No job data to display

\n
\n
\n
\n","import { Component, OnInit, ElementRef, ViewChild, Input } from '@angular/core';\nimport { FormBuilder, UntypedFormGroup } from '@angular/forms';\nimport {\n ChartsService,\n MapChartFilter,\n MapChartMetrics,\n} from 'core/services/charts.service';\nimport { Observable, BehaviorSubject, delay, tap, switchMap } from 'rxjs';\nimport { ApiResponse } from 'shared/models/api-response';\nimport * as d3 from 'd3';\nimport { legendColor } from 'd3-svg-legend';\nimport * as topojson from 'topojson-client';\nimport { Topology, GeometryCollection } from 'topojson-specification';\n\n@Component({\n selector: 'msep-map-chart',\n templateUrl: './map-chart.component.html',\n styleUrls: ['./map-chart.component.scss'],\n})\nexport class MapChartComponent implements OnInit {\n @ViewChild('mapContainer', { static: true }) mapContainer!: ElementRef;\n\n @Input() partnerId?: number;\n\n form!: UntypedFormGroup;\n isLoading = false;\n mapChartMetrics!: MapChartMetrics[];\n mapChartMetrics$!: Observable>;\n mapChartMetricsAction$!: Observable;\n\n defaultFilter = {\n organizationId: undefined,\n } as MapChartFilter;\n\n private readonly jobMapMetricsSubject = new BehaviorSubject(\n this.defaultFilter\n );\n\n get currentFilter(): MapChartFilter {\n return {\n ...this.form.value,\n };\n }\n\n constructor(\n private readonly chartsService: ChartsService,\n private readonly formBuilder: FormBuilder\n ) {}\n\n ngOnInit(): void {\n this.defaultFilter.organizationId = this.partnerId;\n this.buildForm();\n this.loadMapData();\n }\n\n private buildForm(): void {\n this.form = this.formBuilder.group({\n organizationId: this.defaultFilter.organizationId,\n });\n }\n\n private calculateUpperBound(upperLimmit: number): number {\n return upperLimmit < 100\n ? Math.ceil(upperLimmit / 10) * 10\n : Math.ceil(upperLimmit / 100) * 100;\n }\n\n private createMap(): void {\n d3.select('#theChart').selectAll('svg').remove();\n d3.json>(\n 'assets/config/us-10m.v1.json'\n ).then(mapData => {\n if (!mapData) {\n console.error('Failed to load map data');\n return;\n }\n\n const newMapData = topojson.feature(\n mapData,\n mapData.objects.states\n ).features;\n\n const w = 1200;\n const h = 600;\n const upperLimmit = d3.max(this.mapChartMetrics, d => d.count) ?? 0;\n\n const svg = d3\n .select('#theChart')\n .append('svg')\n .attr('width', w)\n .attr('height', h)\n .attr('viewBox', '0 0 975 610')\n .attr('style', 'max-width: 100%; height: auto;')\n .attr('align-self', 'center');\n\n const color = d3.scaleQuantize();\n const colorRange = upperLimmit > 9 ? 9 : upperLimmit;\n\n upperLimmit <= 2\n ? color.domain([1, 4]).range(d3.schemeBlues[3])\n : color\n .domain([\n 1,\n upperLimmit < 10\n ? upperLimmit + 1\n : this.calculateUpperBound(upperLimmit),\n ])\n .range(d3.schemeBlues[colorRange]);\n\n svg\n .selectAll('path')\n .data(newMapData)\n .enter()\n .append('path')\n .attr('d', d3.geoPath())\n .attr('fill', d => {\n const stateData = this.mapChartMetrics.find(s => s.id === d.id);\n return stateData ? color(stateData.count) : '#ccc';\n })\n .attr('stroke', '#000')\n .attr('stroke-width', 1)\n .append('title')\n .text(d => {\n const stateData = this.mapChartMetrics.find(s => s.id === d.id);\n return stateData ? `${stateData.key}: ${stateData.count}` : 'No data';\n });\n\n if (this.mapChartMetrics.length > 0) {\n const legend = legendColor()\n .labelFormat(upperLimmit > 1000 ? d3.format('.2s') : d3.format('.0d'))\n .scale(color);\n\n svg\n .append('g')\n .attr('class', 'legend')\n .attr('transform', `translate(${w - 250},200)`)\n .call(legend);\n }\n });\n }\n\n private loadMapData(): void {\n this.mapChartMetricsAction$ = this.jobMapMetricsSubject.asObservable();\n\n this.mapChartMetrics$ = this.mapChartMetricsAction$.pipe(\n delay(0),\n tap(() => (this.isLoading = true)),\n switchMap(filters => {\n return this.chartsService.getJobMapMetrics(filters, this.partnerId);\n }),\n tap(results => {\n this.mapChartMetrics = results.data;\n this.createMap();\n this.isLoading = false;\n })\n );\n }\n}\n","
\n \n \n \n
\n
\n \n Reset\n \n \n
\n \n
\n \n \n {{ chart }}\n \n \n
\n\n","import {\n AfterViewInit,\n Component,\n Input,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport { UntypedFormBuilder, UntypedFormGroup } from '@angular/forms';\nimport { Chart, ChartType } from 'chart.js/auto';\nimport { PieChart } from 'core/enums';\nimport {\n PieChartMetrics,\n PieChartMetricsFilter,\n ChartsService,\n} from 'core/services/charts.service';\nimport { Resource } from 'core/services/resources.service';\nimport {\n BehaviorSubject,\n Observable,\n Subscription,\n delay,\n switchMap,\n tap,\n} from 'rxjs';\nimport { ApiResponse } from 'shared/models/api-response';\n\n@Component({\n selector: 'msep-pie-chart',\n templateUrl: './pie-chart.component.html',\n styleUrls: ['./pie-chart.component.scss'],\n})\nexport class PieChartComponent implements OnInit, AfterViewInit, OnDestroy {\n @Input() partnerId?: number;\n @Input() set pieChartType(value: PieChart) {\n this.pieChart = value;\n this.setChartValues();\n this.loadChartData();\n }\n\n get pieChartId(): PieChart {\n return this.pieChart;\n }\n\n get shouldHideFilters(): boolean {\n return (\n this.pieChartId == this.partnerIndustryChartId ||\n this.pieChartId == this.remoteTeleworkPartnerChartId ||\n this.pieChartId == this.partnershipTypeChartId\n );\n }\n\n chart!: Chart;\n chartName!: string;\n dateFormat = 'MM-dd-yyyy';\n form!: UntypedFormGroup;\n isLoading = false;\n partnerIndustryChartId = PieChart.PartnerIndustry;\n partnershipTypeChartId = PieChart.PartnershipType;\n pieChartMetrics!: PieChartMetrics[];\n pieChartMetrics$!: Observable>;\n pieChartMetricsAction$!: Observable;\n remoteTeleworkPartnerChartId = PieChart.RemoteTeleworkPartner;\n selectedEndDate!: Date;\n selectedStartDate!: Date;\n\n defaultFilter = {\n field: '',\n partnerId: undefined,\n } as PieChartMetricsFilter;\n\n private pieChart!: PieChart;\n private pieChartMetricsSubject = new BehaviorSubject(\n this.defaultFilter\n );\n private subscription = new Subscription();\n\n get currentFilter(): PieChartMetricsFilter {\n return {\n ...this.form.value,\n field: this.chartName,\n };\n }\n\n constructor(\n private chartsService: ChartsService,\n private formBuilder: UntypedFormBuilder\n ) {}\n\n ngOnInit(): void {\n this.defaultFilter.organizationId = this.partnerId;\n this.setChartValues();\n this.buildForm();\n this.loadChartData();\n }\n\n ngAfterViewInit(): void {\n this.createChart();\n }\n\n onOrganizationSelected(organization: Resource): void {\n this.form.patchValue({\n partnerId: organization.id,\n organizationName: organization.description,\n });\n this.pieChartMetricsSubject.next(this.currentFilter);\n }\n\n onReset(): void {\n this.form.reset();\n this.pieChartMetricsSubject.next(this.currentFilter);\n }\n\n private buildForm(): void {\n this.form = this.formBuilder.group({\n partnerId: this.defaultFilter.organizationId,\n organizationName: null,\n });\n }\n\n private createChart(): void {\n this.chart = new Chart(\n `${this.chartName}${this.partnerId ? this.partnerId : ''}`,\n {\n type: 'pie' as ChartType,\n data: {\n labels: [],\n datasets: [\n {\n data: [],\n backgroundColor: [\n '#1D428A',\n '#97207a',\n '#c8102e',\n '#ed6e1e',\n '#ffb81c',\n ],\n hoverOffset: 4,\n },\n ],\n },\n options: {\n responsive: true,\n maintainAspectRatio: true,\n layout: {\n padding: {\n left: 50,\n right: 50,\n top: 50,\n },\n },\n plugins: {\n legend: {\n display: true,\n position: 'bottom',\n },\n },\n },\n plugins: [\n {\n id: 'NoData',\n afterDraw: function (chart) {\n if (chart.data.datasets[0].data.length === 0) {\n const ctx = chart.ctx;\n chart.clear();\n ctx.save();\n ctx.textAlign = 'center';\n ctx.textBaseline = 'middle';\n ctx.font = `1.5rem ${\n window.getComputedStyle(document.body).fontFamily\n }`;\n ctx.fillText(\n 'No job data to display',\n chart.width / 2,\n chart.height / 2\n );\n ctx.restore();\n }\n },\n },\n ],\n }\n );\n }\n\n private loadChartData(): void {\n this.pieChartMetricsAction$ = this.pieChartMetricsSubject.asObservable();\n\n this.pieChartMetrics$ = this.pieChartMetricsAction$.pipe(\n delay(0),\n tap(() => (this.isLoading = true)),\n switchMap((filters) => {\n filters.field = this.chartName;\n if (filters.field === 'isRemoteOrTeleworkJob') {\n return this.chartsService.getRemoteTeleworkJobMetrics(\n filters,\n this.partnerId\n );\n } else if (filters.field === 'isRemoteOrTeleworkPartner') {\n return this.chartsService.getRemoteTeleworkPartnerMetrics();\n } else if (filters.field === 'partnerIndustry') {\n return this.chartsService.getPartnerIndustryMetrics();\n } else if (filters.field === 'partnershipType') {\n return this.chartsService.getPartnershipTypeMetrics();\n }\n\n return this.chartsService.getJobMetrics(filters, this.partnerId);\n }),\n tap((results) => {\n this.pieChartMetrics = results.data;\n this.updateChart();\n this.isLoading = false;\n })\n );\n }\n\n private setChartValues(): void {\n switch (this.pieChart) {\n case PieChart.Industry:\n this.chartName = 'industry';\n break;\n case PieChart.YearsOfExperience:\n this.chartName = 'yearsOfExperience.keyword';\n break;\n case PieChart.EducationLevel:\n this.chartName = 'education.keyword';\n break;\n case PieChart.RemoteTeleworkJob:\n this.chartName = 'isRemoteOrTeleworkJob';\n break;\n case PieChart.PartnerIndustry:\n this.chartName = 'partnerIndustry';\n break;\n case PieChart.RemoteTeleworkPartner:\n this.chartName = 'isRemoteOrTeleworkPartner';\n break;\n case PieChart.PartnershipType:\n this.chartName = 'partnershipType';\n break;\n default:\n break;\n }\n }\n\n private updateChart(): void {\n this.chart.data.labels = [];\n this.chart.data.labels = this.pieChartMetrics.map((x) => x.description);\n this.chart.data.datasets[0].data = [];\n this.chart.data.datasets[0].data = this.pieChartMetrics.map((x) => x.count);\n this.chart.update();\n }\n\n ngOnDestroy(): void {\n this.chart?.destroy();\n this.subscription.unsubscribe();\n }\n}\n","
\n \n \n
\n \n
\n \n \n
\n \n
\n \n \n
\n\n
\n \n \n {{ chart }}\n \n \n
\n","import { DatePipe } from '@angular/common';\nimport {\n AfterViewInit,\n Component,\n Input,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport { UntypedFormBuilder, UntypedFormGroup } from '@angular/forms';\nimport { Chart } from 'chart.js/auto';\nimport { LineChart } from 'core/enums';\nimport { LineChartMetricsFilter } from 'core/services/charts.service';\nimport {\n SecoApiSingleResponse,\n SecoLineChartMetrics,\n SecoService,\n} from 'core/services/partner/seco.service';\nimport { Resource } from 'core/services/resources.service';\nimport moment from 'moment';\nimport { BehaviorSubject, Observable, delay, switchMap, tap } from 'rxjs';\n\n@Component({\n selector: 'msep-spouse-engagement-multi-line-chart',\n templateUrl: './spouse-engagement-multi-line-chart.component.html',\n styleUrls: ['./spouse-engagement-multi-line-chart.component.scss'],\n})\nexport class SpouseEngagementMultiLineChartComponent\n implements OnInit, AfterViewInit, OnDestroy\n{\n @Input() partnerId?: number;\n\n chart!: Chart;\n chartId!: string;\n chartTitle!: string;\n dateFormat = 'MM-dd-yyyy';\n form!: UntypedFormGroup;\n isLoading = false;\n secoLineChartMetrics!: SecoLineChartMetrics;\n secoLineChartMetrics$!: Observable<\n SecoApiSingleResponse\n >;\n secoLineChartMetricsAction$!: Observable;\n selectedEndDate!: Date;\n selectedStartDate!: Date;\n spouseEngagementChartId = LineChart.SpouseEngagement;\n\n defaultFilter = {\n organizationId: undefined,\n startDate: '',\n endDate: '',\n } as LineChartMetricsFilter;\n\n private secoChartMetricsSubject = new BehaviorSubject(\n this.defaultFilter\n );\n\n constructor(\n private formBuilder: UntypedFormBuilder,\n private secoService: SecoService\n ) {}\n\n ngOnInit(): void {\n this.defaultFilter.organizationId = this.partnerId;\n this.setChartValues();\n this.setDateFilterDefaults();\n this.buildForm();\n this.loadSecoChartData();\n }\n\n ngAfterViewInit(): void {\n this.createChart();\n }\n\n get currentFilter(): LineChartMetricsFilter {\n return {\n ...this.form.value,\n };\n }\n\n onEndDateSelected(date: Date): void {\n const endDate = moment(date).endOf('month').toDate();\n const selectedDate = new DatePipe('en-US').transform(\n endDate,\n this.dateFormat\n );\n\n if (!selectedDate) return;\n\n this.form.patchValue({\n endDate: selectedDate,\n });\n this.secoChartMetricsSubject.next(this.currentFilter);\n }\n\n onOrganizationSelected(organization: Resource): void {\n this.form.patchValue({\n organizationId: organization.id,\n organizationName: organization.description,\n });\n\n this.secoChartMetricsSubject.next(this.currentFilter);\n }\n\n onStartDateSelected(date: Date): void {\n const startDate = moment(date).toDate();\n startDate.setHours(0, 0, 0, 0);\n startDate.setDate(1);\n const selectedDate = new DatePipe('en-US').transform(\n startDate,\n this.dateFormat\n );\n\n if (!selectedDate) return;\n\n this.form.patchValue({\n startDate: selectedDate,\n });\n this.secoChartMetricsSubject.next(this.currentFilter);\n }\n\n onReset(): void {\n this.form.patchValue({\n organizationId: this.defaultFilter.organizationId,\n organizationName: null,\n startDate: this.defaultFilter.startDate,\n endDate: this.defaultFilter.endDate,\n });\n this.setDateFilterDefaults();\n this.secoChartMetricsSubject.next(this.currentFilter);\n }\n\n private buildForm(): void {\n this.form = this.formBuilder.group({\n organizationId: this.defaultFilter.organizationId,\n organizationName: null,\n startDate: this.defaultFilter.startDate,\n endDate: this.defaultFilter.endDate,\n });\n }\n\n private createChart(): void {\n this.chart = new Chart(this.chartId, {\n type: 'line',\n data: {\n labels: [],\n datasets: [\n {\n data: [],\n fill: false,\n borderColor: '#3d9ce0',\n backgroundColor: '#3d9ce0',\n },\n {\n data: [],\n fill: false,\n borderColor: '#8b5bb0',\n backgroundColor: '#8b5bb0',\n },\n {\n data: [],\n fill: false,\n borderColor: '#e03d50',\n backgroundColor: '#e03d50',\n },\n {\n data: [],\n fill: false,\n borderColor: '#ffb81c',\n backgroundColor: '#ffb81c',\n },\n ],\n },\n options: {\n responsive: true,\n maintainAspectRatio: true,\n layout: {\n padding: {\n left: 50,\n right: 50,\n bottom: 20,\n },\n },\n plugins: {\n legend: {\n display: true,\n position: 'bottom',\n },\n },\n scales: {\n y: {\n beginAtZero: true,\n },\n },\n },\n });\n }\n\n private loadSecoChartData(): void {\n this.secoLineChartMetricsAction$ =\n this.secoChartMetricsSubject.asObservable();\n\n this.secoLineChartMetrics$ = this.secoLineChartMetricsAction$.pipe(\n delay(0),\n tap(() => {\n this.isLoading = true;\n }),\n switchMap(filters => {\n return this.secoService.getSpouseEngagementChartData(filters);\n }),\n tap(results => {\n this.secoLineChartMetrics = results.data;\n this.updateChart();\n this.isLoading = false;\n })\n );\n }\n\n private setChartValues(): void {\n this.chartId = 'spouseEngagementChart';\n this.chartTitle = 'Spouse Engagement';\n }\n\n private setDateFilterDefaults(): void {\n const today = new Date();\n this.selectedEndDate = new Date(\n today.getFullYear(),\n today.getMonth() + 1,\n 1\n );\n today.setDate(today.getDate() - 365);\n this.selectedStartDate = new Date(today.getFullYear(), today.getMonth(), 1);\n\n this.defaultFilter.startDate =\n new DatePipe('en-US').transform(\n this.selectedStartDate,\n this.dateFormat\n ) ?? '';\n this.defaultFilter.endDate =\n new DatePipe('en-US').transform(this.selectedEndDate, this.dateFormat) ??\n '';\n }\n\n private updateChart(): void {\n this.chart.data.labels = [];\n this.chart.data.labels = this.secoLineChartMetrics.clickApply.map(x =>\n new DatePipe('en-US').transform(x.date, 'yyyy-MM')\n );\n\n this.chart.data.datasets[0].data = this.secoLineChartMetrics.clickApply.map(\n x => x.count\n );\n this.chart.data.datasets[0].label = 'Click Apply';\n\n this.chart.data.datasets[1].data =\n this.secoLineChartMetrics.saveProfile.map(x => x.count);\n this.chart.data.datasets[1].label = 'Save Profile';\n\n this.chart.data.datasets[2].data =\n this.secoLineChartMetrics.searchProfile.map(x => x.count);\n this.chart.data.datasets[2].label = 'Search Profile';\n\n this.chart.data.datasets[3].data =\n this.secoLineChartMetrics.viewProfile.map(x => x.count);\n this.chart.data.datasets[3].label = 'View Profile';\n\n this.chart.update();\n }\n\n ngOnDestroy(): void {\n this.chart?.destroy();\n }\n}\n","\n
\n
\n
\n
\n","import { Component, OnInit, ElementRef, ViewChild, Input } from '@angular/core';\nimport { FormBuilder, FormGroup } from '@angular/forms';\nimport { MapChartFilter, MapChartMetrics } from 'core/services/charts.service';\nimport { Observable, BehaviorSubject, delay, tap, switchMap } from 'rxjs';\nimport * as d3 from 'd3';\nimport { legendColor } from 'd3-svg-legend';\nimport * as topojson from 'topojson-client';\nimport { Topology, GeometryCollection } from 'topojson-specification';\nimport { SecoService } from 'core/services/partner/seco.service';\n\n@Component({\n selector: 'msep-spouse-map-chart',\n templateUrl: './spouse-map-chart.component.html',\n styleUrl: './spouse-map-chart.component.scss',\n})\nexport class SpouseMapChartComponent implements OnInit {\n @ViewChild('mapContainer', { static: true }) mapContainer!: ElementRef;\n\n @Input() set filters(value: FormGroup) {\n this.filter = value;\n this.filters.valueChanges.subscribe(newValue => {\n this.filters.patchValue(newValue, { emitEvent: false });\n });\n }\n private filter!: FormGroup;\n\n isLoading = false;\n mapChartMetrics!: MapChartMetrics[];\n mapChartMetrics$!: Observable;\n mapChartMetricsAction$!: Observable;\n\n private readonly defaultFilter = {\n organizationId: undefined,\n } as MapChartFilter;\n\n private readonly jobMapMetricsSubject = new BehaviorSubject(\n this.defaultFilter\n );\n\n get currentFilter(): MapChartFilter {\n return {\n ...this.filter.value,\n };\n }\n\n constructor(\n private readonly secoService: SecoService,\n private readonly formBuilder: FormBuilder\n ) {}\n\n ngOnInit(): void {\n this.buildForm();\n this.loadMapData();\n }\n\n private buildForm(): void {\n this.filter = this.formBuilder.group({\n organizationId: [null],\n });\n }\n\n private calculateUpperBound(upperLimmit: number): number {\n return upperLimmit < 100\n ? Math.ceil(upperLimmit / 10) * 10\n : Math.ceil(upperLimmit / 100) * 100;\n }\n\n private createMap(): void {\n d3.select('#spouseMapChart').selectAll('svg').remove();\n d3.json>(\n 'assets/config/us-10m.v1.json'\n ).then(mapData => {\n if (!mapData) {\n console.error('Failed to load map data');\n return;\n }\n\n const newMapData = topojson.feature(\n mapData,\n mapData.objects.states\n ).features;\n\n const w = 1200;\n const h = 600;\n const upperLimmit = d3.max(this.mapChartMetrics, d => d.count) ?? 0;\n\n const svg = d3\n .select('#spouseMapChart')\n .append('svg')\n .attr('width', w)\n .attr('height', h)\n .attr('viewBox', '0 0 975 610')\n .attr('style', 'max-width: 100%; height: auto;')\n .attr('align-self', 'center');\n\n const color = d3.scaleQuantize();\n\n if (upperLimmit !== 0) {\n color\n .domain([\n 1,\n upperLimmit < 10\n ? upperLimmit + 1\n : this.calculateUpperBound(upperLimmit),\n ])\n .range(d3.schemeBlues[upperLimmit > 9 ? 9 : upperLimmit]);\n }\n\n svg\n .selectAll('path')\n .data(newMapData)\n .enter()\n .append('path')\n .attr('d', d3.geoPath())\n .attr('fill', d => {\n const stateData = this.mapChartMetrics.find(s => s.id === d.id);\n return stateData ? color(stateData.count) : '#ccc';\n })\n .attr('stroke', '#000')\n .attr('stroke-width', 1)\n .append('title')\n .text(d => {\n const stateData = this.mapChartMetrics.find(s => s.id === d.id);\n return stateData ? `${stateData.key}: ${stateData.count}` : 'No data';\n });\n\n if (this.mapChartMetrics.length > 0) {\n const legend = legendColor()\n .labelFormat(upperLimmit > 1000 ? d3.format('.2s') : d3.format('.0d'))\n .scale(color);\n\n svg\n .append('g')\n .attr('class', 'legend')\n .attr('transform', `translate(${w - 250},200)`)\n .call(legend);\n }\n });\n }\n\n private loadMapData(): void {\n this.mapChartMetricsAction$ = this.jobMapMetricsSubject.asObservable();\n\n this.mapChartMetrics$ = this.mapChartMetricsAction$.pipe(\n delay(0),\n tap(() => (this.isLoading = true)),\n switchMap(() => {\n return this.secoService.getSpouseMapMetrics();\n }),\n tap(results => {\n this.mapChartMetrics = results;\n this.createMap();\n this.isLoading = false;\n })\n );\n }\n}\n","
\n \n \n
\n \n \n Partnership Type\n \n \n {{ partnershipType.description }}\n \n \n \n
\n \n \n
\n \n
\n \n \n
\n\n
\n \n \n {{ chart }}\n \n \n
\n","import { DatePipe } from '@angular/common';\nimport {\n AfterViewInit,\n Component,\n Input,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport { UntypedFormBuilder, UntypedFormGroup } from '@angular/forms';\nimport { MatSelectChange } from '@angular/material/select';\nimport { Chart } from 'chart.js/auto';\nimport { LineChart } from 'core/enums';\nimport {\n ChartsService,\n LineChartMetricsFilter,\n TotalJobsLineChartMetrics,\n} from 'core/services/charts.service';\nimport { Resource, ResourcesService } from 'core/services/resources.service';\nimport moment from 'moment';\nimport { BehaviorSubject, Observable, delay, switchMap, tap } from 'rxjs';\nimport { ApiResponse } from 'shared/models/api-response';\n\n@Component({\n selector: 'msep-total-published-jobs-multi-line-chart',\n templateUrl: './total-published-jobs-multi-line-chart.component.html',\n styleUrls: ['./total-published-jobs-multi-line-chart.component.scss'],\n})\nexport class TotalPublishedJobsMultiLineChartComponent\n implements OnInit, AfterViewInit, OnDestroy\n{\n @Input() partnerId?: number;\n\n chart!: Chart;\n chartId!: string;\n chartTitle!: string;\n dateFormat = 'MM-dd-yyyy';\n form!: UntypedFormGroup;\n isLoading = false;\n partnershipTypes$ = this.resourceService.getPartnershipTypes();\n selectedEndDate!: Date;\n selectedStartDate!: Date;\n totalJobsLineChartMetrics!: TotalJobsLineChartMetrics[];\n totalJobsLineChartMetrics$!: Observable<\n ApiResponse\n >;\n totalJobsLineChartMetricsAction$!: Observable;\n\n totalJobsChartId = LineChart.TotalJobs;\n\n defaultFilter = {\n organizationId: undefined,\n partnershipTypeId: undefined,\n startDate: '',\n endDate: '',\n } as LineChartMetricsFilter;\n\n private totalJobsMetricsSubject = new BehaviorSubject(\n this.defaultFilter\n );\n\n constructor(\n private chartsService: ChartsService,\n private formBuilder: UntypedFormBuilder,\n private resourceService: ResourcesService\n ) {}\n\n ngOnInit(): void {\n this.defaultFilter.organizationId = this.partnerId;\n this.setChartValues();\n this.setDateFilterDefaults();\n this.buildForm();\n this.loadTotalJobsChartData();\n }\n\n ngAfterViewInit(): void {\n this.createChart();\n }\n\n get currentFilter(): LineChartMetricsFilter {\n return {\n ...this.form.value,\n };\n }\n\n onEndDateSelected(date: Date): void {\n const endDate = moment(date).endOf('month').toDate();\n const selectedDate = new DatePipe('en-US').transform(\n endDate,\n this.dateFormat\n );\n\n if (!selectedDate) return;\n\n this.form.patchValue({\n endDate: selectedDate,\n });\n this.totalJobsMetricsSubject.next(this.currentFilter);\n }\n\n onOrganizationSelected(organization: Resource): void {\n this.form.patchValue({\n organizationId: organization.id,\n organizationName: organization.description,\n });\n\n this.totalJobsMetricsSubject.next(this.currentFilter);\n }\n\n onPartnershipTypeChanged(event: MatSelectChange): void {\n this.form.patchValue({\n partnershipTypeId: event.value,\n });\n this.totalJobsMetricsSubject.next(this.currentFilter);\n }\n\n onStartDateSelected(date: Date): void {\n const startDate = moment(date).toDate();\n startDate.setHours(0, 0, 0, 0);\n startDate.setDate(1);\n const selectedDate = new DatePipe('en-US').transform(\n startDate,\n this.dateFormat\n );\n\n if (!selectedDate) return;\n\n this.form.patchValue({\n startDate: selectedDate,\n });\n this.totalJobsMetricsSubject.next(this.currentFilter);\n }\n\n onReset(): void {\n this.form.patchValue({\n organizationId: this.defaultFilter.organizationId,\n organizationName: null,\n partnershipTypeId: this.defaultFilter.partnershipTypeId,\n startDate: this.defaultFilter.startDate,\n endDate: this.defaultFilter.endDate,\n });\n this.setDateFilterDefaults();\n this.totalJobsMetricsSubject.next(this.currentFilter);\n }\n\n private buildForm(): void {\n this.form = this.formBuilder.group({\n organizationId: this.defaultFilter.organizationId,\n organizationName: null,\n partnershipTypeId: this.defaultFilter.partnershipTypeId,\n startDate: this.defaultFilter.startDate,\n endDate: this.defaultFilter.endDate,\n });\n }\n\n private createChart(): void {\n this.chart = new Chart(this.chartId, {\n type: 'line',\n data: {\n labels: [],\n datasets: [\n {\n data: [],\n fill: false,\n borderColor: '#3d9ce0',\n backgroundColor: '#3d9ce0',\n },\n {\n data: [],\n fill: false,\n borderColor: '#8b5bb0',\n backgroundColor: '#8b5bb0',\n },\n ],\n },\n options: {\n responsive: true,\n maintainAspectRatio: true,\n layout: {\n padding: {\n left: 50,\n right: 50,\n bottom: 20,\n },\n },\n plugins: {\n legend: {\n display: true,\n position: 'bottom',\n },\n },\n scales: {\n y: {\n beginAtZero: true,\n },\n },\n },\n });\n }\n\n private loadTotalJobsChartData(): void {\n this.totalJobsLineChartMetricsAction$ =\n this.totalJobsMetricsSubject.asObservable();\n\n this.totalJobsLineChartMetrics$ =\n this.totalJobsLineChartMetricsAction$.pipe(\n delay(0),\n tap(() => {\n this.isLoading = true;\n }),\n switchMap(filters => {\n return this.chartsService.getTotalJobsMetrics(filters);\n }),\n tap(results => {\n this.totalJobsLineChartMetrics = results.data;\n this.updateChart();\n this.isLoading = false;\n })\n );\n }\n\n private setChartValues(): void {\n this.chartId = 'totalJobsChart';\n this.chartTitle = 'Total Number of Published Jobs';\n }\n\n private setDateFilterDefaults(): void {\n const today = new Date();\n this.selectedEndDate = new Date(\n today.getFullYear(),\n today.getMonth() + 1,\n 1\n );\n today.setDate(today.getDate() - 365);\n this.selectedStartDate = new Date(today.getFullYear(), today.getMonth(), 1);\n\n this.defaultFilter.startDate =\n new DatePipe('en-US').transform(\n this.selectedStartDate,\n this.dateFormat\n ) ?? '';\n this.defaultFilter.endDate =\n new DatePipe('en-US').transform(this.selectedEndDate, this.dateFormat) ??\n '';\n }\n\n private updateChart(): void {\n this.chart.data.labels = [];\n this.chart.data.labels = this.totalJobsLineChartMetrics.map(x =>\n new DatePipe('en-US').transform(x.date, 'yyyy-MM')\n );\n\n this.chart.data.datasets[0].data = this.totalJobsLineChartMetrics.map(\n x => x.feedCount\n );\n this.chart.data.datasets[0].label = 'Total jobs from feeds';\n\n this.chart.data.datasets[1].data = this.totalJobsLineChartMetrics.map(\n x => x.manualCount\n );\n this.chart.data.datasets[1].label = 'Total manual jobs';\n\n this.chart.update();\n }\n\n ngOnDestroy(): void {\n this.chart?.destroy();\n }\n}\n","
\n
\n
\n \n \n
\n
\n\n
\n

{{ title }}

\n\n \n {{ message }}\n \n
\n\n
\n \n \n \n {{ buttonYes }}\n \n \n
\n
\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { GoogleAnalyticsService } from 'core/services/infrastructure/google-analytics.service';\n\n@Component({\n selector: 'msep-confirmation-dialog',\n templateUrl: './confirmation-dialog.component.html',\n styleUrls: ['./confirmation-dialog.component.scss'],\n})\nexport class ConfirmationDialogComponent implements OnInit {\n buttonNo = 'Cancel';\n buttonYes = 'Ok';\n linkUrl = '';\n message = 'Are you sure?';\n title = 'Confirm';\n\n constructor(\n public dialogRef: MatDialogRef,\n @Inject(MAT_DIALOG_DATA) public data: any, // eslint-disable-line\n private googleAnalyticService: GoogleAnalyticsService\n ) {}\n\n ngOnInit(): void {\n this.title = this.data.title;\n this.message = this.data.message;\n this.buttonYes = this.data.buttonYes;\n this.buttonNo = this.data.buttonNo;\n this.data.confirm = true;\n this.linkUrl = this.data.linkUrl;\n }\n\n onNoClick(): void {\n this.dialogRef.close();\n }\n\n onYesClick(): void {\n if (this.linkUrl) {\n this.googleAnalyticService.trackExternalLinkClick(this.linkUrl);\n window.open(this.linkUrl, '_system');\n }\n }\n}\n","
\n CONTROLLED UNCLASSIFIED INFORMATION (CUI)\n
\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { AuthenticationService } from 'core/services/authentication.service';\nimport { Subscription } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n@Component({\n selector: 'msep-cui-banner',\n templateUrl: './cui-banner.component.html',\n styleUrls: ['./cui-banner.component.scss'],\n})\nexport class CuiBannerComponent implements OnInit, OnDestroy {\n isAuthenticated = false;\n private subscription = new Subscription();\n\n constructor(private authenticationService: AuthenticationService) {}\n\n ngOnInit(): void {\n this.subscription = this.authenticationService.isAuthenticatedSubject\n .pipe(map((result) => (this.isAuthenticated = result)))\n .subscribe();\n }\n\n ngOnDestroy(): void {\n this.subscription?.unsubscribe();\n }\n}\n","\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n","import { CdkDragDrop, transferArrayItem } from '@angular/cdk/drag-drop';\nimport { Component, Input, OnInit } from '@angular/core';\nimport { Docks, GhostLoaderType } from 'core/enums';\nimport { DashboardService, Dock } from 'core/services/dashboard.service';\n\n@Component({\n selector: 'msep-dashboard-docks',\n templateUrl: './dashboard-docks.component.html',\n styleUrls: ['./dashboard-docks.component.scss'],\n})\nexport class DashboardDocksComponent implements OnInit {\n @Input() roleId?: number;\n\n docks!: Dock[][];\n ghostLoaderType = GhostLoaderType.PartnerLogo;\n helpDesk = Docks.Helpdesk;\n jobs = Docks.Jobs;\n partnerEngagement = Docks.PartnerEngagement;\n partnerMetrics = Docks.PartnerMetrics;\n recentlyAccessed = Docks.RecentlyAccessedPartner;\n spouseActivity = Docks.SpouseActivity;\n userMetrics = Docks.UserMetrics;\n\n constructor(private dashboardService: DashboardService) {}\n\n ngOnInit(): void {\n if (this.roleId) {\n this.dashboardService\n .getDefaultRoleDocks(this.roleId)\n .subscribe(result => {\n this.docks = result;\n });\n } else {\n this.dashboardService.getDocks().subscribe(result => {\n this.docks = result;\n });\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dropped(event: CdkDragDrop): void {\n transferArrayItem(\n event.previousContainer.data,\n event.container.data,\n event.previousIndex,\n event.currentIndex\n );\n this.updateDocks();\n }\n\n toggleCollapse(dock: Dock): void {\n dock.isCollapsed = !dock.isCollapsed;\n }\n\n private updateDocks(): void {\n const updatedDocks = new Array();\n this.docks.forEach((column, columnIndex) => {\n column.forEach((dock, index) => {\n dock.column = columnIndex + 1;\n dock.sortOrder = index + 1;\n updatedDocks.push(dock);\n });\n });\n this.dashboardService.updateDocks(updatedDocks).subscribe();\n }\n}\n","\n \n
\n \n
\n \n {{ ticketCount.description }} Tickets\n \n
\n \n {{ ticketCount.description }} Tickets\n \n
0 ? 'red' : 'default' }}\">\n {{ ticketCount.count | number }}\n
\n
\n \n \n
\n \n
\n \n Pending Users\n \n
\n \n Pending Users\n \n 0 ? 'red' : 'default'\n }}\"\n >\n {{ helpDeskCounts.pendingUserCount | number }}\n
\n \n \n
\n\n\n \n\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { AccountStatus, Docks, Permission, Role } from 'core/enums';\nimport {\n AdminDashboardService,\n HelpDeskCounts,\n} from 'core/services/admin/admin-dashboard.service';\nimport { JwtService } from 'core/services/infrastructure/jwt.service';\nimport { Observable } from 'rxjs';\n\n@Component({\n selector: 'msep-help-desk-dock',\n templateUrl: './help-desk-dock.component.html',\n})\nexport class HelpDeskDockComponent implements OnInit {\n @Input() isCollapsed!: boolean | undefined;\n\n @Output() toggleCollapseDock = new EventEmitter();\n\n helpDesk = Docks.Helpdesk;\n helpDeskCounts$!: Observable;\n userAccountPendingStatusId = AccountStatus.Pending;\n userIsSysOpWithPermission = false;\n\n constructor(\n private adminDashboardService: AdminDashboardService,\n private jwtService: JwtService\n ) {}\n\n ngOnInit(): void {\n this.helpDeskCounts$ = this.adminDashboardService.getHelpDeskCounts();\n this.userIsSysOpWithPermission =\n this.jwtService.userHasRole(Role.SysOp) &&\n this.jwtService.userHasPermission(Permission.Helpdesk);\n }\n\n toggleCollapse(): void {\n this.toggleCollapseDock.emit();\n this.isCollapsed = !this.isCollapsed;\n }\n}\n","\n \n
\n \n \n Total Published Jobs \n \n
{{ jobCount.total | number }}
\n
\n
\n
\n \n \n \n \n Enabled Feeds\n \n
\n {{ jobFeedInfo.totalEnabledFeeds | number }}\n
\n
\n \n \n \n Disabled Feeds\n \n
\n {{ jobFeedInfo.totalDisabledFeeds | number }}\n
\n \n \n \n \n Succeeded Feeds\n \n
\n {{ jobFeedInfo.totalSucceeded | number }}\n
\n \n \n \n \n Failed Feeds\n \n
{{ jobFeedInfo.totalFailed | number }}
\n \n \n \n \n Running Feeds\n \n
{{ jobFeedInfo.totalRunning | number }}
\n \n \n \n\n\n \n\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { Docks, Permission, Role } from 'core/enums';\nimport {\n AdminDashboardService,\n JobFeedInfo,\n} from 'core/services/admin/admin-dashboard.service';\nimport { PartnerMetrics } from 'core/services/dashboard.service';\nimport { JwtService } from 'core/services/infrastructure/jwt.service';\nimport { Job, JobSearchFilter, JobService } from 'core/services/jobs.service';\nimport { Observable } from 'rxjs';\nimport { ApiResponse, HeartbeatResponse } from 'shared/models/api-response';\n\n@Component({\n selector: 'msep-jobs-dock',\n templateUrl: './jobs-dock.component.html',\n})\nexport class JobsDockComponent implements OnInit {\n @Input() isCollapsed!: boolean | undefined;\n @Input() isAdminView = false;\n\n @Output() toggleCollapseDock = new EventEmitter();\n\n isJobsIndexAvailable$!: Observable;\n jobs = Docks.Jobs;\n jobs$!: Observable;\n jobFeedInfo$!: Observable;\n publishedJobCount$!: Observable>;\n userIsSysOpWithPermission = false;\n\n constructor(\n private adminDashboardService: AdminDashboardService,\n private jobService: JobService,\n private jwtService: JwtService\n ) {}\n\n ngOnInit(): void {\n this.userIsSysOpWithPermission =\n this.jwtService.userHasRole(Role.SysOp) &&\n this.jwtService.userHasPermission(Permission.ManageJobs);\n this.jobFeedInfo$ = this.adminDashboardService.getJobFeedInfo();\n this.jobCount();\n }\n\n toggleCollapse(): void {\n this.toggleCollapseDock.emit();\n this.isCollapsed = !this.isCollapsed;\n }\n\n private jobCount(): void {\n const jobFilters: JobSearchFilter = {\n take: 0,\n skip: 0,\n location: null,\n coordinates: null,\n organizationId: null,\n organizationName: null,\n title: null,\n jid: null,\n jobFeedId: null,\n isHotJob: null,\n isPublished: true,\n createdDate: null,\n publishEndDate: null,\n jobHash: null,\n createdEndDate: null,\n createdStartDate: null,\n keyword: null,\n sortDirection: 'asc',\n sortByProperty: 'title.keyword',\n state: null,\n };\n this.publishedJobCount$ = this.jobService.searchJobs(jobFilters);\n }\n}\n","\n \n
\n Total Candidate Searches\n
\n {{ partnerMetrics.candidateSearchCount | number }}\n
\n
\n \n
\n Total Monthly Reports Completed\n
\n {{ partnerMetrics.completedMonthlyReportCount | number }}\n
\n
\n \n
\n Partners with 4+1 Badge\n
\n {{ partnerMetrics.fourPlusOnePartnerCount | number }}\n
\n
\n \n \n \n
\n Highly Engaged\n
\n {{ partnerTracker.highlyEngaged | number }}\n
\n
\n \n
\n Opportunity to Increase Engagement\n
\n {{ partnerTracker.increaseEngagement | number }}\n
\n
\n \n
\n Limited Demonstration of Engagement\n
\n {{ partnerTracker.limitedEngagement | number }}\n
\n
\n \n
\n No Engagement\n
\n {{ partnerTracker.noEngagement | number }}\n
\n
\n
\n\n\n \n\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { Docks } from 'core/enums';\nimport {\n DashboardService,\n PartnerEngagement,\n PartnerTracker,\n} from 'core/services/dashboard.service';\nimport { Observable } from 'rxjs';\n\n@Component({\n selector: 'msep-partner-engagement-dock',\n templateUrl: './partner-engagement-dock.component.html',\n})\nexport class PartnerEngagementDockComponent implements OnInit {\n @Input() isCollapsed!: boolean | undefined;\n\n @Output() toggleCollapseDock = new EventEmitter();\n\n partnerEngagement = Docks.PartnerEngagement;\n partnerEngagement$!: Observable;\n partnerTracker$!: Observable;\n\n constructor(private dashboardService: DashboardService) {}\n\n ngOnInit(): void {\n this.partnerEngagement$ = this.dashboardService.getPartnerEngagement();\n this.partnerTracker$ = this.dashboardService.getPartnerTracker();\n }\n\n toggleCollapse(): void {\n this.toggleCollapseDock.emit();\n this.isCollapsed = !this.isCollapsed;\n }\n}\n","\n \n \n \n \n {{ statusCount.description }}\n \n
{{ statusCount.count | number }}
\n \n \n \n
\n\n\n \n\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { Docks } from 'core/enums';\nimport {\n DashboardService,\n PartnerMetrics,\n} from 'core/services/dashboard.service';\nimport { Observable } from 'rxjs';\n\n@Component({\n selector: 'msep-partner-metrics-dock',\n templateUrl: './partner-metrics-dock.component.html',\n})\nexport class PartnerMetricsDockComponent implements OnInit {\n @Input() isCollapsed!: boolean | undefined;\n\n @Output() toggleCollapseDock = new EventEmitter();\n\n partnerMetrics = Docks.PartnerMetrics;\n partnerMetrics$!: Observable;\n\n constructor(private dashboardService: DashboardService) {}\n\n ngOnInit(): void {\n this.partnerMetrics$ = this.dashboardService.getPartnerMetrics();\n }\n\n toggleCollapse(): void {\n this.toggleCollapseDock.emit();\n this.isCollapsed = !this.isCollapsed;\n }\n}\n","\n \n 0; else noResults\"\n >\n
\n \n
\n \n {{ accessedPartner.partnerName }}\n \n
\n
\n {{ accessedPartner.accessedDate | localDateTime }}\n
\n
\n \n \n \n \n\n\n \n\n\n \n\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { Docks } from 'core/enums';\nimport {\n DashboardService,\n RecentlyAccessedPartner,\n} from 'core/services/dashboard.service';\nimport { Observable } from 'rxjs';\n\n@Component({\n selector: 'msep-recently-accessed-partners-dock',\n templateUrl: './recently-accessed-partners-dock.component.html',\n})\nexport class RecentlyAccessedPartnersDockComponent implements OnInit {\n @Input() isCollapsed!: boolean | undefined;\n\n @Output() toggleCollapseDock = new EventEmitter();\n\n recentlyAccessed = Docks.RecentlyAccessedPartner;\n recentlyAccessedPartners$!: Observable;\n\n constructor(private dashboardService: DashboardService) {}\n\n ngOnInit(): void {\n this.recentlyAccessedPartners$ =\n this.dashboardService.getRecentlyAccessedPartners();\n }\n\n toggleCollapse(): void {\n this.toggleCollapseDock.emit();\n this.isCollapsed = !this.isCollapsed;\n }\n}\n","\n \n
\n \n \n Total Hired\n \n
{{ spousesHired | number }}
\n
\n \n
\n \n
\n Total Clicked Apply\n
\n {{ totalClicks.total | number }}\n
\n
\n
\n\n\n \n\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { Docks, Permission } from 'core/enums';\nimport { DashboardService } from 'core/services/dashboard.service';\nimport { JwtService } from 'core/services/infrastructure/jwt.service';\nimport {\n ClickApplyResponse,\n SecoService,\n} from 'core/services/partner/seco.service';\nimport { Observable } from 'rxjs';\n\n@Component({\n selector: 'msep-spouse-activity-dock',\n templateUrl: './spouse-activity-dock.component.html',\n})\nexport class SpouseActivityDockComponent implements OnInit {\n @Input() isCollapsed!: boolean | undefined;\n\n @Output() toggleCollapseDock = new EventEmitter();\n\n clickApplyCount$!: Observable;\n spouseActivity = Docks.SpouseActivity;\n spousesHired$!: Observable;\n userHasPermission = false;\n\n constructor(\n private dashboardService: DashboardService,\n private jwtService: JwtService,\n private secoService: SecoService\n ) {}\n\n ngOnInit(): void {\n this.userHasPermission = this.jwtService.userHasPermission(\n Permission.ManageReports\n );\n this.clickApplyCount$ = this.secoService.getClickedApplyCount({\n partnerId: 0,\n skip: 0,\n take: 0,\n });\n this.spousesHired$ = this.dashboardService.getExactTotalSpousesHired();\n }\n\n toggleCollapse(): void {\n this.toggleCollapseDock.emit();\n this.isCollapsed = !this.isCollapsed;\n }\n}\n","\n \n
\n Total Users\n
{{ totalUsers | number }}
\n
\n \n
\n Active Users\n
{{ activeUsers | number }}
\n
\n \n
\n Locked Users\n
{{ lockedUsers | number }}
\n
\n \n
\n Suspended Users\n
{{ suspendedUsers | number }}
\n
\n
\n\n\n \n\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { Docks } from 'core/enums';\nimport { DashboardService } from 'core/services/dashboard.service';\nimport { Subscription } from 'rxjs';\n\n@Component({\n selector: 'msep-user-metrics-dock',\n templateUrl: './user-metrics-dock.component.html',\n})\nexport class UserMetricsDockComponent implements OnInit {\n @Input() isCollapsed!: boolean | undefined;\n\n @Output() toggleCollapseDock = new EventEmitter();\n\n activeUsers?: number;\n isLoadingUserMetrics = false;\n lockedUsers?: number;\n suspendedUsers?: number;\n totalUsers?: number;\n userMetrics = Docks.UserMetrics;\n\n private subscriptions: Subscription[] = [];\n\n constructor(private dashboardService: DashboardService) {}\n\n ngOnInit(): void {\n this.loadUserMetrics();\n }\n\n toggleCollapse(): void {\n this.toggleCollapseDock.emit();\n this.isCollapsed = !this.isCollapsed;\n }\n\n private loadUserMetrics(): void {\n this.isLoadingUserMetrics = true;\n\n this.subscriptions.push(\n this.dashboardService.getUserMetrics().subscribe({\n next: result => {\n this.activeUsers = result.activeUsers;\n this.lockedUsers = result.lockedUsers;\n this.suspendedUsers = result.suspendedUsers;\n this.totalUsers = result.totalUsers;\n },\n error: () => {\n this.isLoadingUserMetrics = false;\n },\n complete: () => {\n this.isLoadingUserMetrics = false;\n },\n })\n );\n }\n}\n","\n \n \n
\n
\n \n {{ title }}\n
\n \n
\n
\n
\n \n
\n \n
\n
\n
\n","import {\n Component,\n ElementRef,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\nimport { Docks } from 'core/enums';\nimport { DashboardService } from 'core/services/dashboard.service';\nimport { NotificationService } from 'core/services/infrastructure/notification.service';\n\n@Component({\n selector: 'msep-dock',\n templateUrl: './dock.component.html',\n styleUrls: ['./dock.component.scss'],\n})\nexport class DockComponent {\n @Input() dockId!: Docks;\n @Input() icon!: string;\n @Input() isCollapsed!: boolean | undefined;\n /* @Input() title sets the HTML title attribute, which\n the browser turns into a tooltip. We don't want that functionality\n for this component, so we define the getter/setter explicitly\n and clear out the native element's title attribute.\n */\n\n @Output() toggleCollapseDock = new EventEmitter();\n\n private titleValue!: string;\n\n @Input() get title(): string {\n return this.titleValue;\n }\n\n set title(value: string) {\n this.titleValue = value;\n this.elementRef.nativeElement.title = '';\n }\n\n isLoading = false;\n\n constructor(\n private dashboardService: DashboardService,\n private elementRef: ElementRef,\n private notificationService: NotificationService\n ) {}\n\n onClick(): void {\n if (!this.isLoading) {\n this.isLoading = true;\n this.dashboardService.toggleCollapseDock(this.dockId).subscribe({\n next: () => {\n this.isLoading = false;\n this.isCollapsed = !this.isCollapsed;\n this.toggleCollapseDock.emit();\n },\n error: () => {\n this.notificationService.emitFailure(\n 'Error updating docks. Please contact an administrator.'\n );\n this.isLoading = false;\n },\n complete: () => {\n this.isLoading = false;\n },\n });\n }\n }\n}\n","\n Your password is about to expire in\n {{ daysUntilPasswordExpires }}\n {{ daysUntilPasswordExpires === 1 ? 'day' : 'days' }}. Click below to reset\n your password, and you will receive an email with instructions on how to reset\n your password. Please complete your reset password before logging in again.\n\n
\n \n Reset Password\n \n
\n\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { Router } from '@angular/router';\nimport {\n AccountService,\n ForgotPasswordForm,\n} from 'core/services/account.service';\nimport { AuthenticationService } from 'core/services/authentication.service';\nimport { JwtService } from 'core/services/infrastructure/jwt.service';\nimport { NotificationService } from 'core/services/infrastructure/notification.service';\nimport { concatMap, Subscription, tap } from 'rxjs';\nimport { AlertType } from '../alert/alert.component';\nimport { ConfirmationDialogComponent } from '../confirmation-dialog/confirmation-dialog.component';\n\n@Component({\n selector: 'msep-expiring-password-notification',\n templateUrl: './expiring-password-notification.component.html',\n styleUrls: ['./expiring-password-notification.component.scss'],\n})\nexport class ExpiringPasswordNotificationComponent\n implements OnInit, OnDestroy\n{\n daysUntilPasswordExpires?: number;\n email!: string;\n expiredPasswordAlertType = AlertType.Alert;\n isLoading = false;\n isPasswordExpiring = false;\n\n private resetPasswordErrorMessage = 'Error sending password reset email.';\n private resetPasswordSuccessMessage =\n 'Password reset email successfully sent.';\n private subscriptions: Subscription[] = [];\n\n constructor(\n private accountService: AccountService,\n private authenticationService: AuthenticationService,\n public dialog: MatDialog,\n private jwtService: JwtService,\n private notificationService: NotificationService,\n private router: Router\n ) {}\n\n ngOnInit(): void {\n this.email = this.jwtService.getEmail();\n this.isPasswordExpiring = this.jwtService.isPasswordExpiring();\n this.daysUntilPasswordExpires =\n this.jwtService.getDaysUntilPasswordExpires();\n }\n\n onResetPasswordClick(): void {\n const resetPassword = {\n email: this.email,\n confirmEmail: this.email,\n } as ForgotPasswordForm;\n\n const dialogRef = this.dialog.open(ConfirmationDialogComponent, {\n data: {\n title: 'Reset Password?',\n message:\n 'By resetting your password, you will be logged out of your MSEP account. For best results, complete the reset password process before logging in again.',\n buttonYes: 'Ok',\n buttonNo: 'Cancel',\n },\n });\n\n dialogRef.afterClosed().subscribe((confirm) => {\n if (confirm) {\n this.isLoading = true;\n\n this.subscriptions.push(\n this.accountService\n .sendPasswordResetToken(resetPassword)\n .pipe(\n concatMap(() => this.authenticationService.logOut()),\n tap(() => this.router.navigate(['/logout']))\n )\n .subscribe({\n next: () => {\n this.notificationService.emitSuccess(\n this.resetPasswordSuccessMessage\n );\n this.isLoading = false;\n },\n error: () => {\n this.notificationService.emitFailure(\n this.resetPasswordErrorMessage\n );\n this.isLoading = false;\n },\n complete: () => {\n this.isLoading = false;\n },\n })\n );\n }\n });\n }\n\n ngOnDestroy(): void {\n this.subscriptions.forEach((subscription) => subscription.unsubscribe());\n }\n}\n","import { Component, Input, OnDestroy } from '@angular/core';\nimport { PartnerReports } from 'core/enums';\nimport { BlobService } from 'core/services/blob.service';\nimport { PartnerReportService } from 'core/services/partner/partner-report.service';\nimport { ReportFilters, ReportService } from 'core/services/report.service';\nimport { DateUtilsService } from 'core/utilities/date-utils.service';\nimport { map, Observable, Subscription, tap } from 'rxjs';\nimport { ServerBlobResult } from 'shared/models/server-blob-result';\n\n@Component({\n selector: 'msep-export-report-button',\n templateUrl: './export-report-button.component.html',\n styleUrls: ['./export-report-button.component.scss'],\n})\nexport class ExportReportButtonComponent implements OnDestroy {\n @Input() disabled = false;\n @Input() inButtonGroup = false;\n @Input() partnerReport!: PartnerReports;\n @Input() organizationId?: number;\n @Input() reportMetricId?: number;\n @Input() employmentDetailId?: number;\n @Input() currentStatus?: boolean;\n @Input() getTotals?: boolean;\n @Input() specialistId?: number;\n filters!: ReportFilters;\n isLoading = false;\n reportObservable$!: Observable;\n private subscriptions: Subscription[] = [];\n constructor(\n private blobService: BlobService,\n private dateUtilsService: DateUtilsService,\n private partnerReportService: PartnerReportService,\n private reportService: ReportService\n ) {}\n\n onExportClick(): void {\n this.isLoading = true;\n this.setObservable();\n const subscription = this.reportObservable$.subscribe({\n next: (result) => {\n this.blobService.download(result);\n },\n error: () => {\n this.isLoading = false;\n },\n complete: () => {\n this.isLoading = false;\n },\n });\n\n this.subscriptions.push(subscription);\n }\n\n ngOnDestroy(): void {\n this.subscriptions?.forEach((x) => x.unsubscribe());\n }\n\n private cleanUpFilter(filters: ReportFilters): ReportFilters {\n if (!filters.startDate || !filters.endDate) {\n // there are no dates, so set them\n const fyDetails = this.dateUtilsService.getFyDetails();\n filters.startDate = fyDetails.startDate.toLocaleDateString();\n filters.endDate = fyDetails.endDate.toLocaleDateString();\n }\n\n // clean up filters\n this.dateUtilsService.convertStartAndEndDateFilters(filters);\n return filters;\n }\n\n private getFilter(): void {\n let filtersSubscription!: Subscription;\n\n switch (this.partnerReport) {\n case PartnerReports.PartnerJobs:\n case PartnerReports.PartnerEngagement:\n case PartnerReports.PartnerCandidateView:\n case PartnerReports.HiringData:\n case PartnerReports.TeleworkRemote:\n case PartnerReports.CandidateStatus:\n case PartnerReports.SpecialistSpouseEngagement:\n case PartnerReports.SpecialistSpousesHired:\n case PartnerReports.SpecialistHotJobs:\n filtersSubscription = this.reportService.reportSubject\n .pipe(\n map((filters: ReportFilters) => {\n return this.cleanUpFilter(filters);\n }),\n tap((cleanedFilters) => (this.filters = cleanedFilters))\n )\n .subscribe();\n break;\n case PartnerReports.SpouseHire:\n case PartnerReports.SpouseEmploymentDetails:\n filtersSubscription = this.partnerReportService.reportSubject\n .pipe(\n map((filters: ReportFilters) => {\n return this.cleanUpFilter(filters);\n }),\n tap((cleanedFilters) => (this.filters = cleanedFilters))\n )\n .subscribe();\n break;\n }\n\n this.subscriptions.push(filtersSubscription);\n }\n\n private setObservable(): void {\n this.getFilter();\n\n switch (this.partnerReport) {\n case PartnerReports.PartnerJobs:\n this.setPartnerJobsObservable();\n break;\n case PartnerReports.PartnerEngagement:\n this.setPartnerEngagementObservable();\n break;\n case PartnerReports.PartnerCandidateView:\n this.setPartnerCandidateViewObservable();\n break;\n case PartnerReports.HiringData:\n this.setHiringDataObservable();\n break;\n case PartnerReports.TeleworkRemote:\n this.setTeleworkRemoteObservable();\n break;\n case PartnerReports.CandidateStatus:\n this.setCandidateStatusObservable();\n break;\n case PartnerReports.SpecialistHotJobs:\n this.setSpecialistHotJobsObservable();\n break;\n case PartnerReports.SpecialistSpouseEngagement:\n this.setSpecialistSpouseEngagementObservable();\n break;\n case PartnerReports.SpecialistSpousesHired:\n this.setSpecialistSpousesHiredObservable();\n break;\n case PartnerReports.SpouseHire:\n this.setSpouseHireObservable();\n break;\n case PartnerReports.SpouseEmploymentDetails:\n this.setSpouseEmploymentDetailsObservable();\n break;\n }\n }\n\n private setPartnerJobsObservable(): void {\n this.reportObservable$ = this.reportService.exportPartnerJobs({\n partnerIds: this.organizationId ? [this.organizationId] : [],\n specialistId: this.filters.specialistId ?? 0,\n });\n }\n\n private setPartnerEngagementObservable(): void {\n this.reportObservable$ = this.reportService.exportPartnerEngagement({\n startDate: this.filters.startDate,\n endDate: this.filters.endDate,\n organizationId: this.organizationId ?? 0,\n specialistId: this.filters.specialistId ?? 0,\n });\n }\n\n private setPartnerCandidateViewObservable(): void {\n this.reportObservable$ = this.reportService.exportPartnerCandidateView({\n startDate: this.filters.startDate,\n endDate: this.filters.endDate,\n organizationId: this.organizationId ?? 0,\n });\n }\n\n private setHiringDataObservable(): void {\n this.reportObservable$ = this.reportService.exportPartnersAndSpousesHired();\n }\n\n private setTeleworkRemoteObservable(): void {\n this.reportObservable$ = this.reportService.exportTeleworkRemote({\n organizationId: this.organizationId ?? 0,\n specialistId: this.filters.specialistId ?? 0,\n });\n }\n\n private setCandidateStatusObservable(): void {\n this.reportObservable$ = this.reportService.exportCandidateStatusReport({\n organizationId: this.organizationId ?? 0,\n currentStatus: this.currentStatus ?? false,\n });\n }\n\n private setSpecialistSpouseEngagementObservable(): void {\n this.reportObservable$ =\n this.reportService.exportSpecialistSpouseEngagement({\n startDate: this.filters.startDate,\n endDate: this.filters.endDate,\n organizationId: this.organizationId ?? 0,\n employmentDetailId: this.filters.employmentDetailId ?? 0,\n getTotals: this.filters.getTotals ?? false,\n specialistId: this.filters.specialistId ?? 0,\n });\n }\n\n private setSpecialistHotJobsObservable(): void {\n this.reportObservable$ = this.reportService.exportSpecialistHotJobs({\n organizationId: this.organizationId ?? 0,\n specialistId: this.filters.specialistId ?? 0,\n });\n }\n\n private setSpecialistSpousesHiredObservable(): void {\n this.reportObservable$ = this.reportService.exportSpecialistSpousesHired({\n startDate: this.filters.startDate,\n endDate: this.filters.endDate,\n organizationId: this.organizationId ?? 0,\n reportMetricId: this.reportMetricId ?? 0,\n getTotals: this.getTotals ?? false,\n specialistId: this.filters.specialistId ?? 0,\n });\n }\n\n private setSpouseHireObservable(): void {\n this.reportObservable$ = this.partnerReportService.exportSpousesHiredData(\n {\n startDate: this.filters.startDate,\n endDate: this.filters.endDate,\n reportMetricId: this.filters.reportMetricId ?? 0,\n getTotals: this.filters.getTotals ?? false,\n } as ReportFilters,\n this.organizationId ?? 0\n );\n }\n\n private setSpouseEmploymentDetailsObservable(): void {\n this.reportObservable$ =\n this.partnerReportService.exportSpousesEmploymentDetails(\n {\n startDate: this.filters.startDate,\n endDate: this.filters.endDate,\n employmentDetailId: this.filters.employmentDetailId ?? 0,\n getTotals: this.filters.getTotals ?? false,\n } as ReportFilters,\n this.organizationId ?? 0\n );\n }\n}\n","\n \n \n Export\n\n","
\n {{ listOfErrors() }}\n
\n","import { Component, Input } from '@angular/core';\nimport {\n AbstractControlDirective,\n AbstractControl,\n ValidationErrors,\n} from '@angular/forms';\n\n@Component({\n selector: 'msep-form-error',\n templateUrl: './form-error.component.html',\n styleUrls: ['./form-error.component.scss'],\n})\nexport class FormErrorComponent {\n @Input() control: AbstractControlDirective | AbstractControl | null =\n {} as AbstractControl;\n @Input() customMessage?: string;\n\n private static readonly errorMessages: Record<\n string,\n (() => string) | ((params: ValidationErrors) => string)\n > = {\n required: () => 'Required',\n email: () => 'Email is not formatted correctly',\n phoneNumber: () => 'Please enter a valid phone number (e.g., 123-456-7890)',\n minlength: (params: ValidationErrors) =>\n 'The min number of characters is ' + params.requiredLength,\n maxlength: (params: ValidationErrors) =>\n 'The max allowed number of characters is ' + params.requiredLength,\n pattern: (params: ValidationErrors) =>\n 'The required pattern is: ' + params.requiredPattern,\n years: (params: ValidationErrors) => params.message,\n countryCity: (params: ValidationErrors) => params.message,\n uniqueName: (params: ValidationErrors) => params.message,\n telephoneNumbers: (params: ValidationErrors) => params.message,\n telephoneNumber: (params: ValidationErrors) => params.message,\n startGreaterThanEnd: () => 'Start Date cannot be greater than End Date',\n dateIsInThePast: () => 'Date cannot be in the past',\n maxLengthArray: (params: ValidationErrors) =>\n 'You can select a max of ' + params.maximumLength + ' items',\n minLengthArray: (params: ValidationErrors) =>\n 'You must select a minimum of ' + params.minimumLength + ' items',\n patternWithCustomMessage: (params: ValidationErrors) => params.message,\n customRequired: (params: ValidationErrors) => params.message,\n max: (params: ValidationErrors) => 'The max value allowed is ' + params.max,\n min: (params: ValidationErrors) => 'The min value allowed is ' + params.min,\n atLeastOneValueRequiredArray: (params: ValidationErrors) =>\n 'At least one' + params.objectToValidate + ' is required',\n atLeastTwoValueRequiredArray: (params: ValidationErrors) =>\n 'At least two' + params.objectToValidate + ' is required',\n stringCompareMismatch: (params: ValidationErrors) => params.message,\n urlQueryParams: () =>\n 'Url cannot contain query parameters (e.g., ?param=value)',\n zipCode: () => 'Please enter a valid ZIP Code (e.g., 10001)',\n matDatepickerMax: (params: ValidationErrors) => {\n let maxDateString = '';\n if (params.max) {\n const date = new Date(params.max);\n maxDateString = [\n date.getMonth() + 1,\n date.getDate(),\n date.getFullYear(),\n ].join('/');\n }\n\n return 'The latest date you can select is ' + maxDateString;\n },\n matDatepickerMin: (params: ValidationErrors) => {\n let minDateString = '';\n if (params.min) {\n const date = new Date(params.min);\n minDateString = [\n date.getMonth() + 1,\n date.getDate(),\n date.getFullYear(),\n ].join('/');\n }\n\n return 'The earliest date you can select is ' + minDateString;\n },\n matDatepickerParse: () => 'Date is not formatted correctly.',\n unique: () => 'Value must be unique.',\n };\n\n listOfErrors(): string {\n if (this.control && this.control.errors) {\n return Object.keys(this.control.errors)\n .map((field) => this.getMessage(field, this.control?.errors?.[field]))\n .join('; ');\n }\n\n return '';\n }\n\n shouldShowErrors(): boolean | null {\n return (\n this.control &&\n this.control.errors &&\n (this.control.dirty || this.control.touched)\n );\n }\n\n private getMessage(type: string, params: ValidationErrors): string {\n if (this.customMessage) {\n return this.customMessage;\n }\n return FormErrorComponent.errorMessages[type](params);\n }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'msep-four-plus-one-badge',\n templateUrl: './four-plus-one-badge.component.html',\n styleUrls: ['./four-plus-one-badge.component.scss'],\n})\nexport class FourPlusOneBadgeComponent {}\n","\n \n\n","\n \n \n \n \n\n\n\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n\n\n \n \n \n \n \n \n \n
\n \n \n \n \n
\n\n\n \n\n","import { Component, Input, OnInit } from '@angular/core';\nimport { GhostLoaderType } from 'core/enums';\n\n@Component({\n selector: 'msep-ghost-loader-list',\n templateUrl: './ghost-loader-list.component.html',\n styleUrls: ['./ghost-loader-list.component.scss'],\n})\nexport class GhostLoaderListComponent implements OnInit {\n @Input() childFlex?: number;\n @Input() childFlexGtSm?: number;\n @Input() childFlexGtLg?: number;\n @Input() ghostLength? = 3;\n @Input() tableColumnLength?: number;\n @Input() tableRowLength?: number;\n @Input() type? = GhostLoaderType.Card;\n ghosts!: Array;\n ghostTypePage = GhostLoaderType.Page;\n ghostTypeTable = GhostLoaderType.Table;\n tableColumnGhosts!: Array;\n tableRowGhosts!: Array;\n\n get flexClasses(): string {\n let classes = '';\n\n if (this.childFlex) {\n classes += `flex-${this.childFlex} `;\n }\n if (this.childFlexGtSm) {\n classes += `flex-gt-sm-${this.childFlexGtSm} `;\n }\n if (this.childFlexGtLg) {\n classes += `flex-gt-lg-${this.childFlexGtLg} `;\n }\n\n return classes;\n }\n\n ngOnInit(): void {\n this.ghosts = new Array(this.ghostLength);\n\n if (this.tableColumnLength) {\n this.tableColumnGhosts = new Array(this.tableColumnLength);\n }\n\n if (this.tableRowLength) {\n this.tableRowGhosts = new Array(this.tableRowLength);\n }\n }\n}\n","\n \n \n \n\n\n\n \n \n
\n
\n
\n
\n\n\n \n \n
\n
\n \n
\n
\n
\n
\n","import { Component, Input } from '@angular/core';\nimport { GhostLoaderType } from 'core/enums';\n\n@Component({\n selector: 'msep-ghost-loader-mat-card',\n templateUrl: './ghost-loader-mat-card.component.html',\n styleUrls: ['./ghost-loader-mat-card.component.scss'],\n})\nexport class GhostLoaderMatCardComponent {\n @Input() type? = GhostLoaderType.Card;\n ghostLoaderLogo = GhostLoaderType.PartnerLogo;\n}\n","\n Location\n \n \n \n \n Example: Full Address, City, State, ZIP Code\n \n\n","import {\n AfterViewInit,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { Loader, LoaderOptions } from '@googlemaps/js-api-loader';\nimport { ConfigService } from 'core/services/infrastructure/config.service';\nimport {\n getGoogleLocation,\n GoogleGeocoderRequest,\n GoogleGeocoderResult,\n GooglePlaceAutocompleteResult,\n} from 'shared/models/google-location';\nimport { from, map, Observable, Subscription, switchMap, tap } from 'rxjs';\n\n@Component({\n selector: 'msep-google-place-autocomplete',\n templateUrl: './google-place-autocomplete.component.html',\n styleUrls: ['./google-place-autocomplete.component.scss'],\n})\nexport class GooglePlaceAutocompleteComponent\n implements AfterViewInit, OnDestroy\n{\n isLoading = false;\n @Input() disabled = false;\n @Input() geocodeRequest?: GoogleGeocoderRequest;\n @Input() required = false;\n @Input() value = '';\n @Output() googleAutocompleteChanged =\n new EventEmitter();\n @Output() reverseGeocodeLoaded =\n new EventEmitter();\n @ViewChild('autocompleteInput')\n autocompleteInput!: ElementRef;\n\n private autocompleteLoader$: Observable;\n private geocodeLoader$!: Observable;\n private loaderOptions: LoaderOptions;\n private place!: google.maps.places.PlaceResult;\n private subscriptions: Subscription[] = [];\n\n constructor(private configService: ConfigService) {\n this.loaderOptions = {\n apiKey: this.configService.config.googleMapsApiKey,\n version: 'weekly',\n libraries: ['places'],\n };\n const loader = new Loader(this.loaderOptions);\n this.autocompleteLoader$ = from(loader.load());\n }\n\n ngAfterViewInit(): void {\n this.initAutocomplete();\n if (this.geocodeRequest) {\n this.geocodeLoader$ = this.buildGeocodeObservable();\n this.getReverseGeocodingData();\n }\n }\n\n ngOnDestroy(): void {\n this.subscriptions?.forEach(x => x.unsubscribe());\n }\n\n checkClearedInput(): void {\n if (!this.autocompleteInput.nativeElement.value) {\n this.googleAutocompleteChanged.emit({} as GooglePlaceAutocompleteResult);\n }\n }\n\n private buildGeocodeObservable(): Observable {\n // create a separate loader from the autocomplete\n const loader = new Loader(this.loaderOptions);\n // convert the promise to an observable\n const loader$ = from(loader.load());\n\n return loader$.pipe(\n switchMap(() => {\n this.isLoading = true;\n const geocoder = new google.maps.Geocoder();\n const query = {} as google.maps.GeocoderRequest;\n\n if (this.geocodeRequest?.placeId) {\n // placeId gives the most accurate results, so always use it if provided\n query.placeId = this.geocodeRequest.placeId;\n } else if (this.geocodeRequest?.address) {\n // Check address second, will be more specific than LatLong\n query.address = this.geocodeRequest.address;\n } else if (!this.geocodeRequest?.coordinates?.isNullCoordinates) {\n const latlng = new google.maps.LatLng(\n Number(this.geocodeRequest?.coordinates?.latitude),\n Number(this.geocodeRequest?.coordinates?.longitude)\n );\n query.location = latlng;\n }\n\n return geocoder.geocode(query);\n }),\n map((result: google.maps.GeocoderResponse) => {\n if (!result || !result.results) {\n return {};\n }\n\n const addressComponentMostInfoIndex = result.results.reduce(\n (\n pendingIndex,\n current,\n currentIndexOfLongestArray,\n geocoderResults\n ) =>\n geocoderResults[pendingIndex].address_components.length >\n current.address_components.length\n ? pendingIndex\n : currentIndexOfLongestArray,\n 0\n );\n\n const location = result.results[addressComponentMostInfoIndex];\n\n return {\n formattedAddress: location?.formatted_address,\n googleLocation: getGoogleLocation(\n location?.address_components,\n location?.geometry.location\n ),\n } as GoogleGeocoderResult;\n })\n );\n }\n\n private getReverseGeocodingData(): void {\n const subscription = this.geocodeLoader$\n .pipe(tap(result => this.reverseGeocodeLoaded.emit(result)))\n .subscribe({\n next: () => (this.isLoading = false),\n error: () => (this.isLoading = false),\n complete: () => (this.isLoading = false),\n });\n this.subscriptions.push(subscription);\n }\n\n private initAutocomplete(): void {\n const subscription = this.autocompleteLoader$\n .pipe(\n tap(() => {\n const autocomplete = new google.maps.places.Autocomplete(\n this.autocompleteInput.nativeElement,\n { fields: ['place_id', 'geometry', 'name', 'address_components'] }\n );\n autocomplete.addListener('place_changed', () => {\n this.place = autocomplete.getPlace();\n const autocompleteResult = new GooglePlaceAutocompleteResult(\n this.place\n );\n this.googleAutocompleteChanged.emit(autocompleteResult);\n });\n })\n )\n .subscribe();\n\n this.subscriptions.push(subscription);\n }\n}\n","import {\n Component,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n} from '@angular/core';\nimport { UntypedFormControl } from '@angular/forms';\nimport {\n MomentDateAdapter,\n MAT_MOMENT_DATE_ADAPTER_OPTIONS,\n} from '@angular/material-moment-adapter';\nimport {\n DateAdapter,\n MAT_DATE_FORMATS,\n MAT_DATE_LOCALE,\n} from '@angular/material/core';\nimport { MatDatepicker } from '@angular/material/datepicker';\nimport { DateUtilsService } from 'core/utilities/date-utils.service';\nimport momentImport, { default as rollupMoment, Moment } from 'moment';\n\nconst moment = rollupMoment || momentImport;\n\nexport const monthYearFormat = {\n parse: {\n dateInput: 'MM/YYYY',\n },\n display: {\n dateInput: 'MM/YYYY',\n monthYearLabel: 'MMM YYYY',\n dateA11yLabel: 'LL',\n monthYearA11yLabel: 'MMMM YYYY',\n },\n};\n\n@Component({\n selector: 'msep-monthly-datepicker',\n templateUrl: './monthly-datepicker.component.html',\n styleUrls: ['./monthly-datepicker.component.scss'],\n providers: [\n {\n provide: DateAdapter,\n useClass: MomentDateAdapter,\n deps: [MAT_DATE_LOCALE, MAT_MOMENT_DATE_ADAPTER_OPTIONS],\n },\n { provide: MAT_MOMENT_DATE_ADAPTER_OPTIONS, useValue: { useUtc: true } },\n {\n provide: MAT_DATE_FORMATS,\n useValue: monthYearFormat,\n },\n ],\n})\nexport class MonthlyDatepickerComponent implements OnChanges {\n @Input() passedDate: Date | undefined;\n @Input() inputLabel = 'Monthly Date Picker';\n @Input() isDisabled!: boolean;\n @Input() isRequired = false;\n @Output() selectedDateMonth = new EventEmitter();\n\n constructor(private dateUtils: DateUtilsService) {}\n date = new UntypedFormControl({ value: null, disabled: false });\n minDate!: Date;\n maxDate!: Date;\n\n ngOnChanges(): void {\n if (this.passedDate) {\n this.date.reset({ value: this.passedDate, disabled: this.isDisabled });\n }\n const ytdDetails = this.dateUtils.getYtdDetails();\n this.minDate = ytdDetails.minDate;\n this.maxDate = ytdDetails.maxDate;\n }\n\n chosenMonthHandler(\n normalizedMonth: Moment,\n datepicker: MatDatepicker\n ): void {\n const ctrlValue = this.date.value;\n ctrlValue.month(normalizedMonth.month());\n this.date.setValue(ctrlValue);\n\n this.selectedDateMonth.emit(this.date.value);\n datepicker.close();\n }\n\n chosenYearHandler(normalizedYear: Moment): void {\n this.date.setValue(moment());\n const ctrlValue = this.date.value;\n ctrlValue.year(normalizedYear.year());\n this.date.setValue(ctrlValue);\n }\n}\n","
\n \n {{ inputLabel }}\n \n \n \n \n \n \n
\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'msep-no-results',\n templateUrl: './no-results.component.html',\n styleUrls: ['./no-results.component.scss'],\n})\nexport class NoResultsComponent {\n @Input() message = 'No Results';\n}\n","
\n
\n \n
{{ message }}
\n
\n
\n","import { Component, Input, OnDestroy } from '@angular/core';\nimport { AuthenticationService } from 'core/services/authentication.service';\nimport { map, Subscription } from 'rxjs';\n\n@Component({\n selector: 'msep-page-title',\n templateUrl: './page-title.component.html',\n styleUrls: ['./page-title.component.scss'],\n})\nexport class PageTitleComponent implements OnDestroy {\n @Input() forceBackgroundImageUse = false;\n @Input() fxLayoutInput = 'flex-col';\n @Input() fxLayoutAlignInput = 'justify-center align-center';\n isAuthenticated = false;\n private subscription = new Subscription();\n\n constructor(private authenticationService: AuthenticationService) {\n const authenticationSubscription =\n this.authenticationService.isAuthenticatedSubject\n .pipe(map((result) => (this.isAuthenticated = result)))\n .subscribe();\n\n this.subscription = authenticationSubscription;\n }\n\n getCssClass(): string {\n // gives us the ability to use the background image on authenticated views (basically the partner pages)\n if (this.forceBackgroundImageUse) {\n return 'page-title';\n }\n\n return this.isAuthenticated ? 'simple-page-title' : 'page-title';\n }\n\n ngOnDestroy(): void {\n this.subscription?.unsubscribe();\n }\n}\n","\n \n\n","import {\n Component,\n EventEmitter,\n Input,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { MatPaginator, PageEvent } from '@angular/material/paginator';\n\n@Component({\n selector: 'msep-pagination',\n templateUrl: './pagination.component.html',\n})\nexport class PaginationComponent {\n // Setting a value to input properties sets their default values\n @Input() length = 0;\n @Input() pageIndex? = 0;\n @Input() pageSize? = 10;\n @Input() pageSizeOptions = [10, 25, 50, 100];\n\n @Output() pagingChange = new EventEmitter<{\n skip: number;\n take: number;\n }>();\n @ViewChild('msepPaginator', { static: false }) paginator:\n | MatPaginator\n | undefined;\n\n emitPaginationChange(event: PageEvent): void {\n const { pageIndex, pageSize } = event;\n this.pageSize = pageSize;\n const skip = pageSize * pageIndex;\n const take = pageSize;\n\n this.pagingChange.next({ skip, take });\n }\n\n firstPage(): void {\n if (this.paginator !== undefined) {\n this.paginator.firstPage();\n }\n }\n}\n","\n","\n {{ label }}\n \n \n \n \n {{ partner.description }}\n \n \n\n","import {\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnInit,\n Optional,\n Output,\n Self,\n} from '@angular/core';\nimport {\n ControlValueAccessor,\n UntypedFormControl,\n NgControl,\n} from '@angular/forms';\nimport { MatAutocompleteSelectedEvent } from '@angular/material/autocomplete';\nimport { Role } from 'core/enums';\nimport { AdminService } from 'core/services/admin/admin.service';\nimport { AuthenticationService } from 'core/services/authentication.service';\nimport { JwtService } from 'core/services/infrastructure/jwt.service';\nimport { PartnersService } from 'core/services/partners.service';\nimport { Resource } from 'core/services/resources.service';\nimport { Observable } from 'rxjs';\nimport { startWith, switchMap } from 'rxjs/operators';\n\n@Component({\n selector: 'msep-partner-autocomplete',\n templateUrl: './partner-autocomplete.component.html',\n styleUrls: ['./partner-autocomplete.component.scss'],\n})\nexport class PartnerAutocompleteComponent\n implements OnInit, ControlValueAccessor\n{\n @Input() label = 'Search for Organization';\n @Input() partner!: Resource;\n @Input() overrideShowApprovedActiveOnly = false;\n\n @Output() partnerSelected = new EventEmitter();\n private showAllOrganizationsValue = false;\n\n @Input() showHint = false;\n\n // this is a dummy input that the autocomplete and matInput need to satisfy\n // the compiler.\n inputControl = new UntypedFormControl('');\n partnersAutocomplete$: Observable | undefined;\n\n constructor(\n @Optional() @Self() private controlDir: NgControl,\n private adminService: AdminService,\n private authenticationService: AuthenticationService,\n private partnersService: PartnersService,\n private changeDetectorRef: ChangeDetectorRef,\n private jwtService: JwtService\n ) {\n if (this.controlDir) {\n this.controlDir.valueAccessor = this;\n }\n }\n\n ngOnInit(): void {\n this.showAllOrganizationsValue =\n this.authenticationService.isAuthenticated() &&\n !this.jwtService.userHasRole(Role.User) &&\n !this.overrideShowApprovedActiveOnly;\n\n this.partnersAutocomplete$ = this.controlDir.control?.valueChanges.pipe(\n startWith(''),\n switchMap(value =>\n this.showAllOrganizationsValue\n ? this.adminService.getPartnersAutoComplete(value)\n : this.partnersService.getPartnersAutoComplete(value)\n )\n );\n if (this.partner) {\n this.inputControl.setValue(this.partner);\n this.autocompleteDisplay(this.partner);\n this.partnerSelected.emit(this.partner);\n }\n }\n\n autocompleteDisplay(partner: Resource | string): string {\n if (!partner) return '';\n return typeof partner === 'string' ? partner : partner.description;\n }\n\n onAutocompleteSelect(event: MatAutocompleteSelectedEvent): void {\n const selectedValue = event.option.value as Resource;\n this.partnerSelected.emit(selectedValue);\n }\n\n /*\n registerOnChange, registerOnTouched, and writeValue are all required by \n the ControlValueAccessor interface.\n */\n // eslint-disable-next-line\n registerOnChange(fn: any): void {\n this.inputControl.valueChanges.subscribe({\n next: value => {\n if (typeof value === 'string') {\n this.changeDetectorRef.detectChanges();\n fn(value);\n } else {\n fn(value);\n }\n },\n });\n }\n\n // eslint-disable-next-line\n registerOnTouched(fn: any): void {\n // no implementation necessary\n }\n\n // eslint-disable-next-line\n writeValue(obj: any): void {\n this.inputControl.setValue(obj || '');\n }\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { ConfigService } from 'core/services/infrastructure/config.service';\nimport { UtilsService } from 'core/utilities/utils.service';\n\n@Component({\n selector: 'msep-partner-logo',\n templateUrl: './partner-logo.component.html',\n styleUrls: ['./partner-logo.component.scss'],\n})\nexport class PartnerLogoComponent implements OnInit {\n @Input() logoUrl!: string;\n @Input() organizationName!: string;\n\n defaultLogoFileName = 'default-logo.png';\n defaultLogoUrl?: string;\n\n constructor(\n private readonly configService: ConfigService,\n private utilsService: UtilsService\n ) {}\n\n ngOnInit(): void {\n const s3BucketUrl = this.configService.config.resourcesS3BucketUrl;\n this.defaultLogoUrl = this.utilsService.buildEncodedS3Url(\n s3BucketUrl,\n this.defaultLogoFileName\n );\n }\n\n onLogoError(event: Event): void {\n const image = event.target as HTMLImageElement;\n image.src = this.defaultLogoUrl;\n image.onerror = null;\n }\n}\n","\n","
\n \n \n
\n","import { Component, Input } from '@angular/core';\nimport { Role } from 'core/enums';\nimport { JwtService } from 'core/services/infrastructure/jwt.service';\n\n@Component({\n selector: 'msep-partner-menu',\n templateUrl: './partner-menu.component.html',\n styleUrls: ['./partner-menu.component.scss'],\n})\nexport class PartnerMenuComponent {\n @Input() organizationId!: number;\n\n constructor(private jwtService: JwtService) {}\n\n canViewEvents(): boolean {\n return (\n this.jwtService.userHasRole(Role.SysOp) ||\n this.jwtService.userHasRole(Role.Govt) ||\n this.jwtService.userHasRole(Role.Specialist) ||\n this.jwtService.showVhfToAllUsers() ||\n (this.jwtService.showVhfToBetaUsers() && this.jwtService.isBetaUser())\n );\n }\n}\n","\n
\n
\n

{{ partnerInfo.partnerName }}

\n \n = 80,\n yellow: score < 80 && score >= 60,\n orange: score < 60 && score >= 40,\n red: score < 40\n }\"\n fontIcon=\"circle\"\n aria-label=\"Partner engagement tracker icon\"\n >\n \n \n \n \n MSEP Partner since {{ partnerInfo.inductedDate | date : 'yyyy' }}\n \n \n
\n","import { Overlay } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport {\n PartnerDashboardService,\n PartnerInfo,\n} from 'core/services/partner/partner-dashboard.service';\nimport { Subscription } from 'rxjs';\nimport { PartnerTrackerComponent } from '../partner-tracker/partner-tracker.component';\nimport { PartnershipTypeId } from 'core/enums';\n\n@Component({\n selector: 'msep-partner-page-title',\n templateUrl: './partner-page-title.component.html',\n styleUrls: ['./partner-page-title.component.scss'],\n})\nexport class PartnerPageTitleComponent implements OnInit {\n isLoadingTracker = false;\n partnerInfo!: PartnerInfo;\n score: number | null = null;\n showTracker = false;\n\n private subscriptions: Subscription[] = [];\n\n constructor(\n private activatedRoute: ActivatedRoute,\n private overlay: Overlay,\n private partnerDashboardService: PartnerDashboardService\n ) {}\n\n get partnerIsApproved(): boolean {\n return this.partnerInfo.status == 'Approved';\n }\n\n get partnerIsSmallBusiness(): boolean {\n return (\n this.partnerInfo.partnershipType?.indexOf(\n PartnershipTypeId.MsepSmallBusiness\n ) != -1\n );\n }\n\n ngOnInit(): void {\n /* \n If the activated route's resolver is solely dedicated for loading\n this component's data, the key is partnerInfo. If the activated route\n has other resolver needs, a custom object with partnerInfo as a key-value\n pair can be used.\n */\n this.partnerInfo =\n this.activatedRoute.snapshot.data['partnerInfo'] ??\n this.activatedRoute.snapshot.data['resolvedData'].partnerInfo;\n\n this.getScoreById();\n }\n\n displayOverlay(): void {\n const target = document.querySelector('#scoreIcon') as HTMLElement;\n const overlayRef = this.overlay.create({\n hasBackdrop: true,\n backdropClass: 'cdk-overlay-transparent-backdrop',\n panelClass: 'mat-elevation-z8',\n positionStrategy: this.overlay\n .position()\n .flexibleConnectedTo(target)\n .withPositions([\n {\n originX: 'end',\n originY: 'center',\n overlayX: 'start',\n overlayY: 'center',\n },\n {\n originX: 'start',\n originY: 'center',\n overlayX: 'end',\n overlayY: 'center',\n },\n {\n originX: 'center',\n originY: 'bottom',\n overlayX: 'center',\n overlayY: 'top',\n },\n ]),\n });\n const component = new ComponentPortal(PartnerTrackerComponent);\n const componentRef = overlayRef.attach(component);\n componentRef.instance.score = this.score;\n overlayRef.backdropClick().subscribe(() => overlayRef.detach());\n }\n\n private getScoreById(): void {\n this.isLoadingTracker = true;\n\n this.subscriptions.push(\n this.partnerDashboardService\n .getPartnerScoreFromSap(this.partnerInfo.partnerId)\n .subscribe({\n next: (result) => {\n this.score = result.score;\n },\n error: () => {\n this.isLoadingTracker = false;\n },\n complete: () => {\n this.isLoadingTracker = false;\n },\n })\n );\n }\n}\n","= 80,\n yellow: score < 80 && score >= 60,\n orange: score < 60 && score >= 40,\n red: score < 40\n }\"\n>\n {{ description }}\n
\n For further explanation on your tracker, contact your MSEP Specialist\n
\n\n\n In progress, contact your MSEP Specialist for more information\n\n","import { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'msep-partner-tracker',\n templateUrl: './partner-tracker.component.html',\n styleUrls: ['./partner-tracker.component.scss'],\n})\nexport class PartnerTrackerComponent implements OnInit {\n @Input() score!: number | null;\n\n description = '';\n\n ngOnInit(): void {\n if (this.score) {\n if (this.score >= 80) {\n this.description = 'Highly Engaged';\n } else if (this.score >= 60) {\n this.description = 'Opportunity to Increase Engagement';\n } else if (this.score >= 40) {\n this.description = 'Limited Demonstration of Engagement';\n } else {\n this.description = 'No Engagement';\n }\n }\n }\n}\n","\n
\n \n \n \n A minimum of 15 characters\n \n
\n \n \n \n Include at least one uppercase alphabetic character\n \n
\n \n \n \n Include at least one lowercase alphabetic character\n \n
\n \n \n \n Include at least one non-alphanumeric (special) character\n \n
\n \n \n \n Include at least one number\n \n
\n
\n * Cannot be one of your last five passwords used\n
\n\n \n \n \n \n \n \n\n","import { Component, Input } from '@angular/core';\nimport { AlertType } from '../alert/alert.component';\n\n@Component({\n selector: 'msep-password-checklist',\n templateUrl: './password-checklist.component.html',\n styleUrls: ['./password-checklist.component.scss'],\n})\nexport class PasswordChecklistComponent {\n @Input() password!: string;\n\n alertType = AlertType.Info;\n\n get hasCapitalLetter(): boolean {\n return /[A-Z]/.test(this.password);\n }\n\n get hasLowerCaseLetter(): boolean {\n return /[a-z]/.test(this.password);\n }\n\n get hasNumber(): boolean {\n return /\\d/.test(this.password);\n }\n\n get hasSpecialCharacter(): boolean {\n return /[`!@#$%^&*()_+\\-=[\\]{};':\"\\\\|,.<>/?~]/.test(this.password);\n }\n\n get meetsLengthRequirement(): boolean {\n return this.password?.length >= 15;\n }\n}\n","\n \n \n \n \n \n\n","import { HttpParams } from '@angular/common/http';\nimport { Component, OnInit } from '@angular/core';\nimport {\n SystemAlert,\n SystemAlertService,\n} from 'core/services/cms/system-alert.service';\nimport { Observable, switchMap } from 'rxjs';\nimport { ApiResponse } from 'shared/models/api-response';\n\n@Component({\n selector: 'msep-published-alerts-icon',\n templateUrl: './published-alerts-icon.component.html',\n styleUrls: ['./published-alerts-icon.component.scss'],\n})\nexport class PublishedAlertsIconComponent implements OnInit {\n systemAlert$!: Observable>;\n filters = new HttpParams({ fromObject: { skip: 0 } });\n\n constructor(private systemAlertService: SystemAlertService) {}\n\n ngOnInit(): void {\n this.getPublishedAlertCount();\n }\n\n private getPublishedAlertCount(): void {\n this.systemAlert$ = this.systemAlertService.publishedSystemAlertCount$.pipe(\n switchMap(() =>\n this.systemAlertService.publishedSystemAlerts(this.filters)\n )\n );\n }\n}\n","\n
    \n
  • \n
\n\n","import { Component, Input } from '@angular/core';\nimport { map } from 'rxjs/operators';\nimport { NotificationService } from 'core/services/infrastructure/notification.service';\nimport { AlertType } from '../alert/alert.component';\n\n@Component({\n selector: 'msep-server-validation-message',\n templateUrl: './server-validation-message.component.html',\n styleUrls: ['./server-validation-message.component.scss'],\n})\nexport class ServerValidationMessageComponent {\n /**\n * Default behavior will scroll to the top of the window on an error.\n * We allow overrides for situations where we do not want to scroll on error,\n * like when this component shows up in a child component that needs to have focus\n * within the current viewport\n */\n @Input() scrollToTop = true;\n alertType = AlertType.Warn;\n errors$ = this.notificationService.serverValidationNotification$\n .asObservable()\n .pipe(\n map((response) => {\n if (this.scrollToTop) {\n window.scrollTo(0, 0);\n }\n return response;\n })\n );\n constructor(private notificationService: NotificationService) {}\n}\n","
\n \n \n

{{ value }}

\n
\n","import { Component, ElementRef, Input } from '@angular/core';\n\n@Component({\n selector: 'msep-static-display',\n templateUrl: './static-display.component.html',\n styleUrls: ['./static-display.component.scss'],\n})\nexport class StaticDisplayComponent {\n @Input() ignoreTitleCase? = false;\n\n /* @Input() title sets the HTML title attribute, which\n the browser turns into a tooltip. We don't want that functionality\n for this component, so we define the getter/setter explicitly\n and clear out the native element's title attribute.\n */\n private titleValue!: string;\n @Input() get title(): string {\n return this.titleValue;\n }\n set title(value: string) {\n this.titleValue = value;\n this.elementRef.nativeElement.title = '';\n }\n\n @Input() value?: unknown;\n\n constructor(private elementRef: ElementRef) {}\n}\n","import {\n Component,\n Input,\n OnDestroy,\n OnInit,\n SecurityContext,\n} from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n@Component({\n selector: 'msep-video-player',\n templateUrl: './video-player.component.html',\n styleUrls: ['./video-player.component.scss'],\n})\nexport class VideoPlayerComponent implements OnInit, OnDestroy {\n @Input() altText = 'Partner Video';\n @Input() videoPath!: string;\n\n source!: string;\n wistiaClass!: string;\n\n constructor(private domSanitizer: DomSanitizer) {}\n\n ngOnInit(): void {\n this.addScript(this.videoPath);\n this.getVideoPath(this.videoPath);\n this.addVideoEndScript();\n }\n\n private addScript(videoPath: string): void {\n const wistia = document.createElement('script');\n wistia.async = true;\n wistia.id = 'wistia-media';\n wistia.src = 'https://fast.wistia.com/embed/medias/' + videoPath + '.jsonp';\n document.head.appendChild(wistia);\n\n const base = document.createElement('script');\n base.async = true;\n base.id = 'wistia-external';\n base.src = 'https://fast.wistia.com/assets/external/E-v1.js';\n document.head.appendChild(base);\n }\n\n private addVideoEndScript(): void {\n const script = document.createElement('script');\n script.type = 'text/javascript';\n script.async = true;\n script.id = 'wistia-video-end';\n script.innerHTML = `\n window._wq = window._wq || [];\n _wq.push({ id: \"my_video\", onReady: function(video) {\n video.bind('end', function() {\n document.getElementById('wistia-video-frame').setAttribute('hidden', true);\n document.getElementById('video-recommendations').removeAttribute('hidden');\n });\n }});`;\n\n document.head.appendChild(script);\n }\n\n private getVideoPath(videoPath: string): void {\n if (this.videoPath) {\n this.source =\n this.domSanitizer.sanitize(\n SecurityContext.URL,\n 'https://fast.wistia.com/embed/medias/' + videoPath + '/swatch'\n ) ?? '';\n\n this.wistiaClass =\n 'wistia_embed wistia_async_' +\n videoPath +\n ' videoFoam=true autoplay=false';\n }\n }\n\n ngOnDestroy(): void {\n const scripts = document.head.querySelectorAll('script[id^=\"wistia-\"]');\n scripts.forEach((s) => {\n s.remove();\n });\n }\n}\n","
\n
\n
\n
\n \n
\n
\n
\n
\n","import { Directive, HostListener, OnDestroy } from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\nimport { Router } from '@angular/router';\nimport { DialogService } from 'core/services/infrastructure/dialog.service';\nimport { Subscription } from 'rxjs/internal/Subscription';\nimport { ConfirmationDialogComponent } from '../components/confirmation-dialog/confirmation-dialog.component';\n\n@Directive({\n // eslint-disable-next-line\n selector: 'a[href], [exitModal]',\n})\nexport class ExitModalDirective implements OnDestroy {\n subscriptions: Subscription[] = [];\n private confirmDialogRef!: MatDialogRef;\n\n constructor(private dialogService: DialogService, private router: Router) {}\n\n @HostListener('click', ['$event'])\n public handleClick(event: Event): void {\n event.stopPropagation();\n event.preventDefault();\n\n const anchor = this.getAnchorElement(event.target);\n\n if (!anchor) {\n return;\n }\n\n // allow default behavior for email and phone\n if (anchor.href.includes('mailto:') || anchor.href.includes('tel:')) {\n window.location.href = anchor.href;\n return;\n }\n\n const isExternalLink = !anchor.href.includes(location.hostname);\n if (isExternalLink) {\n this.confirmDialogRef = this.dialogService.governmentExitModal(\n anchor.href\n );\n const dialogSubscription = this.confirmDialogRef\n .afterClosed()\n .subscribe();\n\n this.subscriptions.push(dialogSubscription);\n } else {\n this.router.navigate([anchor.attributes.getNamedItem('href')?.value]);\n }\n }\n\n public ngOnDestroy(): void {\n if (this.subscriptions) {\n this.subscriptions.forEach((x) => x.unsubscribe());\n }\n }\n\n // eslint-disable-next-line\n private getAnchorElement(target: any): HTMLAnchorElement {\n let result = target;\n if (target.tagName !== 'A') {\n // element is wrapped with an anchor tag. get the nearest anchor.\n result = target.closest('a');\n }\n\n return result as HTMLAnchorElement;\n }\n}\n","import { Directive, ElementRef } from '@angular/core';\n\n@Directive({\n // eslint-disable-next-line\n selector: '[remove-role]',\n})\nexport class RemoveRoleDirective {\n constructor(private el: ElementRef) {\n this.el.nativeElement.removeAttribute('role');\n }\n}\n","import { DragDropModule } from '@angular/cdk/drag-drop';\nimport { NgModule } from '@angular/core';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatBadgeModule } from '@angular/material/badge';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatNativeDateModule, MatRippleModule } from '@angular/material/core';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatGridListModule } from '@angular/material/grid-list';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatListModule } from '@angular/material/list';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatPaginatorModule } from '@angular/material/paginator';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatSidenavModule } from '@angular/material/sidenav';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { MatSliderModule } from '@angular/material/slider';\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\nimport { MatSortModule } from '@angular/material/sort';\nimport { MatStepperModule } from '@angular/material/stepper';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n@NgModule({\n imports: [\n DragDropModule,\n MatAutocompleteModule,\n MatBadgeModule,\n MatButtonModule,\n MatButtonToggleModule,\n MatCardModule,\n MatCheckboxModule,\n MatChipsModule,\n MatDatepickerModule,\n MatDialogModule,\n MatExpansionModule,\n MatFormFieldModule,\n MatGridListModule,\n MatIconModule,\n MatInputModule,\n MatListModule,\n MatMenuModule,\n MatNativeDateModule,\n MatPaginatorModule,\n MatProgressBarModule,\n MatProgressSpinnerModule,\n MatRadioModule,\n MatRippleModule,\n MatSelectModule,\n MatSidenavModule,\n MatSliderModule,\n MatSlideToggleModule,\n MatSnackBarModule,\n MatStepperModule,\n MatSortModule,\n MatTableModule,\n MatTabsModule,\n MatToolbarModule,\n MatTooltipModule,\n ],\n exports: [\n DragDropModule,\n MatAutocompleteModule,\n MatBadgeModule,\n MatButtonModule,\n MatButtonToggleModule,\n MatCardModule,\n MatCheckboxModule,\n MatChipsModule,\n MatDatepickerModule,\n MatDialogModule,\n MatExpansionModule,\n MatGridListModule,\n MatIconModule,\n MatInputModule,\n MatListModule,\n MatMenuModule,\n MatNativeDateModule,\n MatPaginatorModule,\n MatProgressBarModule,\n MatProgressSpinnerModule,\n MatRadioModule,\n MatRippleModule,\n MatSelectModule,\n MatSidenavModule,\n MatSliderModule,\n MatSlideToggleModule,\n MatSnackBarModule,\n MatStepperModule,\n MatSortModule,\n MatTableModule,\n MatTabsModule,\n MatToolbarModule,\n MatTooltipModule,\n ],\n})\nexport class MaterialModule {}\n","import { Job } from 'core/services/jobs.service';\n\nexport class Coordinates {\n readonly latitude: number;\n readonly longitude: number;\n readonly isNullCoordinates: boolean;\n\n constructor(coordinates: { latitude: number; longitude: number }) {\n this.latitude = coordinates.latitude;\n this.longitude = coordinates.longitude;\n this.isNullCoordinates =\n isNaN(coordinates.latitude) && isNaN(coordinates.longitude);\n }\n}\n\nexport class GoogleGeocoderRequest {\n readonly address?: string;\n readonly coordinates?: Coordinates;\n readonly placeId?: string;\n\n constructor(job: Job) {\n this.coordinates = new Coordinates({\n latitude: Number(job.latitude),\n longitude: Number(job.longitude),\n });\n this.placeId = job.googlePlaceId;\n this.address = this.buildAddress(job);\n }\n\n buildAddress(job: Job): string {\n const { address1, city, state, postal } = job;\n return [address1, city, state, postal].filter(Boolean).join(' ');\n }\n}\n\nexport interface GoogleGeocoderResult {\n formattedAddress?: string;\n googleLocation?: GoogleLocation;\n}\n\nexport class GooglePlaceAutocompleteResult {\n googleLocation?: GoogleLocation;\n isStateOnly: boolean;\n placeId?: string;\n\n constructor(placeResult: google.maps.places.PlaceResult) {\n this.placeId = placeResult.place_id;\n this.isStateOnly = this.locationHasStateInformationOnly(\n placeResult.address_components\n );\n\n if (placeResult.address_components === undefined) {\n return;\n }\n\n if (this.isStateOnly) {\n this.googleLocation = {\n state: this.getStateCode(placeResult.address_components),\n } as GoogleLocation;\n\n return;\n }\n\n this.googleLocation = getGoogleLocation(\n placeResult.address_components,\n placeResult.geometry?.location\n );\n }\n\n private getStateCode(\n addressComponents: google.maps.GeocoderAddressComponent[] | undefined\n ): string | null {\n const stateComponent = addressComponents?.find((addressComponent) =>\n addressComponent.types.includes(AddressComponentType.State)\n );\n if (stateComponent === undefined) return null;\n return stateComponent.short_name;\n }\n\n /*\n * If the location provided is a state or has state as its lowest-level\n * detail (i.e., Virginia, USA; Maryland, USA; or California, USA),\n * filter by the two-letter state code (i.e., VA, MD, or CA) in Elasticsearch.\n */\n private locationHasStateInformationOnly(\n addressComponents: google.maps.GeocoderAddressComponent[] | undefined\n ): boolean {\n if (addressComponents === undefined) return false;\n const addressComponentTypes = new Set();\n\n addressComponents.forEach((addressComponent) => {\n addressComponent.types.forEach((addressComponentType) => {\n addressComponentTypes.add(addressComponentType);\n });\n });\n\n const hasStateInformation =\n addressComponentTypes?.has(AddressComponentType.State) ?? false;\n\n return (\n hasStateInformation &&\n !this.hasNonStateLocationInformation(addressComponentTypes)\n );\n }\n\n private hasNonStateLocationInformation(\n addressComponentTypes: Set\n ): boolean {\n const typesToCheck = [\n AddressComponentType.StreetNumber,\n AddressComponentType.Address1,\n AddressComponentType.City,\n AddressComponentType.ZipCode,\n AddressComponentType.County,\n ];\n return typesToCheck.some((type) => addressComponentTypes?.has(type));\n }\n}\n\nexport function getCoordinates(\n location: google.maps.LatLng | undefined\n): Coordinates | undefined {\n if (!location) {\n return undefined;\n }\n const latitude = location.lat();\n const longitude = location.lng();\n return new Coordinates({ latitude, longitude });\n}\n\nexport function getGoogleLocation(\n addressComponents: google.maps.GeocoderAddressComponent[],\n latitudeAndLongtitude?: google.maps.LatLng\n): GoogleLocation {\n const location = {} as GoogleLocation;\n // loop through the provided location components and build\n // the full location object\n for (const addressComponent of addressComponents) {\n const componentType = addressComponent.types[0];\n switch (componentType) {\n case AddressComponentType.StreetNumber:\n location.address1 = addressComponent.long_name;\n break;\n case AddressComponentType.Address1:\n // add a space if the number is already set\n location.address1 =\n location.address1 && location.address1?.length > 0\n ? ` ${addressComponent.long_name}`\n : addressComponent.long_name;\n break;\n case AddressComponentType.City:\n location.city = addressComponent.long_name;\n break;\n case AddressComponentType.State:\n location.state = addressComponent.short_name;\n break;\n case AddressComponentType.Country:\n location.country = addressComponent.long_name;\n break;\n case AddressComponentType.ZipCode:\n location.zip = addressComponent.long_name;\n break;\n default:\n break;\n }\n }\n\n if (latitudeAndLongtitude) {\n location.coordinates = getCoordinates(latitudeAndLongtitude);\n }\n\n return location;\n}\n\nexport interface GoogleLocation {\n address1?: string;\n city?: string;\n coordinates?: Coordinates;\n country?: string;\n state?: string;\n zip?: string;\n}\n\nexport enum AddressComponentType {\n StreetNumber = 'street_number',\n Address1 = 'route',\n City = 'locality',\n County = 'administrative_area_level_2',\n State = 'administrative_area_level_1',\n ZipCode = 'postal_code',\n Country = 'country',\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Education } from 'core/services/partner/seco.service';\n\n@Pipe({\n name: 'candidateDegreeInfo',\n})\nexport class CandidateDegreeInfoPipe implements PipeTransform {\n transform(education: Education): string {\n const hasDegreeLevel = (education.degreeLevel?.length ?? 0) > 0;\n const hasFieldOfStudy = (education.fieldOfStudy?.length ?? 0) > 0;\n\n if (hasDegreeLevel && hasFieldOfStudy) {\n return education.degreeLevel + ' in ' + education.fieldOfStudy;\n } else if (hasDegreeLevel) {\n return education.degreeLevel ?? '';\n } else if (hasFieldOfStudy) {\n return education.fieldOfStudy ?? '';\n } else {\n return '';\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { WorkExperience } from 'core/services/partner/seco.service';\n\n@Pipe({\n name: 'candidateJobInfo',\n})\nexport class CandidateJobInfoPipe implements PipeTransform {\n transform(experience: WorkExperience): string {\n const hasJobTitle = (experience.jobTitle?.length ?? 0) > 0;\n const hasCompanyName = (experience.companyName?.length ?? 0) > 0;\n\n if (hasJobTitle && hasCompanyName) {\n return experience.jobTitle + ' at ' + experience.companyName;\n } else if (hasJobTitle) {\n return experience.jobTitle ?? '';\n } else if (hasCompanyName) {\n return experience.companyName ?? '';\n } else {\n return '';\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'candidateLocation',\n})\nexport class CandidateLocationPipe implements PipeTransform {\n transform(city: string | undefined, state: string | undefined): string {\n const hasCity = (city?.length ?? 0) > 0;\n const hasState = (state?.length ?? 0) > 0;\n\n if (hasCity && hasState) {\n return city + ', ' + state;\n } else if (hasCity) {\n return city ?? '';\n } else if (hasState) {\n return state ?? '';\n } else {\n return '';\n }\n }\n}\n","import { DatePipe } from '@angular/common';\nimport { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'eventsLocalDateTime',\n})\nexport class EventsLocalDateTimePipe extends DatePipe implements PipeTransform {\n // eslint-disable-next-line\n transform(value: any, oldTimezone: string): any {\n const msepFormat = 'EEEE, MMMM d, y h:mm a';\n const dateWithTimezone = new Date(value);\n const eventOffset = this.getTimezoneOffset(\n dateWithTimezone,\n oldTimezone,\n msepFormat\n );\n\n dateWithTimezone.setHours(dateWithTimezone.getHours() + eventOffset);\n return super.transform(dateWithTimezone, msepFormat);\n }\n\n private getTimezoneOffset(\n date: Date,\n timezone: string,\n format: string\n ): number {\n const tzDate = new Date(super.transform(date, format, timezone) ?? date);\n return (date.getTime() - tzDate.getTime()) / 360e4;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { PartnerProfile } from 'core/services/partners.service';\n\n@Pipe({\n name: 'formatAddress',\n})\nexport class FormatAddressPipe implements PipeTransform {\n transform(profile: PartnerProfile): string {\n const {\n headquartersAddress1,\n headquartersAddress2,\n headquartersCity,\n headquartersState,\n headquartersZip,\n } = profile;\n const addressLine1 = [headquartersAddress1, headquartersAddress2]\n .filter(Boolean)\n .join(' ');\n const addressLine2 = [\n headquartersCity ? headquartersCity + ',' : null,\n headquartersState,\n headquartersZip,\n ]\n .filter(Boolean)\n .join(' ');\n return [addressLine1, addressLine2].join('\\n');\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Job } from 'core/services/jobs.service';\nimport { UtilsService } from 'core/utilities/utils.service';\n\n@Pipe({\n name: 'isJobPublished',\n})\nexport class IsJobPublishedPipe implements PipeTransform {\n constructor(private utilitiesService: UtilsService) {}\n\n transform(job: Job): boolean {\n const startOfToday = this.utilitiesService.getDateAtMidnight(new Date());\n\n if (!job.publishStartDate || !job.publishEndDate || !startOfToday) {\n return false;\n }\n\n if (\n startOfToday >= job.publishStartDate &&\n startOfToday <= job.publishEndDate\n ) {\n return true;\n }\n return false;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'isValueProvided',\n})\nexport class IsValueProvidedPipe implements PipeTransform {\n transform(value?: undefined): unknown {\n if (value) {\n return value;\n }\n\n return '0';\n }\n}\n","import { DatePipe } from '@angular/common';\nimport { Pipe, PipeTransform } from '@angular/core';\nimport { utc } from 'moment';\n\n@Pipe({\n name: 'jobLogDate',\n})\nexport class JobLogTimePipe extends DatePipe implements PipeTransform {\n transform(value: any): any {\n // the log date is formatted a little weirdly, so let moment fix it for us\n const momentFormat = 'YYYY-MM-DD-HH-mm-ss';\n const formattedDate = utc(value, momentFormat).toDate();\n // now that we have a moment date, format it\n const msepFormat = 'MM/dd/yyyy h:mm:ss a zzzz';\n return super.transform(formattedDate, msepFormat);\n }\n}\n","import { DatePipe } from '@angular/common';\nimport { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'localDateTime',\n})\nexport class LocalDateTimePipe extends DatePipe implements PipeTransform {\n // eslint-disable-next-line\n transform(value: any): any {\n if (value == null) return '';\n /* \n Our server dates are zero UTC offset. When we add the zone designator\n for the zero UTC offset ('Z'), Angular's DatePipe can use the\n server date's UTC offset to calculate the local time.\n */\n // Some times are formatted with AM/PM and need a space before the Z\n let dateTimeWithUtcZoneDesignator = value;\n if (dateTimeWithUtcZoneDesignator.match('[0-9]$')) {\n dateTimeWithUtcZoneDesignator += 'Z';\n } else {\n dateTimeWithUtcZoneDesignator += ' Z';\n }\n const customFormat = 'MM/dd/yyyy h:mm:ss a';\n return super.transform(dateTimeWithUtcZoneDesignator, customFormat);\n }\n}\n","import { DatePipe } from '@angular/common';\nimport { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'localDate',\n})\nexport class LocalDatePipe extends DatePipe implements PipeTransform {\n // eslint-disable-next-line\n transform(value: any): any {\n if (value == null) return '';\n /* \n Our server dates are zero UTC offset. When we add the zone designator\n for the zero UTC offset ('Z'), Angular's DatePipe can use the\n server date's UTC offset to calculate the local time.\n */\n let dateTimeWithUtcZoneDesignator = value;\n if (!dateTimeWithUtcZoneDesignator?.endsWith('Z')) {\n dateTimeWithUtcZoneDesignator += 'Z';\n }\n const customFormat = 'MM/dd/yyyy';\n return super.transform(dateTimeWithUtcZoneDesignator, customFormat);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'prefixHttps',\n})\nexport class PrefixHttpsPipe implements PipeTransform {\n transform(url: string): string {\n if (!url) {\n return '';\n }\n\n if (!url.startsWith('http')) {\n url = `https://${url}`;\n }\n\n return url;\n }\n}\n","import { DatePipe } from '@angular/common';\nimport { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'utcDateTime',\n})\nexport class UtcDateTimePipe extends DatePipe implements PipeTransform {\n // eslint-disable-next-line\n transform(value: any): any {\n const msepFormat = 'MM/dd/yyyy h:mm:ss a zzzz';\n return super.transform(value, msepFormat);\n }\n}\n","import { DatePipe } from '@angular/common';\nimport { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'utcDate',\n})\nexport class UtcDatePipe extends DatePipe implements PipeTransform {\n // eslint-disable-next-line\n transform(value: any): any {\n const msepFormat = 'MM/dd/yyyy';\n return super.transform(value, msepFormat, 'UTC');\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'yesNo',\n})\nexport class YesNoPipe implements PipeTransform {\n transform(value?: boolean): string {\n return value ? 'Yes' : 'No';\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'friendlyBytes',\n})\nexport class FriendlyBytesPipe implements PipeTransform {\n transform(bytes: number, decimals = 2): string {\n if (bytes === 0) return '0 Bytes';\n\n const kilobyte = 1024;\n const decimalPlaces = decimals < 0 ? 0 : decimals;\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n\n const exponent = Math.floor(Math.log(bytes) / Math.log(kilobyte));\n return (\n parseFloat(\n (bytes / Math.pow(kilobyte, exponent)).toFixed(decimalPlaces)\n ) +\n ' ' +\n sizes[exponent]\n );\n }\n}\n","import { CandidateDegreeInfoPipe } from './candidate-degree-info.pipe';\nimport { CandidateJobInfoPipe } from './candidate-job-info.pipe';\nimport { CandidateLocationPipe } from './candidate-location.pipe';\nimport { FormatAddressPipe } from './format-address.pipe';\nimport { FriendlyBytesPipe } from './friendly-bytes.pipe';\nimport { IsJobPublishedPipe } from './is-job-published.pipe';\nimport { IsValueProvidedPipe } from './is-value-provided.pipe';\nimport { JobLogTimePipe } from './job-log-date.pipe';\nimport { LocalDateTimePipe } from './local-date-time.pipe';\nimport { LocalDatePipe } from './local-date.pipe';\nimport { UtcDatePipe } from './utc-date.pipe';\nimport { UtcDateTimePipe } from './utc-date-time.pipe';\nimport { YesNoPipe } from './yes-no.pipe';\nimport { PrefixHttpsPipe } from './prefix-https.pipe';\nimport { EventsLocalDateTimePipe } from './events-local-date-time.pipe';\n\nexport const SHARED_PIPES = [\n CandidateDegreeInfoPipe,\n CandidateJobInfoPipe,\n CandidateLocationPipe,\n EventsLocalDateTimePipe,\n FormatAddressPipe,\n FriendlyBytesPipe,\n IsJobPublishedPipe,\n IsValueProvidedPipe,\n JobLogTimePipe,\n LocalDateTimePipe,\n LocalDatePipe,\n PrefixHttpsPipe,\n UtcDateTimePipe,\n UtcDatePipe,\n YesNoPipe,\n];\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\nimport { AngularEditorModule } from '@kolkov/angular-editor';\nimport { SHARED_COMPONENTS } from './components';\nimport { SHARED_DIRECTIVES } from './directives';\nimport { MaterialModule } from './material.module';\nimport { SHARED_PIPES } from './pipes';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n RouterModule,\n PortalModule,\n ReactiveFormsModule,\n AngularEditorModule,\n MaterialModule,\n OverlayModule,\n ],\n providers: [SHARED_PIPES],\n declarations: [SHARED_COMPONENTS, SHARED_PIPES, SHARED_DIRECTIVES],\n exports: [SHARED_COMPONENTS, SHARED_PIPES, SHARED_DIRECTIVES],\n})\nexport class SharedModule {}\n","import { AbstractControl, ValidationErrors } from '@angular/forms';\nimport * as phoneLib from 'google-libphonenumber';\n\nexport function phoneValidator(\n control: AbstractControl\n): ValidationErrors | null {\n const { value } = control;\n\n if (value && !isValidPhoneNumber(value)) {\n return { phoneNumber: true };\n }\n\n return null;\n}\n\nfunction isValidPhoneNumber(input: string): boolean {\n const phoneUtil = phoneLib.PhoneNumberUtil.getInstance();\n\n try {\n const phoneNumber = phoneUtil.parseAndKeepRawInput(input, 'US');\n return phoneUtil.isValidNumber(phoneNumber);\n } catch (error) {\n return false;\n }\n}\n","export const environment = {\r\n production: true,\r\n configSettings: `config.json`,\r\n};\r\n","import { HTTP_INTERCEPTORS } from '@angular/common/http';\nimport { AuthInterceptor } from './auth-interceptor';\n\nexport const CORE_INTERCEPTORS = [\n { provide: HTTP_INTERCEPTORS, useClass: AuthInterceptor, multi: true },\n];\n","import {\n HttpErrorResponse,\n HttpEvent,\n HttpHandler,\n HttpInterceptor,\n HttpRequest,\n} from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { EMPTY, Observable, throwError } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\nimport { NotificationService } from './services/infrastructure/notification.service';\nimport { ConfigService } from './services/infrastructure/config.service';\n\n@Injectable({ providedIn: 'root' })\nexport class AuthInterceptor implements HttpInterceptor {\n constructor(\n private configService: ConfigService,\n private router: Router,\n private notificationService: NotificationService\n ) {}\n\n intercept(\n req: HttpRequest,\n next: HttpHandler\n ): Observable> {\n const isTokenRequest = req.url.indexOf('api/authentication/login') !== -1;\n\n const secoRequest = req.url.indexOf('seco-api') !== -1;\n const sapRequest = req.url.indexOf('mycaa-api') !== -1;\n\n if (\n !isTokenRequest &&\n !secoRequest &&\n !sapRequest &&\n sessionStorage.getItem('id_token')\n ) {\n req = req.clone({\n setHeaders: {\n authorization: `Bearer ${sessionStorage.getItem('id_token')}`,\n // eslint-disable-next-line @typescript-eslint/naming-convention\n 'cache-control': 'no-cache',\n pragma: 'no-cache',\n expires: 'Sat, 01 Jan 2000 00:00:00 GMT',\n },\n });\n }\n\n return next.handle(req).pipe(\n catchError((response: HttpErrorResponse) => {\n if (response.status === 400) {\n this.notificationService.emitServerValidationError(\n response.error.ErrorMessages\n );\n return EMPTY;\n }\n if (\n response.status === 403 &&\n req.url.indexOf(this.configService.config.msepPartnerApiBaseUrl) !==\n -1\n ) {\n this.router.navigate(['/logout']);\n return EMPTY;\n }\n if (response.status === 403 || response.status === 500) {\n this.router.navigate(['/error', response.error.exceptionId]);\n return EMPTY;\n }\n\n return throwError(() => response);\n })\n );\n }\n}\n","import { NgModule, Optional, SkipSelf } from '@angular/core';\nimport { throwIfAlreadyLoaded } from './guards/module-import.guard';\n\n@NgModule({})\nexport class CoreModule {\n constructor(@Optional() @SkipSelf() parentModule: CoreModule) {\n throwIfAlreadyLoaded(parentModule, 'CoreModule');\n }\n}\n","import { NgModule } from '@angular/core';\n\nexport const throwIfAlreadyLoaded = (\n parentModule: NgModule,\n moduleName: string\n): void => {\n if (parentModule) {\n throw new Error(\n `${moduleName} has already been loaded. Import ${moduleName} modules in the AppModule only.`\n );\n }\n};\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'msep-browser-not-supported-layout',\n templateUrl: './browser-not-supported-layout.component.html',\n})\nexport class BrowserNotSupportedLayoutComponent {}\n","
\n \n
\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'msep-hiring-numbers',\n templateUrl: './hiring-numbers.component.html',\n})\nexport class HiringNumbersComponent {}\n","\n Since its inception in 2011, the Military Spouse Employment Partnership has\n grown to include more than\n 950\n employers and nonprofit organizations. In that time, MSEP partners have\n reported hiring more than\n 360,000\n military spouses!\n\n","import { Component } from '@angular/core';\nimport { ConfigService } from 'core/services/infrastructure/config.service';\nimport { DialogService } from 'core/services/infrastructure/dialog.service';\n\n@Component({\n selector: 'msep-about-us',\n templateUrl: './about-us.component.html',\n styleUrls: ['./about-us.component.scss'],\n})\nexport class AboutUsComponent {\n secoBaseUrl = this.configService.config.secoBaseUrl;\n\n constructor(\n private configService: ConfigService,\n private dialogService: DialogService\n ) {}\n\n onClickSeco(): void {\n const dialogRef = this.dialogService.governmentExitModal(this.secoBaseUrl);\n dialogRef.afterClosed().subscribe((result) => {\n if (result) {\n window.open(this.secoBaseUrl, '_blank');\n }\n });\n }\n}\n","\n

About

\n

\n \n

\n
\n
\n

The Need To Support Military Spouses

\n \n
\n \n
\n \n
\n

\n While military spouses are well educated and highly qualified for a\n range of careers, they face unique challenges due to their spouses'\n military service.\n

\n

\n They face a\n \n 21 percent unemployment rate\n \n and a 25 percent wage gap compared to their civilian counterparts.\n

\n
\n
\n
\n \n
\n \n
\n

\n Seventy-seven percent of these spouses want or need work, yet frequent\n relocation is often a barrier to finding and maintaining a rewarding\n career.\n

\n

\n The inability of spouses to obtain and retain fulfilling employment as\n they relocate with the military compromises the quality of life of\n military families and the readiness of the military force.\n

\n
\n
\n
\n\n\n
\n
\n
\n

The Launch of MSEP

\n

\n The Presidential Study Directive-9 Report, Strengthening Our Military\n Families: Meeting America's Commitment, published Jan. 25, 2011,\n highlights the need for a unified Federal government approach to help\n develop career and education opportunities for military spouses. Among\n the target activities to accomplish this goal is increasing\n opportunities for military spouses to obtain private sector careers.\n

\n

\n As a result, the Department of Defense leveraged the successful\n partnerships created under the Army Spouse Employment Partnership by\n expanding the program to Navy, Marine Corps, and Air Force spouses. The\n expanded program - the Military Spouse Employment Partnership, or MSEP -\n officially launched in June 2011 during a ceremony at the U.S. Chamber\n of Commerce.\n

\n
\n
\n
\n
\n
\n
\n\n
\n
\n

MSEP Today

\n

\n MSEP, a targeted recruitment and employment solution, creates employment\n connections that provide companies with direct access to military spouses\n seeking career opportunities and spouses with direct access to employers\n who are actively recruiting. MSEP is part of DoD's broader\n \n Spouse Education and Career Opportunities, or SECO\n \n , initiative, which seeks to strengthen the education and career\n opportunities of military spouses by providing:\n

\n \n \n \n \n \n

\n Career exploration\n opportunities to help them understand their skills, interests, and\n goals\n

\n
\n \n \n

\n Education and training to help them identify\n academic, licensing, or credentialing requirements that can help\n them reach their career goals\n

\n
\n \n \n

\n Employment readiness\n assistance to optimize their self-marketing skills\n

\n
\n \n \n

\n Employment connections that help them find and\n maintain a rewarding career\n

\n
\n
\n
\n
\n
\n
\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'msep-become-a-partner',\n templateUrl: './become-a-partner.component.html',\n styleUrls: ['./become-a-partner.component.scss'],\n})\nexport class BecomeAPartnerComponent {}\n","\n

Connecting Talented Military Spouses To Committed Employers

\n

\n The Military Spouse Employment Partnership is a Department of Defense (DoD)\n led initiative that connects military spouses with hundreds of partner\n employers who have committed to recruit, hire, promote and retain military\n spouses.\n

\n
\n
\n
\n

Partner Benefits

\n

\n The Military Spouse Employment Partnership gives partners priority access\n to a unique and talented group of professionals — military spouses. They\n are skilled, talented and motivated, with a strong work ethic. When\n Military Spouse Employment Partnership companies and organizations hire\n military spouses, they gain outstanding employees with 21st century\n skills.\n

\n
\n
\n \n \n \n \n \n

Unlimited access to valuable talent

\n
\n \n \n

\n Convenient\n solutions for connecting with spouses and uploading job postings\n

\n
\n \n \n

\n Recognition\n opportunities for partners featured in promotional activities,\n social media and at public events\n

\n
\n \n \n

\n Networking\n opportunities with the DoD and other industry-leading partners\n

\n
\n \n \n

\n Leadership\n opportunities for partners to participate in and engage with\n ad-hoc working groups, and the Spouse Ambassador Network\n

\n
\n \n \n

\n Partnership\n development opportunities including LinkedIn partner group,\n Partner-to-partner mentoring, Spouse mentoring and Partner and\n spouse testimonials\n

\n
\n
\n
\n
\n
\n
\n\n Expectations\n

Partner Commitment

\n

\n The Military Spouse Employment Partnership includes industry-leading\n companies and organizations with sound business histories that embrace\n multiple work environments, maximize results and retain a skilled workforce.\n They are a committed group of employers seeking talent with global\n perspectives — qualifications found in military spouses.\n

\n
\n \n \n
\n
\n

Statement of Support

\n

\n All partners sign the MSEP Statement of Support upon acceptance into the\n partnership. By signing the Statement of Support, partners commit to\n increase employment opportunities for military spouses and, when\n possible, maintaining those opportunities as they relocate. In addition,\n partners strive to provide military spouses who perform well with\n opportunities for career advancement.\n

\n
\n \n
\n
\n \n
\n
\n

Partner Reporting: Measuring Success

\n

\n Measuring success of partner efforts in hiring military spouses is\n critical to the success of the Military Spouse Employment Partnership\n and vital to helping reduce the unemployment rates that have challenged\n the military spouse community for years.\n

\n

\n MSEP partners are required to track military spouse hires and report\n successes to the program. When employers identify military spouses as\n part of their talent pool, they not only recognize skilled employees\n within the organization, they also create a valuable connection to the\n communities they serve. Partners are expected to report the number of\n spouses for the following categories:\n

\n
    \n
  • Hired part-time, full-time and virtually
  • \n
  • Spouse employees retained when relocated
  • \n
  • \n Referred to similar employment in other organizations when relocated\n
  • \n
\n

\n MSEP partner specialists will work with employer partners to develop a\n strong partnership. This support includes regular virtual meetings and\n recruitment resources to support military spouse hiring. Your MSEP\n partner specialist will share examples of best practices implemented by\n MSEP partners for the last decade, which include developing the ability\n to meet all reporting requirements.\n

\n
\n
\n
\n
\n \n
\n
\n

\n Companies And Organizations Fulfill Their Commitment To Support Military\n Spouses By Agreeing To\n

\n
    \n
  • \n Identify and promote portable and sustainable career and employment\n opportunities\n
  • \n
  • \n Post job openings and provide a link to your human resources\n employment page on the MSEP Partner Portal\n
  • \n
  • Mentor new MSEP partners
  • \n
\n
\n
\n\n
\n Application Process\n

How To Get Started

\n

\n Organizations interested in joining MSEP should demonstrate a business\n foundation that includes progressive industry experience and positive\n business practices. MSEP also requires that organizations charge no fees or\n costs associated with employment opportunities for military spouses and\n report hiring successes to the program. Excellent candidates for partnership\n offer jobs with geographic portability, access to remote work and offer jobs\n in one or more state or region.\n

\n

APPLICATION AND VETTING PROCESS

\n

\n If MSEP eligibility requirements are met, organizations are encouraged to\n apply to become an MSEP partner.\n

\n
    \n
  1. \n An organization representative can register for a portal account by\n clicking on the Become a Partner link. For franchises, the headquarters\n office must apply for the entire organization.\n
  2. \n
  3. \n Organizations can access and complete the application form on the MSEP\n Partner Portal. (Note: VP/Executive level representative must read the\n application and agree to all MSEP criteria before the application is\n submitted.)\n
  4. \n
  5. \n An MSEP representative reviews the application and conducts additional\n research.\n
  6. \n
  7. \n The MSEP representative provides the application package to the DoD for\n consideration.\n
  8. \n
  9. The DoD conducts a phone interview with the potential partner.
  10. \n
  11. \n The DoD reviews the complete application package and makes a membership\n acceptance recommendation to the Deputy Assistant Secretary of Defense for\n Military Community & Family Policy.\n
  12. \n
  13. \n If accepted for membership, new partners must provide additional\n information, such as their logo and designated point of contact, sign the\n MSEP Statement of Support, and attend the New Partner Induction Ceremony.\n
  14. \n
\n \n Get Started\n \n
\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'msep-browser-not-supported',\n templateUrl: './browser-not-supported.component.html',\n styleUrls: ['./browser-not-supported.component.scss'],\n})\nexport class BrowserNotSupportedComponent {}\n","
\n

Outdated Browser Detected

\n
\n We've detected that you are using an outdated browser! For a better user\n experience, we recommend that you use the latest version of Microsoft Edge,\n Google Chrome or Firefox.\n
\n","\n

{{ title }}

\n

\n {{ description }}\n

\n
\n\n
\n \n \n The Account creation process is exclusively for organizations and their\n employees who wish to partner with the DoD MSEP Program. Please refer to the\n latest guidance about becoming\n an MSEP Partner, and carefully review the information below.\n \n \n

\n Have you reviewed our\n FAQ page yet? You\n can find answers to common MSEP questions.\n

\n \n \n

\n Have you reviewed our\n Job Feed Guidance\n page yet? You can find answers to common job feed questions.\n

\n \n \n \n \n First Name\n \n \n \n \n \n \n \n Last Name\n \n \n \n \n \n \n \n Email Address\n \n \n \n \n \n \n \n Phone Number\n \n \n \n \n \n \n \n Is your organization an MSEP Partner? \n \n \n \n {{ registeredOption.description }}\n \n \n \n \n \n \n \n \n \n Area of Assistance \n \n \n \n {{ assistanceType.description }}\n \n \n \n \n \n \n \n \n Organization Name\n \n \n \n \n \n \n \n \n Organization Website\n \n \n \n \n \n \n \n \n What is your preferred method of communication? \n \n \n \n {{ preferredCommunication.description }}\n \n \n \n \n \n \n \n \n What is the best time to contact you? \n \n \n \n {{ window.description }}\n \n \n \n \n \n \n \n \n Questions & Comments\n \n {{ message.value.length }} / {{ maxMessageLength }}\n \n \n \n \n \n
\n

\n \n

\n
\n
\n
\n
\n \n \n Submit\n \n
\n
\n\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { AssistanceType } from 'core/enums';\nimport {\n UntypedFormBuilder,\n UntypedFormGroup,\n Validators,\n} from '@angular/forms';\nimport { MatSelectChange } from '@angular/material/select';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { HelpDeskService } from 'core/services/help-desk.service';\nimport { ConfigService } from 'core/services/infrastructure/config.service';\nimport { NotificationService } from 'core/services/infrastructure/notification.service';\nimport {\n ContactUsAssistanceType,\n Resource,\n ResourcesService,\n} from 'core/services/resources.service';\nimport { EMPTY, Observable, Subscription } from 'rxjs';\nimport { concatMap, distinctUntilChanged, map } from 'rxjs/operators';\nimport { phoneValidator } from 'shared/validation/phone-number.validator';\nimport { AlertType } from 'shared/components/alert/alert.component';\n\n@Component({\n selector: 'msep-contact-us',\n templateUrl: './contact-us.component.html',\n})\nexport class ContactUsComponent implements OnInit, OnDestroy {\n form!: UntypedFormGroup;\n createAccount?: boolean;\n contactUsAssistanceTypes$!: Observable;\n contactUsContactWindows$ = this.resourcesService.getContactUsContactWindows();\n contactUsPreferredCommunications$ =\n this.resourcesService.getContactUsPreferredCommunications();\n description?: string;\n faqAssistanceTypes = [\n AssistanceType.GeneralProgramQuestions,\n AssistanceType.OtherNotRegistered,\n AssistanceType.OtherRegistered,\n ];\n infoAlertType = AlertType.Info;\n isLoading = false;\n maxMessageLength = 5000;\n recaptchaSiteKey = this.configService.config.recaptchaSiteKey;\n registeredOptions$ = this.resourcesService.getYesNoListBoolean();\n title?: string;\n\n private submissionFailureMessage = 'Error submitting ticket.';\n private submissionSuccessMessage =\n 'Thank you! Your questions or comments have been successfully submitted. We will reach out to you shortly.';\n private subscription: Subscription | undefined;\n\n constructor(\n private activatedRoute: ActivatedRoute,\n private configService: ConfigService,\n private formBuilder: UntypedFormBuilder,\n private helpDeskService: HelpDeskService,\n private notificationService: NotificationService,\n private resourcesService: ResourcesService,\n private router: Router\n ) {}\n\n ngOnInit(): void {\n this.activatedRoute.data.subscribe(data => {\n this.createAccount = data.createAccount ?? false;\n this.description = data.description;\n this.title = data.title;\n });\n this.buildForm();\n this.getContactUsAssistanceTypes();\n }\n\n get isGeneralProgramQuestionOrOther(): boolean {\n return this.faqAssistanceTypes.some(\n x => x === this.form.get('contactUsAssistanceTypeId')?.value\n );\n }\n\n get isJobPostingOrFeeds(): boolean {\n return (\n this.form.get('contactUsAssistanceTypeId')?.value ==\n AssistanceType.JobPostingOrFeeds\n );\n }\n\n get isRegistered(): boolean {\n return this.form.get('isRegistered')?.value;\n }\n\n onOrganizationSelected(organization: Resource): void {\n if (organization) {\n this.form.patchValue({\n organizationId: organization.id,\n organizationName: organization.description,\n });\n }\n }\n\n onRegisteredChange(changeEvent: MatSelectChange): void {\n const { value: isRegistered } = changeEvent;\n if (typeof isRegistered !== 'boolean') return;\n this.form.get('contactUsAssistanceTypeId')?.enable();\n if (this.createAccount) {\n this.form.patchValue({\n contactUsAssistanceTypeId: isRegistered\n ? AssistanceType.NewUserAccount\n : AssistanceType.BecomeMSEPPartner,\n });\n } else {\n this.form.patchValue({ contactUsAssistanceTypeId: null });\n }\n if (!isRegistered) {\n // remove organization information if user is not a current partner\n this.form\n .get('nonPartnerOrganizationName')\n ?.setValidators([Validators.required, Validators.maxLength(255)]);\n this.form\n .get('nonPartnerOrganizationWebsite')\n ?.setValidators([Validators.required, Validators.maxLength(255)]);\n this.form.patchValue({ organizationId: null, organizationName: null });\n } else {\n this.clearNonPartnerValidators();\n }\n }\n\n onSubmit(): void {\n this.isLoading = true;\n\n this.subscription = this.helpDeskService\n .createHelpDeskTicket(this.form.value, this.form.value.reCaptcha)\n .subscribe({\n next: () => {\n this.notificationService.emitSuccess(this.submissionSuccessMessage);\n this.router.navigate(['/']);\n\n this.isLoading = false;\n },\n error: () => {\n this.notificationService.emitFailure(this.submissionFailureMessage);\n this.isLoading = false;\n },\n });\n }\n\n private buildForm(): void {\n this.form = this.formBuilder.group({\n firstName: [null, [Validators.required, Validators.maxLength(50)]],\n lastName: [null, [Validators.required, Validators.maxLength(50)]],\n email: [\n null,\n [Validators.required, Validators.email, Validators.maxLength(256)],\n ],\n phone: [null, [Validators.required, phoneValidator]],\n isRegistered: [null, Validators.required],\n contactUsAssistanceTypeId: [\n { value: null, disabled: true },\n Validators.required,\n ],\n nonPartnerOrganizationName: null,\n nonPartnerOrganizationWebsite: null,\n organizationId: null,\n organizationName: null,\n contactUsContactWindowId: [null, Validators.required],\n contactUsPreferredCommunicationId: [null, Validators.required],\n message: [\n null,\n [Validators.required, Validators.maxLength(this.maxMessageLength)],\n ],\n reCaptcha: [null, Validators.required],\n });\n }\n\n private clearNonPartnerValidators(): void {\n this.form.get('nonPartnerOrganizationName')?.clearValidators();\n this.form.get('nonPartnerOrganizationWebsite')?.clearValidators();\n this.form.get('nonPartnerOrganizationName')?.updateValueAndValidity();\n this.form.get('nonPartnerOrganizationWebsite')?.updateValueAndValidity();\n }\n\n private getContactUsAssistanceTypes(): void {\n this.contactUsAssistanceTypes$ = this.form.valueChanges.pipe(\n map(values => values.isRegistered as boolean | undefined),\n distinctUntilChanged(),\n concatMap(isRegistered => {\n if (typeof isRegistered !== 'boolean') return EMPTY;\n return this.resourcesService.getContactUsAssistanceTypes(isRegistered);\n })\n );\n }\n\n ngOnDestroy(): void {\n this.subscription?.unsubscribe();\n }\n}\n","import { ActivatedRoute } from '@angular/router';\nimport { Component, OnInit } from '@angular/core';\nimport { JwtService } from 'core/services/infrastructure/jwt.service';\nimport { AlertType } from 'shared/components/alert/alert.component';\n\n@Component({\n selector: 'msep-error',\n templateUrl: './error.component.html',\n})\nexport class ErrorComponent implements OnInit {\n exceptionId = 0;\n alertType = AlertType.Warn;\n homePage = '';\n\n constructor(private route: ActivatedRoute, private jwtService: JwtService) {}\n\n ngOnInit(): void {\n this.exceptionId = Number(this.route.snapshot.paramMap.get('exceptionId'));\n this.homePage = this.jwtService.getHomePage();\n }\n}\n","\n

Error Processing Request

\n
\n\n\n Sorry, an error has occurred while trying to process your request. Exception\n ID: {{ exceptionId }}\n\n\n

\n Please return to the\n home page to continue.\n

\n","\n

Frequently Asked Questions (FAQs)

\n

\n Listed are the most frequently asked questions regarding the MSEP portal and\n program. Please select from our list of categories to find the question that\n will most accurately resolve your inquiry.\n

\n
\n\n\n \n \n \n \n {{ faq.question }}\n \n \n \n \n\n

Did not find your question?

\n\n Contact Us\n
\n\n \n
\n \n

\n {{ faq.question }}\n

\n
\n
\n
\n
\n","import { Component, OnInit, SecurityContext } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { ActivatedRoute } from '@angular/router';\nimport { Faq } from 'core/services/resources.service';\nimport { UtilsService } from 'core/utilities/utils.service';\n\n@Component({\n selector: 'msep-faqs',\n templateUrl: './faqs.component.html',\n styleUrls: ['./faqs.component.scss'],\n})\nexport class FaqsComponent implements OnInit {\n faqs!: Faq[];\n urlPath = '/faqs';\n\n constructor(\n private activatedRoute: ActivatedRoute,\n private domSanitizer: DomSanitizer,\n private utilsService: UtilsService\n ) {}\n\n ngOnInit(): void {\n this.faqs = this.activatedRoute.snapshot.data['resolvedData'];\n this.faqs?.forEach((faq) => {\n faq.answer =\n this.domSanitizer.sanitize(SecurityContext.HTML, faq.answer) ?? '';\n });\n }\n\n convertToKebabCase(string: string): string {\n return this.utilsService.convertToKebabCase(string);\n }\n}\n","// use this when you need to compare a sub-group of a form group\nimport { UntypedFormControl } from '@angular/forms';\nimport { ErrorStateMatcher } from '@angular/material/core';\n\n// while using angular material inputs\nexport class GroupComparisonErrorStateMatcher implements ErrorStateMatcher {\n isErrorState(control: UntypedFormControl | null): boolean {\n if (!control || !control.parent) {\n return false;\n }\n return control.parent.invalid && control.touched;\n }\n}\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\nexport class EqualityValidator {\n static stringCompare(\n controlName1: string,\n controlName2: string,\n friendlyErrorMessage = 'Values do not match'\n ): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n const firstControl = control.get(controlName1);\n const secondControl = control.get(controlName2);\n\n if (firstControl?.pristine && secondControl?.pristine) {\n return null;\n }\n\n if (\n firstControl?.value &&\n secondControl?.value &&\n firstControl.value !== secondControl.value\n ) {\n return { stringCompareMismatch: { message: friendlyErrorMessage } };\n }\n\n return null;\n };\n }\n}\n","\n

Forgot Password

\n

\n Please provide the email that you use to log in to the MSEP Partner Portal.\n

\n
\n\n\n","import {\n AbstractControlOptions,\n UntypedFormBuilder,\n UntypedFormGroup,\n Validators,\n} from '@angular/forms';\nimport { AccountService } from 'core/services/account.service';\nimport { Component, OnInit, OnDestroy } from '@angular/core';\nimport { GroupComparisonErrorStateMatcher } from 'shared/validation/group-errorstate-matcher';\nimport { JwtService } from 'core/services/infrastructure/jwt.service';\nimport { NotificationService } from 'core/services/infrastructure/notification.service';\nimport { Subscription } from 'rxjs';\nimport { ActivatedRoute } from '@angular/router';\nimport { AlertType } from 'shared/components/alert/alert.component';\nimport { EqualityValidator } from 'shared/validation/equality.validator';\nimport { ConfigService } from 'core/services/infrastructure/config.service';\n\n@Component({\n selector: 'msep-forgot-password',\n templateUrl: './forgot-password.component.html',\n})\nexport class ForgotPasswordComponent implements OnInit, OnDestroy {\n expiredTokenAlertType = AlertType.Warn;\n form!: UntypedFormGroup;\n isLoading = false;\n hasExpiredToken = false;\n matcher = new GroupComparisonErrorStateMatcher();\n recaptchaSiteKey = this.configService.config.recaptchaSiteKey;\n private submissionSuccessMessage =\n 'If a valid email address was entered, instructions to reset your password have been sent to your email.';\n private subscription: Subscription | undefined;\n\n constructor(\n private accountService: AccountService,\n private activatedRoute: ActivatedRoute,\n private configService: ConfigService,\n private formBuilder: UntypedFormBuilder,\n private jwtService: JwtService,\n private notificationService: NotificationService\n ) {}\n\n ngOnInit(): void {\n this.form = this.formBuilder.group({\n emailGroup: this.formBuilder.group(\n {\n email: [\n '',\n [Validators.required, Validators.email, Validators.maxLength(256)],\n ],\n confirmEmail: [\n '',\n [Validators.required, Validators.email, Validators.maxLength(256)],\n ],\n },\n {\n validator: EqualityValidator.stringCompare(\n 'email',\n 'confirmEmail',\n 'Emails do not match'\n ),\n } as AbstractControlOptions\n ),\n reCaptcha: [null, Validators.required],\n });\n\n this.activatedRoute.queryParams.subscribe((params) => {\n this.hasExpiredToken = params['expiredToken'] === 'true';\n });\n }\n\n onSubmit(): void {\n this.isLoading = true;\n\n this.subscription = this.accountService\n .sendPasswordResetTokenWithRecaptcha(\n this.form.value.emailGroup,\n this.form.value.reCaptcha\n )\n .subscribe({\n next: () => {\n this.notificationService.emitSuccess(this.submissionSuccessMessage);\n this.jwtService.routeToHomePage();\n this.isLoading = false;\n },\n error: () => {\n this.isLoading = false;\n },\n complete: () => {\n this.isLoading = false;\n },\n });\n }\n\n ngOnDestroy(): void {\n this.subscription?.unsubscribe();\n }\n}\n","import { Component } from '@angular/core';\nimport { ConfigService } from 'core/services/infrastructure/config.service';\nimport { DialogService } from 'core/services/infrastructure/dialog.service';\n\n@Component({\n selector: 'msep-help',\n templateUrl: './help.component.html',\n})\nexport class HelpComponent {\n secoBaseUrl = this.configService.config.secoBaseUrl;\n\n constructor(\n private configService: ConfigService,\n private dialogService: DialogService\n ) {}\n\n onClickSeco(): void {\n const dialogRef = this.dialogService.governmentExitModal(this.secoBaseUrl);\n dialogRef.afterClosed().subscribe((result) => {\n if (result) {\n window.open(this.secoBaseUrl, '_blank');\n }\n });\n }\n}\n","\n

Help

\n
\n\n
\n

How can I get more information on joining MSEP?

\n

\n For more information on the Military Spouse Employment Partnership (MSEP)\n and joining the partnership, please view our\n Become a Partner and\n Partner Resources\n pages. If you have any other questions or would like further assistance,\n feel free to call the MSEP program staff at\n 877-940-MSEP (6737).\n

\n
\n\n
\n

\n My company is an MSEP Partner. How do I register for access to the MSEP\n Portal?\n

\n

\n To register for an account with an existing MSEP Partner, contact your\n organization's primary POC and ask them to send you an invitation to\n register via MSEP's user management page. If you need further assistance,\n contact our\n MSEP Support Team.\n

\n
\n\n
\n

Are you a military spouse?

\n

\n Search for jobs\n with MSEP Partners. Find employment opportunities with hundreds of companies\n and organizations committed to recruiting, hiring, promoting and retaining\n military spouses in portable careers. Call\n 800-342-9647.\n

\n
\n\n
\n

Need additional help?

\n

\n To send us your comments or report any technical difficulties you experience\n with our website,\n contact us.\n

\n
\n","\n\n
\n
\n Who are we?\n

Our Mission

\n

\n \n

\n \n \n

\n The Military Spouse Employment Partnership is a targeted recruitment\n and employment solution for spouses and companies that:\n

\n
\n \n \n \n

\n Connects corporate and non-profit organizations\n with military spouses representing ALL Military Services.\n

\n
\n \n \n

\n Provides human resource managers with\n recruitment solutions - military spouses.\n

\n
\n \n \n

\n Prepares military spouses to become\n competitive, \"job ready\" applicants.\n

\n
\n \n \n

\n Connects military spouses with employers\n seeking the essential 21st century workforce skills and\n attributes they possess.\n

\n
\n
\n
\n
\n \n About Us\n \n \n View Our Partners\n \n
\n
\n
\n
\n
\n\n
\n
\n Who works with us?\n

Our Partners

\n
\n \n \n \n \n \n
\n \n
\n
\n \n
\n \n \n \n\n\n\n
\n \n Is your organization a great fit?\n \n

Partnership Types

\n

\n As an industry leader and MSEP employer, your company or organization can\n support military families while increasing your workforce and\n strengthening your business. If MSEP eligibility requirements are met,\n companies and organizations are encouraged to apply to one of the\n following partnership types:\n

\n
\n
\n
\n \n \n \n

\n Organizations and businesses that are committed to providing\n direct employment opportunities and career support for military\n spouses on a local, national, or worldwide basis.\n

\n
    \n
  • \n Federal Agency Partners: Federal government\n departments and agencies that work with MSEP to identify and\n support military spouse candidates seeking federal employment\n opportunities.\n
  • \n
  • \n Education: Accredited primary, secondary and\n higher education institutions that provide direct employment\n opportunities to military spouses on a local, regional, or\n national basis. While the primary focus is on targeting\n educators, MSEP Education includes all employment opportunities\n within a school system (e.g., teachers, counselors, nurses,\n administrators, and food service workers).\n
  • \n
  • \n Small Business: A specialized employer program\n offering small businesses near local installations the\n opportunity to support spouse employment efforts within military\n impacted communities.\n
  • \n
\n \n Become A Partner\n \n
\n
\n \n \n

\n A committed group of organizations within the Military Spouse\n Employment Partnership that has community networks and leverages\n those networks to broaden knowledge about military spouse career\n resources in communities where military spouses live and work.\n

\n \n Become A Partner\n \n
\n
\n \n \n

\n Community Action Networks (CAN) are comprised of local civic and\n business organizations focused on educating local employers on the\n need for employing military spouses and the impact on defense\n readiness as well as local economies. CAN networks unify under the\n challenge of military spouse unemployment and network on behalf of\n MSEP, driving awareness of program resources and employment\n opportunities for military spouses at the local level.\n

\n

\n For more information on MSEP CAN, call us at 877-940-MSEP (6737).\n

\n
\n
\n
\n
\n
\n\n\n
\n What MSEP partners are saying\n\n

Partner Testimonials

\n\n

\n We hope you will join the hundreds of MSEP employers in the commitment to\n recruit, hire, promote and retain military spouses to support our military\n families in their service to our nation.\n

\n\n \n
\n

\n As an organization that serves military members and their families,\n we're honored to have team members who are military spouses throughout\n our organization. They live and breathe the military lifestyle, and can\n relate to our members, allowing them to provide exceptional member\n service. We're grateful for their service to our country and to our\n members.\n

\n
\n \n
\n
\n
\n
\n\n\n
\n
\n Are you a military spouse?\n

Search for jobs with MSEP Partners

\n

\n Find employment opportunities with hundreds of companies and\n organizations committed to recruiting, hiring, promoting and retaining\n military spouses in portable careers. Call 800-342-9647.\n

\n Search Jobs \n
\n
\n
\n
\n
\n\n","import { Component } from '@angular/core';\nimport { GhostLoaderType } from 'core/enums';\nimport { ConfigService } from 'core/services/infrastructure/config.service';\nimport { DialogService } from 'core/services/infrastructure/dialog.service';\nimport { PartnerData, PartnersService } from 'core/services/partners.service';\nimport { map } from 'rxjs';\n\n@Component({\n selector: 'msep-home-welcome',\n templateUrl: './home-welcome.component.html',\n styleUrls: ['./home-welcome.component.scss'],\n})\nexport class HomeWelcomeComponent {\n ghostLoaderType = GhostLoaderType.PartnerLogo;\n ghosts = 8;\n navyFederalLogo =\n this.configService.config.logosS3BucketUrl + '/B1875DD0-840C2966.png';\n partners!: PartnerData[];\n randomPartners$ = this.partnerService.getRandomPartners().pipe(\n map((result) => {\n this.partners = result;\n return result;\n })\n );\n secoBaseUrl = this.configService.config.secoBaseUrl;\n // trigger tab group active status on component init\n selectedPartnerIndex = 0;\n constructor(\n private configService: ConfigService,\n private dialogService: DialogService,\n private partnerService: PartnersService\n ) {}\n\n onClickSeco(): void {\n const dialogRef = this.dialogService.governmentExitModal(this.secoBaseUrl);\n dialogRef.afterClosed().subscribe((result) => {\n if (result) {\n window.open(this.secoBaseUrl, '_blank');\n }\n });\n }\n}\n","import { animate, style, transition, trigger } from '@angular/animations';\n\nconst enterTransition = transition(':enter', [\n style({ opacity: 0 }),\n animate('0.25s ease-in', style({ opacity: 1 })),\n]);\n\nconst leaveTransition = transition(':leave', [\n style({ opacity: 1 }),\n animate('0.25s ease-out', style({ opacity: 0 })),\n]);\n\nexport const fadeIn = trigger('fadeIn', [enterTransition]);\nexport const fadeOut = trigger('fadeOut', [leaveTransition]);\n","import { Injectable } from '@angular/core';\nimport { UtilsService } from 'core/utilities/utils.service';\n\n/* eslint-disable sonarjs/no-duplicate-string */\n@Injectable({ providedIn: 'root' })\nexport class JobFeedGuidanceService {\n constructor(private utilsService: UtilsService) {}\n\n getExampleCsv(): ExampleCsv[] {\n return [\n {\n title: 'Web Developer',\n description: 'Suspendisse mollis scelerisque aliquam',\n url: 'https://www.example.com/jobs/web-developer-wd400',\n jobIdentifier: 'WD400',\n industry: 'Computer and Mathematical',\n jobType: 'Full time',\n compensationType: 'salary',\n hourlyRate: null,\n minSalary: '$80,000',\n maxSalary: '$100,000',\n education: 'Bachelors Degree',\n minQualifications: 'html /plain text',\n prefQualifications: 'html /plain text',\n yearsOfExperience: '1-3',\n career: 'Entry Level',\n address: '6404 Ivy Lane',\n address2: 'Suite 600',\n city: 'Greenbelt',\n state: 'MD',\n postal: '20770',\n country: 'USA',\n isTelework: true,\n isRemoteJob: false,\n isHotJob: false,\n jobOpenings: '1',\n tags: 'web, developer, example',\n },\n {\n title: 'Web Developer',\n description: 'Suspendisse mollis scelerisque aliquam',\n url: 'https://www.example.com/jobs/web-designer-wd401\t',\n jobIdentifier: 'WD401',\n industry: 'Computer and Mathematical',\n jobType: 'Full time',\n compensationType: 'hourly',\n hourlyRate: '15.00',\n minSalary: null,\n maxSalary: null,\n education: 'Bachelors Degree',\n minQualifications: 'html /plain text',\n prefQualifications: 'html /plain text',\n yearsOfExperience: '4-7',\n career: 'Experienced (Non-manager)',\n address: '6404 Ivy Lane',\n address2: 'Suite 600',\n city: 'Greenbelt',\n state: 'MD',\n postal: '20770',\n country: 'USA',\n isTelework: true,\n isRemoteJob: true,\n isHotJob: true,\n jobOpenings: '1',\n tags: 'web, designer, example',\n },\n ];\n }\n\n getExampleJson(): string {\n const example = {\n jobs: [\n {\n title: 'Web Developer',\n jobIdentifier: 'WD400',\n url: 'https://www.example.com/jobs/web-developer-wd400',\n industry: 'Computer and Mathematical',\n jobType: 'Full time',\n description: 'Suspendisse mollis scelerisque aliquam',\n education: 'Bachelors Degree',\n minQualifications: 'html /plain text',\n prefQualifications: 'html /plain text',\n yearsOfExperience: '10+',\n career: 'Senior Executive (President, CFO, etc.)',\n compensationType: 'salary',\n hourlyRate: '',\n minSalary: '$80,000',\n maxSalary: '$100,000',\n address: '6404 Ivy Lane',\n address2: 'Suite 600',\n city: 'Greenbelt',\n state: 'MD',\n postal: '20770',\n country: 'USA',\n isTelework: true,\n isRemoteJob: false,\n isHotJob: true,\n jobOpenings: '1',\n tags: 'Test, One, Two',\n },\n {\n title: 'Web Designer',\n jobIdentifier: 'WD401',\n url: 'https://www.example.com/jobs/web-designer-wd401',\n industry: 'Computer and Mathematical',\n jobType: 'Full time',\n description: 'Suspendisse mollis scelerisque aliquam',\n education: 'Bachelors Degree',\n minQualifications: 'html /plain text',\n prefQualifications: 'html /plain text',\n yearsOfExperience: '1-3',\n career: 'Manager (Manager/Supervisor of Staff)',\n compensationType: 'hourly',\n hourlyRate: '15.00',\n minSalary: '',\n maxSalary: '',\n address: '6404 Ivy Lane',\n address2: 'Suite 600',\n city: 'Greenbelt',\n state: 'MD',\n postal: '20770',\n country: 'USA',\n isTelework: false,\n isRemoteJob: false,\n isHotJob: true,\n jobOpenings: '1',\n tags: 'Test1, Test2, Test3',\n },\n ],\n };\n\n return JSON.stringify(example, null, 2);\n }\n\n // formatted a little funny to make our lives easier\n getExampleXml(): string {\n return `\n \n Web Developer\n WD400\n https://www.example.com/jobs/web-developer-wd400\n Computer and Mathematical\n Full time\n Suspendisse mollis scelerisque aliquam\n Bachelors Degree\n html /plain text\n html /plain text\n 8-10\n Executive (SVP, VP, Department Head, etc.)\n salary\n \n $60,0000\n $70,0000\n
6404 Ivy Lane
\n Suite 600\n Greenbelt\n MD\n 20770\n USA\n true\n false\n false\n 5\n Test, One, Two\n
\n \n Web Developer\n WD401\n https://www.example.com/jobs/web-developer-wd401\n Computer and Mathematical\n Full time\n Suspendisse mollis scelerisque aliquam\n Bachelors Degree\n html /plain text\n html /plain text\n 4-7\n Experienced (Non-manager)\n hourly\n 15.00\n \n \n
6404 Ivy Lane
\n Suite 600\n Greenbelt\n MD\n 20770\n USA\n false\n true\n true\n 3\n Test, One, Two\n
\n
`;\n }\n\n getNavLinks(): NavLink[] {\n const navLinkTitles = [\n 'General Job Feed Guidance',\n 'Required for Job Postings',\n 'Highly Recommended for Job Postings',\n 'Example XML Feed',\n 'Example JSON Feed',\n 'Example CSV Feed',\n 'Job Feeds with HTML Content',\n ];\n\n return navLinkTitles.map((title) => ({\n title,\n fragment: this.utilsService.convertToKebabCase(title),\n }));\n }\n\n getRequiredSpecs(): JobFeedSpec[] {\n return [\n {\n field: 'title',\n type: 'String',\n description: 'The title of job being posted.',\n },\n {\n field: 'description',\n type: 'String',\n description: 'A description of the job overview being posted.',\n },\n {\n field: 'url',\n type: 'String',\n description:\n \"The URL of the job posting on your company's site. This URL must be unique.\",\n },\n ];\n }\n}\n\nexport interface ExampleCsv {\n title: string;\n description: string;\n url: string;\n jobIdentifier: string;\n industry: string;\n jobType: string;\n compensationType: string;\n hourlyRate: string | null;\n minSalary: string | null;\n maxSalary: string | null;\n education: string;\n minQualifications: string;\n prefQualifications: string;\n yearsOfExperience: string;\n career: string;\n address: string;\n address2: string;\n city: string;\n state: string;\n postal: string;\n country: string;\n isTelework: boolean;\n isRemoteJob: boolean;\n isHotJob: boolean;\n jobOpenings: string;\n tags: string;\n}\n\nexport interface JobFeedSpec {\n field: string;\n type: string;\n description: string;\n}\n\nexport interface NavLink {\n title: string;\n fragment: string;\n}\n","\n

Job Feed Guidance

\n
\n\n\n \n \n \n \n {{ navLink.title }}\n \n \n \n \n\n

Have any further questions?

\n Contact Us\n
\n\n \n
\n

General Job Feed Guidance

\n \n

\n The MSEP Partner Portal uses an automated importing of job feeds.\n Feeds can only be received via HTTPS. The portal is unable to accept\n delivery as SFTP, FTP or daily emails due to security regulations.\n MSEP is only able to access a partner API via the use of basic\n authorization (username/password) or with a partner provided API\n key.\n \n

\n

\n Job feeds - at a minimum - must include the job title, job\n description, and the full job URL, which must be unique to that\n specific job post. We also recommend including the city, state, postal\n code, and country fields. This will allow military spouses to easily\n target jobs that you provide in their area. The addition of job type,\n preferred qualifications, education, and salary/hourly fields will\n further enhance the overall search results for your company.\n

\n

\n The portal technical team posts all jobs on the MSEP Partner Portal.\n They are responsible for testing, parsing, importing and ensuring the\n imports will work successfully on the MSEP Partner Portal. However,\n the portal contract technical team cannot make any\n edits to your feed.\n

\n

\n If you would like to schedule a conference call for clarification on\n this process, please submit a\n Contact Us. Prior to the conference call, we prefer that you provide a fully\n constructed test feed for us to review if one is available. This will\n allow the technical team to review the feed structure and provide\n feedback.\n

\n \n

\n Note:\n

\n
    \n
  • \n When configuring your job feeds, we match your source field names\n to our destination field names. Your feeds do not need to match\n our field names exactly, however, the types do need to match and\n the feed source must have the minimum required fields (title,\n description, URL).\n
  • \n
  • \n All job feed data must follow UTF-8 character encoding standards.\n
  • \n
\n
\n
\n\n

Required for Job Postings

\n
\n \n \n Field\n \n {{ field.field }}\n \n \n \n Type\n \n {{ field.type }}\n \n \n \n Description\n \n \n \n \n \n \n \n
\n \n
\n \n \n Field\n \n {{ field.field }}\n \n \n \n Type\n \n {{ field.type }}\n \n \n \n Description\n \n \n \n \n \n \n \n
\n \n \n

\n Note: All fields may be wrapped in\n <![CDATA[]]>.\n

\n
\n

Example XML Feed

\n \n
\n      
\n

Example JSON Feed

\n \n
\n \n JSON api endpoint\n \n \n \n
\n
\n      
\n

Example CSV Feed

\n \n
\n \n CSV api endpoint\n \n \n \n
\n
\n \n \n title\n \n {{ field.title }}\n \n \n \n description\n \n {{ field.description }}\n \n \n \n url\n \n {{ field.url }}\n \n \n \n \n jobIdentifier\n \n \n {{ field.jobIdentifier }}\n \n \n \n industry\n \n {{ field.industry }}\n \n \n \n jobType\n \n {{ field.jobType }}\n \n \n \n \n compensationType\n \n \n {{ field.compensationType }}\n \n \n \n hourlyRate\n \n {{ field.hourlyRate }}\n \n \n\n \n minSalary\n \n {{ field.minSalary }}\n \n \n \n maxSalary\n \n {{ field.maxSalary }}\n \n \n \n \n yearsOfExperience\n \n \n {{ field.yearsOfExperience }}\n \n \n \n career\n \n {{ field.career }}\n \n \n \n jobOpenings\n \n {{ field.jobOpenings }}\n \n \n \n education\n \n {{ field.education }}\n \n \n \n \n minQualifications\n \n \n {{ field.minQualifications }}\n \n \n \n \n prefQualifications\n \n \n {{ field.prefQualifications }}\n \n \n \n address\n \n {{ field.address }}\n \n \n \n address2\n \n {{ field.address2 }}\n \n \n \n city\n \n {{ field.city }}\n \n \n \n state\n \n {{ field.state }}\n \n \n \n postal\n \n {{ field.postal }}\n \n \n \n country\n \n {{ field.country }}\n \n \n \n isTelework\n \n {{ field.isTelework }}\n \n \n \n isRemoteJob\n \n {{ field.isRemoteJob }}\n \n \n \n isHotJob\n \n {{ field.isHotJob }}\n \n \n \n tags\n \n {{ field.tags }}\n \n \n \n \n \n
\n
\n

Job Feeds with HTML content

\n \n

Tags allowed by default

\n a, b, br, div, em, hr, i, li, ol, p, span, strong, u, ul\n
\n
\n
\n
\n\n\n Back to Top\n \n\n","import {\n AfterContentInit,\n Component,\n OnInit,\n SecurityContext,\n} from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { ConfigService } from 'core/services/infrastructure/config.service';\nimport { JobFeedGuidanceService } from 'core/services/job-feed-guidance.service';\nimport { ResourcesService } from 'core/services/resources.service';\nimport { fadeIn, fadeOut } from 'core/utilities/animations';\nimport { fromEvent, map, Observable, startWith } from 'rxjs';\nimport { AlertType } from 'shared/components/alert/alert.component';\n\n@Component({\n selector: 'msep-job-feed-guidance',\n templateUrl: './job-feed-guidance.component.html',\n styleUrls: ['./job-feed-guidance.component.scss'],\n animations: [fadeIn, fadeOut],\n})\nexport class JobFeedGuidanceComponent implements OnInit, AfterContentInit {\n private readonly msepPartnerApiUrl =\n this.configService.config.msepPartnerApiBaseUrl;\n\n alertType = AlertType.Info;\n careerLevels$ = this.resourcesService.getCareerLevels();\n educationLevels$ = this.resourcesService.getEducationLevels();\n exampleCsvColumns = [\n 'title',\n 'description',\n 'url',\n 'jobIdentifier',\n 'industry',\n 'jobType',\n 'compensationType',\n 'hourlyRate',\n 'minSalary',\n 'maxSalary',\n 'education',\n 'yearsOfExperience',\n 'career',\n 'minQualifications',\n 'prefQualifications',\n 'address',\n 'address2',\n 'city',\n 'state',\n 'postal',\n 'country',\n 'isTelework',\n 'isRemoteJob',\n 'isHotJob',\n 'jobOpenings',\n 'tags',\n ];\n exampleCsv = this.jobFeedGuidanceService.getExampleCsv();\n exampleCsvUrl = `${this.msepPartnerApiUrl}/job-feed-guidance/sample.csv`;\n exampleJson = this.jobFeedGuidanceService.getExampleJson();\n exampleJsonUrl = `${this.msepPartnerApiUrl}/job-feed-guidance/sample.json`;\n exampleXml = this.jobFeedGuidanceService.getExampleXml();\n fieldColumns = ['field', 'type', 'description'];\n header!: HTMLElement;\n headerIsVisible$!: Observable;\n industries$ = this.resourcesService.getIndustrySectors();\n jobTypes$ = this.resourcesService.getJobTypes();\n navLinks = this.jobFeedGuidanceService.getNavLinks();\n requiredFields = this.jobFeedGuidanceService.getRequiredSpecs();\n urlPath = '/job-feed-guidance';\n yearsOfExperience$ = this.resourcesService.getYearsOfExperience();\n\n highlyRecommendedData = [\n {\n field: 'address',\n type: 'String',\n description: 'The street address associated with the job posting.',\n },\n {\n field: 'address2',\n type: 'String',\n description: 'Second line of address associated with the job posting.',\n },\n {\n field: 'city',\n type: 'String',\n description: 'The city in which the job will be performed.',\n },\n {\n field: 'state',\n type: 'String',\n description:\n 'The state or province associated with the job posting. Please use the two-letter abbreviation or full spelling for the state or province.',\n },\n {\n field: 'postal',\n type: 'String',\n description: `The postal code associated with the job posting. This may be either a USA formatted 5-digit\n zip code or an international postal code.`,\n },\n {\n field: 'country',\n type: 'String',\n description: `The country associated with the job posting. Valid standards compliant country\n names or ISO codes in the case of overseas jobs 3166-1 alpha-3 specifications\n \n https://www.nationsonline.org/oneworld/country_code_list.htm\n .`,\n },\n {\n field: 'jobType',\n type: 'String',\n description: 'The type of job. You must use exact MSEP defined values:',\n },\n {\n field: 'industry',\n type: 'String',\n description:\n 'The industry that this job is associated with and can be located under through advanced job searching. You must use exact MSEP defined values:',\n },\n {\n field: 'jid',\n type: 'String',\n description: `Unique identifier your company uses to track this job post internally.\n \n No two jobs may have the same ID. HTML cannot be used in\n this field.\n `,\n },\n {\n field: 'compensationType',\n type: 'String',\n description: `This field specifies whether the job posting is salaried or\n paid by the hour.\n You must enter either 'Salary' or 'Hourly' exactly.`,\n },\n {\n field: 'education',\n type: 'String',\n description:\n 'This field specifies the required level of education for this job posting. You must use exact MSEP defined values:',\n },\n {\n field: 'minQualifications',\n type: 'String',\n description:\n 'This field specifies minimum required qualifications for this job posting.',\n },\n {\n field: 'prefQualifications',\n type: 'String',\n description:\n 'This field specifies preferred qualifications for this job posting.',\n },\n {\n field: 'hourlyRate',\n type: 'String',\n description: ` The hourly wage for this job posting. This field may be left\n blank if it is not applicable.\n \n The field may only contain integers and/or a period. It\n should not contain any other punctuation, such as a dollar\n sign or comma.\n `,\n },\n {\n field: 'minSalary',\n type: 'String',\n description: `The minimum salary for this job posting.\n Example: \"minSalary\": \"$80,000\"`,\n },\n {\n field: 'maxSalary',\n type: 'String',\n description: `The maximum salary for this job posting.\n Example: \"maxSalary\": \"$100,000\"`,\n },\n {\n field: 'yearsOfExperience',\n type: 'String',\n description:\n 'Year(s) of knowledge or skill pertaining to this job posting. You must use exact MSEP defined values:',\n },\n {\n field: 'career',\n type: 'String',\n description:\n 'Classification of leadership and authority. You must use exact MSEP defined values:',\n },\n {\n field: 'jobOpenings',\n type: 'String',\n description: `Total # of available positions.\n Example: \"jobOpenings\": \"1\"`,\n },\n {\n field: 'isTelework',\n type: 'Boolean',\n description: `Allows employees to carry out their duties and\n responsibilities from an offsite location other than the\n official workplace. It could involve working from home,\n another branch office, café, bookstore, or even a co-working\n space. Though often away from the office, a teleworker is\n different from a remote employee because there occasionally\n may be some in-person office attendance required.\n \n You must enter either 'true' or 'false' exactly. Any job\n with blank isTelework is set to 'false' by default.\n `,\n },\n {\n field: 'isRemoteJob',\n type: 'Boolean',\n description: `Also known as 'work from anywhere,' is a flexible way of\n working which allows employees to work from any remote\n location as long as they have stable internet connectivity.\n Remote employees typically don't reside near their main office\n but still work closely with the people within the\n organization.\n \n You must enter either 'true' or 'false' exactly. Any job\n with blank isRemoteJob is set to 'false' by default.\n `,\n },\n {\n field: 'isHotJob',\n type: 'Boolean',\n description: `This field specifies whether the job posting is a hot job.\n \n You must enter either 'true' or 'false' exactly. Any job\n with blank isHotJob is set to 'false' by default.\n `,\n },\n {\n field: 'tags',\n type: 'String',\n description: `Tags associated with the job posting.\n \n Multiple terms must be separated by a comma and a space.\n `,\n },\n ];\n\n constructor(\n private configService: ConfigService,\n private domSanitizer: DomSanitizer,\n private jobFeedGuidanceService: JobFeedGuidanceService,\n private resourcesService: ResourcesService\n ) {}\n\n ngOnInit(): void {\n this.setJobTypeDescription();\n this.setIndustryDescription();\n this.setEducationDescription();\n this.setCareerDescription();\n this.setYearsOfExperienceDescription();\n this.requiredFields?.forEach(requiredField => {\n requiredField.description =\n this.domSanitizer.sanitize(\n SecurityContext.HTML,\n requiredField.description\n ) ?? '';\n });\n }\n\n ngAfterContentInit(): void {\n this.header = document.getElementById('header');\n const scroll$ = fromEvent(document, 'scroll');\n\n this.headerIsVisible$ = scroll$.pipe(\n startWith(false),\n map(() => this.isHeaderVisible())\n );\n }\n\n onClick(): void {\n window.scrollTo(0, 0);\n }\n\n onClickExample(url: string): void {\n window.open(url, '_blank');\n }\n\n private isHeaderVisible(): boolean {\n return this.header.getBoundingClientRect().bottom > 0;\n }\n\n private setCareerDescription(): void {\n const education = this.highlyRecommendedData.find(x => x.field == 'career');\n if (education) {\n education.description += '
    ';\n this.careerLevels$.forEach(careerLevels => {\n careerLevels.forEach(x => {\n if (education != undefined)\n education.description += `
  • ${x.description}
  • `;\n });\n education.description += '
';\n });\n }\n }\n\n private setEducationDescription(): void {\n const careerLevel = this.highlyRecommendedData.find(\n x => x.field == 'education'\n );\n if (careerLevel) {\n careerLevel.description += '
    ';\n this.educationLevels$.forEach(educations => {\n educations.forEach(x => {\n if (careerLevel != undefined)\n careerLevel.description += `
  • ${x.description}
  • `;\n });\n careerLevel.description += '
';\n });\n }\n }\n\n private setIndustryDescription(): void {\n const industry = this.highlyRecommendedData.find(\n x => x.field == 'industry'\n );\n if (industry) {\n industry.description += '
    ';\n this.industries$.forEach(industries => {\n industries.forEach(x => {\n if (industry != undefined)\n industry.description += `
  • ${x.description}
  • `;\n });\n industry.description += '
';\n });\n }\n }\n\n private setJobTypeDescription(): void {\n const jobType = this.highlyRecommendedData.find(x => x.field == 'jobType');\n if (jobType) {\n jobType.description += '
    ';\n this.jobTypes$.forEach(jobTypes => {\n jobTypes.forEach(x => {\n if (jobType != undefined)\n jobType.description += `
  • ${x.description}
  • `;\n });\n jobType.description +=\n '
Multiple values must be separated by a comma and a space.';\n });\n }\n }\n\n private setYearsOfExperienceDescription(): void {\n const yearsOfExperience = this.highlyRecommendedData.find(\n x => x.field == 'yearsOfExperience'\n );\n if (yearsOfExperience) {\n yearsOfExperience.description += '
    ';\n this.yearsOfExperience$.forEach(yearsOfExperiences => {\n yearsOfExperiences.forEach(x => {\n if (yearsOfExperience != undefined)\n yearsOfExperience.description += `
  • ${x.description}
  • `;\n });\n });\n }\n }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'msep-legal-and-security',\n templateUrl: './legal-and-security.component.html',\n})\nexport class LegalAndSecurityComponent {}\n","\n

    Legal & Security

    \n
    \n\n\n \n \n User Agreement\n \n \n \n \n Accessibility\n \n \n \n \n DoD No Fear Act\n \n \n \n FOIA\n \n \n \n \n Privacy Act Statement and Security\n \n \n\n","\n

    Log in to your MSEP account

    \n

    Connecting Talented Military Spouses to Committed Employers

    \n
    \n\n
    \n \n \n \n Log in \n \n
    \n \n
    \n \n Email\n \n \n \n \n \n Example: name@example.com\n \n \n Password\n \n \n \n \n \n \n \n \n \n
    \n
    \n \n Log in\n \n \n
    \n \n
    \n \n \n \n
    \n
    \n
    \n
    \n

    Need Help?

    \n \n
    \n
    \n
    \n
    \n \n My organization is interested in becoming an MSEP partner.\n \n \n For more information on the Military Spouse Employment Partnership\n and joining the partnership, click Become a Partner below to get\n started. If you have any other questions or would like further\n assistance, contact the MSEP program staff at 877-940-MSEP (6737).\n \n
    \n
    \n \n Become a Partner\n \n
    \n
    \n
    \n
    \n \n My company is already an MSEP partner. How do I register for\n access to the MSEP Portal?\n \n \n To gain access to your organization's MSEP account, you need to\n request a new user account for the MSEP Partner Portal.\n \n
    \n
    \n \n Create an Account\n \n
    \n
    \n
    \n
    \n Are you a military spouse? \n \n The Spouse Education and Career Opportunities Portal (MySECO)\n provides education and career guidance to military spouses\n worldwide, offering comprehensive resources and tools to help them\n meet their career and education goals.\n \n
    \n
    \n \n Register for MySECO\n \n \n
    \n
    \n
    \n
    \n \n\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport {\n UntypedFormBuilder,\n UntypedFormGroup,\n Validators,\n} from '@angular/forms';\nimport { AuthenticationService } from 'core/services/authentication.service';\nimport { ConfigService } from 'core/services/infrastructure/config.service';\nimport { DialogService } from 'core/services/infrastructure/dialog.service';\nimport { JwtService } from 'core/services/infrastructure/jwt.service';\nimport { Subscription } from 'rxjs';\n\n@Component({\n selector: 'msep-login',\n templateUrl: './login.component.html',\n styleUrls: ['./login.component.scss'],\n})\nexport class LoginComponent implements OnInit, OnDestroy {\n form!: UntypedFormGroup;\n isLoading = false;\n secoBaseUrl = this.configService.config.secoBaseUrl;\n showPassword = false;\n\n private subscription: Subscription | undefined;\n\n constructor(\n private authenticationService: AuthenticationService,\n private configService: ConfigService,\n private dialogService: DialogService,\n private formBuilder: UntypedFormBuilder,\n private jwtService: JwtService\n ) {}\n\n ngOnInit(): void {\n this.form = this.formBuilder.group({\n email: [\n '',\n [Validators.required, Validators.email, Validators.maxLength(256)],\n ],\n password: ['', [Validators.required]],\n });\n }\n\n onClickSeco(): void {\n const dialogRef = this.dialogService.governmentExitModal(this.secoBaseUrl);\n dialogRef.afterClosed().subscribe(result => {\n if (result) {\n window.open(this.secoBaseUrl, '_blank');\n }\n });\n }\n\n onClickSecoGettingStarted(): void {\n const dialogRef = this.dialogService.governmentExitModal(\n this.secoBaseUrl + 'getting-started'\n );\n dialogRef.afterClosed().subscribe(result => {\n if (result) {\n window.open(this.secoBaseUrl + 'getting-started', '_blank');\n }\n });\n }\n\n onSubmit(): void {\n this.isLoading = true;\n\n this.subscription = this.authenticationService\n .logIn(this.form.value)\n .subscribe({\n next: userHasLoggedInSuccessfully => {\n if (userHasLoggedInSuccessfully) {\n this.jwtService.routeToHomePage();\n }\n },\n complete: () => {\n this.isLoading = false;\n },\n });\n }\n\n toggleShowPassword(): void {\n this.showPassword = !this.showPassword;\n }\n\n ngOnDestroy(): void {\n this.subscription?.unsubscribe();\n }\n}\n","import { Component } from '@angular/core';\nimport { AuthenticationService } from 'core/services/authentication.service';\n\n@Component({\n selector: 'msep-logout',\n templateUrl: './logout.component.html',\n})\nexport class LogoutComponent {\n constructor(private authenticationService: AuthenticationService) {\n this.authenticationService.clearSession();\n }\n}\n","\n

    Log Out

    \n
    \n\n
    \n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class MediaLinksService {\n getMediaLinks(): MediaSpec[] {\n return [\n {\n id: 5,\n publishedDate: '09-26-2013',\n title: 'Bank of America -- Supporting Military Spouses',\n description:\n 'Bank of America actively recruits military reservists, veterans and spouses. We celebrate\\n and honor our more than 5,000 employees who have served our country. Hear what several of them have to\\n say about their experience working at our company.',\n url: 'https://youtu.be/erEINDx0epM',\n thumbnail: 'https://img.youtube.com/vi/erEINDx0epM/0.jpg',\n altText:\n 'YouTube Thumbnail Bank of America -- Supporting Military Spouses',\n type: 'video',\n },\n {\n id: 14,\n publishedDate: '01-24-2017',\n title: 'Guidance for Companies Looking to Hire',\n description:\n 'Learn how Werner Enterprises, a Department of Defense Military Spouse Employment Partnership (MSEP) company,\\n has benefited from the MSEP program, as well as helped employees retain jobs during family deployments.\\n The Military Spouse Employment Partnership is a career partnership that connects military spouses with hundreds of partner\\n employers who have committed to recruit, hire, promote and retain military spouses.',\n url: 'https://youtu.be/tPb_qLMHhlM',\n thumbnail: 'https://img.youtube.com/vi/tPb_qLMHhlM/0.jpg',\n altText: 'YouTube Thumbnail Guidance for Companies Looking to Hire',\n type: 'video',\n },\n {\n id: 15,\n publishedDate: '12-12-2017',\n title: 'Jobs for MilSpouses on the Move',\n description:\n \"Military spouses move frequently due to reassignment or deployment, so it's important that they're\\n able to take their job with them when they move. The Department of Defense's Military Spouse Employment Partnership (MSEP)\\n connects military spouses with hundreds of partner employers who have committed to recruit, hire, promote and retain\\n military spouses. Watch the video for more on how MSEP partners are thinking creatively when it comes to employment.\\n\\n Interviews were conducted during the MSEP Partner Induction Ceremony and Partner Meeting October 2-3, 2017.\",\n url: 'https://youtu.be/fzPs0uTJ1Os',\n thumbnail: 'https://img.youtube.com/vi/fzPs0uTJ1Os/0.jpg',\n altText: 'YouTube Thumbnail Jobs for MilSpouses on the Move',\n type: 'video',\n },\n {\n id: 16,\n publishedDate: '01-16-2019',\n title: 'Johnson Controls: Military Spouse and Veteran Spotlight',\n description:\n 'Johnson Controls hires veterans and military spouses and believes that “hiring from the military isn’t a gesture — it’s a business strategy.” Hear from a couple of their veteran and military spouse employees.',\n url: 'https://youtu.be/Z78nv2fqgfE',\n thumbnail: 'https://img.youtube.com/vi/Z78nv2fqgfE/0.jpg',\n altText:\n 'YouTube Thumbnail Johnson Controls: Military Spouse and Veteran Spotlight',\n type: 'video',\n },\n {\n id: 17,\n publishedDate: '05-10-2019',\n title: 'How Booz Allen Hamilton Supports MilSpouse Careers',\n description:\n 'Booz Allen Hamilton, a Department of Defense Military Spouse Employment Partnership (MSEP) company, understands the unique challenges of military life and advocate for military spouses when they need to relocate.',\n url: 'https://youtu.be/sfOPNKuB1IM',\n thumbnail: 'https://img.youtube.com/vi/sfOPNKuB1IM/0.jpg',\n altText:\n 'YouTube Thumbnail How Booz Allen Hamilton Supports MilSpouse Careers',\n type: 'video',\n },\n {\n id: 18,\n publishedDate: '05-10-2019',\n title: 'Why Booz Allen Hamilton Hires Military Spouses',\n description:\n 'Booz Allen Hamilton, a Department of Defense Military Spouse Employment Partnership (MSEP) company, knows it’s important to not only hire military spouses but retain them as well. Problem solving, flexibility and resiliency are a few of the reasons Booz Allen looks at military spouses as top talent.',\n url: 'https://youtu.be/e-IFPO6T8SQ',\n thumbnail: 'https://img.youtube.com/vi/e-IFPO6T8SQ/0.jpg',\n altText:\n 'YouTube Thumbnail Why Booz Allen Hamilton Hires Military Spouses',\n type: 'video',\n },\n {\n id: 19,\n publishedDate: '08-11-2020',\n title: 'What Makes an MSEP Partner',\n description:\n \"More than your average employer, Military Spouse Employment Partnership partners see the value in all MilSpouses bring to the table and they are committed to supporting their needs. Learn more: https://myseco.militaryonesource.mil/portal/msep/jobsearch\",\n url: 'https://youtu.be/dYDP0oGCbjs',\n thumbnail: 'https://img.youtube.com/vi/dYDP0oGCbjs/0.jpg',\n altText: 'YouTube Thumbnail What Makes an MSEP Partner',\n type: 'video',\n },\n ];\n }\n}\n\nexport interface MediaSpec {\n id: number;\n publishedDate: string;\n title: string;\n altText: string;\n description: string;\n url: string;\n thumbnail: string;\n type: string;\n}\n","\n

    Media

    \n

    \n This page contains uploaded videos and linked media encompassing all things\n MSEP related. Please reference these files to get more insight to the\n conduct and scope of the MSEP program.\n

    \n
    \n\n
    \n \n \n \n \n \n {{ media.title }}\n \n \n
    \n \n\n","import { Component } from '@angular/core';\nimport { MediaLinksService } from 'core/services/media-links.service';\n\n@Component({\n selector: 'msep-media',\n templateUrl: './media.component.html',\n styleUrls: ['./media.component.scss'],\n})\nexport class MediaComponent {\n constructor(private mediaLinksService: MediaLinksService) {}\n mediaLinks = this.mediaLinksService.getMediaLinks();\n}\n","import { Component } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\n\n@Component({\n selector: 'msep-notice-and-consent',\n templateUrl: './notice-and-consent.component.html',\n})\nexport class NoticeAndConsentComponent {\n constructor(private activatedRoute: ActivatedRoute, private router: Router) {}\n\n onAgreeClick(): void {\n this.router.navigate([\n this.activatedRoute.snapshot.paramMap.get('path') ?? 'home',\n ]);\n }\n}\n","\n

    Notice and Consent Statement

    \n
    \n\n\n OMB control number: 0704-0563
    \n OMB expiration date: 6/30/2026\n
    \n\n \n
    \n

    \n You are accessing a U.S. Government (USG) Information System (IS) that\n is provided for USG-authorized use only. By using this IS (which\n includes any device attached to this IS), you consent to the following\n conditions:\n

    \n\n
      \n
    • \n The USG routinely intercepts and monitors communications on this IS\n for purposes including, but not limited to, penetration testing,\n COMSEC monitoring, network operations and defense, personnel\n misconduct (PM), law enforcement (LE), and counterintelligence (CI)\n investigations.\n
    • \n
    • \n At any time, the USG may inspect and seize data stored on this IS.\n
    • \n
    • \n Communications using, or data stored on, this IS are not private, are\n subject to routine monitoring, interception, and search, and may be\n disclosed or used for any USG authorized purpose. This IS includes\n security measures (e.g., authentication and access controls) to\n protect USG interests--not for your personal benefit or privacy.\n
    • \n
    • \n Notwithstanding the above, using this IS does not constitute consent\n to PM, LE or CI investigative searching or monitoring of the content\n of privileged communications, or work product, related to personal\n representation or services by attorneys, psychotherapists, or clergy,\n and their assistants. Such communications and work product are private\n and confidential. See\n User Agreement for\n details.\n
    • \n
    \n
    \n
    \n
    \n\n\n Privacy Act Statement\n\n \n
    \n

    \n Authority: 10 U.S.C. 136, Under Secretary of Defense\n for Personnel and Readiness; 10 U.S.C. 1784, Employment Opportunities\n for Military Spouses, and DoDI 1342.22, Military Family Readiness.\n

    \n\n

    \n Principal Purpose(s): The Military Spouse Employment\n Partnership (MSEP) Partner Portal is the sole web platform utilized to\n connect military spouses with companies seeking to hire military spouse\n employees. MSEP is a component of the DoD Spouse Education and Career\n Opportunities (SECO) Program which is the primary source of education,\n career and employment counseling for all military spouses.\n

    \n\n

    \n Routine Use(s): In addition to those disclosures\n generally permitted under 5 U.S.C. 552a(b) of the Privacy Act of 1974,\n as amended, the records contained herein may specifically be disclosed\n outside the DoD as a routine use pursuant to 5 U.S.C. 552a(b)(3) as\n follows: To authorized DoD SECO contractors and grantees for the purpose\n of responding to military spouse need as they relate to employment\n readiness. To authorized DoD contractors and grantees for the purpose of\n supporting research studies concerned with the education, career and\n employment counseling of military spouses participating in DoD funded\n spousal education, career and employment programs. See the applicable\n system of records notice, DPR 47 DoD, Military Spouse Employment\n Partnership (MSEP) Partner Portal for additional routine uses, located\n at:\n https://dpcld.defense.gov/Portals/49/Documents/Privacy/SORNs/OSDJS/DPR-47-DoD.pdf\n

    \n\n

    \n Disclosure: Voluntary; however, failure to provide\n information may impact your ability to utilize certain program\n opportunities.\n

    \n
    \n
    \n
    \n\n\n Agency Disclosure Notice\n\n \n
    \n

    \n The public reporting burden for this collection of information is\n estimated to average 15 minutes per response, including the time for\n reviewing instructions, searching existing data sources, gathering and\n maintaining the data needed, and completing and reviewing the collection\n of information. Send comments regarding this burden estimate or any\n other aspect of this collection of information, including suggestions\n for reducing the burden, to the Department of Defense, Washington\n Headquarters Services, Executive Services Directorate, Directives\n Division, 4800 Mark Center Drive, East Tower, Suite 02G09, Alexandria,\n VA 22350-3100, OMB CONTROL NUMBER: 0704-0563. Respondents should be\n aware that notwithstanding any other provision of law, no person shall\n be subject to any penalty for failing to comply with a collection of\n information if it does not display a currently valid OMB control number.\n

    \n\n

    \n Please do not return your response to the above address.\n \n

    \n\n

    Responses should be sent to:

    \n

    \n Military Community Support Programs
    \n ATTN: Program Manager, Spouse Education & Career Opportunities\n Program
    \n 4801 Mark Center Drive
    \n Alexandria, VA 22350-2300
    \n

    \n
    \n
    \n
    \n\n

    \n By clicking I agree, you agree to the terms of\n the User Agreement and confirm that you have read the Privacy Act Statement\n and Agency Disclosure Notice.\n

    \n\n\n","\n
    \n

    Partner Directory

    \n
    \n \n

    Our Partners

    \n

    \n A comprehensive list of all companies and organizations participating in\n the MSEP program.\n

    \n
    \n\n \n \n \n \n \n Select Industry Sector\n \n All\n \n {{ industrySector.description }}\n \n \n \n \n Select Partnership Type\n \n All\n \n {{ partnershipType.description }}\n \n \n \n \n Select State\n \n All\n \n {{ state.description }}\n \n \n \n
    \n \n \n \n Show Telework Partners\n \n \n \n
    \n \n \n Show Remote Partners\n \n \n \n \n \n \n
    \n \n Show Partners with International Facilities\n \n \n \n
    \n \n Select Country\n \n All\n \n {{ country.description }}\n \n \n \n \n \n
    \n \n
    \n \n
    \n \n
    \n
    \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n","import { Component, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { UntypedFormBuilder, UntypedFormGroup } from '@angular/forms';\nimport { MatCheckboxChange } from '@angular/material/checkbox';\nimport { MatPaginator } from '@angular/material/paginator';\nimport { MatSelectChange } from '@angular/material/select';\nimport { ActivatedRoute } from '@angular/router';\nimport {\n PartnerData,\n PartnerSearch,\n PartnersService,\n} from 'core/services/partners.service';\nimport { Resource, ResourcesService } from 'core/services/resources.service';\nimport { BehaviorSubject, EMPTY, Observable, Subscription, tap } from 'rxjs';\nimport { delay, map, switchMap } from 'rxjs/operators';\nimport { ApiResponse } from 'shared/models/api-response';\nimport { Countries, GhostLoaderType } from 'core/enums';\nimport { AuthenticationService } from 'core/services/authentication.service';\n\n@Component({\n selector: 'msep-our-partners',\n templateUrl: './our-partners-list.component.html',\n styleUrls: ['./our-partners-list.component.scss'],\n})\nexport class OurPartnersListComponent implements OnInit, OnDestroy {\n @ViewChild('paginator', { static: false }) paginator:\n | MatPaginator\n | undefined;\n\n countries$ = this.resourceService.getCountry();\n form!: UntypedFormGroup;\n ghostLoaderType = GhostLoaderType.PartnerLogo;\n industrySectors$ = this.resourceService.getIndustrySectors();\n isLoading = false;\n pageSize? = 10;\n partners: PartnerData[] | undefined;\n partnersAction$!: Observable;\n partners$!: Observable>;\n partnershipTypes$ = this.resourceService.getPartnershipTypes();\n resultTotal = 0;\n states$ = this.resourceService.getStates();\n\n private defaultFilter = {\n skip: 0,\n take: this.pageSize,\n } as PartnerSearch;\n private partnersSubject = new BehaviorSubject(\n this.defaultFilter\n );\n\n private subscriptions: Subscription[] = [];\n\n constructor(\n private activatedRoute: ActivatedRoute,\n private authenticationService: AuthenticationService,\n private formBuilder: UntypedFormBuilder,\n private partnersService: PartnersService,\n private resourceService: ResourcesService\n ) {}\n\n ngOnInit(): void {\n this.form = this.formBuilder.group({\n name: null,\n industrySectorId: null,\n isTeleworkAvailable: null,\n offersPermanentRemotePositions: null,\n partnershipTypeId: null,\n stateId: null,\n internationalFacilities: false,\n countryId: [{ value: null, disabled: true }],\n });\n\n this.subscriptions.push(\n this.form\n .get('internationalFacilities')!\n .valueChanges.subscribe((checked) => {\n const countryDropdown = this.form.get('countryId');\n if (checked) {\n countryDropdown?.enable();\n } else {\n countryDropdown?.disable();\n }\n })\n );\n\n this.countries$ = this.countries$.pipe(\n map((countries) =>\n countries.filter((c) => c.id !== Countries.UnitedStates)\n )\n );\n\n this.handleTeleworkQueryParameter();\n this.handleRemoteQueryParameter();\n this.setPartnerRequestStream();\n }\n\n isAuthenticated(): boolean {\n return this.authenticationService.isAuthenticated();\n }\n\n hasInternationalFacilities(event: MatCheckboxChange): void {\n const newValue = event.checked ? event.checked : false;\n this.form.patchValue({\n internationalFacilities: newValue,\n });\n if (!newValue) {\n this.form.patchValue({\n countryId: null,\n });\n }\n this.search();\n }\n\n onCountryChanged(event: MatSelectChange): void {\n this.form.patchValue({\n countryId: event.value,\n });\n this.search();\n }\n\n onIndustrySectorChanged(event: MatSelectChange): void {\n this.form.patchValue({\n industrySectorId: event.value,\n });\n this.search();\n }\n\n onPagingChange(event: { skip: number; take: number }): void {\n const filter = this.form.value as PartnerSearch;\n this.pageSize = event.take;\n filter.take = event.take;\n filter.skip = event.skip;\n this.partnersSubject.next(filter);\n }\n\n onPartnerSelected(partner: Resource): void {\n this.form.patchValue({ name: partner.description });\n this.search();\n }\n\n onPartnershipTypeChanged(event: MatSelectChange): void {\n this.form.patchValue({\n partnershipTypeId: event.value,\n });\n this.search();\n }\n\n onReset(): void {\n this.form.reset();\n this.paginator?.firstPage();\n this.pageSize = this.defaultFilter.take;\n\n this.partnersSubject.next(this.defaultFilter);\n }\n\n onStateChanged(event: MatSelectChange): void {\n this.form.patchValue({\n stateId: event.value,\n });\n this.search();\n }\n\n onTeleworkChange(event: MatCheckboxChange): void {\n // we don't want to filter by telework = false, so we just remove the filter\n // completely if the user unchecks the box\n const newValue = event.checked ? event.checked : null;\n this.form.patchValue({\n isTeleworkAvailable: newValue,\n });\n this.search();\n }\n\n onRemoteChange(event: MatCheckboxChange): void {\n // we don't want to filter by remote = false, so we just remove the filter\n // completely if the user unchecks the box\n const newValue = event.checked ? event.checked : null;\n this.form.patchValue({\n offersPermanentRemotePositions: newValue,\n });\n this.search();\n }\n\n private handleTeleworkQueryParameter(): void {\n this.subscriptions.push(\n this.activatedRoute.queryParamMap\n .pipe(\n switchMap((params) => {\n // only filter by telework if the parameter exists and the value is true\n const shouldFilterByTelework =\n params.get('isTeleworkAvailable')?.toLowerCase() === 'true';\n\n if (shouldFilterByTelework) {\n this.form.patchValue({\n isTeleworkAvailable: shouldFilterByTelework,\n });\n this.search();\n }\n return EMPTY;\n })\n )\n .subscribe()\n );\n }\n\n private handleRemoteQueryParameter(): void {\n const subscription = this.activatedRoute.queryParamMap\n .pipe(\n switchMap((params) => {\n // only filter by remote if the parameter exists and the value is true\n const shouldFilterByRemote =\n params.get('offersPermanentRemotePositions')?.toLowerCase() ===\n 'true';\n\n if (shouldFilterByRemote) {\n this.form.patchValue({\n offersPermanentRemotePositions: shouldFilterByRemote,\n });\n this.search();\n }\n return EMPTY;\n })\n )\n .subscribe();\n\n this.subscriptions.push(subscription);\n }\n\n private search(): void {\n const filter = this.form.value as PartnerSearch;\n filter.take = this.paginator?.pageSize;\n filter.skip = 0;\n if (this.paginator !== undefined) {\n this.paginator.firstPage();\n }\n this.partnersSubject.next(filter);\n }\n\n private setPartnerRequestStream(): void {\n this.partnersAction$ = this.partnersSubject.asObservable();\n this.partners$ = this.partnersAction$.pipe(\n delay(0),\n tap(() => (this.isLoading = true)),\n switchMap((filters: PartnerSearch) =>\n this.partnersService.search(filters)\n ),\n tap((results) => {\n this.resultTotal = results.total;\n this.partners = results.data;\n this.isLoading = false;\n })\n );\n }\n\n ngOnDestroy(): void {\n if (this.subscriptions) {\n this.subscriptions.forEach((x) => x.unsubscribe);\n }\n }\n}\n","\n {{ label }}\n \n \n \n \n {{ partnerResource.description }}\n \n \n\n","import {\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnInit,\n Optional,\n Output,\n Self,\n} from '@angular/core';\nimport {\n ControlValueAccessor,\n UntypedFormControl,\n NgControl,\n} from '@angular/forms';\nimport { MatAutocompleteSelectedEvent } from '@angular/material/autocomplete';\nimport { PartnersService } from 'core/services/partners.service';\nimport { Resource } from 'core/services/resources.service';\nimport { Observable } from 'rxjs';\nimport { startWith, switchMap } from 'rxjs/operators';\n\n@Component({\n selector: 'msep-partner-resources-autocomplete',\n templateUrl: './partner-resources-autocomplete.component.html',\n styleUrls: ['./partner-resources-autocomplete.component.scss'],\n})\nexport class PartnerResourcesAutocompleteComponent\n implements OnInit, ControlValueAccessor\n{\n @Input() label = 'Search for Resource';\n @Input() resource!: Resource;\n @Input() showHint = false;\n\n @Output() resourceSelected = new EventEmitter();\n\n // this is a dummy input that the autocomplete and matInput need to satisfy\n // the compiler.\n inputControl = new UntypedFormControl('');\n partnerResourcesAutocomplete$: Observable | undefined;\n\n constructor(\n @Optional() @Self() private controlDir: NgControl,\n private partnersService: PartnersService,\n private changeDetectorRef: ChangeDetectorRef\n ) {\n if (this.controlDir) {\n this.controlDir.valueAccessor = this;\n }\n }\n\n ngOnInit(): void {\n this.partnerResourcesAutocomplete$ =\n this.controlDir.control?.valueChanges.pipe(\n startWith(''),\n switchMap(value =>\n this.partnersService.getPartnerResourcesAutoComplete(value)\n )\n );\n if (this.resource) {\n this.inputControl.setValue(this.resource);\n this.autocompleteDisplay(this.resource);\n this.resourceSelected.emit(this.resource);\n }\n }\n\n autocompleteDisplay(resource: Resource | string): string {\n if (!resource) return '';\n return typeof resource === 'string' ? resource : resource.description;\n }\n\n onAutocompleteSelect(event: MatAutocompleteSelectedEvent): void {\n const selectedValue = event.option.value as Resource;\n this.resourceSelected.emit(selectedValue);\n }\n\n /*\n registerOnChange, registerOnTouched, and writeValue are all required by \n the ControlValueAccessor interface.\n */\n // eslint-disable-next-line\n registerOnChange(fn: any): void {\n this.inputControl.valueChanges.subscribe({\n next: value => {\n if (typeof value === 'string') {\n this.changeDetectorRef.detectChanges();\n fn(value);\n } else {\n fn(value);\n }\n },\n });\n }\n\n // eslint-disable-next-line\n registerOnTouched(fn: any): void {\n // no implementation necessary\n }\n\n // eslint-disable-next-line\n writeValue(obj: any): void {\n this.inputControl.setValue(obj || '');\n }\n}\n","\n

    Partner Resources

    \n

    \n The resources on this page are collateral materials meant for reference by\n enduring and potential partners. These files will provide all the needed\n information for organizations to prepare for and participate in the MSEP\n program. If an item isn't covered in the resources below, please submit a\n Contact Us form with the details of your question or comment.\n

    \n \n \n
    \n \n \n \n Select Resource Category\n \n \n {{ category.description }}\n \n \n \n
    \n \n
    \n \n
    \n
    \n\n \n
    \n
    \n\n
    \n 0; else noResults\">\n \n \n \n \n
    \n \n
    \n
    \n {{ partnerResource.title }}\n
    \n
    \n \n \n
    \n

    Downloading MSEP User Manual... {{ downloadProgress }}%

    \n \n
    \n
    \n \n
    \n
    \n {{ partnerResource.title }}\n
    \n \n
    \n \n \n \n \n \n \n\n\n\n","import { Component, OnInit, ViewChild } from '@angular/core';\nimport { UntypedFormBuilder, UntypedFormGroup } from '@angular/forms';\nimport { MatPaginator } from '@angular/material/paginator';\nimport { MatSelectChange } from '@angular/material/select';\nimport { GhostLoaderType, PartnerResourceType } from 'core/enums';\nimport { AuthenticationService } from 'core/services/authentication.service';\nimport { NotificationService } from 'core/services/infrastructure/notification.service';\nimport {\n PartnerResource,\n PartnerResourceFilter,\n PartnersService,\n} from 'core/services/partners.service';\nimport { Resource, ResourcesService } from 'core/services/resources.service';\nimport { BehaviorSubject, Observable, delay, switchMap, tap } from 'rxjs';\nimport { ApiResponse } from 'shared/models/api-response';\n\n@Component({\n selector: 'msep-partner-resources',\n templateUrl: './partner-resources.component.html',\n styleUrls: ['./partner-resources.component.scss'],\n})\nexport class PartnerResourcesComponent implements OnInit {\n @ViewChild('paginator', { static: false }) paginator:\n | MatPaginator\n | undefined;\n\n categories$ = this.resourceService.getResourceCategories();\n downloadProgress: number = 0;\n fileType = 'application/pdf';\n form!: UntypedFormGroup;\n ghostLoaderType = GhostLoaderType.PartnerLogo;\n isDownloading: boolean = false;\n isLoading = false;\n pageSize = 10;\n partnerResources: PartnerResource[] | undefined;\n partnerResourcesAction$!: Observable;\n partnerResources$!: Observable>;\n resultTotal = 0;\n isTestEnvironment = false;\n userManual = PartnerResourceType.UserManual;\n\n private defaultFilter = {\n skip: 0,\n take: this.pageSize,\n } as PartnerResourceFilter;\n private partnerResourcesSubject = new BehaviorSubject(\n this.defaultFilter\n );\n\n constructor(\n private authenticationService: AuthenticationService,\n private formBuilder: UntypedFormBuilder,\n private notificationService: NotificationService,\n private partnersService: PartnersService,\n private resourceService: ResourcesService\n ) {}\n\n ngOnInit(): void {\n this.form = this.formBuilder.group({\n id: null,\n title: null,\n categoryId: null,\n });\n\n this.setPartnerResourcesRequestStream();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n downloadUserManual(): void {\n this.isDownloading = true;\n this.downloadProgress = 0;\n\n this.resourceService.getUserManualSize().subscribe({\n next: response => {\n const fileSize = response;\n const blockSize = 500 * 1024;\n const fileData: Blob[] = [];\n\n this.downloadBlocks(0, fileSize, blockSize, fileData, () => {\n if (!this.isTestEnvironment) {\n const fullFile = new Blob(fileData, { type: this.fileType });\n const downloadUrl = URL.createObjectURL(fullFile);\n\n const link = document.createElement('a');\n link.href = downloadUrl;\n link.download = 'MsepUserManual.pdf';\n link.click();\n\n URL.revokeObjectURL(downloadUrl);\n this.isDownloading = false;\n }\n });\n },\n error: () => {\n this.isDownloading = false;\n this.notificationService.emitFailure('Failed to download user manual');\n },\n });\n }\n\n isAuthenticated(): boolean {\n return this.authenticationService.isAuthenticated();\n }\n\n onCategoryChanged(event: MatSelectChange): void {\n this.form.patchValue({\n categoryId: event.value,\n });\n this.search();\n }\n\n onPagingChange(event: { skip: number; take: number }): void {\n const filter = this.form.value as PartnerResourceFilter;\n this.pageSize = event.take;\n filter.take = event.take;\n filter.skip = event.skip;\n this.partnerResourcesSubject.next(filter);\n }\n\n onReset(): void {\n this.form.reset();\n this.paginator?.firstPage();\n this.pageSize = this.defaultFilter.take;\n this.partnerResourcesSubject.next(this.defaultFilter);\n }\n\n onTitleSelected(title: Resource): void {\n this.form.patchValue({ id: title.id });\n this.search();\n }\n\n private downloadBlocks(\n currentBlockIndex: number,\n fileSize: number,\n blockSize: number,\n fileData: Blob[],\n onComplete: () => void\n ): void {\n if (currentBlockIndex * blockSize < fileSize) {\n this.resourceService.getUserManual(currentBlockIndex).subscribe({\n next: blockData => {\n blockData.arrayBuffer().then(arrayBuffer => {\n const uint8Array = new Uint8Array(arrayBuffer);\n const isBase64 = this.isBase64Encoded(uint8Array);\n\n let blob: Blob;\n\n if (isBase64) {\n const base64Blob = this.handleBase64Encoding(uint8Array);\n if (!base64Blob) {\n this.isDownloading = false;\n return;\n }\n blob = base64Blob;\n } else {\n blob = new Blob([uint8Array], { type: this.fileType });\n }\n\n fileData.push(blob);\n\n this.downloadProgress = Math.round(\n ((currentBlockIndex * blockSize) / fileSize) * 100\n );\n\n this.downloadBlocks(\n currentBlockIndex + 1,\n fileSize,\n blockSize,\n fileData,\n onComplete\n );\n });\n },\n error: () => {\n this.isDownloading = false;\n this.notificationService.emitFailure('Error downloading user manual');\n },\n });\n } else {\n onComplete();\n }\n }\n\n private isBase64Encoded(uint8Array: Uint8Array): boolean {\n const base64Pattern = /^[A-Za-z0-9+/=]+$/;\n const decodedString = new TextDecoder().decode(uint8Array);\n\n return base64Pattern.test(decodedString.trim());\n }\n\n private handleBase64Encoding(uint8Array: Uint8Array): Blob | null {\n try {\n const arrayBuffer = uint8Array.buffer;\n const base64String = new TextDecoder().decode(arrayBuffer);\n\n const binaryString = atob(base64String);\n const byteArray = new Uint8Array(binaryString.length);\n\n for (let i = 0; i < binaryString.length; i++) {\n byteArray[i] = binaryString.charCodeAt(i);\n }\n\n return new Blob([byteArray], { type: this.fileType });\n } catch (error) {\n this.notificationService.emitFailure('Error decoding Base64 data');\n return null;\n }\n }\n\n private search(): void {\n const filter = this.form.value as PartnerResourceFilter;\n filter.take = this.paginator?.pageSize ?? this.pageSize;\n filter.skip = 0;\n if (this.paginator !== undefined) {\n this.paginator.firstPage();\n }\n this.partnerResourcesSubject.next(filter);\n }\n\n private setPartnerResourcesRequestStream(): void {\n this.partnerResourcesAction$ = this.partnerResourcesSubject.asObservable();\n this.partnerResources$ = this.partnerResourcesAction$.pipe(\n delay(0),\n tap(() => (this.isLoading = true)),\n switchMap((filters: PartnerResourceFilter) =>\n this.partnersService.getPartnerResources(filters)\n ),\n tap(results => {\n this.resultTotal = results.total;\n this.partnerResources = results.data;\n this.isLoading = false;\n })\n );\n }\n}\n","\n
    \n \n \n
    \n \n \n
    \n\n
    \n

    {{ profile.name }}

    \n \n
    \n Partner since {{ profile.approvedDate | date : 'yyyy' }}\n
    \n
    \n {{ profile | formatAddress }}\n
    \n
    \n {{ profile.headquartersPhone }}\n
    \n
    \n\n
    \n \n Website\n \n \n \n \n \n \n Facebook\n \n\n \n \n LinkedIn\n \n\n \n \n Twitter\n \n\n \n \n Instagram\n \n
    \n
    \n
    \n \n \n \n \n\n
    \n \n \n
    \n \n

    About

    \n
    \n \n

    \n
    \n
    \n
    \n
    \n\n \n \n \n
    \n \n

    Benefits

    \n
    \n \n
    \n {{ benefit.description }}\n
    \n
    \n
    \n
    \n \n \n \n
    \n \n

    Point of Contact

    \n
    \n \n
    \n \n {{ pointOfContact.name }}\n
    \n
    \n \n {{ pointOfContact.email }}\n
    \n
    \n \n {{ pointOfContact.phone }}\n
    \n
    \n
    \n
    \n \n \n \n\n
    \n \n
    \n \n

    Statistics

    \n
    \n\n \n \n

    Number of Employees

    \n

    {{ profile.numberOfEmployees | number }}

    \n
    \n\n
    \n

    Number of Published Jobs

    \n

    {{ profile.numberOfActiveJobs }}

    \n
    \n\n \n

    Countries with Facilities

    \n

    {{ getResourceString(profile.countriesWithFacilities) }}

    \n \n \n \n \n\n \n
    \n \n

    Industry Information

    \n
    \n\n \n
    \n

    Primary Industry

    \n

    {{ profile.primaryIndustry }}

    \n
    \n\n \n

    {{ getSecondaryIndustryHeading() }}

    \n

    {{ getResourceString(profile.secondaryIndustries) }}

    \n \n\n
    \n

    Geographic Reach

    \n

    {{ getResourceString(profile.geographicReach) }}

    \n
    \n
    \n
    \n \n\n \n
    \n \n

    Partner Video

    \n
    \n \n \n \n
    \n \n \n
    \n \n
    \n
    \n","import { Component, OnInit, SecurityContext } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { ActivatedRoute } from '@angular/router';\nimport { AuthenticationService } from 'core/services/authentication.service';\nimport {\n PartnerProfile,\n PartnersService,\n PointOfContact,\n} from 'core/services/partners.service';\nimport { Resource } from 'core/services/resources.service';\nimport { UtilsService } from 'core/utilities/utils.service';\nimport { Observable } from 'rxjs';\n\n@Component({\n selector: 'msep-our-partner-profile',\n templateUrl: './view-our-partner.component.html',\n styleUrls: ['./view-our-partner.component.scss'],\n})\nexport class ViewOurPartnerComponent implements OnInit {\n partnerProfile!: PartnerProfile;\n pointOfContact$!: Observable;\n\n constructor(\n private activatedRoute: ActivatedRoute,\n private authenticationService: AuthenticationService,\n private domSanitizer: DomSanitizer,\n private partnerService: PartnersService,\n private utilsService: UtilsService\n ) {}\n\n ngOnInit(): void {\n this.partnerProfile = this.activatedRoute.snapshot.data['resolvedData'];\n\n this.partnerProfile.description =\n this.domSanitizer.sanitize(\n SecurityContext.HTML,\n this.partnerProfile.description\n ) ?? '';\n\n this.setPointOfContact();\n }\n\n calculateWidth(): string {\n const cardCount = [\n this.hasValue(this.partnerProfile.partnerVideoUrl),\n this.shouldShowStatistics(),\n this.shouldShowIndustry(),\n ].filter(Boolean).length;\n\n switch (cardCount) {\n case 1:\n return 'flex-gt-md-100';\n case 2:\n return 'flex-gt-md-50';\n case 3:\n return 'flex-gt-md-33-33';\n default:\n return '';\n }\n }\n\n getResourceString(resource: Resource[]): string {\n const resourceDescriptions = resource.map((r) => r.description);\n return this.utilsService.getStringListFromArray(resourceDescriptions);\n }\n\n getSecondaryIndustryHeading(): string {\n return this.partnerProfile.secondaryIndustries.length > 1\n ? 'Secondary Industries'\n : 'Secondary Industry';\n }\n\n hasLink(): boolean {\n return Boolean(\n this.partnerProfile.website ||\n this.partnerProfile.facebookUrl ||\n this.partnerProfile.linkedInUrl ||\n this.partnerProfile.twitterUrl ||\n this.partnerProfile.instagramUrl\n );\n }\n\n hasValue(value: PartnerProfile[keyof PartnerProfile]): boolean {\n return Array.isArray(value) ? value.length > 0 : Boolean(value);\n }\n\n isAuthenticated(): boolean {\n return this.authenticationService.isAuthenticated();\n }\n\n setPointOfContact(): void {\n if (this.isAuthenticated()) {\n this.pointOfContact$ = this.partnerService.getPrimaryPointOfContact(\n this.partnerProfile.id\n );\n }\n }\n\n shouldShowIndustry(): boolean {\n return (\n this.hasValue(this.partnerProfile.primaryIndustry) ||\n this.hasValue(this.partnerProfile.secondaryIndustries) ||\n this.hasValue(this.partnerProfile.geographicReach)\n );\n }\n\n shouldShowPartnerVideo(): boolean {\n return this.hasValue(this.partnerProfile.partnerVideoUrl);\n }\n\n shouldShowSocialMediaLinks(): boolean {\n return (\n this.hasValue(this.partnerProfile.facebookUrl) ||\n this.hasValue(this.partnerProfile.linkedInUrl) ||\n this.hasValue(this.partnerProfile.twitterUrl) ||\n this.hasValue(this.partnerProfile.instagramUrl)\n );\n }\n\n shouldShowStatistics(): boolean {\n return (\n this.hasValue(this.partnerProfile.numberOfEmployees) ||\n this.hasValue(this.partnerProfile.countriesWithFacilities) ||\n this.hasValue(this.partnerProfile.numberOfActiveJobs)\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Router, ActivatedRouteSnapshot } from '@angular/router';\nimport { Observable, EMPTY, map, catchError } from 'rxjs';\nimport {\n PartnerProfile,\n PartnersService,\n} from 'core/services/partners.service';\nimport { UtilsService } from 'core/utilities/utils.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PartnerProfileResolverService {\n constructor(\n private partnersService: PartnersService,\n private router: Router,\n private utilsService: UtilsService\n ) {}\n\n resolve(route: ActivatedRouteSnapshot): Observable {\n const id = route.paramMap.get('id');\n if (id === null || isNaN(+id) || !this.utilsService.isInt32(+id)) {\n this.router.navigate(['/our-partners']);\n return EMPTY;\n }\n\n return this.partnersService.getPartnerProfile(+id).pipe(\n map((result) => result),\n catchError(() => {\n this.router.navigate(['/our-partners']);\n return EMPTY;\n })\n );\n }\n}\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport {\n AbstractControlOptions,\n UntypedFormBuilder,\n UntypedFormGroup,\n Validators,\n} from '@angular/forms';\nimport { ActivatedRoute, ParamMap, Router } from '@angular/router';\nimport {\n AccountService,\n ChallengeQuestionAnswer,\n ResetPassword,\n} from 'core/services/account.service';\nimport { NotificationService } from 'core/services/infrastructure/notification.service';\nimport { Resource } from 'core/services/resources.service';\nimport { Subscription } from 'rxjs';\nimport { AlertType } from 'shared/components/alert/alert.component';\nimport { EqualityValidator } from 'shared/validation/equality.validator';\nimport { GroupComparisonErrorStateMatcher } from 'shared/validation/group-errorstate-matcher';\n\n@Component({\n selector: 'msep-reset-password',\n templateUrl: './reset-password.component.html',\n})\nexport class ResetPasswordComponent implements OnInit, OnDestroy {\n alertType = AlertType.Info;\n challengeQuestions!: Resource[];\n form!: UntypedFormGroup;\n isLoading = false;\n matcher = new GroupComparisonErrorStateMatcher();\n showHidden: Map = new Map([\n ['answer1', false],\n ['answer2', false],\n ['answer3', false],\n ['password', false],\n ['confirmPassword', false],\n ]);\n token!: string | null;\n\n private subscriptions: Subscription[] = [];\n constructor(\n private accountService: AccountService,\n private activatedRoute: ActivatedRoute,\n private formBuilder: UntypedFormBuilder,\n private notificationService: NotificationService,\n private router: Router\n ) {}\n\n ngOnInit(): void {\n this.buildForm();\n }\n\n onSubmit(): void {\n const dto = {\n challengeQuestionAnswers: this.formatChallengeQuestionAnswers(),\n newPassword: this.form.get('passwordGroup.newPassword')?.value,\n token: this.token,\n } as ResetPassword;\n this.isLoading = true;\n const resetSubscription = this.accountService.resetPassword(dto).subscribe({\n next: () => {\n this.notificationService.emitSuccess(\n 'Password has been reset successfully.'\n );\n this.router.navigate(['/']);\n },\n error: () => {\n this.notificationService.emitFailure(\n 'Error resetting password. Please contact an administrator.'\n );\n this.isLoading = false;\n },\n complete: () => {\n this.isLoading = false;\n },\n });\n\n this.subscriptions.push(resetSubscription);\n }\n\n toggleShowHidden(key: string): void {\n this.showHidden.set(key, !this.showHidden.get(key));\n }\n\n ngOnDestroy(): void {\n this.subscriptions?.forEach((x) => x.unsubscribe());\n }\n\n private buildForm(): void {\n this.challengeQuestions = this.activatedRoute.snapshot.data['resolvedData'];\n const routeSubscription = this.activatedRoute.paramMap.subscribe(\n (params: ParamMap) => (this.token = params.get('token'))\n );\n this.subscriptions.push(routeSubscription);\n\n this.form = this.formBuilder.group({\n challengeAnswer1: [null, Validators.required],\n challengeAnswer2: [null, Validators.required],\n challengeAnswer3: [null, Validators.required],\n passwordGroup: this.formBuilder.group(\n {\n newPassword: [null, Validators.required],\n newPasswordConfirm: [null, Validators.required],\n },\n {\n validator: EqualityValidator.stringCompare(\n 'newPassword',\n 'newPasswordConfirm',\n 'Passwords do not match'\n ),\n } as AbstractControlOptions\n ),\n });\n }\n\n private formatChallengeQuestionAnswers(): ChallengeQuestionAnswer[] {\n const result = [];\n for (let index = 0; index < this.challengeQuestions.length; index++) {\n const question = this.challengeQuestions[index];\n const answer = this.form.get(`challengeAnswer${index + 1}`)?.value;\n const challengeQuestionAnswer = {\n challengeQuestionId: question.id,\n answer: answer,\n } as ChallengeQuestionAnswer;\n\n result.push(challengeQuestionAnswer);\n }\n\n return result;\n }\n}\n","\n

    Reset Password

    \n
    \n
    \n \n
    \n
    \n \n \n

    \n NOTE: Challenge Question answers are case\n sensitive.\n

    \n \n \n
    \n \n
    \n \n Challenge Question Answer 1\n \n \n \n \n \n \n \n \n
    \n \n
    \n \n Challenge Question Answer 2\n \n \n \n \n \n \n \n \n
    \n \n
    \n \n Challenge Question Answer 3\n \n \n \n \n \n \n \n \n
    \n \n
    \n \n
    \n
    \n \n \n \n \n New Password\n \n \n \n \n \n \n \n \n \n Confirm New Password\n \n \n \n \n \n \n \n \n
    \n \n
    \n \n\n
    \n \n Update\n \n
    \n
    \n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'msep-session-expired',\n templateUrl: './session-expired.component.html',\n})\nexport class SessionExpiredComponent {}\n","\n

    Session Expired

    \n
    \n\n
    \n

    \n Your session has expired. For security reasons, you have been logged out of\n your account.\n

    \n

    \n Please\n log in\n again to start a new session.\n

    \n
    \n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'msep-sitemap',\n templateUrl: './sitemap.component.html',\n})\nexport class SitemapComponent {}\n","\n

    Sitemap

    \n
    \n\n \n \n Home\n \n \n \n About\n \n \n \n Become a Partner\n \n \n \n Contact Us\n \n \n \n Job Feed Guidance\n \n \n \n Media\n \n \n \n Partner Resources\n \n\n","import { Injectable } from '@angular/core';\nimport { Router, ActivatedRouteSnapshot } from '@angular/router';\nimport { Observable, EMPTY, catchError, tap } from 'rxjs';\nimport { AccountService } from '../account.service';\nimport { Resource } from '../resources.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ResetPasswordResolverService {\n constructor(private accountService: AccountService, private router: Router) {}\n\n resolve(route: ActivatedRouteSnapshot): Observable {\n const token = route.paramMap.get('token');\n if (token == null) {\n this.router.navigate(['/forgot-password']);\n return EMPTY;\n }\n\n return this.accountService.getUserChallengeQuestions(token).pipe(\n tap((result) => {\n if (result.length > 0) {\n return result;\n }\n this.router.navigateByUrl('/forgot-password?expiredToken=true');\n return EMPTY;\n }),\n catchError(() => {\n this.router.navigate(['/forgot-password']);\n return EMPTY;\n })\n );\n }\n}\n","\n

    Reset Account

    \n
    \n
    \n \n
    \n
    \n \n \n

    \n Our Records indicate you have not chosen your challenge questions\n and answers yet. In order to complete your password reset, please\n select 3 challenge questions and answers.\n

    \n

    \n NOTE: Challenge Question answers are case\n sensitive.\n

    \n
    \n \n \n Challenge Question 1 \n \n \n \n \n {{ challengeQuestion.description }}\n \n \n \n \n \n \n \n \n \n Challenge Question Answer 1\n \n \n \n \n \n \n \n \n \n Challenge Question 2 \n \n \n \n \n {{ challengeQuestion.description }}\n \n \n \n \n \n \n \n \n \n Challenge Question Answer 2\n \n \n \n \n \n \n \n \n \n Challenge Question 3 \n \n \n \n \n {{ challengeQuestion.description }}\n \n \n \n \n \n \n \n \n \n Challenge Question Answer 3\n \n \n \n \n \n \n \n \n
    \n \n
    \n \n
    \n
    \n \n \n \n \n New Password\n \n \n \n \n \n \n \n \n \n Confirm New Password\n \n \n \n \n \n \n \n \n \n
    \n \n
    \n \n\n
    \n \n Update\n \n
    \n
    \n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport {\n Validators,\n AbstractControlOptions,\n UntypedFormBuilder,\n UntypedFormGroup,\n} from '@angular/forms';\nimport { ActivatedRoute, ParamMap, Router } from '@angular/router';\nimport {\n AccountService,\n ChallengeQuestionAnswer,\n ResetPassword,\n} from 'core/services/account.service';\nimport { NotificationService } from 'core/services/infrastructure/notification.service';\nimport { Resource, ResourcesService } from 'core/services/resources.service';\nimport { Observable, Subscription } from 'rxjs';\nimport { AlertType } from 'shared/components/alert/alert.component';\nimport { EqualityValidator } from 'shared/validation/equality.validator';\nimport { GroupComparisonErrorStateMatcher } from 'shared/validation/group-errorstate-matcher';\n\n@Component({\n selector: 'msep-reset-account',\n templateUrl: './reset-account.component.html',\n})\nexport class ResetAccountComponent implements OnInit, OnDestroy {\n alertType = AlertType.Info;\n challengeQuestions$!: Observable;\n form!: UntypedFormGroup;\n isLoading = false;\n matcher = new GroupComparisonErrorStateMatcher();\n showHidden: Map = new Map([\n ['answer1', false],\n ['answer2', false],\n ['answer3', false],\n ['password', false],\n ['confirmPassword', false],\n ]);\n token!: string | null;\n\n private subscriptions: Subscription[] = [];\n\n constructor(\n private accountService: AccountService,\n private activatedRoute: ActivatedRoute,\n private formBuilder: UntypedFormBuilder,\n private notificationService: NotificationService,\n private resourceService: ResourcesService,\n private router: Router\n ) {}\n\n ngOnInit(): void {\n this.buildForm();\n this.challengeQuestions$ = this.resourceService.getChallengeQuestions();\n this.setToken();\n }\n\n onSubmit(): void {\n const dto = {\n challengeQuestionAnswers: this.formatChallengeQuestionAnswers(),\n newPassword: this.form.get('passwordGroup.newPassword')?.value,\n token: this.token,\n } as ResetPassword;\n this.isLoading = true;\n const resetSubscription = this.accountService.resetAccount(dto).subscribe({\n next: () => {\n this.notificationService.emitSuccess(\n 'Password has been reset successfully.'\n );\n this.router.navigate(['/']);\n },\n error: () => {\n this.notificationService.emitFailure(\n 'Error resetting account. Please contact an administrator.'\n );\n this.isLoading = false;\n },\n complete: () => {\n this.isLoading = false;\n },\n });\n this.subscriptions.push(resetSubscription);\n }\n\n toggleShowHidden(key: string): void {\n this.showHidden.set(key, !this.showHidden.get(key));\n }\n\n private buildForm(): void {\n this.form = this.formBuilder.group({\n challengeAnswer1: [null, Validators.required],\n challengeAnswer2: [null, Validators.required],\n challengeAnswer3: [null, Validators.required],\n challengeQuestion1: [null, Validators.required],\n challengeQuestion2: [null, Validators.required],\n challengeQuestion3: [null, Validators.required],\n passwordGroup: this.formBuilder.group(\n {\n newPassword: [null, Validators.required],\n newPasswordConfirm: [null, Validators.required],\n },\n {\n validator: EqualityValidator.stringCompare(\n 'newPassword',\n 'newPasswordConfirm',\n 'Passwords do not match'\n ),\n } as AbstractControlOptions\n ),\n });\n }\n\n private formatChallengeQuestionAnswers(): ChallengeQuestionAnswer[] {\n const result = [];\n const challengeQuestionAnswer1 = {\n challengeQuestionId: this.form.get('challengeQuestion1')?.value,\n answer: this.form.get('challengeAnswer1')?.value,\n } as ChallengeQuestionAnswer;\n result.push(challengeQuestionAnswer1);\n\n const challengeQuestionAnswer2 = {\n challengeQuestionId: this.form.get('challengeQuestion2')?.value,\n answer: this.form.get('challengeAnswer2')?.value,\n } as ChallengeQuestionAnswer;\n result.push(challengeQuestionAnswer2);\n\n const challengeQuestionAnswer3 = {\n challengeQuestionId: this.form.get('challengeQuestion3')?.value,\n answer: this.form.get('challengeAnswer3')?.value,\n } as ChallengeQuestionAnswer;\n result.push(challengeQuestionAnswer3);\n\n return result;\n }\n\n private setToken(): void {\n const routeSubscription = this.activatedRoute.paramMap.subscribe(\n (params: ParamMap) => (this.token = params.get('token'))\n );\n this.subscriptions.push(routeSubscription);\n }\n\n ngOnDestroy(): void {\n this.subscriptions?.forEach((x) => x.unsubscribe());\n }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'msep-user-agreement',\n templateUrl: './user-agreement.component.html',\n})\nexport class UserAgreementComponent {}\n","\n

    User Agreement

    \n
    \n\n\n \n
    \n

    \n You are accessing a U.S. Government (USG) information system (IS) (which\n includes any device attached to this information system) that is\n provided for U.S. Government authorized use only.\n

    \n\n

    By using this IS, you consent to the following conditions:

    \n\n

    \n The U.S. Government routinely intercepts and monitors communications on\n this information system for purposes including, but not limited to,\n penetration testing, communications security (COMSEC) monitoring,\n network operations and defense, personnel misconduct (PM), law\n enforcement (LE), and counterintelligence (CI) investigations. At any\n time, the U.S. Government may inspect and seize data stored on this\n information system. Communications using, or data stored on, this\n information system are not private, are subject to routine monitoring,\n interception, and search, and may be disclosed or used for any U.S.\n Government-authorized purpose. This information system includes security\n measures (e.g., authentication and access controls) to protect U.S.\n Government interests--not for your personal benefit or privacy.\n

    \n\n

    \n Notwithstanding the above, using an information system does not\n constitute consent to personnel misconduct, law enforcement, or\n counterintelligence investigative searching or monitoring of the content\n of privileged communications or data (including work product) that are\n related to personal representation or services by attorneys,\n psychotherapists, or clergy, and their assistants. Under these\n circumstances, such communications and work product are private and\n confidential, as further explained below:\n

    \n\n
      \n
    • \n Nothing in this User Agreement shall be interpreted to limit the\n user's consent to, or in any other way restrict or affect, any U.S.\n Government actions for purposes of network administration, operation,\n protection, or defense, or for communications security. This includes\n all communications and data on an information system, regardless of\n any applicable privilege or confidentiality.\n
    • \n
    • \n The user consents to interception/capture and seizure of ALL\n communications and data for any authorized purpose (including\n personnel misconduct, law enforcement, or counterintelligence\n investigation). However, consent to interception/capture or seizure of\n communications and data is not consent to the use of privileged\n communications or data for personnel misconduct, law enforcement, or\n counterintelligence investigation against any party and does not\n negate any applicable privilege or confidentiality that otherwise\n applies.\n
    • \n
    • \n Whether any particular communication or data qualifies for the\n protection of a privilege, or is covered by a duty of confidentiality,\n is determined in accordance with established legal standards and DoD\n policy. Users are strongly encouraged to seek personal legal counsel\n on such matters prior to using an information system if the user\n intends to rely on the protections of a privilege or confidentiality.\n
    • \n
    • \n Users should take reasonable steps to identify such communications or\n data that the user asserts are protected by any such privilege or\n confidentiality. However, the user's identification or assertion of a\n privilege or confidentiality is not sufficient to create such\n protection where none exists under established legal standards and DoD\n policy.\n
    • \n
    • \n A user's failure to take reasonable steps to identify such\n communications or data as privileged or confidential does not waive\n the privilege or confidentiality if such protections otherwise exist\n under established legal standards and DoD policy. However, in such\n cases the U.S. Government is authorized to take reasonable actions to\n identify such communication or data as being subject to a privilege or\n confidentiality, and such actions do not negate any applicable\n privilege or confidentiality.\n
    • \n
    • \n These conditions preserve the confidentiality of the communication or\n data, and the legal protections regarding the use and disclosure of\n privileged information, and thus such communications and data are\n private and confidential. Further, the U.S. Government shall take all\n reasonable measures to protect the content of captured/seized\n privileged communications and data to ensure they are appropriately\n protected.\n
    • \n
    \n\n

    \n In cases when the user has consented to content searching or monitoring\n of communications or data for personnel misconduct, law enforcement, or\n counterintelligence investigative searching, (i.e., for all\n communications and data other than privileged communications or data\n that are related to personal representation or services by attorneys,\n psychotherapists, or clergy, and their assistants), the U.S. Government\n may, solely at its discretion and in accordance with DoD policy, elect\n to apply a privilege or other restriction on the U.S. Government's\n otherwise-authorized use or disclosure of such information.\n

    \n\n

    \n All of the above conditions apply regardless of whether the access or\n use of an information system includes the display of a Notice and\n Consent Banner (\"banner\"). When a banner is used, the banner functions\n to remind the user of the conditions that are set forth in this User\n Agreement, regardless of whether the banner describes these conditions\n in full detail or provides a summary of such conditions, and regardless\n of whether the banner expressly references this User Agreement.\n

    \n\n \n Additional Terms Applicable to MSEP Partners - Spouse Candidate Database\n \n

    Use of the MSEP Spouse Candidate Database by MSEP Partners

    \n
      \n
    • \n You shall use the MSEP Spouse Candidate Database as provided in these\n Terms of Use and in the MSEP Statement of Support.\n
    • \n
    • \n You shall use the MSEP Spouse Candidate Database in accordance with\n all applicable privacy and data protection laws, and you agree you\n shall not further disclose any of the data from the MSEP Spouse\n Candidate Database to any third party, unless you are an authorized\n recruitment agency, staffing agency, advertising or other agency or\n using the resume explicitly for employment purposes.\n
    • \n
    \n

    \n You shall take appropriate physical, technical, and administrative\n measures to protect the data you have obtained from the MSEP Spouse\n Candidate Database from loss, misuse, unauthorized access, disclosure,\n alteration or destruction.\n

    \n

    The MSEP Partner Portal Candidate Search shall not be used:

    \n
      \n
    • \n (a) for any purpose other than as an employer seeking employees,\n including but not limited to advertising promotions, products, or\n services to any resume holders;\n
    • \n
    • \n (b) to make unsolicited phone calls or faxes or send unsolicited mail,\n email, or newsletters to resume holders or to contact any individual\n unless they have agreed to be contacted (where consent is required or,\n if express consent is not required, who has not informed you that they\n do not want to be contacted).\n
    • \n
    \n
    \n
    \n
    \n","import { Component } from '@angular/core';\nimport { ConfigService } from 'core/services/infrastructure/config.service';\nimport { DialogService } from 'core/services/infrastructure/dialog.service';\n\n@Component({\n selector: 'msep-create-account-overview',\n templateUrl: './create-account-overview.component.html',\n styleUrls: ['./create-account-overview.component.scss'],\n})\nexport class CreateAccountOverviewComponent {\n secoBaseUrl = this.configService.config.secoBaseUrl;\n\n constructor(\n private configService: ConfigService,\n private dialogService: DialogService\n ) {}\n\n onClickSeco(): void {\n const dialogRef = this.dialogService.governmentExitModal(this.secoBaseUrl);\n dialogRef.afterClosed().subscribe((result) => {\n if (result) {\n window.open(this.secoBaseUrl, '_blank');\n }\n });\n }\n\n onClickSecoGettingStarted(): void {\n const dialogRef = this.dialogService.governmentExitModal(\n this.secoBaseUrl + 'getting-started'\n );\n dialogRef.afterClosed().subscribe((result) => {\n if (result) {\n window.open(this.secoBaseUrl + 'getting-started', '_blank');\n }\n });\n }\n}\n","\n

    Need an account?

    \n

    \n MSEP looks forward to supporting your organization's effort to recruit,\n hire, promote and retain military spouses.\n

    \n
    \n

    Before You Get Started

    \n\n The account creation process is\n exclusively for organizations and their employees\n who wish to partner with the DoD MSEP Program. Please refer to the\n latest guidance about\n becoming an MSEP Partner, and carefully review the information below.\n\n
    \n
    \n \n

    Are you a military spouse?

    \n

    \n The Spouse Education and Career Opportunities (MySECO) Portal provides\n education and career guidance to military spouses worldwide, offering\n comprehensive resources and tools related to career exploration,\n education, training and licensing, employment readiness and career\n connections. Call\n 800-342-9647 to speak with a certified career coach.\n

    \n
    \n Register for MySECO\n Search for Jobs\n
    \n
    \n \n

    Are you representing an organization?

    \n

    \n If your organization is interested in becoming a MSEP partner, or you\n are interested in gaining access to your organization's MSEP account,\n our Help Desk team is ready to assist you. Click below to get started!\n

    \n
    \n \n
    \n
    \n","\n

    Alerts & Information

    \n

    \n Stay informed with the latest updates from the SECO program and the MSEP\n website.\n

    \n
    \n\n
    \n 0; else noResults\">\n \n \n Title\n \n {{ systemAlert.title }}\n \n \n \n Body\n \n {{ systemAlert.body }}\n \n \n \n \n \n \n \n \n \n \n \n
    \n\n\n","import { HttpParams } from '@angular/common/http';\nimport { Component, OnInit } from '@angular/core';\nimport { GhostLoaderType } from 'core/enums';\nimport {\n SystemAlert,\n SystemAlertService,\n} from 'core/services/cms/system-alert.service';\nimport { delay, switchMap, tap, Observable, BehaviorSubject } from 'rxjs';\nimport { ApiResponse } from 'shared/models/api-response';\n\n@Component({\n selector: 'msep-alerts-and-information',\n templateUrl: './alerts-and-information.component.html',\n styleUrls: ['./alerts-and-information.component.scss'],\n})\nexport class AlertsAndInformationComponent implements OnInit {\n alertCount = 0;\n displayedColumns = ['title', 'body'];\n filters = new HttpParams({ fromObject: { skip: 0, take: 10 } });\n ghostLoaderType = GhostLoaderType.Table;\n isLoading = false;\n pageSize = 10;\n systemAlerts!: SystemAlert[];\n systemAlert$!: Observable>;\n systemAlertActions$!: Observable;\n\n private systemAlertSubject = new BehaviorSubject(true);\n\n constructor(private systemAlertService: SystemAlertService) {}\n\n ngOnInit(): void {\n this.getPublishedAlertCount();\n // force top-menu icon number to be updated when viewing the page\n this.systemAlertService.publishedSystemAlertCount$.next(true);\n }\n\n onPagingChange(event: { skip: number; take: number }): void {\n this.filters = this.filters.set('skip', event.skip).set('take', event.take);\n this.systemAlertSubject.next(true);\n }\n\n private getPublishedAlertCount(): void {\n this.systemAlertActions$ = this.systemAlertSubject.asObservable();\n this.systemAlert$ = this.systemAlertActions$.pipe(\n delay(0),\n tap(() => (this.isLoading = true)),\n switchMap(() =>\n this.systemAlertService.publishedSystemAlerts(this.filters)\n ),\n tap((results) => {\n this.alertCount = results.total;\n this.systemAlerts = results.data;\n this.isLoading = false;\n })\n );\n }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'msep-privacy-act-statement',\n templateUrl: './privacy-act-statement.component.html',\n})\nexport class PrivacyActStatementComponent {}\n","\n

    Privacy Act Statement

    \n
    \n\n\n \n
    \n

    \n Authority: 10 U.S.C. 136, Under Secretary of Defense\n for Personnel and Readiness; 10 U.S.C. 1784, Employment Opportunities\n for Military Spouses, and DoDI 1342.22, Military Family Readiness.\n

    \n\n

    \n Principal Purpose(s): The Military Spouse Employment\n Partnership (MSEP) Partner Portal is the sole web platform utilized to\n connect military spouses with companies seeking to hire military spouse\n employees. MSEP is a component of the DoD Spouse Education and Career\n Opportunities (SECO) Program which is the primary source of education,\n career and employment counseling for all military spouses.\n

    \n\n

    \n Routine Use(s): In addition to those disclosures\n generally permitted under 5 U.S.C. 552a(b) of the Privacy Act of 1974,\n as amended, the records contained herein may specifically be disclosed\n outside the DoD as a routine use pursuant to 5 U.S.C. 552a(b)(3) as\n follows: To authorized DoD SECO contractors and grantees for the purpose\n of responding to military spouse need as they relate to employment\n readiness. To authorized DoD contractors and grantees for the purpose of\n supporting research studies concerned with the education, career and\n employment counseling of military spouses participating in DoD funded\n spousal education, career and employment programs. See the applicable\n system of records notice, DPR 47 DoD, Military Spouse Employment\n Partnership (MSEP) Partner Portal for additional routine uses, located\n at:\n \n https://dpcld.defense.gov/Portals/49/Documents/Privacy/SORNs/OSDJS/DPR-47-DoD.pdf\n

    \n\n

    \n Disclosure: Voluntary; however, failure to provide\n information may impact your ability to utilize certain program\n opportunities.\n

    \n
    \n
    \n
    \n","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { AppLayoutComponent } from '../layout/app-layout/app-layout.component';\nimport { BrowserNotSupportedLayoutComponent } from '../layout/browser-not-supported-layout/browser-not-supported-layout.component';\nimport { AboutUsComponent } from './about-us/about-us.component';\nimport { BecomeAPartnerComponent } from './become-a-partner/become-a-partner.component';\nimport { BrowserNotSupportedComponent } from './browser-not-supported/browser-not-supported.component';\nimport { ContactUsComponent } from './contact-us/contact-us.component';\nimport { ErrorComponent } from './error/error.component';\nimport { FaqsComponent } from './faqs/faqs.component';\nimport { ForgotPasswordComponent } from './forgot-password/forgot-password.component';\nimport { HelpComponent } from './help/help.component';\nimport { HomeWelcomeComponent } from './home-welcome/home-welcome.component';\nimport { JobFeedGuidanceComponent } from './job-feed-guidance/job-feed-guidance.component';\nimport { LegalAndSecurityComponent } from './legal-and-security/legal-and-security.component';\nimport { LoginComponent } from './login/login.component';\nimport { LogoutComponent } from './logout/logout.component';\nimport { MediaComponent } from './media/media.component';\nimport { NoticeAndConsentComponent } from './notice-and-consent/notice-and-consent.component';\nimport { OurPartnersListComponent } from './our-partners-list/our-partners-list.component';\nimport { PartnerResourcesComponent } from './partner-resources/partner-resources.component';\nimport { ViewOurPartnerComponent } from './view-our-partner/view-our-partner.component';\nimport { PartnerProfileResolverService } from 'core/services/resolvers/partner-profile-resolver.service';\nimport { ResetPasswordComponent } from './reset-password/reset-password.component';\nimport { SessionExpiredComponent } from './session-expired/session-expired.component';\nimport { SitemapComponent } from './sitemap/sitemap.component';\nimport { ResetPasswordResolverService } from 'core/services/resolvers/reset-password-resolver.service';\nimport { ResetAccountComponent } from './reset-account/reset-account.component';\nimport { UserAgreementComponent } from './user-agreement/user-agreement.component';\nimport { CreateAccountOverviewComponent } from './create-account-overview/create-account-overview.component';\nimport { AlertsAndInformationComponent } from './alerts-and-information/alerts-and-information.component';\nimport { PrivacyActStatementComponent } from './privacy-act-statement/privacy-act-statement.component';\nimport { FaqsResolverService } from 'core/services/resolvers/faqs-resolver.service';\nimport { CanViewOurPartnerGuard } from 'core/guards/can-view-our-partner.guard';\n\nconst routes: Routes = [\n {\n path: '',\n component: AppLayoutComponent,\n children: [\n {\n path: '',\n component: HomeWelcomeComponent,\n data: {\n title: 'Military Spouse Employment Partnership Partner Portal',\n description:\n 'The Department of Defense Military Spouse Employment Partnership (MSEP) connects military spouses with hundreds of partner employers who have committed to recruit, hire, promote and retain military spouses.',\n },\n },\n {\n path: 'about-us',\n component: AboutUsComponent,\n data: {\n title: 'About the Military Spouse Employment Partnership',\n description:\n 'The need to support military spouses, the launch of MSEP, and MSEP today.',\n },\n },\n {\n path: 'alerts-and-information',\n component: AlertsAndInformationComponent,\n data: {\n title: 'Alerts & Information',\n description:\n 'Stay informed with the latest updates from the SECO program and the MSEP website.',\n },\n },\n {\n path: 'become-a-partner',\n component: BecomeAPartnerComponent,\n data: {\n title: 'Connecting talented military spouses to committed employers',\n description:\n 'The Military Spouse Employment Partnership is a Department of Defense (DoD) led initiative that connects military spouses with hundreds of partner employers who have committed to recruit, hire, promote and retain military spouses.',\n },\n },\n {\n path: 'create-an-account',\n component: ContactUsComponent,\n data: {\n title: 'Create an Account',\n description:\n 'Connecting Talented Military Spouses To Committed Employers',\n createAccount: true,\n },\n },\n {\n path: 'contact-us',\n component: ContactUsComponent,\n data: {\n title: 'Contact the MSEP team',\n description:\n 'Use the form below to send us your comments or report any technical difficulties you experience with our website.',\n createAccount: false,\n },\n },\n {\n path: 'error/:exceptionId',\n component: ErrorComponent,\n },\n {\n path: 'faqs',\n component: FaqsComponent,\n resolve: { resolvedData: FaqsResolverService },\n data: {\n title: 'MSEP portal and program FAQs',\n description:\n 'Explore the most frequently asked questions regarding the MSEP portal and program.',\n },\n },\n {\n path: 'forgot-password',\n component: ForgotPasswordComponent,\n },\n {\n path: 'get-started',\n component: CreateAccountOverviewComponent,\n data: {\n title: 'Create an MSEP portal account',\n description:\n \"MSEP looks forward to supporting your organization's effort to recruit, hire, promote and retain military spouses.\",\n },\n },\n {\n path: 'help',\n component: HelpComponent,\n },\n {\n path: 'job-feed-guidance',\n component: JobFeedGuidanceComponent,\n data: {\n title: 'General job feed guidance',\n description:\n 'The MSEP Partner Portal uses an automated importing of job feeds. Specific job feed set up and examples are provided in this section.',\n },\n },\n {\n path: 'legal-and-security',\n component: LegalAndSecurityComponent,\n },\n {\n path: 'login',\n component: LoginComponent,\n data: {\n title: 'Log-in to your MSEP account',\n description:\n 'Login to your MSEP account or begin registration process.',\n },\n },\n {\n path: 'logout',\n component: LogoutComponent,\n },\n {\n path: 'media',\n component: MediaComponent,\n data: {\n title: 'MSEP videos and related media',\n description:\n 'Explore the videos and linked media to provide insight to the conduct and scope of the MSEP program.',\n },\n },\n {\n path: 'notice-and-consent/:path',\n component: NoticeAndConsentComponent,\n },\n {\n path: 'our-partners',\n component: OurPartnersListComponent,\n data: {\n title:\n 'A list of all companies and organizations participating in the MSEP Program.',\n description:\n 'A detailed profile of each MSEP partner is available for review by clicking on the partner logo.',\n },\n },\n {\n path: 'our-partners/:id',\n component: ViewOurPartnerComponent,\n canActivate: [CanViewOurPartnerGuard],\n resolve: { resolvedData: PartnerProfileResolverService },\n data: {\n title: 'MSEP Partner | MSEP',\n description:\n 'A detailed profile of each MSEP partner is available for review, including description, statistics, industry and contact information.',\n },\n },\n {\n path: 'partner-resources',\n component: PartnerResourcesComponent,\n data: {\n title:\n 'Explore resources available to enduring and potential MSEP partners',\n description:\n 'The resources are collateral materials provided for organizations to prepare for and participate in the MSEP Program.',\n },\n },\n {\n path: 'privacy-policy',\n component: PrivacyActStatementComponent,\n data: {\n title: 'Privacy Act Statement & Security | MSEP',\n description:\n 'Details of the privacy policy, security, and other website regulations for the MyCAA Scholarship program.',\n },\n },\n {\n path: 'reset-account/:token',\n component: ResetAccountComponent,\n },\n {\n path: 'reset-password/:token',\n component: ResetPasswordComponent,\n resolve: { resolvedData: ResetPasswordResolverService },\n },\n {\n path: 'session-expired',\n component: SessionExpiredComponent,\n },\n {\n path: 'sitemap',\n component: SitemapComponent,\n },\n {\n path: 'user-agreement',\n component: UserAgreementComponent,\n data: {\n title: 'User Agreement | MSEP',\n description:\n 'Details of the agreement Users must consent to in regard to their use and conduct within this U.S. Government Information System.',\n },\n },\n ],\n },\n {\n path: '',\n component: BrowserNotSupportedLayoutComponent,\n children: [\n {\n path: 'browser-not-supported',\n component: BrowserNotSupportedComponent,\n },\n ],\n },\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class HomeRoutingModule {}\n","import { Injectable } from '@angular/core';\n\nimport { Observable } from 'rxjs';\nimport { Faq, ResourcesService } from '../resources.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class FaqsResolverService {\n constructor(private resourcesService: ResourcesService) {}\n\n resolve(): Observable {\n return this.resourcesService.getFaqs();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, Router } from '@angular/router';\nimport { PartnersService } from 'core/services/partners.service';\nimport { Observable, tap } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class CanViewOurPartnerGuard {\n constructor(\n private partnerService: PartnersService,\n private router: Router\n ) {}\n\n canActivate(route: ActivatedRouteSnapshot): Observable {\n const organizationId = route.paramMap.get('id');\n\n if (organizationId === null || isNaN(+organizationId)) {\n this.handleInvalidAccess();\n }\n\n return this.partnerService.canViewOurPartner(Number(organizationId)).pipe(\n tap((result: boolean) => {\n if (!result) return this.handleInvalidAccess();\n return true;\n })\n );\n }\n\n private handleInvalidAccess(): boolean {\n this.router.navigate(['/our-partners']);\n return false;\n }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'msep-page-not-found',\n templateUrl: './page-not-found.component.html',\n})\nexport class PageNotFoundComponent {}\n","\n

    Page Not Found

    \n
    \n

    \n Sorry, the page you requested could not be found. This page may have moved, no\n longer exists, or was referenced by a broken link.\n

    \n\n

    \n Please return to the home page to\n continue.\n

    \n","import { CoreModule } from 'core/core.module';\nimport { HomeModule } from './home/home.module';\nimport { SharedModule } from './shared/shared.module';\n\nexport const APP_MODULES = [CoreModule, HomeModule, SharedModule];\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { RecaptchaFormsModule, RecaptchaModule } from 'ng-recaptcha-2';\nimport { HOME_COMPONENTS } from '.';\nimport { MaterialModule } from '../shared/material.module';\nimport { SharedModule } from '../shared/shared.module';\nimport { HomeRoutingModule } from './home-routing.module';\n\n@NgModule({\n imports: [\n CommonModule,\n HomeRoutingModule,\n MaterialModule,\n ReactiveFormsModule,\n RecaptchaFormsModule,\n RecaptchaModule,\n SharedModule,\n ],\n declarations: [HOME_COMPONENTS],\n})\nexport class HomeModule {}\n","import { Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { AuthenticationService } from 'core/services/authentication.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AuthenticatedGuard {\n constructor(\n private authService: AuthenticationService,\n private router: Router\n ) {}\n\n canActivate(): boolean {\n if (!this.authService.isAuthenticated()) {\n return this.handleInvalidAccess();\n }\n\n return true;\n }\n\n private handleInvalidAccess(): boolean {\n this.router.navigate(['/not-found']);\n return false;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { Role } from 'core/enums';\nimport { JwtService } from 'core/services/infrastructure/jwt.service';\nimport { AuthenticationService } from '../services/authentication.service';\n\n@Injectable({ providedIn: 'root' })\nexport class SpecialistGuard {\n constructor(\n private authService: AuthenticationService,\n private jwtService: JwtService,\n private router: Router\n ) {}\n\n canActivate(): boolean {\n if (!this.authService.isAuthenticated()) {\n return this.handleInvalidAccess();\n }\n\n if (\n !this.jwtService.userHasRole(Role.Specialist) &&\n !this.jwtService.userHasRole(Role.SysOp)\n ) {\n return this.handleInvalidAccess();\n }\n\n return true;\n }\n\n private handleInvalidAccess(): boolean {\n this.router.navigate(['/not-found']);\n return false;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { Role } from 'core/enums';\nimport { JwtService } from 'core/services/infrastructure/jwt.service';\nimport { AuthenticationService } from '../services/authentication.service';\n\n@Injectable({ providedIn: 'root' })\nexport class GovtGuard {\n constructor(\n private authService: AuthenticationService,\n private jwtService: JwtService,\n private router: Router\n ) {}\n\n canActivate(): boolean {\n if (!this.authService.isAuthenticated()) {\n return this.handleInvalidAccess();\n }\n\n if (!this.jwtService.userHasRole(Role.Govt)) {\n return this.handleInvalidAccess();\n }\n\n return true;\n }\n\n private handleInvalidAccess(): boolean {\n this.router.navigate(['/not-found']);\n return false;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { SysOpGuard } from 'core/guards/sysOp.guard';\nimport { AuthenticatedGuard } from 'core/guards/authenticated.guard';\nimport { PageNotFoundComponent } from 'home/page-not-found/page-not-found.component';\nimport { AppLayoutComponent } from './layout/app-layout/app-layout.component';\nimport { ManageReportsGuard } from 'core/guards/manage-reports.guard';\nimport { SpecialistGuard } from 'core/guards/specialist.guard';\nimport { GovtGuard } from 'core/guards/government.guard';\nimport { VhfTempGuard } from 'core/guards/vhfTemp.guard';\nimport { CanViewChartsGuard } from 'core/guards/can-view-charts.guard';\n\nconst routes: Routes = [\n {\n path: 'admin',\n canActivate: [SysOpGuard],\n loadChildren: () =>\n import('./admin/admin.module').then((x) => x.AdminModule),\n },\n {\n path: 'charts',\n canActivate: [CanViewChartsGuard],\n loadChildren: () =>\n import('./charts/charts.module').then((x) => x.ChartsModule),\n },\n {\n path: 'content-management',\n canActivate: [SysOpGuard],\n loadChildren: () => import('./cms/cms.module').then((x) => x.CmsModule),\n },\n {\n path: 'government',\n canActivate: [GovtGuard],\n loadChildren: () =>\n import('./government/government.module').then((x) => x.GovernmentModule),\n },\n {\n path: 'help',\n canActivate: [AuthenticatedGuard],\n loadChildren: () => import('./help/help.module').then((x) => x.HelpModule),\n },\n {\n path: 'partner',\n canActivate: [AuthenticatedGuard],\n loadChildren: () =>\n import('./partners/partners.module').then((x) => x.PartnersModule),\n },\n {\n path: 'registration',\n canActivate: [AuthenticatedGuard],\n loadChildren: () =>\n import('./registration/registration.module').then(\n (x) => x.RegistrationModule\n ),\n },\n {\n path: 'report',\n canActivate: [ManageReportsGuard],\n loadChildren: () =>\n import('./report/report.module').then((x) => x.ReportModule),\n },\n {\n path: 'specialist',\n canActivate: [SpecialistGuard],\n loadChildren: () =>\n import('./specialists/specialists.module').then(\n (x) => x.SpecialistsModule\n ),\n },\n {\n path: 'virtual-events',\n canActivate: [VhfTempGuard],\n loadChildren: () =>\n import('./virtual-events/virtual-events.module').then(\n (x) => x.VirtualEventsModule\n ),\n },\n {\n path: '',\n component: AppLayoutComponent,\n children: [\n { path: '', redirectTo: '/', pathMatch: 'full' },\n { path: '**', component: PageNotFoundComponent },\n ],\n },\n];\n\n@NgModule({\n imports: [RouterModule.forRoot(routes, { anchorScrolling: 'enabled' })],\n exports: [RouterModule],\n})\nexport class AppRoutingModule {}\n","import { Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { Role } from 'core/enums';\nimport { JwtService } from 'core/services/infrastructure/jwt.service';\nimport { AuthenticationService } from '../services/authentication.service';\n\n@Injectable({ providedIn: 'root' })\nexport class CanViewChartsGuard {\n constructor(\n private authService: AuthenticationService,\n private jwtService: JwtService,\n private router: Router\n ) {}\n\n canActivate(): boolean {\n if (\n this.authService.isAuthenticated() &&\n !this.jwtService.userHasRole(Role.User)\n ) {\n return true;\n }\n\n return this.handleInvalidAccess();\n }\n\n private handleInvalidAccess(): boolean {\n this.router.navigate(['/not-found']);\n return false;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { MatIconRegistry } from '@angular/material/icon';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { Icon } from '../../enums';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CustomIconService {\n constructor(\n private matIconRegistry: MatIconRegistry,\n private domSanitizer: DomSanitizer\n ) {}\n\n public registerCustomIcons(): void {\n this.loadIcons(Object.values(Icon), 'assets/images/icons');\n }\n\n private loadIcons(iconKeys: string[], iconUrl: string): void {\n iconKeys.forEach((key) => {\n this.matIconRegistry.addSvgIcon(\n key,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n `${iconUrl}/${key}.svg`\n )\n );\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Meta, Title } from '@angular/platform-browser';\nimport { ActivatedRoute } from '@angular/router';\n\n@Injectable({ providedIn: 'root' })\nexport class SeoService {\n private readonly defaultTitle = 'Military Spouse Employment Partnership';\n\n constructor(\n private readonly activatedRoute: ActivatedRoute,\n private readonly htmlTitle: Title,\n private readonly meta: Meta\n ) {}\n\n getMetaDetailsFromRoute(): SeoMetaDetails {\n let child = this.activatedRoute.firstChild;\n while (child?.firstChild) {\n child = child.firstChild;\n }\n\n const metaDetails: SeoMetaDetails = { title: this.defaultTitle };\n if (child?.snapshot.data['title']) {\n metaDetails.title = child.snapshot.data['title'];\n }\n if (child?.snapshot.data['description']) {\n metaDetails.description = child.snapshot.data['description'];\n }\n\n return metaDetails;\n }\n\n setMetaTags(metaDetails: SeoMetaDetails): void {\n const { title, description } = metaDetails;\n this.setMetaTitle(title);\n if (description) {\n this.setMetaDescription(description);\n } else {\n this.deleteMetaDescription();\n }\n }\n\n setTitle(title: string): void {\n this.htmlTitle.setTitle(title);\n }\n\n private deleteMetaDescription(): void {\n this.meta.removeTag('name=description');\n }\n\n private setMetaDescription(description: string): void {\n if (this.meta.getTag('name=description')) {\n this.meta.updateTag({ name: 'description', content: description });\n } else {\n this.meta.addTag({ name: 'description', content: description });\n }\n }\n\n private setMetaTitle(title: string): void {\n if (this.meta.getTag('name=title')) {\n this.meta.updateTag({ name: 'title', content: title });\n } else {\n this.meta.addTag({ name: 'title', content: title });\n }\n }\n}\n\ninterface SeoMetaDetails {\n title: string;\n description?: string;\n}\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { Router } from '@angular/router';\nimport { AuthenticationService } from 'core/services/authentication.service';\nimport {\n filter,\n fromEvent,\n interval,\n map,\n merge,\n Observable,\n Subscription,\n switchMap,\n} from 'rxjs';\nimport { ConfirmationDialogComponent } from 'shared/components/confirmation-dialog/confirmation-dialog.component';\n\n@Component({\n selector: 'msep-idle-timeout-warning',\n templateUrl: './idle-timeout-warning.component.html',\n})\nexport class IdleTimeoutWarningComponent implements OnInit, OnDestroy {\n private timeoutInMinutes!: number;\n private idleTimeout!: number;\n private isModalOpen = false;\n private subscriptions: Subscription = new Subscription();\n private warningDialogRef!: MatDialogRef;\n\n constructor(\n private authenticationService: AuthenticationService,\n private dialog: MatDialog,\n private router: Router\n ) {}\n\n ngOnInit(): void {\n this.getUsersTimeout();\n this.createTimerEvents();\n }\n\n logoutByTimeout(): void {\n this.subscriptions.add(\n this.authenticationService.logOut().subscribe(() => {\n this.router.navigate(['/session-expired']);\n })\n );\n }\n\n logoutByManualClick(): void {\n this.subscriptions.add(\n this.authenticationService.logOut().subscribe(() => {\n this.router.navigate(['/logout']);\n })\n );\n }\n\n openDialog(): void {\n this.isModalOpen = true;\n this.warningDialogRef = this.dialog.open(ConfirmationDialogComponent, {\n data: {\n title: 'Session Time-Out Warning',\n message: this.buildMessage(),\n buttonYes: 'Log Out',\n buttonNo: 'Continue',\n },\n });\n\n this.warningDialogRef.afterClosed().subscribe((confirm) => {\n this.isModalOpen = false;\n if (confirm) {\n this.logoutByManualClick();\n }\n });\n }\n\n private buildMessage(): string {\n return `You have been inactive for over ${\n this.timeoutInMinutes - 1\n } minutes. Please click \"Continue\" or \"Log Out\". You will automatically be logged out after ${\n this.timeoutInMinutes\n } minutes of inactivity.`;\n }\n\n private createTimerEvents(): void {\n const eventNames = ['click', 'mousemove'];\n\n const eventStreams = eventNames.map((eventName) => {\n return fromEvent(document, eventName);\n });\n\n const source = merge(...eventStreams);\n\n // interval timer\n this.subscriptions.add(this.showModalIfOneMinuteLeft(source));\n // log-out timer\n this.subscriptions.add(this.handleAutomaticTimeout(source));\n }\n\n private getUsersTimeout(): void {\n this.authenticationService.isAuthenticatedSubject\n .pipe(\n filter((x) => x === true),\n map(() => {\n // this is done due to admins having different timeout than other users.\n this.timeoutInMinutes =\n this.authenticationService.getTimeoutTimeFromJwt();\n this.idleTimeout = this.timeoutInMinutes * 60000; // convert to ms\n })\n )\n .subscribe();\n }\n\n private handleAutomaticTimeout(source: Observable): Subscription {\n return source\n .pipe(\n filter(() => this.idleTimeout !== undefined),\n switchMap(() => interval(this.idleTimeout)),\n map(() => this.authenticationService.isAuthenticated())\n )\n .subscribe((authenticated) => {\n if (authenticated) {\n this.isModalOpen = false;\n this.warningDialogRef.close();\n this.logoutByTimeout();\n }\n });\n }\n\n private showModalIfOneMinuteLeft(source: Observable): Subscription {\n return source\n .pipe(\n filter(() => this.idleTimeout !== undefined),\n switchMap(() => interval(this.idleTimeout - 60000)),\n map(() => this.authenticationService.isAuthenticated())\n )\n .subscribe((authenticated) => {\n if (authenticated && !this.isModalOpen) {\n this.openDialog();\n }\n });\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n}\n","import { AfterViewInit, Component, ElementRef, Renderer2 } from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\nimport { Router } from '@angular/router';\nimport { DialogService } from 'core/services/infrastructure/dialog.service';\nimport { Subscription } from 'rxjs';\nimport { ConfirmationDialogComponent } from 'shared/components/confirmation-dialog/confirmation-dialog.component';\n\n@Component({\n selector: 'msep-mos-universal-nav',\n templateUrl: './mos-universal-nav.component.html',\n styleUrls: ['./mos-universal-nav.component.scss'],\n})\nexport class MosUniversalNavComponent implements AfterViewInit {\n removeEventListener!: () => void;\n subscriptions: Subscription[] = [];\n private confirmDialogRef!: MatDialogRef;\n constructor(\n private renderer: Renderer2,\n private elementRef: ElementRef,\n private dialogService: DialogService,\n private router: Router\n ) {}\n\n ngAfterViewInit(): void {\n this.generateScript();\n\n this.removeEventListener = this.renderer.listen(\n this.elementRef.nativeElement,\n 'click',\n (event) => {\n if (event.target.closest('a') instanceof HTMLAnchorElement) {\n this.handleAnchorClick(event);\n }\n }\n );\n }\n\n generateScript(): void {\n const scriptLoaderId = 'navLoader';\n // only load script if it doesn't exist\n const script = document.getElementById(scriptLoaderId);\n if (script) {\n return;\n }\n const navScript = document.createElement('script');\n navScript.type = 'text/javascript';\n navScript.async = true;\n navScript.defer = true;\n navScript.id = scriptLoaderId;\n /*\n Since our CSP does not allow inline scripts, we need to generate this\n code as an external file. The scripts section of angular.json references the\n input file under assets/scripts and outputs it as universalnav.js. We also set\n inject = false so that the CLI does not automatically include this script in the\n HTML for us.\n */\n navScript.src = 'universalnav.js';\n\n document.body.appendChild(navScript);\n }\n\n // eslint-disable-next-line\n public handleAnchorClick(event: any): void {\n event.preventDefault();\n\n const anchor = event.target.closest('a') as HTMLAnchorElement;\n\n if (!anchor.href || anchor.href.includes('universalnavCollapse')) {\n return;\n }\n\n if (\n anchor.href.includes('mailto:') ||\n anchor.href.includes('tel:') ||\n anchor.href.includes('https://msep.militaryonesource.mil/msep')\n ) {\n window.location.href = anchor.href;\n return;\n }\n\n // checks if link is external\n if (!anchor.href.includes(location.hostname)) {\n this.confirmDialogRef = this.dialogService.governmentExitModal(\n anchor.href\n );\n const dialogSubscription = this.confirmDialogRef\n .afterClosed()\n .subscribe();\n\n this.subscriptions.push(dialogSubscription);\n } else {\n this.router.navigate([anchor.attributes.getNamedItem('href')?.value]);\n }\n }\n}\n","
    \n","import { Component, OnDestroy, OnInit, isDevMode } from '@angular/core';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { AuthenticationService } from 'core/services/authentication.service';\nimport { GoogleAnalyticsService } from 'core/services/infrastructure/google-analytics.service';\nimport { SeoService } from 'core/services/seo.service';\nimport { Subscription } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport { CustomIconService } from './core/services/infrastructure/custom-icon.service';\nimport { NotificationService } from './core/services/infrastructure/notification.service';\n\n@Component({\n selector: 'msep-root',\n templateUrl: './app.component.html',\n styleUrls: ['./app.component.scss'],\n})\nexport class AppComponent implements OnInit, OnDestroy {\n private subscriptions: Subscription[] = [];\n\n constructor(\n private authenticationService: AuthenticationService,\n private customIconService: CustomIconService,\n private googleAnalyticsService: GoogleAnalyticsService,\n private notificationService: NotificationService,\n private router: Router,\n private seoService: SeoService\n ) {\n this.customIconService.registerCustomIcons();\n }\n\n ngOnInit(): void {\n // Handles scheduling refresh token if application is refreshed in the browser.\n if (this.authenticationService.isAuthenticated()) {\n this.authenticationService.scheduleRefresh();\n }\n this.authenticationService.handleManualTokenDeletion();\n\n if (!isDevMode()) {\n this.googleAnalyticsService.generateScript();\n }\n\n this.addTabListener();\n this.handleFailureNotifications();\n this.handleFailureFullDurationNotifications();\n this.handleSuccessNotifications();\n this.handleSuccessFullDurationNotifications();\n this.trackNavigationEnd();\n }\n\n // adds a specified class to indicate tab usage\n // this allows our focus styles to scope only on keyboard usage\n // rather than triggering on mouse or touch usage\n private addTabListener(): void {\n const tabClass = 'using-tab';\n document.body.addEventListener('mousedown', () =>\n document.body.classList.remove(tabClass)\n );\n\n document.body.addEventListener('keydown', (e: KeyboardEvent) => {\n const tabKey = 'Tab';\n if (e.key === tabKey) {\n document.body.classList.add(tabClass);\n }\n });\n }\n\n private resetFocus(): void {\n const focusedElement = document.activeElement as HTMLElement;\n // remove focus\n focusedElement.blur();\n\n // reset focus to body, so that skip link will be first item shown on tab\n // note that tabindex is required for this process to work\n const body = document.querySelector('body') as HTMLElement;\n if (!focusedElement.classList.contains('stop-tab-index-reset') && body) {\n body.tabIndex = 0;\n body.focus();\n }\n }\n\n private handleFailureNotifications(): void {\n const failureSubscription =\n this.notificationService.failureNotification$.subscribe(\n (message: string) => this.notificationService.showFailure(message)\n );\n\n this.subscriptions.push(failureSubscription);\n }\n\n private handleFailureFullDurationNotifications(): void {\n const successSubscription =\n this.notificationService.failureFullDurationNotification$.subscribe(\n (message: string) =>\n this.notificationService.showFailureFullDuration(message)\n );\n\n this.subscriptions.push(successSubscription);\n }\n\n private handleSuccessNotifications(): void {\n const successSubscription =\n this.notificationService.successNotification$.subscribe(\n (message: string) => this.notificationService.showSuccess(message)\n );\n\n this.subscriptions.push(successSubscription);\n }\n\n private handleSuccessFullDurationNotifications(): void {\n const successSubscription =\n this.notificationService.successFullDurationNotification$.subscribe(\n (message: string) =>\n this.notificationService.showSuccessFullDuration(message)\n );\n\n this.subscriptions.push(successSubscription);\n }\n\n private trackNavigationEnd(): void {\n const navEndSubscription = this.router.events\n .pipe(\n filter((event) => event instanceof NavigationEnd),\n map(() => this.seoService.getMetaDetailsFromRoute())\n )\n .subscribe((metaDetails) => {\n this.seoService.setTitle(metaDetails.title);\n this.seoService.setMetaTags(metaDetails);\n this.resetFocus();\n window.scrollTo(0, 0); // scroll to top on any navigation\n });\n\n this.subscriptions.push(navEndSubscription);\n }\n\n ngOnDestroy(): void {\n this.subscriptions.forEach((subscription) => subscription.unsubscribe());\n }\n}\n","\n Skip to content\n\n\n\n\n\n","import {\n provideHttpClient,\n withInterceptorsFromDi,\n} from '@angular/common/http';\nimport { NgModule } from '@angular/core';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { CORE_INTERCEPTORS } from 'core';\nimport { APP_MODULES } from '.';\nimport { AppRoutingModule } from './app-routing.module';\nimport { AppComponent } from './app.component';\nimport {\n ConfigService,\n CONFIG_SERVICE_PROVIDER,\n} from './core/services/infrastructure/config.service';\nimport { LAYOUT_COMPONENTS } from './layout';\nimport { MaterialModule } from './shared/material.module';\n\n@NgModule({\n declarations: [AppComponent, LAYOUT_COMPONENTS],\n bootstrap: [AppComponent],\n imports: [\n BrowserModule,\n BrowserAnimationsModule,\n APP_MODULES,\n MaterialModule,\n AppRoutingModule,\n ],\n providers: [\n ConfigService,\n CONFIG_SERVICE_PROVIDER,\n CORE_INTERCEPTORS,\n provideHttpClient(withInterceptorsFromDi()),\n ],\n})\nexport class AppModule {}\n","import { enableProdMode } from '@angular/core';\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n\nimport { AppModule } from './app/app.module';\nimport { environment } from './environments/environment';\n\nif (environment.production) {\n enableProdMode();\n}\n\nplatformBrowserDynamic()\n .bootstrapModule(AppModule)\n .catch((err) => console.error(err));\n","var map = {\n\t\"./af\": 5637,\n\t\"./af.js\": 5637,\n\t\"./ar\": 6777,\n\t\"./ar-dz\": 4508,\n\t\"./ar-dz.js\": 4508,\n\t\"./ar-kw\": 7504,\n\t\"./ar-kw.js\": 7504,\n\t\"./ar-ly\": 5373,\n\t\"./ar-ly.js\": 5373,\n\t\"./ar-ma\": 2412,\n\t\"./ar-ma.js\": 2412,\n\t\"./ar-sa\": 6670,\n\t\"./ar-sa.js\": 6670,\n\t\"./ar-tn\": 6448,\n\t\"./ar-tn.js\": 6448,\n\t\"./ar.js\": 6777,\n\t\"./az\": 3009,\n\t\"./az.js\": 3009,\n\t\"./be\": 8299,\n\t\"./be.js\": 8299,\n\t\"./bg\": 4685,\n\t\"./bg.js\": 4685,\n\t\"./bm\": 1171,\n\t\"./bm.js\": 1171,\n\t\"./bn\": 3590,\n\t\"./bn-bd\": 5841,\n\t\"./bn-bd.js\": 5841,\n\t\"./bn.js\": 3590,\n\t\"./bo\": 4309,\n\t\"./bo.js\": 4309,\n\t\"./br\": 4130,\n\t\"./br.js\": 4130,\n\t\"./bs\": 8033,\n\t\"./bs.js\": 8033,\n\t\"./ca\": 5294,\n\t\"./ca.js\": 5294,\n\t\"./cs\": 3028,\n\t\"./cs.js\": 3028,\n\t\"./cv\": 5807,\n\t\"./cv.js\": 5807,\n\t\"./cy\": 342,\n\t\"./cy.js\": 342,\n\t\"./da\": 8269,\n\t\"./da.js\": 8269,\n\t\"./de\": 1489,\n\t\"./de-at\": 2123,\n\t\"./de-at.js\": 2123,\n\t\"./de-ch\": 7757,\n\t\"./de-ch.js\": 7757,\n\t\"./de.js\": 1489,\n\t\"./dv\": 8152,\n\t\"./dv.js\": 8152,\n\t\"./el\": 7687,\n\t\"./el.js\": 7687,\n\t\"./en-au\": 6668,\n\t\"./en-au.js\": 6668,\n\t\"./en-ca\": 6798,\n\t\"./en-ca.js\": 6798,\n\t\"./en-gb\": 3615,\n\t\"./en-gb.js\": 3615,\n\t\"./en-ie\": 1364,\n\t\"./en-ie.js\": 1364,\n\t\"./en-il\": 9907,\n\t\"./en-il.js\": 9907,\n\t\"./en-in\": 533,\n\t\"./en-in.js\": 533,\n\t\"./en-nz\": 3190,\n\t\"./en-nz.js\": 3190,\n\t\"./en-sg\": 1096,\n\t\"./en-sg.js\": 1096,\n\t\"./eo\": 3962,\n\t\"./eo.js\": 3962,\n\t\"./es\": 7726,\n\t\"./es-do\": 5010,\n\t\"./es-do.js\": 5010,\n\t\"./es-mx\": 3654,\n\t\"./es-mx.js\": 3654,\n\t\"./es-us\": 9043,\n\t\"./es-us.js\": 9043,\n\t\"./es.js\": 7726,\n\t\"./et\": 5343,\n\t\"./et.js\": 5343,\n\t\"./eu\": 728,\n\t\"./eu.js\": 728,\n\t\"./fa\": 787,\n\t\"./fa.js\": 787,\n\t\"./fi\": 1771,\n\t\"./fi.js\": 1771,\n\t\"./fil\": 5335,\n\t\"./fil.js\": 5335,\n\t\"./fo\": 9761,\n\t\"./fo.js\": 9761,\n\t\"./fr\": 1670,\n\t\"./fr-ca\": 8991,\n\t\"./fr-ca.js\": 8991,\n\t\"./fr-ch\": 7280,\n\t\"./fr-ch.js\": 7280,\n\t\"./fr.js\": 1670,\n\t\"./fy\": 4203,\n\t\"./fy.js\": 4203,\n\t\"./ga\": 9858,\n\t\"./ga.js\": 9858,\n\t\"./gd\": 8605,\n\t\"./gd.js\": 8605,\n\t\"./gl\": 7365,\n\t\"./gl.js\": 7365,\n\t\"./gom-deva\": 3896,\n\t\"./gom-deva.js\": 3896,\n\t\"./gom-latn\": 5587,\n\t\"./gom-latn.js\": 5587,\n\t\"./gu\": 7950,\n\t\"./gu.js\": 7950,\n\t\"./he\": 2029,\n\t\"./he.js\": 2029,\n\t\"./hi\": 1897,\n\t\"./hi.js\": 1897,\n\t\"./hr\": 9816,\n\t\"./hr.js\": 9816,\n\t\"./hu\": 2253,\n\t\"./hu.js\": 2253,\n\t\"./hy-am\": 8196,\n\t\"./hy-am.js\": 8196,\n\t\"./id\": 1307,\n\t\"./id.js\": 1307,\n\t\"./is\": 5474,\n\t\"./is.js\": 5474,\n\t\"./it\": 3099,\n\t\"./it-ch\": 8188,\n\t\"./it-ch.js\": 8188,\n\t\"./it.js\": 3099,\n\t\"./ja\": 9127,\n\t\"./ja.js\": 9127,\n\t\"./jv\": 182,\n\t\"./jv.js\": 182,\n\t\"./ka\": 758,\n\t\"./ka.js\": 758,\n\t\"./kk\": 3444,\n\t\"./kk.js\": 3444,\n\t\"./km\": 2034,\n\t\"./km.js\": 2034,\n\t\"./kn\": 6223,\n\t\"./kn.js\": 6223,\n\t\"./ko\": 3064,\n\t\"./ko.js\": 3064,\n\t\"./ku\": 8714,\n\t\"./ku.js\": 8714,\n\t\"./ky\": 2062,\n\t\"./ky.js\": 2062,\n\t\"./lb\": 4796,\n\t\"./lb.js\": 4796,\n\t\"./lo\": 9279,\n\t\"./lo.js\": 9279,\n\t\"./lt\": 106,\n\t\"./lt.js\": 106,\n\t\"./lv\": 1840,\n\t\"./lv.js\": 1840,\n\t\"./me\": 2240,\n\t\"./me.js\": 2240,\n\t\"./mi\": 3588,\n\t\"./mi.js\": 3588,\n\t\"./mk\": 5518,\n\t\"./mk.js\": 5518,\n\t\"./ml\": 7823,\n\t\"./ml.js\": 7823,\n\t\"./mn\": 8657,\n\t\"./mn.js\": 8657,\n\t\"./mr\": 1285,\n\t\"./mr.js\": 1285,\n\t\"./ms\": 3014,\n\t\"./ms-my\": 6253,\n\t\"./ms-my.js\": 6253,\n\t\"./ms.js\": 3014,\n\t\"./mt\": 167,\n\t\"./mt.js\": 167,\n\t\"./my\": 7940,\n\t\"./my.js\": 7940,\n\t\"./nb\": 14,\n\t\"./nb.js\": 14,\n\t\"./ne\": 9023,\n\t\"./ne.js\": 9023,\n\t\"./nl\": 4208,\n\t\"./nl-be\": 1412,\n\t\"./nl-be.js\": 1412,\n\t\"./nl.js\": 4208,\n\t\"./nn\": 1354,\n\t\"./nn.js\": 1354,\n\t\"./oc-lnc\": 870,\n\t\"./oc-lnc.js\": 870,\n\t\"./pa-in\": 389,\n\t\"./pa-in.js\": 389,\n\t\"./pl\": 7342,\n\t\"./pl.js\": 7342,\n\t\"./pt\": 4774,\n\t\"./pt-br\": 3003,\n\t\"./pt-br.js\": 3003,\n\t\"./pt.js\": 4774,\n\t\"./ro\": 5333,\n\t\"./ro.js\": 5333,\n\t\"./ru\": 3451,\n\t\"./ru.js\": 3451,\n\t\"./sd\": 3921,\n\t\"./sd.js\": 3921,\n\t\"./se\": 9682,\n\t\"./se.js\": 9682,\n\t\"./si\": 582,\n\t\"./si.js\": 582,\n\t\"./sk\": 4348,\n\t\"./sk.js\": 4348,\n\t\"./sl\": 5337,\n\t\"./sl.js\": 5337,\n\t\"./sq\": 9358,\n\t\"./sq.js\": 9358,\n\t\"./sr\": 683,\n\t\"./sr-cyrl\": 9382,\n\t\"./sr-cyrl.js\": 9382,\n\t\"./sr.js\": 683,\n\t\"./ss\": 1156,\n\t\"./ss.js\": 1156,\n\t\"./sv\": 9855,\n\t\"./sv.js\": 9855,\n\t\"./sw\": 8536,\n\t\"./sw.js\": 8536,\n\t\"./ta\": 7754,\n\t\"./ta.js\": 7754,\n\t\"./te\": 7809,\n\t\"./te.js\": 7809,\n\t\"./tet\": 1297,\n\t\"./tet.js\": 1297,\n\t\"./tg\": 2527,\n\t\"./tg.js\": 2527,\n\t\"./th\": 5862,\n\t\"./th.js\": 5862,\n\t\"./tk\": 9331,\n\t\"./tk.js\": 9331,\n\t\"./tl-ph\": 4387,\n\t\"./tl-ph.js\": 4387,\n\t\"./tlh\": 3592,\n\t\"./tlh.js\": 3592,\n\t\"./tr\": 9732,\n\t\"./tr.js\": 9732,\n\t\"./tzl\": 9570,\n\t\"./tzl.js\": 9570,\n\t\"./tzm\": 3553,\n\t\"./tzm-latn\": 80,\n\t\"./tzm-latn.js\": 80,\n\t\"./tzm.js\": 3553,\n\t\"./ug-cn\": 5674,\n\t\"./ug-cn.js\": 5674,\n\t\"./uk\": 9974,\n\t\"./uk.js\": 9974,\n\t\"./ur\": 5773,\n\t\"./ur.js\": 5773,\n\t\"./uz\": 357,\n\t\"./uz-latn\": 7135,\n\t\"./uz-latn.js\": 7135,\n\t\"./uz.js\": 357,\n\t\"./vi\": 43,\n\t\"./vi.js\": 43,\n\t\"./x-pseudo\": 767,\n\t\"./x-pseudo.js\": 767,\n\t\"./yo\": 150,\n\t\"./yo.js\": 150,\n\t\"./zh-cn\": 1828,\n\t\"./zh-cn.js\": 1828,\n\t\"./zh-hk\": 6644,\n\t\"./zh-hk.js\": 6644,\n\t\"./zh-mo\": 9305,\n\t\"./zh-mo.js\": 9305,\n\t\"./zh-tw\": 1860,\n\t\"./zh-tw.js\": 1860\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 5358;"],"x_google_ignoreList":[245]}