Skip to content

Commit 8b94524

Browse files
authored
Merge pull request #1169 from TechnologyEnhancedLearning/Develop/POC/TD-5593_selfentrolled_moodle_courses_discoverable_in_lh
Develop/poc/td 5593 selfentrolled moodle courses discoverable in lh
2 parents bc2772a + 54703da commit 8b94524

File tree

7 files changed

+277
-92
lines changed

7 files changed

+277
-92
lines changed
Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
namespace LearningHub.Nhs.WebUI.Helpers;
2+
3+
/// <summary>
4+
/// Represents the types of resources available in Moodle.
5+
/// </summary>
6+
public enum ResourceTypeEnumMoodle
7+
{
8+
/// <summary>
9+
/// The undefined resource type.
10+
/// </summary>
11+
Undefined,
12+
13+
/// <summary>
14+
/// The article resource type.
15+
/// </summary>
16+
Article,
17+
18+
/// <summary>
19+
/// The audio resource type.
20+
/// </summary>
21+
Audio,
22+
23+
/// <summary>
24+
/// The embedded resource type.
25+
/// </summary>
26+
Embedded,
27+
28+
/// <summary>
29+
/// The equipment resource type.
30+
/// </summary>
31+
Equipment,
32+
33+
/// <summary>
34+
/// The image resource type.
35+
/// </summary>
36+
Image,
37+
38+
/// <summary>
39+
/// The SCORM resource type.
40+
/// </summary>
41+
Scorm,
42+
43+
/// <summary>
44+
/// The video resource type.
45+
/// </summary>
46+
Video,
47+
48+
/// <summary>
49+
/// The web link resource type.
50+
/// </summary>
51+
WebLink,
52+
53+
/// <summary>
54+
/// The generic file resource type.
55+
/// </summary>
56+
GenericFile,
57+
58+
/// <summary>
59+
/// The clinical case resource type.
60+
/// </summary>
61+
Case,
62+
63+
/// <summary>
64+
/// The assessment resource type.
65+
/// </summary>
66+
Assessment,
67+
68+
/// <summary>
69+
/// The HTML resource type.
70+
/// </summary>
71+
Html,
72+
73+
/// <summary>
74+
/// The Moodle resource type.
75+
/// </summary>
76+
Moodle,
77+
78+
/// <summary>
79+
/// The Moodle course resource type.
80+
/// </summary>
81+
Course,
82+
}

LearningHub.Nhs.WebUI/Helpers/UtilityHelper.cs

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,25 @@ public static class UtilityHelper
3232
{ "html", ResourceTypeEnum.Html },
3333
};
3434

35+
/// TODO: Remove this method after adding to Moodle resource types to models project.
36+
/// <summary>
37+
/// Findwise Moodle resource type dictionary.
38+
/// </summary>
39+
public static readonly Dictionary<string, ResourceTypeEnumMoodle> FindwiseResourceMoodleTypeDict = new Dictionary<string, ResourceTypeEnumMoodle>()
40+
{
41+
{ "video", ResourceTypeEnumMoodle.Video },
42+
{ "article", ResourceTypeEnumMoodle.Article },
43+
{ "case", ResourceTypeEnumMoodle.Case },
44+
{ "weblink", ResourceTypeEnumMoodle.WebLink },
45+
{ "audio", ResourceTypeEnumMoodle.Audio },
46+
{ "scorm", ResourceTypeEnumMoodle.Scorm },
47+
{ "assessment", ResourceTypeEnumMoodle.Assessment },
48+
{ "genericfile", ResourceTypeEnumMoodle.GenericFile },
49+
{ "image", ResourceTypeEnumMoodle.Image },
50+
{ "html", ResourceTypeEnumMoodle.Html },
51+
{ "moodle", ResourceTypeEnumMoodle.Course },
52+
};
53+
3554
/// <summary>
3655
/// The FormatTwitterDate.
3756
/// </summary>
@@ -147,6 +166,54 @@ public static string GetPrettifiedResourceTypeName(ResourceTypeEnum resourceType
147166
}
148167
}
149168

169+
/// TODO: Remove this method after adding to Moodle resource types to models project.
170+
/// <summary>
171+
/// Returns a prettified resource type name, suitable for display in the UI. Includes video/audio duration string.
172+
/// </summary>
173+
/// <param name="resourceType">The resource type.</param>
174+
/// <param name="durationInMilliseconds">The media duration in milliseconds.</param>
175+
/// <returns>The resource type name, and duration if applicable.</returns>
176+
public static string GetPrettifiedResourceTypeNameMoodle(ResourceTypeEnumMoodle resourceType, int? durationInMilliseconds = 0)
177+
{
178+
switch (resourceType)
179+
{
180+
case ResourceTypeEnumMoodle.Assessment:
181+
return "Assessment";
182+
case ResourceTypeEnumMoodle.Article:
183+
return "Article";
184+
case ResourceTypeEnumMoodle.Audio:
185+
string durationText = GetDurationText(durationInMilliseconds ?? 0);
186+
durationText = string.IsNullOrEmpty(durationText) ? string.Empty : " - " + durationText;
187+
return "Audio" + durationText;
188+
case ResourceTypeEnumMoodle.Equipment:
189+
return "Equipment";
190+
case ResourceTypeEnumMoodle.Image:
191+
return "Image";
192+
case ResourceTypeEnumMoodle.Scorm:
193+
return "elearning";
194+
case ResourceTypeEnumMoodle.Video:
195+
durationText = GetDurationText(durationInMilliseconds ?? 0);
196+
durationText = string.IsNullOrEmpty(durationText) ? string.Empty : " - " + durationText;
197+
return "Video" + durationText;
198+
case ResourceTypeEnumMoodle.WebLink:
199+
return "Web link";
200+
case ResourceTypeEnumMoodle.GenericFile:
201+
return "File";
202+
case ResourceTypeEnumMoodle.Embedded:
203+
return "Embedded";
204+
case ResourceTypeEnumMoodle.Case:
205+
return "Case";
206+
case ResourceTypeEnumMoodle.Html:
207+
return "HTML";
208+
case ResourceTypeEnumMoodle.Moodle:
209+
return "Course";
210+
case ResourceTypeEnumMoodle.Course:
211+
return "Course";
212+
default:
213+
return "File";
214+
}
215+
}
216+
150217
/// <summary>
151218
/// Returns a prettified resource type name, suitable for display in the UI. Excludes video/audio duration string.
152219
/// </summary>

LearningHub.Nhs.WebUI/Models/MoodleCourseResponseViewModel.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,10 +92,15 @@ public class MoodleCourseResponseViewModel
9292
/// </summary>
9393
public int? Category { get; set; }
9494

95+
/// <summary>
96+
/// Gets the progress percentage formatted as a string.
97+
/// </summary>
98+
public string ProgressPercentage => $"{System.Math.Round(this.Progress ?? 0)}%";
99+
95100
/// <summary>
96101
/// Gets or sets the progress.
97102
/// </summary>
98-
public int? Progress { get; set; }
103+
public double? Progress { get; set; }
99104

100105
/// <summary>
101106
/// Gets or sets the completion status.

LearningHub.Nhs.WebUI/Services/SearchService.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -163,10 +163,10 @@ public async Task<SearchResultViewModel> PerformSearch(IPrincipal user, SearchRe
163163
{
164164
var filter = filters.Where(x => x.DisplayName == filteritem).FirstOrDefault();
165165

166-
if (filter != null && UtilityHelper.FindwiseResourceTypeDict.ContainsKey(filter.DisplayName))
166+
if (filter != null && UtilityHelper.FindwiseResourceMoodleTypeDict.ContainsKey(filter.DisplayName))
167167
{
168-
var resourceTypeEnum = UtilityHelper.FindwiseResourceTypeDict[filter.DisplayName];
169-
var searchfilter = new SearchFilterModel() { DisplayName = UtilityHelper.GetPrettifiedResourceTypeName(resourceTypeEnum), Count = filter.Count, Value = filteritem, Selected = searchRequest.Filters?.Contains(filter.DisplayName) ?? false };
168+
var resourceTypeEnum = UtilityHelper.FindwiseResourceMoodleTypeDict[filter.DisplayName];
169+
var searchfilter = new SearchFilterModel() { DisplayName = UtilityHelper.GetPrettifiedResourceTypeNameMoodle(resourceTypeEnum), Count = filter.Count, Value = filteritem, Selected = searchRequest.Filters?.Contains(filter.DisplayName) ?? false };
170170
searchfilters.Add(searchfilter);
171171
}
172172
}

LearningHub.Nhs.WebUI/Views/Home/_CourseEnrolled.cshtml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@
6060
<div class="line-clamp-3 nhsuk-u-margin-bottom-2point5">
6161
@if (@Model?.Progress != null)
6262
{
63-
<div>Progress: @Model.Progress%</div>
63+
<div>Progress: @Model.ProgressPercentage</div>
6464
}
6565
</div>
6666

0 commit comments

Comments
 (0)