77    using  System . Collections . Generic ; 
88    using  System . Data ; 
99    using  System . Linq ; 
10- 
1110    public  interface  ICompetencyAssessmentDataService 
1211    { 
1312        //GET DATA 
@@ -34,6 +33,8 @@ public interface ICompetencyAssessmentDataService
3433        IEnumerable < Competency >  GetCompetenciesForCompetencyAssessment ( int  competencyAssessmentId ) ; 
3534        IEnumerable < LinkedFramework >  GetLinkedFrameworksForCompetencyAssessment ( int  competencyAssessmentId ) ; 
3635        int [ ]  GetLinkedFrameworkCompetencyIds ( int  competencyAssessmentId ,  int  frameworkId ) ; 
36+         CompetencyAssessmentFeatures ?  GetCompetencyAssessmentFeaturesTaskStatus ( int  competencyAssessmentId ) ; 
37+         int ?  GetSelfAssessmentStructure ( int  competencyAssessmentId ) ; 
3738
3839        //UPDATE DATA 
3940        bool  UpdateCompetencyAssessmentName ( int  competencyAssessmentId ,  int  adminId ,  string  competencyAssessmentName ) ; 
@@ -64,12 +65,15 @@ void MoveCompetencyGroupInSelfAssessment(int competencyAssessmentId,
6465            int  groupId , 
6566            string  direction 
6667        ) ; 
68+         public  bool  UpdateCompetencyAssessmentFeaturesTaskStatus ( int  id ,  bool  descriptionStatus ,  bool  providerandCategoryStatus ,  bool  vocabularyStatus , 
69+            bool  workingGroupStatus ,  bool  AllframeworkCompetenciesStatus ) ; 
70+         void  UpdateSelfAssessmentFromFramework ( int  selfAssessmentId ,  int ?  frameworkId ) ; 
6771
6872        //INSERT DATA 
6973        int  InsertCompetencyAssessment ( int  adminId ,  int  centreId ,  string  competencyAssessmentName ) ; 
7074        bool  InsertSelfAssessmentFramework ( int  adminId ,  int  selfAssessmentId ,  int  frameworkId ) ; 
7175        bool  InsertCompetenciesIntoAssessmentFromFramework ( int [ ]  selectedCompetencyIds ,  int  frameworkId ,  int  competencyAssessmentId ) ; 
72- 
76+          bool   InsertSelfAssessmentStructure ( int   selfAssessmentId ,   int ?   frameworkId ) ; 
7377        //DELETE DATA 
7478        bool  RemoveFrameworkCompetenciesFromAssessment ( int  competencyAssessmentId ,  int  frameworkId ) ; 
7579        bool  RemoveCompetencyFromAssessment ( int  competencyAssessmentId ,  int  competencyId ) ; 
@@ -754,5 +758,112 @@ public void MoveCompetencyGroupInSelfAssessment(int competencyAssessmentId, int
754758                    commandType :  CommandType . StoredProcedure 
755759                ) ; 
756760        } 
761+ 
762+         public  bool  UpdateCompetencyAssessmentFeaturesTaskStatus ( int  id ,  bool  descriptionStatus ,  bool  providerandCategoryStatus ,  bool  vocabularyStatus , 
763+             bool  workingGroupStatus ,  bool  AllframeworkCompetenciesStatus ) 
764+         { 
765+             var  numberOfAffectedRows  =  connection . Execute ( 
766+                @"IF EXISTS (SELECT 1 FROM SelfAssessmentTaskStatus WHERE SelfAssessmentId = @id) 
767+                BEGIN 
768+                UPDATE SelfAssessmentTaskStatus 
769+                SET IntroductoryTextTaskStatus = CASE WHEN @descriptionStatus = 1 THEN 1 ELSE NULL END, 
770+                        BrandingTaskStatus         = CASE WHEN @providerandCategoryStatus = 1 THEN 1 ELSE NULL END, 
771+                        VocabularyTaskStatus       = CASE WHEN @vocabularyStatus = 1 THEN 1 ELSE NULL END, 
772+                        WorkingGroupTaskStatus     = CASE WHEN @workingGroupStatus = 1 THEN 1 ELSE NULL END, 
773+                        FrameworkLinksTaskStatus   = CASE WHEN @AllframeworkCompetenciesStatus = 1 THEN 1 ELSE NULL END 
774+                  WHERE SelfAssessmentId = @id; 
775+                     END 
776+                      ELSE 
777+                     BEGIN 
778+                  INSERT INTO SelfAssessmentTaskStatus 
779+                  (SelfAssessmentId, IntroductoryTextTaskStatus, BrandingTaskStatus, VocabularyTaskStatus, WorkingGroupTaskStatus, FrameworkLinksTaskStatus) 
780+                  VALUES 
781+                  ( 
782+                        @id, 
783+                     CASE WHEN @descriptionStatus = 1 THEN 1 ELSE NULL END, 
784+                     CASE WHEN @providerandCategoryStatus = 1 THEN 1 ELSE NULL END, 
785+                     CASE WHEN @vocabularyStatus = 1 THEN 1 ELSE NULL END, 
786+                     CASE WHEN @workingGroupStatus = 1 THEN 1 ELSE NULL END, 
787+                     CASE WHEN @AllframeworkCompetenciesStatus = 1 THEN 1 ELSE NULL END 
788+                         ); 
789+                         END" , 
790+                new  {  id ,  descriptionStatus ,  providerandCategoryStatus ,  vocabularyStatus ,  workingGroupStatus ,  AllframeworkCompetenciesStatus  } 
791+            ) ; 
792+             if  ( numberOfAffectedRows  <  1 ) 
793+             { 
794+                 logger . LogWarning ( 
795+                     "Not updating SelfAssessmentTaskStatus as db update failed. "  + 
796+                     $ "SelfAssessmentId: { id } , IntroductoryTextTaskStatus: { descriptionStatus } , BrandingTaskStatus: { providerandCategoryStatus } , "+ 
797+                     $ "VocabularyTaskStatus: { vocabularyStatus } , WorkingGroupTaskStatus: { workingGroupStatus } , FrameworkLinksTaskStatus: { AllframeworkCompetenciesStatus } "
798+                 ) ; 
799+                 return  false ; 
800+             } 
801+             return  true ; 
802+         } 
803+ 
804+         public  CompetencyAssessmentFeatures ?  GetCompetencyAssessmentFeaturesTaskStatus ( int  competencyAssessmentId ) 
805+         { 
806+             return  connection . QueryFirstOrDefault < CompetencyAssessmentFeatures > ( 
807+                @"SELECT s.ID, s.Name AS CompetencyAssessmentName, sts.IntroductoryTextTaskStatus AS DescriptionStatus, sts.BrandingTaskStatus AS ProviderandCategoryStatus, 
808+ 	           sts.VocabularyTaskStatus AS VocabularyStatus, sts.WorkingGroupTaskStatus AS WorkingGroupStatus, sts.FrameworkLinksTaskStatus AS AllframeworkCompetenciesStatus 
809+ 	           FROM  SelfAssessments s INNER JOIN  
810+ 	           SelfAssessmentTaskStatus sts ON s.ID = sts.SelfAssessmentId  
811+ 	          WHERE s.ID = @competencyAssessmentId" , 
812+                new  {  competencyAssessmentId  } 
813+            ) ; 
814+             
815+         } 
816+ 
817+         public  void  UpdateSelfAssessmentFromFramework (  int  selfAssessmentId ,  int ?  frameworkId ) 
818+         { 
819+            
820+             var  numberOfAffectedRows  =  connection . Execute ( 
821+                 @"UPDATE s 
822+                     SET  
823+                     [Description] = COALESCE(F.[Description], 'No description provided'), 
824+                     BrandID = F.BrandID, 
825+                     CategoryID = F.CategoryID, 
826+                     CreatedByCentreID = AU.CentreID, 
827+                     CreatedByAdminID = F.OwnerAdminID 
828+                     FROM SelfAssessments s 
829+                     INNER JOIN Frameworks F ON F.ID = @frameworkId 
830+                     INNER JOIN AdminUsers AU ON F.OwnerAdminID = AU.AdminID 
831+                     WHERE s.id = @selfAssessmentId;" 
832+             , 
833+                 new  { selfAssessmentId ,  frameworkId  } 
834+             ) ; 
835+         } 
836+         public  bool  InsertSelfAssessmentStructure ( int  selfAssessmentId ,  int ?  frameworkId ) 
837+         { 
838+ 
839+                 var  numberOfAffectedRows  =  connection . Execute ( 
840+                 @"INSERT INTO SelfAssessmentStructure (SelfAssessmentID, CompetencyID, Ordering, CompetencyGroupID) 
841+                 SELECT s.ID, FC.CompetencyID, ROW_NUMBER() OVER( ORDER BY FCG.Ordering, FC.Ordering ), FCG.CompetencyGroupID 
842+                  FROM FrameworkCompetencies AS FC  
843+                 INNER JOIN FrameworkCompetencyGroups AS FCG ON FC.FrameworkCompetencyGroupID = FCG.ID INNER JOIN 
844+ 				SelfAssessments s ON s.id = @selfAssessmentId 
845+                 WHERE FC.FrameworkID = @frameworkId" 
846+             , 
847+                 new  {  selfAssessmentId ,  frameworkId  } 
848+             ) ; 
849+             if  ( numberOfAffectedRows  <  1 ) 
850+             { 
851+                 logger . LogWarning ( 
852+                 "Not inserting SelfAssessmentStructure record as db insert failed. "  + 
853+                     $ "selfAssessmentId: { selfAssessmentId } , frameworkId: { frameworkId } "
854+                 ) ; 
855+                 return  false ; 
856+             } 
857+ 
858+             return  true ; 
859+         } 
860+         public  int ?  GetSelfAssessmentStructure ( int  competencyAssessmentId ) 
861+         { 
862+             return  connection . QueryFirstOrDefault < int > ( 
863+                @"SELECT 1 from dbo.SelfAssessmentStructure where selfassessmentid  = @competencyAssessmentId" , 
864+                new  {  competencyAssessmentId  } 
865+            ) ; 
866+ 
867+         } 
757868    } 
758869} 
0 commit comments