Skip to content

Commit 21ac8c6

Browse files
authored
Merge pull request #2500 from TechnologyEnhancedLearning/Develop/Hotfix/TD-3639-UrgentFixToDSATReport
TD-3639 Returns pre release .23 code to fix DSAT report
2 parents 37982e6 + 27bcbad commit 21ac8c6

File tree

3 files changed

+163
-2
lines changed

3 files changed

+163
-2
lines changed

DigitalLearningSolutions.Data/DataServices/SelfAssessmentDataService/DCSAReportDataService.cs

Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ public interface IDCSAReportDataService
1010
{
1111
IEnumerable<DCSADelegateCompletionStatus> GetDelegateCompletionStatus();
1212
IEnumerable<DCSAOutcomeSummary> GetOutcomeSummary();
13+
IEnumerable<DCSADelegateCompletionStatus> GetDelegateCompletionStatusForCentre(int centreId);
14+
IEnumerable<DCSAOutcomeSummary> GetOutcomeSummaryForCentre(int centreId);
1315
}
1416
public partial class DCSAReportDataService : IDCSAReportDataService
1517
{
@@ -122,5 +124,111 @@ FROM Candidates AS ca INNER JOIN
122124
WHERE (ca.Active = 1) AND (caa.SelfAssessmentID = 1) AND caa.NonReportable = 0
123125
ORDER BY EnrolledYear DESC, EnrolledMonth DESC, ca.LastName, ca.FirstName");
124126
}
127+
public IEnumerable<DCSADelegateCompletionStatus> GetDelegateCompletionStatusForCentre(int centreId)
128+
{
129+
return connection.Query<DCSADelegateCompletionStatus>(
130+
@"SELECT DATEPART(month, caa.StartedDate) AS EnrolledMonth, DATEPART(yyyy, caa.StartedDate) AS EnrolledYear, ca.FirstName, ca.LastName, ca.EmailAddress AS Email, ca.Answer1 AS CentreField1, ca.Answer2 AS CentreField2, ca.Answer3 AS CentreField3, CASE WHEN (caa.SubmittedDate IS NOT NULL)
131+
THEN 'Submitted' WHEN (caa.UserBookmark LIKE N'/LearningPortal/SelfAssessment/1/Review' AND caa.SubmittedDate IS NULL) THEN 'Reviewing' ELSE 'Incomplete' END AS Status
132+
FROM Candidates AS ca INNER JOIN
133+
CandidateAssessments AS caa ON ca.UserID = caa.DelegateUserID AND ca.CentreID = caa.CentreID INNER JOIN
134+
JobGroups AS jg ON ca.JobGroupID = jg.JobGroupID
135+
WHERE (ca.Active = 1) AND (ca.CentreID = @centreId) AND (caa.SelfAssessmentID = 1) AND caa.NonReportable = 0
136+
ORDER BY EnrolledYear DESC, EnrolledMonth DESC, ca.LastName, ca.FirstName",
137+
new { centreId }
138+
);
139+
}
140+
141+
public IEnumerable<DCSAOutcomeSummary> GetOutcomeSummaryForCentre(int centreId)
142+
{
143+
return connection.Query<DCSAOutcomeSummary>(
144+
@"SELECT DATEPART(month, caa.StartedDate) AS EnrolledMonth, DATEPART(yyyy, caa.StartedDate) AS EnrolledYear, jg.JobGroupName AS JobGroup, ca.Answer1 AS CentreField1, ca.Answer2 AS CentreField2, ca.Answer3 AS CentreField3, CASE WHEN (caa.SubmittedDate IS NOT NULL)
145+
THEN 'Submitted' WHEN (caa.UserBookmark LIKE N'/LearningPortal/SelfAssessment/1/Review' AND caa.SubmittedDate IS NULL) THEN 'Reviewing' ELSE 'Incomplete' END AS Status,
146+
(SELECT COUNT(*) AS Expr1
147+
FROM FilteredLearningActivity AS fla
148+
WHERE (CandidateId = ca.CandidateID)) AS LearningLaunched,
149+
(SELECT COUNT(*) AS Expr1
150+
FROM FilteredLearningActivity AS fla
151+
WHERE (CandidateId = ca.CandidateID) AND (CompletedDate IS NOT NULL)) AS LearningCompleted,
152+
(SELECT AVG(sar.Result) AS AvgConfidence
153+
FROM SelfAssessmentResults AS sar INNER JOIN
154+
Competencies AS co ON sar.CompetencyID = co.ID INNER JOIN
155+
SelfAssessmentStructure AS sas ON co.ID = sas.CompetencyID INNER JOIN
156+
DelegateAccounts as da ON sar.DelegateUserID = da.UserID AND ca.CandidateID = da.ID
157+
WHERE (sar.AssessmentQuestionID = 1) AND (sas.CompetencyGroupID = 1)) AS DataInformationAndContentConfidence,
158+
(SELECT AVG(sar.Result) AS AvgConfidence
159+
FROM SelfAssessmentResults AS sar INNER JOIN
160+
Competencies AS co ON sar.CompetencyID = co.ID INNER JOIN
161+
SelfAssessmentStructure AS sas ON co.ID = sas.CompetencyID INNER JOIN
162+
DelegateAccounts as da ON sar.DelegateUserID = da.UserID AND ca.CandidateID = da.ID
163+
WHERE (sar.AssessmentQuestionID = 2) AND (sas.CompetencyGroupID = 1)) AS DataInformationAndContentRelevance,
164+
(SELECT AVG(sar.Result) AS AvgConfidence
165+
FROM SelfAssessmentResults AS sar INNER JOIN
166+
Competencies AS co ON sar.CompetencyID = co.ID INNER JOIN
167+
SelfAssessmentStructure AS sas ON co.ID = sas.CompetencyID INNER JOIN
168+
DelegateAccounts as da ON sar.DelegateUserID = da.UserID AND ca.CandidateID = da.ID
169+
WHERE (sar.AssessmentQuestionID = 1) AND (sas.CompetencyGroupID = 2)) AS TeachingLearningAndSelfDevelopmentConfidence,
170+
(SELECT AVG(sar.Result) AS AvgConfidence
171+
FROM SelfAssessmentResults AS sar INNER JOIN
172+
Competencies AS co ON sar.CompetencyID = co.ID INNER JOIN
173+
SelfAssessmentStructure AS sas ON co.ID = sas.CompetencyID INNER JOIN
174+
DelegateAccounts as da ON sar.DelegateUserID = da.UserID AND ca.CandidateID = da.ID
175+
WHERE (sar.AssessmentQuestionID = 2) AND (sas.CompetencyGroupID = 2)) AS TeachingLearningAndSelfDevelopmentRelevance,
176+
(SELECT AVG(sar.Result) AS AvgConfidence
177+
FROM SelfAssessmentResults AS sar INNER JOIN
178+
Competencies AS co ON sar.CompetencyID = co.ID INNER JOIN
179+
SelfAssessmentStructure AS sas ON co.ID = sas.CompetencyID INNER JOIN
180+
DelegateAccounts as da ON sar.DelegateUserID = da.UserID AND ca.CandidateID = da.ID
181+
WHERE (sar.AssessmentQuestionID = 1) AND (sas.CompetencyGroupID = 3)) AS CommunicationCollaborationAndParticipationConfidence,
182+
(SELECT AVG(sar.Result) AS AvgConfidence
183+
FROM SelfAssessmentResults AS sar INNER JOIN
184+
Competencies AS co ON sar.CompetencyID = co.ID INNER JOIN
185+
SelfAssessmentStructure AS sas ON co.ID = sas.CompetencyID INNER JOIN
186+
DelegateAccounts as da ON sar.DelegateUserID = da.UserID AND ca.CandidateID = da.ID
187+
WHERE (sar.AssessmentQuestionID = 2) AND (sas.CompetencyGroupID = 3)) AS CommunicationCollaborationAndParticipationRelevance,
188+
(SELECT AVG(sar.Result) AS AvgConfidence
189+
FROM SelfAssessmentResults AS sar INNER JOIN
190+
Competencies AS co ON sar.CompetencyID = co.ID INNER JOIN
191+
SelfAssessmentStructure AS sas ON co.ID = sas.CompetencyID INNER JOIN
192+
DelegateAccounts as da ON sar.DelegateUserID = da.UserID AND ca.CandidateID = da.ID
193+
WHERE (sar.AssessmentQuestionID = 1) AND (sas.CompetencyGroupID = 4)) AS TechnicalProficiencyConfidence,
194+
(SELECT AVG(sar.Result) AS AvgConfidence
195+
FROM SelfAssessmentResults AS sar INNER JOIN
196+
Competencies AS co ON sar.CompetencyID = co.ID INNER JOIN
197+
SelfAssessmentStructure AS sas ON co.ID = sas.CompetencyID INNER JOIN
198+
DelegateAccounts as da ON sar.DelegateUserID = da.UserID AND ca.CandidateID = da.ID
199+
WHERE (sar.AssessmentQuestionID = 2) AND (sas.CompetencyGroupID = 4)) AS TechnicalProficiencyRelevance,
200+
(SELECT AVG(sar.Result) AS AvgConfidence
201+
FROM SelfAssessmentResults AS sar INNER JOIN
202+
Competencies AS co ON sar.CompetencyID = co.ID INNER JOIN
203+
SelfAssessmentStructure AS sas ON co.ID = sas.CompetencyID INNER JOIN
204+
DelegateAccounts as da ON sar.DelegateUserID = da.UserID AND ca.CandidateID = da.ID
205+
WHERE (sar.AssessmentQuestionID = 1) AND (sas.CompetencyGroupID = 5)) AS CreationInnovationAndResearchConfidence,
206+
(SELECT AVG(sar.Result) AS AvgConfidence
207+
FROM SelfAssessmentResults AS sar INNER JOIN
208+
Competencies AS co ON sar.CompetencyID = co.ID INNER JOIN
209+
SelfAssessmentStructure AS sas ON co.ID = sas.CompetencyID INNER JOIN
210+
DelegateAccounts as da ON sar.DelegateUserID = da.UserID AND ca.CandidateID = da.ID
211+
WHERE (sar.AssessmentQuestionID = 2) AND (sas.CompetencyGroupID = 5)) AS CreationInnovationAndResearchRelevance,
212+
(SELECT AVG(sar.Result) AS AvgConfidence
213+
FROM SelfAssessmentResults AS sar INNER JOIN
214+
Competencies AS co ON sar.CompetencyID = co.ID INNER JOIN
215+
SelfAssessmentStructure AS sas ON co.ID = sas.CompetencyID INNER JOIN
216+
DelegateAccounts as da ON sar.DelegateUserID = da.UserID AND ca.CandidateID = da.ID
217+
WHERE (sar.AssessmentQuestionID = 1) AND (sas.CompetencyGroupID = 6)) AS DigitalIdentityWellbeingSafetyAndSecurityConfidence,
218+
(SELECT AVG(sar.Result) AS AvgConfidence
219+
FROM SelfAssessmentResults AS sar INNER JOIN
220+
Competencies AS co ON sar.CompetencyID = co.ID INNER JOIN
221+
SelfAssessmentStructure AS sas ON co.ID = sas.CompetencyID INNER JOIN
222+
DelegateAccounts as da ON sar.DelegateUserID = da.UserID AND ca.CandidateID = da.ID
223+
WHERE (sar.AssessmentQuestionID = 2) AND (sas.CompetencyGroupID = 6)) AS DigitalIdentityWellbeingSafetyAndSecurityRelevance
224+
FROM Candidates AS ca INNER JOIN
225+
CandidateAssessments AS caa ON ca.UserID = caa.DelegateUserID AND ca.CentreID = caa.CentreID INNER JOIN Users AS u ON caa.DelegateUserID = u.ID INNER JOIN
226+
JobGroups AS jg ON u.JobGroupID = jg.JobGroupID
227+
WHERE (ca.Active = 1) AND (ca.CentreID = @centreId) AND (caa.SelfAssessmentID = 1)
228+
ORDER BY EnrolledYear DESC, EnrolledMonth DESC, JobGroup, CentreField1, CentreField2, CentreField3, Status",
229+
new { centreId }
230+
);
231+
}
232+
125233
}
126234
}

DigitalLearningSolutions.Web/Controllers/TrackingSystem/Centre/SelfAssessmentReports/SelfAssessmentReportsController.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,8 @@ public IActionResult Index()
4242
public IActionResult DownloadDigitalCapabilityToExcel()
4343
{
4444
var centreId = User.GetCentreIdKnownNotNull();
45-
var dataFile = selfAssessmentReportService.GetDigitalCapabilityExcelExport();
46-
var fileName = $"DLS DSAT Report - downloaded {clockUtility.UtcToday:yyyy-MM-dd}.xlsx";
45+
var dataFile = selfAssessmentReportService.GetDigitalCapabilityExcelExportForCentre(centreId);
46+
var fileName = $"DLS DSAT Report - Centre {centreId} - downloaded {clockUtility.UtcToday:yyyy-MM-dd}.xlsx";
4747
return File(
4848
dataFile,
4949
FileHelper.GetContentTypeFromFileName(fileName),

DigitalLearningSolutions.Web/Services/SelfAssessmentReportService.cs

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ public interface ISelfAssessmentReportService
1313
{
1414
byte[] GetDigitalCapabilityExcelExport();
1515
byte[] GetSelfAssessmentExcelExportForCentre(int centreId, int selfAssessmentId);
16+
byte[] GetDigitalCapabilityExcelExportForCentre(int centreId);
1617
IEnumerable<SelfAssessmentSelect> GetSelfAssessmentsForReportList(int centreId, int? categoryId);
1718
}
1819
public class SelfAssessmentReportService : ISelfAssessmentReportService
@@ -122,5 +123,57 @@ public byte[] GetSelfAssessmentExcelExportForCentre(int centreId, int selfAssess
122123
workbook.SaveAs(stream);
123124
return stream.ToArray();
124125
}
126+
public byte[] GetDigitalCapabilityExcelExportForCentre(int centreId)
127+
{
128+
var delegateCompletionStatus = dcsaReportDataService.GetDelegateCompletionStatusForCentre(centreId);
129+
var outcomeSummary = dcsaReportDataService.GetOutcomeSummaryForCentre(centreId);
130+
var summary = delegateCompletionStatus.Select(
131+
x => new
132+
{
133+
x.EnrolledMonth,
134+
x.EnrolledYear,
135+
x.FirstName,
136+
x.LastName,
137+
Email = (Guid.TryParse(x.Email, out _) ? string.Empty : x.Email),
138+
x.CentreField1,
139+
x.CentreField2,
140+
x.CentreField3,
141+
x.Status
142+
}
143+
);
144+
var details = outcomeSummary.Select(
145+
x => new
146+
{
147+
x.EnrolledMonth,
148+
x.EnrolledYear,
149+
x.JobGroup,
150+
x.CentreField1,
151+
x.CentreField2,
152+
x.CentreField3,
153+
x.Status,
154+
x.LearningLaunched,
155+
x.LearningCompleted,
156+
x.DataInformationAndContentConfidence,
157+
x.DataInformationAndContentRelevance,
158+
x.TeachinglearningAndSelfDevelopmentConfidence,
159+
x.TeachinglearningAndSelfDevelopmentRelevance,
160+
x.CommunicationCollaborationAndParticipationConfidence,
161+
x.CommunicationCollaborationAndParticipationRelevance,
162+
x.TechnicalProficiencyConfidence,
163+
x.TechnicalProficiencyRelevance,
164+
x.CreationInnovationAndResearchConfidence,
165+
x.CreationInnovationAndResearchRelevance,
166+
x.DigitalIdentityWellbeingSafetyAndSecurityConfidence,
167+
x.DigitalIdentityWellbeingSafetyAndSecurityRelevance
168+
}
169+
);
170+
using var workbook = new XLWorkbook();
171+
AddSheetToWorkbook(workbook, "Delegate Completion Status", summary);
172+
AddSheetToWorkbook(workbook, "Assessment Outcome Summary", outcomeSummary);
173+
using var stream = new MemoryStream();
174+
workbook.SaveAs(stream);
175+
return stream.ToArray();
176+
}
125177
}
178+
126179
}

0 commit comments

Comments
 (0)