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

157 lines
6.4 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using System.Web.Http.ModelBinding;
using Kendo.Mvc.UI;
using Kreta.BusinessLogic.Helpers;
using Kreta.Core.Domain;
using Kreta.Core.Exceptions;
using Kreta.Core.KIR.Factory.Interface;
using Kreta.Resources;
using Kreta.Web.Areas.KirImportExport.Logic;
using Kreta.Web.Areas.KirImportExport.Models;
using Kreta.Web.Areas.KirImportExport.Models.KirImport;
using Kreta.Web.Helpers;
using Kreta.Web.Helpers.Error;
using Kreta.Web.Helpers.Grid;
using Kreta.Web.Security;
using Newtonsoft.Json;
namespace Kreta.Web.Areas.KirImportExport.ApiControllers
{
public class KirTanuloImportApiController : BaseApiController
{
public KirTanuloImportApiController(IKirServiceFactory kirServiceFactory, IKir2ServiceFactory kir2ServiceFactory) : base(kirServiceFactory, kir2ServiceFactory)
{ }
public DataSourceResult GetKirTanulokGrid(string data, [ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] DataSourceRequest request)
{
var searchModel = JsonConvert.DeserializeObject<KirSearchModel>(data);
KirSearchModel.ValidateModel(searchModel);
new KirImportLogic().SetKirKretaKod(KirImportHelper, searchModel.KirTelephelyId.Value, KirKretaKodCacheKey);
List<KirTanulo> kretaTanuloAdatModelList = KirImportHelper.GetKirFelhasznaloList<KirTanulo>(searchModel, KirTanuloListCacheKey);
var helper = new TanuloHelper(ConnectionTypeExtensions.GetSessionConnectionType())
{
GridParameters = Converter.GridParameter(request)
};
List<KirTanulo> kirTanuloList = helper.SearchTanuloForKir(searchModel, 0);
return KirImportLogic.MergeKretaKirFelhasznalo(kirTanuloList, kretaTanuloAdatModelList)
.ToDataSourceResult();
}
public DataSourceResult GetTanuloAlapadatokGrid(int felhasznaloId)
{
KirTanuloAlapadatok kirTanulo = new TanuloHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetTanuloAlapadatok(felhasznaloId);
KirTanuloAlapadatok kirTanuloFromKir = KirImportHelper
.GetKirFelhasznaloAdatok(new Converter<KirTanulo, KirTanuloAlapadatok>((y) => y), KirTanuloListCacheKey, kirTanulo.SzuletesiNev, kirTanulo.AnyjaNeve, kirTanulo.SzuletesiDatum.Value, kirTanulo.SzuletesiHely);
return KirImportLogic.KirModelEqual(kirTanulo, kirTanuloFromKir)
.ToDataSourceResult();
}
public DataSourceResult GetTanuloElerhetosegAdatokGrid(int felhasznaloId)
{
var helper = new FelhasznaloHelper(ConnectionTypeExtensions.GetSessionConnectionType());
var kirTanulo = helper.GetFelhasznaloElerhetoseg(felhasznaloId, true);
KirFelhasznaloElerhetosegek kirTanuloFromKir = KirImportHelper
.GetKirFelhasznaloAdatok(new Converter<KirTanulo, KirFelhasznaloElerhetosegek>((y) => y), KirTanuloListCacheKey, kirTanulo.SzuletesiNev, kirTanulo.AnyjaNeve, kirTanulo.SzuletesiDatum.Value, kirTanulo.SzuletesiHely);
kirTanulo.SzuletesiDatum = null;
kirTanulo.SzuletesiHely = null;
return KirImportLogic.KirModelEqual(kirTanulo, kirTanuloFromKir)
.ToDataSourceResult();
}
public DataSourceResult GetTanuloJogviszonyAdatokGrid(int felhasznaloId)
{
var kirTanuloJogviszony = new KirTanuloJogviszonyAdatok();
var kirSearchModel = new KirSearchModel();
var helper = new TanuloHelper(ConnectionTypeExtensions.GetSessionConnectionType());
var kirTanulo = helper.SearchTanuloForKir(kirSearchModel, felhasznaloId)[0];
KirTanuloJogviszonyAdatok kirTanuloFromKir = KirImportHelper
.GetKirFelhasznaloAdatok(new Converter<KirTanulo, KirTanuloJogviszonyAdatok>((y) => y), KirTanuloListCacheKey, kirTanulo.SzuletesiNev, kirTanulo.AnyjaNeve, kirTanulo.SzuletesiDatum.Value, kirTanulo.SzuletesiHely);
kirTanulo.SzuletesiDatum = null;
kirTanulo.SzuletesiHely = null;
return KirImportLogic.KirModelEqual(kirTanulo, kirTanuloFromKir)
.ToDataSourceResult();
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public HttpResponseMessage ModifyTanulo(KirSzinkronSaveModel postData)
{
int felhasznaloId = 0;
if (!string.IsNullOrWhiteSpace(postData.FelhasznaloId))
{
int.TryParse(postData.FelhasznaloId, out felhasznaloId);
}
try
{
if (felhasznaloId != 0)
{
new KirImportLogic().UpdateTanulo(postData, felhasznaloId);
return new HttpResponseMessage(HttpStatusCode.OK);
}
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ErrorResource.NemSikerultAMuvelet);
}
catch (BlException e)
{
throw new StatusError(HttpStatusCode.BadRequest, e.Message);
}
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public HttpResponseMessage ModifySelected(List<SaveModel> azonositoList)
{
try
{
List<KirTanulo> kirTanuloAdatModelList = KirImportHelper.GetKirFelhasznaloList<KirTanulo>(KirTanuloListCacheKey);
var kirImportLogic = new KirImportLogic();
foreach (var azonosito in azonositoList)
{
if (int.TryParse(azonosito.FelhasznaloId, out int felhasznaloId))
{
KirTanulo kirTanulo = kirTanuloAdatModelList.Where(x => x.OktatasiAzonosito.Equals(azonosito.OktatasiAzonosito)).FirstOrDefault();
if (kirTanulo != null)
{
kirImportLogic.UpdateTanulo(kirTanulo, felhasznaloId);
}
}
else
{
kirImportLogic.InsertTanulo(kirTanuloAdatModelList.Where(x => x.OktatasiAzonosito.Equals(azonosito.OktatasiAzonosito)).First());
}
}
return new HttpResponseMessage(HttpStatusCode.OK);
}
catch (BlException e)
{
throw new StatusError(HttpStatusCode.BadRequest, e.Message);
}
}
}
}