using System; using System.Collections.Generic; using System.Net; using System.Net.Cache; using Kreta.Client.Eugyintezes.Configuration; using RestSharp; namespace Kreta.Client.Eugyintezes { public class EugyintezesClient : IEugyintezesClient { private IEugyintezesClientConfiguration EugyintezesClientConfiguration { get; } public EugyintezesClient(IEugyintezesClientConfiguration EugyintezesClientConfiguration) { this.EugyintezesClientConfiguration = EugyintezesClientConfiguration ?? throw new ArgumentNullException(nameof(EugyintezesClientConfiguration)); if (string.IsNullOrWhiteSpace(EugyintezesClientConfiguration.BaseUrl)) { throw new ArgumentNullException(nameof(EugyintezesClientConfiguration.BaseUrl)); } if (string.IsNullOrWhiteSpace(EugyintezesClientConfiguration.ApiKey)) { throw new ArgumentNullException(nameof(EugyintezesClientConfiguration.ApiKey)); } } public IRestResponse RestSharpPostBody(string url, string jsonData) { var client = new RestClient(url) { CachePolicy = new RequestCachePolicy(RequestCacheLevel.NoCacheNoStore) }; var request = new RestRequest(Method.POST); request.AddHeader("Content-Type", "application/x-www-form-urlencoded"); request.AddHeader("X-API-Key", EugyintezesClientConfiguration.ApiKey); request.AddParameter("application/json", jsonData, ParameterType.RequestBody); return client.Execute(request); } public IRestResponse RestSharpGetQueryString(string url, Dictionary queryParams = null) { var client = new RestClient(url) { CachePolicy = new RequestCachePolicy(RequestCacheLevel.NoCacheNoStore) }; var request = new RestRequest(Method.GET); request.AddHeader("Content-Type", "application/x-www-form-urlencoded"); request.AddHeader("X-API-Key", EugyintezesClientConfiguration.ApiKey); if (queryParams != null) { foreach (var item in queryParams) { request.AddQueryParameter(item.Key, item.Value); } } return client.Execute(request); } public string GetBAIPreCheck(string postData) { var url = EugyintezesClientConfiguration.BaseUrl + "/integration-kreta-api/v1/ugy/statuszok2"; var apiResult = RestSharpPostBody(url, postData); return apiResult.Content; } public string PostBAIHatarozatok(string postData) { var url = EugyintezesClientConfiguration.BaseUrl + "/integration-kreta-api/v1/ugy/sendbaihatarozatadatok"; var apiResult = RestSharpPostBody(url, postData); return apiResult.Content; } public int GetOlvasatlanPostaladaElemekSzama(string intezmenyAzonosito, Guid felhasznaloIdpEgyediAzonosito) { int result = 0; try { var url = EugyintezesClientConfiguration.BaseUrl + $"/integration-kreta-api/v1/intezmenyek/{intezmenyAzonosito}/uzenetek/olvasatlanokszama"; var queryParams = new Dictionary { { nameof(felhasznaloIdpEgyediAzonosito), felhasznaloIdpEgyediAzonosito.ToString() } }; var apiResult = RestSharpGetQueryString(url, queryParams); if (apiResult.StatusCode == HttpStatusCode.OK) { int.TryParse(apiResult.Content, out result); } return result; } catch { return result; } } public bool GetUzenetkezelesElerheto(string intezmenyAzonosito) { bool result = false; try { var url = EugyintezesClientConfiguration.BaseUrl + $"/integration-kreta-api/v1/intezmenyek/{intezmenyAzonosito}/uzenetkezelesElerheto"; var apiResult = RestSharpGetQueryString(url); if (apiResult.StatusCode == HttpStatusCode.OK) { bool.TryParse(apiResult.Content, out result); } return result; } catch { return result; } } public string PostTeremBerbeadhatoStatuszValtozas(string postData, string intezmenyAzonosito) { var url = EugyintezesClientConfiguration.BaseUrl + $"/integration-kreta-api/v1/intezmenyek/{intezmenyAzonosito}/foglalhatotermek/statuszvaltozas"; var apiResult = RestSharpPostBody(url, postData); return apiResult.Content; } public string PostTanuloOsztalyBesorolasStatuszValtozas(string postData) { var url = EugyintezesClientConfiguration.BaseUrl + "/integration-kreta-api/v1/tanulok/osztalyvaltozas"; var apiResult = RestSharpPostBody(url, postData); return apiResult.Content; } public string GetUzenetek(string intezmenyAzonosito, Guid felhasznaloIdpEgyediAzonosito, int sorokSzamaMax) { var url = EugyintezesClientConfiguration.BaseUrl + $"/integration-kreta-api/v1/intezmenyek/{intezmenyAzonosito}/uzenetek"; var queryParams = new Dictionary() { { nameof(felhasznaloIdpEgyediAzonosito), felhasznaloIdpEgyediAzonosito.ToString() }, { nameof(sorokSzamaMax), sorokSzamaMax.ToString() } }; var apiResult = RestSharpGetQueryString(url, queryParams); if (apiResult.StatusCode == HttpStatusCode.OK) { return apiResult.Content; } return null; } public string GetUgyek(string intezmenyAzonosito, Guid felhasznaloIdpEgyediAzonosito, int sorokSzamaMax) { var url = EugyintezesClientConfiguration.BaseUrl + $"/integration-kreta-api/v1/intezmenyek/{intezmenyAzonosito}/felhasznalougyek"; var queryParams = new Dictionary() { { nameof(felhasznaloIdpEgyediAzonosito), felhasznaloIdpEgyediAzonosito.ToString() }, { nameof(sorokSzamaMax), sorokSzamaMax.ToString() } }; var apiResult = RestSharpGetQueryString(url, queryParams); if (apiResult.StatusCode == HttpStatusCode.OK) { return apiResult.Content; } return null; } public IRestResponse NebuloInsert(string kretaIntezmenyAzonosito, string postData) { var url = EugyintezesClientConfiguration.BaseUrl + $"/integration-kreta-api/v1/ugy/bai/{kretaIntezmenyAzonosito}/nebulok"; var apiResult = RestSharpPostBody(url, postData); return apiResult; } public IRestResponse NebuloStatuszUpdate(string kretaIntezmenyAzonosito, string postData) { var url = EugyintezesClientConfiguration.BaseUrl + $"/integration-kreta-api/v1/ugy/bai/{kretaIntezmenyAzonosito}/nebulok/statuszmodositas"; var apiResult = RestSharpPostBody(url, postData); return apiResult; } public IRestResponse NebuloDataUpdate(string kretaIntezmenyAzonosito, string postData) { var url = EugyintezesClientConfiguration.BaseUrl + $"/integration-kreta-api/v1/ugy/bai/{kretaIntezmenyAzonosito}/nebulok/modositas"; var apiResult = RestSharpPostBody(url, postData); return apiResult; } public IRestResponse NebuloDelete(string kretaIntezmenyAzonosito, string postData) { var url = EugyintezesClientConfiguration.BaseUrl + $"/integration-kreta-api/v1/ugy/bai/{kretaIntezmenyAzonosito}/nebulok/torles"; var apiResult = RestSharpPostBody(url, postData); return apiResult; } } }