using System.Collections.Generic; using System.Linq; using System.Net.Http; using System.Threading.Tasks; using Oqtane.Services; using Oqtane.Shared; namespace SZUAbsolventenverein.Module.BlackBoard.Services { public interface IBlackBoardService { Task> GetBlackBoardsAsync(int ModuleId); Task GetBlackBoardAsync(int BlackBoardId, int ModuleId); Task AddBlackBoardAsync(Models.BlackBoard BlackBoard); Task UpdateBlackBoardAsync(Models.BlackBoard BlackBoard); Task DeleteBlackBoardAsync(int BlackBoardId, int ModuleId); } public class BlackBoardService : ServiceBase, IBlackBoardService { public BlackBoardService(HttpClient http, SiteState siteState) : base(http, siteState) { } private string Apiurl => CreateApiUrl("BlackBoard"); public async Task> GetBlackBoardsAsync(int ModuleId) { List BlackBoards = await GetJsonAsync>(CreateAuthorizationPolicyUrl($"{Apiurl}?moduleid={ModuleId}", EntityNames.Module, ModuleId), Enumerable.Empty().ToList()); return BlackBoards.OrderBy(item => item.Name).ToList(); } public async Task GetBlackBoardAsync(int BlackBoardId, int ModuleId) { return await GetJsonAsync(CreateAuthorizationPolicyUrl($"{Apiurl}/{BlackBoardId}/{ModuleId}", EntityNames.Module, ModuleId)); } public async Task AddBlackBoardAsync(Models.BlackBoard BlackBoard) { return await PostJsonAsync(CreateAuthorizationPolicyUrl($"{Apiurl}", EntityNames.Module, BlackBoard.ModuleId), BlackBoard); } public async Task UpdateBlackBoardAsync(Models.BlackBoard BlackBoard) { return await PutJsonAsync(CreateAuthorizationPolicyUrl($"{Apiurl}/{BlackBoard.BlackBoardId}", EntityNames.Module, BlackBoard.ModuleId), BlackBoard); } public async Task DeleteBlackBoardAsync(int BlackBoardId, int ModuleId) { await DeleteAsync(CreateAuthorizationPolicyUrl($"{Apiurl}/{BlackBoardId}/{ModuleId}", EntityNames.Module, ModuleId)); } } }