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(data); KirSearchModel.ValidateModel(searchModel); new KirImportLogic().SetKirKretaKod(KirImportHelper, searchModel.KirTelephelyId.Value, KirKretaKodCacheKey); List kretaTanuloAdatModelList = KirImportHelper.GetKirFelhasznaloList(searchModel, KirTanuloListCacheKey); var helper = new TanuloHelper(ConnectionTypeExtensions.GetSessionConnectionType()) { GridParameters = Converter.GridParameter(request) }; List 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((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((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((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 azonositoList) { try { List kirTanuloAdatModelList = KirImportHelper.GetKirFelhasznaloList(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); } } } }