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