kreta/KretaWeb/Areas/Tanulo/ApiControllers/TanuloApaczaiApiController.cs
2024-03-13 00:33:46 +01:00

134 lines
6.4 KiB
C#

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)}");
}
}
}
}