@@ -113,6 +113,7 @@ ipcMain.on("upload-csv", (event, dataArray, version) => {
113113 xmlBase . Header . CollectionDetails . Year = version . split ( "." ) [ 0 ] ;
114114 let refNumber = 0 ;
115115
116+ // Test for Empty Values
116117 const CheckBoxPattern = / 0 c h e c k e d o u t / ;
117118 for ( let I = 1 ; I < dataArray . length ; I ++ ) {
118119 for ( let i = 0 ; i < dataArray [ I ] . length ; i ++ ) {
@@ -121,13 +122,15 @@ ipcMain.on("upload-csv", (event, dataArray, version) => {
121122 }
122123 }
123124 }
125+
126+ // Map CSV values to XML structure
124127 for ( let i = 1 ; i < dataArray . length ; i ++ ) {
125128 refNumber = i . toString ( ) . padStart ( 4 , "0" ) ;
126129 xmlBase . Learner . push ( {
127130 LearnRefNumber : refNumber ,
128131 ULN : dataArray [ i ] [ 2 ] ,
129- FamilyName : dataArray [ i ] [ 4 ] ,
130- GivenNames : dataArray [ i ] [ 3 ] ,
132+ FamilyName : dataArray [ i ] [ 4 ] . trim ( ) ,
133+ GivenNames : dataArray [ i ] [ 3 ] . trim ( ) ,
131134 DateOfBirth : dataArray [ i ] [ 6 ] ,
132135 Ethnicity : dataArray [ i ] [ 8 ] ,
133136 Sex : dataArray [ i ] [ 5 ] ,
@@ -138,6 +141,7 @@ ipcMain.on("upload-csv", (event, dataArray, version) => {
138141 Postcode : dataArray [ i ] [ 10 ] . trim ( ) ,
139142 AddLine1 : dataArray [ i ] [ 11 ]
140143 . replace ( / [ ^ a - z A - Z 0 - 9 \s ] / g, "" )
144+ . trim ( )
141145 . substring ( 0 , 50 ) ,
142146 TelNo : dataArray [ i ] [ 12 ] || undefined ,
143147 LLDDHealthProb : dataArray [ i ] [ 13 ] != "99" ? 1 : 9 ,
@@ -268,7 +272,7 @@ ipcMain.on("upload-csv", (event, dataArray, version) => {
268272 {
269273 // Aim type (programme aim 1)
270274 LearnAimRef : dataArray [ i ] [ 35 ] . trim ( ) , // Programme aim 1 Learning ref
271- AimType : dataArray [ i ] [ 34 ] , // Aim type (programme aim 1)
275+ AimType : dataArray [ i ] [ 34 ] . trim ( ) , // Aim type (programme aim 1)
272276 AimSeqNumber : "1" ,
273277 LearnStartDate : dataArray [ i ] [ 36 ] , // Start date (aim 1)
274278 LearnPlanEndDate : dataArray [ i ] [ 37 ] , // Planned end date (aim 1)
@@ -277,9 +281,9 @@ ipcMain.on("upload-csv", (event, dataArray, version) => {
277281 OTJActHours : dataArray [ i ] [ 43 ] || undefined , // Actual hours (aim 1)
278282 ProgType : dataArray [ i ] [ 39 ] , // Programme type (aim 1)
279283 StdCode : dataArray [ i ] [ 40 ] || undefined , // Apprentice standard (aim 1)
280- DelLocPostCode : dataArray [ i ] [ 41 ] , // Delivery postcode (aim 1)
281- EPAOrgID : dataArray [ i ] [ 45 ] || undefined , // EPAO ID (aim 1)
282- ConRefNumber : dataArray [ i ] [ 44 ] || undefined , // Contract Ref (aim 1)
284+ DelLocPostCode : dataArray [ i ] [ 41 ] . trim ( ) , // Delivery postcode (aim 1)
285+ EPAOrgID : dataArray [ i ] [ 45 ] . trim ( ) || undefined , // EPAO ID (aim 1)
286+ ConRefNumber : dataArray [ i ] [ 44 ] . trim ( ) || undefined , // Contract Ref (aim 1)
283287 CompStatus : dataArray [ i ] [ 60 ] || undefined , // Completion status (aim 1)
284288 LearnActEndDate : dataArray [ i ] [ 61 ] || undefined , // Actual end date (aim 1)
285289 WithdrawReason : dataArray [ i ] [ 64 ] || undefined , // Withdrawal reason (aim 1)
@@ -351,18 +355,18 @@ ipcMain.on("upload-csv", (event, dataArray, version) => {
351355 ? [
352356 {
353357 LearnAimRef : dataArray [ i ] [ 67 ] . trim ( ) , // Programme aim 2 Learning ref
354- AimType : dataArray [ i ] [ 66 ] , // Aim type (programme aim 2)
358+ AimType : dataArray [ i ] [ 66 ] . trim ( ) , // Aim type (programme aim 2)
355359 AimSeqNumber : "2" ,
356360 LearnStartDate : dataArray [ i ] [ 68 ] , // Start date (aim 2)
357361 LearnPlanEndDate : dataArray [ i ] [ 69 ] , // Planned end date (aim 2)
358362 FundModel : dataArray [ i ] [ 70 ] , // Funding module (aim 2)
359363 PHours : dataArray [ i ] [ 74 ] || undefined , // Planned hours (aim 2)
360364 ProgType : dataArray [ i ] [ 71 ] , // Programme type (aim 2)
361365 StdCode : dataArray [ i ] [ 72 ] || undefined , // Apprentice standard (aim 2)
362- DelLocPostCode : dataArray [ i ] [ 73 ] , // Delivery postcode (aim 2)
366+ DelLocPostCode : dataArray [ i ] [ 73 ] . trim ( ) , // Delivery postcode (aim 2)
363367 OTJActHours : dataArray [ i ] [ 75 ] || undefined , // Actual hours (aim 2)
364- EPAOrgID : dataArray [ i ] [ 77 ] || undefined , // EPAO ID (aim 2)
365- ConRefNumber : dataArray [ i ] [ 76 ] || undefined , // Contract Ref (aim 2)
368+ EPAOrgID : dataArray [ i ] [ 77 ] . trim ( ) || undefined , // EPAO ID (aim 2)
369+ ConRefNumber : dataArray [ i ] [ 76 ] . trim ( ) || undefined , // Contract Ref (aim 2)
366370 CompStatus : dataArray [ i ] [ 92 ] || undefined , // Completion status (aim 2)
367371 LearnActEndDate : dataArray [ i ] [ 93 ] || undefined , // Actual end date (aim 2)
368372 WithdrawReason : dataArray [ i ] [ 96 ] || undefined , // Withdrawal reason (aim 2)
@@ -435,18 +439,18 @@ ipcMain.on("upload-csv", (event, dataArray, version) => {
435439 {
436440 // Aim type (programme aim 3)
437441 LearnAimRef : dataArray [ i ] [ 99 ] . trim ( ) , // Programme aim 3 Learning ref
438- AimType : dataArray [ i ] [ 98 ] , // Aim type (programme aim 3)
442+ AimType : dataArray [ i ] [ 98 ] . trim ( ) , // Aim type (programme aim 3)
439443 AimSeqNumber : "3" ,
440444 LearnStartDate : dataArray [ i ] [ 100 ] , // Start date (aim 3)
441445 LearnPlanEndDate : dataArray [ i ] [ 101 ] , // Planned end date (aim 3)
442446 FundModel : dataArray [ i ] [ 102 ] , // Funding module (aim 3)
443447 ProgType : dataArray [ i ] [ 103 ] , // Programme type (aim 3)
444448 StdCode : dataArray [ i ] [ 104 ] || undefined , // Apprentice standard (aim 3)
445- DelLocPostCode : dataArray [ i ] [ 105 ] , // Delivery postcode (aim 3)
449+ DelLocPostCode : dataArray [ i ] [ 105 ] . trim ( ) , // Delivery postcode (aim 3)
446450 PHours : dataArray [ i ] [ 106 ] || undefined , // Planned hours (aim 3)
447451 OTJActHours : dataArray [ i ] [ 107 ] || undefined , // Actual hours (aim 3)
448- EPAOrgID : dataArray [ i ] [ 109 ] || undefined , // EPAO ID (aim 3)
449- ConRefNumber : dataArray [ i ] [ 108 ] || undefined , // Contract Ref (aim 3)
452+ EPAOrgID : dataArray [ i ] [ 109 ] . trim ( ) || undefined , // EPAO ID (aim 3)
453+ ConRefNumber : dataArray [ i ] [ 108 ] . trim ( ) || undefined , // Contract Ref (aim 3)
450454 CompStatus : dataArray [ i ] [ 124 ] || undefined , // Completion status (aim 3)
451455 LearnActEndDate : dataArray [ i ] [ 125 ] || undefined , // Actual end date (aim 3)
452456 WithdrawReason : dataArray [ i ] [ 127 ] || undefined , // Withdrawal reason (aim 3)
@@ -519,18 +523,18 @@ ipcMain.on("upload-csv", (event, dataArray, version) => {
519523 {
520524 // Aim type (programme aim 4)
521525 LearnAimRef : dataArray [ i ] [ 131 ] . trim ( ) , // Programme aim 4 Learning ref
522- AimType : dataArray [ i ] [ 130 ] , // Aim type (programme aim 4)
526+ AimType : dataArray [ i ] [ 130 ] . trim ( ) , // Aim type (programme aim 4)
523527 AimSeqNumber : "4" ,
524528 LearnStartDate : dataArray [ i ] [ 132 ] , // Start date (aim 4)
525529 LearnPlanEndDate : dataArray [ i ] [ 133 ] , // Planned end date (aim 4)
526530 FundModel : dataArray [ i ] [ 134 ] , // Funding module (aim 4)
527531 PHours : dataArray [ i ] [ 138 ] || undefined , // Planned hours (aim 4)
528532 ProgType : dataArray [ i ] [ 135 ] , // Programme type (aim 4)
529533 StdCode : dataArray [ i ] [ 136 ] || undefined , // Apprentice standard (aim 4)
530- DelLocPostCode : dataArray [ i ] [ 137 ] , // Delivery postcode (aim 4)
534+ DelLocPostCode : dataArray [ i ] [ 137 ] . trim ( ) , // Delivery postcode (aim 4)
531535 OTJActHours : dataArray [ i ] [ 139 ] || undefined , // Actual hours (aim 4)
532- EPAOrgID : dataArray [ i ] [ 141 ] || undefined , // EPAO ID (aim 4)
533- ConRefNumber : dataArray [ i ] [ 140 ] || undefined , // Contract Ref (aim 4)
536+ EPAOrgID : dataArray [ i ] [ 141 ] . trim ( ) || undefined , // EPAO ID (aim 4)
537+ ConRefNumber : dataArray [ i ] [ 140 ] . trim ( ) || undefined , // Contract Ref (aim 4)
534538 CompStatus : dataArray [ i ] [ 156 ] || undefined , // Completion status (aim 4)
535539 LearnActEndDate : dataArray [ i ] [ 157 ] || undefined , // Actual end date (aim 4)
536540 WithdrawReason : dataArray [ i ] [ 159 ] || undefined , // Withdrawal reason (aim 4)
@@ -603,18 +607,18 @@ ipcMain.on("upload-csv", (event, dataArray, version) => {
603607 {
604608 // Aim type (programme aim 5)
605609 LearnAimRef : dataArray [ i ] [ 163 ] . trim ( ) , // Programme aim 5 Learning ref
606- AimType : dataArray [ i ] [ 162 ] , // Aim type (programme aim 5)
610+ AimType : dataArray [ i ] [ 162 ] . trim ( ) , // Aim type (programme aim 5)
607611 AimSeqNumber : "5" ,
608612 LearnStartDate : dataArray [ i ] [ 164 ] , // Start date (aim 5)
609613 LearnPlanEndDate : dataArray [ i ] [ 165 ] , // Planned end date (aim 5)
610614 FundModel : dataArray [ i ] [ 166 ] , // Funding module (aim 5)
611615 ProgType : dataArray [ i ] [ 167 ] , // Programme type (aim 5)
612616 StdCode : dataArray [ i ] [ 168 ] || undefined , // Apprentice standard (aim 5)
613- DelLocPostCode : dataArray [ i ] [ 169 ] , // Delivery postcode (aim 5)
617+ DelLocPostCode : dataArray [ i ] [ 169 ] . trim ( ) , // Delivery postcode (aim 5)
614618 PHours : dataArray [ i ] [ 170 ] || undefined , // Planned hours (aim 5)
615619 OTJActHours : dataArray [ i ] [ 171 ] || undefined , // Actual hours (aim 5)
616- EPAOrgID : dataArray [ i ] [ 173 ] || undefined , // EPAO ID (aim 5)
617- ConRefNumber : dataArray [ i ] [ 172 ] || undefined , // Contract Ref (aim 5)
620+ EPAOrgID : dataArray [ i ] [ 173 ] . trim ( ) || undefined , // EPAO ID (aim 5)
621+ ConRefNumber : dataArray [ i ] [ 172 ] . trim ( ) || undefined , // Contract Ref (aim 5)
618622 CompStatus : dataArray [ i ] [ 188 ] || undefined , // Completion status (aim 5)
619623 LearnActEndDate : dataArray [ i ] [ 189 ] || undefined , // Actual end date (aim 5)
620624 WithdrawReason : dataArray [ i ] [ 192 ] || undefined , // Withdrawal reason (aim 5)
@@ -684,6 +688,7 @@ ipcMain.on("upload-csv", (event, dataArray, version) => {
684688 } ) ;
685689 }
686690
691+ // Create the XML file
687692 let xml = xmlbuilder
688693 . create (
689694 {
@@ -699,11 +704,13 @@ ipcMain.on("upload-csv", (event, dataArray, version) => {
699704 pretty : true ,
700705 } ) ;
701706
707+ // Build the XML file path
702708 XMLfilePath = path . join (
703709 tempDir ,
704710 `ILR-10085696-${ version . split ( "." ) [ 0 ] } -${ formatDateTime ( currentDate ) } -01.xml` ,
705711 ) ;
706712
713+ // Save the XML file
707714 fs . writeFile ( XMLfilePath , xml , ( err ) => {
708715 if ( err ) {
709716 event . reply ( "xml-creation-failed" , err . message ) ;
0 commit comments