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 ) ; 
@@ -756,5 +760,112 @@ public void MoveCompetencyGroupInSelfAssessment(int competencyAssessmentId, int
756760                    commandType :  CommandType . StoredProcedure 
757761                ) ; 
758762        } 
763+ 
764+         public  bool  UpdateCompetencyAssessmentFeaturesTaskStatus ( int  id ,  bool  descriptionStatus ,  bool  providerandCategoryStatus ,  bool  vocabularyStatus , 
765+             bool  workingGroupStatus ,  bool  AllframeworkCompetenciesStatus ) 
766+         { 
767+             var  numberOfAffectedRows  =  connection . Execute ( 
768+                @"IF EXISTS (SELECT 1 FROM SelfAssessmentTaskStatus WHERE SelfAssessmentId = @id) 
769+                BEGIN 
770+                UPDATE SelfAssessmentTaskStatus 
771+                SET IntroductoryTextTaskStatus = CASE WHEN @descriptionStatus = 1 THEN 1 ELSE NULL END, 
772+                        BrandingTaskStatus         = CASE WHEN @providerandCategoryStatus = 1 THEN 1 ELSE NULL END, 
773+                        VocabularyTaskStatus       = CASE WHEN @vocabularyStatus = 1 THEN 1 ELSE NULL END, 
774+                        WorkingGroupTaskStatus     = CASE WHEN @workingGroupStatus = 1 THEN 1 ELSE NULL END, 
775+                        FrameworkLinksTaskStatus   = CASE WHEN @AllframeworkCompetenciesStatus = 1 THEN 1 ELSE NULL END 
776+                  WHERE SelfAssessmentId = @id; 
777+                     END 
778+                      ELSE 
779+                     BEGIN 
780+                  INSERT INTO SelfAssessmentTaskStatus 
781+                  (SelfAssessmentId, IntroductoryTextTaskStatus, BrandingTaskStatus, VocabularyTaskStatus, WorkingGroupTaskStatus, FrameworkLinksTaskStatus) 
782+                  VALUES 
783+                  ( 
784+                        @id, 
785+                     CASE WHEN @descriptionStatus = 1 THEN 1 ELSE NULL END, 
786+                     CASE WHEN @providerandCategoryStatus = 1 THEN 1 ELSE NULL END, 
787+                     CASE WHEN @vocabularyStatus = 1 THEN 1 ELSE NULL END, 
788+                     CASE WHEN @workingGroupStatus = 1 THEN 1 ELSE NULL END, 
789+                     CASE WHEN @AllframeworkCompetenciesStatus = 1 THEN 1 ELSE NULL END 
790+                         ); 
791+                         END" , 
792+                new  {  id ,  descriptionStatus ,  providerandCategoryStatus ,  vocabularyStatus ,  workingGroupStatus ,  AllframeworkCompetenciesStatus  } 
793+            ) ; 
794+             if  ( numberOfAffectedRows  <  1 ) 
795+             { 
796+                 logger . LogWarning ( 
797+                     "Not updating SelfAssessmentTaskStatus as db update failed. "  + 
798+                     $ "SelfAssessmentId: { id } , IntroductoryTextTaskStatus: { descriptionStatus } , BrandingTaskStatus: { providerandCategoryStatus } , "+ 
799+                     $ "VocabularyTaskStatus: { vocabularyStatus } , WorkingGroupTaskStatus: { workingGroupStatus } , FrameworkLinksTaskStatus: { AllframeworkCompetenciesStatus } "
800+                 ) ; 
801+                 return  false ; 
802+             } 
803+             return  true ; 
804+         } 
805+ 
806+         public  CompetencyAssessmentFeatures ?  GetCompetencyAssessmentFeaturesTaskStatus ( int  competencyAssessmentId ) 
807+         { 
808+             return  connection . QueryFirstOrDefault < CompetencyAssessmentFeatures > ( 
809+                @"SELECT s.ID, s.Name AS CompetencyAssessmentName, sts.IntroductoryTextTaskStatus AS DescriptionStatus, sts.BrandingTaskStatus AS ProviderandCategoryStatus, 
810+ 	           sts.VocabularyTaskStatus AS VocabularyStatus, sts.WorkingGroupTaskStatus AS WorkingGroupStatus, sts.FrameworkLinksTaskStatus AS AllframeworkCompetenciesStatus 
811+ 	           FROM  SelfAssessments s INNER JOIN  
812+ 	           SelfAssessmentTaskStatus sts ON s.ID = sts.SelfAssessmentId  
813+ 	          WHERE s.ID = @competencyAssessmentId" , 
814+                new  {  competencyAssessmentId  } 
815+            ) ; 
816+             
817+         } 
818+ 
819+         public  void  UpdateSelfAssessmentFromFramework (  int  selfAssessmentId ,  int ?  frameworkId ) 
820+         { 
821+            
822+             var  numberOfAffectedRows  =  connection . Execute ( 
823+                 @"UPDATE s 
824+                     SET  
825+                     [Description] = COALESCE(F.[Description], 'No description provided'), 
826+                     BrandID = F.BrandID, 
827+                     CategoryID = F.CategoryID, 
828+                     CreatedByCentreID = AU.CentreID, 
829+                     CreatedByAdminID = F.OwnerAdminID 
830+                     FROM SelfAssessments s 
831+                     INNER JOIN Frameworks F ON F.ID = @frameworkId 
832+                     INNER JOIN AdminUsers AU ON F.OwnerAdminID = AU.AdminID 
833+                     WHERE s.id = @selfAssessmentId;" 
834+             , 
835+                 new  { selfAssessmentId ,  frameworkId  } 
836+             ) ; 
837+         } 
838+         public  bool  InsertSelfAssessmentStructure ( int  selfAssessmentId ,  int ?  frameworkId ) 
839+         { 
840+ 
841+                 var  numberOfAffectedRows  =  connection . Execute ( 
842+                 @"INSERT INTO SelfAssessmentStructure (SelfAssessmentID, CompetencyID, Ordering, CompetencyGroupID) 
843+                 SELECT s.ID, FC.CompetencyID, ROW_NUMBER() OVER( ORDER BY FCG.Ordering, FC.Ordering ), FCG.CompetencyGroupID 
844+                  FROM FrameworkCompetencies AS FC  
845+                 INNER JOIN FrameworkCompetencyGroups AS FCG ON FC.FrameworkCompetencyGroupID = FCG.ID INNER JOIN 
846+ 				SelfAssessments s ON s.id = @selfAssessmentId 
847+                 WHERE FC.FrameworkID = @frameworkId" 
848+             , 
849+                 new  {  selfAssessmentId ,  frameworkId  } 
850+             ) ; 
851+             if  ( numberOfAffectedRows  <  1 ) 
852+             { 
853+                 logger . LogWarning ( 
854+                 "Not inserting SelfAssessmentStructure record as db insert failed. "  + 
855+                     $ "selfAssessmentId: { selfAssessmentId } , frameworkId: { frameworkId } "
856+                 ) ; 
857+                 return  false ; 
858+             } 
859+ 
860+             return  true ; 
861+         } 
862+         public  int ?  GetSelfAssessmentStructure ( int  competencyAssessmentId ) 
863+         { 
864+             return  connection . QueryFirstOrDefault < int > ( 
865+                @"SELECT 1 from dbo.SelfAssessmentStructure where selfassessmentid  = @competencyAssessmentId" , 
866+                new  {  competencyAssessmentId  } 
867+            ) ; 
868+ 
869+         } 
759870    } 
760871} 
0 commit comments