Skip to content

Commit 572af95

Browse files
authored
Merge pull request #2780 from TechnologyEnhancedLearning/Develop/Fix/TD-4436-Enrolment-dateTime-issue
TD-4436- Date saved as UTC datetime and retrieved date as local (time zone) datetime
2 parents eb85659 + 21f2fe1 commit 572af95

File tree

19 files changed

+236
-114
lines changed

19 files changed

+236
-114
lines changed
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
namespace DigitalLearningSolutions.Data.Migrations
2+
{
3+
using FluentMigrator;
4+
5+
[Migration(202408141400)]
6+
public class Alter_uspCreateProgressRecord_V3_UtcDate : Migration
7+
{
8+
public override void Up()
9+
{
10+
Execute.Sql(Properties.Resources.TD_4436_Alter_uspCreateProgressRecord_V3_Up);
11+
}
12+
public override void Down()
13+
{
14+
Execute.Sql(Properties.Resources.TD_4436_Alter_uspCreateProgressRecord_V3_Down);
15+
}
16+
}
17+
}

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

Lines changed: 75 additions & 31 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: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -412,4 +412,10 @@
412412
<data name="TD_4243_Alter_GetCurrentCoursesForCandidate_V2_proc_up" type="System.Resources.ResXFileRef, System.Windows.Forms">
413413
<value>..\Resources\TD-4243_Alter_GetCurrentCoursesForCandidate_V2_proc_up.sql;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252</value>
414414
</data>
415-
</root>
415+
<data name="TD_4436_Alter_uspCreateProgressRecord_V3_Down" type="System.Resources.ResXFileRef, System.Windows.Forms">
416+
<value>..\Scripts\TD-4436-Alter_uspCreateProgressRecord_V3_Down.sql;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-16</value>
417+
</data>
418+
<data name="TD_4436_Alter_uspCreateProgressRecord_V3_Up" type="System.Resources.ResXFileRef, System.Windows.Forms">
419+
<value>..\Scripts\TD-4436-Alter_uspCreateProgressRecord_V3_Up.sql;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-16</value>
420+
</data>
421+
</root>
Binary file not shown.

DigitalLearningSolutions.Data/DataServices/CourseContentDataService.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -251,7 +251,7 @@ FROM Sessions AS S1 WITH (NOLOCK)
251251
WHERE S1.CandidateID = Progress.CandidateID
252252
AND S1.CustomisationID = Progress.CustomisationID
253253
AND S1.LoginTime >= Progress.FirstSubmittedTime),
254-
SubmittedTime = GETDATE()
254+
SubmittedTime = GETUTCDATE()
255255
WHERE Progress.ProgressID = @progressId",
256256
new { progressId }
257257
);

DigitalLearningSolutions.Data/DataServices/SelfAssessmentDataService/CandidateAssessmentsDataService.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,7 @@ GROUP BY
170170
public void UpdateLastAccessed(int selfAssessmentId, int delegateUserId)
171171
{
172172
var numberOfAffectedRows = connection.Execute(
173-
@"UPDATE CandidateAssessments SET LastAccessed = GETDATE()
173+
@"UPDATE CandidateAssessments SET LastAccessed = GETUTCDATE()
174174
WHERE SelfAssessmentID = @selfAssessmentId AND DelegateUserID = @delegateUserId",
175175
new { selfAssessmentId, delegateUserId }
176176
);

DigitalLearningSolutions.Web.Tests/Controllers/Login/LoginControllerTests.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ namespace DigitalLearningSolutions.Web.Tests.Controllers.Login
1313
using DigitalLearningSolutions.Data.Models.User;
1414
using DigitalLearningSolutions.Data.Utilities;
1515
using DigitalLearningSolutions.Web.Controllers;
16+
using DigitalLearningSolutions.Web.Helpers;
1617
using DigitalLearningSolutions.Web.Models.Enums;
1718
using DigitalLearningSolutions.Web.Services;
1819
using DigitalLearningSolutions.Web.Tests.ControllerHelpers;
@@ -59,7 +60,7 @@ public void SetUp()
5960
config = A.Fake<IConfiguration>();
6061
apiClient = A.Fake<ILearningHubUserApiClient>();
6162

62-
63+
DateHelper.userTimeZone = DateHelper.DefaultTimeZone;
6364
A.CallTo(() => clockUtility.UtcNow).Returns(DateTime.UtcNow);
6465

6566
controller = new LoginController(

DigitalLearningSolutions.Web/Controllers/LoginController.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,13 +70,16 @@ public IActionResult Index(string? returnUrl = null)
7070
}
7171

7272
[HttpPost]
73-
public async Task<IActionResult> Index(LoginViewModel model)
73+
public async Task<IActionResult> Index(LoginViewModel model, string timeZone = "Europe/London")
7474
{
75+
ModelState.Remove("timeZone");
7576
if (!ModelState.IsValid)
7677
{
7778
return View("Index", model);
7879
}
7980

81+
DateHelper.userTimeZone = timeZone ?? DateHelper.DefaultTimeZone;
82+
8083
var loginResult = loginService.AttemptLogin(model.Username!.Trim(), model.Password!);
8184

8285
switch (loginResult.LoginAttemptResult)

DigitalLearningSolutions.Web/Controllers/TrackingSystem/Delegates/ViewDelegateController.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
using Microsoft.AspNetCore.Mvc;
1717
using Microsoft.Extensions.Configuration;
1818
using Microsoft.FeatureManagement.Mvc;
19+
using System;
1920

2021
[FeatureGate(FeatureFlags.RefactoredTrackingSystem)]
2122
[Authorize(Policy = CustomPolicies.UserCentreAdmin)]
@@ -74,6 +75,12 @@ public IActionResult Index(int delegateId, string? callType)
7475
var customFields = promptsService.GetDelegateRegistrationPromptsForCentre(centreId, delegateUserCard);
7576
var delegateCourses =
7677
courseService.GetAllCoursesInCategoryForDelegate(delegateId, centreId, categoryIdFilter);
78+
foreach (var course in delegateCourses)
79+
{
80+
course.Enrolled = (DateTime)DateHelper.GetLocalDateTime(course.Enrolled);
81+
course.LastUpdated = (DateTime)DateHelper.GetLocalDateTime(course.LastUpdated);
82+
course.Completed = course.Completed?.TimeOfDay == TimeSpan.Zero ? course.Completed : DateHelper.GetLocalDateTime(course.Completed);
83+
}
7784

7885
var selfAssessments =
7986
selfAssessmentService.GetSelfAssessmentsForCandidate(delegateEntity.UserAccount.Id, centreId);
@@ -83,6 +90,8 @@ public IActionResult Index(int delegateId, string? callType)
8390
selfassessment.SupervisorCount = selfAssessmentService.GetSupervisorsCountFromCandidateAssessmentId(selfassessment.CandidateAssessmentId);
8491
selfassessment.IsSameCentre = selfAssessmentService.CheckForSameCentre(centreId, selfassessment.CandidateAssessmentId);
8592
selfassessment.DelegateUserId = delegateUserCard.UserId;
93+
selfassessment.StartedDate = (DateTime)DateHelper.GetLocalDateTime(selfassessment.StartedDate);
94+
selfassessment.LastAccessed = DateHelper.GetLocalDateTime(selfassessment.LastAccessed);
8695
}
8796

8897
var model = new ViewDelegateViewModel(delegateUserCard, customFields, delegateCourses, selfAssessments);

0 commit comments

Comments
 (0)