Skip to content

Commit be28d6d

Browse files
committed
TD-3714 Adding LastAccessed Date To Delegates Card In Tracking System
1 parent b5cf544 commit be28d6d

File tree

6 files changed

+92
-76
lines changed

6 files changed

+92
-76
lines changed

DigitalLearningSolutions.Data/DataServices/UserDataService/DelegateUserCardDataService.cs

Lines changed: 1 addition & 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,

DigitalLearningSolutions.Data/Models/User/DelegateAccount.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ public class DelegateAccount
1212
public bool CentreActive { get; set; }
1313
public string CandidateNumber { get; set; } = string.Empty;
1414
public DateTime DateRegistered { get; set; }
15+
public DateTime LastAccessed { get; set; }
1516
public string? Answer1 { get; set; }
1617
public string? Answer2 { get; set; }
1718
public string? Answer3 { get; set; }

DigitalLearningSolutions.Data/Models/User/DelegateUser.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ public class DelegateUser : User
99
public int UserId { get; set; }
1010
public string CandidateNumber { get; set; } = string.Empty;
1111
public DateTime? DateRegistered { get; set; }
12+
public DateTime? LastAccessed { get; set; }
1213
public int JobGroupId { get; set; }
1314
public string? JobGroupName { get; set; }
1415
public string? Answer1 { get; set; }

DigitalLearningSolutions.Data/Models/User/DelegateUserCard.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ public DelegateUserCard(DelegateEntity delegateEntity)
2323
Password = delegateEntity.UserAccount.PasswordHash;
2424
CandidateNumber = delegateEntity.DelegateAccount.CandidateNumber;
2525
DateRegistered = delegateEntity.DelegateAccount.DateRegistered;
26+
LastAccessed = delegateEntity.DelegateAccount.LastAccessed;
2627
JobGroupId = delegateEntity.UserAccount.JobGroupId;
2728
JobGroupName = delegateEntity.UserAccount.JobGroupName;
2829
Answer1 = delegateEntity.DelegateAccount.Answer1;

DigitalLearningSolutions.Web/ViewModels/TrackingSystem/Delegates/Shared/DelegateInfoViewModel.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,10 @@ IEnumerable<DelegateRegistrationPrompt> delegateRegistrationPrompts
4141
{
4242
RegistrationDate = delegateUser.DateRegistered.Value.ToString(DateHelper.StandardDateFormat);
4343
}
44+
if (delegateUser.LastAccessed.HasValue)
45+
{
46+
LastAccessed = delegateUser.LastAccessed.Value.ToString(DateHelper.StandardDateFormat);
47+
}
4448

4549
DelegateRegistrationPrompts = delegateRegistrationPrompts;
4650
RegistrationConfirmationHash = delegateUser.RegistrationConfirmationHash;
@@ -61,6 +65,7 @@ IEnumerable<DelegateRegistrationPrompt> delegateRegistrationPrompts
6165
public int JobGroupId { get; set; }
6266
public string? JobGroup { get; set; }
6367
public string? RegistrationDate { get; set; }
68+
public string? LastAccessed { get; set; }
6469
public string ProfessionalRegistrationNumber { get; set; }
6570
public string? RegistrationConfirmationHash { get; set; }
6671

DigitalLearningSolutions.Web/Views/TrackingSystem/Delegates/AllDelegates/_SearchableDelegateCard.cshtml

Lines changed: 83 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -4,91 +4,98 @@
44

55
<div class="searchable-element nhsuk-expander-group word-break" id="@Model.DelegateInfo.Id-card">
66

7-
<details class="nhsuk-details nhsuk-expander">
8-
<summary class="nhsuk-details__summary">
9-
<span class="nhsuk-details__summary-text" id="@Model.DelegateInfo.Id-name">
10-
<span class="searchable-element-title" name="name">@Model.DelegateInfo.TitleName</span>
11-
@if (Model.DelegateInfo.Email == null)
12-
@("(Email address not set)")
13-
else
14-
@DisplayStringHelper.GetEmailDisplayString(Model.DelegateInfo.Email)
7+
<details class="nhsuk-details nhsuk-expander">
8+
<summary class="nhsuk-details__summary">
9+
<span class="nhsuk-details__summary-text" id="@Model.DelegateInfo.Id-name">
10+
<span class="searchable-element-title" name="name">@Model.DelegateInfo.TitleName</span>
11+
@if (Model.DelegateInfo.Email == null)
12+
@("(Email address not set)")
13+
else
14+
@DisplayStringHelper.GetEmailDisplayString(Model.DelegateInfo.Email)
1515

16-
</span>
17-
</summary>
16+
</span>
17+
</summary>
1818

19-
<div class="nhsuk-details__text">
19+
<div class="nhsuk-details__text">
2020

21-
<partial name="SearchablePage/_FilterableTags" model="@Model.Tags" />
21+
<partial name="SearchablePage/_FilterableTags" model="@Model.Tags" />
2222

23-
<dl class="nhsuk-summary-list details-list-with-button">
24-
<div class="nhsuk-summary-list__row details-list-with-button__row">
25-
<dt class="nhsuk-summary-list__key">
26-
Name
27-
</dt>
28-
<partial name="_SummaryFieldValue" model="@Model.DelegateInfo.Name" />
29-
</div>
23+
<dl class="nhsuk-summary-list details-list-with-button">
24+
<div class="nhsuk-summary-list__row details-list-with-button__row">
25+
<dt class="nhsuk-summary-list__key">
26+
Name
27+
</dt>
28+
<partial name="_SummaryFieldValue" model="@Model.DelegateInfo.Name" />
29+
</div>
3030

31-
<div class="nhsuk-summary-list__row details-list-with-button__row">
32-
<dt class="nhsuk-summary-list__key ">
33-
Email
34-
</dt>
35-
<partial name="_SearchableSummaryFieldValue" model=@(Model.DelegateInfo.Email, "email") />
36-
</div>
31+
<div class="nhsuk-summary-list__row details-list-with-button__row">
32+
<dt class="nhsuk-summary-list__key ">
33+
Email
34+
</dt>
35+
<partial name="_SearchableSummaryFieldValue" model=@(Model.DelegateInfo.Email, "email") />
36+
</div>
3737

38-
<div class="nhsuk-summary-list__row details-list-with-button__row">
39-
<dt class="nhsuk-summary-list__key">
40-
ID
41-
</dt>
42-
<partial name="_SearchableSummaryFieldValue" model=@(Model.DelegateInfo.CandidateNumber, "candidate-number") />
43-
</div>
38+
<div class="nhsuk-summary-list__row details-list-with-button__row">
39+
<dt class="nhsuk-summary-list__key">
40+
ID
41+
</dt>
42+
<partial name="_SearchableSummaryFieldValue" model=@(Model.DelegateInfo.CandidateNumber, "candidate-number") />
43+
</div>
4444

45-
<div class="nhsuk-summary-list__row details-list-with-button__row">
46-
<dt class="nhsuk-summary-list__key">
47-
Registration date
48-
</dt>
49-
<partial name="_SummaryFieldValue" model="@Model.DelegateInfo.RegistrationDate" />
50-
<div hidden name="registration-date">@Model.DelegateInfo.RegistrationDate</div>
51-
</div>
45+
<div class="nhsuk-summary-list__row details-list-with-button__row">
46+
<dt class="nhsuk-summary-list__key">
47+
Registration date
48+
</dt>
49+
<partial name="_SummaryFieldValue" model="@Model.DelegateInfo.RegistrationDate" />
50+
<div hidden name="registration-date">@Model.DelegateInfo.RegistrationDate</div>
51+
</div>
5252

53-
<div class="nhsuk-summary-list__row details-list-with-button__row">
54-
<dt class="nhsuk-summary-list__key">
55-
Job group
56-
</dt>
57-
<partial name="_SummaryFieldValue" model="@Model.DelegateInfo.JobGroup" />
58-
<div hidden data-filter-value="@Model.JobGroupFilter"></div>
59-
</div>
53+
<div class="nhsuk-summary-list__row details-list-with-button__row">
54+
<dt class="nhsuk-summary-list__key">
55+
Last Accessed date
56+
</dt>
57+
<partial name="_SummaryFieldValue" model="@Model.DelegateInfo.LastAccessed" />
58+
</div>
6059

61-
<div class="nhsuk-summary-list__row details-list-with-button__row">
62-
<dt class="nhsuk-summary-list__key">
63-
Professional Registration Number
64-
</dt>
65-
<partial name="_SummaryFieldValue" model="@Model.DelegateInfo.ProfessionalRegistrationNumber" />
66-
</div>
60+
<div class="nhsuk-summary-list__row details-list-with-button__row">
61+
<dt class="nhsuk-summary-list__key">
62+
Job group
63+
</dt>
64+
<partial name="_SummaryFieldValue" model="@Model.DelegateInfo.JobGroup" />
65+
<div hidden data-filter-value="@Model.JobGroupFilter"></div>
66+
</div>
6767

68-
@foreach (var delegateRegistrationPrompt in Model.DelegateInfo.DelegateRegistrationPrompts)
69-
{
70-
<div class="nhsuk-summary-list__row details-list-with-button__row">
71-
<dt class="nhsuk-summary-list__key">@delegateRegistrationPrompt.Prompt</dt>
72-
<partial name="_SummaryFieldValue" model="@delegateRegistrationPrompt.Answer" />
73-
@if (Model.RegistrationPromptFilters.ContainsKey(delegateRegistrationPrompt.PromptNumber))
74-
{
75-
<div hidden data-filter-value="@Model.RegistrationPromptFilters[delegateRegistrationPrompt.PromptNumber]"></div>
76-
}
77-
</div>
78-
}
79-
</dl>
68+
<div class="nhsuk-summary-list__row details-list-with-button__row">
69+
<dt class="nhsuk-summary-list__key">
70+
Professional Registration Number
71+
</dt>
72+
<partial name="_SummaryFieldValue" model="@Model.DelegateInfo.ProfessionalRegistrationNumber" />
73+
</div>
8074

81-
<a class="nhsuk-button" asp-controller="ViewDelegate" asp-action="Index" asp-route-delegateId="@Model.DelegateInfo.Id" role="button">Manage delegate</a>
82-
<a class="nhsuk-button nhsuk-button--secondary"
83-
role="button"
84-
data-return-page-enabled="true"
85-
asp-controller="SetDelegatePassword"
86-
asp-action="Index"
87-
asp-route-delegateId="@Model.DelegateInfo.Id"
88-
asp-route-isFromViewDelegatePage="false"
89-
asp-route-returnPageQuery="@Model.ReturnPageQuery?.ToString()">
90-
Set password
91-
</a>
92-
</div>
93-
</details>
75+
@foreach (var delegateRegistrationPrompt in Model.DelegateInfo.DelegateRegistrationPrompts)
76+
{
77+
<div class="nhsuk-summary-list__row details-list-with-button__row">
78+
<dt class="nhsuk-summary-list__key">@delegateRegistrationPrompt.Prompt</dt>
79+
<partial name="_SummaryFieldValue" model="@delegateRegistrationPrompt.Answer" />
80+
@if (Model.RegistrationPromptFilters.ContainsKey(delegateRegistrationPrompt.PromptNumber))
81+
{
82+
<div hidden data-filter-value="@Model.RegistrationPromptFilters[delegateRegistrationPrompt.PromptNumber]"></div>
83+
}
84+
</div>
85+
}
86+
</dl>
87+
88+
<a class="nhsuk-button" asp-controller="ViewDelegate" asp-action="Index" asp-route-delegateId="@Model.DelegateInfo.Id" role="button">Manage delegate</a>
89+
<a class="nhsuk-button nhsuk-button--secondary"
90+
role="button"
91+
data-return-page-enabled="true"
92+
asp-controller="SetDelegatePassword"
93+
asp-action="Index"
94+
asp-route-delegateId="@Model.DelegateInfo.Id"
95+
asp-route-isFromViewDelegatePage="false"
96+
asp-route-returnPageQuery="@Model.ReturnPageQuery?.ToString()">
97+
Set password
98+
</a>
99+
</div>
100+
</details>
94101
</div>

0 commit comments

Comments
 (0)