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.HelperClasses; using Kreta.BusinessLogic.Helpers; using Kreta.BusinessLogic.Security; using Kreta.Enums; using Kreta.Framework.Entities; using Kreta.Resources; using Kreta.Web.Areas.OsztalyCsoport.Logic; using Kreta.Web.Areas.OsztalyCsoport.Models; 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.OsztalyCsoport.ApiControllers { [ApiRoleClaimsAuthorize(true)] [ApiRolePackageAuthorize(KretaClaimPackages.Adminisztrator.ClaimValue)] public class BesorolasModOsztalybolKiirtTanulokApiController : ApiController { public DataSourceResult GetBesorolasModOsztalybolKiirtTanulokGrid(string data, [ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] DataSourceRequest request) { var model = JsonConvert.DeserializeObject(data); var co = model.ConvertToCo(); var gridParameter = Converter.GridParameter(request); var helper = new TanuloHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType()); var coList = helper.GetKiirtTanulokEsOsztalyokGridItemCoList(co); var modelList = new List(); foreach (var item in coList) { var gridModel = new BesorolasModOsztalyGridModel(item); modelList.Add(gridModel); } return modelList.ToDataSourceResult(gridParameter); } public BesorolasModOsztalybolKiirtTanulokModel GetTanuloData(int tanuloCsoportId) { var model = new BesorolasModOsztalybolKiirtTanulokModel(tanuloCsoportId); var intezmenyHelper = new IntezmenyHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType()); model.AlapadatModel.IsSzakkepzo = intezmenyHelper.GetIntezmenyiAdatok().IsSzakkepzo; var tanevHelper = new TanevHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType()); var tanevCo = tanevHelper.GetTanevInfo(); model.AlapadatModel.KezdoNap = tanevCo.KezdoNap; model.AlapadatModel.UtolsoNap = tanevCo.UtolsoNap; model.AlapadatModel.UtolsoTanitasiNap = tanevCo.UtolsoTanitasiNap; var tanuloHelper = new TanuloHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType()); var tanuloCsoportCo = tanuloHelper.GetTanuloCsoportById(tanuloCsoportId); var tanuloJegyzekAdatok = tanuloHelper.GetTanuloJegyzekadatok(tanuloCsoportId, tanuloCsoportCo.TanuloId, tanuloCsoportCo.OsztalyCsoportId, ClaimData.IsSelectedTanev20_21OrLater, ClaimData.IsSelectedTanev21_22OrLater); model.AlapadatModel.TanuloCsoportId = tanuloCsoportCo.ID; model.AlapadatModel.TanuloId = tanuloCsoportCo.TanuloId; model.AlapadatModel.OsztalyId = tanuloCsoportCo.OsztalyCsoportId; model.AlapadatModel.OsztalyNev = tanuloCsoportCo.OsztalyNev; model.AlapadatModel.TanuloNev = tanuloHelper.GetTanuloNev(tanuloCsoportCo.TanuloId); model.AlapadatModel.BelepesDatum = tanuloCsoportCo.BelepDatum.Value; model.AlapadatModel.KilepesDatum = tanuloCsoportCo.KilepDatum; model.AlapadatModel.NaploSorszam = tanuloCsoportCo.NaploSorszam; model.AlapadatModel.TanuloEvfolyamTipusId = tanuloCsoportCo.TanuloEvfolyamTipusId; model.AlapadatModel.IsOsszevontOsztaly = tanuloCsoportCo.IsOsszevontOsztaly; model.AlapadatModel.TorzslapSzam = tanuloCsoportCo.TorzslapSzam; model.AlapadatModel.Megjegyzes = tanuloCsoportCo.Megjegyzes; model.AlapadatModel.BefogadoIntezmeny = tanuloCsoportCo.BefogadoIntezmeny; model.AlapadatModel.AgazatId = tanuloCsoportCo.AgazatId; model.AlapadatModel.SzakmacsoportId = tanuloCsoportCo.SzakmacsoportId; model.AlapadatModel.SzakkepesitesId = tanuloCsoportCo.SzakkepesitesId; model.AlapadatModel.ReszSzakkepesitesId = tanuloCsoportCo.ReszSzakkepesitesId; model.AlapadatModel.TantervId = tanuloCsoportCo.TantervId; model.AlapadatModel.JogviszonyTipusId = tanuloCsoportCo.JogviszonyTipusId; model.AlapadatModel.AgazatUjSzktTipusId = tanuloCsoportCo.AgazatUjSzktTipusId; model.AlapadatModel.SzakmaTipusId = tanuloCsoportCo.SzakmaTipusId; model.AlapadatModel.SzakmairanyTipusId = tanuloCsoportCo.SzakmairanyTipusId; model.AlapadatModel.SzakiranyNktTipusId = tanuloCsoportCo.SzakiranyNktTipusId; model.AlapadatModel.SzakkepesitesNktTipusId = tanuloCsoportCo.SzakkepesitesNktTipusId; model.AlapadatModel.TanulmanyiTeruletNktTipusId = tanuloCsoportCo.TanulmanyiTeruletNktTipusId; model.AlapadatModel.AgazatReszSzakmaTipusId = tanuloCsoportCo.AgazatReszSzakmaTipusId; model.AlapadatModel.ReszSzakmaTipusId = tanuloCsoportCo.ReszSzakmaTipusId; model.AlapadatModel.SzakmaReszSzakmaTipusId = tanuloCsoportCo.SzakmaReszSzakmaTipusId; model.MulasztasokModel.HozottIgazolatlanHianyzas = tanuloCsoportCo.HozottIgazolatlanHianyzas; model.MulasztasokModel.HozottIgazolatlanKesesPercben = tanuloCsoportCo.HozottIgazolatlanKesesPercben; model.MulasztasokModel.HozottIgazoltHianyzas = tanuloCsoportCo.HozottIgazoltHianyzas; model.MulasztasokModel.HozottIgazoltKesesPercben = tanuloCsoportCo.HozottIgazoltKesesPercben; model.AlapadatModel.IsSzakkepzeses = tanuloJegyzekAdatok.IsSzakkepzeses; model.AlapadatModel.IsNKTSzakkepzeses = tanuloJegyzekAdatok.IsNKTSzakkepzeses; model.AlapadatModel.IsMuveszetiSzakGimnazium = tanuloJegyzekAdatok.IsMuveszetiSzakGimnazium; model.AlapadatModel.IsAgazatUjSzktTipusModificationEnabled = tanuloJegyzekAdatok.IsAgazatUjSzktTipusModificationEnabled; model.AlapadatModel.IsSzakmaTipusModificationEnabled = tanuloJegyzekAdatok.IsSzakmaTipusModificationEnabled; model.AlapadatModel.IsSzakmairanyTipusModificationEnabled = tanuloJegyzekAdatok.IsSzakmairanyTipusModificationEnabled; model.AlapadatModel.IsSzakmacsoportModificationEnabled = tanuloJegyzekAdatok.IsSzakmacsoportModificationEnabled; model.AlapadatModel.IsAgazatModificationEnabled = tanuloJegyzekAdatok.IsAgazatModificationEnabled; model.AlapadatModel.IsSzakkepesitesModificationEnabled = tanuloJegyzekAdatok.IsSzakkepesitesModificationEnabled; model.AlapadatModel.IsReszSzakkepesitesModificationEnabled = tanuloJegyzekAdatok.IsReszSzakkepesitesModificationEnabled; model.AlapadatModel.IsTanulmanyiTeruletNktTipusModificationEnabled = tanuloJegyzekAdatok.IsTanulmanyiTeruletNktTipusModificationEnabled; model.AlapadatModel.IsSzakkepesitesNktTipusModificationEnabled = tanuloJegyzekAdatok.IsSzakkepesitesNktTipusModificationEnabled; model.AlapadatModel.IsSzakiranyNktTipusModificationEnabled = tanuloJegyzekAdatok.IsSzakiranyNktTipusModificationEnabled; model.AlapadatModel.IsAgazatReszSzakmaTipusModificationEnabled = tanuloJegyzekAdatok.IsAgazatReszSzakmaTipusModificationEnabled; model.AlapadatModel.IsSzakmaReszSzakmaTipusModificationEnabled = tanuloJegyzekAdatok.IsSzakmaReszSzakmaTipusModificationEnabled; model.AlapadatModel.IsReszSzakmaTipusModificationEnabled = tanuloJegyzekAdatok.IsReszSzakmaTipusModificationEnabled; if ((model.AlapadatModel.IsSzakkepzeses || model.AlapadatModel.IsNKTSzakkepzeses) && ClaimData.IsSelectedTanev21_22OrLater) { if (!model.AlapadatModel.ReszSzakmaTipusId.HasValue) { model.AlapadatModel.ReszSzakmaTipusId = (int)ReszSzakmaTipusEnum.na; } if (!model.AlapadatModel.AgazatReszSzakmaTipusId.HasValue) { model.AlapadatModel.AgazatReszSzakmaTipusId = (int)AgazatReszSzakmaTipusEnum.na; } if (!model.AlapadatModel.SzakmaReszSzakmaTipusId.HasValue) { model.AlapadatModel.SzakmaReszSzakmaTipusId = (int)SzakmaReszSzakmaTipusEnum.na; } } return model; } [HttpPost] [ApiValidateAjaxAntiForgeryToken] public HttpResponseMessage SaveData(BesorolasModOsztalybolKiirtTanulokModel model) { if (ModelState.IsValid) { var ms = TanuloBesorolasLogic.CustomValidation(ModelState, model.AlapadatModel, isOsztaly: true); TanuloBesorolasLogic.ValidateJegyzekAdatok(model.AlapadatModel, ms); if (ms.IsValid) { var helper = new TanuloHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType()); var tanuloCsoportCo = model.ConvertModelToTanuloCsoportCo(); helper.UpdateTanuloBesorolas(tanuloCsoportCo); return new HttpResponseMessage(HttpStatusCode.OK); } return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ms); } return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState); } [HttpPost] [ApiValidateAjaxAntiForgeryToken] public HttpResponseMessage SaveDataTobbes(BesorolasTobbesModOsztalybolKiirtTanulokModel model) { if (ModelState.IsValid) { int x = 0; List tanuloCsoportIdList = model.TanuloCsoportIdArray.Split(',').Where(str => int.TryParse(str, out x)).Select(str => x).ToList(); if (tanuloCsoportIdList.Count > 1) { var tHelper = new TanuloHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType()); string errorMessage = tHelper.ValidateTanuloBesorolasTobbesModositas(model.ConvertTobbesModelToTanuloCsoportCo(), tanuloCsoportIdList, ClaimData.IsSzakkepzoIntezmeny, ClaimData.IsSelectedTanev21_22OrLater, ClaimData.AktivTanevID, ClaimData.KovTanevID, false); if (errorMessage.Length > 0) { return Request.CreateErrorResponse(HttpStatusCode.BadRequest, errorMessage); } return new HttpResponseMessage(HttpStatusCode.OK); } return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState); } return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState); } [HttpPost] [ApiValidateAjaxAntiForgeryToken] public HttpResponseMessage UpdateDatum(List updatedIds) { TanevCO tanecCO; var helper = new TanevHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType()); tanecCO = helper.GetTanevInfo(); var tHelper = new TanuloHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType()); tHelper.UpdateTanuloCsoportBesorolasDatum(updatedIds /*, new DateTime(tanecCO.KezdoNap.Year, 10, 1)*/, new DateTime(tanecCO.KezdoNap.Year, 9, 1)); return new HttpResponseMessage(HttpStatusCode.OK); } [HttpPost] [ApiValidateAjaxAntiForgeryToken] public HttpResponseMessage DeleteBesorolas(int tanuloCsoportId, int osztalyId, int tanuloId) { var helper = new OsztalyCsoportbaSorolasHelper(ConnectionTypeExtensions.GetSessionConnectionType(), ClaimData.IsSzakkepzoIntezmeny, ClaimData.IsSelectedTanev21_22OrLater, ClaimData.AktivTanevID, ClaimData.KovTanevID); if (!helper.CheckOsztalyBesorolasDelete(tanuloCsoportId, out var errorMessages)) { throw new StatusError(HttpStatusCode.BadRequest, string.Empty) { Json = new { message = string.Join("

", errorMessages) } }; } try { helper.DeleteOsztalyBesorolas(tanuloCsoportId, osztalyId, tanuloId); } catch (EntityDeleteFailedException ex) { var uzenet = $"{ErrorResource.NemTorolhetoAzAlabbiKapcsolodasokMiatt}{Environment.NewLine}{ex.ConnectionErrorMessage}"; throw new StatusError(HttpStatusCode.BadRequest, uzenet); } return new HttpResponseMessage(HttpStatusCode.OK); } } }