diff --git a/DigitalLearningSolutions.Data.Migrations/202410231405_Alter_GetActivitiesForDelegateEnrolment.cs b/DigitalLearningSolutions.Data.Migrations/202410231405_Alter_GetActivitiesForDelegateEnrolment.cs new file mode 100644 index 0000000000..13840992ba --- /dev/null +++ b/DigitalLearningSolutions.Data.Migrations/202410231405_Alter_GetActivitiesForDelegateEnrolment.cs @@ -0,0 +1,19 @@ + + +namespace DigitalLearningSolutions.Data.Migrations +{ + using FluentMigrator; + + [Migration(202410231405)] + public class Alter_GetActivitiesForDelegateEnrolment : Migration + { + public override void Up() + { + Execute.Sql(Properties.Resources.TD_4878_Alter_GetActivitiesForDelegateEnrolment_Up); + } + public override void Down() + { + Execute.Sql(Properties.Resources.TD_4878_Alter_GetActivitiesForDelegateEnrolment_Down); + } + } +} diff --git a/DigitalLearningSolutions.Data.Migrations/Properties/Resources.Designer.cs b/DigitalLearningSolutions.Data.Migrations/Properties/Resources.Designer.cs index 79d378b42e..de9e603cc4 100644 --- a/DigitalLearningSolutions.Data.Migrations/Properties/Resources.Designer.cs +++ b/DigitalLearningSolutions.Data.Migrations/Properties/Resources.Designer.cs @@ -2237,6 +2237,46 @@ internal static string TD_4634_Alter_GetCompletedCoursesForCandidate_UP { } } + /// + /// Looks up a localized string similar to /****** Object: StoredProcedure [dbo].[GetActivitiesForDelegateEnrolment] Script Date: 22/10/2024 16:55:08 ******/ + ///SET ANSI_NULLS ON + ///GO + /// + ///SET QUOTED_IDENTIFIER ON + ///GO + /// + ///-- ============================================= + ///-- Author: Kevin Whittaker + ///-- Create date: 24/01/2023 + ///-- Description: Returns active available for delegate enrolment based on original GetActiveAvailableCustomisationsForCentreFiltered_V6 sproc but adjusted for user account refactor and filters properly for category. + ///-- ========= [rest of string was truncated]";. + /// + internal static string TD_4878_Alter_GetActivitiesForDelegateEnrolment_Down { + get { + return ResourceManager.GetString("TD_4878_Alter_GetActivitiesForDelegateEnrolment_Down", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to /****** Object: StoredProcedure [dbo].[GetActivitiesForDelegateEnrolment] Script Date: 22/10/2024 16:55:08 ******/ + ///SET ANSI_NULLS ON + ///GO + /// + ///SET QUOTED_IDENTIFIER ON + ///GO + /// + ///-- ============================================= + ///-- Author: Kevin Whittaker + ///-- Create date: 24/01/2023 + ///-- Description: Returns active available for delegate enrolment based on original GetActiveAvailableCustomisationsForCentreFiltered_V6 sproc but adjusted for user account refactor and filters properly for category. + ///-- ========= [rest of string was truncated]";. + /// + internal static string TD_4878_Alter_GetActivitiesForDelegateEnrolment_Up { + get { + return ResourceManager.GetString("TD_4878_Alter_GetActivitiesForDelegateEnrolment_Up", resourceCulture); + } + } + /// /// Looks up a localized string similar to /****** Object: StoredProcedure [dbo].[GetActiveAvailableCustomisationsForCentreFiltered_V6] Script Date: 29/09/2022 19:11:04 ******/ ///SET ANSI_NULLS ON diff --git a/DigitalLearningSolutions.Data.Migrations/Properties/Resources.resx b/DigitalLearningSolutions.Data.Migrations/Properties/Resources.resx index cf95b25f1e..e18fe9787e 100644 --- a/DigitalLearningSolutions.Data.Migrations/Properties/Resources.resx +++ b/DigitalLearningSolutions.Data.Migrations/Properties/Resources.resx @@ -448,4 +448,10 @@ ..\Scripts\TD_4634_Alter_GetCompletedCoursesForCandidate_UP.sql;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-16 + + ..\Scripts\TD-4878-Alter_GetActivitiesForDelegateEnrolment_Down.sql;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-16 + + + ..\Scripts\TD-4878-Alter_GetActivitiesForDelegateEnrolment_Up.sql;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-16 + \ No newline at end of file diff --git a/DigitalLearningSolutions.Data.Migrations/Scripts/TD-4878-Alter_GetActivitiesForDelegateEnrolment_Down.sql b/DigitalLearningSolutions.Data.Migrations/Scripts/TD-4878-Alter_GetActivitiesForDelegateEnrolment_Down.sql new file mode 100644 index 0000000000..b1711f67e6 Binary files /dev/null and b/DigitalLearningSolutions.Data.Migrations/Scripts/TD-4878-Alter_GetActivitiesForDelegateEnrolment_Down.sql differ diff --git a/DigitalLearningSolutions.Data.Migrations/Scripts/TD-4878-Alter_GetActivitiesForDelegateEnrolment_Up.sql b/DigitalLearningSolutions.Data.Migrations/Scripts/TD-4878-Alter_GetActivitiesForDelegateEnrolment_Up.sql new file mode 100644 index 0000000000..59f5f1b3ec Binary files /dev/null and b/DigitalLearningSolutions.Data.Migrations/Scripts/TD-4878-Alter_GetActivitiesForDelegateEnrolment_Up.sql differ diff --git a/DigitalLearningSolutions.Data/DataServices/SupervisorDataService.cs b/DigitalLearningSolutions.Data/DataServices/SupervisorDataService.cs index da369d6b42..8b88a05642 100644 --- a/DigitalLearningSolutions.Data/DataServices/SupervisorDataService.cs +++ b/DigitalLearningSolutions.Data/DataServices/SupervisorDataService.cs @@ -35,7 +35,7 @@ public interface ISupervisorDataService CandidateAssessmentSupervisor? GetCandidateAssessmentSupervisor(int candidateAssessmentID, int supervisorDelegateId, int selfAssessmentSupervisorRoleId); SelfAssessmentResultSummary? GetSelfAssessmentResultSummary(int candidateAssessmentId, int supervisorDelegateId); IEnumerable GetCandidateAssessmentSupervisorVerificationSummaries(int candidateAssessmentId); - IEnumerable GetSupervisorForEnrolDelegate(int CustomisationID, int CentreID); + IEnumerable GetSupervisorForEnrolDelegate(int CentreID, int CategoryID); //UPDATE DATA bool ConfirmSupervisorDelegateById(int supervisorDelegateId, int candidateId, int adminId); bool RemoveSupervisorDelegateById(int supervisorDelegateId, int delegateUserId, int adminId); @@ -380,7 +380,7 @@ LEFT JOIN UserCentreDetails ucd } } - public IEnumerable GetSupervisorForEnrolDelegate(int CustomisationID, int CentreID) + public IEnumerable GetSupervisorForEnrolDelegate(int CentreID, int CategoryID) { return connection.Query( $@"SELECT aa.ID AS AdminID, @@ -391,14 +391,11 @@ FROM AdminAccounts AS aa INNER JOIN Centres AS c ON aa.CentreID = c.CentreID LEFT OUTER JOIN UserCentreDetails AS ucd ON u.ID = ucd.UserID AND c.CentreID = ucd.CentreID WHERE (aa.IsSupervisor = 1) AND (c.CentreID = @CentreID) AND - (ISNULL(aa.CategoryID, 0) = 0 OR CategoryID = - (SELECT aa.CategoryID FROM Applications AS a INNER JOIN - Customisations AS c ON a.ApplicationID = c.ApplicationID - WHERE (c.CustomisationID = @CustomisationID))) AND + (ISNULL(aa.CategoryID, 0) = 0 OR aa.CategoryID = @CategoryID) AND (aa.Active = 1) GROUP BY aa.ID, u.LastName, u.FirstName, COALESCE(ucd.Email, u.PrimaryEmail), CentreName ORDER BY u.FirstName, u.LastName", - new { CentreID, CustomisationID }); + new { CentreID, CategoryID }); } public bool ConfirmSupervisorDelegateById(int supervisorDelegateId, int delegateUserId, int adminId) diff --git a/DigitalLearningSolutions.Data/Models/Courses/AvailableCourse.cs b/DigitalLearningSolutions.Data/Models/Courses/AvailableCourse.cs index e3fb915ad0..94ce609017 100644 --- a/DigitalLearningSolutions.Data/Models/Courses/AvailableCourse.cs +++ b/DigitalLearningSolutions.Data/Models/Courses/AvailableCourse.cs @@ -17,6 +17,7 @@ public string? Topic } public int DelegateStatus { get; set; } public bool HideInLearnerPortal { get; set; } + public int CategoryID { get; set; } private string? category; private string? topic; diff --git a/DigitalLearningSolutions.Data/Models/SessionData/Tracking/Delegate/Enrol/SessionEnrolDelegate.cs b/DigitalLearningSolutions.Data/Models/SessionData/Tracking/Delegate/Enrol/SessionEnrolDelegate.cs index c63ec525d8..6f53abf300 100644 --- a/DigitalLearningSolutions.Data/Models/SessionData/Tracking/Delegate/Enrol/SessionEnrolDelegate.cs +++ b/DigitalLearningSolutions.Data/Models/SessionData/Tracking/Delegate/Enrol/SessionEnrolDelegate.cs @@ -16,5 +16,6 @@ public class SessionEnrolDelegate public string? SupervisorEmail { get; set; } public bool IsSelfAssessment { get; set; } public int AssessmentVersion { get; set; } + public int? AssessmentCategoryID { get; set; } } } diff --git a/DigitalLearningSolutions.Web/Controllers/TrackingSystem/Delegates/EnrolController.cs b/DigitalLearningSolutions.Web/Controllers/TrackingSystem/Delegates/EnrolController.cs index 9307e300b5..146aebe824 100644 --- a/DigitalLearningSolutions.Web/Controllers/TrackingSystem/Delegates/EnrolController.cs +++ b/DigitalLearningSolutions.Web/Controllers/TrackingSystem/Delegates/EnrolController.cs @@ -122,6 +122,7 @@ public IActionResult Index(int delegateId, EnrolCurrentLearningViewModel enrolCu sessionEnrol.IsSelfAssessment = selectedCourse.IsSelfAssessment; sessionEnrol.AssessmentVersion = selectedCourse.CurrentVersion.GetValueOrDefault(); sessionEnrol.AssessmentName = selectedCourse.Name; + sessionEnrol.AssessmentCategoryID = selectedCourse.CategoryID; multiPageFormService.SetMultiPageFormData( sessionEnrol, @@ -201,7 +202,7 @@ public IActionResult EnrolDelegateSupervisor(int delegateId) var sessionEnrol = multiPageFormService.GetMultiPageFormData( MultiPageFormDataFeature.EnrolDelegateInActivity, TempData).GetAwaiter().GetResult(); - var supervisorList = supervisorService.GetSupervisorForEnrolDelegate(sessionEnrol.AssessmentID.GetValueOrDefault(), centreId.Value); + var supervisorList = supervisorService.GetSupervisorForEnrolDelegate(centreId.Value, sessionEnrol.AssessmentCategoryID.Value); if (!sessionEnrol.IsSelfAssessment) { var model = new EnrolSupervisorViewModel( @@ -233,7 +234,7 @@ public IActionResult EnrolDelegateSupervisor(int delegateId, EnrolSupervisorView { var centreId = GetCentreId(); var sessionEnrol = multiPageFormService.GetMultiPageFormData(MultiPageFormDataFeature.EnrolDelegateInActivity, TempData).GetAwaiter().GetResult(); - var supervisorList = supervisorService.GetSupervisorForEnrolDelegate(sessionEnrol.AssessmentID.Value, centreId.Value); + var supervisorList = supervisorService.GetSupervisorForEnrolDelegate(centreId.Value, sessionEnrol.AssessmentCategoryID.Value); var roles = supervisorService.GetSupervisorRolesBySelfAssessmentIdForSupervisor(sessionEnrol.AssessmentID.GetValueOrDefault()).ToArray(); if (!ModelState.IsValid) diff --git a/DigitalLearningSolutions.Web/Services/SupervisorService.cs b/DigitalLearningSolutions.Web/Services/SupervisorService.cs index 7e75f19316..599881caff 100644 --- a/DigitalLearningSolutions.Web/Services/SupervisorService.cs +++ b/DigitalLearningSolutions.Web/Services/SupervisorService.cs @@ -32,7 +32,7 @@ public interface ISupervisorService CandidateAssessmentSupervisor? GetCandidateAssessmentSupervisor(int candidateAssessmentID, int supervisorDelegateId, int selfAssessmentSupervisorRoleId); SelfAssessmentResultSummary? GetSelfAssessmentResultSummary(int candidateAssessmentId, int supervisorDelegateId); IEnumerable GetCandidateAssessmentSupervisorVerificationSummaries(int candidateAssessmentId); - IEnumerable GetSupervisorForEnrolDelegate(int CustomisationID, int CentreID); + IEnumerable GetSupervisorForEnrolDelegate(int CentreID, int CategoryID); //UPDATE DATA bool ConfirmSupervisorDelegateById(int supervisorDelegateId, int candidateId, int adminId); bool RemoveSupervisorDelegateById(int supervisorDelegateId, int delegateUserId, int adminId); @@ -172,9 +172,9 @@ public IEnumerable GetSupervisorDelegateDetailsForAdmi return supervisorDataService.GetSupervisorDelegateDetailsForAdminId(adminId); } - public IEnumerable GetSupervisorForEnrolDelegate(int CustomisationID, int CentreID) + public IEnumerable GetSupervisorForEnrolDelegate(int CentreID, int CategoryID) { - return supervisorDataService.GetSupervisorForEnrolDelegate(CustomisationID, CentreID); + return supervisorDataService.GetSupervisorForEnrolDelegate(CentreID, CategoryID); } public SelfAssessmentSupervisorRole? GetSupervisorRoleById(int id)