Files
Module.PremiumArea/Client/Services/EngineerApplicationService.cs

76 lines
3.8 KiB
C#

using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Threading.Tasks;
using Oqtane.Services;
using Oqtane.Shared;
using SZUAbsolventenverein.Module.PremiumArea.Models;
namespace SZUAbsolventenverein.Module.PremiumArea.Services
{
public interface IEngineerApplicationService
{
Task<List<EngineerApplication>> GetApplicationsAsync(int ModuleId);
Task<List<EngineerApplication>> GetApplicationsAsync(int ModuleId, string status);
Task<EngineerApplication> GetApplicationAsync(int ApplicationId, int ModuleId);
Task<EngineerApplication> AddApplicationAsync(EngineerApplication Application);
Task<EngineerApplication> UpdateApplicationAsync(EngineerApplication Application);
Task DeleteApplicationAsync(int ApplicationId, int ModuleId);
Task ApproveApplicationAsync(int ApplicationId, int ModuleId);
Task RejectApplicationAsync(int ApplicationId, int ModuleId, string Reason);
Task ReportApplicationAsync(int ApplicationId, int ModuleId, string Reason);
}
public class EngineerApplicationService : ServiceBase, IEngineerApplicationService
{
public EngineerApplicationService(HttpClient http, SiteState siteState) : base(http, siteState) { }
private string Apiurl => CreateApiUrl("EngineerApplication");
public async Task<List<EngineerApplication>> GetApplicationsAsync(int ModuleId)
{
return await GetJsonAsync<List<EngineerApplication>>(CreateAuthorizationPolicyUrl($"{Apiurl}?moduleid={ModuleId}", EntityNames.Module, ModuleId));
}
public async Task<List<EngineerApplication>> GetApplicationsAsync(int ModuleId, string status)
{
return await GetJsonAsync<List<EngineerApplication>>(CreateAuthorizationPolicyUrl($"{Apiurl}/status/{status}?moduleid={ModuleId}", EntityNames.Module, ModuleId));
}
public async Task<EngineerApplication> GetApplicationAsync(int ApplicationId, int ModuleId)
{
return await GetJsonAsync<EngineerApplication>(CreateAuthorizationPolicyUrl($"{Apiurl}/{ApplicationId}?moduleid={ModuleId}", EntityNames.Module, ModuleId));
}
public async Task<EngineerApplication> AddApplicationAsync(EngineerApplication Application)
{
return await PostJsonAsync<EngineerApplication>(CreateAuthorizationPolicyUrl($"{Apiurl}", EntityNames.Module, Application.ModuleId), Application);
}
public async Task<EngineerApplication> UpdateApplicationAsync(EngineerApplication Application)
{
return await PutJsonAsync<EngineerApplication>(CreateAuthorizationPolicyUrl($"{Apiurl}/{Application.ApplicationId}", EntityNames.Module, Application.ModuleId), Application);
}
public async Task DeleteApplicationAsync(int ApplicationId, int ModuleId)
{
await DeleteAsync(CreateAuthorizationPolicyUrl($"{Apiurl}/{ApplicationId}?moduleid={ModuleId}", EntityNames.Module, ModuleId));
}
public async Task ApproveApplicationAsync(int ApplicationId, int ModuleId)
{
await PostAsync(CreateAuthorizationPolicyUrl($"{Apiurl}/approve/{ApplicationId}?moduleid={ModuleId}", EntityNames.Module, ModuleId));
}
public async Task RejectApplicationAsync(int ApplicationId, int ModuleId, string Reason)
{
await PostAsync(CreateAuthorizationPolicyUrl($"{Apiurl}/reject/{ApplicationId}?moduleid={ModuleId}&reason={System.Net.WebUtility.UrlEncode(Reason)}", EntityNames.Module, ModuleId));
}
public async Task ReportApplicationAsync(int ApplicationId, int ModuleId, string Reason)
{
await PostJsonAsync(CreateAuthorizationPolicyUrl($"{Apiurl}/report/{ApplicationId}?moduleid={ModuleId}", EntityNames.Module, ModuleId), Reason);
}
}
}