Skip to content

Commit dcc3290

Browse files
committed
TD-483 Adds model, data service methods and controller for select competencies page
1 parent 0403feb commit dcc3290

File tree

5 files changed

+84
-1
lines changed

5 files changed

+84
-1
lines changed

DigitalLearningSolutions.Data/DataServices/CompetencyAssessmentDataService.cs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
using DigitalLearningSolutions.Data.Models.Common;
99
using DigitalLearningSolutions.Data.Models.CompetencyAssessments;
1010
using DigitalLearningSolutions.Data.Models.Frameworks;
11+
using DigitalLearningSolutions.Data.Models.Frameworks.Import;
1112
using DocumentFormat.OpenXml.Wordprocessing;
1213
using Microsoft.Extensions.Logging;
1314

@@ -34,6 +35,8 @@ public interface ICompetencyAssessmentDataService
3435

3536
int GetCompetencyCountByFrameworkId(int assessmentId, int frameworkId);
3637

38+
IEnumerable<Competency> GetCompetenciesForCompetencyAssessment(int competencyAssessmentId);
39+
3740
//UPDATE DATA
3841
bool UpdateCompetencyAssessmentName(int competencyAssessmentId, int adminId, string competencyAssessmentName);
3942

@@ -632,5 +635,20 @@ public bool UpdateRoleRequirementsTaskStatus(int assessmentId, bool taskStatus,
632635
}
633636
return true;
634637
}
638+
639+
public IEnumerable<Competency> GetCompetenciesForCompetencyAssessment(int competencyAssessmentId)
640+
{
641+
return connection.Query<Competency>(
642+
@"SELECT sas.ID AS StructureId, sas.CompetencyID, f.FrameworkName, cg.Name AS GroupName, c.Name AS CompetencyName, c.Description AS CompetencyDescription, sas.Optional
643+
FROM SelfAssessmentStructure AS sas INNER JOIN
644+
Competencies AS c ON sas.CompetencyID = c.ID INNER JOIN
645+
CompetencyGroups AS cg ON sas.CompetencyGroupID = cg.ID INNER JOIN
646+
FrameworkCompetencies ON c.ID = FrameworkCompetencies.CompetencyID INNER JOIN
647+
Frameworks AS f ON FrameworkCompetencies.FrameworkID = f.ID INNER JOIN
648+
SelfAssessmentFrameworks ON f.ID = SelfAssessmentFrameworks.FrameworkId AND sas.SelfAssessmentID = SelfAssessmentFrameworks.SelfAssessmentId
649+
WHERE (sas.SelfAssessmentID = @competencyAssessmentId)
650+
ORDER BY sas.Ordering", new { competencyAssessmentId }
651+
);
652+
}
635653
}
636654
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
using System.Text;
5+
using System.Threading.Tasks;
6+
7+
namespace DigitalLearningSolutions.Data.Models.CompetencyAssessments
8+
{
9+
public class Competency
10+
{
11+
public int StructureId { get; set; }
12+
public int CompetencyID { get; set; }
13+
public string? FrameworkName { get; set; }
14+
public string? GroupName { get; set; }
15+
public string? CompetencyName { get; set; }
16+
public string? CompetencyDescription { get; set; }
17+
public bool Optional { get; set; }
18+
}
19+
}

DigitalLearningSolutions.Web/Controllers/CompetencyAssessmentsController/CompetencyAssessments.cs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -481,5 +481,23 @@ public IActionResult RemoveFramework(ConfirmRemoveFrameworkSourceViewModel model
481481
competencyAssessmentService.RemoveSelfAssessmentFramework(model.CompetencyAssessmentId, model.FrameworkId, adminId);
482482
return RedirectToAction("SelectFrameworkSources", new { model.CompetencyAssessmentId, actionName = "Summary" });
483483
}
484+
[Route("/CompetencyAssessments/{competencyAssessmentId}/Competencies")]
485+
public IActionResult SelectCompetencies(int competencyAssessmentId)
486+
{
487+
var adminId = GetAdminID();
488+
var competencyAssessmentBase = competencyAssessmentService.GetCompetencyAssessmentBaseById(competencyAssessmentId, adminId);
489+
if (competencyAssessmentBase == null)
490+
{
491+
logger.LogWarning($"Failed to load Competencies page for competencyAssessmentId: {competencyAssessmentId} adminId: {adminId}");
492+
return StatusCode(500);
493+
}
494+
if (competencyAssessmentBase.UserRole < 2)
495+
{
496+
return StatusCode(403);
497+
}
498+
var competencies = competencyAssessmentService.GetCompetenciesForCompetencyAssessment(competencyAssessmentId);
499+
var model = new SelectCompetenciesViewModel(competencyAssessmentBase, competencies);
500+
return View(model);
501+
}
484502
}
485503
}

DigitalLearningSolutions.Web/Services/CompetencyAssessmentService.cs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ public interface ICompetencyAssessmentService
2727
int[] GetLinkedFrameworkIds(int assessmentId);
2828
int? GetPrimaryLinkedFrameworkId(int assessmentId);
2929

30+
IEnumerable<Competency> GetCompetenciesForCompetencyAssessment(int competencyAssessmentId);
31+
3032
bool RemoveSelfAssessmentFramework(int assessmentId, int frameworkId, int adminId);
3133

3234
//UPDATE DATA
@@ -51,7 +53,6 @@ public interface ICompetencyAssessmentService
5153

5254
//DELETE DATA
5355
bool RemoveFrameworkCompetenciesFromAssessment(int competencyAssessmentId, int frameworkId);
54-
5556
}
5657
public class CompetencyAssessmentService : ICompetencyAssessmentService
5758
{
@@ -218,5 +219,10 @@ public bool UpdateRoleRequirementsTaskStatus(int assessmentId, bool taskStatus,
218219
{
219220
return competencyAssessmentDataService.UpdateRoleRequirementsTaskStatus(assessmentId, taskStatus, previousStatus);
220221
}
222+
223+
public IEnumerable<Competency> GetCompetenciesForCompetencyAssessment(int competencyAssessmentId)
224+
{
225+
return competencyAssessmentDataService.GetCompetenciesForCompetencyAssessment(competencyAssessmentId);
226+
}
221227
}
222228
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
using DigitalLearningSolutions.Data.Models.CompetencyAssessments;
2+
using System.Collections.Generic;
3+
4+
namespace DigitalLearningSolutions.Web.ViewModels.CompetencyAssessments
5+
{
6+
public class SelectCompetenciesViewModel
7+
{
8+
public SelectCompetenciesViewModel() { }
9+
public SelectCompetenciesViewModel(CompetencyAssessmentBase competencyAssessmentBase, IEnumerable<Competency> competencies)
10+
{
11+
ID = competencyAssessmentBase.ID;
12+
CompetencyAssessmentName = competencyAssessmentBase.CompetencyAssessmentName;
13+
UserRole = competencyAssessmentBase.UserRole;
14+
Competencies = competencies;
15+
}
16+
public int ID { get; set; }
17+
public string CompetencyAssessmentName { get; set; }
18+
public int UserRole { get; set; }
19+
20+
public IEnumerable<Competency> Competencies;
21+
}
22+
}

0 commit comments

Comments
 (0)