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

233 lines
13 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.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<AktTanevBesorolasSearchModel>(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<BesorolasModOsztalyGridModel>();
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<int> 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<string> 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("<br/><br/>", 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);
}
}
}