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 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>(response.Result); } return new List(); } return new List(); } public List 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>(response.Result); } return new List(); } return new List(); } public List 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(); } return new List(); } return new List(); } 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(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(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(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 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>(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() { 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(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 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>(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 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>(response.Result); } catch (Exception ex) { return new List(); } } return new List(); } return new List(); } 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 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>(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 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>(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 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>(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(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(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 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>(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 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>(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(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(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 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(response.Result); return new GetTokenResponse(successResponse.AccessToken, successResponse.ExpiresIn); } var failureResponse = JsonConvert.DeserializeObject(response.Result); return new GetTokenResponse(failureResponse.Error); }); } private T ExceptionLogger(Func 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(responseJSON, prefix, ErrorResource.KerjukEllenorizdAMegadottAdatokat); } private static IntezmenyiBeszerzesHibaResponseModel GetIntezmenyiBeszerzesHibaUzenetFromHibaResponse(string responseJSON, string prefix) { return GetHibaUzenetFromHibaResponse(responseJSON, prefix); } private static T GetHibaUzenetFromHibaResponse(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(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("
", 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("
", 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; } } }