Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@ public interface ICompetencyAssessmentDataService

IEnumerable<NRPProfessionalGroups> GetNRPProfessionalGroups();

CompetencyAssessmentTaskStatus GetOrInsertAndReturnAssessmentTaskStatus(int assessmentId, bool frameworkBased);

//UPDATE DATA
bool UpdateCompetencyAssessmentName(int competencyAssessmentId, int adminId, string competencyAssessmentName);

Expand All @@ -34,6 +36,7 @@ bool UpdateCompetencyAssessmentBranding(
int categoryId,
int adminId
);
bool UpdateCompetencyAssessmentVocabulary(int competencyAssessmentId, int adminId, string vocabulary);
bool UpdateCompetencyAssessmentDescription(int competencyAssessmentId, int adminId, string competencyAssessmentDescription);
//INSERT DATA
int InsertCompetencyAssessment(int adminId, int centreId, string competencyAssessmentName);
Expand All @@ -49,7 +52,7 @@ public class CompetencyAssessmentDataService : ICompetencyAssessmentDataService
sa.NRPProfessionalGroupID,
sa.NRPSubGroupID,
sa.NRPRoleID,
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";
sa.PublishStatusID, sa.Vocabulary, CASE WHEN sa.CreatedByAdminID = @adminId THEN 3 WHEN sac.CanModify = 1 THEN 2 WHEN sac.CanModify = 0 THEN 1 ELSE 0 END AS UserRole";

private const string SelfAssessmentFields =
@", sa.CreatedDate,
Expand Down Expand Up @@ -265,7 +268,7 @@ int adminId
if (numberOfAffectedRows < 1)
{
logger.LogWarning(
"Not updating competency assessment as db update failed. " +
"Not updating competency assessment branding as db update failed. " +
$"frameworkId: {competencyAssessmentId}, brandId: {brandId}, categoryId: {categoryId}, AdminId: {adminId}"
);
return false;
Expand All @@ -284,14 +287,32 @@ public bool UpdateCompetencyAssessmentDescription(int competencyAssessmentId, in
if (numberOfAffectedRows < 1)
{
logger.LogWarning(
"Not updating competency assessment as db update failed. " +
"Not updating competency assessment Description as db update failed. " +
$"frameworkId: {competencyAssessmentId}, competencyAssessmentDescription: {competencyAssessmentDescription}, AdminId: {adminId}"
);
return false;
}
return true;
}

public bool UpdateCompetencyAssessmentVocabulary(int competencyAssessmentId, int adminId, string vocabulary)
{
var numberOfAffectedRows = connection.Execute(
@"UPDATE SelfAssessments SET Vocabulary = @vocabulary, UpdatedByAdminID = @adminId
WHERE ID = @competencyAssessmentId",
new { adminId, competencyAssessmentId, vocabulary }
);
if (numberOfAffectedRows < 1)
{
logger.LogWarning(
"Not updating competency assessment vocabulary as db update failed. " +
$"frameworkId: {competencyAssessmentId}, vocabulary: {vocabulary}, AdminId: {adminId}"
);
return false;
}
return true;
}

public bool InsertSelfAssessmentFramework(int adminId, int selfAssessmentId, int frameworkId)
{
var numberOfAffectedRows = connection.Execute(
Expand All @@ -312,5 +333,21 @@ WHERE NOT EXISTS (SELECT 1 FROM SelfAssessmentFrameworks WHERE SelfAssessmentId

return true;
}

public CompetencyAssessmentTaskStatus GetOrInsertAndReturnAssessmentTaskStatus(int assessmentId, bool frameworkBased)
{
bool? frameworkItemBool = frameworkBased ? false : null;
connection.Execute(
@"INSERT INTO SelfAssessmentTaskStatus (SelfAssessmentId, IntroductoryTextTaskStatus, BrandingTaskStatus, VocabularyTaskStatus, FrameworkLinksTaskStatus)
SELECT @assessmentId, @frameworkItemBool, @frameworkItemBool, @frameworkItemBool, @frameworkItemBool
WHERE NOT EXISTS (SELECT 1 FROM SelfAssessmentTaskStatus WHERE SelfAssessmentId = @assessmentId)", new { assessmentId, frameworkItemBool });
return connection.Query<CompetencyAssessmentTaskStatus>(
$@"SELECT *
FROM SelfAssessmentTaskStatus
WHERE (SelfAssessmentId = @assessmentId)",
new { assessmentId }
).Single();

}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -285,7 +285,7 @@ public class FrameworkDataService : IFrameworkDataService
fwr.ID AS FrameworkReviewID";

private const string BrandedFrameworkFields =
@", FW.Description, (SELECT BrandName
@", FW.Description, FW.FrameworkConfig AS Vocabulary, (SELECT BrandName
FROM Brands
WHERE (BrandID = FW.BrandID)) AS Brand,
(SELECT CategoryName
Expand Down Expand Up @@ -2193,7 +2193,7 @@ public IEnumerable<DashboardToDoItem> GetDashboardToDoItems(int adminId)
return connection.Query<DashboardToDoItem>(
@"SELECT
FW.ID AS FrameworkID,
0 AS CompetencyAssessmentID,
0 AS SelfAssessmentID,
FW.FrameworkName AS ItemName,
AU.Forename + ' ' + AU.Surname + (CASE WHEN AU.Active = 1 THEN '' ELSE ' (Inactive)' END) AS RequestorName,
FWR.SignOffRequired,
Expand All @@ -2205,8 +2205,8 @@ FROM FrameworkReviews AS FWR
WHERE (FWC.AdminID = @adminId) AND (FWR.ReviewComplete IS NULL) AND (FWR.Archived IS NULL)
UNION ALL
SELECT
0 AS SelfAssessmentID,
RP.ID AS SelfAssessmentID,
0 AS FrameworkID,
RP.ID AS CompetencyAssessmentID,
RP.Name AS ItemName,
AU.Forename + ' ' + AU.Surname + (CASE WHEN AU.Active = 1 THEN '' ELSE ' (Inactive)' END) AS RequestorName,
RPR.SignOffRequired,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
namespace DigitalLearningSolutions.Data.Models.CompetencyAssessments
{
using System;
using System.ComponentModel.DataAnnotations;
public class CompetencyAssessment : CompetencyAssessmentBase
{
public DateTime CreatedDate { get; set; }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ public class CompetencyAssessmentBase
public int? NRPRoleID { get; set; }
public int PublishStatusID { get; set; }
public int UserRole { get; set; }
public string? Vocabulary { get; set; }

}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
namespace DigitalLearningSolutions.Data.Models.CompetencyAssessments
{
public class CompetencyAssessmentTaskStatus
{
public int Id { get; set; }
public bool? IntroductoryTextTaskStatus { get; set; }
public bool? BrandingTaskStatus { get; set; }
public bool? VocabularyTaskStatus { get; set; }
public bool? WorkingGroupTaskStatus { get; set; }
public bool? NationalRoleProfileTaskStatus { get; set; }
public bool? FrameworkLinksTaskStatus { get; set; }
public bool? SelectCompetenciesTaskStatus { get; set; }
public bool? OptionalCompetenciesTaskStatus { get; set; }
public bool? RoleRequirementsTaskStatus { get; set; }
public bool? SupervisorRolesTaskStatus { get; set; }
public bool? SelfAssessmentOptionsTaskStatus { get; set; }
public bool? ReviewTaskStatus { get; set; }

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
public class BrandedFramework : BaseFramework
{
public string? Description { get; set; }
public string? Vocabulary { get; set; }
public string? Brand
{
get => brand;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -114,10 +114,10 @@ public IActionResult CompetencyAssessmentName(string actionName, int competencyA
return StatusCode(403);
}
}
else if( frameworkId != null )
else if (frameworkId != null)
{
var framework = frameworkService.GetBaseFrameworkByFrameworkId((int)frameworkId, adminId);
if ( framework != null )
if (framework != null)
{
competencyAssessmentBase.CompetencyAssessmentName = framework.FrameworkName;
}
Expand Down Expand Up @@ -151,20 +151,39 @@ public IActionResult SaveProfileName(CompetencyAssessmentBase competencyAssessme
ModelState.AddModelError(nameof(CompetencyAssessmentBase.CompetencyAssessmentName), "Another competency assessment exists with that name. Please choose a different name.");
return View("Name", competencyAssessmentBase);
}
competencyAssessmentService.InsertCompetencyAssessment(adminId, userCentreId, competencyAssessmentBase.CompetencyAssessmentName, frameworkId);
competencyAssessmentId = competencyAssessmentService.InsertCompetencyAssessment(adminId, userCentreId, competencyAssessmentBase.CompetencyAssessmentName, frameworkId);
}
else
{
{

var isUpdated = competencyAssessmentService.UpdateCompetencyAssessmentName(competencyAssessmentBase.ID, adminId, competencyAssessmentBase.CompetencyAssessmentName);
if (!isUpdated)
{
ModelState.AddModelError(nameof(CompetencyAssessmentBase.CompetencyAssessmentName), "Another competency assessment exists with that name. Please choose a different name.");
return View("Name", competencyAssessmentBase);
}
}
return RedirectToAction("ManageCompetencyAssessment", new { competencyAssessmentId });
return RedirectToAction("ManageCompetencyAssessment", new { competencyAssessmentId, frameworkId });
}
}
[Route("/CompetencyAssessments/Framework/{frameworkId}/{competencyAssessmentId}/Manage")]
[Route("/CompetencyAssessments/{competencyAssessmentId}/Manage")]
public IActionResult ManageCompetencyAssessment(int competencyAssessmentId, int? frameworkId = null)
{
var adminId = GetAdminID();
var competencyAssessmentBase = competencyAssessmentService.GetCompetencyAssessmentBaseById(competencyAssessmentId, adminId);
if (competencyAssessmentBase == null)
{
logger.LogWarning($"Failed to load name page for competencyAssessmentId: {competencyAssessmentId} adminId: {adminId}");
return StatusCode(500);
}
if (competencyAssessmentBase.UserRole < 2)
{
return StatusCode(403);
}
var competencyAssessmentTaskStatus = competencyAssessmentService.GetCompetencyAssessmentTaskStatus(competencyAssessmentId, frameworkId);
var model = new ManageCompetencyAssessmentViewModel(competencyAssessmentBase, competencyAssessmentTaskStatus);
return View("ManageCompetencyAssessment", model);
}

[Route("/CompetencyAssessments/ProfessionalGroup/{actionName}/{competencyAssessmentId}")]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@ public interface ICompetencyAssessmentService

IEnumerable<NRPProfessionalGroups> GetNRPProfessionalGroups();

CompetencyAssessmentTaskStatus GetCompetencyAssessmentTaskStatus(int assessmentId, int? frameworkId);

//UPDATE DATA
bool UpdateCompetencyAssessmentName(int competencyAssessmentId, int adminId, string competencyAssessmentName);

Expand Down Expand Up @@ -69,6 +71,7 @@ public int InsertCompetencyAssessment(int adminId, int centreId, string competen
competencyAssessmentDataService.InsertSelfAssessmentFramework(adminId, assessmentId, framework.ID);
competencyAssessmentDataService.UpdateCompetencyAssessmentDescription(adminId, assessmentId, framework.Description);
competencyAssessmentDataService.UpdateCompetencyAssessmentBranding(assessmentId, (int)framework.BrandID, (int)framework.CategoryID, adminId);
competencyAssessmentDataService.UpdateCompetencyAssessmentVocabulary(assessmentId, adminId, framework.Vocabulary);
}
}
return assessmentId;
Expand All @@ -83,5 +86,9 @@ public bool UpdateCompetencyAssessmentProfessionalGroup(int competencyAssessment
{
return competencyAssessmentDataService.UpdateCompetencyAssessmentProfessionalGroup(competencyAssessmentId, adminId, nrpProfessionalGroupID);
}
public CompetencyAssessmentTaskStatus GetCompetencyAssessmentTaskStatus(int assessmentId, int? frameworkId)
{
return competencyAssessmentDataService.GetOrInsertAndReturnAssessmentTaskStatus(assessmentId, (frameworkId != null));
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -175,7 +175,7 @@ CompetencyTableRow competencyRow
int? frameworkCompetencyGroupId = null;
if (competencyRow.CompetencyGroup != null)
{
int newCompetencyGroupId = frameworkService.InsertCompetencyGroup(competencyRow.CompetencyGroup, competencyRow.GroupDescription, adminUserId, frameworkId);
var newCompetencyGroupId = frameworkService.InsertCompetencyGroup(competencyRow.CompetencyGroup, competencyRow.GroupDescription, adminUserId);
if (newCompetencyGroupId > 0)
{
frameworkCompetencyGroupId = frameworkService.InsertFrameworkCompetencyGroup(newCompetencyGroupId, frameworkId, adminUserId);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
using DigitalLearningSolutions.Data.Models.CompetencyAssessments;

namespace DigitalLearningSolutions.Web.ViewModels.CompetencyAssessments
{
public class ManageCompetencyAssessmentViewModel
{
public ManageCompetencyAssessmentViewModel(
CompetencyAssessmentBase competencyAssessmentBase,
CompetencyAssessmentTaskStatus competencyAssessmentTaskStatus
)
{
CompetencyAssessmentName = competencyAssessmentBase.CompetencyAssessmentName;
PublishStatusID = competencyAssessmentBase.PublishStatusID;
UserRole = competencyAssessmentBase.UserRole;
CompetencyAssessmentTaskStatus = competencyAssessmentTaskStatus;
Vocabulary = competencyAssessmentBase.Vocabulary;
}
public string CompetencyAssessmentName { get; set; }
public int PublishStatusID { get; set; }
public int UserRole { get; set; }
public string? Vocabulary { get; set; }
public CompetencyAssessmentTaskStatus CompetencyAssessmentTaskStatus { get; set; }
}
}
Loading
Loading