172 lines
6.8 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|