Skip to content

Commit 6cb4689

Browse files
authored
Merge pull request #3248 from TechnologyEnhancedLearning/DLS-Release-v1.2.1
Dls release v1.2.1
2 parents d660db4 + 030f828 commit 6cb4689

File tree

42 files changed

+643
-285
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+643
-285
lines changed
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
namespace DigitalLearningSolutions.Data.Migrations
2+
{
3+
using FluentMigrator;
4+
5+
[Migration(202503111500)]
6+
public class AddLastAccessedColumn : Migration
7+
{
8+
public override void Up()
9+
{
10+
Alter.Table("Users").AddColumn("LastAccessed").AsDateTime().Nullable();
11+
Alter.Table("DelegateAccounts").AddColumn("LastAccessed").AsDateTime().Nullable();
12+
Alter.Table("AdminAccounts").AddColumn("LastAccessed").AsDateTime().Nullable();
13+
14+
Execute.Sql("UPDATE u SET LastAccessed = (SELECT MAX(s.LoginTime) FROM DelegateAccounts da JOIN Sessions s ON da.ID = s.CandidateId WHERE da.UserID = u.ID) FROM users u;");
15+
Execute.Sql("UPDATE da SET LastAccessed = (SELECT MAX(s.LoginTime) FROM Sessions s WHERE s.CandidateId = da.ID) FROM DelegateAccounts da;");
16+
Execute.Sql("UPDATE da SET LastAccessed = (SELECT ca.LastAccessed FROM CandidateAssessments ca WHERE ca.ID = da.ID) FROM DelegateAccounts da where da.LastAccessed IS NULL;");
17+
Execute.Sql("UPDATE AA SET LastAccessed = (SELECT MAX(AdS.LoginTime) FROM AdminSessions AdS WHERE AdS.AdminID = AA.ID) FROM AdminAccounts AA;");
18+
}
19+
public override void Down()
20+
{
21+
Delete.Column("LastAccessed").FromTable("Users");
22+
Delete.Column("LastAccessed").FromTable("DelegateAccounts");
23+
Delete.Column("LastAccessed").FromTable("AdminAccounts");
24+
}
25+
}
26+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+

2+
3+
namespace DigitalLearningSolutions.Data.Migrations
4+
{
5+
using FluentMigrator;
6+
7+
[Migration(2025041161520)]
8+
public class Alter_SendExpiredTBCReminders_AppendCourseName : Migration
9+
{
10+
public override void Up()
11+
{
12+
Execute.Sql(Properties.Resources.TD_5514_Alter_SendExpiredTBCReminders_Up);
13+
}
14+
public override void Down()
15+
{
16+
Execute.Sql(Properties.Resources.TD_5514_Alter_SendExpiredTBCReminders_Down);
17+
}
18+
}
19+
}

DigitalLearningSolutions.Data.Migrations/Properties/Resources.Designer.cs

Lines changed: 44 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

DigitalLearningSolutions.Data.Migrations/Properties/Resources.resx

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -475,4 +475,10 @@
475475
<data name="TD_5412_Alter_SendExpiredTBCReminders_Up" type="System.Resources.ResXFileRef, System.Windows.Forms">
476476
<value>..\Scripts\TD-5412-Alter_SendExpiredTBCReminders_Up.sql;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-16</value>
477477
</data>
478+
<data name="TD_5514_Alter_SendExpiredTBCReminders_Down" type="System.Resources.ResXFileRef, System.Windows.Forms">
479+
<value>..\Scripts\TD-5514-Alter_SendExpiredTBCReminders_Down.sql;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-16</value>
480+
</data>
481+
<data name="TD_5514_Alter_SendExpiredTBCReminders_Up" type="System.Resources.ResXFileRef, System.Windows.Forms">
482+
<value>..\Scripts\TD-5514-Alter_SendExpiredTBCReminders_Up.sql;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-16</value>
483+
</data>
478484
</root>
Binary file not shown.
Binary file not shown.

DigitalLearningSolutions.Data/DataServices/FrameworkDataService.cs

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -277,13 +277,22 @@ public class FrameworkDataService : IFrameworkDataService
277277
OwnerAdminID,
278278
(SELECT Forename + ' ' + Surname + (CASE WHEN Active = 1 THEN '' ELSE ' (Inactive)' END) AS Expr1 FROM AdminUsers WHERE (AdminID = FW.OwnerAdminID)) AS Owner,
279279
BrandID,
280-
CategoryID,
280+
FW.CategoryID,
281281
TopicID,
282282
CreatedDate,
283283
PublishStatusID,
284284
UpdatedByAdminID,
285285
(SELECT Forename + ' ' + Surname + (CASE WHEN Active = 1 THEN '' ELSE ' (Inactive)' END) AS Expr1 FROM AdminUsers AS AdminUsers_1 WHERE (AdminID = FW.UpdatedByAdminID)) AS UpdatedBy,
286-
CASE WHEN FW.OwnerAdminID = @adminId THEN 3 WHEN fwc.CanModify = 1 THEN 2 WHEN fwc.CanModify = 0 THEN 1 ELSE 0 END AS UserRole,
286+
CASE
287+
WHEN (aa.UserID = (SELECT UserID FROM AdminAccounts WHERE ID = @adminId)) THEN 3
288+
WHEN (fwc.CanModify = 1) OR
289+
(SELECT COUNT(*)
290+
FROM FrameworkCollaborators fc
291+
JOIN AdminAccounts aa1 ON fc.AdminID = aa1.ID
292+
WHERE fc.FrameworkID = fw.ID
293+
AND fc.CanModify = 1 AND fc.IsDeleted = 0
294+
AND aa1.UserID = (SELECT aa2.UserID FROM AdminAccounts aa2 WHERE aa2.ID = 12842)) > 0 THEN 2
295+
WHEN fwc.CanModify = 0 THEN 1 ELSE 0 END AS UserRole,
287296
fwr.ID AS FrameworkReviewID";
288297

289298
private const string BrandedFrameworkFields =
@@ -304,9 +313,9 @@ FROM CourseTopics
304313
private const string FlagFields = @"fl.ID AS FlagId, fl.FrameworkId, fl.FlagName, fl.FlagGroup, fl.FlagTagClass";
305314

306315
private const string FrameworkTables =
307-
@"Frameworks AS FW LEFT OUTER JOIN
308-
FrameworkCollaborators AS fwc ON fwc.FrameworkID = FW.ID AND fwc.AdminID = @adminId AND COALESCE(IsDeleted, 0) = 0
309-
LEFT OUTER JOIN FrameworkReviews AS fwr ON fwc.ID = fwr.FrameworkCollaboratorID AND fwr.Archived IS NULL AND fwr.ReviewComplete IS NULL";
316+
@"Frameworks AS FW INNER JOIN AdminAccounts AS aa ON aa.ID = fw.OwnerAdminID
317+
LEFT OUTER JOIN FrameworkCollaborators AS fwc ON fwc.FrameworkID = FW.ID AND fwc.AdminID = @adminId AND COALESCE(IsDeleted, 0) = 0
318+
LEFT OUTER JOIN FrameworkReviews AS fwr ON fwc.ID = fwr.FrameworkCollaboratorID AND fwr.Archived IS NULL AND fwr.ReviewComplete IS NULL";
310319

311320
private const string AssessmentQuestionFields =
312321
@"SELECT AQ.ID, AQ.Question, AQ.MinValue, AQ.MaxValue, AQ.AssessmentQuestionInputTypeID, AQI.InputTypeName, AQ.AddedByAdminId, CASE WHEN AQ.AddedByAdminId = @adminId THEN 1 ELSE 0 END AS UserIsOwner, AQ.CommentsPrompt, AQ.CommentsHint";
@@ -707,7 +716,7 @@ FROM [FrameworkCompetencies]
707716
new { competencyId, frameworkCompetencyGroupID }
708717
);
709718
}
710-
if(addDefaultQuestions)
719+
if (addDefaultQuestions)
711720
{
712721
AddDefaultQuestionsToCompetency(competencyId, frameworkId);
713722
}
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
namespace DigitalLearningSolutions.Data.DataServices
2+
{
3+
using Dapper;
4+
using System.Data;
5+
6+
public interface ILoginDataService
7+
{
8+
void UpdateLastAccessedForUsersTable(int Id);
9+
10+
void UpdateLastAccessedForDelegatesAccountsTable(int Id);
11+
12+
void UpdateLastAccessedForAdminAccountsTable(int Id);
13+
}
14+
15+
public class LoginDataService : ILoginDataService
16+
{
17+
private readonly IDbConnection connection;
18+
19+
public LoginDataService(IDbConnection connection)
20+
{
21+
this.connection = connection;
22+
}
23+
24+
public void UpdateLastAccessedForUsersTable(int Id)
25+
{
26+
connection.Execute(
27+
@"UPDATE Users SET
28+
LastAccessed = GetUtcDate()
29+
WHERE ID = @Id",
30+
new
31+
{
32+
Id
33+
}
34+
);
35+
}
36+
37+
public void UpdateLastAccessedForDelegatesAccountsTable(int Id)
38+
{
39+
connection.Execute(
40+
@"UPDATE DelegateAccounts SET
41+
LastAccessed = GetUtcDate()
42+
WHERE ID = @Id",
43+
new
44+
{
45+
Id
46+
}
47+
);
48+
}
49+
50+
public void UpdateLastAccessedForAdminAccountsTable(int Id)
51+
{
52+
connection.Execute(
53+
@"UPDATE AdminAccounts SET
54+
LastAccessed = GetUtcDate()
55+
WHERE ID = @Id",
56+
new
57+
{
58+
Id
59+
}
60+
);
61+
}
62+
}
63+
}

DigitalLearningSolutions.Data/DataServices/UserDataService/AdminUserDataService.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,7 @@ FROM AdminAccounts AS aa
105105
aa.IsSupervisor,
106106
aa.IsTrainer,
107107
aa.CategoryID,
108+
aa.LastAccessed,
108109
CASE
109110
WHEN aa.CategoryID IS NULL THEN 'All'
110111
ELSE cc.CategoryName
@@ -369,7 +370,7 @@ public IEnumerable<AdminAccount> GetAdminAccountsByUserId(int userId)
369370
}
370371

371372
string BaseSelectQuery = $@"SELECT aa.ID, aa.UserID, aa.CentreID, aa.Active, aa.IsCentreAdmin, aa.IsReportsViewer, aa.IsSuperAdmin, aa.IsCentreManager,
372-
aa.IsContentManager, aa.IsContentCreator, aa.IsSupervisor, aa.IsTrainer, aa.CategoryID, aa.IsFrameworkDeveloper, aa.IsFrameworkContributor,aa.ImportOnly,
373+
aa.LastAccessed, aa.IsContentManager, aa.IsContentCreator, aa.IsSupervisor, aa.IsTrainer, aa.CategoryID, aa.IsFrameworkDeveloper, aa.IsFrameworkContributor,aa.ImportOnly,
373374
aa.IsWorkforceManager, aa.IsWorkforceContributor, aa.IsLocalWorkforceManager, aa.IsNominatedSupervisor,
374375
u.ID, u.PrimaryEmail, u.FirstName, u.LastName, u.Active, u.FailedLoginCount,
375376
c.CentreID, c.CentreName,

DigitalLearningSolutions.Data/DataServices/UserDataService/DelegateUserCardDataService.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@ FROM DelegateAccounts AS da
8787
c.CentreName,
8888
da.CentreID,
8989
da.DateRegistered,
90+
da.LastAccessed,
9091
da.RegistrationConfirmationHash,
9192
c.Active AS CentreActive,
9293
COALESCE(ucd.Email, u.PrimaryEmail) AS EmailAddress,
@@ -124,6 +125,7 @@ FROM AdminAccounts aa
124125
c.CentreName,
125126
da.CentreID,
126127
da.DateRegistered,
128+
da.LastAccessed,
127129
da.RegistrationConfirmationHash,
128130
c.Active AS CentreActive,
129131
COALESCE(ucd.Email, u.PrimaryEmail) AS EmailAddress,

0 commit comments

Comments
 (0)