diff --git a/AdminUI/LearningHub.Nhs.AdminUI/LearningHub.Nhs.AdminUI.csproj b/AdminUI/LearningHub.Nhs.AdminUI/LearningHub.Nhs.AdminUI.csproj index 0b26b9cd7..3eb1d8323 100644 --- a/AdminUI/LearningHub.Nhs.AdminUI/LearningHub.Nhs.AdminUI.csproj +++ b/AdminUI/LearningHub.Nhs.AdminUI/LearningHub.Nhs.AdminUI.csproj @@ -89,7 +89,7 @@ - + diff --git a/LearningHub.Nhs.WebUI/Controllers/SearchController.cs b/LearningHub.Nhs.WebUI/Controllers/SearchController.cs index ac314f6c9..0d4081a5d 100644 --- a/LearningHub.Nhs.WebUI/Controllers/SearchController.cs +++ b/LearningHub.Nhs.WebUI/Controllers/SearchController.cs @@ -6,6 +6,7 @@ namespace LearningHub.Nhs.WebUI.Controllers using System.Net.Http; using System.Threading.Tasks; using LearningHub.Nhs.Models.Search; + using LearningHub.Nhs.Models.Search.SearchClick; using LearningHub.Nhs.WebUI.Filters; using LearningHub.Nhs.WebUI.Interfaces; using LearningHub.Nhs.WebUI.Models.Search; @@ -308,5 +309,52 @@ public async Task GetAutoSuggestion(string term) var autoSuggestions = await this.searchService.GetAutoSuggestionList(term); return this.PartialView("_AutoComplete", autoSuggestions); } + + /// + /// Records the AutoSuggestion Click logs. + /// + /// the term. + /// the searchType. + /// click Payload Model. + /// itemIndex. + /// total Number Of Hits. + /// containerId. + /// name. + /// query. + /// userQuery. + /// searchId. + /// timeOfSearch. + /// title. + /// Action result. + [HttpGet("record-autosuggestion-click")] + public IActionResult RecordAutoSuggestionClick(string term, string url, string clickTargetUrl, int itemIndex, int totalNumberOfHits, string containerId, string name, string query, string userQuery, string searchId, long timeOfSearch, string title) + { + AutoSuggestionClickPayloadModel clickPayloadModel = new AutoSuggestionClickPayloadModel + { + ClickTargetUrl = clickTargetUrl, + ContainerId = containerId, + HitNumber = itemIndex, + TimeOfClick = timeOfSearch, + DocumentFields = new SearchClickDocumentModel + { + Name = name, + Title = title, + }, + SearchSignal = new SearchClickSignalModel + { + Query = query, + SearchId = searchId, + TimeOfSearch = timeOfSearch, + UserQuery = userQuery, + Stats = new SearchClickStatsModel + { + TotalHits = totalNumberOfHits, + }, + }, + }; + + this.searchService.SendAutoSuggestionClickActionAsync(clickPayloadModel); + return this.Redirect(url); + } } } \ No newline at end of file diff --git a/LearningHub.Nhs.WebUI/Interfaces/ISearchService.cs b/LearningHub.Nhs.WebUI/Interfaces/ISearchService.cs index 8a2f0aec1..3f083bc38 100644 --- a/LearningHub.Nhs.WebUI/Interfaces/ISearchService.cs +++ b/LearningHub.Nhs.WebUI/Interfaces/ISearchService.cs @@ -3,6 +3,7 @@ using System.Security.Principal; using System.Threading.Tasks; using LearningHub.Nhs.Models.Search; + using LearningHub.Nhs.Models.Search.SearchClick; using LearningHub.Nhs.WebUI.Models.Search; /// @@ -91,5 +92,12 @@ public interface ISearchService /// The term. /// The . Task GetAutoSuggestionList(string term); + + /// + /// The Send AutoSuggestion Click Action Async. + /// + /// The click Payload Model. + /// The . + Task SendAutoSuggestionClickActionAsync(AutoSuggestionClickPayloadModel clickPayloadModel); } } diff --git a/LearningHub.Nhs.WebUI/LearningHub.Nhs.WebUI.csproj b/LearningHub.Nhs.WebUI/LearningHub.Nhs.WebUI.csproj index f20842a9a..b49d33805 100644 --- a/LearningHub.Nhs.WebUI/LearningHub.Nhs.WebUI.csproj +++ b/LearningHub.Nhs.WebUI/LearningHub.Nhs.WebUI.csproj @@ -108,7 +108,7 @@ - + diff --git a/LearningHub.Nhs.WebUI/Services/SearchService.cs b/LearningHub.Nhs.WebUI/Services/SearchService.cs index c8628270f..16680a81e 100644 --- a/LearningHub.Nhs.WebUI/Services/SearchService.cs +++ b/LearningHub.Nhs.WebUI/Services/SearchService.cs @@ -13,6 +13,7 @@ namespace LearningHub.Nhs.WebUI.Services using LearningHub.Nhs.Models.Common; using LearningHub.Nhs.Models.Enums; using LearningHub.Nhs.Models.Search; + using LearningHub.Nhs.Models.Search.SearchClick; using LearningHub.Nhs.WebUI.Configuration; using LearningHub.Nhs.WebUI.Helpers; using LearningHub.Nhs.WebUI.Interfaces; @@ -691,6 +692,44 @@ public async Task GetAutoSuggestionList(string term) return viewModel; } + /// + /// The Send AutoSuggestion Click Action. + /// + /// The search action catalogue model. + /// The . + public async Task SendAutoSuggestionClickActionAsync(AutoSuggestionClickPayloadModel clickPayloadModel) + { + try + { + var client = await this.LearningHubHttpClient.GetClientAsync(); + + var json = JsonConvert.SerializeObject(clickPayloadModel); + var stringContent = new StringContent(json, UnicodeEncoding.UTF8, "application/json"); + + var request = $"Search/SendAutoSuggestionClickAction"; + var response = await client.PostAsync(request, stringContent).ConfigureAwait(false); + + if (response.IsSuccessStatusCode) + { + var result = response.Content.ReadAsStringAsync().Result; + ApiResponse apiResponse = JsonConvert.DeserializeObject(result) as ApiResponse; + + if (!apiResponse.Success) + { + throw new Exception("Error sending AutoSuggestion click Action!"); + } + } + else + { + throw new Exception(string.Format("Error sending AutoSuggestion click Action!")); + } + } + catch (Exception ex) + { + throw new Exception(string.Format("Error sending AutoSuggestion click Action: {0}", ex.Message)); + } + } + /// /// The RemoveHtmlTags. /// diff --git a/LearningHub.Nhs.WebUI/Views/Search/_AutoComplete.cshtml b/LearningHub.Nhs.WebUI/Views/Search/_AutoComplete.cshtml index ba031ab0e..151b27f98 100644 --- a/LearningHub.Nhs.WebUI/Views/Search/_AutoComplete.cshtml +++ b/LearningHub.Nhs.WebUI/Views/Search/_AutoComplete.cshtml @@ -1,7 +1,35 @@ @model LearningHub.Nhs.Models.Search.AutoSuggestionModel; + +@using LearningHub.Nhs.Models.Search.SearchClick; +@using Microsoft.AspNetCore.WebUtilities +@using System.Web @{ var counter = 0; var counter_res = 0; + string GetUrl(string term, string searchType, AutoSuggestionClickPayloadModel payload, string reference, int? resourceReferenceId) + { + var url = string.Empty; + if (!string.IsNullOrEmpty(reference) && searchType == "Catalogues") + { + url = "/Catalogue/" + reference; + } + else if ((resourceReferenceId > 0) && searchType == "Resource") + { + url = "/Resource/" + resourceReferenceId; + } + else if (!string.IsNullOrEmpty(term) && searchType == "Concepts") + { + url = "/Search/results?term=" + term; + } + else + { + url = "/Search/results?term=" + term; + } + + return $@"/search/record-autosuggestion-click?term={term}&url={url}&clickTargetUrl={payload.ClickTargetUrl}&itemIndex={payload?.HitNumber}&&totalNumberOfHits={payload?.SearchSignal?.Stats?.TotalHits} +&containerId={payload?.ContainerId}&name={payload?.DocumentFields.Name}&query={payload?.SearchSignal?.Query}&userQuery={HttpUtility.UrlEncode(payload?.SearchSignal?.UserQuery)} +&searchId={payload?.SearchSignal?.SearchId}&timeOfSearch={payload?.SearchSignal?.TimeOfSearch}&title={payload?.DocumentFields?.Title}"; + } } @if (Model != null) { @@ -9,7 +37,7 @@ { counter++;
  • - + @@ -21,7 +49,7 @@ { counter_res++;
  • - + @@ -33,7 +61,7 @@ @foreach (var item in Model.CatalogueDocument.CatalogueDocumentList) {
  • - + diff --git a/WebAPI/LearningHub.Nhs.API/Controllers/SearchController.cs b/WebAPI/LearningHub.Nhs.API/Controllers/SearchController.cs index 8b0b9beb7..ea4d10d04 100644 --- a/WebAPI/LearningHub.Nhs.API/Controllers/SearchController.cs +++ b/WebAPI/LearningHub.Nhs.API/Controllers/SearchController.cs @@ -7,6 +7,7 @@ using LearningHub.Nhs.Models.Common; using LearningHub.Nhs.Models.Enums; using LearningHub.Nhs.Models.Search; + using LearningHub.Nhs.Models.Search.SearchClick; using LearningHub.Nhs.Models.Validation; using LearningHub.Nhs.Repository.Interface; using LearningHub.Nhs.Services.Interface; @@ -233,11 +234,35 @@ public async Task GetAllCatalogueSearchResult(AllCatalogueSearchR [Route("GetAutoSuggestionResult/{term}")] public async Task GetAutoSuggestionResults(string term) { - var autosuggestionViewModel = new AutoSuggestionModel(); - autosuggestionViewModel = await this.searchService.GetAutoSuggestionResultsAsync(term); + var autosuggestionViewModel = await this.GetAutoSuggestions(term); return this.Ok(autosuggestionViewModel); } + /// + /// Send AutoSuggestion Click action. + /// + /// + /// The click Payload model. + /// + /// + /// Nothing. + /// + [HttpPost] + [Route("SendAutoSuggestionClickAction")] + public async Task SendAutoSuggestionClickAction(AutoSuggestionClickPayloadModel clickPayloadModel) + { + var eventCreated = await this.searchService.SendAutoSuggestionEventAsync(clickPayloadModel); + + if (eventCreated) + { + return this.Ok(new ApiResponse(true)); + } + else + { + return this.BadRequest(new ApiResponse(false)); + } + } + /// /// Get search result. /// @@ -480,5 +505,36 @@ private async Task GetAllCatalogueResults(AllCatalo return searchViewModel; } + + /// + /// Get AutoSuggestion Results. + /// + /// term. + /// The . + private async Task GetAutoSuggestions(string term) + { + var autosuggestionModel = await this.searchService.GetAutoSuggestionResultsAsync(term); + if (autosuggestionModel != null) + { + var documents = autosuggestionModel.CatalogueDocument.CatalogueDocumentList; + var documentIds = documents.Select(x => int.Parse(x.Id)).ToList(); + var catalogues = this.catalogueService.GetCataloguesByNodeId(documentIds); + + foreach (var document in documents) + { + var catalogue = catalogues.SingleOrDefault(x => x.NodeId == int.Parse(document.Id)); + if (catalogue == null) + { + continue; + } + + document.Url = catalogue.Url; + } + + autosuggestionModel.CatalogueDocument.CatalogueDocumentList = documents; + } + + return autosuggestionModel; + } } } \ No newline at end of file diff --git a/WebAPI/LearningHub.Nhs.API/LearningHub.Nhs.Api.csproj b/WebAPI/LearningHub.Nhs.API/LearningHub.Nhs.Api.csproj index 780f22f77..86a1a5dd3 100644 --- a/WebAPI/LearningHub.Nhs.API/LearningHub.Nhs.Api.csproj +++ b/WebAPI/LearningHub.Nhs.API/LearningHub.Nhs.Api.csproj @@ -27,7 +27,7 @@ - + diff --git a/WebAPI/LearningHub.Nhs.API/appsettings.json b/WebAPI/LearningHub.Nhs.API/appsettings.json index 623e0cd84..6e5e930ef 100644 --- a/WebAPI/LearningHub.Nhs.API/appsettings.json +++ b/WebAPI/LearningHub.Nhs.API/appsettings.json @@ -84,19 +84,20 @@ }, "FindWise": { - "IndexUrl": "", - "SearchUrl": "", + "IndexUrl": "", + "SearchUrl": "", "CollectionIds": { "Resource": "", "Catalogue": "", "AutoSuggestion": "" }, - "UrlSearchComponent": "rest/apps/HEE/searchers/{0}", - "UrlClickComponent": "rest/apps/HEE/searchers/hee/signals/hee/signal/click", - "Token": "", - "MaximumDescriptionLength": 150, - "IndexMethod": "/rest/v2/collections/{0}/documents", - "DescriptionLengthLimit": 3000 + "UrlSearchComponent": "rest/apps/HEE/searchers/{0}", + "UrlClickComponent": "rest/apps/HEE/searchers/hee/signals/hee/signal/click", + "UrlAutoSuggestionClickComponent": "rest/apps/HEE/searchers/hee/signals/hee/signal/click-hee", + "Token": "", + "MaximumDescriptionLength": 150, + "IndexMethod": "/rest/v2/collections/{0}/documents", + "DescriptionLengthLimit": 3000 }, "Notifications": { "PublishResourceTimeToProcessInSec": 30, diff --git a/WebAPI/LearningHub.Nhs.Api.Shared/Configuration/FindwiseSettings.cs b/WebAPI/LearningHub.Nhs.Api.Shared/Configuration/FindwiseSettings.cs index c68ab9dd9..aa3802eee 100644 --- a/WebAPI/LearningHub.Nhs.Api.Shared/Configuration/FindwiseSettings.cs +++ b/WebAPI/LearningHub.Nhs.Api.Shared/Configuration/FindwiseSettings.cs @@ -25,6 +25,11 @@ public class FindwiseSettings ///
  • public string UrlClickComponent { get; set; } + /// + /// Gets or sets the url AutoSuggestion click component. + /// + public string UrlAutoSuggestionClickComponent { get; set; } + /// /// Gets or sets the token. /// diff --git a/WebAPI/LearningHub.Nhs.Api.Shared/LearningHub.Nhs.Api.Shared.csproj b/WebAPI/LearningHub.Nhs.Api.Shared/LearningHub.Nhs.Api.Shared.csproj index 829bad9be..831497bc2 100644 --- a/WebAPI/LearningHub.Nhs.Api.Shared/LearningHub.Nhs.Api.Shared.csproj +++ b/WebAPI/LearningHub.Nhs.Api.Shared/LearningHub.Nhs.Api.Shared.csproj @@ -9,7 +9,7 @@ - + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/WebAPI/LearningHub.Nhs.Api.UnitTests/LearningHub.Nhs.Api.UnitTests.csproj b/WebAPI/LearningHub.Nhs.Api.UnitTests/LearningHub.Nhs.Api.UnitTests.csproj index 72f794c05..6da2ec625 100644 --- a/WebAPI/LearningHub.Nhs.Api.UnitTests/LearningHub.Nhs.Api.UnitTests.csproj +++ b/WebAPI/LearningHub.Nhs.Api.UnitTests/LearningHub.Nhs.Api.UnitTests.csproj @@ -11,7 +11,7 @@ - + diff --git a/WebAPI/LearningHub.Nhs.Repository.Interface/LearningHub.Nhs.Repository.Interface.csproj b/WebAPI/LearningHub.Nhs.Repository.Interface/LearningHub.Nhs.Repository.Interface.csproj index 7d7158ca5..ac60ee1b6 100644 --- a/WebAPI/LearningHub.Nhs.Repository.Interface/LearningHub.Nhs.Repository.Interface.csproj +++ b/WebAPI/LearningHub.Nhs.Repository.Interface/LearningHub.Nhs.Repository.Interface.csproj @@ -9,7 +9,7 @@ - + diff --git a/WebAPI/LearningHub.Nhs.Repository/LearningHub.Nhs.Repository.csproj b/WebAPI/LearningHub.Nhs.Repository/LearningHub.Nhs.Repository.csproj index ad69ef225..3027cdbc6 100644 --- a/WebAPI/LearningHub.Nhs.Repository/LearningHub.Nhs.Repository.csproj +++ b/WebAPI/LearningHub.Nhs.Repository/LearningHub.Nhs.Repository.csproj @@ -9,7 +9,7 @@ - + diff --git a/WebAPI/LearningHub.Nhs.Services.Interface/ISearchService.cs b/WebAPI/LearningHub.Nhs.Services.Interface/ISearchService.cs index 0fb99c731..aa13fdf0e 100644 --- a/WebAPI/LearningHub.Nhs.Services.Interface/ISearchService.cs +++ b/WebAPI/LearningHub.Nhs.Services.Interface/ISearchService.cs @@ -2,6 +2,7 @@ { using System.Threading.Tasks; using LearningHub.Nhs.Models.Search; + using LearningHub.Nhs.Models.Search.SearchClick; using LearningHub.Nhs.Models.Search.SearchFeedback; using LearningHub.Nhs.Models.Validation; @@ -182,5 +183,12 @@ public interface ISearchService /// the term. /// The . Task GetAutoSuggestionResultsAsync(string term); + + /// + /// The Send AutoSuggestion Event Async. + /// + /// The click Payload Model. + /// The . + Task SendAutoSuggestionEventAsync(AutoSuggestionClickPayloadModel clickPayloadModel); } } diff --git a/WebAPI/LearningHub.Nhs.Services.Interface/LearningHub.Nhs.Services.Interface.csproj b/WebAPI/LearningHub.Nhs.Services.Interface/LearningHub.Nhs.Services.Interface.csproj index 3755bd4a9..b49011e8c 100644 --- a/WebAPI/LearningHub.Nhs.Services.Interface/LearningHub.Nhs.Services.Interface.csproj +++ b/WebAPI/LearningHub.Nhs.Services.Interface/LearningHub.Nhs.Services.Interface.csproj @@ -16,7 +16,7 @@ - + all diff --git a/WebAPI/LearningHub.Nhs.Services.UnitTests/LearningHub.Nhs.Services.UnitTests.csproj b/WebAPI/LearningHub.Nhs.Services.UnitTests/LearningHub.Nhs.Services.UnitTests.csproj index 97879cf14..ef4a2180b 100644 --- a/WebAPI/LearningHub.Nhs.Services.UnitTests/LearningHub.Nhs.Services.UnitTests.csproj +++ b/WebAPI/LearningHub.Nhs.Services.UnitTests/LearningHub.Nhs.Services.UnitTests.csproj @@ -13,7 +13,7 @@ - + diff --git a/WebAPI/LearningHub.Nhs.Services/LearningHub.Nhs.Services.csproj b/WebAPI/LearningHub.Nhs.Services/LearningHub.Nhs.Services.csproj index 9b9bb5f7d..9a2ab84b2 100644 --- a/WebAPI/LearningHub.Nhs.Services/LearningHub.Nhs.Services.csproj +++ b/WebAPI/LearningHub.Nhs.Services/LearningHub.Nhs.Services.csproj @@ -13,7 +13,7 @@ - + diff --git a/WebAPI/LearningHub.Nhs.Services/SearchService.cs b/WebAPI/LearningHub.Nhs.Services/SearchService.cs index c98bddfcf..d05c73cb5 100644 --- a/WebAPI/LearningHub.Nhs.Services/SearchService.cs +++ b/WebAPI/LearningHub.Nhs.Services/SearchService.cs @@ -633,6 +633,25 @@ public async Task GetAutoSuggestionResultsAsync(string term } } + /// + /// The AutoSuggestion Event action async. + /// + /// + /// The clic kPayload Model. + /// + /// + /// The . + /// + public async Task SendAutoSuggestionEventAsync(AutoSuggestionClickPayloadModel clickPayloadModel) + { + clickPayloadModel.TimeOfClick = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(); + clickPayloadModel.SearchSignal.ProfileSignature.ApplicationId = ApplicationId; + clickPayloadModel.SearchSignal.ProfileSignature.ProfileType = ProfileType; + clickPayloadModel.SearchSignal.ProfileSignature.ProfileId = this.settings.Findwise.CollectionIds.AutoSuggestion; + + return await this.SendAutoSuggestionEventClickAsync(clickPayloadModel); + } + /// /// Send search click payload. /// @@ -685,6 +704,55 @@ private async Task SendSearchEventClickAsync(SearchClickPayloadModel searc } } + /// + /// Send auto suggestion click payload. + /// + /// search click payload model. + /// + /// The . + /// + private async Task SendAutoSuggestionEventClickAsync(AutoSuggestionClickPayloadModel clickPayloadModel) + { + try + { + if (string.IsNullOrEmpty(this.settings.Findwise.UrlAutoSuggestionClickComponent)) + { + this.Logger.LogWarning($"The UrlClickComponent is not configured. Auto suggestion click event not send to FindWise."); + } + else + { + var json = JsonConvert.SerializeObject(clickPayloadModel); + var base64EncodedString = BinaryFormatterHelper.Base64EncodeObject(json); + + var request = $"{this.settings.Findwise.UrlAutoSuggestionClickComponent}?payload={base64EncodedString}"; + + var client = await this.FindWiseHttpClient.GetClient(this.settings.Findwise.SearchUrl); + var response = await client.PostAsync(request, null).ConfigureAwait(false); + + if (response.StatusCode == System.Net.HttpStatusCode.Unauthorized || response.StatusCode == System.Net.HttpStatusCode.Forbidden) + { + this.Logger.LogError($"Click event save to FindWise failed for Auto suggestion: {clickPayloadModel.ClickTargetUrl} HTTP Status Code: {response.StatusCode}"); + throw new Exception("AccessDenied"); + } + else if (!response.IsSuccessStatusCode) + { + this.Logger.LogError($"Click event save to FindWise failed for Auto suggestion: {clickPayloadModel.ClickTargetUrl} HTTP Status Code: {response.StatusCode}"); + throw new Exception($"Click event save to FindWise failed for Auto suggestion: {json}"); + } + else + { + return true; + } + } + + return false; + } + catch (Exception ex) + { + throw new Exception($"Click event save to FindWise failed for Auto suggestion: {clickPayloadModel.ClickTargetUrl} : {ex.Message}"); + } + } + private string EncodeSearchText(string searchText) { string specialSearchCharacters = this.settings.SpecialSearchCharacters; diff --git a/WebAPI/MigrationTool/LearningHub.Nhs.Migration.ConsoleApp/LearningHub.Nhs.Migration.ConsoleApp.csproj b/WebAPI/MigrationTool/LearningHub.Nhs.Migration.ConsoleApp/LearningHub.Nhs.Migration.ConsoleApp.csproj index aef6c8475..28730e740 100644 --- a/WebAPI/MigrationTool/LearningHub.Nhs.Migration.ConsoleApp/LearningHub.Nhs.Migration.ConsoleApp.csproj +++ b/WebAPI/MigrationTool/LearningHub.Nhs.Migration.ConsoleApp/LearningHub.Nhs.Migration.ConsoleApp.csproj @@ -24,7 +24,7 @@ - + all diff --git a/WebAPI/MigrationTool/LearningHub.Nhs.Migration.Interface/LearningHub.Nhs.Migration.Interface.csproj b/WebAPI/MigrationTool/LearningHub.Nhs.Migration.Interface/LearningHub.Nhs.Migration.Interface.csproj index 8c01c9143..d08aa9391 100644 --- a/WebAPI/MigrationTool/LearningHub.Nhs.Migration.Interface/LearningHub.Nhs.Migration.Interface.csproj +++ b/WebAPI/MigrationTool/LearningHub.Nhs.Migration.Interface/LearningHub.Nhs.Migration.Interface.csproj @@ -9,7 +9,7 @@ - + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/WebAPI/MigrationTool/LearningHub.Nhs.Migration.Models/LearningHub.Nhs.Migration.Models.csproj b/WebAPI/MigrationTool/LearningHub.Nhs.Migration.Models/LearningHub.Nhs.Migration.Models.csproj index a80919111..28916df8b 100644 --- a/WebAPI/MigrationTool/LearningHub.Nhs.Migration.Models/LearningHub.Nhs.Migration.Models.csproj +++ b/WebAPI/MigrationTool/LearningHub.Nhs.Migration.Models/LearningHub.Nhs.Migration.Models.csproj @@ -10,7 +10,7 @@ - + all diff --git a/WebAPI/MigrationTool/LearningHub.Nhs.Migration.Staging.Repository/LearningHub.Nhs.Migration.Staging.Repository.csproj b/WebAPI/MigrationTool/LearningHub.Nhs.Migration.Staging.Repository/LearningHub.Nhs.Migration.Staging.Repository.csproj index c65d9208e..e71105e0b 100644 --- a/WebAPI/MigrationTool/LearningHub.Nhs.Migration.Staging.Repository/LearningHub.Nhs.Migration.Staging.Repository.csproj +++ b/WebAPI/MigrationTool/LearningHub.Nhs.Migration.Staging.Repository/LearningHub.Nhs.Migration.Staging.Repository.csproj @@ -9,7 +9,7 @@ - + diff --git a/WebAPI/MigrationTool/LearningHub.Nhs.Migration.UnitTests/LearningHub.Nhs.Migration.UnitTests.csproj b/WebAPI/MigrationTool/LearningHub.Nhs.Migration.UnitTests/LearningHub.Nhs.Migration.UnitTests.csproj index 416c85de0..9addb85a0 100644 --- a/WebAPI/MigrationTool/LearningHub.Nhs.Migration.UnitTests/LearningHub.Nhs.Migration.UnitTests.csproj +++ b/WebAPI/MigrationTool/LearningHub.Nhs.Migration.UnitTests/LearningHub.Nhs.Migration.UnitTests.csproj @@ -10,7 +10,7 @@ - + diff --git a/WebAPI/MigrationTool/LearningHub.Nhs.Migration/LearningHub.Nhs.Migration.csproj b/WebAPI/MigrationTool/LearningHub.Nhs.Migration/LearningHub.Nhs.Migration.csproj index 9c68fccf6..8e0c512aa 100644 --- a/WebAPI/MigrationTool/LearningHub.Nhs.Migration/LearningHub.Nhs.Migration.csproj +++ b/WebAPI/MigrationTool/LearningHub.Nhs.Migration/LearningHub.Nhs.Migration.csproj @@ -12,7 +12,7 @@ - + all runtime; build; native; contentfiles; analyzers; buildtransitive