This commit is contained in:
skidoodle 2024-03-13 00:33:46 +01:00
commit e124a47765
19374 changed files with 9806149 additions and 0 deletions

View file

@ -0,0 +1,66 @@
using System;
using System.Collections.Generic;
using System.Data;
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.Classes;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.BusinessLogic.Helpers;
using Kreta.BusinessLogic.Security;
using Kreta.Framework.Entities;
using Kreta.Resources;
using Kreta.Web.Areas.Hianyzas.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.Hianyzas.ApiControllers
{
public class BaseIgazolasokApiController : ApiController
{
[NonAction]
public DataSourceResult GetDetailIgazolasok(int tanuloId, [ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] DataSourceRequest request, int? szervezetTipusId = null)
{
var authorization = (IKretaAuthorization)Request.GetDependencyScope().GetService(typeof(IKretaAuthorization));
if (!authorization.IsValidTanulo(tanuloId))
{
throw new StatusError(HttpStatusCode.Forbidden, ErrorResource.AFelhasznalonakNincsMegfeleloJogosultsagaAFunkcioHasznalatahoz);
}
var helper = new IgazolasHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType());
helper.GridParameters = Converter.GridParameter(request);
DataSet ds = helper.IgazolasDetailKereses(tanuloId, szervezetTipusId);
return ds.ToDataSourceResult();
}
[NonAction]
public DataSourceResult GetIgazolasGrid(string data, [ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] DataSourceRequest request, int? szervezetTipusId = null)
{
var model = JsonConvert.DeserializeObject<IgazolasKeresoModel>(data);
if (!model.OsztCsopId.HasValue)
{
return new DataSourceResult();
}
var authorization = (IKretaAuthorization)Request.GetDependencyScope().GetService(typeof(IKretaAuthorization));
if (!authorization.IsValidOsztalyCsoport(model.OsztCsopId.Value))
{
throw new StatusError(HttpStatusCode.Forbidden, ErrorResource.AFelhasznalonakNincsMegfeleloJogosultsagaAFunkcioHasznalatahoz);
}
IgazolasHelper helper = new IgazolasHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType());
helper.GridParameters = Converter.GridParameter(request);
DataSet ds = helper.IgazolasKereses(model.OsztCsopId, szervezetTipusId);
return ds.ToDataSourceResult();
}
}
}

View file

@ -0,0 +1,125 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using System.Web.Http.Results;
using Kendo.Mvc.UI;
using Kreta.BusinessLogic.Classes.ComboBox;
using Kreta.BusinessLogic.Helpers;
using Kreta.BusinessLogic.Logic;
using Kreta.BusinessLogic.Utils;
using Kreta.Core;
using Kreta.Enums;
using Kreta.Enums.ManualEnums;
using Kreta.Framework.Entities;
using Kreta.Framework.Util;
using Kreta.Resources;
using Kreta.Web.Areas.Hianyzas.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.Hianyzas.ApiControllers
{
public class BaseMulasztasKeresoApiController : ApiController
{
[NonAction]
public HttpResponseMessage GetExport(string data, DataSourceRequest request, SzervezetTipusEnum? szervezetTipus = null)
{
try
{
var (gridParameter, modelList) = GetGridData(data, request, szervezetTipus);
modelList = modelList.SortingAndPaging(gridParameter.OrderDictionary);
var simpleExportColumnCos = SimpleExportLogic.GetSimpleExportColumnCos<MulasztasGridModel>(MulasztasGridModel.MulasztasExportAttributeId);
var memoryStream = SimpleExportLogic.GetExport(MulasztasResource.ExportDefaultSheetname, simpleExportColumnCos, modelList, ClaimData.SelectedTanevID.Value);
return HttpResponseExtensions.GetFileHttpResponse(memoryStream.ToArray(), MulasztasResource.ExportFileName);
}
catch (Exception ex)
{
throw new StatusError(HttpStatusCode.BadRequest, ErrorResource.HibaTortentAFajlExportalasaKozben) { UnHandledException = ex };
}
}
public (GridParameters gridParameter, List<MulasztasGridModel> modelList) GetGridData(string data, DataSourceRequest request, SzervezetTipusEnum? szervezetTipus = null)
{
var model = JsonConvert.DeserializeObject<MulasztasSearchModel>(data);
if (szervezetTipus.HasValue)
{
model.SzervezetTipusId = (int)szervezetTipus;
}
var gridParameter = Converter.GridParameter(request);
var coList = new MulasztasHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetMulasztasCoList(model.ConvertModelToCo(), true);
var modelList = new List<MulasztasGridModel>();
foreach (var co in coList)
{
var gridModel = new MulasztasGridModel(co);
modelList.Add(gridModel);
}
return (gridParameter, modelList);
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public HttpResponseMessage DeleteMulasztas([FromBody] int id)
{
try
{
var helper = new MulasztasHelper(ConnectionTypeExtensions.GetSessionConnectionType());
helper.DeleteMulasztasById(id);
return new HttpResponseMessage(HttpStatusCode.OK);
}
catch (EntityDeleteFailedException ex)
{
var uzenet = string.Format(ErrorResource.NemTorolhetoKapcsolatMiatt, TanuloErtekelesResource.Ertekeles, ex.ConnectionErrorMessage);
throw new StatusError(HttpStatusCode.BadRequest, uzenet);
}
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public HttpResponseMessage DeleteTobbesMulasztas([FromBody] int[] ids)
{
try
{
var helper = new MulasztasHelper(ConnectionTypeExtensions.GetSessionConnectionType());
foreach (var id in ids)
{
helper.DeleteMulasztasById(id);
}
return new HttpResponseMessage(HttpStatusCode.OK);
}
catch (EntityDeleteFailedException ex)
{
var uzenet = string.Format(ErrorResource.NemTorolhetoKapcsolatMiatt, TanuloErtekelesResource.Ertekeles, ex.ConnectionErrorMessage);
throw new StatusError(HttpStatusCode.BadRequest, uzenet);
}
}
public JsonResult<List<ComboBoxListItem>> GetIgazoltList()
{
var items = new Dictionary<string, string>
{
{ "0", HianyzasResource.Igazolatlan },
{ "1", HianyzasResource.Igazolt },
{ "2", HianyzasResource.Igazolando }
};
return Json(items.ToComboBoxItemList());
}
}
}

View file

@ -0,0 +1,336 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using System.Web.Http.ModelBinding;
using System.Web.Http.Results;
using Kendo.Mvc.UI;
using Kreta.BusinessLogic.Classes.ComboBox;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.BusinessLogic.Helpers;
using Kreta.BusinessLogic.Security;
using Kreta.Core;
using Kreta.Enums.ManualEnums;
using Kreta.Framework;
using Kreta.Framework.Entities;
using Kreta.Resources;
using Kreta.Web.Areas.Hianyzas.Helpers;
using Kreta.Web.Areas.Hianyzas.Models;
using Kreta.Web.Areas.Hianyzas.Models.Mulasztasok;
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.Hianyzas.ApiControllers
{
[ApiRoleClaimsAuthorize(true)]
[ApiRolePackageAuthorize(KretaClaimPackages.Osztalyfonok.ClaimValue, KretaClaimPackages.SzuperOsztalyfonok.ClaimValue,
KretaClaimPackages.Evfolyamfelelos.ClaimValue, KretaClaimPackages.Naplo.ClaimValue)]
public class BaseMulasztasokApiController : ApiController
{
public JsonResult<List<ComboBoxListItem>> GetTanoraList(string cascadeFilter)
{
DateTime? datumInput;
DateTime temp;
if (DateTime.TryParse(cascadeFilter, out temp))
{
datumInput = temp;
}
else
{
throw new Exception();
}
IDictionary<string, string> tanorak;
var result = new List<ComboBoxListItem>();
var helper = new TanoraHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType());
tanorak = helper.GetMegtartottOraByDatumAndOsztalyFonok(datumInput.Value, ClaimData.FelhasznaloId);
foreach (var item in tanorak)
{
var sli = new ComboBoxListItem { Text = item.Value, Value = item.Key };
result.Add(sli);
}
return Json(result);
}
public JsonResult<List<ComboBoxListItem>> GetIgazoltList()
{
var result = new List<ComboBoxListItem>
{
new ComboBoxListItem
{
Value = ((int) IgazoltSearchEnum.Igazolt).ToString(),
Text = StringResourcesUtil.GetString(2568)
},
new ComboBoxListItem
{
Value = ((int) IgazoltSearchEnum.Igazolatlan).ToString(),
Text = StringResourcesUtil.GetString(2800)
},
new ComboBoxListItem
{
Value = ((int) IgazoltSearchEnum.NemEllenorzott).ToString(),
Text = StringResourcesUtil.GetString(4571)
}
};
//Igazolt
//Igazolatlan
//Nem ellenőrzött
return Json(result);
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public HttpResponseMessage DeleteMulasztas([FromBody] int id)
{
CheckMulasztas(id);
try
{
var helper = new MulasztasHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType());
helper.DeleteMulasztasById(id);
return new HttpResponseMessage(HttpStatusCode.OK);
}
catch (EntityDeleteFailedException)
{
throw new StatusError(HttpStatusCode.BadRequest,
string.Format(StringResourcesUtil.GetString(5490),
StringResourcesUtil.GetString(500) /*,
e.ConnectionErrorMessage*/)
/*A(z) mulasztás nem törölhető, mert egy vagy több kapcsolódása van (kapcsolatok: {1})!*/);
}
}
[NonAction]
public HttpResponseMessage SaveMulasztasList(List<MulasztasokSaveModel> list, int? szervezetTipusId = null)
{
var helper = new MulasztasHelper(ConnectionTypeExtensions.GetSessionConnectionType());
foreach (var item in list)
{
if (item.ID != 0 && (item.Visszavonhato.Value || item.Igazolt != null))
{
if (!string.IsNullOrWhiteSpace(item.Megjegyzes) && item.Megjegyzes.Length > 255)
{
throw new StatusError(HttpStatusCode.BadRequest, ErrorResource.AMegjegyzesMax255KarakterLehet);
}
if(!szervezetTipusId.HasValue)
{
CheckMulasztas(item.ID.Value);
}
MulasztasokCo co = MulasztasokHelper.ConvertNaploNezetMulasztasokSaveModelToCo(item);
var mulasztasNotificaton = helper.SaveOrUpdateMulasztas(co);
}
}
return new HttpResponseMessage(HttpStatusCode.OK);
}
[NonAction]
public HttpResponseMessage SaveNaploNezetMulasztasList(MulasztasokNaploNezetSaveModel model, int? szervezetTipusId = null)
{
var helper = new MulasztasHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType());
foreach (var mulasztas in model.Mulasztasok)
{
if (!string.IsNullOrWhiteSpace(mulasztas.Megjegyzes) && mulasztas.Megjegyzes.Length > 255)
{
throw new StatusError(HttpStatusCode.BadRequest, ErrorResource.AMegjegyzesMax255KarakterLehet);
}
if (!mulasztas.ID.HasValue)
{
var mulasztasDbId = helper.GetMulasztasId(mulasztas.TanuloId, mulasztas.TanitasiOraId);
if (mulasztasDbId.IsEntityId())
{
mulasztas.ID = mulasztasDbId;
}
}
if (mulasztas.ID.HasValue)
{
CheckMulasztas(mulasztas.ID.Value);
}
CheckTanulo(mulasztas.TanuloId);
}
CheckUtkozes(helper, model, szervezetTipusId);
var sikertelenMulasztasMentesek = new List<string>();
foreach (var mulasztas in model.Mulasztasok)
{
var co = MulasztasokHelper.ConvertNaploNezetMulasztasokSaveModelToCo(mulasztas);
try
{
_ = helper.SaveOrUpdateNaplonezetMulasztas(co);
}
catch (Exception ex)
{
sikertelenMulasztasMentesek.Add(ex.Message);
}
}
if (sikertelenMulasztasMentesek.Count > 0)
{
throw new StatusError(HttpStatusCode.BadRequest, string.Join("<br/>", sikertelenMulasztasMentesek.Distinct()));
}
return new HttpResponseMessage(HttpStatusCode.OK);
}
private void CheckUtkozes(MulasztasHelper mulasztasHelper, MulasztasokNaploNezetSaveModel model, int? szervezetTipusId = null)
{
if (!model.Mulasztasok.Any(m => m.MulasztasTipus == (int)Enums.MulasztasTipusEnum.hianyzas))
{
return;
}
var naploNezetGridDs = mulasztasHelper.GetMulasztasokNaploNezetGrid(model.OsztalyCsoportId, model.NaploNezetDatum, IsCsoportVezeto(), szervezetTipusId);
var oraColumnPrefixes = Enumerable.Range(Core.Constants.Mulasztas.OraSorszamMinValue, Core.Constants.Mulasztas.OraSorszamMaxValue - Core.Constants.Mulasztas.OraSorszamMinValue + 1)
.Select(i => "Ora" + (i < 0 ? "Minusz" + Math.Abs(i) : i.ToString()));
var foglalkozasColumnPrefixes = Enumerable.Range(1, Core.Constants.Mulasztas.FoglalkozasCount)
.Select(i => "Foglalkozas" + i.ToString());
var columnPrefixes = oraColumnPrefixes.Concat(foglalkozasColumnPrefixes);
var tanitasiOraIdHashSet = new HashSet<int>();
foreach (DataRow dataRow in naploNezetGridDs.Tables[0].AsEnumerable())
{
foreach (var columnPrefix in columnPrefixes)
{
var tanitasiOraId = dataRow.Field<int?>(columnPrefix + "TanitasiOraId");
if (tanitasiOraId.HasValue)
{
tanitasiOraIdHashSet.Add(tanitasiOraId.Value);
}
}
}
var tanitasiOraKezdeteVegeList = mulasztasHelper.ListTanitasiOraKezdeteVege(tanitasiOraIdHashSet);
var errorMessages = new List<string>();
var mulasztasokGroupByTanulo = model.Mulasztasok.Where(m => m.MulasztasTipus == (int)Enums.MulasztasTipusEnum.hianyzas).GroupBy(x => x.TanuloId);
foreach (var mulasztasokGroup in mulasztasokGroupByTanulo)
{
var tanuloRow = naploNezetGridDs.Tables[0].AsEnumerable().First(r => r.Field<int>("TanuloId") == mulasztasokGroup.Key);
var tanitasiOraIdListByTanuloHianyzas = mulasztasokGroup.Select(m => m.TanitasiOraId).ToList();
foreach (var columnPrefix in columnPrefixes)
{
var mulasztasTipus = tanuloRow.Field<string>(columnPrefix + "MulasztasTipus");
if (!string.IsNullOrWhiteSpace(mulasztasTipus) && int.Parse(mulasztasTipus) == (int)Enums.MulasztasTipusEnum.hianyzas)
{
var tanitasiOraId = tanuloRow.Field<int>(columnPrefix + "TanitasiOraId");
tanitasiOraIdListByTanuloHianyzas.Add(tanitasiOraId);
}
}
var tanitasiOraKezdeteVegeListByTanuloHianyzas = tanitasiOraKezdeteVegeList.Where(t => tanitasiOraIdListByTanuloHianyzas.Contains(t.Id));
var utkozoGroups = GetUtkozoGroups(tanitasiOraKezdeteVegeListByTanuloHianyzas);
foreach (var utkozoGroup in utkozoGroups.Where(g => g.Count > 1))
{
var errorMessage = string.Format(MulasztasResource.HianyzasUtkozesError,
string.Join(MulasztasResource.EsAz,
utkozoGroup.Select(g => g.Oraszam.HasValue
? string.Format(MulasztasResource._0Ora, g.Oraszam)
: string.Format(MulasztasResource._0korKezdodoOra, g.OraKezdete.ToString(Core.Constants.ToStringPattern.HungarianTime)))));
errorMessages.Add(errorMessage);
}
}
if (errorMessages.Any())
{
throw new StatusError(HttpStatusCode.BadRequest, string.Join(Constants.General.DoubleBr, errorMessages));
}
}
private IEnumerable<IList<TanitasiOraCo>> GetUtkozoGroups(IEnumerable<TanitasiOraCo> tanitasiOraList)
{
var result = new List<List<TanitasiOraCo>>();
foreach (var tanitasiOra in tanitasiOraList)
{
var group = result.FirstOrDefault(r => r.Any(x => x.OraKezdete < tanitasiOra.OraVege && tanitasiOra.OraKezdete < x.OraVege));
if (group != null)
{
group.Add(tanitasiOra);
}
else
{
result.Add(new List<TanitasiOraCo> { tanitasiOra });
}
}
return result;
}
public JsonResult<bool> VaneMarIgazolt(int tipusId, int tanuloId, int oraId)
{
var helper = new MulasztasHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType());
return Json(helper.VaneMarIgazolt(tipusId, tanuloId, oraId));
}
public void CheckOsztalyCsoport(int osztalyCsoportId)
{
var authorization = (IKretaAuthorization)Request.GetDependencyScope().GetService(typeof(IKretaAuthorization));
if (!authorization.IsValidOsztalyCsoport(osztalyCsoportId))
{
throw new StatusError(HttpStatusCode.Forbidden, ErrorResource.AFelhasznalonakNincsMegfeleloJogosultsagaAFunkcioHasznalatahoz);
}
}
public void CheckCsoport(int csoportId)
{
var authorization = (IKretaAuthorization)Request.GetDependencyScope().GetService(typeof(IKretaAuthorization));
if (!authorization.IsValidCsoport(csoportId))
{
throw new StatusError(HttpStatusCode.Forbidden, ErrorResource.AFelhasznalonakNincsMegfeleloJogosultsagaAFunkcioHasznalatahoz);
}
}
public void CheckTanulo(int tanuloId, bool lehetTTF = false)
{
var authorization = (IKretaAuthorization)Request.GetDependencyScope().GetService(typeof(IKretaAuthorization));
if (!authorization.IsValidTanulo(tanuloId, lehetTTF))
{
throw new StatusError(HttpStatusCode.Forbidden, ErrorResource.AFelhasznalonakNincsMegfeleloJogosultsagaAFunkcioHasznalatahoz);
}
}
private void CheckMulasztas(int mulasztasId)
{
var authorization = (IKretaAuthorization)Request.GetDependencyScope().GetService(typeof(IKretaAuthorization));
if (!authorization.IsValidMulasztas(mulasztasId))
{
throw new StatusError(HttpStatusCode.Forbidden, ErrorResource.AFelhasznalonakNincsMegfeleloJogosultsagaAFunkcioHasznalatahoz);
}
}
public bool IsCsoportVezeto()
{
return ClaimData.FelhasznaloSzerepCsomagok.Contains(KretaClaimPackages.CsoportVezeto.ClaimValue)
&& !ClaimData.FelhasznaloSzerepCsomagok.Contains(KretaClaimPackages.Osztalyfonok.ClaimValue)
&& !ClaimData.FelhasznaloSzerepCsomagok.Contains(KretaClaimPackages.SzuperOsztalyfonok.ClaimValue)
&& !ClaimData.FelhasznaloSzerepCsomagok.Contains(KretaClaimPackages.Evfolyamfelelos.ClaimValue);
}
}
}

View file

@ -0,0 +1,40 @@
using System;
using System.Collections.Generic;
using System.Data;
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.Classes;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.BusinessLogic.Helpers;
using Kreta.BusinessLogic.Security;
using Kreta.Enums.ManualEnums;
using Kreta.Framework.Entities;
using Kreta.Resources;
using Kreta.Web.Areas.Hianyzas.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.Hianyzas.ApiControllers
{
[ApiRoleClaimsAuthorize(true)]
[ApiRolePackageAuthorize(KretaClaimPackages.CsoportVezeto.ClaimValue)]
public class DualisIgazolasokApiController : BaseIgazolasokApiController
{
public DataSourceResult GetDetailIgazolasok(int tanuloId, [ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] DataSourceRequest request)
{
return base.GetDetailIgazolasok(tanuloId, request, (int)SzervezetTipusEnum.Dualis);
}
public DataSourceResult GetIgazolasGrid(string data, [ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] DataSourceRequest request)
{
return base.GetIgazolasGrid(data, request, (int)SzervezetTipusEnum.Dualis);
}
}
}

View file

@ -0,0 +1,26 @@
using System.Net.Http;
using Kendo.Mvc.UI;
using Kreta.BusinessLogic.Security;
using Kreta.Enums.ManualEnums;
using Kreta.Web.Helpers.Grid;
using Kreta.Web.Security;
namespace Kreta.Web.Areas.Hianyzas.ApiControllers
{
[ApiRoleClaimsAuthorize(true)]
[ApiRolePackageAuthorize(KretaClaimPackages.Dualis_Admin.ClaimValue, KretaClaimPackages.Adminisztrator.ClaimValue)]
public class DualisMulasztasKeresoApiController : BaseMulasztasKeresoApiController
{
public DataSourceResult GetMulasztasGrid(string data, DataSourceRequest request)
{
var (gridParameter, modelList) = GetGridData(data, request, SzervezetTipusEnum.Dualis);
return modelList.ToDataSourceResult(gridParameter);
}
public HttpResponseMessage GetExport(string data, DataSourceRequest request)
{
return base.GetExport(data, request, SzervezetTipusEnum.Dualis);
}
}
}

View file

@ -0,0 +1,250 @@
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);
}
}
}

View file

@ -0,0 +1,161 @@
using System;
using System.Collections.Generic;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using System.Web.Http.ModelBinding;
using Kendo.Mvc.UI;
using Kreta.BusinessLogic.Helpers;
using Kreta.BusinessLogic.Logic;
using Kreta.BusinessLogic.Security;
using Kreta.Core;
using Kreta.Core.Exceptions;
using Kreta.Framework.Entities;
using Kreta.Framework.Util;
using Kreta.Resources;
using Kreta.Web.Areas.Hianyzas.Models;
using Kreta.Web.Areas.Tanulo.Helper;
using Kreta.Web.Areas.Tanulo.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.Hianyzas.ApiControllers
{
[ApiRoleClaimsAuthorize(true)]
[ApiRolePackageAuthorize(KretaClaimPackages.Adminisztrator.ClaimValue)]
public class FelmentesekApiController : ApiController
{
public DataSourceResult GetFelmentesekGrid(string data, [System.Web.Http.ModelBinding.ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] DataSourceRequest request)
{
var (gridParameter, modelList) = GetGridData(data, request);
return modelList.ToDataSourceResult(gridParameter);
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
[ApiRolePackageAuthorize(KretaClaimPackages.Adminisztrator.ClaimValue)]
public HttpResponseMessage SaveFelmentes(TanuloFelmentesModel model)
{
TanuloLogic.TanuloFelmentesCustomValidation(ModelState, model);
if (ModelState.IsValid)
{
try
{
var helper = new TanuloHelper(ConnectionTypeExtensions.GetSessionConnectionType());
var co = TanuloFelmentesModel.ConvertModelToCo(model);
if (co.IsKorabbiMulasztasokEllenorzese && co.Kezdete.Value < DateTime.Now && co.OraMentesites)
{
var mulasztasDataSet = helper.CheckModosuloKorabbiMulasztasok(co);
if (mulasztasDataSet.Tables[0].Rows.Count != 0)
{
return Request.CreateResponse(HttpStatusCode.OK, mulasztasDataSet.ToDataSourceResult(), Configuration.Formatters.JsonFormatter);
}
}
helper.TanuloFelmentesMentese(co, ClaimData.KovTanevID);
return new HttpResponseMessage(HttpStatusCode.OK);
}
catch (BlException e)
{
var error = new StatusError(HttpStatusCode.BadRequest, e.Message);
throw error;
}
}
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
[ApiRolePackageAuthorize(KretaClaimPackages.Adminisztrator.ClaimValue)]
public HttpResponseMessage DeleteFelmentes([FromBody] int id)
{
try
{
var helper = new TanuloHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType());
helper.TanuloFelmentesTorles(id);
return new HttpResponseMessage(HttpStatusCode.OK);
}
catch (EntityDeleteFailedException ex)
{
var uzenet = string.Format(ErrorResource.NemTorolhetoKapcsolatMiatt, FelmentesResource.Felmentes, ex.ConnectionErrorMessage);
throw new StatusError(HttpStatusCode.BadRequest, uzenet);
}
}
public HttpResponseMessage GetExportFelmentesekGrid(string data, [ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] DataSourceRequest request)
{
try
{
var (gridParameter, modelList) = GetGridData(data, request, isTeljesFelmentesOka: true);
modelList = modelList.SortingAndPaging(gridParameter.OrderDictionary);
var simpleExportColumnCos = SimpleExportLogic.GetSimpleExportColumnCos<FelmentesekGridModel>(FelmentesekGridModel.FelmentesekGridExportAttributeId);
var memoryStream = SimpleExportLogic.GetExport(FelmentesResource.FelmentesekGridExportSheetName, simpleExportColumnCos, modelList, ClaimData.SelectedTanevID.Value);
return HttpResponseExtensions.GetFileHttpResponse(memoryStream.ToArray(), $"{FelmentesResource.FelmentesekGridExportFilename}_{DateTime.Now:yyyy_MM_dd}.xlsx");
}
catch (Exception ex)
{
throw new StatusError(HttpStatusCode.BadRequest, ErrorResource.HibaTortentAFajlExportalasaKozben) { UnHandledException = ex };
}
}
public HttpResponseMessage GetExportAktivFelmentesek(string data, [ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] DataSourceRequest request)
{
try
{
var (gridParameter, modelList) = GetGridData(data, request, false, true);
modelList = modelList.SortingAndPaging(gridParameter.OrderDictionary);
var simpleExportColumnCos = SimpleExportLogic.GetSimpleExportColumnCos<FelmentesekGridModel>(FelmentesekGridModel.AktivFelmentesekGridExportAttributeId);
var memoryStream = SimpleExportLogic.GetExport(FelmentesResource.AktivFelmentesekGridExportSheetName, simpleExportColumnCos, modelList, ClaimData.SelectedTanevID.Value);
return HttpResponseExtensions.GetFileHttpResponse(memoryStream.ToArray(), $"{FelmentesResource.AktivFelmentesekGridExportFilename}_{DateTime.Now:yyyy_MM_dd}.xlsx");
}
catch (Exception ex)
{
throw new StatusError(HttpStatusCode.BadRequest, ErrorResource.HibaTortentAFajlExportalasaKozben) { UnHandledException = ex };
}
}
public HttpResponseMessage GetExportToroltFelmentesek(string data, [ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] DataSourceRequest request)
{
try
{
var (gridParameter, modelList) = GetGridData(data, request, true, true);
modelList = modelList.SortingAndPaging(gridParameter.OrderDictionary);
var simpleExportColumnCos = SimpleExportLogic.GetSimpleExportColumnCos<FelmentesekGridModel>(FelmentesekGridModel.ToroltFelmentesekGridExportAttributeId);
var memoryStream = SimpleExportLogic.GetExport(FelmentesResource.ToroltFelmentesekGridExportSheetName, simpleExportColumnCos, modelList, ClaimData.SelectedTanevID.Value);
return HttpResponseExtensions.GetFileHttpResponse(memoryStream.ToArray(), $"{FelmentesResource.ToroltFelmentesekGridExportFilename}_{DateTime.Now:yyyy_MM_dd}.xlsx");
}
catch (Exception ex)
{
throw new StatusError(HttpStatusCode.BadRequest, ErrorResource.HibaTortentAFajlExportalasaKozben) { UnHandledException = ex };
}
}
private (GridParameters gridParameter, List<FelmentesekGridModel> modelList) GetGridData(string data, DataSourceRequest request, bool? torolt = null, bool isTeljesFelmentesOka = false)
{
var model = JsonConvert.DeserializeObject<FelmentesekSearchModel>(data);
model.Torolt = torolt;
var gridParameter = Converter.GridParameter(request);
var coList = new FelmentesHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetFelmentesGrid(model.ToCo());
var modelList = new List<FelmentesekGridModel>();
foreach (var co in coList)
{
var gridModel = new FelmentesekGridModel(co, isTeljesFelmentesOka);
modelList.Add(gridModel);
}
return (gridParameter, modelList);
}
}
}

View file

@ -0,0 +1,29 @@
using System.Web.Http;
using System.Web.Http.ModelBinding;
using Kendo.Mvc.UI;
using Kreta.BusinessLogic.Helpers;
using Kreta.BusinessLogic.Security;
using Kreta.Web.Areas.Hianyzas.Models;
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.Ellenorzo.ClaimValue)]
public class HianyzasokApiController : ApiController
{
public DataSourceResult GetHianyzasGrid(string data, [ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] DataSourceRequest request)
{
HianyzasokSearchModel model = JsonConvert.DeserializeObject<HianyzasokSearchModel>(data);
var helper = new MulasztasHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType());
helper.GridParameters = Converter.GridParameter(request);
var ds = helper.GetHallgatoMulasztasai(model.ConvertToMulasztasokCo());
return ds.ToDataSourceResult();
}
}
}

View file

@ -0,0 +1,205 @@
using System;
using System.Collections.Generic;
using System.Data;
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.Classes;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.BusinessLogic.Helpers;
using Kreta.BusinessLogic.Security;
using Kreta.Framework.Entities;
using Kreta.Resources;
using Kreta.Web.Areas.Hianyzas.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.Hianyzas.ApiControllers
{
[ApiRoleClaimsAuthorize(true)]
[ApiRolePackageAuthorize(KretaClaimPackages.Osztalyfonok.ClaimValue, KretaClaimPackages.SzuperOsztalyfonok.ClaimValue,
KretaClaimPackages.Evfolyamfelelos.ClaimValue, KretaClaimPackages.Naplo.ClaimValue)]
public class IgazolasokApiController : BaseIgazolasokApiController
{
public DataSourceResult GetIgazolasGrid(string data, [ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] DataSourceRequest request)
{
return base.GetIgazolasGrid(data, request);
}
public DataSourceResult GetDetailIgazolasok(int tanuloId, [ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] DataSourceRequest request)
{
return base.GetDetailIgazolasok(tanuloId, request);
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public HttpResponseMessage ValidateIgazolasOnSave(List<IgazolasMentesModel> igazolasList)
{
string errorMsg = ValidateBeforeSaveIgazolasList(igazolasList);
if (string.IsNullOrWhiteSpace(errorMsg))
{
return new HttpResponseMessage(HttpStatusCode.OK);
}
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, errorMsg);
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public HttpResponseMessage SaveIgazolas(List<IgazolasMentesModel> igazolasList)
{
ValidateIgazolasList(igazolasList, ModelState);
if (ModelState.IsValid)
{
var authorization = (IKretaAuthorization)Request.GetDependencyScope().GetService(typeof(IKretaAuthorization));
var osztalyCsoportTanuloDict = new Dictionary<int, HashSet<int>>();
foreach (var igazolas in igazolasList)
{
if (!osztalyCsoportTanuloDict.TryGetValue(igazolas.OsztalyCsoportId, out var tanuloIdSet))
{
tanuloIdSet = new HashSet<int>();
osztalyCsoportTanuloDict.Add(igazolas.OsztalyCsoportId, tanuloIdSet);
}
tanuloIdSet.Add(igazolas.TanuloId);
}
foreach (var osztalyCsoportTanulo in osztalyCsoportTanuloDict)
{
if (!authorization.IsValidTanulo(osztalyCsoportTanulo.Value.ToList(), osztalyCsoportTanulo.Key))
{
throw new StatusError(HttpStatusCode.Forbidden, ErrorResource.AFelhasznalonakNincsMegfeleloJogosultsagaAFunkcioHasznalatahoz);
}
}
foreach (IgazolasMentesModel igazolas in igazolasList)
{
var igazolasCO = new IgazolasCO()
{
TanuloId = igazolas.TanuloId,
OsztCsop = igazolas.OsztalyCsoportId,
ErvKezdete = igazolas.IgazolasElsoNap,
ErvVege = igazolas.IgazolasUtolsoNap,
RogzitoId = ClaimData.FelhasznaloId,
RogzDatum = DateTime.Now,
IgazolasTipus = igazolas.IgazolasTipus,
Megjegyzes = igazolas.IgazolasSzovegesTartalma,
SzervezetId = igazolas.SzervezetId
};
new IgazolasHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType()).SaveOrUpdateIgazolas(igazolasCO);
}
return new HttpResponseMessage(HttpStatusCode.OK);
}
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
}
private string ValidateBeforeSaveIgazolasList(List<IgazolasMentesModel> igazolasList)
{
string errorMsg = string.Empty;
if (igazolasList.Count > 0)
{
int osztalyCsoportId = igazolasList[0].OsztalyCsoportId;
DataTable igazolasDT = new DataTable();
igazolasDT.Columns.Add("TanuloId", typeof(int));
igazolasDT.Columns.Add("ElsoNap", typeof(string));
igazolasDT.Columns.Add("UtolsoNap", typeof(string));
igazolasDT.Columns.Add("IntezmenyId", typeof(int));
igazolasDT.Columns.Add("TanevId", typeof(int));
igazolasDT.Columns.Add("OsztalyCsoportId", typeof(int));
igazolasDT.Columns.Add("SzervezetId", typeof(int));
foreach (IgazolasMentesModel igazolas in igazolasList)
{
var row = igazolasDT.NewRow();
{
row["TanuloId"] = igazolas.TanuloId;
row["ElsoNap"] = igazolas.IgazolasElsoNap.ToConvertableDateString().Replace("-", "");
row["UtolsoNap"] = igazolas.IgazolasUtolsoNap.ToConvertableDateString().Replace("-", "");
row["IntezmenyId"] = ClaimData.IntezmenyId;
row["TanevId"] = ClaimData.AktivTanevID ?? ClaimData.SelectedTanevID ?? 0;
row["OsztalyCsoportId"] = igazolas.OsztalyCsoportId;
row["SzervezetId"] = igazolas.SzervezetId??0;
igazolasDT.Rows.Add(row);
}
}
List<IgazolasCO> igazolasok = new IgazolasHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType()).GetOsztalyCsoportIgazolasokForValidate(igazolasDT).Tables[0].AsEnumerable().
Select(x => new IgazolasCO() { TanuloId = x.Field<int>("TanuloId"), ErvKezdete = x.Field<DateTime>("ElsoNap"), ErvVege = x.Field<DateTime>("UtolsoNap"), SzervezetId = x.Field<int?>("SzervezetId")??0 }).ToList();
foreach (IgazolasMentesModel igazolas in igazolasList)
{
List<IgazolasCO> invalidIgazolasok = igazolasok.Where(x => x.TanuloId == igazolas.TanuloId).ToList();
if (invalidIgazolasok.Count > 0)
{
DateTime minDate = igazolas.IgazolasElsoNap >= invalidIgazolasok.Min(x => x.ErvKezdete) ? igazolas.IgazolasElsoNap : invalidIgazolasok.Min(x => x.ErvKezdete);
DateTime maxDate = igazolas.IgazolasUtolsoNap <= invalidIgazolasok.Max(x => x.ErvVege) ? igazolas.IgazolasUtolsoNap : invalidIgazolasok.Max(x => x.ErvVege);
errorMsg += "</ br>" + string.Format(IgazolasResource.IgazolasDatumUtkozes, igazolas.TanuloNev, minDate.ToShortDateString(), maxDate.ToShortDateString());
}
}
}
return errorMsg;
}
private void ValidateIgazolasList(List<IgazolasMentesModel> igazolasList, ModelStateDictionary modelState)
{
if (igazolasList.Count > 0)
{
int osztalyCsoportId = igazolasList[0].OsztalyCsoportId;
IEnumerable<DataRow> osztalyTanuloi = new OsztalyCsoportHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType()).GetOsztalyCsoportMindenkoriTanuloi(osztalyCsoportId).Tables[0].AsEnumerable();
foreach (IgazolasMentesModel igazolas in igazolasList)
{
bool isValidIgazolas = osztalyTanuloi.Any(x => x.Field<int>("ID") == igazolas.TanuloId
&& x.Field<DateTime>("BelepesDatum").Date <= igazolas.IgazolasElsoNap.Date
&& (!x.Field<DateTime?>("KilepesDatum").HasValue || x.Field<DateTime>("KilepesDatum").Date >= igazolas.IgazolasUtolsoNap.Date));
if (!isValidIgazolas)
{
modelState.AddModelError($"igazolas_{igazolas.TanuloId}", string.Format(IgazolasResource.ErvenytelenIgazolasDatum, igazolas.TanuloNev));
}
}
}
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public HttpResponseMessage DeleteIgazolas([FromBody] int id)
{
var authorization = (IKretaAuthorization)Request.GetDependencyScope().GetService(typeof(IKretaAuthorization));
if (!authorization.IsValidIgazolas(id))
{
throw new StatusError(HttpStatusCode.Forbidden, ErrorResource.AFelhasznalonakNincsMegfeleloJogosultsagaAFunkcioHasznalatahoz);
}
new IgazolasHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType()).DeleteIgazolasById(id);
return new HttpResponseMessage(HttpStatusCode.OK);
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
[ApiRolePackageAuthorize(KretaClaimPackages.Adminisztrator.ClaimValue, KretaClaimPackages.Tanar.ClaimValue)]
public HttpResponseMessage DeleteIgazolasAdmin([FromBody] int id)
{
try
{
new IgazolasHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType()).DeleteIgazolasById(id);
return new HttpResponseMessage(HttpStatusCode.OK);
}
catch (EntityDeleteFailedException ex)
{
var uzenet = string.Format(ErrorResource.NemTorolhetoKapcsolatMiatt, IgazolasResource.Igazolas, ex.ConnectionErrorMessage);
throw new StatusError(HttpStatusCode.BadRequest, uzenet);
}
}
}
}

View file

@ -0,0 +1,74 @@
using System;
using System.Collections.Generic;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using System.Web.Http.ModelBinding;
using Kendo.Mvc.UI;
using Kreta.BusinessLogic.Helpers;
using Kreta.BusinessLogic.Logic;
using Kreta.BusinessLogic.Security;
using Kreta.Core;
using Kreta.Framework.Util;
using Kreta.Resources;
using Kreta.Web.Areas.Hianyzas.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.Hianyzas.ApiControllers
{
[ApiRoleClaimsAuthorize(true)]
[ApiRolePackageAuthorize(KretaClaimPackages.Adminisztrator.ClaimValue)]
public class IgazolasokListajaApiController : ApiController
{
[HttpPost]
public DataSourceResult GetIgazolasokListajaGrid([ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] KretaGridDataSourceRequest request)
{
var (gridParameter, modelList) = GetGridData(request.data, request);
return modelList.ToDataSourceResult(gridParameter);
}
public HttpResponseMessage GetExport(string data, DataSourceRequest request)
{
try
{
var (gridParameter, modelList) = GetGridData(data, request);
modelList = modelList.SortingAndPaging(gridParameter.OrderDictionary);
var simpleExportColumnCos = SimpleExportLogic.GetSimpleExportColumnCos<IgazolasokListajaGridModel>(IgazolasokListajaGridModel.IgazolasokExportAttributeId);
var memoryStream = SimpleExportLogic.GetExport(HianyzasResource.IgazolasokListajaExportSheetName, simpleExportColumnCos, modelList, ClaimData.SelectedTanevID.Value);
return HttpResponseExtensions.GetFileHttpResponse(memoryStream.ToArray(), $"{HianyzasResource.IgazolasokListajaExportFileName}_{DateTime.Now:yyyy_MM_dd}.{Constants.ImportExport.FileFormatXlsx}");
}
catch (Exception ex)
{
throw new StatusError(HttpStatusCode.BadRequest, ErrorResource.HibaTortentAFajlExportalasaKozben) { UnHandledException = ex };
}
}
private (GridParameters gridParameter, List<IgazolasokListajaGridModel> modelList) GetGridData(string data, DataSourceRequest request)
{
var model = JsonConvert.DeserializeObject<IgazolasokListajaSearchModel>(data);
var gridParameter = Converter.GridParameter(request);
var coList = new IgazolasHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetIgazolasCoList(model.ConvertToCO());
var modelList = new List<IgazolasokListajaGridModel>();
foreach (var co in coList)
{
var gridModel = new IgazolasokListajaGridModel(co);
modelList.Add(gridModel);
}
return (gridParameter, modelList);
}
}
}

View file

@ -0,0 +1,28 @@
using System.Web.Http;
using System.Web.Http.ModelBinding;
using Kendo.Mvc.UI;
using Kreta.BusinessLogic.Helpers;
using Kreta.BusinessLogic.Security;
using Kreta.Web.Areas.Hianyzas.Models;
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.Ellenorzo.ClaimValue)]
public class InformaciokIgazolasokApiController : ApiController
{
public DataSourceResult GetIgazolasGrid(string data, [ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] DataSourceRequest request)
{
var model = JsonConvert.DeserializeObject<InformaciokIgazolasSearchModel>(data);
var helper = new IgazolasHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType());
helper.GridParameters = Converter.GridParameter(request);
var ds = helper.GetInformaciokIgazolasGrid(model.ConvertToCo());
return ds.ToDataSourceResult();
}
}
}

View file

@ -0,0 +1,25 @@
using System.Net.Http;
using Kendo.Mvc.UI;
using Kreta.BusinessLogic.Security;
using Kreta.Web.Helpers.Grid;
using Kreta.Web.Security;
namespace Kreta.Web.Areas.Hianyzas.ApiControllers
{
[ApiRoleClaimsAuthorize(true)]
[ApiRolePackageAuthorize(KretaClaimPackages.Adminisztrator.ClaimValue)]
public class MulasztasKeresoApiController : BaseMulasztasKeresoApiController
{
public DataSourceResult GetMulasztasGrid(string data, DataSourceRequest request)
{
var (gridParameter, modelList) = GetGridData(data, request);
return modelList.ToDataSourceResult(gridParameter);
}
public HttpResponseMessage GetExport(string data, DataSourceRequest request)
{
return base.GetExport(data, request);
}
}
}

View file

@ -0,0 +1,302 @@
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<MulasztasIndexModel>(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<MulasztasokDatumNezetGridModel>(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<MulasztasSearchModel>(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<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, 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<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";
}
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<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
[ApiRolePackageAuthorize(KretaClaimPackages.Osztalyfonok.ClaimValue, KretaClaimPackages.SzuperOsztalyfonok.ClaimValue,
KretaClaimPackages.Evfolyamfelelos.ClaimValue, KretaClaimPackages.CsoportVezeto.ClaimValue)]
public HttpResponseMessage SaveMulasztasList(List<MulasztasokSaveModel> list)
{
return base.SaveMulasztasList(list);
}
public HttpResponseMessage SaveNaploNezetMulasztasList(MulasztasokNaploNezetSaveModel model)
{
return base.SaveNaploNezetMulasztasList(model);
}
}
}

View file

@ -0,0 +1,26 @@
using System.Web.Http;
using System.Web.Http.ModelBinding;
using Kendo.Mvc.UI;
using Kreta.BusinessLogic.Helpers;
using Kreta.BusinessLogic.Security;
using Kreta.Web.Helpers;
using Kreta.Web.Helpers.Grid;
using Kreta.Web.Security;
namespace Kreta.Web.Areas.Hianyzas.ApiControllers
{
[ApiRoleClaimsAuthorize(true)]
[ApiRolePackageAuthorize(KretaClaimPackages.Ellenorzo.ClaimValue)]
public class TantargyiMulasztasApiController : ApiController
{
public DataSourceResult GetTantargyiMulasztasGrid([ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] DataSourceRequest request)
{
var helper = new MulasztasHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType());
helper.GridParameters = Converter.GridParameter(request);
var ds = helper.GetTanuloMulasztasai(ClaimData.FelhasznaloId);
return ds.ToDataSourceResult();
}
}
}