Skip to content

Commit 1657a06

Browse files
Merge pull request #601 from TechnologyEnhancedLearning/Develop/Fixes/TD-4682-fix-click-logs-issue--Find-wise
TD-4682: fix click logs issue -Find-wise
2 parents be5ede2 + a7ecd8a commit 1657a06

File tree

22 files changed

+80
-60
lines changed

22 files changed

+80
-60
lines changed

AdminUI/LearningHub.Nhs.AdminUI/LearningHub.Nhs.AdminUI.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@
8989
<PackageReference Include="HtmlSanitizer" Version="6.0.453" />
9090
<PackageReference Include="IdentityModel" Version="4.4.0" />
9191
<PackageReference Include="LearningHub.Nhs.Caching" Version="2.0.2" />
92-
<PackageReference Include="LearningHub.Nhs.Models" Version="3.0.39" />
92+
<PackageReference Include="LearningHub.Nhs.Models" Version="3.0.40" />
9393
<PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.19.0" />
9494
<PackageReference Include="Microsoft.AspNetCore.Authentication.OpenIdConnect" Version="6.0.0" />
9595
<PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="6.0.0" />

LearningHub.Nhs.WebUI/Controllers/CatalogueController.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,7 @@ public async Task<IActionResult> Index(int pageIndex = 1, string term = null)
110110
});
111111

112112
catalogues.TotalCount = termCatalogues.TotalHits;
113+
catalogues.GroupId = Guid.NewGuid();
113114
catalogues.Catalogues = termCatalogues.DocumentModel.Select(t => new DashboardCatalogueViewModel
114115
{
115116
Url = t.Url,
@@ -124,6 +125,7 @@ public async Task<IActionResult> Index(int pageIndex = 1, string term = null)
124125
NodeId = int.Parse(t.Id),
125126
BadgeUrl = t.BadgeUrl,
126127
Providers = t.Providers,
128+
ClickPayload = t.Click.Payload,
127129
}).ToList();
128130
}
129131
else

LearningHub.Nhs.WebUI/Controllers/SearchController.cs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -214,8 +214,9 @@ public async Task<IActionResult> RecordCatalogueNavigation(SearchRequestViewMode
214214
/// <param name="timeOfSearch">time of search.</param>
215215
/// <param name="userQuery">user query.</param>
216216
/// <param name="query">search query.</param>
217+
/// <param name="title">the title.</param>
217218
[HttpGet("record-resource-click")]
218-
public void RecordResourceClick(string url, int nodePathId, int itemIndex, int pageIndex, int totalNumberOfHits, string searchText, int resourceReferenceId, Guid groupId, string searchId, long timeOfSearch, string userQuery, string query)
219+
public void RecordResourceClick(string url, int nodePathId, int itemIndex, int pageIndex, int totalNumberOfHits, string searchText, int resourceReferenceId, Guid groupId, string searchId, long timeOfSearch, string userQuery, string query, string title)
219220
{
220221
var searchActionResourceModel = new SearchActionResourceModel
221222
{
@@ -230,6 +231,7 @@ public void RecordResourceClick(string url, int nodePathId, int itemIndex, int p
230231
TimeOfSearch = timeOfSearch,
231232
UserQuery = userQuery,
232233
Query = query,
234+
Title = title,
233235
};
234236

235237
this.searchService.CreateResourceSearchActionAsync(searchActionResourceModel);
@@ -251,9 +253,10 @@ public void RecordResourceClick(string url, int nodePathId, int itemIndex, int p
251253
/// <param name="timeOfSearch">time of search.</param>
252254
/// <param name="userQuery">user query.</param>
253255
/// <param name="query">search query.</param>
256+
/// <param name="name">the name.</param>
254257
/// <returns>A <see cref="Task"/> representing the asynchronous operation.</returns>
255258
[HttpGet("record-catalogue-click")]
256-
public async Task<IActionResult> RecordCatalogueClick(string url, int nodePathId, int itemIndex, int pageIndex, int totalNumberOfHits, string searchText, int catalogueId, Guid groupId, string searchId, long timeOfSearch, string userQuery, string query)
259+
public async Task<IActionResult> RecordCatalogueClick(string url, int nodePathId, int itemIndex, int pageIndex, int totalNumberOfHits, string searchText, int catalogueId, Guid groupId, string searchId, long timeOfSearch, string userQuery, string query, string name)
257260
{
258261
SearchActionCatalogueModel searchActionCatalogueModel = new SearchActionCatalogueModel
259262
{
@@ -268,6 +271,7 @@ public async Task<IActionResult> RecordCatalogueClick(string url, int nodePathId
268271
TimeOfSearch = timeOfSearch,
269272
UserQuery = userQuery,
270273
Query = query,
274+
Name = name,
271275
};
272276

273277
await this.searchService.CreateCatalogueSearchActionAsync(searchActionCatalogueModel);

LearningHub.Nhs.WebUI/LearningHub.Nhs.WebUI.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@
108108
<PackageReference Include="HtmlAgilityPack" Version="1.11.38" />
109109
<PackageReference Include="IdentityModel" Version="4.3.0" />
110110
<PackageReference Include="LearningHub.Nhs.Caching" Version="2.0.0" />
111-
<PackageReference Include="LearningHub.Nhs.Models" Version="3.0.39" />
111+
<PackageReference Include="LearningHub.Nhs.Models" Version="3.0.40" />
112112
<PackageReference Include="linqtotwitter" Version="6.9.0" />
113113
<PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.19.0" />
114114
<PackageReference Include="Microsoft.ApplicationInsights.EventCounterCollector" Version="2.21.0" />

LearningHub.Nhs.WebUI/Views/Catalogue/Catalogues.cshtml

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,30 @@
1-
@using LearningHub.Nhs.WebUI.Extensions
2-
@using Microsoft.AspNetCore.WebUtilities
1+
@using System.Web;
2+
@using LearningHub.Nhs.WebUI.Extensions;
3+
@using Microsoft.AspNetCore.WebUtilities;
4+
@using LearningHub.Nhs.Models.Search.SearchClick;
5+
36
@model LearningHub.Nhs.Models.Dashboard.DashboardCatalogueResponseViewModel;
47

58
@{
6-
ViewData["Title"] = "Learning Hub - Catalogues";
9+
ViewData["Title"] = "Learning Hub - Catalogues";
10+
11+
var queryParams = QueryHelpers.ParseQuery(Context.Request.QueryString.ToString().ToLower());
12+
var hasSearchTerm = queryParams.ContainsKey("term");
13+
var searhTerm = hasSearchTerm ? queryParams["term"].ToString() : null;
14+
string cardStyle = "card-provider-details--blank";
15+
16+
string GetCatalogueUrl(string catalogueUrl, SearchClickPayloadModel list, int catalogueId)
17+
{
18+
string encodedCatalogueUrl = HttpUtility.UrlEncode("/Catalogue/" + catalogueUrl);
19+
string searchSignalQueryEncoded = HttpUtility.UrlEncode(HttpUtility.UrlDecode(list?.SearchSignal?.Query));
20+
string groupId = HttpUtility.UrlEncode(Model.GroupId.ToString());
21+
var url = $@"/search/record-catalogue-click?url={encodedCatalogueUrl}&itemIndex={list?.HitNumber}
22+
&pageIndex={this.ViewBag.PageIndex}&totalNumberOfHits={list?.SearchSignal?.Stats.TotalHits}&searchText={searhTerm}&catalogueId={catalogueId}
23+
&GroupId={groupId}&searchId={list?.SearchSignal.SearchId}&timeOfSearch={list?.SearchSignal.TimeOfSearch}&userQuery={HttpUtility.UrlEncode(list?.SearchSignal?.UserQuery)}
24+
&query={searchSignalQueryEncoded}&name={list?.DocumentFields?.Name}";
25+
return url;
26+
}
727

8-
var queryParams = QueryHelpers.ParseQuery(Context.Request.QueryString.ToString().ToLower());
9-
var hasSearchTerm = queryParams.ContainsKey("term");
10-
var searhTerm = hasSearchTerm ? queryParams["term"].ToString() : null;
11-
string cardStyle = "card-provider-details--blank";
1228
}
1329

1430
@section styles{
@@ -70,7 +86,7 @@
7086
<div class="nhsuk-card__content catalogue-card-content">
7187

7288
<h3 class="nhsuk-card__heading nhsuk-heading-m">
73-
<a class="nhsuk-card__link line-clamp-2" asp-controller="Catalogue" asp-action="Index" asp-route-reference="@item.Url">@item.Name</a>
89+
<a class="nhsuk-card__link line-clamp-2" href="@GetCatalogueUrl(item.Url, item.ClickPayload, item.NodeId)">@item.Name</a>
7490
</h3>
7591

7692
<div class="nhsuk-card__description catalogue-card-body">

LearningHub.Nhs.WebUI/Views/Search/_CatalogueSearchResult.cshtml

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,26 @@
11
@using System.Web;
22
@using LearningHub.Nhs.WebUI.Extensions
3+
@using LearningHub.Nhs.Models.Search.SearchClick;
34

45
@model LearningHub.Nhs.WebUI.Models.Search.SearchResultViewModel
56

67
@{
7-
var catalogueResult = Model.CatalogueSearchResult;
8-
var pagingModel = Model.CatalogueResultPaging;
9-
var searchString = HttpUtility.UrlEncode(Model.SearchString);
10-
var searchSignal = catalogueResult.Feedback?.FeedbackAction?.Payload?.SearchSignal;
11-
12-
string GetCatalogueUrl(string catalogueUrl, int nodePathId, int itemIndex, int catalogueId)
13-
{
14-
string encodedCatalogueUrl = HttpUtility.UrlEncode("/Catalogue/" + catalogueUrl);
15-
string groupId = HttpUtility.UrlEncode(Model.GroupId.ToString());
16-
string searchSignalQueryEncoded = HttpUtility.UrlEncode(HttpUtility.UrlDecode(searchSignal?.Query));
17-
18-
var url = $@"/search/record-catalogue-click?url={encodedCatalogueUrl}&nodePathId={nodePathId}&itemIndex={itemIndex}
19-
&pageIndex={pagingModel.CurrentPage}&totalNumberOfHits={catalogueResult.TotalHits}&searchText={searchString}&catalogueId={catalogueId}
20-
&GroupId={groupId}&searchId={searchSignal?.SearchId}&timeOfSearch={searchSignal.TimeOfSearch}&userQuery={HttpUtility.UrlEncode(searchSignal?.UserQuery)}&query={searchSignalQueryEncoded}";
21-
return url;
8+
var catalogueResult = Model.CatalogueSearchResult;
9+
var pagingModel = Model.CatalogueResultPaging;
10+
var searchString = HttpUtility.UrlEncode(Model.SearchString);
11+
12+
string GetCatalogueUrl(string catalogueUrl, int nodePathId, int itemIndex, int catalogueId, SearchClickPayloadModel payload)
13+
{
14+
var searchSignal = payload?.SearchSignal;
15+
string encodedCatalogueUrl = HttpUtility.UrlEncode("/Catalogue/" + catalogueUrl);
16+
string groupId = HttpUtility.UrlEncode(Model.GroupId.ToString());
17+
string searchSignalQueryEncoded = HttpUtility.UrlEncode(HttpUtility.UrlDecode(searchSignal?.Query));
18+
19+
var url = $@"/search/record-catalogue-click?url={encodedCatalogueUrl}&nodePathId={nodePathId}&itemIndex={payload?.HitNumber}
20+
&pageIndex={pagingModel.CurrentPage}&totalNumberOfHits={payload?.SearchSignal?.Stats?.TotalHits}&searchText={searchString}&catalogueId={catalogueId}
21+
&GroupId={groupId}&searchId={searchSignal?.SearchId}&timeOfSearch={searchSignal?.TimeOfSearch}&userQuery={HttpUtility.UrlEncode(searchSignal?.UserQuery)}
22+
&query={searchSignalQueryEncoded}&name={payload?.DocumentFields?.Name}";
23+
return url;
2224
}
2325
}
2426

@@ -71,7 +73,7 @@
7173
<div class="nhsuk-card__content catalogue-card-content">
7274

7375
<h2 class="nhsuk-card__heading nhsuk-heading-m">
74-
<a class="nhsuk-card__link" href="@GetCatalogueUrl(item.Url, item.NodePathId, index, Int32.Parse(item.Id))">@item.Name</a>
76+
<a class="nhsuk-card__link" href="@GetCatalogueUrl(item.Url, item.NodePathId, index, Int32.Parse(item.Id), item.Click.Payload)">@item.Name</a>
7577
</h2>
7678

7779
<div class="nhsuk-card__description catalogue-card-body">

LearningHub.Nhs.WebUI/Views/Search/_ResourceSearchResult.cshtml

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -7,28 +7,24 @@
77
@using LearningHub.Nhs.Models.Search.SearchFeedback;
88
@using LearningHub.Nhs.Models.Enums;
99
@using LearningHub.Nhs.WebUI.Models.Search;
10+
@using LearningHub.Nhs.Models.Search.SearchClick;
1011

1112
@{
1213
var resourceResult = Model.ResourceSearchResult;
1314
var pagingModel = Model.ResourceResultPaging;
1415
var index = pagingModel.CurrentPage * pagingModel.PageSize;
1516
var searchString = HttpUtility.UrlEncode(Model.SearchString);
16-
var searchSignal = resourceResult.Feedback?.FeedbackAction?.Payload?.SearchSignal;
17-
int qVectorIndex = searchSignal.Query?.IndexOf("q_vector") ?? -1;
18-
var searchSignalQuery = searchSignal?.Query;
19-
// Check if "q_vector" is found in the string. if Yes, Remove "q_vector" and everything after it
20-
if (qVectorIndex != -1)
21-
{
22-
searchSignalQuery = searchSignal?.Query.Substring(0, qVectorIndex);
23-
}
24-
string GetUrl(int resourceReferenceId, int itemIndex, int nodePathId)
17+
18+
string GetUrl(int resourceReferenceId, int itemIndex, int nodePathId, SearchClickPayloadModel payload)
2519
{
20+
var searchSignal = payload?.SearchSignal;
2621
string groupId = HttpUtility.UrlEncode(Model.GroupId.ToString());
27-
string searchSignalQueryEncoded = HttpUtility.UrlEncode(HttpUtility.UrlDecode(searchSignalQuery));
22+
string searchSignalQueryEncoded = HttpUtility.UrlEncode(HttpUtility.UrlDecode(searchSignal?.Query));
2823

29-
return $@"/search/record-resource-click?url=/Resource/{resourceReferenceId}&nodePathId={nodePathId}&itemIndex={itemIndex}
30-
&pageIndex={pagingModel.CurrentPage}&totalNumberOfHits={resourceResult.TotalHits}&searchText={searchString}&resourceReferenceId={resourceReferenceId}
31-
&groupId={groupId}&searchId={searchSignal?.SearchId}&timeOfSearch={searchSignal?.TimeOfSearch}&userQuery={HttpUtility.UrlEncode(searchSignal.UserQuery)}&query={searchSignalQueryEncoded}";
24+
return $@"/search/record-resource-click?url=/Resource/{resourceReferenceId}&nodePathId={nodePathId}&itemIndex={payload?.HitNumber}
25+
&pageIndex={pagingModel.CurrentPage}&totalNumberOfHits={payload?.SearchSignal?.Stats?.TotalHits}&searchText={searchString}&resourceReferenceId={resourceReferenceId}
26+
&groupId={groupId}&searchId={searchSignal?.SearchId}&timeOfSearch={searchSignal?.TimeOfSearch}&userQuery={HttpUtility.UrlEncode(searchSignal.UserQuery)}
27+
&query={searchSignalQueryEncoded}&title={payload?.DocumentFields?.Title}";
3228
}
3329

3430
bool showCatalogueFieldsInResources = ViewBag.ShowCatalogueFieldsInResources == null || ViewBag.ShowCatalogueFieldsInResources == true;
@@ -41,7 +37,7 @@
4137

4238
<div class="resource-item nhsuk-list-item--border nhsuk-u-padding-bottom-4 nhsuk-u-margin-bottom-4">
4339
<h2 class="nhsuk-heading-xs nhsuk-u-margin-bottom-2">
44-
<a class="nhsuk-card__link" href="@GetUrl(item.ResourceReferenceId, index, item.NodePathId??0)">@item.Title</a>
40+
<a class="nhsuk-card__link" href="@GetUrl(item.ResourceReferenceId, index, item.NodePathId??0, item.Click.Payload)">@item.Title</a>
4541
</h2>
4642

4743
@if (provider != null)

WebAPI/LearningHub.Nhs.API/LearningHub.Nhs.Api.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
<PackageReference Include="elfhHub.Nhs.Models" Version="3.0.8" />
2828
<PackageReference Include="IdentityServer4.AccessTokenValidation" Version="3.0.1" />
2929
<PackageReference Include="LearningHub.Nhs.Caching" Version="2.0.0" />
30-
<PackageReference Include="LearningHub.Nhs.Models" Version="3.0.39" />
30+
<PackageReference Include="LearningHub.Nhs.Models" Version="3.0.40" />
3131
<PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.19.0" />
3232
<PackageReference Include="Microsoft.AspNetCore" Version="2.2.0" />
3333
<PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="6.0.0" />

WebAPI/LearningHub.Nhs.Api.Shared/LearningHub.Nhs.Api.Shared.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
<ItemGroup>
1010
<PackageReference Include="elfhHub.Nhs.Models" Version="3.0.8" />
1111
<PackageReference Include="LearningHub.Nhs.Caching" Version="2.0.0" />
12-
<PackageReference Include="LearningHub.Nhs.Models" Version="3.0.39" />
12+
<PackageReference Include="LearningHub.Nhs.Models" Version="3.0.40" />
1313
<PackageReference Update="StyleCop.Analyzers" Version="1.1.118">
1414
<PrivateAssets>all</PrivateAssets>
1515
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>

WebAPI/LearningHub.Nhs.Api.UnitTests/LearningHub.Nhs.Api.UnitTests.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
<PackageReference Include="elfhHub.Nhs.Models" Version="3.0.8" />
1212
<PackageReference Include="FluentAssertions" Version="6.2.0" />
1313
<PackageReference Include="LearningHub.Nhs.Caching" Version="2.0.0" />
14-
<PackageReference Include="LearningHub.Nhs.Models" Version="3.0.39" />
14+
<PackageReference Include="LearningHub.Nhs.Models" Version="3.0.40" />
1515
<PackageReference Include="Microsoft.AspNetCore.Mvc.Core" Version="2.2.5" />
1616
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.0.0" />
1717
<PackageReference Include="Moq" Version="4.16.1" />

0 commit comments

Comments
 (0)