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

250 lines
10 KiB
C#

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<MulasztasIndexModel>(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<MulasztasokDatumNezetGridModel>(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<MulasztasSearchModel>(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<MulasztasGridModel>();
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<MulasztasSearchModel>(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<TanuloMulasztasaiPopupModel>(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<TanuloMulasztasaiPopupModel>(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<MulasztasokSaveModel> list)
{
return base.SaveMulasztasList(list, (int)SzervezetTipusEnum.Dualis);
}
public HttpResponseMessage SaveNaploNezetMulasztasList(MulasztasokNaploNezetSaveModel model)
{
return base.SaveNaploNezetMulasztasList(model, (int)SzervezetTipusEnum.Dualis);
}
}
}