Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
82 changes: 82 additions & 0 deletions LearningHub.Nhs.WebUI/Helpers/ResourceTypeEnumMoodle.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
namespace LearningHub.Nhs.WebUI.Helpers;

/// <summary>
/// Represents the types of resources available in Moodle.
/// </summary>
public enum ResourceTypeEnumMoodle
{
/// <summary>
/// The undefined resource type.
/// </summary>
Undefined,

/// <summary>
/// The article resource type.
/// </summary>
Article,

/// <summary>
/// The audio resource type.
/// </summary>
Audio,

/// <summary>
/// The embedded resource type.
/// </summary>
Embedded,

/// <summary>
/// The equipment resource type.
/// </summary>
Equipment,

/// <summary>
/// The image resource type.
/// </summary>
Image,

/// <summary>
/// The SCORM resource type.
/// </summary>
Scorm,

/// <summary>
/// The video resource type.
/// </summary>
Video,

/// <summary>
/// The web link resource type.
/// </summary>
WebLink,

/// <summary>
/// The generic file resource type.
/// </summary>
GenericFile,

/// <summary>
/// The clinical case resource type.
/// </summary>
Case,

/// <summary>
/// The assessment resource type.
/// </summary>
Assessment,

/// <summary>
/// The HTML resource type.
/// </summary>
Html,

/// <summary>
/// The Moodle resource type.
/// </summary>
Moodle,

/// <summary>
/// The Moodle course resource type.
/// </summary>
Course,
}
67 changes: 67 additions & 0 deletions LearningHub.Nhs.WebUI/Helpers/UtilityHelper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,25 @@ public static class UtilityHelper
{ "html", ResourceTypeEnum.Html },
};

/// TODO: Remove this method after adding to Moodle resource types to models project.
/// <summary>
/// Findwise Moodle resource type dictionary.
/// </summary>
public static readonly Dictionary<string, ResourceTypeEnumMoodle> FindwiseResourceMoodleTypeDict = new Dictionary<string, ResourceTypeEnumMoodle>()
{
{ "video", ResourceTypeEnumMoodle.Video },
{ "article", ResourceTypeEnumMoodle.Article },
{ "case", ResourceTypeEnumMoodle.Case },
{ "weblink", ResourceTypeEnumMoodle.WebLink },
{ "audio", ResourceTypeEnumMoodle.Audio },
{ "scorm", ResourceTypeEnumMoodle.Scorm },
{ "assessment", ResourceTypeEnumMoodle.Assessment },
{ "genericfile", ResourceTypeEnumMoodle.GenericFile },
{ "image", ResourceTypeEnumMoodle.Image },
{ "html", ResourceTypeEnumMoodle.Html },
{ "moodle", ResourceTypeEnumMoodle.Course },
};

/// <summary>
/// The FormatTwitterDate.
/// </summary>
Expand Down Expand Up @@ -147,6 +166,54 @@ public static string GetPrettifiedResourceTypeName(ResourceTypeEnum resourceType
}
}

/// TODO: Remove this method after adding to Moodle resource types to models project.
/// <summary>
/// Returns a prettified resource type name, suitable for display in the UI. Includes video/audio duration string.
/// </summary>
/// <param name="resourceType">The resource type.</param>
/// <param name="durationInMilliseconds">The media duration in milliseconds.</param>
/// <returns>The resource type name, and duration if applicable.</returns>
public static string GetPrettifiedResourceTypeNameMoodle(ResourceTypeEnumMoodle resourceType, int? durationInMilliseconds = 0)
{
switch (resourceType)
{
case ResourceTypeEnumMoodle.Assessment:
return "Assessment";
case ResourceTypeEnumMoodle.Article:
return "Article";
case ResourceTypeEnumMoodle.Audio:
string durationText = GetDurationText(durationInMilliseconds ?? 0);
durationText = string.IsNullOrEmpty(durationText) ? string.Empty : " - " + durationText;
return "Audio" + durationText;
case ResourceTypeEnumMoodle.Equipment:
return "Equipment";
case ResourceTypeEnumMoodle.Image:
return "Image";
case ResourceTypeEnumMoodle.Scorm:
return "elearning";
case ResourceTypeEnumMoodle.Video:
durationText = GetDurationText(durationInMilliseconds ?? 0);
durationText = string.IsNullOrEmpty(durationText) ? string.Empty : " - " + durationText;
return "Video" + durationText;
case ResourceTypeEnumMoodle.WebLink:
return "Web link";
case ResourceTypeEnumMoodle.GenericFile:
return "File";
case ResourceTypeEnumMoodle.Embedded:
return "Embedded";
case ResourceTypeEnumMoodle.Case:
return "Case";
case ResourceTypeEnumMoodle.Html:
return "HTML";
case ResourceTypeEnumMoodle.Moodle:
return "Course";
case ResourceTypeEnumMoodle.Course:
return "Course";
default:
return "File";
}
}

/// <summary>
/// Returns a prettified resource type name, suitable for display in the UI. Excludes video/audio duration string.
/// </summary>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -92,10 +92,15 @@ public class MoodleCourseResponseViewModel
/// </summary>
public int? Category { get; set; }

/// <summary>
/// Gets the progress percentage formatted as a string.
/// </summary>
public string ProgressPercentage => $"{System.Math.Round(this.Progress ?? 0)}%";

/// <summary>
/// Gets or sets the progress.
/// </summary>
public int? Progress { get; set; }
public double? Progress { get; set; }

/// <summary>
/// Gets or sets the completion status.
Expand Down
6 changes: 3 additions & 3 deletions LearningHub.Nhs.WebUI/Services/SearchService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -163,10 +163,10 @@ public async Task<SearchResultViewModel> PerformSearch(IPrincipal user, SearchRe
{
var filter = filters.Where(x => x.DisplayName == filteritem).FirstOrDefault();

if (filter != null && UtilityHelper.FindwiseResourceTypeDict.ContainsKey(filter.DisplayName))
if (filter != null && UtilityHelper.FindwiseResourceMoodleTypeDict.ContainsKey(filter.DisplayName))
{
var resourceTypeEnum = UtilityHelper.FindwiseResourceTypeDict[filter.DisplayName];
var searchfilter = new SearchFilterModel() { DisplayName = UtilityHelper.GetPrettifiedResourceTypeName(resourceTypeEnum), Count = filter.Count, Value = filteritem, Selected = searchRequest.Filters?.Contains(filter.DisplayName) ?? false };
var resourceTypeEnum = UtilityHelper.FindwiseResourceMoodleTypeDict[filter.DisplayName];
var searchfilter = new SearchFilterModel() { DisplayName = UtilityHelper.GetPrettifiedResourceTypeNameMoodle(resourceTypeEnum), Count = filter.Count, Value = filteritem, Selected = searchRequest.Filters?.Contains(filter.DisplayName) ?? false };
searchfilters.Add(searchfilter);
}
}
Expand Down
2 changes: 1 addition & 1 deletion LearningHub.Nhs.WebUI/Views/Home/_CourseEnrolled.cshtml
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@
<div class="line-clamp-3 nhsuk-u-margin-bottom-2point5">
@if (@Model?.Progress != null)
{
<div>Progress: @Model.Progress%</div>
<div>Progress: @Model.ProgressPercentage</div>
}
</div>

Expand Down
Loading
Loading