kreta/Kreta.Client/Tavollet/TavolletClient.cs
2024-03-13 00:33:46 +01:00

172 lines
6.8 KiB
C#

using System;
using System.Collections.Generic;
using System.Net;
using Kreta.Core.SAP.CommunicationModels;
using Kreta.Core.SAP.CommunicationModels.SzamfejtettTavolletek;
using Kreta.Core.SAP.CommunicationModels.TavolletIgenyekKezelese;
using Kreta.Core.SAP.Enums;
using Kreta.Framework;
using Kreta.Framework.Logging;
using Kreta.Resources;
using Newtonsoft.Json;
using RestSharp;
namespace Kreta.Client.Tavollet
{
public class TavolletClient
{
private readonly string baseUrl;
private readonly string apiKey;
public TavolletClient(string baseUrl, string apiKey)
{
this.baseUrl = baseUrl;
this.apiKey = apiKey;
}
private IRestResponse Http(Method method, string relativeUri, Dictionary<string, string> parameters = null, Object body = null)
{
var restRequest = new RestRequest(relativeUri, method);
restRequest.AddHeader("ApiKey", apiKey);
if (parameters != null && parameters.Count > 0)
{
foreach (var parameter in parameters)
{
restRequest.AddParameter(parameter.Key, parameter.Value);
}
}
if (method == Method.POST && body != null)
{
restRequest.AddJsonBody(body);
}
var result = new RestClient(string.Format(baseUrl)).Execute(restRequest);
if (result.StatusCode == HttpStatusCode.InternalServerError)
{
throw new Exception(result.ErrorMessage);
}
if (result.StatusCode == HttpStatusCode.NotFound || result.StatusCode == HttpStatusCode.BadRequest)
{
SDAServer.Instance.Logger.CustomEvent(Events.CLIENT_GENERAL, LogLevel.WARNING, result.Content);
}
return result;
}
private TResponse Http<TResponse>(Method method, string relativeUri, Dictionary<string, string> parameters = null, Object body = null) where TResponse : IBaseResponseModel, new()
{
var result = Http(method, relativeUri, parameters, body);
if (result.StatusCode == HttpStatusCode.BadRequest)
{
var errorModel = new TResponse();
errorModel.IsSuccess = false;
errorModel.ErrorMessage = result.Content;
return errorModel;
}
if (result.StatusCode == HttpStatusCode.NotFound)
{
var errorModel = new TResponse();
errorModel.IsSuccess = false;
errorModel.ErrorMessage = HRModulResource.SzolgaltatasJelenlegNemElerheto;
return errorModel;
}
var response = JsonConvert.DeserializeObject<TResponse>(result.Content);
return response;
}
private TResponse PostAsync<TResponse>(string relativeUri, Dictionary<string, string> parameters = null, Object body = null) where TResponse : IBaseResponseModel, new()
{
return Http<TResponse>(Method.POST, relativeUri, parameters, body);
}
public TavolletjelentoListaResponseModel GetTavolletek(TavolletjelentoListaRequestModel request)
{
var response = PostAsync<TavolletjelentoListaResponseModel>("/api/holidaysmanagement/external/getTavolletjelentoLista", null, request);
return response;
}
public TavolletAdatokResponseModel GetTavolletAlkalmazottakAdatai(TavolletAdatokRequestModel request)
{
var response = PostAsync<TavolletAdatokResponseModel>("/api/holidaysmanagement/external/getTavolletAdatok", null, request);
return response;
}
public IntezmenyiTavolletBefogadottResponseModel GetVezetokTavolletAdatok(IntezmenyiTavolletBefogadottRequestModel request)
{
var response = PostAsync<IntezmenyiTavolletBefogadottResponseModel>("/api/holidaysmanagement/external/vezetok/getIntezmenyiTavolletBefogadott", null, request);
return response;
}
public IntezmenyiTavolletBefogadottResponseModel GetAlkalmazottakTavolletAdatok(IntezmenyiTavolletBefogadottRequestModel request)
{
var response = PostAsync<IntezmenyiTavolletBefogadottResponseModel>("/api/holidaysmanagement/external/alkalmazottak/getIntezmenyiTavolletBefogadott", null, request);
return response;
}
public TavolletjelentoDetailResponseModel GetTavollet(TavolletjelentoCRUDRequestModel request)
{
var response = PostAsync<TavolletjelentoDetailResponseModel>("/api/holidaysmanagement/external/getTavolletDetail", null, request);
return response;
}
public TavolletjelentoListaResponseModel GetTavolletDetailList(TavolletjelentoCRUDRequestModel request)
{
var response = PostAsync<TavolletjelentoListaResponseModel>("/api/holidaysmanagement/external/getTavolletDetailList", null, request);
return response;
}
public TavolletjelentoCRUDResponseModel SaveOrUpdateTavollet(TavolletjelentoCRUDRequestModel request)
{
var response = new TavolletjelentoCRUDResponseModel();
switch (request.Action)
{
case WorkflowMuveletek.Letrehoz:
response = PostAsync<TavolletjelentoCRUDResponseModel>("/api/holidaysmanagement/external/createTavollet", null, request);
break;
case WorkflowMuveletek.Modosit:
case WorkflowMuveletek.Hianypotlas:
case WorkflowMuveletek.Elutasit:
response = PostAsync<TavolletjelentoCRUDResponseModel>("/api/holidaysmanagement/external/updateTavollet", null, request);
break;
default:
throw new Exception();
}
return response;
}
public IntezmenyiTavolletIgenyElfogadasResponseModel JovahagyTavolletek(List<IntezmenyiTavolletIgenyElfogadasRequestModel> request)
{
var response = PostAsync<IntezmenyiTavolletIgenyElfogadasResponseModel>("/api/holidaysmanagement/external/jovahagyTavolletek", null, request);
return response;
}
public TavolletjelentoCRUDResponseModel DeleteTavollet(TavolletjelentoCRUDRequestModel request)
{
var response = PostAsync<TavolletjelentoCRUDResponseModel>("/api/holidaysmanagement/external/deleteTavollet", null, request);
return response;
}
public TavolletDokumentumSyncResponseModel SyncTavolletIktatott(TavolletDokumentumSyncRequestModel request)
{
var result = PostAsync<TavolletDokumentumSyncResponseModel>("/api/holidaysmanagement/external/syncDocumentInfo", null, request);
return result;
}
}
}