using System; using System.Net; using System.Net.Http; using System.Web.Http; using Kreta.BusinessLogic.Helpers; using Kreta.BusinessLogic.Security; using Kreta.Client.KGR; using Kreta.Enums.ManualEnums; using Kreta.Resources; using Kreta.Web.Areas.Tanulo.Models; using Kreta.Web.Helpers; using Kreta.Web.Helpers.Error; using Kreta.Web.Security; namespace Kreta.Web.Areas.Tanulo.ApiControllers { [ApiRoleClaimsAuthorize(true)] [ApiRolePackageAuthorize(KretaClaimPackages.Tanulo.ClaimValue)] public class TanuloApaczaiApiController : ApiController { private readonly IKGRClient _kgrClient; private readonly IKretaAuthorization _authorization; public TanuloApaczaiApiController(IKGRClient kgrClient, IKretaAuthorization authorization) { _kgrClient = kgrClient ?? throw new ArgumentNullException(nameof(kgrClient)); _authorization = authorization ?? throw new ArgumentNullException(nameof(authorization)); } [HttpPost] public HttpResponseMessage CreatePalyazat(TanuloApaczaiPalyazatBenyujtasContentModel model) { if (!_authorization.IsValidTanuloApaczai() && DateTime.Now > Core.Constants.ApaczaiVegeDatum) { throw new StatusError(HttpStatusCode.Forbidden, ErrorResource.NincsJogaAzOldalMegtekintesehez); } var connectionType = ConnectionTypeExtensions.GetSessionConnectionType(); var intezmenyHelper = new IntezmenyHelper(connectionType); var intezmenyAdatok = intezmenyHelper.GetIntezmenyiAdatok(); var co = model.ConvertToCo(); co.FenntartoAzonosito = intezmenyAdatok.FenntartoAzonosito; co.FenntartoNev = "-"; co.IntezmenyEgyediAzonosito = intezmenyAdatok.IntezmenyGuid; co.IntezmenyNev = intezmenyAdatok.Nev; co.IntezmenyAzonosito = intezmenyAdatok.IntezmenyAzonosito; co.IdpEgyediAzonosito = ClaimData.FelhasznaloIdpEgyediAzonosito; co.ModositoId = ClaimData.FelhasznaloId; co.ModositoNev = ClaimData.FelhasznaloNev; if (model.AtlagokModel.PalyazatStatusz == ApaczaiPalyazatStatuszEnum.AdategyeztetesreVisszakuldve || model.AtlagokModel.PalyazatStatusz == ApaczaiPalyazatStatuszEnum.FelulvizsgalatrolAdategyeztetesreVisszakuldve) { try { var helper = new TanuloApaczaiHelper(connectionType); var kgrRequestModel = helper.GetApaczaiPalyazatFelvetelRequest(co, ClaimData.IsSelectedTanev20_21OrLater, ClaimData.IsSelectedTanev21_22OrLater); if (!helper.ValidateTanuloMentor(kgrRequestModel)) { throw new StatusError(HttpStatusCode.BadRequest, ErrorResource.PalyazatbenyujtasTiltottMentorAdatHiany); } if (helper.PalyazatAdategyeztetes(_kgrClient, kgrRequestModel)) { return new HttpResponseMessage { StatusCode = HttpStatusCode.OK }; } throw new StatusError(HttpStatusCode.BadRequest, ErrorResource.SikertelenApaczaiPalyazatBenyujtas); } catch (Exception ex) { throw new StatusError(HttpStatusCode.BadRequest, $"{ErrorResource.SikertelenApaczaiPalyazatBenyujtas} ({ex.Message})"); } } try { var helper = new TanuloApaczaiHelper(connectionType); var kgrRequestModel = helper.GetApaczaiPalyazatFelvetelRequest(co, ClaimData.IsSelectedTanev20_21OrLater, ClaimData.IsSelectedTanev21_22OrLater); if(!helper.ValidateTanuloMentor(kgrRequestModel)) { throw new StatusError(HttpStatusCode.BadRequest, ErrorResource.PalyazatbenyujtasTiltottMentorAdatHiany); } if (helper.CreatePalyazat(_kgrClient, kgrRequestModel)) { return new HttpResponseMessage { StatusCode = HttpStatusCode.OK }; } throw new StatusError(HttpStatusCode.BadRequest, ErrorResource.SikertelenApaczaiPalyazatBenyujtas); } catch (Exception ex) { throw new StatusError(HttpStatusCode.BadRequest, $"{ErrorResource.SikertelenApaczaiPalyazatBenyujtas} ({ex.Message})"); } } [HttpGet] public HttpResponseMessage GetPalyazatVisszavonas() { try { if (new TanuloApaczaiHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetPalyazatVisszavonas(_kgrClient, ClaimData.FelhasznaloIdpEgyediAzonosito)) { return new HttpResponseMessage { StatusCode = HttpStatusCode.OK }; } throw new StatusError(HttpStatusCode.BadRequest, ErrorResource.SikertelenApaczaiPalyazatVisszavonas); } catch (Exception ex) { if (ex.Data["ApaczaiHiba"] != null) { throw new StatusError(HttpStatusCode.BadRequest, null) { Json = ex.Data["ApaczaiHiba"], }; } throw new StatusError(HttpStatusCode.BadRequest, ex.Message, ex); } } [HttpPost] public HttpResponseMessage Fellebbezes([FromBody] string indoklas) { if (indoklas.Length > Core.Constants.MinMaxValues.MaxApaczaiFellebbezesSzovegHossz) { throw new StatusError(HttpStatusCode.BadRequest, string.Format(ErrorResource.ApaczaiFellebezesSzovegMaximalisHossz, Core.Constants.MinMaxValues.MaxApaczaiFellebbezesSzovegHossz)); } try { if (new TanuloApaczaiHelper(ConnectionTypeExtensions.GetSessionConnectionType()).Fellebbezes(_kgrClient, ClaimData.FelhasznaloIdpEgyediAzonosito, indoklas)) { return new HttpResponseMessage { StatusCode = HttpStatusCode.OK }; } throw new StatusError(HttpStatusCode.BadRequest, ErrorResource.SikertelenApaczaiPalyazatFellebbezesBenyujtas); } catch (Exception ex) { throw new StatusError(HttpStatusCode.BadRequest, $"{ErrorResource.SikertelenApaczaiPalyazatFellebbezesBenyujtas}{(!string.IsNullOrWhiteSpace(ex.Message) ? $" ({ex.Message})" : string.Empty)}"); } } } }