Skip to content

Commit bc43f74

Browse files
committed
End points major version
1 parent 7105627 commit bc43f74

File tree

5 files changed

+69
-9
lines changed

5 files changed

+69
-9
lines changed

OpenAPI/LearningHub.Nhs.OpenApi.Models/ViewModels/ResourceMetadataViewModel.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ public ResourceMetadataViewModel(
3232
string description,
3333
List<ResourceReferenceViewModel> references,
3434
string resourceType,
35+
int? majorVersion,
3536
decimal rating,
3637
List<MajorVersionIdActivityStatusDescription>? userSummaryActivityStatuses)
3738
{
@@ -40,6 +41,7 @@ public ResourceMetadataViewModel(
4041
this.Description = description;
4142
this.References = references;
4243
this.ResourceType = resourceType;
44+
this.MajorVersion = majorVersion;
4345
this.Rating = rating;
4446
this.UserSummaryActivityStatuses = userSummaryActivityStatuses;
4547
}
@@ -69,6 +71,11 @@ public ResourceMetadataViewModel(
6971
/// </summary>
7072
public string ResourceType { get; set; }
7173

74+
/// <summary>
75+
/// Gets or sets <see cref="MajorVersion"/>.
76+
/// </summary>
77+
public int? MajorVersion { get; set; }
78+
7279

7380
/// <summary>
7481
/// Gets or sets <see cref="Rating"/>.

OpenAPI/LearningHub.Nhs.OpenApi.Models/ViewModels/ResourceReferenceWithResourceDetailsViewModel.cs

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
using LearningHub.Nhs.Models.Entities.Activity;
2+
using System.Collections.Generic;
3+
14
namespace LearningHub.Nhs.OpenApi.Models.ViewModels
25
{
36
/// <summary>
@@ -16,24 +19,28 @@ public class ResourceReferenceWithResourceDetailsViewModel
1619
/// <param name="resourceType"><see cref="ResourceType"/>.</param>
1720
/// <param name="rating"><see cref="Rating"/>.</param>
1821
/// <param name="link"><see cref="Link"/>.</param>
19-
public ResourceReferenceWithResourceDetailsViewModel(
22+
public ResourceReferenceWithResourceDetailsViewModel( // qqqq may need major version id adding
2023
int resourceId,
2124
int refId,
2225
string title,
2326
string description,
2427
CatalogueViewModel catalogueViewModel,
2528
string resourceType,
29+
int? majorVersion,
2630
decimal rating,
27-
string link)
31+
string link,
32+
List<MajorVersionIdActivityStatusDescription>? userSummaryActivityStatuses)
2833
{
2934
this.ResourceId = resourceId;
3035
this.RefId = refId;
3136
this.Title = title;
3237
this.Description = description;
3338
this.Catalogue = catalogueViewModel;
39+
this.MajorVersion = majorVersion;
3440
this.ResourceType = resourceType;
3541
this.Rating = rating;
3642
this.Link = link;
43+
this.UserSummaryActivityStatuses = userSummaryActivityStatuses;
3744
}
3845

3946
/// <summary>
@@ -66,14 +73,27 @@ public ResourceReferenceWithResourceDetailsViewModel(
6673
/// </summary>
6774
public string ResourceType { get; }
6875

76+
77+
/// <summary>
78+
/// Gets <see cref="MajorVersion"/>.
79+
/// </summary>
80+
public int? MajorVersion { get; }
81+
6982
/// <summary>
7083
/// Gets <see cref="Rating"/>.
7184
/// </summary>
85+
///
86+
7287
public decimal Rating { get; }
7388

7489
/// <summary>
7590
/// Gets <see cref="Link"/>.
7691
/// </summary>
7792
public string Link { get; }
93+
94+
/// <summary>
95+
/// Gets <see cref="UserSummaryActivityStatuses"/>.
96+
/// </summary>
97+
public List<MajorVersionIdActivityStatusDescription>? UserSummaryActivityStatuses { get; }
7898
}
7999
}

OpenAPI/LearningHub.Nhs.OpenApi.Repositories/Map/Resources/ResourceVersionMap.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,9 @@ protected override void InternalMap(EntityTypeBuilder<ResourceVersion> modelBuil
3939
.OnDelete(DeleteBehavior.ClientSetNull)
4040
.HasConstraintName("FK_ResourceVersion_Resource");
4141

42+
modelBuilder.Property(e => e.ResourceAccessibilityEnum).HasColumnName("ResourceAccessibilityId")
43+
.HasConversion<int>();
44+
4245
modelBuilder.Property(e => e.VersionStatusEnum).HasColumnName("VersionStatusId")
4346
.HasConversion<int>();
4447

OpenAPI/LearningHub.Nhs.OpenApi.Services/Services/ResourceService.cs

Lines changed: 27 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ namespace LearningHub.Nhs.OpenApi.Services.Services
88
using System.Threading.Tasks;
99
using LearningHub.Nhs.Models.Entities.Activity;
1010
using LearningHub.Nhs.Models.Entities.Resource;
11+
using LearningHub.Nhs.Models.ViewModels.Helpers;
1112
using LearningHub.Nhs.OpenApi.Models.Exceptions;
1213
using LearningHub.Nhs.OpenApi.Models.ViewModels;
1314
using LearningHub.Nhs.OpenApi.Repositories.Interface.Repositories;
@@ -76,7 +77,7 @@ public async Task<ResourceReferenceWithResourceDetailsViewModel> GetResourceRefe
7677
resourceActivities = (await this.resourceRepository.GetResourceActivityPerResourceMajorVersion(resourceIds, userIds))?.ToList() ?? new List<ResourceActivityDTO>() { };
7778
}
7879

79-
return this.GetResourceReferenceWithResourceDetailsViewModel(resourceReference);
80+
return this.GetResourceReferenceWithResourceDetailsViewModel(resourceReference, resourceActivities);
8081
}
8182
catch (InvalidOperationException exception)
8283
{
@@ -92,6 +93,9 @@ public async Task<ResourceReferenceWithResourceDetailsViewModel> GetResourceRefe
9293
/// <returns>the resource.</returns>
9394
public async Task<BulkResourceReferenceViewModel> GetResourceReferencesByOriginalIds(List<int> originalResourceReferenceIds, int? currentUserId)
9495
{
96+
List<ResourceActivityDTO> resourceActivities = new List<ResourceActivityDTO>() { };
97+
List<MajorVersionIdActivityStatusDescription> majorVersionIdActivityStatusDescription = new List<MajorVersionIdActivityStatusDescription>() { };
98+
9599
var resourceReferences = await this.resourceRepository.GetResourceReferencesByOriginalResourceReferenceIds(originalResourceReferenceIds);
96100
var resourceReferencesList = resourceReferences.ToList();
97101
var matchedIds = resourceReferencesList.Select(r => r.OriginalResourceReferenceId).ToList();
@@ -107,18 +111,33 @@ public async Task<BulkResourceReferenceViewModel> GetResourceReferencesByOrigina
107111
this.logger.LogWarning($"Multiple resource references found with OriginalResourceReferenceId {duplicateIds.First()}");
108112
}
109113

110-
var matchedResources = resourceReferencesList
111-
.Select(this.GetResourceReferenceWithResourceDetailsViewModel)
112-
.ToList();
114+
if (currentUserId.HasValue)
115+
{
116+
List<int> resourceIds = resourceReferencesList.Select(rrl => rrl.ResourceId).ToList();
117+
List<int> userIds = new List<int>() { currentUserId.Value };
118+
119+
resourceActivities = (await this.resourceRepository.GetResourceActivityPerResourceMajorVersion(resourceIds, userIds))?.ToList() ?? new List<ResourceActivityDTO>() { };
120+
}
121+
122+
List<ResourceReferenceWithResourceDetailsViewModel> matchedResources = resourceReferencesList
123+
.Select(rr => this.GetResourceReferenceWithResourceDetailsViewModel(rr, resourceActivities.Where(ra => ra.ResourceId == rr.ResourceId).ToList()))
124+
.ToList<ResourceReferenceWithResourceDetailsViewModel>();
113125

114126
return new BulkResourceReferenceViewModel(matchedResources, unmatchedIds);
115127
}
116128

117-
private ResourceReferenceWithResourceDetailsViewModel GetResourceReferenceWithResourceDetailsViewModel(ResourceReference resourceReference)
129+
private ResourceReferenceWithResourceDetailsViewModel GetResourceReferenceWithResourceDetailsViewModel(ResourceReference resourceReference, List<ResourceActivityDTO> resourceActivities)
118130
{
119131
var hasCurrentResourceVersion = resourceReference.Resource.CurrentResourceVersion != null;
120132
var hasRating = resourceReference.Resource.CurrentResourceVersion?.ResourceVersionRatingSummary != null;
121133

134+
List<MajorVersionIdActivityStatusDescription> majorVersionIdActivityStatusDescription = new List<MajorVersionIdActivityStatusDescription>() { };
135+
136+
if (resourceActivities != null && resourceActivities.Count != 0)
137+
{
138+
majorVersionIdActivityStatusDescription = ActivityStatusHelper.GetMajorVersionIdActivityStatusDescriptionLSPerResource(resourceReference.Resource, resourceActivities).ToList();
139+
}
140+
122141
if (resourceReference.Resource == null)
123142
{
124143
throw new Exception("No matching resource");
@@ -147,8 +166,10 @@ private ResourceReferenceWithResourceDetailsViewModel GetResourceReferenceWithRe
147166
resourceReference.Resource.CurrentResourceVersion?.Description ?? string.Empty,
148167
resourceReference.GetCatalogue(),
149168
resourceTypeNameOrEmpty,
169+
resourceReference.Resource?.CurrentResourceVersion?.MajorVersion ?? 0,
150170
resourceReference.Resource?.CurrentResourceVersion?.ResourceVersionRatingSummary?.AverageRating ?? 0,
151-
this.learningHubService.GetResourceLaunchUrl(resourceReference.OriginalResourceReferenceId));
171+
this.learningHubService.GetResourceLaunchUrl(resourceReference.OriginalResourceReferenceId),
172+
majorVersionIdActivityStatusDescription);
152173
}
153174
}
154175
}

OpenAPI/LearningHub.Nhs.OpenApi.Services/Services/SearchService.cs

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ public async Task<ResourceSearchResultModel> Search(ResourceSearchRequest query,
8282
private async Task<List<ResourceMetadataViewModel>> GetResourceMetadataViewModels(
8383
FindwiseResultModel findwiseResultModel, int? currentUserId)
8484
{
85+
List<ResourceActivityDTO> resourceActivities = new List<ResourceActivityDTO>() { };
8586
var documentsFound = findwiseResultModel.SearchResults?.DocumentList.Documents?.ToList() ??
8687
new List<Document>();
8788
var findwiseResourceIds = documentsFound.Select(d => int.Parse(d.Id)).ToList();
@@ -93,7 +94,7 @@ private async Task<List<ResourceMetadataViewModel>> GetResourceMetadataViewModel
9394

9495
var resourcesFound = await this.resourceRepository.GetResourcesFromIds(findwiseResourceIds);
9596

96-
var resourceMetadataViewModels = resourcesFound.Select(this.MapToViewModel)
97+
List<ResourceMetadataViewModel> resourceMetadataViewModels = resourcesFound.Select(resource => MapToViewModel(resource, resourceActivities.Where(x => x.ResourceId == resource.Id).ToList()))
9798
.OrderBySequence(findwiseResourceIds)
9899
.ToList();
99100

@@ -108,6 +109,13 @@ private async Task<List<ResourceMetadataViewModel>> GetResourceMetadataViewModel
108109
unmatchedResourcesIdsString);
109110
}
110111

112+
if (currentUserId.HasValue)
113+
{
114+
List<int> resourceIds = resourcesFound.Select(x => x.Id).ToList();
115+
List<int> userIds = new List<int>() { currentUserId.Value };
116+
117+
resourceActivities = (await this.resourceRepository.GetResourceActivityPerResourceMajorVersion(resourceIds, userIds))?.ToList() ?? new List<ResourceActivityDTO>() { };
118+
}
111119
return resourceMetadataViewModels;
112120
}
113121

@@ -149,6 +157,7 @@ private ResourceMetadataViewModel MapToViewModel(Resource resource, List<Resourc
149157
resource.CurrentResourceVersion?.Description ?? string.Empty,
150158
resource.ResourceReference.Select(this.GetResourceReferenceViewModel).ToList(),
151159
resourceTypeNameOrEmpty,
160+
resource.CurrentResourceVersion?.MajorVersion ?? 0,
152161
resource.CurrentResourceVersion?.ResourceVersionRatingSummary?.AverageRating ?? 0.0m,
153162
majorVersionIdActivityStatusDescription
154163
);

0 commit comments

Comments
 (0)