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