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.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 BesorolasModCsoportbolbolKiirtTanulokApiController : ApiController { public DataSourceResult GetBesorolasModCsoportbolKiirtTanulokGrid(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.GetKiirtTanulokEsCsoportokGridItemCoList(co); var modelList = new List(); foreach (var item in coList) { var gridModel = new BesorolasModCsoportGridModel(item); modelList.Add(gridModel); } return modelList.ToDataSourceResult(gridParameter); } public BesorolasModCsoportbolKiirtTanulokModel GetTanuloData(int tanuloCsoportId) { var model = new BesorolasModCsoportbolKiirtTanulokModel(tanuloCsoportId); var connectionType = ConnectionTypeExtensions.GetActiveSessionConnectionType(); var tanevHelper = new TanevHelper(connectionType); var tanevCo = tanevHelper.GetTanevInfo(); model.AlapadatModel.ElsoTanitasiNap = tanevCo.ElsoTanitasiNap; model.AlapadatModel.UtolsoNap = tanevCo.UtolsoNap; model.AlapadatModel.UtolsoTanitasiNap = tanevCo.UtolsoTanitasiNap; var tanuloHelper = new TanuloHelper(connectionType); var tanuloCsoportCo = tanuloHelper.GetTanuloCsoportById(tanuloCsoportId); model.AlapadatModel.TanuloCsoportId = tanuloCsoportCo.ID; model.AlapadatModel.TanuloId = tanuloCsoportCo.TanuloId; model.AlapadatModel.CsoportId = tanuloCsoportCo.OsztalyCsoportId; model.AlapadatModel.CsoportNev = tanuloCsoportCo.OsztalyNev; model.AlapadatModel.TanuloNev = tanuloHelper.GetTanuloNev(tanuloCsoportCo.TanuloId); model.AlapadatModel.BelepesDatum = tanuloCsoportCo.BelepDatum.Value; model.AlapadatModel.KilepesDatum = tanuloCsoportCo.KilepDatum; model.AlapadatModel.Megjegyzes = tanuloCsoportCo.Megjegyzes; model.AlapadatModel.BefogadoIntezmeny = tanuloCsoportCo.BefogadoIntezmeny; return model; } [HttpPost] [ApiValidateAjaxAntiForgeryToken] public HttpResponseMessage SaveData(BesorolasModCsoportbolKiirtTanulokModel model) { if (ModelState.IsValid) { var ms = TanuloBesorolasLogic.CustomValidation(ModelState, model.AlapadatModel, isOsztaly: false); 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(BesorolasTobbesModCsoportbolKiirtTanulokModel 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 tanuloHelper = new TanuloHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType()); tanuloHelper.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([FromBody] int tanuloCsoportId) { var osztalyCsoportbaSorolasHelper = new OsztalyCsoportbaSorolasHelper(ConnectionTypeExtensions.GetSessionConnectionType(), ClaimData.IsSzakkepzoIntezmeny, ClaimData.IsSelectedTanev21_22OrLater, ClaimData.AktivTanevID, ClaimData.KovTanevID); if (!osztalyCsoportbaSorolasHelper.CheckCsoportBesorolasDelete(tanuloCsoportId, out var errorMessages)) { throw new StatusError(HttpStatusCode.BadRequest, string.Empty) { Json = new { message = string.Join("

", errorMessages) } }; } var tanuloHelper = new TanuloHelper(ConnectionTypeExtensions.GetSessionConnectionType()); try { tanuloHelper.DeleteTanuloCsoport(tanuloCsoportId); } catch (EntityDeleteFailedException ex) { var uzenet = $"{ErrorResource.NemTorolhetoAzAlabbiKapcsolodasokMiatt}{Environment.NewLine}{ex.ConnectionErrorMessage}"; throw new StatusError(HttpStatusCode.BadRequest, uzenet); } return new HttpResponseMessage(HttpStatusCode.OK); } } }