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.CsoportVezeto.ClaimValue)] public class DualisMulasztasokApiController : BaseMulasztasokApiController { #region Dátum nézet //Mulasztásos napok lekérdezése a dátum nézethez 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(); } model.CsoportId = model.OsztalyCsoportId.Value; CheckCsoport(model.CsoportId.Value); int osztalyCsoportId = model.CsoportId.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, false); return ds.ToDataSourceResult(); } //Mulasztasok lekérdezése dátum alapján public DataSourceResult GetMulasztasokDatumNezetDetailGrid(string model, [ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] DataSourceRequest request) { var mulasztasModel = JsonConvert.DeserializeObject(model); CheckCsoport(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, (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 (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 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(); } DataSet ds; var helper = new MulasztasHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType()); helper.GridParameters = Converter.GridParameter(request); ds = helper.GetTanulokMulasztasaiKesesei(osztalyCsoportId, tanuloId, false, (int)SzervezetTipusEnum.Dualis); DataSourceResult result = ds.ToDataSourceResult(); return result; } public DataSourceResult GetMulasztasokTanuloNezetDetailGrid(int tanuloId, int osztalyCsoportId, [ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] DataSourceRequest request) { CheckTanulo(tanuloId,true); var coList = new MulasztasHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType()).GetMulasztasokTanuloDetailGridItemCoList(new MulasztasokCo { TanuloId = tanuloId, OsztCsop = osztalyCsoportId == default ? default(int?) : osztalyCsoportId, KapcsCsop = true }, true, csoportVezetoId: (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, false, (int)SzervezetTipusEnum.Dualis); DataSourceResult result = ds.ToDataSourceResult(); return result; } #endregion #region Tanuló popup 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"; } ds = helper.GetTanuloMulasztasaiGrid(model.TanuloId, ClaimData.AktivTanevID.Value, igazolandok, null, (int?)null, model.OsztalyCsoportId); return ds.ToDataSourceResult(); } 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 public HttpResponseMessage SaveMulasztasList(List list) { return base.SaveMulasztasList(list, (int)SzervezetTipusEnum.Dualis); } public HttpResponseMessage SaveNaploNezetMulasztasList(MulasztasokNaploNezetSaveModel model) { return base.SaveNaploNezetMulasztasList(model, (int)SzervezetTipusEnum.Dualis); } } }