11namespace DigitalLearningSolutions . Data . DataServices
22{
3+ using System ;
34 using System . Collections . Generic ;
45 using System . Data ;
56 using System . Linq ;
67 using Dapper ;
8+ using DigitalLearningSolutions . Data . Models . Common ;
79 using DigitalLearningSolutions . Data . Models . CompetencyAssessments ;
10+ using DigitalLearningSolutions . Data . Models . Frameworks ;
11+ using DocumentFormat . OpenXml . Wordprocessing ;
812 using Microsoft . Extensions . Logging ;
913
1014 public interface ICompetencyAssessmentDataService
@@ -24,8 +28,16 @@ public interface ICompetencyAssessmentDataService
2428 bool UpdateCompetencyAssessmentName ( int competencyAssessmentId , int adminId , string competencyAssessmentName ) ;
2529
2630 bool UpdateCompetencyAssessmentProfessionalGroup ( int competencyAssessmentId , int adminId , int ? nrpProfessionalGroupID ) ;
31+ bool UpdateCompetencyAssessmentBranding (
32+ int competencyAssessmentId ,
33+ int brandId ,
34+ int categoryId ,
35+ int adminId
36+ ) ;
37+ bool UpdateCompetencyAssessmentDescription ( int competencyAssessmentId , int adminId , string competencyAssessmentDescription ) ;
2738 //INSERT DATA
28-
39+ int InsertCompetencyAssessment ( int adminId , int centreId , string competencyAssessmentName ) ;
40+ bool InsertSelfAssessmentFramework ( int adminId , int selfAssessmentId , int frameworkId ) ;
2941 //DELETE DATA
3042 }
3143
@@ -121,6 +133,33 @@ FROM SelfAssessmentCollaborators
121133 ) . FirstOrDefault ( ) ;
122134 }
123135
136+ public int InsertCompetencyAssessment ( int adminId , int centreId , string competencyAssessmentName )
137+ {
138+ if ( ( competencyAssessmentName . Length == 0 ) | ( adminId < 1 ) )
139+ {
140+ logger . LogWarning (
141+ $ "Not inserting competency assessmente as it failed server side validation. AdminId: { adminId } , competencyAssessmentName: { competencyAssessmentName } "
142+ ) ;
143+ return - 1 ;
144+ }
145+ var result = connection . ExecuteScalar (
146+ @"SELECT COUNT(*) FROM SelfAssessments WHERE [Name] = @competencyAssessmentName" ,
147+ new { competencyAssessmentName }
148+ ) ;
149+ int existingSelfAssessments = Convert . ToInt32 ( result ) ;
150+ if ( existingSelfAssessments > 0 )
151+ {
152+ return - 1 ;
153+ }
154+ var assessmentId = connection . QuerySingle < int > (
155+ @"INSERT INTO SelfAssessments ([Name], CreatedByCentreID, CreatedByAdminID)
156+ OUTPUT INSERTED.Id
157+ VALUES (@competencyAssessmentName, @centreId, @adminId)"
158+ ,
159+ new { competencyAssessmentName , centreId , adminId }
160+ ) ;
161+ return assessmentId ;
162+ }
124163 public bool UpdateCompetencyAssessmentName ( int competencyAssessmentId , int adminId , string competencyAssessmentName )
125164 {
126165 if ( ( competencyAssessmentName . Length == 0 ) | ( adminId < 1 ) | ( competencyAssessmentId < 1 ) )
@@ -130,11 +169,11 @@ public bool UpdateCompetencyAssessmentName(int competencyAssessmentId, int admin
130169 ) ;
131170 return false ;
132171 }
133-
134- var existingSelfAssessments = ( int ) connection . ExecuteScalar (
172+ var result = connection . ExecuteScalar (
135173 @"SELECT COUNT(*) FROM SelfAssessments WHERE [Name] = @competencyAssessmentName AND ID <> @competencyAssessmentId" ,
136174 new { competencyAssessmentName , competencyAssessmentId }
137175 ) ;
176+ int existingSelfAssessments = Convert . ToInt32 ( result ) ;
138177 if ( existingSelfAssessments > 0 )
139178 {
140179 return false ;
@@ -179,10 +218,11 @@ ORDER BY ProfessionalGroup"
179218
180219 public bool UpdateCompetencyAssessmentProfessionalGroup ( int competencyAssessmentId , int adminId , int ? nrpProfessionalGroupID )
181220 {
182- var sameCount = ( int ) connection . ExecuteScalar (
221+ var result = connection . ExecuteScalar (
183222 @"SELECT COUNT(*) FROM CompetencyAssessments WHERE ID = @competencyAssessmentId AND NRPProfessionalGroupID = @nrpProfessionalGroupID" ,
184223 new { competencyAssessmentId , nrpProfessionalGroupID }
185224 ) ;
225+ int sameCount = Convert . ToInt32 ( result ) ;
186226 if ( sameCount > 0 )
187227 {
188228 //same so don't update:
@@ -202,5 +242,75 @@ public bool UpdateCompetencyAssessmentProfessionalGroup(int competencyAssessment
202242
203243 return false ;
204244 }
245+ public bool UpdateCompetencyAssessmentBranding (
246+ int competencyAssessmentId ,
247+ int brandId ,
248+ int categoryId ,
249+ int adminId
250+ )
251+ {
252+ if ( ( competencyAssessmentId < 1 ) | ( brandId < 1 ) | ( categoryId < 1 ) | ( adminId < 1 ) )
253+ {
254+ logger . LogWarning (
255+ $ "Not updating competency assessment as it failed server side validation. competencyAssessmentId: { competencyAssessmentId } , brandId: { brandId } , categoryId: { categoryId } , AdminId: { adminId } "
256+ ) ;
257+ return false ;
258+ }
259+
260+ var numberOfAffectedRows = connection . Execute (
261+ @"UPDATE SelfAssessments SET BrandID = @brandId, CategoryID = @categoryId, UpdatedByAdminID = @adminId
262+ WHERE ID = @competencyAssessmentId" ,
263+ new { brandId , categoryId , adminId , competencyAssessmentId }
264+ ) ;
265+ if ( numberOfAffectedRows < 1 )
266+ {
267+ logger . LogWarning (
268+ "Not updating competency assessment as db update failed. " +
269+ $ "frameworkId: { competencyAssessmentId } , brandId: { brandId } , categoryId: { categoryId } , AdminId: { adminId } "
270+ ) ;
271+ return false ;
272+ }
273+
274+ return true ;
275+ }
276+
277+ public bool UpdateCompetencyAssessmentDescription ( int competencyAssessmentId , int adminId , string competencyAssessmentDescription )
278+ {
279+ var numberOfAffectedRows = connection . Execute (
280+ @"UPDATE SelfAssessments SET Description = @competencyAssessmentDescription, UpdatedByAdminID = @adminId
281+ WHERE ID = @competencyAssessmentId" ,
282+ new { adminId , competencyAssessmentId , competencyAssessmentDescription }
283+ ) ;
284+ if ( numberOfAffectedRows < 1 )
285+ {
286+ logger . LogWarning (
287+ "Not updating competency assessment as db update failed. " +
288+ $ "frameworkId: { competencyAssessmentId } , competencyAssessmentDescription: { competencyAssessmentDescription } , AdminId: { adminId } "
289+ ) ;
290+ return false ;
291+ }
292+ return true ;
293+ }
294+
295+ public bool InsertSelfAssessmentFramework ( int adminId , int selfAssessmentId , int frameworkId )
296+ {
297+ var numberOfAffectedRows = connection . Execute (
298+ @"Insert SelfAssessmentFrameworks (SelfAssessmentId, FrameworkId, CreatedByAdminId)
299+ VALUES (@selfAssessmentId, @frameworkId, @adminId)
300+ WHERE NOT EXISTS (SELECT 1 FROM SelfAssessmentFrameworks WHERE SelfAssessmentId = @selfAssessmentId AND FrameworkId = @frameworkId)"
301+ ,
302+ new { adminId , selfAssessmentId , frameworkId }
303+ ) ;
304+ if ( numberOfAffectedRows < 1 )
305+ {
306+ logger . LogWarning (
307+ "Not inserting SelfAssessmentFrameworks record as db insert failed. " +
308+ $ "selfAssessmentId: { selfAssessmentId } , frameworkId: { frameworkId } , AdminId: { adminId } "
309+ ) ;
310+ return false ;
311+ }
312+
313+ return true ;
314+ }
205315 }
206316}
0 commit comments