Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@
<PackageReference Include="HtmlSanitizer" Version="6.0.453" />
<PackageReference Include="IdentityModel" Version="4.4.0" />
<PackageReference Include="LearningHub.Nhs.Caching" Version="2.0.2" />
<PackageReference Include="LearningHub.Nhs.Models" Version="3.0.39" />
<PackageReference Include="LearningHub.Nhs.Models" Version="3.0.40" />
<PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.19.0" />
<PackageReference Include="Microsoft.AspNetCore.Authentication.OpenIdConnect" Version="6.0.0" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="6.0.0" />
Expand Down
2 changes: 2 additions & 0 deletions LearningHub.Nhs.WebUI/Controllers/CatalogueController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,7 @@ public async Task<IActionResult> Index(int pageIndex = 1, string term = null)
});

catalogues.TotalCount = termCatalogues.TotalHits;
catalogues.GroupId = Guid.NewGuid();
catalogues.Catalogues = termCatalogues.DocumentModel.Select(t => new DashboardCatalogueViewModel
{
Url = t.Url,
Expand All @@ -124,6 +125,7 @@ public async Task<IActionResult> Index(int pageIndex = 1, string term = null)
NodeId = int.Parse(t.Id),
BadgeUrl = t.BadgeUrl,
Providers = t.Providers,
ClickPayload = t.Click.Payload,
}).ToList();
}
else
Expand Down
8 changes: 6 additions & 2 deletions LearningHub.Nhs.WebUI/Controllers/SearchController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -214,8 +214,9 @@ public async Task<IActionResult> RecordCatalogueNavigation(SearchRequestViewMode
/// <param name="timeOfSearch">time of search.</param>
/// <param name="userQuery">user query.</param>
/// <param name="query">search query.</param>
/// <param name="title">the title.</param>
[HttpGet("record-resource-click")]
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)
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)
{
var searchActionResourceModel = new SearchActionResourceModel
{
Expand All @@ -230,6 +231,7 @@ public void RecordResourceClick(string url, int nodePathId, int itemIndex, int p
TimeOfSearch = timeOfSearch,
UserQuery = userQuery,
Query = query,
Title = title,
};

this.searchService.CreateResourceSearchActionAsync(searchActionResourceModel);
Expand All @@ -251,9 +253,10 @@ public void RecordResourceClick(string url, int nodePathId, int itemIndex, int p
/// <param name="timeOfSearch">time of search.</param>
/// <param name="userQuery">user query.</param>
/// <param name="query">search query.</param>
/// <param name="name">the name.</param>
/// <returns>A <see cref="Task"/> representing the asynchronous operation.</returns>
[HttpGet("record-catalogue-click")]
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)
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)
{
SearchActionCatalogueModel searchActionCatalogueModel = new SearchActionCatalogueModel
{
Expand All @@ -268,6 +271,7 @@ public async Task<IActionResult> RecordCatalogueClick(string url, int nodePathId
TimeOfSearch = timeOfSearch,
UserQuery = userQuery,
Query = query,
Name = name,
};

await this.searchService.CreateCatalogueSearchActionAsync(searchActionCatalogueModel);
Expand Down
2 changes: 1 addition & 1 deletion LearningHub.Nhs.WebUI/LearningHub.Nhs.WebUI.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@
<PackageReference Include="HtmlAgilityPack" Version="1.11.38" />
<PackageReference Include="IdentityModel" Version="4.3.0" />
<PackageReference Include="LearningHub.Nhs.Caching" Version="2.0.0" />
<PackageReference Include="LearningHub.Nhs.Models" Version="3.0.39" />
<PackageReference Include="LearningHub.Nhs.Models" Version="3.0.40" />
<PackageReference Include="linqtotwitter" Version="6.9.0" />
<PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.19.0" />
<PackageReference Include="Microsoft.ApplicationInsights.EventCounterCollector" Version="2.21.0" />
Expand Down
32 changes: 24 additions & 8 deletions LearningHub.Nhs.WebUI/Views/Catalogue/Catalogues.cshtml
Original file line number Diff line number Diff line change
@@ -1,14 +1,30 @@
@using LearningHub.Nhs.WebUI.Extensions
@using Microsoft.AspNetCore.WebUtilities
@using System.Web;
@using LearningHub.Nhs.WebUI.Extensions;
@using Microsoft.AspNetCore.WebUtilities;
@using LearningHub.Nhs.Models.Search.SearchClick;

@model LearningHub.Nhs.Models.Dashboard.DashboardCatalogueResponseViewModel;

@{
ViewData["Title"] = "Learning Hub - Catalogues";
ViewData["Title"] = "Learning Hub - Catalogues";

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

string GetCatalogueUrl(string catalogueUrl, SearchClickPayloadModel list, int catalogueId)
{
string encodedCatalogueUrl = HttpUtility.UrlEncode("/Catalogue/" + catalogueUrl);
string searchSignalQueryEncoded = HttpUtility.UrlEncode(HttpUtility.UrlDecode(list?.SearchSignal?.Query));
string groupId = HttpUtility.UrlEncode(Model.GroupId.ToString());
var url = $@"/search/record-catalogue-click?url={encodedCatalogueUrl}&itemIndex={list?.HitNumber}
&pageIndex={this.ViewBag.PageIndex}&totalNumberOfHits={list?.SearchSignal?.Stats.TotalHits}&searchText={searhTerm}&catalogueId={catalogueId}
&GroupId={groupId}&searchId={list?.SearchSignal.SearchId}&timeOfSearch={list?.SearchSignal.TimeOfSearch}&userQuery={HttpUtility.UrlEncode(list?.SearchSignal?.UserQuery)}
&query={searchSignalQueryEncoded}&name={list?.DocumentFields?.Name}";
return url;
}

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

@section styles{
Expand Down Expand Up @@ -70,7 +86,7 @@
<div class="nhsuk-card__content catalogue-card-content">

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

<div class="nhsuk-card__description catalogue-card-body">
Expand Down
34 changes: 18 additions & 16 deletions LearningHub.Nhs.WebUI/Views/Search/_CatalogueSearchResult.cshtml
Original file line number Diff line number Diff line change
@@ -1,24 +1,26 @@
@using System.Web;
@using LearningHub.Nhs.WebUI.Extensions
@using LearningHub.Nhs.Models.Search.SearchClick;

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

@{
var catalogueResult = Model.CatalogueSearchResult;
var pagingModel = Model.CatalogueResultPaging;
var searchString = HttpUtility.UrlEncode(Model.SearchString);
var searchSignal = catalogueResult.Feedback?.FeedbackAction?.Payload?.SearchSignal;

string GetCatalogueUrl(string catalogueUrl, int nodePathId, int itemIndex, int catalogueId)
{
string encodedCatalogueUrl = HttpUtility.UrlEncode("/Catalogue/" + catalogueUrl);
string groupId = HttpUtility.UrlEncode(Model.GroupId.ToString());
string searchSignalQueryEncoded = HttpUtility.UrlEncode(HttpUtility.UrlDecode(searchSignal?.Query));

var url = $@"/search/record-catalogue-click?url={encodedCatalogueUrl}&nodePathId={nodePathId}&itemIndex={itemIndex}
&pageIndex={pagingModel.CurrentPage}&totalNumberOfHits={catalogueResult.TotalHits}&searchText={searchString}&catalogueId={catalogueId}
&GroupId={groupId}&searchId={searchSignal?.SearchId}&timeOfSearch={searchSignal.TimeOfSearch}&userQuery={HttpUtility.UrlEncode(searchSignal?.UserQuery)}&query={searchSignalQueryEncoded}";
return url;
var catalogueResult = Model.CatalogueSearchResult;
var pagingModel = Model.CatalogueResultPaging;
var searchString = HttpUtility.UrlEncode(Model.SearchString);

string GetCatalogueUrl(string catalogueUrl, int nodePathId, int itemIndex, int catalogueId, SearchClickPayloadModel payload)
{
var searchSignal = payload?.SearchSignal;
string encodedCatalogueUrl = HttpUtility.UrlEncode("/Catalogue/" + catalogueUrl);
string groupId = HttpUtility.UrlEncode(Model.GroupId.ToString());
string searchSignalQueryEncoded = HttpUtility.UrlEncode(HttpUtility.UrlDecode(searchSignal?.Query));

var url = $@"/search/record-catalogue-click?url={encodedCatalogueUrl}&nodePathId={nodePathId}&itemIndex={payload?.HitNumber}
&pageIndex={pagingModel.CurrentPage}&totalNumberOfHits={payload?.SearchSignal?.Stats?.TotalHits}&searchText={searchString}&catalogueId={catalogueId}
&GroupId={groupId}&searchId={searchSignal?.SearchId}&timeOfSearch={searchSignal?.TimeOfSearch}&userQuery={HttpUtility.UrlEncode(searchSignal?.UserQuery)}
&query={searchSignalQueryEncoded}&name={payload?.DocumentFields?.Name}";
return url;
}
}

Expand Down Expand Up @@ -71,7 +73,7 @@
<div class="nhsuk-card__content catalogue-card-content">

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

<div class="nhsuk-card__description catalogue-card-body">
Expand Down
24 changes: 10 additions & 14 deletions LearningHub.Nhs.WebUI/Views/Search/_ResourceSearchResult.cshtml
Original file line number Diff line number Diff line change
Expand Up @@ -7,28 +7,24 @@
@using LearningHub.Nhs.Models.Search.SearchFeedback;
@using LearningHub.Nhs.Models.Enums;
@using LearningHub.Nhs.WebUI.Models.Search;
@using LearningHub.Nhs.Models.Search.SearchClick;

@{
var resourceResult = Model.ResourceSearchResult;
var pagingModel = Model.ResourceResultPaging;
var index = pagingModel.CurrentPage * pagingModel.PageSize;
var searchString = HttpUtility.UrlEncode(Model.SearchString);
var searchSignal = resourceResult.Feedback?.FeedbackAction?.Payload?.SearchSignal;
int qVectorIndex = searchSignal.Query?.IndexOf("q_vector") ?? -1;
var searchSignalQuery = searchSignal?.Query;
// Check if "q_vector" is found in the string. if Yes, Remove "q_vector" and everything after it
if (qVectorIndex != -1)
{
searchSignalQuery = searchSignal?.Query.Substring(0, qVectorIndex);
}
string GetUrl(int resourceReferenceId, int itemIndex, int nodePathId)

string GetUrl(int resourceReferenceId, int itemIndex, int nodePathId, SearchClickPayloadModel payload)
{
var searchSignal = payload?.SearchSignal;
string groupId = HttpUtility.UrlEncode(Model.GroupId.ToString());
string searchSignalQueryEncoded = HttpUtility.UrlEncode(HttpUtility.UrlDecode(searchSignalQuery));
string searchSignalQueryEncoded = HttpUtility.UrlEncode(HttpUtility.UrlDecode(searchSignal?.Query));

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

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

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

@if (provider != null)
Expand Down
2 changes: 1 addition & 1 deletion WebAPI/LearningHub.Nhs.API/LearningHub.Nhs.Api.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
<PackageReference Include="elfhHub.Nhs.Models" Version="3.0.8" />
<PackageReference Include="IdentityServer4.AccessTokenValidation" Version="3.0.1" />
<PackageReference Include="LearningHub.Nhs.Caching" Version="2.0.0" />
<PackageReference Include="LearningHub.Nhs.Models" Version="3.0.39" />
<PackageReference Include="LearningHub.Nhs.Models" Version="3.0.40" />
<PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.19.0" />
<PackageReference Include="Microsoft.AspNetCore" Version="2.2.0" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="6.0.0" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
<ItemGroup>
<PackageReference Include="elfhHub.Nhs.Models" Version="3.0.8" />
<PackageReference Include="LearningHub.Nhs.Caching" Version="2.0.0" />
<PackageReference Include="LearningHub.Nhs.Models" Version="3.0.39" />
<PackageReference Include="LearningHub.Nhs.Models" Version="3.0.40" />
<PackageReference Update="StyleCop.Analyzers" Version="1.1.118">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
<PackageReference Include="elfhHub.Nhs.Models" Version="3.0.8" />
<PackageReference Include="FluentAssertions" Version="6.2.0" />
<PackageReference Include="LearningHub.Nhs.Caching" Version="2.0.0" />
<PackageReference Include="LearningHub.Nhs.Models" Version="3.0.39" />
<PackageReference Include="LearningHub.Nhs.Models" Version="3.0.40" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.Core" Version="2.2.5" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.0.0" />
<PackageReference Include="Moq" Version="4.16.1" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
<ItemGroup>
<PackageReference Include="elfhHub.Nhs.Models" Version="3.0.8" />
<PackageReference Include="LearningHub.Nhs.Caching" Version="2.0.0" />
<PackageReference Include="LearningHub.Nhs.Models" Version="3.0.39" />
<PackageReference Include="LearningHub.Nhs.Models" Version="3.0.40" />
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="6.0.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="6.0.0" />
<PackageReference Update="StyleCop.Analyzers" Version="1.1.118">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
<ItemGroup>
<PackageReference Include="elfhHub.Nhs.Models" Version="3.0.8" />
<PackageReference Include="LearningHub.Nhs.Caching" Version="2.0.0" />
<PackageReference Include="LearningHub.Nhs.Models" Version="3.0.39" />
<PackageReference Include="LearningHub.Nhs.Models" Version="3.0.40" />
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="6.0.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="6.0.0" />
<PackageReference Update="StyleCop.Analyzers" Version="1.1.118">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
<PackageReference Include="Azure.Storage.Queues" Version="12.11.0" />
<PackageReference Include="elfhHub.Nhs.Models" Version="3.0.8" />
<PackageReference Include="LearningHub.Nhs.Caching" Version="2.0.0" />
<PackageReference Include="LearningHub.Nhs.Models" Version="3.0.39" />
<PackageReference Include="LearningHub.Nhs.Models" Version="3.0.40" />
<PackageReference Include="System.Data.SqlClient" Version="4.8.5" />
<PackageReference Update="StyleCop.Analyzers" Version="1.1.118">
<PrivateAssets>all</PrivateAssets>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
<PackageReference Include="EntityFrameworkCore.Testing.Moq" Version="4.0.0" />
<PackageReference Include="FluentAssertions" Version="6.2.0" />
<PackageReference Include="LearningHub.Nhs.Caching" Version="2.0.0" />
<PackageReference Include="LearningHub.Nhs.Models" Version="3.0.39" />
<PackageReference Include="LearningHub.Nhs.Models" Version="3.0.40" />
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="6.0.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="6.0.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="6.0.0" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
<PackageReference Include="elfhHub.Nhs.Models" Version="3.0.8" />
<PackageReference Include="FluentValidation.AspNetCore" Version="10.3.4" />
<PackageReference Include="LearningHub.Nhs.Caching" Version="2.0.0" />
<PackageReference Include="LearningHub.Nhs.Models" Version="3.0.39" />
<PackageReference Include="LearningHub.Nhs.Models" Version="3.0.40" />
<PackageReference Include="Microsoft.Azure.Management.DataFactory" Version="4.28.0" />
<PackageReference Include="Microsoft.Azure.Management.Media" Version="5.0.0" />
<PackageReference Include="Microsoft.IdentityModel.Clients.ActiveDirectory" Version="5.2.9" />
Expand Down
Loading
Loading