using System.Collections.Generic; using System.Data; using System.Net.Http; using System.Web.Http.ModelBinding; using Kendo.Mvc.UI; using Kreta.BusinessLogic.HelperClasses; using Kreta.BusinessLogic.Helpers; using Kreta.BusinessLogic.Security; using Kreta.Core; using Kreta.Enums.ManualEnums; using Kreta.Web.Areas.Hianyzas.Models; using Kreta.Web.Areas.Hianyzas.Models.Mulasztasok; using Kreta.Web.Helpers; using Kreta.Web.Helpers.Grid; using Kreta.Web.Security; using Newtonsoft.Json; namespace Kreta.Web.Areas.Hianyzas.ApiControllers { [ApiRoleClaimsAuthorize(true)] [ApiRolePackageAuthorize(KretaClaimPackages.Osztalyfonok.ClaimValue, KretaClaimPackages.SzuperOsztalyfonok.ClaimValue, KretaClaimPackages.Evfolyamfelelos.ClaimValue, KretaClaimPackages.Naplo.ClaimValue)] public class MulasztasokApiController : BaseMulasztasokApiController { #region Dátum nézet //Mulasztásos napok lekérdezése a dátum nézethez [ApiRolePackageAuthorize(KretaClaimPackages.Osztalyfonok.ClaimValue, KretaClaimPackages.SzuperOsztalyfonok.ClaimValue, KretaClaimPackages.Evfolyamfelelos.ClaimValue, KretaClaimPackages.CsoportVezeto.ClaimValue, KretaClaimPackages.Naplo.ClaimValue)] public DataSourceResult GetMulasztasokDatumNezetGrid(string data, [ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] DataSourceRequest request) { var model = JsonConvert.DeserializeObject(data); if (!model.OsztalyCsoportId.HasValue && !model.CsoportId.HasValue) { return new DataSourceResult(); } bool isFromCsopvez = model.CsoportId.HasValue; int osztalyCsoportId; if (isFromCsopvez) { CheckCsoport(model.CsoportId.Value); osztalyCsoportId = model.CsoportId.Value; } else { CheckOsztalyCsoport(model.OsztalyCsoportId.Value); osztalyCsoportId = model.OsztalyCsoportId.Value; } DataSet ds; var helper = new MulasztasHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType()); helper.GridParameters = Converter.GridParameter(request); if (string.IsNullOrWhiteSpace(helper.GridParameters.OrderBy)) { helper.GridParameters.OrderBy = "MulasztasDatuma DESC"; } ds = helper.GetDatumNezetDataByOsztalyCsoportId(osztalyCsoportId, isFromCsopvez || IsCsoportVezeto()); return ds.ToDataSourceResult(); } //Mulasztasok lekérdezése dátum alapján [ApiRolePackageAuthorize(KretaClaimPackages.Osztalyfonok.ClaimValue, KretaClaimPackages.SzuperOsztalyfonok.ClaimValue, KretaClaimPackages.Evfolyamfelelos.ClaimValue, KretaClaimPackages.CsoportVezeto.ClaimValue)] public DataSourceResult GetMulasztasokDatumNezetDetailGrid(string model, [ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] DataSourceRequest request) { var mulasztasModel = JsonConvert.DeserializeObject(model); bool isFromCsopvez = mulasztasModel.SzerepkorViewType == SzerepkorViewTypeEnum.CsoportvezetoNezet; if (isFromCsopvez) { CheckCsoport(mulasztasModel.OsztalyCsoportId); } else { CheckOsztalyCsoport(mulasztasModel.OsztalyCsoportId); } DataSet ds; var helper = new MulasztasHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType()); helper.GridParameters = Converter.GridParameter(request); if (string.IsNullOrWhiteSpace(helper.GridParameters.OrderBy)) { helper.GridParameters.OrderBy = "Oraszam ASC"; } ds = helper.GetMulasztasokDatumNezetDetailGrid(mulasztasModel.MulasztasDatuma, mulasztasModel.OsztalyCsoportId, (isFromCsopvez || IsCsoportVezeto())); #region "Header helyett nulladik sor, ha" //NOTE: "Ideiglenesen mivel a grid headerbe nincs lehetőség az összes oszlopérték beállítására egyszerre, ezért bekerül egy nulladik sor, amivel állítani lehet..." if (!isFromCsopvez || (mulasztasModel.IsTanorai == false && mulasztasModel.MulasztasJogosultsagSetting != CsoportvezetokIgazolasiJogosultsagaEnum.NemIgazolhatnak)) { DataRow dr = ds.Tables[0].NewRow(); dr["ID"] = 0; dr["TanuloNev"] = ""; ds.Tables[0].Rows.InsertAt(dr, 0); } #endregion "Header helyett nulladik sor, ha" return ds.ToDataSourceResult(); } #endregion Dátum nézet #region Tanuló nézet [ApiRolePackageAuthorize(KretaClaimPackages.Osztalyfonok.ClaimValue, KretaClaimPackages.SzuperOsztalyfonok.ClaimValue, KretaClaimPackages.Evfolyamfelelos.ClaimValue, KretaClaimPackages.CsoportVezeto.ClaimValue)] public DataSourceResult GetMulasztasokTanuloNezetGrid(string data, [ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] DataSourceRequest request) { var model = JsonConvert.DeserializeObject(data); var osztalyCsoportId = model.OsztalyCsoportId; var tanuloId = model.TanuloId; if (!osztalyCsoportId.IsEntityId() && !tanuloId.IsEntityId()) { return new DataSourceResult(); } if (osztalyCsoportId.IsEntityId()) { CheckOsztalyCsoport(osztalyCsoportId.Value); } if (tanuloId.IsEntityId()) { CheckTanulo(tanuloId.Value); } DataSet ds; var helper = new MulasztasHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType()); helper.GridParameters = Converter.GridParameter(request); ds = helper.GetTanulokMulasztasaiKesesei(osztalyCsoportId, tanuloId, IsCsoportVezeto()); DataSourceResult result = ds.ToDataSourceResult(); return result; } public DataSourceResult GetMulasztasokTanuloNezetDetailGrid(int tanuloId, int osztalyCsoportId, [ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] DataSourceRequest request) { CheckTanulo(tanuloId); var coList = new MulasztasHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType()).GetMulasztasokTanuloDetailGridItemCoList(new MulasztasokCo { TanuloId = tanuloId, OsztCsop = osztalyCsoportId == default ? default(int?) : osztalyCsoportId, KapcsCsop = true }, true, csoportVezetoId: IsCsoportVezeto() ? ClaimData.FelhasznaloId : (int?)null); var modelList = new List(); foreach (var item in coList) { var gridModel = new MulasztasGridModel(item); modelList.Add(gridModel); } var gridParameter = Converter.GridParameter(request); return modelList.ToDataSourceResult(gridParameter); } #endregion Tanuló nézet #region Napló nézet public DataSourceResult GetMulasztasokNaploNezetGrid(string data, [ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] DataSourceRequest request) { var model = JsonConvert.DeserializeObject(data); if (!model.OsztalyCsoportId.HasValue || !model.NaploNezetDatum.HasValue) { return new DataSourceResult(); } CheckOsztalyCsoport(model.OsztalyCsoportId.Value); DataSet ds; var helper = new MulasztasHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType()); helper.GridParameters = Converter.GridParameter(request); if (string.IsNullOrWhiteSpace(helper.GridParameters.OrderBy)) { helper.GridParameters.OrderBy = "TanuloNev ASC"; } ds = helper.GetMulasztasokNaploNezetGrid(model.OsztalyCsoportId.Value, model.NaploNezetDatum.Value, IsCsoportVezeto()); DataSourceResult result = ds.ToDataSourceResult(); return result; } #endregion #region Tanuló popup [ApiRolePackageAuthorize(KretaClaimPackages.Osztalyfonok.ClaimValue, KretaClaimPackages.SzuperOsztalyfonok.ClaimValue, KretaClaimPackages.Evfolyamfelelos.ClaimValue, KretaClaimPackages.CsoportVezeto.ClaimValue)] public DataSourceResult GetTanuloMulasztasaiGrid(string data, bool igazolandok, bool isTanorai, [ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] DataSourceRequest request) { var model = JsonConvert.DeserializeObject(data); CheckTanulo(model.TanuloId); DataSet ds; var helper = new MulasztasHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType()); helper.GridParameters = Converter.GridParameter(request); if (string.IsNullOrWhiteSpace(helper.GridParameters.OrderBy)) { helper.GridParameters.OrderBy = "MulasztasDatuma DESC"; } bool isCsoportVezeto; bool? isTanoraiCelu = null; if (model.SzerepkorViewType == SzerepkorViewTypeEnum.CsoportvezetoNezet) { isCsoportVezeto = true; isTanoraiCelu = isTanorai; } else { isCsoportVezeto = IsCsoportVezeto(); } ds = helper.GetTanuloMulasztasaiGrid(model.TanuloId, ClaimData.AktivTanevID.Value, igazolandok, isTanoraiCelu, isCsoportVezeto ? ClaimData.FelhasznaloId : (int?)null, model.OsztalyCsoportId); return ds.ToDataSourceResult(); } [ApiRolePackageAuthorize(KretaClaimPackages.Osztalyfonok.ClaimValue, KretaClaimPackages.SzuperOsztalyfonok.ClaimValue, KretaClaimPackages.Evfolyamfelelos.ClaimValue, KretaClaimPackages.CsoportVezeto.ClaimValue)] public DataSourceResult GetTanuloMulasztasaiDetailGrid(string model, [ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] DataSourceRequest request) { var mulasztasModel = JsonConvert.DeserializeObject(model); CheckTanulo(mulasztasModel.TanuloId); DataSet ds; var helper = new MulasztasHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType()); helper.GridParameters = Converter.GridParameter(request); if (string.IsNullOrWhiteSpace(helper.GridParameters.OrderBy)) { helper.GridParameters.OrderBy = "Oraszam ASC"; } bool isCsoportVezeto; bool? isTanorai = null; if (mulasztasModel.SzerepkorViewType == SzerepkorViewTypeEnum.CsoportvezetoNezet) { isCsoportVezeto = true; isTanorai = mulasztasModel.IsTanorai; } else { isCsoportVezeto = IsCsoportVezeto(); } var mulasztasokCo = new MulasztasokCo { Tol = mulasztasModel.MulasztasDatuma, Ig = mulasztasModel.MulasztasDatuma, OsztalyFonokId = ClaimData.FelhasznaloId, OsztCsop = mulasztasModel.OsztalyCsoportId, TanuloId = mulasztasModel.TanuloId }; ds = helper.GetTanuloMulasztasaiDetailGrid(mulasztasokCo, mulasztasModel.Kezeletlen, isTanorai, isCsoportVezeto ? ClaimData.FelhasznaloId : (int?)null); #region "Header helyett nulladik sor, ha" //NOTE: "Ideiglenesen mivel a grid headerbe nincs lehetőség az összes oszlopérték beállítására egyszerre, ezért bekerül egy nulladik sor, amivel állítani lehet..." if (mulasztasModel.SzerepkorViewType == SzerepkorViewTypeEnum.OsztalyfonokNezet || (mulasztasModel.SzerepkorViewType == SzerepkorViewTypeEnum.CsoportvezetoNezet && mulasztasModel.IsTanorai == false && mulasztasModel.MulasztasJogosultsagSetting != CsoportvezetokIgazolasiJogosultsagaEnum.NemIgazolhatnak)) { DataRow dr = ds.Tables[0].NewRow(); dr["ID"] = 0; dr["TargyNev"] = ""; ds.Tables[0].Rows.InsertAt(dr, 0); } #endregion "Header helyett nulladik sor, ha" return ds.ToDataSourceResult(); } #endregion Tanuló popup [ApiRolePackageAuthorize(KretaClaimPackages.Osztalyfonok.ClaimValue, KretaClaimPackages.SzuperOsztalyfonok.ClaimValue, KretaClaimPackages.Evfolyamfelelos.ClaimValue, KretaClaimPackages.CsoportVezeto.ClaimValue)] public HttpResponseMessage SaveMulasztasList(List list) { return base.SaveMulasztasList(list); } public HttpResponseMessage SaveNaploNezetMulasztasList(MulasztasokNaploNezetSaveModel model) { return base.SaveNaploNezetMulasztasList(model); } } }