Skip to content

Commit a65f2f8

Browse files
committed
TD-5286 Renames role profiles to competency assessments throughout the application
1 parent a43b862 commit a65f2f8

File tree

67 files changed

+1249
-1245
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

67 files changed

+1249
-1245
lines changed
Lines changed: 197 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,197 @@
1+
namespace DigitalLearningSolutions.Data.DataServices
2+
{
3+
using System.Collections.Generic;
4+
using System.Data;
5+
using System.Linq;
6+
using Dapper;
7+
using DigitalLearningSolutions.Data.Models.CompetencyAssessments;
8+
using Microsoft.Extensions.Logging;
9+
10+
public interface ICompetencyAssessmentDataService
11+
{
12+
//GET DATA
13+
IEnumerable<CompetencyAssessment> GetAllCompetencyAssessments(int adminId);
14+
15+
IEnumerable<CompetencyAssessment> GetCompetencyAssessmentsForAdminId(int adminId);
16+
17+
CompetencyAssessmentBase? GetCompetencyAssessmentBaseById(int competencyAssessmentId, int adminId);
18+
19+
CompetencyAssessmentBase? GetCompetencyAssessmentByName(string competencyAssessmentName, int adminId);
20+
21+
IEnumerable<NRPProfessionalGroups> GetNRPProfessionalGroups();
22+
23+
//UPDATE DATA
24+
bool UpdateCompetencyAssessmentName(int competencyAssessmentId, int adminId, string competencyAssessmentName);
25+
26+
bool UpdateCompetencyAssessmentProfessionalGroup(int competencyAssessmentId, int adminId, int? nrpProfessionalGroupID);
27+
//INSERT DATA
28+
29+
//DELETE DATA
30+
}
31+
32+
public class CompetencyAssessmentDataService : ICompetencyAssessmentDataService
33+
{
34+
private const string SelfAssessmentBaseFields = @"sa.ID, sa.Name AS CompetencyAssessmentName, sa.Description, sa.BrandID,
35+
sa.ParentSelfAssessmentID,
36+
sa.[National], sa.[Public], sa.CreatedByAdminID AS OwnerAdminID,
37+
sa.NRPProfessionalGroupID,
38+
sa.NRPSubGroupID,
39+
sa.NRPRoleID,
40+
sa.PublishStatusID, CASE WHEN sa.CreatedByAdminID = @adminId THEN 3 WHEN sac.CanModify = 1 THEN 2 WHEN sac.CanModify = 0 THEN 1 ELSE 0 END AS UserRole";
41+
42+
private const string SelfAssessmentFields =
43+
@", sa.CreatedDate,
44+
(SELECT BrandName
45+
FROM Brands
46+
WHERE (BrandID = sa.BrandID)) AS Brand,
47+
(SELECT [Name]
48+
FROM SelfAssessments AS sa2
49+
WHERE (ID = sa.ParentSelfAssessmentID)) AS ParentSelfAssessment,
50+
(SELECT Forename + ' ' + Surname + (CASE WHEN Active = 1 THEN '' ELSE ' (Inactive)' END) AS Expr1
51+
FROM AdminUsers
52+
WHERE (AdminID = sa.CreatedByAdminID)) AS Owner,
53+
sa.Archived,
54+
sa.LastEdit,
55+
(SELECT ProfessionalGroup
56+
FROM NRPProfessionalGroups
57+
WHERE (ID = sa.NRPProfessionalGroupID)) AS NRPProfessionalGroup,
58+
(SELECT SubGroup
59+
FROM NRPSubGroups
60+
WHERE (ID = sa.NRPSubGroupID)) AS NRPSubGroup,
61+
(SELECT RoleProfile
62+
FROM NRPRoles
63+
WHERE (ID = sa.NRPRoleID)) AS NRPRole, sar.ID AS SelfAssessmentReviewID";
64+
65+
private const string SelfAssessmentBaseTables =
66+
@"SelfAssessments AS sa LEFT OUTER JOIN
67+
SelfAssessmentCollaborators AS sac ON sac.SelfAssessmentID = sa.ID AND sac.AdminID = @adminId";
68+
69+
private const string SelfAssessmentTables =
70+
@" LEFT OUTER JOIN
71+
SelfAssessmentReviews AS sar ON sac.ID = sar.SelfAssessmentCollaboratorID AND sar.Archived IS NULL AND sar.ReviewComplete IS NULL";
72+
73+
private readonly IDbConnection connection;
74+
private readonly ILogger<CompetencyAssessmentDataService> logger;
75+
76+
public CompetencyAssessmentDataService(IDbConnection connection, ILogger<CompetencyAssessmentDataService> logger)
77+
{
78+
this.connection = connection;
79+
this.logger = logger;
80+
}
81+
82+
public IEnumerable<CompetencyAssessment> GetAllCompetencyAssessments(int adminId)
83+
{
84+
return connection.Query<CompetencyAssessment>(
85+
$@"SELECT {SelfAssessmentBaseFields} {SelfAssessmentFields}
86+
FROM {SelfAssessmentBaseTables} {SelfAssessmentTables}",
87+
new { adminId }
88+
);
89+
}
90+
91+
public IEnumerable<CompetencyAssessment> GetCompetencyAssessmentsForAdminId(int adminId)
92+
{
93+
return connection.Query<CompetencyAssessment>(
94+
$@"SELECT {SelfAssessmentBaseFields} {SelfAssessmentFields}
95+
FROM {SelfAssessmentBaseTables} {SelfAssessmentTables}
96+
WHERE (sa.CreatedByAdminID = @adminId) OR
97+
(@adminId IN
98+
(SELECT AdminID
99+
FROM SelfAssessmentCollaborators
100+
WHERE (SelfAssessmentID = sa.ID)))",
101+
new { adminId }
102+
);
103+
}
104+
105+
public CompetencyAssessmentBase? GetCompetencyAssessmentBaseById(int competencyAssessmentId, int adminId)
106+
{
107+
return connection.Query<CompetencyAssessmentBase>(
108+
$@"SELECT {SelfAssessmentBaseFields}
109+
FROM {SelfAssessmentBaseTables}
110+
WHERE (sa.ID = @competencyAssessmentId)",
111+
new { competencyAssessmentId, adminId }
112+
).FirstOrDefault();
113+
}
114+
115+
public bool UpdateCompetencyAssessmentName(int competencyAssessmentId, int adminId, string competencyAssessmentName)
116+
{
117+
if ((competencyAssessmentName.Length == 0) | (adminId < 1) | (competencyAssessmentId < 1))
118+
{
119+
logger.LogWarning(
120+
$"Not updating role profile name as it failed server side validation. AdminId: {adminId}, competencyAssessmentName: {competencyAssessmentName}, competencyAssessmentId: {competencyAssessmentId}"
121+
);
122+
return false;
123+
}
124+
125+
var existingSelfAssessments = (int)connection.ExecuteScalar(
126+
@"SELECT COUNT(*) FROM SelfAssessments WHERE [Name] = @competencyAssessmentName AND ID <> @competencyAssessmentId",
127+
new { competencyAssessmentName, competencyAssessmentId }
128+
);
129+
if (existingSelfAssessments > 0)
130+
{
131+
return false;
132+
}
133+
134+
var numberOfAffectedRows = connection.Execute(
135+
@"UPDATE SelfAssessments SET [Name] = @competencyAssessmentName, UpdatedByAdminID = @adminId
136+
WHERE ID = @competencyAssessmentId",
137+
new { competencyAssessmentName, adminId, competencyAssessmentId }
138+
);
139+
if (numberOfAffectedRows < 1)
140+
{
141+
logger.LogWarning(
142+
"Not updating role profile name as db update failed. " +
143+
$"SelfAssessmentName: {competencyAssessmentName}, admin id: {adminId}, competencyAssessmentId: {competencyAssessmentId}"
144+
);
145+
return false;
146+
}
147+
148+
return true;
149+
}
150+
151+
public IEnumerable<NRPProfessionalGroups> GetNRPProfessionalGroups()
152+
{
153+
return connection.Query<NRPProfessionalGroups>(
154+
@"SELECT ID, ProfessionalGroup, Active
155+
FROM NRPProfessionalGroups
156+
WHERE (Active = 1)
157+
ORDER BY ProfessionalGroup"
158+
);
159+
}
160+
161+
public CompetencyAssessmentBase? GetCompetencyAssessmentByName(string competencyAssessmentName, int adminId)
162+
{
163+
return connection.Query<CompetencyAssessmentBase>(
164+
$@"SELECT {SelfAssessmentBaseFields}
165+
FROM {SelfAssessmentBaseTables}
166+
WHERE (sa.Name = @competencyAssessmentName)",
167+
new { competencyAssessmentName, adminId }
168+
).FirstOrDefault();
169+
}
170+
171+
public bool UpdateCompetencyAssessmentProfessionalGroup(int competencyAssessmentId, int adminId, int? nrpProfessionalGroupID)
172+
{
173+
var sameCount = (int)connection.ExecuteScalar(
174+
@"SELECT COUNT(*) FROM CompetencyAssessments WHERE ID = @competencyAssessmentId AND NRPProfessionalGroupID = @nrpProfessionalGroupID",
175+
new { competencyAssessmentId, nrpProfessionalGroupID }
176+
);
177+
if (sameCount > 0)
178+
{
179+
//same so don't update:
180+
return false;
181+
}
182+
183+
//needs updating:
184+
var numberOfAffectedRows = connection.Execute(
185+
@"UPDATE SelfAssessments SET NRPProfessionalGroupID = @nrpProfessionalGroupID, NRPSubGroupID = NULL, NRPRoleID = NULL, UpdatedByAdminID = @adminId
186+
WHERE ID = @competencyAssessmentId",
187+
new { nrpProfessionalGroupID, adminId, competencyAssessmentId }
188+
);
189+
if (numberOfAffectedRows > 0)
190+
{
191+
return true;
192+
}
193+
194+
return false;
195+
}
196+
}
197+
}

DigitalLearningSolutions.Data/DataServices/FrameworkDataService.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2222,15 +2222,15 @@ public void ArchiveReviewRequest(int reviewId)
22222222
FROM FrameworkCollaborators
22232223
WHERE (FrameworkID = FW.ID) AND (IsDeleted=0)))) AS MyFrameworksCount,
22242224
2225-
(SELECT COUNT(*) FROM SelfAssessments) AS RoleProfileCount,
2225+
(SELECT COUNT(*) FROM SelfAssessments) AS CompetencyAssessmentCount,
22262226
22272227
(SELECT COUNT(*) FROM SelfAssessments AS RP LEFT OUTER JOIN
22282228
SelfAssessmentCollaborators AS RPC ON RPC.SelfAssessmentID = RP.ID AND RPC.AdminID = @adminId
22292229
WHERE (RP.CreatedByAdminID = @adminId) OR
22302230
(@adminId IN
22312231
(SELECT AdminID
22322232
FROM SelfAssessmentCollaborators
2233-
WHERE (SelfAssessmentID = RP.ID)))) AS MyRoleProfileCount",
2233+
WHERE (SelfAssessmentID = RP.ID)))) AS MyCompetencyAssessmentCount",
22342234
new { adminId }
22352235
).FirstOrDefault();
22362236
}
@@ -2240,7 +2240,7 @@ public IEnumerable<DashboardToDoItem> GetDashboardToDoItems(int adminId)
22402240
return connection.Query<DashboardToDoItem>(
22412241
@"SELECT
22422242
FW.ID AS FrameworkID,
2243-
0 AS RoleProfileID,
2243+
0 AS CompetencyAssessmentID,
22442244
FW.FrameworkName AS ItemName,
22452245
AU.Forename + ' ' + AU.Surname + (CASE WHEN AU.Active = 1 THEN '' ELSE ' (Inactive)' END) AS RequestorName,
22462246
FWR.SignOffRequired,

0 commit comments

Comments
 (0)