diff --git a/backend/src/components/cache-service.js b/backend/src/components/cache-service.js index 0531afe37..66a4e9aee 100644 --- a/backend/src/components/cache-service.js +++ b/backend/src/components/cache-service.js @@ -24,6 +24,7 @@ let bandCodesMap = new Map(); let enrolledProgramCodesMap = new Map(); let careerProgramCodesMap = new Map(); let duplicateResolutionCodesMap = new Map(); +let programDuplicateTypeCodesMap = new Map(); let schoolFundingCodesMap = new Map(); let specialEducationCodesMap = new Map(); let rolePermissionsMap = new Map(); @@ -265,6 +266,13 @@ const cacheService = { }); return duplicateResolutionCodesMap; }, + getAllProgramDuplicateTypeCodesMap() { + let programDuplicateTypeCodes = cachedData[constants.CACHE_KEYS.SDC_PROGRAM_DUPLICATE_TYPE_CODES].records; + programDuplicateTypeCodes.forEach(programDuplicateTypeCode => { + programDuplicateTypeCodesMap.set(programDuplicateTypeCode.programDuplicateTypeCode, programDuplicateTypeCode); + }); + return programDuplicateTypeCodesMap; + }, getEnrolledProgramCodesMap() { let enrolledProgramCodesRaw = cachedData[constants.CACHE_KEYS.SDC_ENROLLED_PROGRAM_CODES].activeRecords; let enrolledProgramCodes = enrolledProgramCodesRaw.map(item => { diff --git a/backend/src/components/sdc.js b/backend/src/components/sdc.js index a3de375fa..2bd90f1bf 100644 --- a/backend/src/components/sdc.js +++ b/backend/src/components/sdc.js @@ -677,6 +677,7 @@ async function getInDistrictDuplicates(req, res) { result.programDuplicates.RESOLVED.push(sdcDuplicate); } else if (sdcDuplicate?.duplicateTypeCode === DUPLICATE_TYPE_CODES.PROGRAM) { + setProgramDuplicateTypeMessage(sdcDuplicate); result.programDuplicates.NON_ALLOW.push(sdcDuplicate); } }); @@ -711,6 +712,11 @@ function setIfOnlineStudentAndCanChangeGrade(sdcDuplicate, school1, school2) { } } +function setProgramDuplicateTypeMessage(sdcDuplicate) { + const programDuplicateTypeCodes = cacheService.getAllProgramDuplicateTypeCodesMap(); + sdcDuplicate.programDuplicateTypeCodeDescription = programDuplicateTypeCodes.get(sdcDuplicate.programDuplicateTypeCode)?.label; +} + module.exports = { getCollectionBySchoolId, uploadFile, diff --git a/backend/src/config/index.js b/backend/src/config/index.js index 187f06331..b4ac6b605 100644 --- a/backend/src/config/index.js +++ b/backend/src/config/index.js @@ -123,6 +123,7 @@ nconf.defaults({ programEligibilityTypeCodesURL: process.env.SDC_API_ENDPOINT + '/program-eligibility-issue-codes', zeroFteReasonCodesURL: process.env.SDC_API_ENDPOINT + '/zero-fte-reason-codes', duplicateResolutionCodesURL: process.env.SDC_API_ENDPOINT + '/duplicate-resolution-codes', + programDuplicateTypeCodesURL: process.env.SDC_API_ENDPINT + '/program-duplicate-type-codes' }, frontendConfig: { bannerEnvironment: process.env.BANNER_ENVIRONMENT, diff --git a/backend/src/server.js b/backend/src/server.js index 3310509ff..362709e33 100644 --- a/backend/src/server.js +++ b/backend/src/server.js @@ -146,6 +146,11 @@ if(process.env.NODE_ENV !== 'test'){ //do not cache for test environment to sto }).catch((e) => { log.error('Error loading SDC_DUPLICATE_RESOLUTION_CODES data during boot.', e); }); + cacheService.loadDataToCache(constants.CACHE_KEYS.SDC_PROGRAM_DUPLICATE_TYPE_CODES, 'sdc:programDuplicateTypeCodesURL').then(() => { + log.info('Loaded SDC_PROGRAM_DUPLICATE_TYPE_CODES data to memory'); + }).catch((e) => { + log.error('Error loading SDC_PROGRAM_DUPLICATE_TYPE_CODES data during boot.', e); + }); } } diff --git a/backend/src/util/constants.js b/backend/src/util/constants.js index ff59e45bd..31e997e69 100644 --- a/backend/src/util/constants.js +++ b/backend/src/util/constants.js @@ -165,7 +165,8 @@ cacheKeys = { SDC_VALIDATION_ISSUE_TYPE_CODES: 'sdc_validation_issue_type_codes', SDC_PROGRAM_ELIGIBILITY_TYPE_CODES: 'sdc_program_eligibility_type_codes', SDC_ZERO_FTE_REASON_CODES: 'sdc_zero_fte_reason_codes', - SDC_DUPLICATE_RESOLUTION_CODES: 'sdc_duplicate_resolution_codes' + SDC_DUPLICATE_RESOLUTION_CODES: 'sdc_duplicate_resolution_codes', + SDC_PROGRAM_DUPLICATE_TYPE_CODES: 'sdc_program_duplicate_type_codes' }; const CACHE_KEYS = Object.freeze(cacheKeys); const EVENT_WS_TOPIC = 'EVENT_WS_TOPIC'; diff --git a/frontend/src/components/sdcCollection/sdcDistrictCollection/stepFourInDistrictDuplicates/DuplicateTab.vue b/frontend/src/components/sdcCollection/sdcDistrictCollection/stepFourInDistrictDuplicates/DuplicateTab.vue index 36c43f5e9..681c693ed 100644 --- a/frontend/src/components/sdcCollection/sdcDistrictCollection/stepFourInDistrictDuplicates/DuplicateTab.vue +++ b/frontend/src/components/sdcCollection/sdcDistrictCollection/stepFourInDistrictDuplicates/DuplicateTab.vue @@ -46,7 +46,14 @@ Assigned PEN: {{ duplicate.sdcSchoolCollectionStudent1Entity.assignedPen }} - Error: {{ duplicate.duplicateErrorDescriptionCode }} + + Error: {{ duplicate.duplicateErrorDescriptionCode }} + + + Duplicate Program: {{ duplicate.programDuplicateTypeCodeDescription }} + diff --git a/frontend/src/components/sdcCollection/sdcDistrictCollection/stepFourInDistrictDuplicates/StepFourInDistrictDuplicates.vue b/frontend/src/components/sdcCollection/sdcDistrictCollection/stepFourInDistrictDuplicates/StepFourInDistrictDuplicates.vue index f64348a88..26b3efa69 100644 --- a/frontend/src/components/sdcCollection/sdcDistrictCollection/stepFourInDistrictDuplicates/StepFourInDistrictDuplicates.vue +++ b/frontend/src/components/sdcCollection/sdcDistrictCollection/stepFourInDistrictDuplicates/StepFourInDistrictDuplicates.vue @@ -44,7 +44,7 @@ >