From e3704bdfefe92201f7be6959bad709d10d89b409 Mon Sep 17 00:00:00 2001 From: Auldrin Possa Date: Thu, 24 Oct 2024 14:09:19 +0100 Subject: [PATCH] TD-4878-Retrieved supervisor list based on Category ID --- ...Alter_GetActivitiesForDelegateEnrolment.cs | 19 +++++++++ .../Properties/Resources.Designer.cs | 40 ++++++++++++++++++ .../Properties/Resources.resx | 6 +++ ...GetActivitiesForDelegateEnrolment_Down.sql | Bin 0 -> 8456 bytes ...r_GetActivitiesForDelegateEnrolment_Up.sql | Bin 0 -> 8564 bytes .../DataServices/SupervisorDataService.cs | 11 ++--- .../Models/Courses/AvailableCourse.cs | 1 + .../Delegate/Enrol/SessionEnrolDelegate.cs | 1 + .../Delegates/EnrolController.cs | 5 ++- .../Services/SupervisorService.cs | 6 +-- 10 files changed, 77 insertions(+), 12 deletions(-) create mode 100644 DigitalLearningSolutions.Data.Migrations/202410231405_Alter_GetActivitiesForDelegateEnrolment.cs create mode 100644 DigitalLearningSolutions.Data.Migrations/Scripts/TD-4878-Alter_GetActivitiesForDelegateEnrolment_Down.sql create mode 100644 DigitalLearningSolutions.Data.Migrations/Scripts/TD-4878-Alter_GetActivitiesForDelegateEnrolment_Up.sql 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 0000000000000000000000000000000000000000..b1711f67e614d7e123e57156b9d1514d75367761 GIT binary patch literal 8456 zcmcgxYfl?j5S_17>VMd8byC73rBy{s6@%@>ZDJA(NvkS~h%v;iF_sNU`SWehx#MB( zUhl3AG}Q`weIIk@apraT=kIlS7(JQn%X|4l`qGn2*_I4X7jG9b!Ptqs#Pw-2KY6=*i>49N(1jh{GG`$X8O{UQJ^`LbNm`%>}@zz zPwruEAY+VX(wOZaSC8?m%cgAL^D#aj%N9mAb39#)?&B9%J;fWp;~lTCZXbJ_;N%^4Ht^QL?=~cBEM}<|x`oCdymdLAJe zey148us=- zZip4s9?yO!uYtJ?`^FfdXOJ^mffApW5(JMzlV{Ld&JjI9D(FzEB5v^fP;iFvAUh0P` z(L4{17V~au%ko|x7v#a{*Ai|TuuL~(iq1^p9;mG0y)5<+BdegN>pYwGqfzdj;8AP6 z4w{}q!;HYbH$|(@)Zrmx*mHnWJnGrWHE>6K(Qn_#GkkY$_$lYR14^`ECO^tg`1}e_ z2FY#zF{Ca&*LQv$_R&h*p9z1f9+o+mxKgf{Ig3&?~h7)P$L^79WN zGkt|?H*TmAVLfR03aDY8>_XRP7#rghVqX0s-NSXvfT!ST8aUynd4_Xis}8W5S&tMo ztEenx^A?$i*ci2nUe$CP)Z){Ld!DS79+6A*_fSWa>xAcP&L<+D0U1;1dVp{0z% zZGA>F4)YRyB0uif_wgbw(#%xEOYA-Q_1XdC`72+2J@MxX- zGioERn~EbwamI40tdFW94!cUrVa2rasHs{*$&2`}<{+*DimAIatOl$`T`kHYX?4yhGGDb5+54eWF(0V|VMCzE_fsd_y@@}Qp$6Ri z3Jb8F>(0gMcz3a$Rbt2O;vM87mbHqmMa-%-CP{p<+hJZ)E_+;unr0p#M)2`fRW@^7 z$F~8h9@Yg-yBS)Zv-#ShDsKKC(VMY? zH3d7;P5f=$!CK{!)vExj_nXk%0qS89a~7{LO}T$LhtzZPDxwB!3V^ zXUiPyh1-Y#)DG`0o)@gi_mo|%Tf-hkGV2z~G7eWUn``7CmSW$@&rrKnecT>2%9H2) zRqqATaZ>jlq&yOEolm=@xOqa{{N3KV9Cf3=+9ZK9EnZ`7t zU*O)MiMoRK6n@KW{2Hyai^^-UtRHecSN9|7ILN3(`_+sFOD#eyuhI?DkXnQ5P@+@zct7Vi5U z zl&5GtLMC8`sM?|~(m0u4aT+qfIo73=n45d>AN?;3rTY}_w|KY8TCf4jmG#G_?XtLO z_Gi_=J8a%%&-a_v@oSh$LQvDcX99VthUTdOUNS*Z z^py6zeKkHbBJ|p6>ZP1n!~aVhVO3n@^M&qpIm(dZ_`Y2n_sW`xS8Xy!orl|e{a;sA zFJl>+zU5MtMGN|rR-b8gO+;%1O0$|qr`y%#M6U4=*X!}PTJ068YUi7$@IUeVpX09l UhELAtdy2Gv&|81fu>bS_3kJ&2*Z=?k literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..59f5f1b3ecd11a32c25450cde5543bba0c09dcec GIT binary patch literal 8564 zcmcgyYj0CW5S_27)cBu2IQS^yUn{HZKja_ZZe+fi;K&Vq^@83LJ?jBH}Q7dxw!BkgyNz5D%3c1-ZF< zijWH5bBt72wGY0;VHNh|JEb_r-xzZvjOSQ9gxB+Zw;|&UlAQv7Lp)J))xr?F9riy9 z7TUqw2o$s)_kJTUfw>CnCKzF4P%?Uf8Xq8%l)K7l8gh&r)G7n4JBQ3%L#{_yNn24L zQjCL+N72r-r|vfid`9vCBgTDzHI(o;aQJ|zbcB3f6t)mWj1NY_Q@roWc8HceJa;hm z=`#g2Te(30L9i4ffOwj~4paOwuc*gpH?xvasqfXBX4N#mksIfAulvwR^AyLJ1?VGk z?#_L4-1J?JIeN&)$VRWx0FcL?2f2qx^*T zukfm%xvk%a*7f`P%CEyZdWq{R;diyeGW!x&D)lmZQLDDxzz)>4g3ipv(|`+;$Sqdh z{{?hrtdMs7f*TPwfQ8S28rI1^Y<-Ne33egoH7@csq+dY8Aa|=`Og%yA$`^Svx%#bs)@yiO9Uen3R+jPHf7g*e=SA7`?C}75X%}FK^xRg7&oUcp zq-wSG8Lc?1ON@zh+_CTDl!BCTG%QvoRz6~cQImEY>M#1hGUC-fa|`7B>+DdLRZkzO zZOYUi<~7}{bs44GFPBo|>}r}D^`ZqlFTFtQOn|)stZOwc&0J2AV&GB=PT_;RWypSi8$8w|Da@;nriedLBG!K;kvkK-`~CV7*? zbJ_tgsA-T&an^8~ zHREBq-iY2MGV|Vu=WUJR((D#AzY%3;s~kMPcd?e%;a$t)8k+PR+y~tn)@ZLre3b1% zDpqsN9Hfn7C!HaernBcZEXti1h5ET$R#6n7;Z^cB2Y@tbjz*LdY8ztoDQGo0JG`3#lQ zd5>e~)-+1khva>$pDEm5UPlzyPD5nGRbw?ft7yhlKlm!**0MRh=`+{q@eF5+@w?2q z$9gjT%&n61EZZjT#nV-Ks#)|vYQOUO_?)8_P5JA5Y}b5Vt($79_dOa_=^3GmEVKiB z@K$LJ+4c}O8mE`kuv_yApm~|TZK_Py^LC8(>-Y6UPx%gqI9D6d^4$y-8!(mnP^m z=YNbB%iQbZ!ffkU*n?);J!uxot!yjYUwiZJ>8g9@oEQD4@!yWnX?tlDa%K&`*f@g9 zGNk_0m99ex7mnVmWo7S@iD$JW>&!{`H9>!CYdV)$O=0A?PKK2HlM$nxWZp*;ub-~R sUP(Ic73|pu|7YliT}F28{MDboZ$6OU=JV-2snv2@rN1!noBdD0e^R^Y6#xJL literal 0 HcmV?d00001 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)