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

805 lines
35 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Text;
using Kreta.Client.ClientBase;
using Kreta.Client.KGR.Configuration;
using Kreta.Client.KGR.Exceptions;
using Kreta.Client.KGR.Extension;
using Kreta.Client.KGR.Model;
using Kreta.Client.KGR.Request;
using Kreta.Client.KGR.Response;
using Kreta.Core;
using Kreta.Framework;
using Kreta.Framework.Exceptions;
using Kreta.Resources;
using Newtonsoft.Json;
namespace Kreta.Client.KGR
{
internal class KGRClient : RestSharpClientBase, IKGRClient
{
private readonly IKGRClientConfiguration kgrClientConfiguration;
public KGRClient(IKGRClientConfiguration kgrClientConfiguration)
{
this.kgrClientConfiguration = kgrClientConfiguration ?? throw new ArgumentNullException(nameof(kgrClientConfiguration));
}
public List<EszkozModel> KGREszkozList(EszkozHeaderRequest request)
{
var token = GetToken();
if (token.IsSuccess)
{
BaseUrl = kgrClientConfiguration.KGRUrl;
var relativeUri = $"kreta/eszkozok/intezmenyi";
var response = Post(relativeUri, token.AccessToken.GetAuthorizationHeaderWithJson(request.IntezmenyGuid), queryStrings: HeaderExtension.GetEszkozQueryString(request.IntezmenyAzonosito, request.Sztsz));
if (response.StatusCode == HttpStatusCode.OK)
{
return JsonConvert.DeserializeObject<List<EszkozModel>>(response.Result);
}
return new List<EszkozModel>();
}
return new List<EszkozModel>();
}
public List<ProjektModel> ProjektList(ProjektHeaderRequest request)
{
var token = GetToken();
if (token.IsSuccess)
{
BaseUrl = kgrClientConfiguration.KGRUrl;
var relativeUri = $"kreta/projektek/felhasznalo/{request.AlkalmazottId}/osszes";
var response = Get(relativeUri, token.AccessToken.GetAuthorizationHeaderWithJson(request.IntezmenyGuid));
if (response.StatusCode == HttpStatusCode.OK)
{
return JsonConvert.DeserializeObject<List<ProjektModel>>(response.Result);
}
return new List<ProjektModel>();
}
return new List<ProjektModel>();
}
public List<ProjektModel> ProjektJelentkezes(ProjektJelentkezesModel model)
{
var token = GetToken();
if (token.IsSuccess)
{
BaseUrl = kgrClientConfiguration.KGRUrl;
var relativeUri = $"/kreta/projektek/felhasznalo/jelentkezes";
var response = Put(relativeUri, token.AccessToken.GetAuthorizationHeaderWithJson(), body: model);
if (response.StatusCode == HttpStatusCode.OK)
{
return new List<ProjektModel>();
}
return new List<ProjektModel>();
}
return new List<ProjektModel>();
}
public ApaczaiPalyazatModel CreateApaczaiPalyazat(ApaczaiPalyazatFelvetelRequest model)
{
var token = GetToken();
if (token.IsSuccess)
{
BaseUrl = kgrClientConfiguration.KGRUrl;
var relativeUri = $"/kreta/apaczai/felvetel";
var headers = token.AccessToken.GetAuthorizationHeaderWithJson();
headers.Add("EgyediAzonosito", model.Palyazo.IdpEgyediAzonosito.ToString());
headers.Add("TanevId", model.TanevId.ToString());
headers.Add("retrieve", "true");
var response = Post(relativeUri, headers, body: model);
if (response.StatusCode == HttpStatusCode.OK)
{
return JsonConvert.DeserializeObject<ApaczaiPalyazatModel>(response.Result);
}
if (response.Exception != null)
{
throw new ApplicationException(ErrorResource.SikertelenApaczaiPalyazatBenyujtas, response.Exception);
}
var exception = new ApplicationException();
exception.Data.Add("ApaczaiHiba", GetApaczaiHibaUzenetFromHibaResponse(response.Result, ErrorResource.SikertelenApaczaiPalyazatBenyujtas));
throw exception;
}
throw new SikertelenAccessTokenLekeresException(ErrorResource.SikertelenApaczaiPalyazatBenyujtas);
}
public ApaczaiPalyazatModel PalyazatAdategyeztetes(ApaczaiPalyazatFelvetelRequest model)
{
var token = GetToken();
if (token.IsSuccess)
{
BaseUrl = kgrClientConfiguration.KGRUrl;
var relativeUri = $"/kreta/apaczai/adategyeztetes";
var headers = token.AccessToken.GetAuthorizationHeaderWithJson();
headers.Add("EgyediAzonosito", model.Palyazo.IdpEgyediAzonosito.ToString());
headers.Add("TanevId", model.TanevId.ToString());
headers.Add("retrieve", "true");
var response = Post(relativeUri, headers, body: model);
if (response.StatusCode == HttpStatusCode.OK)
{
return JsonConvert.DeserializeObject<ApaczaiPalyazatModel>(response.Result);
}
if (response.Exception != null)
{
throw new ApplicationException(ErrorResource.SikertelenApaczaiPalyazatAdategyeztetes, response.Exception);
}
var exception = new ApplicationException();
exception.Data.Add("ApaczaiHiba", GetApaczaiHibaUzenetFromHibaResponse(response.Result, ErrorResource.SikertelenApaczaiPalyazatAdategyeztetes));
throw exception;
}
throw new SikertelenAccessTokenLekeresException(ErrorResource.SikertelenApaczaiPalyazatAdategyeztetes);
}
public ApaczaiPalyazatModel GetApaczaiPalyazat(int tanevSorszam, Guid tanuloIdpEgyediAzonosito)
{
var token = GetToken();
if (token.IsSuccess)
{
BaseUrl = kgrClientConfiguration.KGRUrl;
var relativeUri = $"/kreta/apaczai";
var headers = token.AccessToken.GetAuthorizationHeaderWithJson();
headers.Add("EgyediAzonosito", tanuloIdpEgyediAzonosito.ToString());
headers.Add("TanevId", tanevSorszam.ToString());
var response = Get(relativeUri, headers);
if (response.StatusCode == HttpStatusCode.OK)
{
return JsonConvert.DeserializeObject<ApaczaiPalyazatModel>(response.Result);
}
if (response.Exception != null)
{
throw new ApplicationException(ErrorResource.SikertelenApaczaiPalyazatLekeres, response.Exception);
}
throw new ApplicationException(ErrorResource.SikertelenApaczaiPalyazatLekeres);
}
throw new SikertelenAccessTokenLekeresException(ErrorResource.SikertelenApaczaiPalyazatLekeres);
}
public List<ApaczaiPalyazatDokumentumModel> GetApaczaiPalyazatDokumentumai(int tanevSorszam, Guid tanuloIdpEgyediAzonosito)
{
var token = GetToken();
if (token.IsSuccess)
{
BaseUrl = kgrClientConfiguration.KGRUrl;
var relativeUri = $"/kreta/apaczai/fajl/felhasznalo/osszes";
var headers = token.AccessToken.GetAuthorizationHeaderWithJson();
headers.Add("EgyediAzonosito", tanuloIdpEgyediAzonosito.ToString());
headers.Add("TanevId", tanevSorszam.ToString());
var response = Get(relativeUri, headers);
if (response.StatusCode == HttpStatusCode.OK)
{
return JsonConvert.DeserializeObject<List<ApaczaiPalyazatDokumentumModel>>(response.Result);
}
if (response.Exception != null)
{
throw new ApplicationException(ErrorResource.SikertelenApaczaiDokumentumokLekerese, response.Exception);
}
var exception = new ApplicationException();
exception.Data.Add("ApaczaiHiba", GetApaczaiHibaUzenetFromHibaResponse(response.Result, ErrorResource.SikertelenApaczaiDokumentumokLekerese));
throw exception;
}
throw new SikertelenAccessTokenLekeresException(ErrorResource.SikertelenApaczaiDokumentumokLekerese);
}
public byte[] GetApaczaiPalyazatDokumentuma(int tanevSorszam, Guid tanuloIdpEgyediAzonosito, Guid fileId)
{
var token = GetToken();
if (token.IsSuccess)
{
BaseUrl = kgrClientConfiguration.KGRUrl;
var relativeUri = $"/kreta/apaczai/fajl/letoltes";
var headers = token.AccessToken.GetAuthorizationHeaderWithJson();
headers.Add("EgyediAzonosito", tanuloIdpEgyediAzonosito.ToString());
headers.Add("TanevId", tanevSorszam.ToString());
headers.Add("FileServiceEgyediAzonosito", fileId.ToString());
var response = Get(relativeUri, headers);
if (response.StatusCode == HttpStatusCode.OK)
{
return response.RawBytes;
}
if (response.Exception != null)
{
throw new ApplicationException(ErrorResource.SikertelenApaczaiDokumentumLetoltes, response.Exception);
}
throw new ApplicationException(ErrorResource.SikertelenApaczaiDokumentumLetoltes);
}
throw new SikertelenAccessTokenLekeresException(ErrorResource.SikertelenApaczaiDokumentumLetoltes);
}
public bool PostApaczaiPalyazatDokumentumBinaryFiles(int tanevSorszam, Guid tanuloIdpEgyediAzonosito, ApaczaiUploadFileRequestBinary model)
{
var token = GetToken();
if (token.IsSuccess)
{
BaseUrl = kgrClientConfiguration.KGRUrl;
var headers = token.AccessToken.GetAuthorizationHeaderWithJson();
headers.Add("EgyediAzonosito", tanuloIdpEgyediAzonosito.ToString());
headers.Add("TanevId", tanevSorszam.ToString());
headers.Add("FileTypeId", model.PostedFileCategory.ToString());
var relativeUri = $"/kreta/apaczai/fajl/stream/feltoltes";
var postedFiles = new List<Jira.Model.Request.File>() { new Jira.Model.Request.File()
{
Content = model.File,
ContentType = model.PostedFileContentType,
FileName = model.PostedFileName,
Name = "fajl"
}};
var response = Post(relativeUri, headers, fileList: postedFiles);
if (response.StatusCode == HttpStatusCode.OK)
{
return true;
}
if (response.Exception != null)
{
throw new ApplicationException(ErrorResource.SikertelenApaczaiDokumentumFeltoltes, response.Exception);
}
var exception = new ApplicationException();
exception.Data.Add("ApaczaiHiba", GetApaczaiHibaUzenetFromHibaResponse(response.Result, ErrorResource.SikertelenApaczaiDokumentumFeltoltes));
throw exception;
}
throw new SikertelenAccessTokenLekeresException(ErrorResource.SikertelenApaczaiDokumentumFeltoltes);
}
public ApaczaiPalyazatModel GetApaczaiVisszavonas(int tanevSorszam, Guid tanuloIdpEgyediAzonosito, bool retrieve = false)
{
var token = GetToken();
if (token.IsSuccess)
{
BaseUrl = kgrClientConfiguration.KGRUrl;
var relativeUri = $"/kreta/apaczai/visszavonas";
var headers = token.AccessToken.GetAuthorizationHeaderWithJson();
headers.Add("EgyediAzonosito", tanuloIdpEgyediAzonosito.ToString());
headers.Add("TanevId", tanevSorszam.ToString());
headers.Add("Retrieve", retrieve.ToString());
var response = Get(relativeUri, headers);
if (response.StatusCode == HttpStatusCode.OK)
{
return JsonConvert.DeserializeObject<ApaczaiPalyazatModel>(response.Result);
}
if (response.Exception != null)
{
throw new ApplicationException(ErrorResource.SikertelenApaczaiPalyazatVisszavonas, response.Exception);
}
var exception = new ApplicationException();
exception.Data.Add("ApaczaiHiba", GetApaczaiHibaUzenetFromHibaResponse(response.Result, ErrorResource.SikertelenApaczaiPalyazatVisszavonas));
throw exception;
}
throw new SikertelenAccessTokenLekeresException(ErrorResource.SikertelenApaczaiPalyazatVisszavonas);
}
public List<ApaczaiIgenylesModel> GetIgenylesekModelList(int tanevSorszam, Guid intezmenyEgyediAzonosito)
{
var token = GetToken();
if (token.IsSuccess)
{
BaseUrl = kgrClientConfiguration.KGRUrl;
var relativeUri = $"/kreta/apaczai/intezmeny/osszes";
var headers = token.AccessToken.GetAuthorizationHeaderWithJson();
headers.Add("TanevId", tanevSorszam.ToString());
headers.Add("IntezmenyEgyediAzonosito", intezmenyEgyediAzonosito.ToString());
var response = Get(relativeUri, headers);
if (response.StatusCode == HttpStatusCode.OK)
{
return JsonConvert.DeserializeObject<List<ApaczaiIgenylesModel>>(response.Result);
}
if (response.Exception != null)
{
throw new ApplicationException(ErrorResource.SikertelenApaczaiPalyazatVisszavonas, response.Exception);
}
var exception = new ApplicationException();
exception.Data.Add("ApaczaiHiba", GetApaczaiHibaUzenetFromHibaResponse(response.Result, ErrorResource.SikertelenApaczaiIgenylesekLekerese));
throw exception;
}
throw new SikertelenAccessTokenLekeresException(ErrorResource.SikertelenApaczaiIgenylesekLekerese);
}
public List<ApaczaiKifizetesModel> GetKifizetesekModelList(int tanevSorszam)
{
var token = GetToken();
if (token.IsSuccess)
{
BaseUrl = kgrClientConfiguration.KGRUrl;
var relativeUri = $"/kreta/apaczai/{tanevSorszam}";
var headers = token.AccessToken.GetAuthorizationHeaderWithJson();
//headers.Add("EgyediAzonosito", tanuloIdpEgyediAzonosito.ToString());
var response = Get(relativeUri, headers);
if (response.StatusCode == HttpStatusCode.OK)
{
try
{
return JsonConvert.DeserializeObject<List<ApaczaiKifizetesModel>>(response.Result);
}
catch (Exception ex)
{
return new List<ApaczaiKifizetesModel>();
}
}
return new List<ApaczaiKifizetesModel>();
}
return new List<ApaczaiKifizetesModel>();
}
public bool DeleteApaczaiPalyazatDokumentuma(int tanevSorszam, Guid tanuloIdpEgyediAzonosito, Guid fileId)
{
var token = GetToken();
if (token.IsSuccess)
{
BaseUrl = kgrClientConfiguration.KGRUrl;
var relativeUri = $"/kreta/apaczai/fajl/torles";
var headers = token.AccessToken.GetAuthorizationHeaderWithJson();
headers.Add("EgyediAzonosito", tanuloIdpEgyediAzonosito.ToString());
headers.Add("TanevId", tanevSorszam.ToString());
headers.Add("FileServiceEgyediAzonosito", fileId.ToString());
var response = Delete(relativeUri, headers);
if (response.StatusCode == HttpStatusCode.OK)
{
return true;
}
if (response.Exception != null)
{
throw new ApplicationException(ErrorResource.SikertelenApaczaiDokumentumTorles, response.Exception);
}
var exception = new ApplicationException();
exception.Data.Add("ApaczaiHiba", GetApaczaiHibaUzenetFromHibaResponse(response.Result, ErrorResource.SikertelenApaczaiDokumentumTorles));
throw exception;
}
throw new SikertelenAccessTokenLekeresException(ErrorResource.SikertelenApaczaiDokumentumTorles);
}
public bool Fellebbezes(Guid tanuloIdpEgyediAzonosito, int tanevSorszam, string indoklas)
{
var token = GetToken();
if (token.IsSuccess)
{
BaseUrl = kgrClientConfiguration.KGRUrl;
var relativeUri = $"/kreta/apaczai/fellebbez";
var headers = token.AccessToken.GetAuthorizationHeaderWithJson();
headers.Add("EgyediAzonosito", tanuloIdpEgyediAzonosito.ToString());
headers.Add("TanevId", tanevSorszam.ToString());
var model = new ApaczaiFellebbezesRequest() { FellebbezesKomment = indoklas };
var response = Post(relativeUri, headers, body: model);
if (response.StatusCode == HttpStatusCode.OK)
{
return true;
}
if (response.Exception != null)
{
throw new ApplicationException(ErrorResource.SikertelenApaczaiPalyazatFellebbezesBenyujtas, response.Exception);
}
var exception = new ApplicationException(string.Empty);
exception.Data.Add("ApaczaiHiba", GetApaczaiHibaUzenetFromHibaResponse(response.Result, ErrorResource.SikertelenApaczaiPalyazatFellebbezesBenyujtas));
throw exception;
}
return false;
}
public List<ApaczaiPalyazatTortenetModel> GetApaczaiPalyazatTortenet(int tanevSorszam, Guid tanuloIdpEgyediAzonosito)
{
var token = GetToken();
if (token.IsSuccess)
{
BaseUrl = kgrClientConfiguration.KGRUrl;
var relativeUri = $"/kreta/apaczai/palyazattortenet";
var headers = token.AccessToken.GetAuthorizationHeaderWithJson();
headers.Add("EgyediAzonosito", tanuloIdpEgyediAzonosito.ToString());
headers.Add("TanevId", tanevSorszam.ToString());
var response = Get(relativeUri, headers);
if (response.StatusCode == HttpStatusCode.OK)
{
return JsonConvert.DeserializeObject<List<ApaczaiPalyazatTortenetModel>>(response.Result);
}
if (response.Exception != null)
{
throw new ApplicationException(ErrorResource.SikertelenApaczaiPalyazatTortenetLekeres, response.Exception);
}
var exception = new ApplicationException();
exception.Data.Add("ApaczaiHiba", GetApaczaiHibaUzenetFromHibaResponse(response.Result, ErrorResource.SikertelenApaczaiPalyazatTortenetLekeres));
throw exception;
}
throw new SikertelenAccessTokenLekeresException(ErrorResource.SikertelenApaczaiPalyazatTortenetLekeres);
}
public List<IntezmenyiBeszerzesModel> GetIntezmenyiBeszerzesList(Guid intezmenyEgyediAzonosito, int? tanevSorszam)
{
var token = GetToken();
if (token.IsSuccess)
{
BaseUrl = kgrClientConfiguration.KGRUrl;
var relativeUri = $"/kreta/beszerzes/tanev/osszes";
var headers = token.AccessToken.GetAuthorizationHeaderWithJson();
headers.Add("IntezmenyEgyediAzonosito", intezmenyEgyediAzonosito.ToString());
headers.Add("TanevId", tanevSorszam?.ToString());
var response = Get(relativeUri, headers);
if (response.StatusCode == HttpStatusCode.OK)
{
return JsonConvert.DeserializeObject<List<IntezmenyiBeszerzesModel>>(response.Result);
}
if (response.Exception != null)
{
throw new ApplicationException(ErrorResource.SikertelenIntezmenyiBeszerzesListaLekeres, response.Exception);
}
var exception = new ApplicationException();
exception.Data.Add("IntezmenyBeszerzesHiba", GetIntezmenyiBeszerzesHibaUzenetFromHibaResponse(response.Result, ErrorResource.SikertelenIntezmenyiBeszerzesListaLekeres));
throw exception;
}
throw new SikertelenAccessTokenLekeresException(ErrorResource.SikertelenIntezmenyiBeszerzesListaLekeres);
}
public List<IntezmenyiBeszerzesModel> GetIntezmenyiBeszerzesExport(Guid intezmenyEgyediAzonosito, int? tanevSorszam)
{
var token = GetToken();
if (token.IsSuccess)
{
BaseUrl = kgrClientConfiguration.KGRUrl;
var relativeUri = $"/kreta/beszerzes/tanev/osszes/export";
var headers = token.AccessToken.GetAuthorizationHeaderWithJson();
headers.Add("IntezmenyEgyediAzonosito", intezmenyEgyediAzonosito.ToString());
headers.Add("TanevId", tanevSorszam?.ToString());
var response = Get(relativeUri, headers);
if (response.StatusCode == HttpStatusCode.OK)
{
return JsonConvert.DeserializeObject<List<IntezmenyiBeszerzesModel>>(response.Result);
}
if (response.Exception != null)
{
throw new ApplicationException(ErrorResource.SikertelenIntezmenyiBeszerzesListaExportalas, response.Exception);
}
var exception = new ApplicationException();
exception.Data.Add("IntezmenyBeszerzesHiba", GetIntezmenyiBeszerzesHibaUzenetFromHibaResponse(response.Result, ErrorResource.SikertelenIntezmenyiBeszerzesListaExportalas));
throw exception;
}
throw new SikertelenAccessTokenLekeresException(ErrorResource.SikertelenIntezmenyiBeszerzesListaExportalas);
}
public IntezmenyiBeszerzesModel SaveIntezmenyiBeszerzes(IntezmenyiBeszerzesModel model)
{
var token = GetToken();
if (token.IsSuccess)
{
BaseUrl = kgrClientConfiguration.KGRUrl;
var relativeUri = model.Id.IsEntityId() ? $"/kreta/beszerzes/adategyeztetes" : $"/kreta/beszerzes/felvetel";
var headers = token.AccessToken.GetAuthorizationHeaderWithJson();
headers.Add("retrieve", "false");
var response = Post(relativeUri, headers, body: model);
if (response.StatusCode == HttpStatusCode.OK)
{
return JsonConvert.DeserializeObject<IntezmenyiBeszerzesModel>(response.Result);
}
if (response.Exception != null)
{
throw new ApplicationException(ErrorResource.SikertelenBeszerzesFelvetel, response.Exception);
}
var exception = new ApplicationException();
exception.Data.Add("IntezmenyBeszerzesHiba", GetIntezmenyiBeszerzesHibaUzenetFromHibaResponse(response.Result, ErrorResource.SikertelenBeszerzesFelvetel));
throw exception;
}
throw new SikertelenAccessTokenLekeresException(ErrorResource.SikertelenBeszerzesFelvetel);
}
public IntezmenyiBeszerzesModel GetIntezmenyiBeszerzes(Guid intezmenyEgyediAzonosito, int id)
{
var token = GetToken();
if (token.IsSuccess)
{
BaseUrl = kgrClientConfiguration.KGRUrl;
var relativeUri = $"/kreta/beszerzes";
var headers = token.AccessToken.GetAuthorizationHeaderWithJson();
headers.Add("Id", id.ToString());
headers.Add("IntezmenyEgyediAzonosito", intezmenyEgyediAzonosito.ToString());
var response = Get(relativeUri, headers);
if (response.StatusCode == HttpStatusCode.OK)
{
return JsonConvert.DeserializeObject<IntezmenyiBeszerzesModel>(response.Result);
}
if (response.Exception != null)
{
throw new ApplicationException(ErrorResource.SikertelenBeszerzesLekeres, response.Exception);
}
var exception = new ApplicationException();
exception.Data.Add("IntezmenyBeszerzesHiba", GetIntezmenyiBeszerzesHibaUzenetFromHibaResponse(response.Result, ErrorResource.SikertelenBeszerzesLekeres));
throw exception;
}
throw new SikertelenAccessTokenLekeresException(ErrorResource.SikertelenBeszerzesLekeres);
}
public List<IntezmenyiBeszerzesAdatszotarAllapotModel> GetIntezmenyiBeszerzesAdatszotarAllapotList()
{
var token = GetToken();
if (token.IsSuccess)
{
BaseUrl = kgrClientConfiguration.KGRUrl;
var relativeUri = $"/kreta/beszerzes/adatszotar/allapot";
var headers = token.AccessToken.GetAuthorizationHeaderWithJson();
var response = Get(relativeUri, headers);
if (response.StatusCode == HttpStatusCode.OK)
{
return JsonConvert.DeserializeObject<List<IntezmenyiBeszerzesAdatszotarAllapotModel>>(response.Result);
}
if (response.Exception != null)
{
throw new ApplicationException(ErrorResource.SikertelenIntezmenyiBeszerzesAllapotListaLekeres, response.Exception);
}
var exception = new ApplicationException();
exception.Data.Add("IntezmenyBeszerzesHiba", GetIntezmenyiBeszerzesHibaUzenetFromHibaResponse(response.Result, ErrorResource.SikertelenIntezmenyiBeszerzesAllapotListaLekeres));
throw exception;
}
throw new SikertelenAccessTokenLekeresException(ErrorResource.SikertelenIntezmenyiBeszerzesAllapotListaLekeres);
}
public List<IntezmenyiBeszerzesAdatszotarTargyModel> GetIntezmenyiBeszerzesAdatszotarTargyList()
{
var token = GetToken();
if (token.IsSuccess)
{
BaseUrl = kgrClientConfiguration.KGRUrl;
var relativeUri = $"/kreta/beszerzes/adatszotar/targy";
var headers = token.AccessToken.GetAuthorizationHeaderWithJson();
var response = Get(relativeUri, headers);
if (response.StatusCode == HttpStatusCode.OK)
{
return JsonConvert.DeserializeObject<List<IntezmenyiBeszerzesAdatszotarTargyModel>>(response.Result);
}
if (response.Exception != null)
{
throw new ApplicationException(ErrorResource.SikertelenIntezmenyiBeszerzesTargyListaLekeres, response.Exception);
}
var exception = new ApplicationException();
exception.Data.Add("IntezmenyBeszerzesHiba", GetIntezmenyiBeszerzesHibaUzenetFromHibaResponse(response.Result, ErrorResource.SikertelenIntezmenyiBeszerzesTargyListaLekeres));
throw exception;
}
throw new SikertelenAccessTokenLekeresException(ErrorResource.SikertelenIntezmenyiBeszerzesTargyListaLekeres);
}
public IntezmenyiBeszerzesVisszavonasModel PostIntezmenyiBeszerzesVisszavonas(IntezmenyiBeszerzesVisszavonasRequest request)
{
var token = GetToken();
if (token.IsSuccess)
{
BaseUrl = kgrClientConfiguration.KGRUrl;
var relativeUri = $"/kreta/beszerzes/visszavonas";
var headers = token.AccessToken.GetAuthorizationHeaderWithJson();
headers.Add("Retrieve", "true");
var response = Post(relativeUri, headers, body: request);
if (response.StatusCode == HttpStatusCode.OK)
{
return JsonConvert.DeserializeObject<IntezmenyiBeszerzesVisszavonasModel>(response.Result);
}
if (response.Exception != null)
{
throw new ApplicationException(ErrorResource.SikertelenIntezmenyiBeszerzesVisszavonas, response.Exception);
}
var exception = new ApplicationException();
exception.Data.Add("IntezmenyBeszerzesHiba", GetIntezmenyiBeszerzesHibaUzenetFromHibaResponse(response.Result, ErrorResource.SikertelenIntezmenyiBeszerzesVisszavonas));
throw exception;
}
throw new SikertelenAccessTokenLekeresException(ErrorResource.SikertelenIntezmenyiBeszerzesVisszavonas);
}
public bool HasElfogadottPalyazatMasikIntezmenyByOktatasiAzonosito(Guid intezmenyEgyediAzonosito, int tanevSorszam, string oktatasiAzonosito)
{
var token = GetToken();
if (token.IsSuccess)
{
BaseUrl = kgrClientConfiguration.KGRUrl;
var relativeUri = $"/kreta/apaczai/palyazhat";
var headers = token.AccessToken.GetAuthorizationHeaderWithJson();
headers.Add("IntezmenyEgyediAzonosito", intezmenyEgyediAzonosito.ToString());
headers.Add("TanevId", tanevSorszam.ToString());
headers.Add("OktatasiAzonosito", oktatasiAzonosito);
var response = Get(relativeUri, headers);
if (response.StatusCode == HttpStatusCode.OK)
{
return JsonConvert.DeserializeObject<bool>(response.Result);
}
if (response.Exception != null)
{
throw new HasElfogadottPalyazatMasikIntezmenyByOktatasiAzonositoResponseException(ErrorResource.SikertelenHasPalyazatMasikIntezmenyByOktatasiAzonosito, response.Exception);
}
var exception = new HasElfogadottPalyazatMasikIntezmenyByOktatasiAzonositoApaczaiHibauzenetException();
exception.Data.Add("HasPalyazatMasikIntezmenyByOktatasiAzonositoHiba", GetApaczaiHibaUzenetFromHibaResponse(response.Result, ErrorResource.SikertelenHasPalyazatMasikIntezmenyByOktatasiAzonosito));
throw exception;
}
throw new SikertelenAccessTokenLekeresException(ErrorResource.SikertelenHasPalyazatMasikIntezmenyByOktatasiAzonosito);
}
public GetTokenResponse GetToken()
{
return GetToken(kgrClientConfiguration.GetTokenRequestParameters());
}
private GetTokenResponse GetToken(Dictionary<string, string> tokenRequestParameters)
{
return ExceptionLogger(() =>
{
BaseUrl = kgrClientConfiguration.IDPUrl;
var relativeUri = "/connect/token";
var json = JsonConvert.SerializeObject(tokenRequestParameters);
var response = Post(relativeUri, HeaderExtension.GetFormUrlEncodedHeader(), tokenRequestParameters);
if (response.StatusCode == HttpStatusCode.OK)
{
var successResponse = JsonConvert.DeserializeObject<GetTokenSuccessResponse>(response.Result);
return new GetTokenResponse(successResponse.AccessToken, successResponse.ExpiresIn);
}
var failureResponse = JsonConvert.DeserializeObject<GetTokenFailureResponse>(response.Result);
return new GetTokenResponse(failureResponse.Error);
});
}
private T ExceptionLogger<T>(Func<T> action) where T : IResponse, new()
{
try
{
return action();
}
catch (Exception ex)
{
SDAServer.Instance.Logger.ExceptionThrown(ex);
return (T)Activator.CreateInstance(typeof(T), ExceptionUtil.ExceptionToString(ex));
}
}
private static ApaczaiHibaResponseModel GetApaczaiHibaUzenetFromHibaResponse(string responseJSON, string prefix)
{
return GetHibaUzenetFromHibaResponse<ApaczaiHibaResponseModel, ApaczaiHibaModel>(responseJSON, prefix, ErrorResource.KerjukEllenorizdAMegadottAdatokat);
}
private static IntezmenyiBeszerzesHibaResponseModel GetIntezmenyiBeszerzesHibaUzenetFromHibaResponse(string responseJSON, string prefix)
{
return GetHibaUzenetFromHibaResponse<IntezmenyiBeszerzesHibaResponseModel, IntezmenyiBeszerzesHibaModel>(responseJSON, prefix);
}
private static T GetHibaUzenetFromHibaResponse<T, TU>(string responseJSON, string prefix, string uzenetPost = null)
where T : BaseHibaResponseModel, new()
where TU : BaseHibaModel, new()
{
var hibaResponseModel = new T
{
Uzenet = prefix,
};
var hiba = JsonConvert.DeserializeObject<TU>(responseJSON);
if (hiba.ValidationResult != null)
{
var sb = new StringBuilder();
var tiltasok = hiba.ValidationResult.Tiltasok.Select(x => x.Uzenet);
var figyelmeztetesek = hiba.ValidationResult.Figyelmeztetesek.Select(x => x.Uzenet);
var engedelyezettek = hiba.ValidationResult.Engedelyezettek.Select(x => x.Uzenet);
var megjelenitendoHibak = tiltasok.Union(figyelmeztetesek).Union(engedelyezettek);
sb.Append(string.Join("<br />", megjelenitendoHibak));
//NOTE: ha meg akarjuk a felületen jeleníteni: hibaResponseModel.NemMegjelenitendoHiba = sb.ToString();
hibaResponseModel.NemMegjelenitendoHiba = sb.ToString();
}
if (hiba.Errors != null && hiba.Errors.Count > 0)
{
var sb = new StringBuilder();
foreach (var key in hiba.Errors.Keys)
{
sb.AppendLine($"{key}: {string.Join("<br />", hiba.Errors[key])}");
}
//NOTE: ha a validationresult-ot meg akarjuk a felületen jeleníteni: hibaResponseModel.NemMegjelenitendoHiba == sb.ToString();
hibaResponseModel.NemMegjelenitendoHiba += sb.ToString();
hibaResponseModel.Uzenet = hibaResponseModel.Uzenet.Substring(0, hibaResponseModel.Uzenet.Length - 1) + (string.IsNullOrWhiteSpace(uzenetPost) ? "" : uzenetPost);
}
return hibaResponseModel;
}
}
}