From 5d1cb456cc508b44a178f9ab55dc0208d56c48ca Mon Sep 17 00:00:00 2001 From: Sarathlal Sarangadharan Date: Fri, 7 Jun 2024 14:45:18 +0100 Subject: [PATCH 1/3] TD-4234: Modified GetExternalContentDetailsById (Web API) API call and change it to async Call --- .../Controllers/ResourceController.cs | 4 ++-- .../Resources/IResourceVersionRepository.cs | 2 +- .../Resources/ResourceVersionRepository.cs | 6 +++--- .../IResourceService.cs | 2 +- WebAPI/LearningHub.Nhs.Services/ResourceService.cs | 10 +++++----- 5 files changed, 12 insertions(+), 12 deletions(-) diff --git a/WebAPI/LearningHub.Nhs.API/Controllers/ResourceController.cs b/WebAPI/LearningHub.Nhs.API/Controllers/ResourceController.cs index 18044a758..b556e211d 100644 --- a/WebAPI/LearningHub.Nhs.API/Controllers/ResourceController.cs +++ b/WebAPI/LearningHub.Nhs.API/Controllers/ResourceController.cs @@ -496,9 +496,9 @@ public async Task GetScormDetailsAsync(int resourceVersionId) /// The resourceVersionId. /// The . [HttpGet("GetExternalContentDetailsById/{resourceVersionId}")] - public ActionResult GetScormContentDetailsById(int resourceVersionId) + public async Task GetScormContentDetailsById(int resourceVersionId) { - return this.Ok(this.resourceService.GetExternalContentDetails(resourceVersionId, this.CurrentUserId)); + return this.Ok(await this.resourceService.GetExternalContentDetails(resourceVersionId, this.CurrentUserId)); } /// diff --git a/WebAPI/LearningHub.Nhs.Repository.Interface/Resources/IResourceVersionRepository.cs b/WebAPI/LearningHub.Nhs.Repository.Interface/Resources/IResourceVersionRepository.cs index 364cd851b..00cbff4d7 100644 --- a/WebAPI/LearningHub.Nhs.Repository.Interface/Resources/IResourceVersionRepository.cs +++ b/WebAPI/LearningHub.Nhs.Repository.Interface/Resources/IResourceVersionRepository.cs @@ -262,6 +262,6 @@ public interface IResourceVersionRepository : IGenericRepositoryresourceVersionId. /// userId. /// A representing the result of the asynchronous operation. - ExternalContentDetailsViewModel GetExternalContentDetails(int resourceVersionId, int userId); + Task GetExternalContentDetails(int resourceVersionId, int userId); } } diff --git a/WebAPI/LearningHub.Nhs.Repository/Resources/ResourceVersionRepository.cs b/WebAPI/LearningHub.Nhs.Repository/Resources/ResourceVersionRepository.cs index cd9860a9f..10bf4cddf 100644 --- a/WebAPI/LearningHub.Nhs.Repository/Resources/ResourceVersionRepository.cs +++ b/WebAPI/LearningHub.Nhs.Repository/Resources/ResourceVersionRepository.cs @@ -679,15 +679,15 @@ await this.DbContext.Database.ExecuteSqlRawAsync( /// resourceVersionId. /// userId. /// A representing the result of the asynchronous operation. - public ExternalContentDetailsViewModel GetExternalContentDetails(int resourceVersionId, int userId) + public async Task GetExternalContentDetails(int resourceVersionId, int userId) { try { var param0 = new SqlParameter("@resourceVersionId", SqlDbType.Int) { Value = resourceVersionId }; var param1 = new SqlParameter("@userId", SqlDbType.Int) { Value = userId }; - var externalContentDetailsViewModel = this.DbContext.ExternalContentDetailsViewModel.FromSqlRaw("[resources].[GetExternalContentDetails] @resourceVersionId, @userId", param0, param1).AsEnumerable().FirstOrDefault(); - + var retVal = await this.DbContext.ExternalContentDetailsViewModel.FromSqlRaw("[resources].[GetExternalContentDetails] @resourceVersionId, @userId", param0, param1).AsNoTracking().ToListAsync(); + ExternalContentDetailsViewModel externalContentDetailsViewModel = retVal.AsEnumerable().FirstOrDefault(); return externalContentDetailsViewModel; } catch (Exception ex) diff --git a/WebAPI/LearningHub.Nhs.Services.Interface/IResourceService.cs b/WebAPI/LearningHub.Nhs.Services.Interface/IResourceService.cs index 0ce7f5c00..c149110b9 100644 --- a/WebAPI/LearningHub.Nhs.Services.Interface/IResourceService.cs +++ b/WebAPI/LearningHub.Nhs.Services.Interface/IResourceService.cs @@ -104,7 +104,7 @@ public interface IResourceService /// The resourceVersionId. /// userId. /// The . - ExternalContentDetailsViewModel GetExternalContentDetails(int resourceVersionId, int userId); + Task GetExternalContentDetails(int resourceVersionId, int userId); /// /// The get image details by id async. diff --git a/WebAPI/LearningHub.Nhs.Services/ResourceService.cs b/WebAPI/LearningHub.Nhs.Services/ResourceService.cs index a97546303..6d6220122 100644 --- a/WebAPI/LearningHub.Nhs.Services/ResourceService.cs +++ b/WebAPI/LearningHub.Nhs.Services/ResourceService.cs @@ -2793,7 +2793,7 @@ public async Task GetGenericFileDetailsByIdAsync(int resou var vm = this.mapper.Map(genericFile); // User id is used to populate a field we aren't going to use, so we can just pass in the system user id. - var externalContentDetails = this.resourceVersionRepository.GetExternalContentDetails(resourceVersionId, 4); + var externalContentDetails = await this.resourceVersionRepository.GetExternalContentDetails(resourceVersionId, 4); if (!string.IsNullOrEmpty(externalContentDetails?.ExternalReference)) { vm.HostedContentUrl = $"{this.settings.LearningHubContentServerUrl}/{externalContentDetails.ExternalReference}/".ToLower(); @@ -2814,7 +2814,7 @@ public async Task GetHtmlDetailsByIdAsync(int resourceVer var vm = this.mapper.Map(htmlFile); // User id is used to populate a field we aren't going to use, so we can just pass in the system user id. - var externalContentDetails = this.resourceVersionRepository.GetExternalContentDetails(resourceVersionId, 4); + var externalContentDetails = await this.resourceVersionRepository.GetExternalContentDetails(resourceVersionId, 4); if (!string.IsNullOrEmpty(externalContentDetails?.ExternalReference)) { vm.HostedContentUrl = $"{this.settings.LearningHubContentServerUrl}/{externalContentDetails.ExternalReference}/".ToLower(); @@ -2835,7 +2835,7 @@ public async Task GetScormDetailsByIdAsync(int resourceVersionId var vm = this.mapper.Map(scorm); // User id is used to populate a field we aren't going to use, so we can just pass in the system user id. - var externalContentDetails = this.resourceVersionRepository.GetExternalContentDetails(resourceVersionId, 4); + var externalContentDetails = await this.resourceVersionRepository.GetExternalContentDetails(resourceVersionId, 4); if (!string.IsNullOrEmpty(externalContentDetails?.ExternalReference)) { vm.HostedContentUrl = $"{this.settings.LearningHubContentServerUrl}/{externalContentDetails.ExternalReference}/".ToLower(); @@ -2851,9 +2851,9 @@ public async Task GetScormDetailsByIdAsync(int resourceVersionId /// The resourceVersionId. /// userId. /// The . - public ExternalContentDetailsViewModel GetExternalContentDetails(int resourceVersionId, int userId) + public async Task GetExternalContentDetails(int resourceVersionId, int userId) { - var viewModel = this.resourceVersionRepository.GetExternalContentDetails(resourceVersionId, userId); + var viewModel = await this.resourceVersionRepository.GetExternalContentDetails(resourceVersionId, userId); if (viewModel != null) { viewModel.HostedContentUrl = $"{this.settings.LearningHubContentServerUrl}/{viewModel.ExternalReference}/".ToLower(); From 6385461d1f6893ccfc602727e9dc14d781c789ce Mon Sep 17 00:00:00 2001 From: Swapnamol Abraham Date: Tue, 11 Jun 2024 09:24:21 +0100 Subject: [PATCH 2/3] TD-4151 - Converted API call in to async --- .../Controllers/ContentServerController.cs | 8 ++++---- .../Resources/IScormResourceVersionRepository.cs | 4 ++-- .../Resources/ScormResourceVersionRepository.cs | 10 ++++++---- .../IScormContentServerService.cs | 4 ++-- .../ScormContentServerService.cs | 8 ++++---- 5 files changed, 18 insertions(+), 16 deletions(-) diff --git a/WebAPI/LearningHub.Nhs.API/Controllers/ContentServerController.cs b/WebAPI/LearningHub.Nhs.API/Controllers/ContentServerController.cs index 9c662942b..9a95d80b0 100644 --- a/WebAPI/LearningHub.Nhs.API/Controllers/ContentServerController.cs +++ b/WebAPI/LearningHub.Nhs.API/Controllers/ContentServerController.cs @@ -45,11 +45,11 @@ public ContentServerController( /// The . [HttpPost] [Route("GetContentDetailsByExternalUrl")] - public IActionResult GetContentDetailsByExternalUrl([FromBody] string externalUrl) + public async Task GetContentDetailsByExternalUrl([FromBody] string externalUrl) { string decodedUrl = HttpUtility.UrlDecode(externalUrl); - var details = this.scormContentServerService.GetContentDetailsByExternalUrl(decodedUrl); + var details = await this.scormContentServerService.GetContentDetailsByExternalUrl(decodedUrl); return this.Ok(details); } @@ -61,9 +61,9 @@ public IActionResult GetContentDetailsByExternalUrl([FromBody] string externalUr /// The . [HttpGet] [Route("GetContentDetailsByExternalReference/{externalReference}")] - public IActionResult GetContentDetailsByExternalReference(string externalReference) + public async Task GetContentDetailsByExternalReference(string externalReference) { - var details = this.scormContentServerService.GetContentDetailsByExternalReference(externalReference); + var details = await this.scormContentServerService.GetContentDetailsByExternalReference(externalReference); return this.Ok(details); } diff --git a/WebAPI/LearningHub.Nhs.Repository.Interface/Resources/IScormResourceVersionRepository.cs b/WebAPI/LearningHub.Nhs.Repository.Interface/Resources/IScormResourceVersionRepository.cs index 0dfa086cf..803a80896 100644 --- a/WebAPI/LearningHub.Nhs.Repository.Interface/Resources/IScormResourceVersionRepository.cs +++ b/WebAPI/LearningHub.Nhs.Repository.Interface/Resources/IScormResourceVersionRepository.cs @@ -30,7 +30,7 @@ public interface IScormResourceVersionRepository : IGenericRepository /// The external reference (guid). /// A ContentServerViewModel. - ContentServerViewModel GetContentServerDetailsByLHExternalReference(string externalReference); + Task GetContentServerDetailsByLHExternalReference(string externalReference); /// /// Gets the SCORM content details for a particular historic external URL. These historic URLs have to be supported to @@ -38,7 +38,7 @@ public interface IScormResourceVersionRepository : IGenericRepository /// The external Url. /// A ContentServerViewModel. - ContentServerViewModel GetScormContentServerDetailsByHistoricExternalUrl(string externalUrl); + Task GetScormContentServerDetailsByHistoricExternalUrl(string externalUrl); /// /// GetExternalReferenceByResourceId. diff --git a/WebAPI/LearningHub.Nhs.Repository/Resources/ScormResourceVersionRepository.cs b/WebAPI/LearningHub.Nhs.Repository/Resources/ScormResourceVersionRepository.cs index adb80296a..19205ee94 100644 --- a/WebAPI/LearningHub.Nhs.Repository/Resources/ScormResourceVersionRepository.cs +++ b/WebAPI/LearningHub.Nhs.Repository/Resources/ScormResourceVersionRepository.cs @@ -55,12 +55,13 @@ public async Task GetByResourceVersionIdAsync(int resource /// /// The external reference (guid). /// A ContentServerViewModel. - public ContentServerViewModel GetContentServerDetailsByLHExternalReference(string externalReference) + public async Task GetContentServerDetailsByLHExternalReference(string externalReference) { var param0 = new SqlParameter("@externalReference", SqlDbType.NVarChar) { Value = externalReference }; - var scormContentServerViewModel = this.DbContext.ContentServerViewModel.FromSqlRaw("[resources].[GetContentServerDetailsForLHExternalReference] @externalReference", param0).AsEnumerable().FirstOrDefault(); + var scormContentData = await this.DbContext.ContentServerViewModel.FromSqlRaw("[resources].[GetContentServerDetailsForLHExternalReference] @externalReference", param0).ToListAsync(); + ContentServerViewModel scormContentServerViewModel = scormContentData.AsEnumerable().FirstOrDefault(); return scormContentServerViewModel; } @@ -70,11 +71,12 @@ public ContentServerViewModel GetContentServerDetailsByLHExternalReference(strin /// /// The external Url. /// A ContentServerViewModel. - public ContentServerViewModel GetScormContentServerDetailsByHistoricExternalUrl(string externalUrl) + public async Task GetScormContentServerDetailsByHistoricExternalUrl(string externalUrl) { var param0 = new SqlParameter("@externalUrl", SqlDbType.NVarChar) { Value = externalUrl }; - var scormContentServerViewModel = this.DbContext.ContentServerViewModel.FromSqlRaw("[resources].[GetScormContentServerDetailsForHistoricExternalUrl] @externalUrl", param0).ToList().FirstOrDefault(); + var scormContentData = await this.DbContext.ContentServerViewModel.ToListAsync(); + ContentServerViewModel scormContentServerViewModel = scormContentData.FirstOrDefault(); return scormContentServerViewModel; } diff --git a/WebAPI/LearningHub.Nhs.Services.Interface/IScormContentServerService.cs b/WebAPI/LearningHub.Nhs.Services.Interface/IScormContentServerService.cs index 9bc5ffe50..8bd397e45 100644 --- a/WebAPI/LearningHub.Nhs.Services.Interface/IScormContentServerService.cs +++ b/WebAPI/LearningHub.Nhs.Services.Interface/IScormContentServerService.cs @@ -14,14 +14,14 @@ public interface IScormContentServerService /// /// The externalUrl. /// The . - ContentServerViewModel GetContentDetailsByExternalUrl(string externalUrl); + Task GetContentDetailsByExternalUrl(string externalUrl); /// /// The GetContentDetailsByExternalReference. /// /// The externalReference. /// The . - ContentServerViewModel GetContentDetailsByExternalReference(string externalReference); + Task GetContentDetailsByExternalReference(string externalReference); /// /// The LogResourceReferenceEventAsync. diff --git a/WebAPI/LearningHub.Nhs.Services/ScormContentServerService.cs b/WebAPI/LearningHub.Nhs.Services/ScormContentServerService.cs index 5fef76ecf..75fa13b5c 100644 --- a/WebAPI/LearningHub.Nhs.Services/ScormContentServerService.cs +++ b/WebAPI/LearningHub.Nhs.Services/ScormContentServerService.cs @@ -63,9 +63,9 @@ public ScormContentServerService( /// /// The externalUrl. /// The . - public ContentServerViewModel GetContentDetailsByExternalUrl(string externalUrl) + public async Task GetContentDetailsByExternalUrl(string externalUrl) { - var response = this.scormResourceVersionRepository.GetScormContentServerDetailsByHistoricExternalUrl(externalUrl); + var response = await this.scormResourceVersionRepository.GetScormContentServerDetailsByHistoricExternalUrl(externalUrl); return response; } @@ -75,9 +75,9 @@ public ContentServerViewModel GetContentDetailsByExternalUrl(string externalUrl) /// /// The externalReference. /// The . - public ContentServerViewModel GetContentDetailsByExternalReference(string externalReference) + public async Task GetContentDetailsByExternalReference(string externalReference) { - var response = this.scormResourceVersionRepository.GetContentServerDetailsByLHExternalReference(externalReference); + var response = await this.scormResourceVersionRepository.GetContentServerDetailsByLHExternalReference(externalReference); return response; } From 85076ee03d5c85256baa72c59d468e1cc0e98e60 Mon Sep 17 00:00:00 2001 From: Swapnamol Abraham Date: Tue, 11 Jun 2024 09:35:38 +0100 Subject: [PATCH 3/3] Added asnotracking() --- .../Resources/ScormResourceVersionRepository.cs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/WebAPI/LearningHub.Nhs.Repository/Resources/ScormResourceVersionRepository.cs b/WebAPI/LearningHub.Nhs.Repository/Resources/ScormResourceVersionRepository.cs index 19205ee94..5272bd7f8 100644 --- a/WebAPI/LearningHub.Nhs.Repository/Resources/ScormResourceVersionRepository.cs +++ b/WebAPI/LearningHub.Nhs.Repository/Resources/ScormResourceVersionRepository.cs @@ -59,7 +59,7 @@ public async Task GetContentServerDetailsByLHExternalRef { var param0 = new SqlParameter("@externalReference", SqlDbType.NVarChar) { Value = externalReference }; - var scormContentData = await this.DbContext.ContentServerViewModel.FromSqlRaw("[resources].[GetContentServerDetailsForLHExternalReference] @externalReference", param0).ToListAsync(); + var scormContentData = await this.DbContext.ContentServerViewModel.FromSqlRaw("[resources].[GetContentServerDetailsForLHExternalReference] @externalReference", param0).AsNoTracking().ToListAsync(); ContentServerViewModel scormContentServerViewModel = scormContentData.AsEnumerable().FirstOrDefault(); return scormContentServerViewModel; @@ -75,9 +75,8 @@ public async Task GetScormContentServerDetailsByHistoric { var param0 = new SqlParameter("@externalUrl", SqlDbType.NVarChar) { Value = externalUrl }; - var scormContentData = await this.DbContext.ContentServerViewModel.ToListAsync(); + var scormContentData = await this.DbContext.ContentServerViewModel.FromSqlRaw("[resources].[GetScormContentServerDetailsForHistoricExternalUrl] @externalUrl", param0).AsNoTracking().ToListAsync(); ContentServerViewModel scormContentServerViewModel = scormContentData.FirstOrDefault(); - return scormContentServerViewModel; }