diff --git a/LearningHub.Nhs.WebUI/Views/Search/_ResourceSearchResult.cshtml b/LearningHub.Nhs.WebUI/Views/Search/_ResourceSearchResult.cshtml
index 647583787..81156cd91 100644
--- a/LearningHub.Nhs.WebUI/Views/Search/_ResourceSearchResult.cshtml
+++ b/LearningHub.Nhs.WebUI/Views/Search/_ResourceSearchResult.cshtml
@@ -93,7 +93,7 @@
 		
 			
 				Type: 
-				@UtilityHelper.GetPrettifiedResourceTypeNameMoodle(UtilityHelper.ToEnum(item.ResourceType), 0)
+				@UtilityHelper.GetPrettifiedResourceTypeNameMoodle(UtilityHelper.ToEnum(item.ResourceType), 0)
 			
 			
 				@if (item.ResourceType != "moodle")
diff --git a/OpenAPI/LearningHub.Nhs.OpenApi.Models/Configuration/MoodleConfig.cs b/OpenAPI/LearningHub.Nhs.OpenApi.Models/Configuration/MoodleConfig.cs
new file mode 100644
index 000000000..de178b6a2
--- /dev/null
+++ b/OpenAPI/LearningHub.Nhs.OpenApi.Models/Configuration/MoodleConfig.cs
@@ -0,0 +1,29 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace LearningHub.Nhs.OpenApi.Models.Configuration
+{
+    /// 
+    /// The Moodle Settings.
+    /// 
+    public class MoodleConfig
+    {
+        /// 
+        /// Gets or sets the base url for the Moodle service.
+        /// 
+        public string APIBaseUrl { get; set; } = null!;
+
+        /// 
+        /// Gets or sets the Web service Rest Format.
+        /// 
+        public string APIWSRestFormat { get; set; } = null!;
+
+        /// 
+        /// Gets or sets the token.
+        /// 
+        public string APIWSToken { get; set; } = null!;
+    }
+}
diff --git a/OpenAPI/LearningHub.Nhs.OpenApi.Services.Interface/HttpClients/IMoodleHttpClient.cs b/OpenAPI/LearningHub.Nhs.OpenApi.Services.Interface/HttpClients/IMoodleHttpClient.cs
new file mode 100644
index 000000000..4a98b4ebf
--- /dev/null
+++ b/OpenAPI/LearningHub.Nhs.OpenApi.Services.Interface/HttpClients/IMoodleHttpClient.cs
@@ -0,0 +1,23 @@
+using System.Net.Http;
+using System.Threading.Tasks;
+
+namespace LearningHub.Nhs.OpenApi.Services.Interface.HttpClients
+{
+    /// 
+    /// The Moodle Http Client interface.
+    /// 
+    public interface IMoodleHttpClient
+    {
+        /// 
+        /// The get cient async.
+        /// 
+        /// 
The .
+        Task
 GetClient();
+
+        /// 
+        /// GetDefaultParameters.
+        /// 
+        /// defaultParameters.
+        string GetDefaultParameters();
+    }
+}
diff --git a/OpenAPI/LearningHub.Nhs.OpenApi.Services.Interface/Services/IMoodleApiService.cs b/OpenAPI/LearningHub.Nhs.OpenApi.Services.Interface/Services/IMoodleApiService.cs
new file mode 100644
index 000000000..e366a4370
--- /dev/null
+++ b/OpenAPI/LearningHub.Nhs.OpenApi.Services.Interface/Services/IMoodleApiService.cs
@@ -0,0 +1,21 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace LearningHub.Nhs.OpenApi.Services.Interface.Services
+{
+    /// 
+    /// IMoodleApiService.
+    /// 
+    public interface IMoodleApiService
+    {
+        /// 
+        /// GetResourcesAsync.
+        /// 
+        /// The current LH User Id.
+        /// A  representing the result of the asynchronous operation.
+        Task GetMoodleUserIdByUsernameAsync(int currentUserId);
+    }
+}
diff --git a/OpenAPI/LearningHub.Nhs.OpenApi.Services/HttpClients/MoodleHttpClient.cs b/OpenAPI/LearningHub.Nhs.OpenApi.Services/HttpClients/MoodleHttpClient.cs
new file mode 100644
index 000000000..73af93977
--- /dev/null
+++ b/OpenAPI/LearningHub.Nhs.OpenApi.Services/HttpClients/MoodleHttpClient.cs
@@ -0,0 +1,95 @@
+using LearningHub.Nhs.OpenApi.Models.Configuration;
+using LearningHub.Nhs.OpenApi.Services.Interface.HttpClients;
+using Microsoft.Extensions.Options;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net.Http;
+using System.Net.Http.Headers;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace LearningHub.Nhs.OpenApi.Services.HttpClients
+{
+    /// 
+    /// The Moodle Http Client.
+    /// 
+    public class MoodleHttpClient : IMoodleHttpClient, IDisposable
+    {
+        private readonly MoodleConfig moodleConfig;
+        private readonly HttpClient httpClient = new();
+
+        private bool initialised = false;
+        private string moodleAPIBaseUrl;
+        private string moodleAPIMoodleWSRestFormat;
+        private string moodleAPIWSToken;
+
+        /// 
+        /// Initializes a new instance of the  class.
+        /// 
+        /// httpClient.
+        /// config.
+        public MoodleHttpClient(HttpClient httpClient, IOptions moodleConfig)
+        {
+            this.moodleConfig = moodleConfig.Value;
+            this.httpClient = httpClient;
+
+            this.moodleAPIBaseUrl = this.moodleConfig.APIBaseUrl + "webservice/rest/server.php";
+            this.moodleAPIMoodleWSRestFormat = this.moodleConfig.APIWSRestFormat;
+            this.moodleAPIWSToken = this.moodleConfig.APIWSToken;
+        }
+
+        /// 
+        /// The Get Client method.
+        /// 
+        /// The .
+        public async Task GetClient()
+        {
+            this.Initialise(this.moodleAPIBaseUrl);
+            return this.httpClient;
+        }
+
+        /// 
+        /// GetDefaultParameters.
+        /// 
+        /// defaultParameters.
+        public string GetDefaultParameters()
+        {
+            string defaultParameters = $"wstoken={this.moodleAPIWSToken}"
+                              + $"&moodlewsrestformat={this.moodleAPIMoodleWSRestFormat}";
+
+            return defaultParameters;
+        }
+
+        /// 
+        public void Dispose()
+        {
+            this.Dispose(true);
+            GC.SuppressFinalize(this);
+        }
+
+        /// 
+        /// The dispoase.
+        /// 
+        /// disposing.
+        protected virtual void Dispose(bool disposing)
+        {
+            if (disposing)
+            {
+                this.httpClient.Dispose();
+            }
+        }
+
+        private void Initialise(string httpClientUrl)
+        {
+            if (this.initialised == false)
+            {
+                this.httpClient.BaseAddress = new Uri(httpClientUrl);
+                this.httpClient.DefaultRequestHeaders.Accept.Clear();
+                this.httpClient.DefaultRequestHeaders.Accept.Add(
+                    new MediaTypeWithQualityHeaderValue("application/json"));
+                this.initialised = true;
+            }
+        }
+    }
+}
diff --git a/OpenAPI/LearningHub.Nhs.OpenApi.Services/LearningHub.Nhs.OpenApi.Services.csproj b/OpenAPI/LearningHub.Nhs.OpenApi.Services/LearningHub.Nhs.OpenApi.Services.csproj
index 9002a0237..bf7b23c23 100644
--- a/OpenAPI/LearningHub.Nhs.OpenApi.Services/LearningHub.Nhs.OpenApi.Services.csproj
+++ b/OpenAPI/LearningHub.Nhs.OpenApi.Services/LearningHub.Nhs.OpenApi.Services.csproj
@@ -30,7 +30,7 @@
 		
 		
 		
-		
+		
 		
 		
 		
diff --git a/OpenAPI/LearningHub.Nhs.OpenApi.Services/Services/MoodleApiService.cs b/OpenAPI/LearningHub.Nhs.OpenApi.Services/Services/MoodleApiService.cs
new file mode 100644
index 000000000..90ffc4280
--- /dev/null
+++ b/OpenAPI/LearningHub.Nhs.OpenApi.Services/Services/MoodleApiService.cs
@@ -0,0 +1,90 @@
+namespace LearningHub.Nhs.OpenApi.Services.Services
+{
+    using LearningHub.Nhs.Models.Moodle.API;
+    using LearningHub.Nhs.OpenApi.Services.Interface.HttpClients;
+    using LearningHub.Nhs.OpenApi.Services.Interface.Services;
+    using Microsoft.Extensions.Logging;
+    using Newtonsoft.Json;
+    using System;
+    using System.Collections.Generic;
+    using System.Linq;
+    using System.Net;
+    using System.Net.Http;
+    using System.Text;
+    using System.Threading.Tasks;
+
+    /// 
+    /// MoodleApiService.
+    /// 
+    public class MoodleApiService : IMoodleApiService
+    {
+        private readonly IMoodleHttpClient moodleHttpClient;
+        private readonly ILogger logger;
+
+        /// 
+        /// Initializes a new instance of the  class.
+        /// 
+        /// moodleHttpClient.
+        /// logger.
+        public MoodleApiService(IMoodleHttpClient moodleHttpClient, ILogger logger)
+        {
+            this.moodleHttpClient = moodleHttpClient;
+            this.logger = logger;
+        }
+        /// 
+        /// GetMoodleUserIdByUsernameAsync.
+        /// 
+        /// current User Id.
+        /// UserId from Moodle.
+        public async Task GetMoodleUserIdByUsernameAsync(int currentUserId)
+        {
+            var parameters = new Dictionary
+            {
+                { "criteria[0][key]", "username" },
+                { "criteria[0][value]", currentUserId.ToString() }
+            };
+
+            var response = await GetCallMoodleApiAsync("core_user_get_users", parameters);
+
+            var user = response?.Users?.FirstOrDefault(u => u.Username == currentUserId.ToString());
+            return user?.Id ?? 0;
+        }
+
+
+        private async Task GetCallMoodleApiAsync(string wsFunction, Dictionary parameters)
+        {
+            var client = await this.moodleHttpClient.GetClient();
+            string defaultParameters = this.moodleHttpClient.GetDefaultParameters();
+
+            // Build URL query
+            var queryBuilder = new StringBuilder();
+
+            queryBuilder.Append($"&wsfunction={wsFunction}");
+
+            foreach (var param in parameters)
+            {
+                queryBuilder.Append($"&{param.Key}={Uri.EscapeDataString(param.Value)}");
+            }
+
+            string fullUrl = "?" + defaultParameters + queryBuilder.ToString();
+
+            HttpResponseMessage response = await client.GetAsync(fullUrl);
+            string result = await response.Content.ReadAsStringAsync();
+
+            if (response.IsSuccessStatusCode)
+            {
+                return JsonConvert.DeserializeObject(result);
+            }
+            else if (response.StatusCode == HttpStatusCode.Unauthorized || response.StatusCode == HttpStatusCode.Forbidden)
+            {
+                this.logger.LogError($"Moodle API access denied. Status Code: {response.StatusCode}");
+                throw new Exception("AccessDenied to MoodleApi");
+            }
+            else
+            {
+                this.logger.LogError($"Moodle API error. Status Code: {response.StatusCode}, Message: {result}");
+                throw new Exception("Error with MoodleApi");
+            }
+        }
+    }
+}
diff --git a/OpenAPI/LearningHub.Nhs.OpenApi.Services/Startup.cs b/OpenAPI/LearningHub.Nhs.OpenApi.Services/Startup.cs
index fb9098bde..f00f13253 100644
--- a/OpenAPI/LearningHub.Nhs.OpenApi.Services/Startup.cs
+++ b/OpenAPI/LearningHub.Nhs.OpenApi.Services/Startup.cs
@@ -23,6 +23,7 @@ public static class Startup
         public static void AddServices(this IServiceCollection services)
         {
             services.AddScoped();
+            services.AddHttpClient();
             services.AddScoped();
             services.AddScoped();
             services.AddScoped();
@@ -33,6 +34,7 @@ public static void AddServices(this IServiceCollection services)
             services.AddScoped();
             services.AddScoped();
             services.AddScoped();
+            services.AddScoped();
 
             services.AddScoped();
             services.AddScoped();
diff --git a/OpenAPI/LearningHub.Nhs.OpenApi/Configuration/ConfigurationExtensions.cs b/OpenAPI/LearningHub.Nhs.OpenApi/Configuration/ConfigurationExtensions.cs
index 63b61f042..7d5a61795 100644
--- a/OpenAPI/LearningHub.Nhs.OpenApi/Configuration/ConfigurationExtensions.cs
+++ b/OpenAPI/LearningHub.Nhs.OpenApi/Configuration/ConfigurationExtensions.cs
@@ -40,6 +40,11 @@ public static class ConfigurationExtensions
         /// 
         public const string AzureSectionName = "Azure";
 
+        /// 
+        /// The FindwiseSectionName.
+        /// 
+        public const string MoodleSectionName = "Moodle";
+
         /// 
         /// Adds config.
         /// 
@@ -58,6 +63,8 @@ public static void AddConfig(this IServiceCollection services, IConfiguration co
             services.AddOptions().Bind(config.GetSection(LearningHubApiSectionName));
 
             services.AddOptions().Bind(config.GetSection(AzureSectionName));
+
+            services.AddOptions().Bind(config.GetSection(MoodleSectionName));
         }
 
         private static OptionsBuilder RegisterPostConfigure(this OptionsBuilder builder)
diff --git a/OpenAPI/LearningHub.Nhs.OpenApi/Controllers/MoodleController.cs b/OpenAPI/LearningHub.Nhs.OpenApi/Controllers/MoodleController.cs
new file mode 100644
index 000000000..30cb31a4e
--- /dev/null
+++ b/OpenAPI/LearningHub.Nhs.OpenApi/Controllers/MoodleController.cs
@@ -0,0 +1,47 @@
+namespace LearningHub.NHS.OpenAPI.Controllers
+{
+    using LearningHub.Nhs.OpenApi.Services.Interface.Services;
+    using Microsoft.AspNetCore.Authorization;
+    using Microsoft.AspNetCore.Mvc;
+    using System.Threading.Tasks;
+
+    /// 
+    /// Moodle operations.
+    /// 
+    [Route("Moodle")]
+    [ApiController]
+    [Authorize]
+    public class MoodleController : Controller
+    {
+        private readonly IMoodleApiService moodleService;
+
+        /// 
+        /// Initializes a new instance of the  class.
+        /// 
+        /// The moodle service.
+        public MoodleController(IMoodleApiService moodleService)
+        {
+            this.moodleService = moodleService;
+        }
+
+        /// 
+        /// The GetMoodleUserId.
+        /// 
+        /// The LH user id.
+        /// The .
+        [HttpGet]
+        [Route("GetMoodleUserId/{currentUserId?}")]
+        public async Task GetMoodleUserId(int? currentUserId)
+        {
+            if (currentUserId.HasValue)
+            {
+                var moodleUser = await this.moodleService.GetMoodleUserIdByUsernameAsync(currentUserId.Value);
+                return this.Ok(moodleUser);
+            }
+            else
+            {
+                return this.Ok(0);
+            }
+        }
+    }
+}
diff --git a/OpenAPI/LearningHub.Nhs.OpenApi/appsettings.json b/OpenAPI/LearningHub.Nhs.OpenApi/appsettings.json
index 401183bf6..61417224f 100644
--- a/OpenAPI/LearningHub.Nhs.OpenApi/appsettings.json
+++ b/OpenAPI/LearningHub.Nhs.OpenApi/appsettings.json
@@ -119,5 +119,10 @@
     "ResponseType": "code id_token",
     "AuthSecret": "",
     "AuthTimeout": 20
+  },
+  "Moodle": {
+    "APIBaseUrl": "",
+    "APIWSRestFormat": "json",
+    "APIWSToken": ""
   }
 }
From 60f1317bf214bfd1d02925a5090f7eb554c5f66e Mon Sep 17 00:00:00 2001
From: Binon 
Date: Wed, 30 Jul 2025 15:22:55 +0100
Subject: [PATCH 007/122] Rolling back Models to 48 to fix the build
---
 LearningHub.Nhs.WebUI/LearningHub.Nhs.WebUI.csproj              | 2 +-
 .../LearningHub.Nhs.OpenApi.Services.csproj                     | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/LearningHub.Nhs.WebUI/LearningHub.Nhs.WebUI.csproj b/LearningHub.Nhs.WebUI/LearningHub.Nhs.WebUI.csproj
index b69ead582..dc2cf661d 100644
--- a/LearningHub.Nhs.WebUI/LearningHub.Nhs.WebUI.csproj
+++ b/LearningHub.Nhs.WebUI/LearningHub.Nhs.WebUI.csproj
@@ -113,7 +113,7 @@
 		
 		
 		
-		
+		
 		
 		
 		
diff --git a/OpenAPI/LearningHub.Nhs.OpenApi.Services/LearningHub.Nhs.OpenApi.Services.csproj b/OpenAPI/LearningHub.Nhs.OpenApi.Services/LearningHub.Nhs.OpenApi.Services.csproj
index bf7b23c23..9002a0237 100644
--- a/OpenAPI/LearningHub.Nhs.OpenApi.Services/LearningHub.Nhs.OpenApi.Services.csproj
+++ b/OpenAPI/LearningHub.Nhs.OpenApi.Services/LearningHub.Nhs.OpenApi.Services.csproj
@@ -30,7 +30,7 @@
 		
 		
 		
-		
+		
 		
 		
 		
From 3ff0fc75cbba114e7fd314402e0c0827e4c3cd1e Mon Sep 17 00:00:00 2001
From: Binon 
Date: Thu, 31 Jul 2025 09:34:16 +0100
Subject: [PATCH 008/122] Removed moodle models in WebUI
---
 .../Shared/Tenant/LearningHub/_Layout.cshtml  | 22 ++++++++++---------
 1 file changed, 12 insertions(+), 10 deletions(-)
diff --git a/LearningHub.Nhs.WebUI/Views/Shared/Tenant/LearningHub/_Layout.cshtml b/LearningHub.Nhs.WebUI/Views/Shared/Tenant/LearningHub/_Layout.cshtml
index 6b679b67e..1214ec0f7 100644
--- a/LearningHub.Nhs.WebUI/Views/Shared/Tenant/LearningHub/_Layout.cshtml
+++ b/LearningHub.Nhs.WebUI/Views/Shared/Tenant/LearningHub/_Layout.cshtml
@@ -170,15 +170,17 @@
 @functions {
     public async Task DisplayOffline()
     {
-        if (ViewContext.RouteData.Values["controller"].ToString() != "Offline" && User.Identity.IsAuthenticated)
-        {
-            var internalSystem = await this.internalSystemService.GetByIdAsync((int)InternalSystemType.LearningHub);
-
-            return internalSystem.IsOffline;
-        }
-        else
-        {
-            return false;
-        }
+        return false;
+
+        // if (ViewContext.RouteData.Values["controller"].ToString() != "Offline" && User.Identity.IsAuthenticated)
+        // {
+        //     var internalSystem = await this.internalSystemService.GetByIdAsync((int)InternalSystemType.LearningHub);
+
+        //     return internalSystem.IsOffline;
+        // }
+        // else
+        // {
+        //     return false;
+        // }
     }
 }
\ No newline at end of file
From c60e16546c2bf98b4f08a95fb2c696e922acd3b2 Mon Sep 17 00:00:00 2001
From: Binon 
Date: Thu, 31 Jul 2025 09:34:54 +0100
Subject: [PATCH 009/122] Removed the Moodle models in WebUI
---
 .../Helpers/ResourceTypeEnumMoodle.cs         |  82 ---------
 .../Helpers/UtilityHelper.cs                  |  66 +------
 .../LearningHub.Nhs.WebUI.csproj              |   2 +-
 .../MoodleCompletionResponseViewModel.cs      |  28 ---
 .../Models/MoodleCourseCompletionViewModel.cs | 103 -----------
 .../Models/MoodleCourseResponseViewModel.cs   | 165 ------------------
 .../Models/MoodleOverviewFileViewModel.cs     |  38 ----
 .../Models/MoodleUserResponseViewModel.cs     | 121 -------------
 .../Services/MoodleApiService.cs              |   2 +-
 .../Services/SearchService.cs                 |   6 +-
 .../Views/Search/_ResourceSearchResult.cshtml |   2 +-
 .../LearningHub.Nhs.OpenApi.Services.csproj   |   2 +-
 12 files changed, 9 insertions(+), 608 deletions(-)
 delete mode 100644 LearningHub.Nhs.WebUI/Helpers/ResourceTypeEnumMoodle.cs
 delete mode 100644 LearningHub.Nhs.WebUI/Models/MoodleCompletionResponseViewModel.cs
 delete mode 100644 LearningHub.Nhs.WebUI/Models/MoodleCourseCompletionViewModel.cs
 delete mode 100644 LearningHub.Nhs.WebUI/Models/MoodleCourseResponseViewModel.cs
 delete mode 100644 LearningHub.Nhs.WebUI/Models/MoodleOverviewFileViewModel.cs
 delete mode 100644 LearningHub.Nhs.WebUI/Models/MoodleUserResponseViewModel.cs
diff --git a/LearningHub.Nhs.WebUI/Helpers/ResourceTypeEnumMoodle.cs b/LearningHub.Nhs.WebUI/Helpers/ResourceTypeEnumMoodle.cs
deleted file mode 100644
index e0601d156..000000000
--- a/LearningHub.Nhs.WebUI/Helpers/ResourceTypeEnumMoodle.cs
+++ /dev/null
@@ -1,82 +0,0 @@
-namespace LearningHub.Nhs.WebUI.Helpers;
-
-/// 
-/// Represents the types of resources available in Moodle.
-/// 
-public enum ResourceTypeEnumMoodle
-{
-    /// 
-    /// The undefined resource type.
-    /// 
-    Undefined,
-
-    /// 
-    /// The article resource type.
-    /// 
-    Article,
-
-    /// 
-    /// The audio resource type.
-    /// 
-    Audio,
-
-    /// 
-    /// The embedded resource type.
-    /// 
-    Embedded,
-
-    /// 
-    /// The equipment resource type.
-    /// 
-    Equipment,
-
-    /// 
-    /// The image resource type.
-    /// 
-    Image,
-
-    /// 
-    /// The SCORM resource type.
-    /// 
-    Scorm,
-
-    /// 
-    /// The video resource type.
-    /// 
-    Video,
-
-    /// 
-    /// The web link resource type.
-    /// 
-    WebLink,
-
-    /// 
-    /// The generic file resource type.
-    /// 
-    GenericFile,
-
-    /// 
-    /// The clinical case resource type.
-    /// 
-    Case,
-
-    /// 
-    /// The assessment resource type.
-    /// 
-    Assessment,
-
-    /// 
-    /// The HTML resource type.
-    /// 
-    Html,
-
-    /// 
-    /// The Moodle resource type.
-    /// 
-    Moodle,
-
-    /// 
-    /// The Moodle course resource type.
-    /// 
-    Course,
-}
\ No newline at end of file
diff --git a/LearningHub.Nhs.WebUI/Helpers/UtilityHelper.cs b/LearningHub.Nhs.WebUI/Helpers/UtilityHelper.cs
index c07ab98e9..e1732d5a3 100644
--- a/LearningHub.Nhs.WebUI/Helpers/UtilityHelper.cs
+++ b/LearningHub.Nhs.WebUI/Helpers/UtilityHelper.cs
@@ -19,24 +19,6 @@ public static class UtilityHelper
         /// Findwise resource type dictionary.
         /// 
         public static readonly Dictionary FindwiseResourceTypeDict = new Dictionary()
-        {
-            { "video", ResourceTypeEnum.Video },
-            { "article", ResourceTypeEnum.Article },
-            { "case", ResourceTypeEnum.Case },
-            { "weblink", ResourceTypeEnum.WebLink },
-            { "audio", ResourceTypeEnum.Audio },
-            { "scorm", ResourceTypeEnum.Scorm },
-            { "assessment", ResourceTypeEnum.Assessment },
-            { "genericfile", ResourceTypeEnum.GenericFile },
-            { "image", ResourceTypeEnum.Image },
-            { "html", ResourceTypeEnum.Html },
-        };
-
-        /// TODO: Remove this method after adding to Moodle resource types to models project.
-        /// 
-        /// Findwise Moodle resource type dictionary.
-        /// 
-        public static readonly Dictionary FindwiseResourceMoodleTypeDict = new Dictionary()
         {
             { "video", ResourceTypeEnum.Video },
             { "article", ResourceTypeEnum.Article },
@@ -166,52 +148,6 @@ public static string GetPrettifiedResourceTypeName(ResourceTypeEnum resourceType
             }
         }
 
-        /// TODO: Remove this method after adding to Moodle resource types to models project.
-        /// 
-        /// Returns a prettified resource type name, suitable for display in the UI. Includes video/audio duration string.
-        /// 
-        /// The resource type.
-        /// The media duration in milliseconds.
-        /// The resource type name, and duration if applicable.
-        public static string GetPrettifiedResourceTypeNameMoodle(ResourceTypeEnum resourceType, int? durationInMilliseconds = 0)
-        {
-            switch (resourceType)
-            {
-                case ResourceTypeEnum.Assessment:
-                    return "Assessment";
-                case ResourceTypeEnum.Article:
-                    return "Article";
-                case ResourceTypeEnum.Audio:
-                    string durationText = GetDurationText(durationInMilliseconds ?? 0);
-                    durationText = string.IsNullOrEmpty(durationText) ? string.Empty : " - " + durationText;
-                    return "Audio" + durationText;
-                case ResourceTypeEnum.Equipment:
-                    return "Equipment";
-                case ResourceTypeEnum.Image:
-                    return "Image";
-                case ResourceTypeEnum.Scorm:
-                    return "elearning";
-                case ResourceTypeEnum.Video:
-                    durationText = GetDurationText(durationInMilliseconds ?? 0);
-                    durationText = string.IsNullOrEmpty(durationText) ? string.Empty : " - " + durationText;
-                    return "Video" + durationText;
-                case ResourceTypeEnum.WebLink:
-                    return "Web link";
-                case ResourceTypeEnum.GenericFile:
-                    return "File";
-                case ResourceTypeEnum.Embedded:
-                    return "Embedded";
-                case ResourceTypeEnum.Case:
-                    return "Case";
-                case ResourceTypeEnum.Html:
-                    return "HTML";
-                case ResourceTypeEnum.Moodle:
-                    return "Course";
-                default:
-                    return "File";
-            }
-        }
-
         /// 
         /// Returns a prettified resource type name, suitable for display in the UI. Excludes video/audio duration string.
         /// 
@@ -245,6 +181,8 @@ public static string GetPrettifiedResourceTypeName(ResourceTypeEnum resourceType
                     return "Case";
                 case ResourceTypeEnum.Html:
                     return "HTML";
+                case ResourceTypeEnum.Moodle:
+                    return "Course";
                 default:
                     return "File";
             }
diff --git a/LearningHub.Nhs.WebUI/LearningHub.Nhs.WebUI.csproj b/LearningHub.Nhs.WebUI/LearningHub.Nhs.WebUI.csproj
index dc2cf661d..b69ead582 100644
--- a/LearningHub.Nhs.WebUI/LearningHub.Nhs.WebUI.csproj
+++ b/LearningHub.Nhs.WebUI/LearningHub.Nhs.WebUI.csproj
@@ -113,7 +113,7 @@
 		
 		
 		
-		
+		
 		
 		
 		
diff --git a/LearningHub.Nhs.WebUI/Models/MoodleCompletionResponseViewModel.cs b/LearningHub.Nhs.WebUI/Models/MoodleCompletionResponseViewModel.cs
deleted file mode 100644
index 1692a32e6..000000000
--- a/LearningHub.Nhs.WebUI/Models/MoodleCompletionResponseViewModel.cs
+++ /dev/null
@@ -1,28 +0,0 @@
-namespace LearningHub.Nhs.WebUI.Models
-{
-    /// 
-    /// MoodleCompletionResponseViewModel.
-    /// 
-    public class MoodleCompletionResponseViewModel
-    {
-        /// 
-        /// Gets or sets the completion status.
-        /// 
-        public string Exception { get; set; }
-
-        /// 
-        /// Gets or sets error code.
-        /// 
-        public string Errorcode { get; set; }
-
-        /// 
-        ///  Gets or sets Error message.
-        /// 
-        public string Message { get; set; }
-
-        /// 
-        ///  Gets or sets Debug info.
-        /// 
-        public string Debuginfo { get; set; }
-    }
-}
diff --git a/LearningHub.Nhs.WebUI/Models/MoodleCourseCompletionViewModel.cs b/LearningHub.Nhs.WebUI/Models/MoodleCourseCompletionViewModel.cs
deleted file mode 100644
index 06eb5cb8f..000000000
--- a/LearningHub.Nhs.WebUI/Models/MoodleCourseCompletionViewModel.cs
+++ /dev/null
@@ -1,103 +0,0 @@
-namespace LearningHub.Nhs.WebUI.Models
-{
-    using System.Collections.Generic;
-
-    /// 
-    /// MoodleCourseCompletionViewModel.
-    /// 
-    public class MoodleCourseCompletionViewModel
-    {
-        /// 
-        /// Gets or sets the completion status.
-        /// 
-        public CompletStatus CompletionStatus { get; set; }
-
-        /// 
-        /// Gets or sets the list of warnings.
-        /// 
-        public List