76 lines
3.8 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|