@@ -36,14 +36,21 @@ public ImportCompetenciesResult PreProcessCompetenciesTable(IXLWorkbook workbook
3636            var  competencyRows  =  table . Rows ( ) . Skip ( 1 ) . Select ( row =>  new  CompetencyTableRow ( table ,  row ) ) . ToList ( ) ; 
3737            var  newCompetencyIds  =  competencyRows . Select ( row =>  row . ID  ??  0 ) . ToList ( ) ; 
3838            var  existingIds  =  frameworkService . GetFrameworkCompetencyOrder ( frameworkId ,  newCompetencyIds ) ; 
39+             var  existingGroups  =  frameworkService 
40+                 . GetFrameworkCompetencyGroups ( frameworkId ) 
41+                 . Select ( row =>  row . Name ) 
42+                 . Distinct ( ) 
43+                 . ToList ( ) ; 
44+             var  newGroups  =  competencyRows . Select ( row =>  row . CompetencyGroup  ??  "" ) . ToList ( ) ; 
3945            foreach  ( var  competencyRow  in  competencyRows ) 
4046            { 
41-                 PreProcessCompetencyRow ( competencyRow ,  newCompetencyIds ,  existingIds ) ; 
47+                 PreProcessCompetencyRow ( competencyRow ,  newCompetencyIds ,  existingIds ,   existingGroups ,   newGroups ) ; 
4248            } 
4349            return  new  ImportCompetenciesResult ( competencyRows ) ; 
4450        } 
45-         private  void  PreProcessCompetencyRow ( CompetencyTableRow  competencyRow ,  List < int >  newIds ,  List < int >  existingIds ) 
51+         private  void  PreProcessCompetencyRow ( CompetencyTableRow  competencyRow ,  List < int >  newIds ,  List < int >  existingIds ,   List < string >   existingGroups ,   List < string >   newGroups ) 
4652        { 
53+ 
4754            if  ( competencyRow . ID  ==  null ) 
4855            { 
4956                competencyRow . RowStatus  =  RowStatus . CompetencyInserted ; 
@@ -64,6 +71,16 @@ private void PreProcessCompetencyRow(CompetencyTableRow competencyRow, List<int>
6471                    { 
6572                        competencyRow . Reordered  =  true ; 
6673                    } 
74+                     else 
75+                     { 
76+                         var  groupName  =  ( string ) ( competencyRow ? . CompetencyGroup ) ; 
77+                         originalIndex  =  existingGroups . IndexOf ( groupName ) ; 
78+                         newIndex  =  newGroups . IndexOf ( groupName ) ; 
79+                         if  ( originalIndex  !=  newIndex ) 
80+                         { 
81+                             competencyRow . Reordered  =  true ; 
82+                         } 
83+                     } 
6784                } 
6885            } 
6986            competencyRow . Validate ( ) ; 
@@ -124,10 +141,10 @@ internal ImportCompetenciesResult ProcessCompetenciesTable(IXLTable table, int a
124141            if  ( reorderCompetenciesOption  ==  2 ) 
125142            { 
126143                var  distinctCompetencyGroups  =  competenciesRows 
127-                      . Where ( row =>  ! string . IsNullOrWhiteSpace ( row . CompetencyGroup ) ) 
128-                      . Select ( row =>  row . CompetencyGroup ) 
129-                      . Distinct ( ) 
130-                      . ToList ( ) ; 
144+                 . Where ( row =>  ! string . IsNullOrWhiteSpace ( row . CompetencyGroup ) ) 
145+                 . Select ( row =>  row . CompetencyGroup ) 
146+                 . Distinct ( ) 
147+                 . ToList ( ) ; 
131148                for  ( int  i  =  0 ;  i  <  competencyGroupCount ;  i ++ ) 
132149                { 
133150                    var  existingGroups  =  frameworkService . GetFrameworkCompetencyGroups ( frameworkId ) . Select ( row =>  new  {  row . ID ,  row . Name  } ) 
@@ -177,6 +194,7 @@ CompetencyTableRow competencyRow
177194                if  ( newCompetencyGroupId  >  0 ) 
178195                { 
179196                    frameworkCompetencyGroupId  =  frameworkService . InsertFrameworkCompetencyGroup ( newCompetencyGroupId ,  frameworkId ,  adminId ) ; 
197+                     frameworkService . UpdateFrameworkCompetencyFrameworkCompetencyGroup ( competencyRow . ID ,  ( int ) frameworkCompetencyGroupId ,  adminId ) ; 
180198                    if  ( frameworkCompetencyGroupId  >  maxFrameworkCompetencyGroupId ) 
181199                    { 
182200                        maxFrameworkCompetencyGroupId  =  ( int ) frameworkCompetencyGroupId ; 
@@ -185,6 +203,7 @@ CompetencyTableRow competencyRow
185203                    else 
186204                    { 
187205                        frameworkCompetencyGroupId  =  frameworkService . GetFrameworkCompetencyGroupId ( frameworkId ,  newCompetencyGroupId ) ; 
206+ 
188207                        var  isUpdated  =  frameworkService . UpdateFrameworkCompetencyGroup ( ( int ) frameworkCompetencyGroupId ,  newCompetencyGroupId ,  competencyRow . CompetencyGroup ,  competencyRow . GroupDescription ,  adminId ) ; 
189208                        competencyRow . RowStatus  =  RowStatus . CompetencyGroupUpdated ; 
190209                    } 
@@ -266,20 +285,23 @@ CompetencyTableRow competencyRow
266285            // Reorder competencies if required: 
267286            if  ( reorderCompetenciesOption  ==  2 ) 
268287            { 
269-                 var  frameworkCompetencyId  =  ( int ) competencyRow . ID ; 
270-                 var  frameworkCompetency  =  frameworkService . GetFrameworkCompetencyById ( frameworkCompetencyId ) ; 
271-                 var  placesToMove  =  Math . Abs ( frameworkCompetency . Ordering  -  competencyRow . CompetencyOrderNumber ) ; 
272- 
273-                 if  ( placesToMove  >  0 ) 
288+                 var  frameworkCompetencyId  =  competencyRow . ID  ??  0 ; 
289+                 if  ( frameworkCompetencyId  >  0 ) 
274290                { 
275-                     var  direction  =  frameworkCompetency . Ordering  >  competencyRow . CompetencyOrderNumber  ?  "UP"  :  "DOWN" ; 
291+                     var  frameworkCompetency  =  frameworkService . GetFrameworkCompetencyById ( frameworkCompetencyId ) ; 
292+                     var  placesToMove  =  Math . Abs ( frameworkCompetency . Ordering  -  competencyRow . CompetencyOrderNumber ) ; 
276293
277-                     for   ( int   i   =   0 ;   i   <   placesToMove ;   i ++ ) 
294+                     if   ( placesToMove   >   0 ) 
278295                    { 
279-                         frameworkService . MoveFrameworkCompetency ( frameworkCompetencyId ,  true ,  direction ) ; 
280-                     } 
296+                         var  direction  =  frameworkCompetency . Ordering  >  competencyRow . CompetencyOrderNumber  ?  "UP"  :  "DOWN" ; 
281297
282-                     competencyRow . Reordered  =  true ; 
298+                         for  ( int  i  =  0 ;  i  <  placesToMove ;  i ++ ) 
299+                         { 
300+                             frameworkService . MoveFrameworkCompetency ( frameworkCompetencyId ,  true ,  direction ) ; 
301+                         } 
302+ 
303+                         competencyRow . Reordered  =  true ; 
304+                     } 
283305                } 
284306            } 
285307
0 commit comments