diff --git a/LearningHub.Nhs.WebUI/Controllers/Api/ContributeController.cs b/LearningHub.Nhs.WebUI/Controllers/Api/ContributeController.cs index 825914c97..706efacbb 100644 --- a/LearningHub.Nhs.WebUI/Controllers/Api/ContributeController.cs +++ b/LearningHub.Nhs.WebUI/Controllers/Api/ContributeController.cs @@ -343,17 +343,17 @@ public ActionResult GetSettings() [Route("PublishResourceVersion")] public async Task PublishResourceVersionAsync([FromBody] PublishViewModel publishViewModel) { - var associatedResource = await this.resourceService.GetResourceVersionExtendedAsync(publishViewModel.ResourceVersionId); + var associatedResource = await this.resourceService.GetResourceVersionAsync(publishViewModel.ResourceVersionId); var validationResult = await this.contributeService.SubmitResourceVersionForPublishAsync(publishViewModel); if (validationResult.IsValid) { - if (associatedResource.ResourceTypeEnum != ResourceTypeEnum.Scorm && associatedResource.ResourceTypeEnum != ResourceTypeEnum.Html) + if (associatedResource.ResourceType != ResourceTypeEnum.Scorm && associatedResource.ResourceType != ResourceTypeEnum.Html) { - var obsoleteFiles = await this.resourceService.GetObsoleteResourceFile(publishViewModel.ResourceVersionId); - if (obsoleteFiles != null && obsoleteFiles.Any()) - { - await this.fileService.PurgeResourceFile(null, obsoleteFiles); - } + var obsoleteFiles = await this.resourceService.GetObsoleteResourceFile(publishViewModel.ResourceVersionId); + if (obsoleteFiles != null && obsoleteFiles.Any()) + { + await this.fileService.PurgeResourceFile(null, obsoleteFiles); + } } } @@ -787,7 +787,7 @@ private async Task RemoveBlockCollectionFiles(int resourceVersionId, BlockCollec _ = Task.Run(async () => { await this.fileService.PurgeResourceFile(null, deleteList); }); } } - catch (Exception ex) + catch { } } @@ -832,13 +832,13 @@ private Dictionary CheckQuestionBlock(BlockCollectionViewModel mode if (questionBlock.MediaBlock.Video != null) { - if (questionBlock.MediaBlock.Video.VideoFile != null) + if (questionBlock.MediaBlock.Video.File != null) { - if (questionBlock.MediaBlock.Video.File != null) - { - filePath.Add(questionBlock.MediaBlock.Video.File.FileId, questionBlock.MediaBlock.Video.File.FilePath); - } + filePath.Add(questionBlock.MediaBlock.Video.File.FileId, questionBlock.MediaBlock.Video.File.FilePath); + } + if (questionBlock.MediaBlock.Video.VideoFile != null) + { if (questionBlock.MediaBlock.Video.VideoFile.TranscriptFile != null) { filePath.Add(questionBlock.MediaBlock.Video.VideoFile.TranscriptFile.File.FileId, questionBlock.MediaBlock.Video.VideoFile.TranscriptFile.File.FilePath); @@ -882,13 +882,13 @@ private Dictionary CheckQuestionBlock(BlockCollectionViewModel mode if (feedbackBlock.MediaBlock.Video != null) { - if (feedbackBlock.MediaBlock.Video.VideoFile != null) + if (feedbackBlock.MediaBlock.Video.File != null) { - if (feedbackBlock.MediaBlock.Video.File != null) - { - filePath.Add(feedbackBlock.MediaBlock.Video.File.FileId, feedbackBlock.MediaBlock.Video.File.FilePath); - } + filePath.Add(feedbackBlock.MediaBlock.Video.File.FileId, feedbackBlock.MediaBlock.Video.File.FilePath); + } + if (feedbackBlock.MediaBlock.Video.VideoFile != null) + { if (feedbackBlock.MediaBlock.Video.VideoFile.TranscriptFile != null) { filePath.Add(feedbackBlock.MediaBlock.Video.VideoFile.TranscriptFile.File.FileId, feedbackBlock.MediaBlock.Video.VideoFile.TranscriptFile.File.FilePath); diff --git a/WebAPI/LearningHub.Nhs.Services/ResourceService.cs b/WebAPI/LearningHub.Nhs.Services/ResourceService.cs index f6b8958e5..d85056f70 100644 --- a/WebAPI/LearningHub.Nhs.Services/ResourceService.cs +++ b/WebAPI/LearningHub.Nhs.Services/ResourceService.cs @@ -1347,12 +1347,16 @@ public async Task> GetObsoleteResourceFile(int resourceVersionId, b rvs = rvs.Where(x => x.Id != resourceVersionId && x.PublicationId > 0).OrderByDescending(x => x.PublicationId).ToList(); var rv = rvs.FirstOrDefault(); var currentAssessmentVersion = await this.GetAssessmentViewModel(rv.Id); + List deletableFiles = null; if (assessmentDetails is { EndGuidance: { } } && assessmentDetails.EndGuidance.Blocks != null) { var endGuidanceFiles = this.CheckBlockFile(assessmentDetails.EndGuidance, currentAssessmentVersion.EndGuidance); if (endGuidanceFiles.Any()) { - retVal.AddRange(endGuidanceFiles); + deletableFiles = await this.GetResourceBlockCollectionsFilePathAsync(rv.Id, ResourceTypeEnum.Assessment); + retVal.AddRange(from entry in endGuidanceFiles + where deletableFiles.Contains(entry) + select entry); } } @@ -1361,7 +1365,10 @@ public async Task> GetObsoleteResourceFile(int resourceVersionId, b var assessmentContentFiles = this.CheckBlockFile(assessmentDetails.AssessmentContent, currentAssessmentVersion.AssessmentContent); if (assessmentContentFiles.Any()) { - retVal.AddRange(assessmentContentFiles); + deletableFiles ??= await this.GetResourceBlockCollectionsFilePathAsync(rv.Id, ResourceTypeEnum.Assessment); + retVal.AddRange(from entry in assessmentContentFiles + where deletableFiles.Contains(entry) + select entry); } } } @@ -1382,7 +1389,14 @@ public async Task> GetObsoleteResourceFile(int resourceVersionId, b if (rv != null) { var currentCaseVersion = await this.GetCaseDetailsByIdAsync(rv.Id); - caseFiles = this.CheckBlockFile(caseDetails.BlockCollection, currentCaseVersion.BlockCollection); + var nonpublishedFiles = this.CheckBlockFile(caseDetails.BlockCollection, currentCaseVersion.BlockCollection); + if (nonpublishedFiles.Any()) + { + var deletableCaseFiles = await this.GetResourceBlockCollectionsFilePathAsync(rv.Id, ResourceTypeEnum.Case); + caseFiles.AddRange(from entry in nonpublishedFiles + where deletableCaseFiles.Contains(entry) + select entry); + } } } @@ -5092,13 +5106,13 @@ private Dictionary CheckQuestionBlock(BlockCollectionViewModel mode if (questionBlock.MediaBlock.Video != null) { - if (questionBlock.MediaBlock.Video.VideoFile != null) + if (questionBlock.MediaBlock.Video.File != null) { - if (questionBlock.MediaBlock.Video.File != null) - { - filePath.Add(questionBlock.MediaBlock.Video.File.FileId, questionBlock.MediaBlock.Video.File.FilePath); - } + filePath.Add(questionBlock.MediaBlock.Video.File.FileId, questionBlock.MediaBlock.Video.File.FilePath); + } + if (questionBlock.MediaBlock.Video.VideoFile != null) + { if (questionBlock.MediaBlock.Video.VideoFile.TranscriptFile != null) { filePath.Add(questionBlock.MediaBlock.Video.VideoFile.TranscriptFile.File.FileId, questionBlock.MediaBlock.Video.VideoFile.TranscriptFile.File.FilePath); @@ -5142,13 +5156,13 @@ private Dictionary CheckQuestionBlock(BlockCollectionViewModel mode if (feedbackBlock.MediaBlock.Video != null) { - if (feedbackBlock.MediaBlock.Video.VideoFile != null) + if (feedbackBlock.MediaBlock.Video.File != null) { - if (feedbackBlock.MediaBlock.Video.File != null) - { - filePath.Add(feedbackBlock.MediaBlock.Video.File.FileId, feedbackBlock.MediaBlock.Video.File.FilePath); - } + filePath.Add(feedbackBlock.MediaBlock.Video.File.FileId, feedbackBlock.MediaBlock.Video.File.FilePath); + } + if (feedbackBlock.MediaBlock.Video.VideoFile != null) + { if (feedbackBlock.MediaBlock.Video.VideoFile.TranscriptFile != null) { filePath.Add(feedbackBlock.MediaBlock.Video.VideoFile.TranscriptFile.File.FileId, feedbackBlock.MediaBlock.Video.VideoFile.TranscriptFile.File.FilePath);