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,120 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Net;
using System.Net.Http;
using System.Web.Http;
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.Orarend.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.Orarend.ApiControllers
{
[ApiRoleClaimsAuthorize(true)]
[ApiRolePackageAuthorize(KretaClaimPackages.Adminisztrator.ClaimValue)]
public class AdminBejelentettSzamonkeresekApiController : ApiController
{
public DataSourceResult GetBejelentettSzamonkeresekGrid(string data, DataSourceRequest request)
{
var (gridParameter, modelList) = GetGridData(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<BejelentettSzamonkeresekGridModel>(BejelentettSzamonkeresekGridModel.BejelentettSzamonkeresekExportAttributeId);
var memoryStream = SimpleExportLogic.GetExport(OrarendResource.BejelentettSzamonkeresekExportSheetName, simpleExportColumnCos, modelList, ClaimData.SelectedTanevID.Value);
return HttpResponseExtensions.GetFileHttpResponse(memoryStream.ToArray(), $"{OrarendResource.BejelentettSzamonkeresekExportFileName}_{DateTime.Now:yyyy_MM_dd}.{Constants.ImportExport.FileFormatXlsx}");
}
catch (Exception ex)
{
throw new StatusError(HttpStatusCode.BadRequest, ErrorResource.HibaTortentAFajlExportalasaKozben) { UnHandledException = ex };
}
}
private (GridParameters gridParameter, List<BejelentettSzamonkeresekGridModel> modelList) GetGridData(string data, DataSourceRequest request)
{
var model = JsonConvert.DeserializeObject<BejelentettSzamonkeresekSearchModel>(data);
var gridParameter = Converter.GridParameter(request);
var coList = new SzamonkeresElorejelzesHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetBejelentettSzamonkeresekCoList(model.ConvertToCo());
var modelList = new List<BejelentettSzamonkeresekGridModel>();
foreach (var co in coList)
{
var gridModel = new BejelentettSzamonkeresekGridModel(co);
modelList.Add(gridModel);
}
return (gridParameter, modelList);
}
public DataSourceResult GetBejelentettSzamonkeresekExportGrid(string searchFilter, string sortColumn, string sortDir)
{
BejelentettSzamonkeresekSearchModel model = JsonConvert.DeserializeObject<BejelentettSzamonkeresekSearchModel>(searchFilter);
var helper = new SzamonkeresElorejelzesHelper(ConnectionTypeExtensions.GetSessionConnectionType());
var ds = helper.GetBejelentettSzamonkeresekGrid(model.ConvertToCo());
ds.Tables[0].Columns.Add("SzamonkeresDatumaStr", typeof(string));
ds.Tables[0].Columns.Add("BejelentesDatumaStr", typeof(string));
foreach (DataRow row in ds.Tables[0].Rows)
{
var dt = DateTime.Parse(row["SzamonkeresDatuma"].ToString());
row["SzamonkeresDatumaStr"] = dt.ToString("yyyy.MM.dd.");
var dt2 = DateTime.Parse(row["BejelentesDatuma"].ToString());
row["BejelentesDatumaStr"] = dt2.ToString("yyyy.MM.dd.");
}
if (sortColumn != "-" && sortDir != "-")
{
DataSet result = new DataSet();
ds.Tables[0].DefaultView.Sort = (sortColumn).ToUpper() + " " + (sortDir).ToUpper();
result.Tables.Add(ds.Tables[0].DefaultView.ToTable());
return result.ToDataSourceResult();
}
return ds.ToDataSourceResult();
}
[HttpPost]
public System.Web.Http.Results.JsonResult<List<ExportColumn>> GetExportColumns()
{
List<ExportColumn> Items = new List<ExportColumn>();
Items.Add(new ExportColumn() { Field = "SzamonkeresDatumaStr", Title = OrarendResource.Datum });
Items.Add(new ExportColumn() { Field = "HetNapja_DNAME", Title = OrarendResource.HetNapja });
Items.Add(new ExportColumn() { Field = "Oraszam", Title = OrarendResource.Oraszam });
Items.Add(new ExportColumn() { Field = "TargyNev", Title = OrarendResource.Targy });
Items.Add(new ExportColumn() { Field = "OsztalyNev", Title = OrarendResource.OsztalyCsoport });
Items.Add(new ExportColumn() { Field = "TanarNev", Title = OrarendResource.Tanar });
Items.Add(new ExportColumn() { Field = "ErtekelesModNev", Title = OrarendResource.SzamonkeresMod });
Items.Add(new ExportColumn() { Field = "SzamonkeresMegnevezes", Title = OrarendResource.SzamonkeresMegnevezes });
Items.Add(new ExportColumn() { Field = "BejelentesDatumaStr", Title = OrarendResource.BejelentesDatuma });
return Json(Items);
}
}
}

View file

@ -0,0 +1,192 @@
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.ManualEnums;
using Kreta.Resources;
using Kreta.Web.Areas.Orarend.Logic;
using Kreta.Web.Areas.Orarend.Models;
using Kreta.Web.Helpers;
using Kreta.Web.Helpers.Grid;
using Kreta.Web.Security;
using Newtonsoft.Json;
using HttpPostAttribute = System.Web.Http.HttpPostAttribute;
namespace Kreta.Web.Areas.Orarend.ApiControllers
{
[ApiRoleClaimsAuthorize(true)]
[ApiRolePackageAuthorize(KretaClaimPackages.Adminisztrator.ClaimValue)]
public class AdminKozpontiOrakApiController : ApiController
{
public DataSourceResult GetRogzitesGrid(bool isSorszamozando, DateTime? datum = null, int? hanyadikOra = null)
{
var connectionType = ConnectionTypeExtensions.GetSessionConnectionType();
var helper = new OsztalyHelper(connectionType);
List<OsztalyItemCo> osztalyok = helper.GetOsztalyCoList();
if (datum.HasValue && hanyadikOra.HasValue)
{
var osztalyCsoportIds = new CsengetesiRendHelper(connectionType).GetOsztalyCsoportIdsForCsengetesiRend(datum.Value, hanyadikOra.Value, osztalyok.Select(x => x.Id));
osztalyok = osztalyok.Where(x => osztalyCsoportIds.Contains(x.Id)).ToList();
}
return AdminKozpontiOrakOsztalyokGridModel.MapOsztalyItemCoListToOsztalyokGridModelList(osztalyok, isSorszamozando).ToDataSourceResult();
}
[HttpPost]
public DataSourceResult GetKozpontiOrabaUtkozoOrarendiOrakGrid(DateTime start, DateTime end, int hanyadikora, bool onlyUtkozoOrak, [ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] KretaGridDataSourceRequest request)
{
var temp = JsonConvert.DeserializeObject<AdminKozpontiOrakRogzitesSelectedModel.DeserializeHelper>(request.data);
List<AdminKozpontiOrakRogzitesSelectedModel> kozpontiOraList = JsonConvert.DeserializeObject<List<AdminKozpontiOrakRogzitesSelectedModel>>(temp.JsonContent);
if (kozpontiOraList == null)
{
return new List<AdminKozpontiOrakOsztalyokGridModel>().ToDataSourceResult();
}
var helper = new OrarendiOraHelper(ConnectionTypeExtensions.GetSessionConnectionType());
IList<AdminKozpontiOrakOrarendiOraCo> orarendiOrak = helper.GetOrarendiOrakUtkozesKozpontiOraValidaciohoz(start.ToLocalTime(),
end.ToLocalTime(), hanyadikora, AdminKozpontiOrakRogzitesSelectedModel.MapListToKozpontiOrakOrarendiOrakUtkozesCoList(kozpontiOraList, hanyadikora), onlyUtkozoOrak);
return AdminKozpontiOrakOsztalyokGridModel.MapOrarendiOrakoListToOsztalyokGridModelList(orarendiOrak).ToDataSourceResult();
}
[HttpPost]
public DataSourceResult GetOrarendiOrakKopontilagTorleseGrid(DateTime start, DateTime end, int hanyadikora)
{
var helper = new OrarendiOraHelper(ConnectionTypeExtensions.GetSessionConnectionType());
IList<AdminKozpontiOrakOrarendiOraCo> orarendiOrak = helper.GetOrarendiOrakForSpecificTime(start.ToLocalTime(), end.ToLocalTime(), null, null, hanyadikora);
return AdminKozpontiOrakOsztalyokGridModel.MapOrarendiOrakoListToOsztalyokGridModelList(orarendiOrak.Where(i => i.KozpontiOraGroupId == null && i.KozpontilagToroltOraGroupId == null).ToList()).ToDataSourceResult();
}
[HttpPost]
public DataSourceResult GetOrarendiOrakVisszaallitasaGrid(DateTime start, DateTime end, int hanyadikora)
{
var helper = new AdminKozpontiOrakHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType());
IList<AdminKozpontiOrakOrarendiOraCo> orarendiOrak = helper.GetToroltOrarendiOrakVisszaallitashoz(start.ToLocalTime(), end.ToLocalTime(), hanyadikora);
return AdminKozpontiOrakOsztalyokGridModel.MapOrarendiOrakoListToOsztalyokGridModelList(orarendiOrak).ToDataSourceResult();
}
public DataSourceResult GetModositasGrid(DateTime start, DateTime end, int hanyadikora)
{
var helper = new OrarendiOraHelper(ConnectionTypeExtensions.GetSessionConnectionType());
IList<AdminKozpontiOrakOrarendiOraCo> orarendiOrak = helper.GetGroupedKozpontiOrakForSpecificTime(start.ToLocalTime(), end.ToLocalTime(), start.ToLocalTime(), end.ToLocalTime(), hanyadikora);
return AdminKozpontiOrakOsztalyokGridModel.MapOrarendiOrakoListToOsztalyokGridModelList(orarendiOrak).ToDataSourceResult();
}
public DataSourceResult GetModositasDetailsGrid(DateTime start, DateTime end, int hanyadikOra, Guid kozpontiOraId)
{
var helper = new OrarendiOraHelper(ConnectionTypeExtensions.GetSessionConnectionType());
IList<AdminKozpontiOrakOrarendiOraCo> orarendiOrak = helper.GetOrarendiOrakForSpecificTime(start.ToLocalTime(), end.ToLocalTime(), start.ToLocalTime(), end.ToLocalTime(), hanyadikOra, true, kozpontiOraId);
return AdminKozpontiOrakOsztalyokGridModel.MapOrarendiOrakoListToOsztalyokGridModelList(orarendiOrak).ToDataSourceResult();
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public HttpResponseMessage CreateKozpontiOra(AdminCreateKozpontiOrakModel model)
{
var kozpontiOraLogic = new AdminKozpontiOraLogic();
var validationResult = kozpontiOraLogic.CreateOraValidationCoListForKozpontiOrak(model.Start, model.End, model.HanyadikOra, model.KozpontiOrakRogzitesre, model.IsTeremutkozesFigyelese, out var kozpontiOrakList);
if (!validationResult.IsValid)
{
if (validationResult.HasTeremutkozes)
{
if (validationResult.TeremutkozesSystemSettingsValue == (int)TevekenysegUtkozesEnum.UtkozeskorFigyelmeztetes)
{
var jsonResult = JsonConvert.SerializeObject(new { isTeremutkozesConfirm = true });
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, jsonResult.ToString());
}
}
if (!model.OrarendiOrakTorlesre.Any())
{
var jsonResult = JsonConvert.SerializeObject(new { isTeremutkozesConfirm = false, errorMessage = !string.IsNullOrWhiteSpace(validationResult.ErrorMessage) ? validationResult.ErrorMessage : KozpontiOrakResource.AzIdopontraMarRogzitettekUgyanezenAdatokkalKozpontiOrat });
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, jsonResult.ToString());
}
}
var orarendiOraHelper = new OrarendiOraHelper(ConnectionTypeExtensions.GetSessionConnectionType());
var result = orarendiOraHelper.HandleSaveKozpontiOraRequest(model.Start.ToLocalTime(), model.OrarendiOrakTorlesre, kozpontiOrakList);
if (!result)
{
return Request.CreateResponse(HttpStatusCode.InternalServerError, false);
}
return Request.CreateResponse(HttpStatusCode.OK, true);
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public HttpResponseMessage DeleteKozpontiOra(AdminKozpontiOrakDeleteKozpontiOrakModel model)
{
var orarendiOraHelper = new OrarendiOraHelper(ConnectionTypeExtensions.GetSessionConnectionType());
orarendiOraHelper.DeletOrarendiOra(model.OrarendiOraId, (int)OraModositasiIdoszakTipus.EgyOra, DateTime.Now);
return Request.CreateResponse(HttpStatusCode.OK, true);
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public HttpResponseMessage DeleteAllKozpontiOraByGroupId(AdminKozpontiOrakDeleteKozpontiOrakModel model)
{
var orarendiOraHelper = new OrarendiOraHelper(ConnectionTypeExtensions.GetSessionConnectionType());
orarendiOraHelper.DeleteAllKozpontiOraByGroupId(model.KozpontiOraGroupId, model.Start.ToLocalTime(), model.End.ToLocalTime(), model.HanyadikOra);
var helper = new AdminKozpontiOrakHelper(ConnectionTypeExtensions.GetSessionConnectionType());
IList<AdminKozpontiOrakOrarendiOraCo> orarendiOrak = helper.GetToroltOrarendiOrakVisszaallitashoz(model.Start.ToLocalTime(), model.End.ToLocalTime(), model.HanyadikOra);
bool hasDeletedOrarendiOra = orarendiOrak.Any(i => i.KozpontilagToroltOraGroupId != null);
return Request.CreateResponse(HttpStatusCode.OK, hasDeletedOrarendiOra);
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public HttpResponseMessage DeleteOrarendiOrak(AdminKozpontiOrakOrarendiOrakIdList model)
{
var orarendiOraHelper = new OrarendiOraHelper(ConnectionTypeExtensions.GetSessionConnectionType());
var result = orarendiOraHelper.DeleteOrarendiOrakKozpontilag(model.OrarendiOrakIdList, model.Start.ToLocalTime());
if (!result)
{
return Request.CreateResponse(HttpStatusCode.InternalServerError, false);
}
return Request.CreateResponse(HttpStatusCode.OK, true);
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public HttpResponseMessage OrarendiOrakVisszaallitasa(AdminKozpontiOrakOrarendiOrakIdList model)
{
var kozpontiOraHelper = new AdminKozpontiOrakHelper(ConnectionTypeExtensions.GetSessionConnectionType());
kozpontiOraHelper.OrarendiOrakVisszaallitasa(model.OrarendiOrakIdList);
return Request.CreateResponse(HttpStatusCode.OK, true);
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public HttpResponseMessage OrarendiOrakVisszaallitasaValidacio(AdminKozpontiOrakOrarendiOrakIdList model)
{
var kozpontiOraHelper = new AdminKozpontiOrakHelper(ConnectionTypeExtensions.GetSessionConnectionType());
var result = kozpontiOraHelper.OrarendiOrakVisszaallitasaValidacio(model.OrarendiOrakIdList);
return Request.CreateResponse(HttpStatusCode.OK, result);
}
}
}

View file

@ -0,0 +1,153 @@
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;
using Kreta.BusinessLogic.Classes.ComboBox;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.BusinessLogic.Helpers;
using Kreta.BusinessLogic.Interfaces;
using Kreta.BusinessLogic.Logic.Mulasztas;
using Kreta.BusinessLogic.Security;
using Kreta.BusinessLogic.Utils;
using Kreta.Client.CoreApi;
using Kreta.Core.Exceptions;
using Kreta.Enums;
using Kreta.Framework;
using Kreta.Framework.Util;
using Kreta.Web.Helpers;
using Kreta.Web.Helpers.Error;
using Kreta.Web.Helpers.Grid;
using Kreta.Web.Security;
namespace Kreta.Web.Areas.Orarend.ApiControllers
{
[ApiRoleClaimsAuthorize(true)]
[ApiRolePackageAuthorize(KretaClaimPackages.Adminisztrator.ClaimValue)]
public class AdminNaploEllenorzesApiController : ApiController
{
private readonly IFileServiceHelper fileServiceHelper;
private readonly ICoreApiClient coreApiClient;
public AdminNaploEllenorzesApiController(IFileServiceHelper fileServiceHelper, ICoreApiClient coreApiClient)
{
this.fileServiceHelper = fileServiceHelper ?? throw new ArgumentNullException(nameof(fileServiceHelper));
this.coreApiClient = coreApiClient ?? throw new ArgumentNullException(nameof(coreApiClient));
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public HttpResponseMessage UpdateNemMegtartott(int id, DateTime oraKezdete, DateTime oraVege)
{
var helper = new OrarendiOraHelper(ConnectionTypeExtensions.GetSessionConnectionType());
var helperCo = helper.GetOrarendiOraById(id);
var co = new TanoraCO();
co.Targy = helperCo.TantargyId;
co.Terem = helperCo.TeremID;
co.IsTanoranKivuli = helperCo.TanoranKivuliFoglalkozas;
co.Sorszamozando = false;
co.OrarendiOra = helperCo.ID;
co.OsztCsop = helperCo.OsztalyCsoportId;
co.Tanar = helperCo.TanarId;
co.OraKezd = oraKezdete;
co.OraVeg = oraVege;
co.Oraszam = helperCo.Oraszam;
co.EvesOraSorszam = null;
co.Megtartott = false;
co.Tulaj = helperCo.TanarId;
co.HetNapja = helperCo.HetNapja;
co.CsengetesiRendID = helperCo.CsengetesiRendID;
co.AdminAltalKiirt = true;
co.Datum = co.OraKezd.Date;
var thelper = new TanoraHelper(ConnectionTypeExtensions.GetSessionConnectionType());
thelper.TanoraNaplozas(co, mulasztasCo: null, fileServiceHelper, coreApiClient);
return new HttpResponseMessage(HttpStatusCode.OK);
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public HttpResponseMessage DeleteNaplozas(int id)
{
try
{
var helper = new TanoraHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType());
helper.NaplozasTorlese(id, true);
}
catch (BlException e)
{
throw new StatusError(HttpStatusCode.BadRequest, e.Message) { UnHandledException = e };
}
return new HttpResponseMessage(HttpStatusCode.OK);
}
public DataSourceResult GetMulasztasok(int osztalycsoportId, int tanoraId, DateTime oraKezdete, DateTime oraVege, int targyId, int tanarId, [ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] DataSourceRequest request)
{
return new MulasztasLogic(ConnectionTypeExtensions.GetSessionConnectionType()).GetMulasztasok(osztalycsoportId, tanoraId, oraKezdete, oraVege, targyId, tanarId, false).ToDataSourceResult();
}
private void SetMagantanuloFelmentett(DataSet ds)
{
foreach (DataRow item in ds.Tables[0].Rows)
{
if (SDAConvert.ToBoolean(item["IsMagantanulo_BOOL"]))
{
item["OraMentesseg"] = "T";
item["OraMentesseg_BOOL"] = true;
item["Oka"] = StringResourcesUtil.GetString(387); /*Magántanuló*/
}
}
}
public JsonResult<List<ComboBoxListItem>> GetTanarList()
{
var connectionType = ConnectionTypeExtensions.GetSessionConnectionType();
var felhasznalokOnlyAlkalmazottSzerepkorIds = new FelhasznaloHelper(connectionType).GetFelhasznaloIdsOnlyAlkalmazottSzerepkor();
IDictionary<string, string> lista;
var helper = new TanarHelper(connectionType);
lista = helper.GetTanarok(string.Empty, oktatasiAzonositoval: true);
lista.Remove("");
return Json(lista.ToComboBoxItemList().Where(x => !felhasznalokOnlyAlkalmazottSzerepkorIds.Contains(SDAConvert.ToInt32(x.Value))).ToList());
}
public JsonResult<List<ComboBoxListItem>> GetHelyettesitesTipus()
{
var data = FrameworkEnumExtensions.EnumToList((int)GeneratedAdatszotarTipusEnum.HelyettesitesTipus, ClaimData.SelectedTanevID.Value, false);
return Json(data.ToComboBoxItemList());
}
public JsonResult<List<ComboBoxListItem>> GetTema(int osztcsop, int targy)
{
var helper = new TanoraHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType());
var list = helper.GetTemaIdAndNameForNaplozasDDL(targy, osztcsop).ToComboBoxItemList();
return Json(list);
}
public List<System.Web.Mvc.SelectListItem> GetTanarListItems()
{
IDictionary<string, string> list;
var helper = new TanarHelper(ConnectionTypeExtensions.GetSessionConnectionType());
list = helper.GetTanarok(string.Empty, oktatasiAzonositoval: false);
list.Remove("");
return list.ToSelectListItemList();
}
}
}

View file

@ -0,0 +1,97 @@
using System;
using System.Collections.Generic;
using System.Net;
using System.Net.Http;
using System.Web.Http;
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.Orarend.Logic;
using Kreta.Web.Areas.Orarend.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.Orarend.ApiControllers
{
[ApiRoleClaimsAuthorize(true)]
[ApiRolePackageAuthorize(KretaClaimPackages.Adminisztrator.ClaimValue)]
public class AdminNemElerhetoOrarendiElemekApiController : ApiController
{
public DataSourceResult GetNemElerhetoOrarendiElemekGrid(string data, DataSourceRequest request)
{
var (gridParameter, modelList) = GetGridData(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<AdminNemElerhetoOrarendiElemGridModel>(AdminNemElerhetoOrarendiElemGridModel.NemElerhetoOrarendiElemExportAttributeId);
var memoryStream = SimpleExportLogic.GetExport(OrarendResource.ExportSheetName, simpleExportColumnCos, modelList, ClaimData.SelectedTanevID.Value);
return HttpResponseExtensions.GetFileHttpResponse(memoryStream.ToArray(), $"{OrarendResource.NemElerhetoOrarendiElemek_Export}_{DateTime.Now:yyyy_MM_dd}.xlsx");
}
catch (Exception ex)
{
throw new StatusError(HttpStatusCode.BadRequest, ErrorResource.HibaTortentAFajlExportalasaKozben) { UnHandledException = ex };
}
}
private (GridParameters gridParameter, List<AdminNemElerhetoOrarendiElemGridModel> modelList) GetGridData(string data, DataSourceRequest request)
{
var model = JsonConvert.DeserializeObject<AdminNemElerhetoOrarendiElemSearchModel>(data);
var gridParameter = Converter.GridParameter(request);
var coList = new OrarendiOraHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetNemElerhetoOrarendiElemekCoList(model.ConvertToCo());
var modelList = new List<AdminNemElerhetoOrarendiElemGridModel>();
foreach (var co in coList)
{
var gridModel = new AdminNemElerhetoOrarendiElemGridModel(co);
modelList.Add(gridModel);
}
return (gridParameter, modelList);
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public bool DeleteOrarendiElem(int orarendiOraId)
{
try
{
var orarendiOraHelper = new OrarendiOraHelper(ConnectionTypeExtensions.GetSessionConnectionType());
orarendiOraHelper.DeleteOrarendiElem(orarendiOraId);
return true;
}
catch
{
throw new StatusError(HttpStatusCode.BadRequest, ErrorResource.HibaTortentAMuveletSoran);
}
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public int DeleteOrarendiOraSelectedElem(List<int> orarendiOraIdList)
{
return AdminNemElerhetoOrarendiElemekLogic.DeleteSelectedOrarendiOra(orarendiOraIdList);
}
}
}

View file

@ -0,0 +1,72 @@
using System;
using System.Collections.Generic;
using System.Net;
using System.Net.Http;
using System.Web.Http;
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.Orarend.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.Orarend.ApiControllers
{
[ApiRoleClaimsAuthorize(true)]
[ApiRolePackageAuthorize(KretaClaimPackages.Adminisztrator.ClaimValue)]
public class AdminNemNaplozottTanorakApiController : ApiController
{
public DataSourceResult GetNemNaplozottTanorakGrid(string data, DataSourceRequest request)
{
var (gridParameter, modelList) = GetGridData(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<NemNaplozottTanorakGridModel>(NemNaplozottTanorakGridModel.NemNaplozottTanorakExportAttributeId);
var memoryStream = SimpleExportLogic.GetExport(NemNaplozottTanorakResource.ExportSheetName, simpleExportColumnCos, modelList, ClaimData.SelectedTanevID.Value);
return HttpResponseExtensions.GetFileHttpResponse(memoryStream.ToArray(), NemNaplozottTanorakResource.ExportFileName);
}
catch (Exception ex)
{
throw new StatusError(HttpStatusCode.BadRequest, ErrorResource.HibaTortentAFajlExportalasaKozben) { UnHandledException = ex };
}
}
private (GridParameters gridParameter, List<NemNaplozottTanorakGridModel> modelList) GetGridData(string data, DataSourceRequest request)
{
var model = JsonConvert.DeserializeObject<NemNaplozottTanorakSearchModel>(data);
var gridParameter = Converter.GridParameter(request);
var coList = new OrarendHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetNemNaplozottOrarendiOraCoList(NemNaplozottTanorakSearchModel.ConvertModelToCo(model));
var modelList = new List<NemNaplozottTanorakGridModel>();
foreach (var co in coList)
{
var gridModel = new NemNaplozottTanorakGridModel(co);
modelList.Add(gridModel);
}
return (gridParameter, modelList);
}
}
}

View file

@ -0,0 +1,12 @@
using Kreta.BusinessLogic.Security;
using Kreta.Web.Security;
namespace Kreta.Web.Areas.Orarend.ApiControllers
{
[ApiRoleClaimsAuthorize(true)]
[ApiRolePackageAuthorize(KretaClaimPackages.Adminisztrator.ClaimValue)]
public class AdminOsztalyOrarendApiController : BaseAdminOsztalyOrarendApiController
{
}
}

View file

@ -0,0 +1,202 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using System.Web.Http.Results;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.BusinessLogic.Helpers;
using Kreta.BusinessLogic.Security;
using Kreta.Core;
using Kreta.Core.Exceptions;
using Kreta.Enums;
using Kreta.Enums.ManualEnums;
using Kreta.Framework.Util;
using Kreta.Resources;
using Kreta.Web.Areas.Orarend.Logic;
using Kreta.Web.Areas.Orarend.Models;
using Kreta.Web.Helpers;
using Kreta.Web.Helpers.Error;
using Kreta.Web.Security;
namespace Kreta.Web.Areas.Orarend.ApiControllers
{
[ApiRoleClaimsAuthorize(true)]
[ApiRolePackageAuthorize(KretaClaimPackages.Adminisztrator.ClaimValue)]
public class AdminTanariOrarendApiController : BaseAdminTanariOrarendApiController
{
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public HttpResponseMessage SaveNemKotottMunkaIdo(NemKotottMunkaidoModel model)
{
if (ModelState.IsValid)
{
try
{
model.Kezdet = OrarendiOraLogic.CreateLocalDateTimeBasedOnDateAndTime(model.Datum.Value, model.Kezdet.Value);
model.Veg = OrarendiOraLogic.CreateLocalDateTimeBasedOnDateAndTime(model.Datum.Value, model.Veg.Value);
var customModelState = NemKotottMunkaidoLogic.CheckCustomValidation(ModelState, model);
if (!customModelState.IsValid)
{
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, customModelState);
}
TanevCO tanevCO;
TanevHelper tanevHelper = new TanevHelper(ConnectionTypeExtensions.GetSessionConnectionType());
tanevCO = tanevHelper.GetTanevInfo();
NemKotottMunkaidoCO co = NemKotottMunkaidoLogic.ConvertModelToCO(model);
NemKotottMunkaidoHelper helper = new NemKotottMunkaidoHelper(ConnectionTypeExtensions.GetSessionConnectionType());
if (model.Id.HasValue && model.Id > 0)
{
var lista = new List<int>();
switch (model.ModositasiIdoszakTipus)
{
case (int)OraModositasiIdoszakTipus.TeljesIdoszak:
helper.UpdateNemKotottMunkaIdoByGroupId(co, tanevCO.OraFelvetelKezdete + co.Kezdete.TimeOfDay, tanevCO.UtolsoTanitasiNap + co.Vege.TimeOfDay);
break;
case (int)OraModositasiIdoszakTipus.AdottNaptol:
helper.UpdateNemKotottMunkaIdoByGroupId(co, co.Kezdete, tanevCO.UtolsoTanitasiNap + co.Vege.TimeOfDay, Guid.NewGuid().ToString());
break;
case (int)OraModositasiIdoszakTipus.AdottNapig:
helper.UpdateNemKotottMunkaIdoByGroupId(co, tanevCO.OraFelvetelKezdete + co.Kezdete.TimeOfDay, co.Vege, Guid.NewGuid().ToString());
break;
case (int)OraModositasiIdoszakTipus.EgyOra:
helper.UpdateNemKotottMunkaIdoByGroupId(co, co.Kezdete, co.Vege, Guid.NewGuid().ToString());
break;
default:
break;
}
}
else
{
co.GroupId = Guid.NewGuid().ToString();
var lista = new List<DateTime>();
switch (model.ModositasiIdoszakTipus)
{
case (int)OraModositasiIdoszakTipus.TeljesIdoszak:
lista = helper.GetNapokForNemKotottMunkaidoInsert(tanevCO.OraFelvetelKezdete, tanevCO.UtolsoTanitasiNap, co.Kezdete.Date, co.HetirendId);
break;
case (int)OraModositasiIdoszakTipus.AdottNaptol:
lista = helper.GetNapokForNemKotottMunkaidoInsert(co.Kezdete.Date, tanevCO.UtolsoTanitasiNap, co.Kezdete.Date, co.HetirendId);
break;
case (int)OraModositasiIdoszakTipus.AdottNapig:
lista = helper.GetNapokForNemKotottMunkaidoInsert(tanevCO.OraFelvetelKezdete, co.Kezdete.Date, co.Kezdete.Date, co.HetirendId);
break;
case (int)OraModositasiIdoszakTipus.EgyOra:
helper.Insert(co);
break;
default:
break;
}
foreach (var item in lista)
{
co.Kezdete = item.AddHours(co.Kezdete.Hour).AddMinutes(co.Kezdete.Minute);
co.Vege = item.AddHours(co.Vege.Hour).AddMinutes(co.Vege.Minute);
helper.Insert(co);
}
}
return new HttpResponseMessage(HttpStatusCode.OK);
}
catch (BlException ex)
{
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex.Message);
}
}
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public IHttpActionResult UtkozesValidateNemKotottMunkaido(NemKotottMunkaidoModel model)
{
var hasUtkozes = Logic.NemKotottMunkaidoLogic.CheckUtkozesValidation(model);
int tevekenysegutkozesSystemSetting = Logic.NemKotottMunkaidoLogic.GetTevekenysegUtkozesSystemSetting();
if (tevekenysegutkozesSystemSetting != (int)TevekenysegUtkozesEnum.UtkozesMegengedett && hasUtkozes)
{
if (tevekenysegutkozesSystemSetting == (int)TevekenysegUtkozesEnum.UtkozesNemLehetseges)
{
throw new StatusError(HttpStatusCode.BadRequest, OrarendResource.NemKotottMunkaidoFelviteleNemLehetsegesUtkozesMiatt);
}
return Json(new { Valid = false, Text = string.Format(OrarendResource.NemKotottMunkaidoFelviteleNemLehetsegesUtkozesMiattKerdes) });
}
return Json(new { Valid = true, Text = string.Empty });
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public IHttpActionResult TorlesValidateNemKotottMunkaido(NemKotottMunkaidoModel model)
{
var naplozottNemkotottMunkaidoSzam = NemKotottMunkaidoLogic.GetNaplozottNemkotottMunkaidoSzamByGroupId(model);
if (naplozottNemkotottMunkaidoSzam > 0)
{
return Json(new { Valid = false, Text = string.Format(OrarendResource.AMuveletSoran0DarabNaplozottNemkotottMunkaido, naplozottNemkotottMunkaidoSzam) });
}
return Json(new { Valid = true, Text = string.Empty });
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public HttpResponseMessage DeleteNemKotottMunkaIdo(NemKotottMunkaidoModel model)
{
TanevCO tanevCO;
TanevHelper tanevHelper = new TanevHelper(ConnectionTypeExtensions.GetSessionConnectionType());
tanevCO = tanevHelper.GetTanevInfo();
model.Kezdet = OrarendiOraLogic.CreateLocalDateTimeBasedOnDateAndTime(model.Datum.Value, model.Kezdet.Value);
model.Veg = OrarendiOraLogic.CreateLocalDateTimeBasedOnDateAndTime(model.Datum.Value, model.Veg.Value);
NemKotottMunkaidoHelper helper = new NemKotottMunkaidoHelper(ConnectionTypeExtensions.GetSessionConnectionType());
List<int> lista = new List<int>();
switch (model.ModositasiIdoszakTipus)
{
case (int)OraModositasiIdoszakTipus.TeljesIdoszak:
lista = helper.GetNapokForNemKotottMunkaidoDelete(tanevCO.OraFelvetelKezdete, tanevCO.UtolsoTanitasiNap, model.GroupId);
break;
case (int)OraModositasiIdoszakTipus.AdottNaptol:
lista = helper.GetNapokForNemKotottMunkaidoDelete(model.Kezdet.Value.Date, tanevCO.UtolsoTanitasiNap, model.GroupId);
break;
case (int)OraModositasiIdoszakTipus.AdottNapig:
lista = helper.GetNapokForNemKotottMunkaidoDelete(tanevCO.OraFelvetelKezdete, model.Kezdet.Value.AddDays(1).Date, model.GroupId);
break;
case (int)OraModositasiIdoszakTipus.EgyOra:
helper.Delete(model.Id.Value, isAdmin: true);
break;
default:
break;
}
foreach (var item in lista)
{
helper.Delete(item, isAdmin: true);
}
return new HttpResponseMessage(HttpStatusCode.OK);
}
public bool IsTanevRendEsemenyNemKotottMunkaido(CalendarModel model)
{
var helper = new TanevrendHelper(ConnectionTypeExtensions.GetSessionConnectionType());
return helper.GetVanTanevRendjeEsemenyNemKotottMunkaido(model.Start, model.End);
}
[HttpGet]
public bool EnabledNemKotottMunkaidoRogzitese(DateTime date)
{
var tanevrendHelper = new TanevrendHelper(ConnectionTypeExtensions.GetSessionConnectionType());
bool enabledNemKotottMunkaidoRogzitese = tanevrendHelper.EnabledNemKotottMunkaidoRogzitese(date);
return enabledNemKotottMunkaidoRogzitese;
}
}
}

View file

@ -0,0 +1,11 @@
using Kreta.BusinessLogic.Security;
using Kreta.Web.Security;
namespace Kreta.Web.Areas.Orarend.ApiControllers
{
[ApiRoleClaimsAuthorize(true)]
[ApiRolePackageAuthorize(KretaClaimPackages.Adminisztrator.ClaimValue)]
public class AdminTeremOrarendApiController : BaseAdminTeremOrarendApiController
{
}
}

View file

@ -0,0 +1,155 @@
using System;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using Kreta.BusinessLogic.Helpers;
using Kreta.Core.Exceptions;
using Kreta.Enums.ManualEnums;
using Kreta.Framework;
using Kreta.Resources;
using Kreta.Web.Areas.Orarend.Logic;
using Kreta.Web.Areas.Orarend.Models;
using Kreta.Web.Helpers;
using Kreta.Web.Helpers.Error;
using Kreta.Web.Security;
namespace Kreta.Web.Areas.Orarend.ApiControllers
{
public class BaseAdminOsztalyOrarendApiController : ApiController
{
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public HttpResponseMessage SaveOrarendiOra(OrarendiOraModel model)
{
if (!ModelState.IsValid)
{
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
}
OrarendiOraLogic.SetOraKezdetekAndOraVegek(model);
var customModelState = OrarendiOraLogic.CheckCustomValidation(ModelState, model);
if (!customModelState.IsValid)
{
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, customModelState);
}
try
{
var orarendiOraHelper = new OrarendiOraHelper(ConnectionTypeExtensions.GetSessionConnectionType());
orarendiOraHelper.CheckUtkozesValidationAndSaveOrUpdateOrarendiOrak(OrarendiOraLogic.SetOraValidationCoFromOrarendiOraModel(model), ClaimData.FelhasznaloId);
return new HttpResponseMessage(HttpStatusCode.OK);
}
catch (BlException ex)
{
throw new StatusError(HttpStatusCode.BadRequest, ex.Message);
}
throw new StatusError(HttpStatusCode.BadRequest, OrarendResource.AzOrarendiOratNemLehetModositaniMertMarTartozikHozzaNaplozottOra);
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public HttpResponseMessage PreValidationOrarendiOra(OrarendiOraModel model)
{
if (!ModelState.IsValid)
{
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
}
OrarendiOraLogic.SetOraKezdetekAndOraVegek(model);
var customModelState = OrarendiOraLogic.CheckCustomValidation(ModelState, model);
if (!customModelState.IsValid)
{
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, customModelState);
}
var utkozesValidationMsg = OrarendiOraLogic.CheckUtkozesValidation(OrarendiOraLogic.SetOraValidationCoFromOrarendiOraModel(model), !model.ID.HasValue ? "OrarendiOrak.Save();" : "OrarendiOrak.ModConfirmSave();", isPrevalidation: true);
if (utkozesValidationMsg.ErrorMsg.Length > 0)
{
throw new StatusError(HttpStatusCode.BadRequest, utkozesValidationMsg.ErrorMsg);
}
if (utkozesValidationMsg.Msg.Length > 0)
{
throw new StatusError(CustomHTTPStatusEnum.WarningMegszakitas, string.Empty) { Json = utkozesValidationMsg };
}
return new HttpResponseMessage(HttpStatusCode.OK);
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public bool HasHazifeladatOrHelyettesitesOrSzamonkeresForOrarendiOra(OrarendiOraModel model)
{
model.OraKezdete = OrarendiOraLogic.CreateLocalDateTimeBasedOnDateAndTime(model.OraErvenyessegVege.Value, model.OraKezdete.Value);
model.OraVege = OrarendiOraLogic.CreateLocalDateTimeBasedOnDateAndTime(model.OraErvenyessegVege.Value, model.OraVege.Value);
return new OrarendiOraHelper(ConnectionTypeExtensions.GetSessionConnectionType()).HasHazifeladatOrHelyettesitesOrSzamonkeresForOrarendiOra(OrarendiOraLogic.SetOraValidationCoFromOrarendiOraModel(model));
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public bool HasHazifeladatOrHelyettesitesOrSzamonkeresNotInIdoszak(OrarendiOraModel model)
{
model.OraKezdete = OrarendiOraLogic.CreateLocalDateTimeBasedOnDateAndTime(model.OraErvenyessegVege.Value, model.OraKezdete.Value);
model.OraVege = OrarendiOraLogic.CreateLocalDateTimeBasedOnDateAndTime(model.OraErvenyessegVege.Value, model.OraVege.Value);
return new OrarendiOraHelper(ConnectionTypeExtensions.GetSessionConnectionType()).HasHazifeladatOrHelyettesitesOrSzamonkeresNotInIdoszak(OrarendiOraLogic.SetOraValidationCoFromOrarendiOraModel(model));
}
[HttpGet]
public bool IsOrarendiNap(DateTime date)
{
var tanevrendHelper = new TanevrendHelper(ConnectionTypeExtensions.GetSessionConnectionType());
bool isOrarendiNap = tanevrendHelper.IsOrarendiNap(date, null);
return isOrarendiNap;
}
[HttpGet]
public bool HasTanitasiNap(DateTime date)
{
var tanevrendHelper = new TanevrendHelper(ConnectionTypeExtensions.GetSessionConnectionType());
bool isOrarendiNap = tanevrendHelper.IsOrarendiNap(date, null);
if (isOrarendiNap)
{
return true;
}
return tanevrendHelper.HasTanitasiNap(date);
}
[HttpGet]
public int GetOsztalyCsoportTerem(int? osztalyCsoportId)
{
if (osztalyCsoportId > 0)
{
return new OsztalyCsoportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetOsztalyCsoportTeremId(osztalyCsoportId.Value);
}
return 0;
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public HttpResponseMessage DeleteOrarendiOra(OrarendiOraModel model)
{
var orarendiOraHelper = new OrarendiOraHelper(ConnectionTypeExtensions.GetSessionConnectionType());
bool torlesSikeres = orarendiOraHelper.DeletOrarendiOra(model.ID.Value, model.ModositasiIdoszakTipus, model.ModificationDate);
if (torlesSikeres)
{
return new HttpResponseMessage(HttpStatusCode.OK);
}
throw new StatusError(HttpStatusCode.BadRequest, StringResourcesUtil.GetString(4519));
}
}
}

View file

@ -0,0 +1,199 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using System.Web.Http.Results;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.BusinessLogic.Helpers;
using Kreta.BusinessLogic.Security;
using Kreta.Core;
using Kreta.Core.Exceptions;
using Kreta.Enums;
using Kreta.Enums.ManualEnums;
using Kreta.Framework.Util;
using Kreta.Resources;
using Kreta.Web.Areas.Orarend.Logic;
using Kreta.Web.Areas.Orarend.Models;
using Kreta.Web.Helpers;
using Kreta.Web.Helpers.Error;
using Kreta.Web.Security;
namespace Kreta.Web.Areas.Orarend.ApiControllers
{
public class BaseAdminTanariOrarendApiController : ApiController
{
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public HttpResponseMessage SaveOrarendiOra(OrarendiOraModel model)
{
if (!ModelState.IsValid)
{
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
}
OrarendiOraLogic.SetOraKezdetekAndOraVegek(model);
var customModelState = OrarendiOraLogic.CheckCustomValidation(ModelState, model);
if (!customModelState.IsValid)
{
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, customModelState);
}
try
{
var orarendiOraHelper = new OrarendiOraHelper(ConnectionTypeExtensions.GetSessionConnectionType());
orarendiOraHelper.CheckUtkozesValidationAndSaveOrUpdateOrarendiOrak(OrarendiOraLogic.SetOraValidationCoFromOrarendiOraModel(model), ClaimData.FelhasznaloId);
return new HttpResponseMessage(HttpStatusCode.OK);
}
catch (BlException ex)
{
throw new StatusError(HttpStatusCode.BadRequest, ex.Message);
}
throw new StatusError(HttpStatusCode.BadRequest, OrarendResource.AzOrarendiOratNemLehetModositaniMertMarTartozikHozzaNaplozottOra);
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public HttpResponseMessage PreValidationOrarendiOra(OrarendiOraModel model)
{
if (!ModelState.IsValid)
{
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
}
OrarendiOraLogic.SetOraKezdetekAndOraVegek(model);
var customModelState = OrarendiOraLogic.CheckCustomValidation(ModelState, model);
if (!customModelState.IsValid)
{
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, customModelState);
}
var utkozesValidationMsg = OrarendiOraLogic.CheckUtkozesValidation(OrarendiOraLogic.SetOraValidationCoFromOrarendiOraModel(model), !model.ID.HasValue ? "OrarendiOrak.Save();" : "OrarendiOrak.ModConfirmSave();", isPrevalidation: true);
if (utkozesValidationMsg.ErrorMsg.Length > 0)
{
throw new StatusError(HttpStatusCode.BadRequest, utkozesValidationMsg.ErrorMsg);
}
if (utkozesValidationMsg.Msg.Length > 0)
{
throw new StatusError(CustomHTTPStatusEnum.WarningMegszakitas, string.Empty) { Json = utkozesValidationMsg };
}
return new HttpResponseMessage(HttpStatusCode.OK);
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public HttpResponseMessage PreValidationDeleteOrarendiOra(OrarendiOraModel model)
{
OrarendiOraLogic.SetOraKezdetekAndOraVegek(model);
var utkozesValidationMsg = OrarendiOraLogic.CheckUtkozesValidation(OrarendiOraLogic.SetOraValidationCoFromOrarendiOraModel(model), "OrarendiOrak.deleteOrarendiOra();", isPrevalidation: true, isForDelete: true);
if (utkozesValidationMsg.Msg.Length > 0)
{
throw new StatusError(CustomHTTPStatusEnum.WarningMegszakitas, string.Empty) { Json = utkozesValidationMsg };
}
return new HttpResponseMessage(HttpStatusCode.OK);
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public HttpResponseMessage DeleteOrarendiOra(OrarendiOraModel model)
{
var orarendiOraHelper = new OrarendiOraHelper(ConnectionTypeExtensions.GetSessionConnectionType());
bool torlesSikeres = orarendiOraHelper.DeletOrarendiOra(model.ID.Value, model.ModositasiIdoszakTipus, model.ModificationDate);
if (torlesSikeres)
{
return new HttpResponseMessage(HttpStatusCode.OK);
}
throw new StatusError(HttpStatusCode.BadRequest, ErrorResource.OrarendiOraNemTorolhetoMivelATorlendoIdoszakbanMarVanNaplozottOra);
}
public int GetOraszam(int Id, CalendarOraTypeEnum calendarEnum)
{
var helper = new OrarendiOraHelper(ConnectionTypeExtensions.GetSessionConnectionType());
return helper.GetOraszamByOrarendiOra(Id, calendarEnum);
}
public string GetTanarokNeve(string id)
{
return int.TryParse(id, out int fID) && fID.IsEntityId()
? new FoglalkozasHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetTanarokTanoranKivuliFoglalkozashoz(fID)
: string.Empty;
}
[HttpGet]
public bool IsOrarendiNap(DateTime date)
{
var tanevrendHelper = new TanevrendHelper(ConnectionTypeExtensions.GetSessionConnectionType());
bool isOrarendiNap = tanevrendHelper.IsOrarendiNap(date, null);
return isOrarendiNap;
}
[HttpGet]
public bool HasTanitasiNap(DateTime date)
{
var tanevrendHelper = new TanevrendHelper(ConnectionTypeExtensions.GetSessionConnectionType());
bool isOrarendiNap = tanevrendHelper.IsOrarendiNap(date, null);
return isOrarendiNap || tanevrendHelper.HasTanitasiNap(date);
}
[HttpPost]
public JsonResult<OraCO> GetCsengetesiRendEsOrak(CsengetesiRendOraszamaModel csengetesiRend)
{
var helper = new CsengetesiRendHelper(ConnectionTypeExtensions.GetSessionConnectionType());
var data = helper.GetCsengetesiRendEsOrak(csengetesiRend.AktualisCsengetesiRendId, csengetesiRend.AktualisOraSzam).Tables[0].Rows;
var ora = new OraCO
{
Kezdete = data.Count > 0 ? data[0].Field<DateTime>("Kezdete").TimeOfDay : TimeSpan.Zero,
Vege = data.Count > 0 ? data[0].Field<DateTime>("Vege").TimeOfDay : TimeSpan.Zero
};
return Json(ora);
}
public List<System.Web.Mvc.SelectListItem> GetHetirendList()
{
var dictionary = FrameworkEnumExtensions.EnumToList((int)
GeneratedAdatszotarTipusEnum.HetiRendTipus, ClaimData.SelectedTanevID.Value, false);
List<System.Web.Mvc.SelectListItem> list = new List<System.Web.Mvc.SelectListItem>();
foreach (var item in dictionary)
{
System.Web.Mvc.SelectListItem sli = new System.Web.Mvc.SelectListItem() { Text = item.Value, Value = item.Key };
list.Add(sli);
}
return list;
}
[HttpGet]
public int GetOsztalyCsoportTerem(int? osztalyCsoportId)
{
if (osztalyCsoportId > 0)
{
return new OsztalyCsoportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetOsztalyCsoportTeremId(osztalyCsoportId.Value);
}
return 0;
}
}
}

View file

@ -0,0 +1,120 @@
using System;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using Kreta.BusinessLogic.Helpers;
using Kreta.Core.Exceptions;
using Kreta.Enums.ManualEnums;
using Kreta.Framework;
using Kreta.Resources;
using Kreta.Web.Areas.Orarend.Logic;
using Kreta.Web.Areas.Orarend.Models;
using Kreta.Web.Helpers;
using Kreta.Web.Helpers.Error;
using Kreta.Web.Security;
namespace Kreta.Web.Areas.Orarend.ApiControllers
{
public class BaseAdminTeremOrarendApiController : ApiController
{
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public HttpResponseMessage SaveOrarendiOra(OrarendiOraModel model)
{
if (!ModelState.IsValid)
{
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
}
OrarendiOraLogic.SetOraKezdetekAndOraVegek(model);
var customModelState = OrarendiOraLogic.CheckCustomValidation(ModelState, model);
if (!customModelState.IsValid)
{
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, customModelState);
}
try
{
var orarendiOraHelper = new OrarendiOraHelper(ConnectionTypeExtensions.GetSessionConnectionType());
orarendiOraHelper.CheckUtkozesValidationAndSaveOrUpdateOrarendiOrak(OrarendiOraLogic.SetOraValidationCoFromOrarendiOraModel(model), ClaimData.FelhasznaloId);
return new HttpResponseMessage(HttpStatusCode.OK);
}
catch (BlException ex)
{
throw new StatusError(HttpStatusCode.BadRequest, ex.Message);
}
throw new StatusError(HttpStatusCode.BadRequest, OrarendResource.AzOrarendiOratNemLehetModositaniMertMarTartozikHozzaNaplozottOra);
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public HttpResponseMessage PreValidationOrarendiOra(OrarendiOraModel model)
{
if (!ModelState.IsValid)
{
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
}
OrarendiOraLogic.SetOraKezdetekAndOraVegek(model);
var customModelState = OrarendiOraLogic.CheckCustomValidation(ModelState, model);
if (!customModelState.IsValid)
{
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, customModelState);
}
var utkozesValidationMsg = OrarendiOraLogic.CheckUtkozesValidation(OrarendiOraLogic.SetOraValidationCoFromOrarendiOraModel(model), !model.ID.HasValue ? "OrarendiOrak.Save();" : "OrarendiOrak.ModConfirmSave();", isPrevalidation: true);
if (utkozesValidationMsg.ErrorMsg.Length > 0)
{
throw new StatusError(HttpStatusCode.BadRequest, utkozesValidationMsg.ErrorMsg);
}
if (utkozesValidationMsg.Msg.Length > 0)
{
throw new StatusError(CustomHTTPStatusEnum.WarningMegszakitas, string.Empty) { Json = utkozesValidationMsg };
}
return new HttpResponseMessage(HttpStatusCode.OK);
}
[HttpGet]
public bool IsOrarendiNap(DateTime date)
{
var tanevrendHelper = new TanevrendHelper(ConnectionTypeExtensions.GetSessionConnectionType());
bool isOrarendiNap = tanevrendHelper.IsOrarendiNap(date, null);
return isOrarendiNap;
}
[HttpGet]
public bool HasTanitasiNap(DateTime date)
{
var tanevrendHelper = new TanevrendHelper(ConnectionTypeExtensions.GetSessionConnectionType());
bool isOrarendiNap = tanevrendHelper.IsOrarendiNap(date, null);
return isOrarendiNap || tanevrendHelper.HasTanitasiNap(date);
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public HttpResponseMessage DeleteOrarendiOra(OrarendiOraModel model)
{
var orarendiOraHelper = new OrarendiOraHelper(ConnectionTypeExtensions.GetSessionConnectionType());
bool torlesSikeres = orarendiOraHelper.DeletOrarendiOra(model.ID.Value, model.ModositasiIdoszakTipus, model.ModificationDate);
if (torlesSikeres)
{
return new HttpResponseMessage(HttpStatusCode.OK);
}
throw new StatusError(HttpStatusCode.BadRequest, StringResourcesUtil.GetString(4519));
}
}
}

View file

@ -0,0 +1,359 @@
using System;
using System.ComponentModel.DataAnnotations;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using Kreta.BusinessLogic.Classes;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.BusinessLogic.Helpers;
using Kreta.BusinessLogic.Helpers.SystemSettings;
using Kreta.BusinessLogic.Interfaces;
using Kreta.BusinessLogic.Logic.Naplozas;
using Kreta.BusinessLogic.Logic.Naplozas.Validacio;
using Kreta.Client.CoreApi;
using Kreta.Core.Exceptions;
using Kreta.Enums;
using Kreta.Enums.ManualEnums;
using Kreta.Framework;
using Kreta.Resources;
using Kreta.Web.Areas.Orarend.Models;
using Kreta.Web.Helpers;
using Kreta.Web.Helpers.Error;
using Kreta.Web.Security;
namespace Kreta.Web.Areas.Orarend.ApiControllers
{
public class BaseTanariOrarendApiController : ApiController
{
private IKretaAuthorization Authorization { get; }
private readonly IFileServiceHelper _fileServiceHelper;
private readonly ICoreApiClient _coreApiClient;
public BaseTanariOrarendApiController(IKretaAuthorization authorization, IFileServiceHelper fileServiceHelper, ICoreApiClient coreApiClient)
{
Authorization = authorization;
_fileServiceHelper = fileServiceHelper ?? throw new ArgumentNullException(nameof(fileServiceHelper));
_coreApiClient = coreApiClient ?? throw new ArgumentNullException(nameof(coreApiClient));
}
[NonAction]
public IHttpActionResult ValidateNaplozas(TanoraNaplozasRogzites model, int? szervezetTipusId = null)
{
if (model.MulasztasNaplozasRogzites.Tema == null)
{
return Json(new { ModelState = new { Tema = new[] { ErrorResource.OraTemajanakKivalasztasaVagyATemaMegadasaKotelezo } } });
}
var connectionType = ConnectionTypeExtensions.GetSessionConnectionType();
var naploValidacioParameters = new NaploValidacioParameters(model.TanoraMuveletek.CalendarModel.Start, connectionType, ClaimData.FelhasznaloSzerepkor);
var validator = new NaploValidacio(naploValidacioParameters);
var co = new NaplozasCo();
model.ConvertTo(co, model.TanoraMuveletek.NaplozasDatum);
co.SzervezetTipusId = szervezetTipusId;
var naplozasLogic = new NaplozasLogic(validator, co);
bool utkozik = false;
if (model.TanoraMuveletek.CalendarModel.EventType != EventTypeEnum.LetezoOraSzerkesztese)
{
utkozik = !co.OraAdat.OrarendiOraId.HasValue && naplozasLogic.TeremUtkozesEllenorzes();
}
var systemSettingsHelper = new SystemSettingsHelper(connectionType);
var teremHelper = new TeremHelper(connectionType);
if (!szervezetTipusId.HasValue)
{
if (IsTeremBefogadokepessegeKissebbMintAzOsztalyCsoportLetszama(systemSettingsHelper, teremHelper, model.TanoraAdatokRogzites.TeremId, model.MulasztasNaplozasRogzites.MulasztasList.Count))
{
if (utkozik)
{
return Json(new { Valid = false, Text = OrarendResource.TeremutkozesEsTeremBefogadokepessegeKisebb });
}
return Json(new { Valid = false, Text = OrarendResource.ATeremBefogadokepessegeKisebbMintAzOsztalyCsoportLetszamaSzeretneFolytatni });
}
}
if (naplozasLogic.GetModel.IsTanora && !model.TanoraMuveletek.CalendarModel.IsOraOsszevonas && model.TanoraMuveletek.CalendarModel.EventType != EventTypeEnum.LetezoOraSzerkesztese)
{
var osztalyVagyTanarOraiadottUtkozes = naplozasLogic.GetOsztalyEsTanarOraiUtkozes();
var tevekenysegUtkozes = systemSettingsHelper.GetSystemSettingValue<int>(RendszerBeallitasTipusEnum.Napirend_felvitelel_utkozes_figyeles);
switch ((TevekenysegUtkozesEnum)tevekenysegUtkozes)
{
case TevekenysegUtkozesEnum.UtkozesNemLehetseges: /*Ütközés nem lehetséges*/
if (!string.IsNullOrWhiteSpace(osztalyVagyTanarOraiadottUtkozes))
{
throw new StatusError(HttpStatusCode.BadRequest, string.Format(OrarendResource.TanoraFelviteleNemLehetsegesUtkozesMiatt, osztalyVagyTanarOraiadottUtkozes));
}
break;
case TevekenysegUtkozesEnum.UtkozeskorFigyelmeztetes: /*Figyelmeztetés*/
{
if (utkozik && !string.IsNullOrWhiteSpace(osztalyVagyTanarOraiadottUtkozes))
{
return Json(new { Valid = false, Text = string.Format(OrarendResource.TanoraFelviteleNemLehetsegesUtkozesMiattKerdes, OrarendResource.Teremutkozes, OrarendResource.OraUtkozes, osztalyVagyTanarOraiadottUtkozes) });
}
if (utkozik)
{
return Json(new { Valid = false, Text = string.Format(OrarendResource.TanoraFelviteleNemLehetsegesUtkozesMiattKerdes, OrarendResource.Teremutkozes, string.Empty, string.Empty) });
}
if (!string.IsNullOrWhiteSpace(osztalyVagyTanarOraiadottUtkozes))
{
return Json(new { Valid = false, Text = string.Format(OrarendResource.TanoraFelviteleNemLehetsegesUtkozesMiattKerdes, string.Empty, OrarendResource.OraUtkozes, osztalyVagyTanarOraiadottUtkozes)/*A naplózandó óra időtartamába egy már naplózott óra, vagy órarendi óra is beleesik, szeretné folytatni?*/ });
}
}
break;
case TevekenysegUtkozesEnum.UtkozesMegengedett: /*Ütközés lehetséges, nem kell a napirend miatt szólni*/
if (utkozik)
{
return Json(new { Valid = false, Text = StringResourcesUtil.GetString(4613)/*Terem ütközés lépett fel szeretné folytatni?*/ });
}
break;
}
}
return Json(new { Valid = true, Text = "" });
}
[NonAction]
public HttpResponseMessage SaveNaplozas(TanoraNaplozasRogzites model, int? szervezetTipusId = null)
{
var startDate = model.TanoraMuveletek.CalendarModel.Start;
model.TanoraAdatokRogzites.OraKezdete = new DateTime(startDate.Year, startDate.Month, startDate.Day, model.TanoraAdatokRogzites.OraKezdete.Hour, model.TanoraAdatokRogzites.OraKezdete.Minute, 0, DateTimeKind.Utc).ToLocalTime();
var endDdate = model.TanoraMuveletek.CalendarModel.End;
model.TanoraAdatokRogzites.OraVege = new DateTime(endDdate.Year, endDdate.Month, endDdate.Day, model.TanoraAdatokRogzites.OraVege.Hour, model.TanoraAdatokRogzites.OraVege.Minute, 0, DateTimeKind.Utc).ToLocalTime();
NaplozasResultCo saveResult = null;
if (!model.TanoraAdatokRogzites.IsMegtartott)
{
LicenceHelper.LicenceWait(ClaimData.LicenceDatum);
var res = SaveNemMegtartottNaplozas(model, szervezetTipusId);
return res;
}
if (!model.TanoraMuveletek.IsTanoranKivuli)
{
if (model.TanoraMuveletek.CalendarModel.OraType == CalendarOraTypeEnum.TanitasiOra
&& (!model.TanoraAdatokRogzites.CsengetesiRendID.HasValue || model.TanoraAdatokRogzites.CsengetesiRendID < 0))
{
var helper = new CsengetesiRendHelper(ConnectionTypeExtensions.GetSessionConnectionType());
model.TanoraAdatokRogzites.CsengetesiRendID = helper.GetAktivCsengetesiRendId();
}
if (!model.TanoraAdatokRogzites.CsengetesiRendID.HasValue || model.TanoraAdatokRogzites.CsengetesiRendID < 0)
{
ModelState.AddModelError(nameof(model.TanoraAdatokRogzites.CsengetesiRendID), OrarendResource.CsengetesiRendMegadasaKotelezo);
}
if (!model.TanoraAdatokRogzites.Oraszam.HasValue || model.TanoraAdatokRogzites.Oraszam < 0)
{
ModelState.AddModelError(nameof(model.TanoraAdatokRogzites.Oraszam), OrarendResource.OraszamMegadasaKotelezo);
}
if (model.TanoraAdatokRogzites.Oraszam.HasValue && model.TanoraAdatokRogzites.CsengetesiRendID.HasValue)
{
var (minOraszam, maxOraszam) = Logic.OrarendiOraLogic.GetMinMaxOraszam(model.TanoraAdatokRogzites.CsengetesiRendID.Value);
if (model.TanoraAdatokRogzites.Oraszam > maxOraszam || model.TanoraAdatokRogzites.Oraszam < minOraszam)
{
ModelState.AddModelError(nameof(model.TanoraAdatokRogzites.Oraszam), string.Format(OrarendResource.OraszamError, minOraszam.ToString(), maxOraszam.ToString()));
}
}
}
else
{
if (Logic.OrarendiOraLogic.CreateLocalDateTimeBasedOnDateAndTime(model.TanoraMuveletek.CalendarModel.Start, model.TanoraMuveletek.CalendarModel.Start).TimeOfDay >=
Logic.OrarendiOraLogic.CreateLocalDateTimeBasedOnDateAndTime(model.TanoraMuveletek.CalendarModel.End, model.TanoraMuveletek.CalendarModel.End).TimeOfDay)
{
ModelState.AddModelError(nameof(model.TanoraAdatokRogzites.OraVege), ErrorResource.NapirendKezdetiIdopontjaNemLehetKesobbMintAZaroIdopont);
}
}
if (model.MulasztasNaplozasRogzites.MulasztasList.Exists(x => x.MulasztasTipus == (int)MulasztasTipusEnum.keses && (x.Keses == null || x.Keses == 0)))
{
ModelState.AddModelError(string.Empty, ErrorResource.AKesesekHosszanakKitolteseKotelezo);
}
if (!model.MulasztasNaplozasRogzites.TemaTanmenetId.HasValue || (model.MulasztasNaplozasRogzites.TemaTanmenetId == -1))
{
if (string.IsNullOrWhiteSpace(model.MulasztasNaplozasRogzites.Tema))
{
ModelState.AddModelError(nameof(model.MulasztasNaplozasRogzites.Tema), ErrorResource.OraTemajanakKivalasztasaVagyATemaMegadasaKotelezo);
}
else if (model.MulasztasNaplozasRogzites.Tema.Length > 1000) /*db ben ez a max char jelenleg*/
{
ModelState.AddModelError(nameof(model.MulasztasNaplozasRogzites.Tema), ErrorResource.TemaTulHosszu);
}
}
if (!string.IsNullOrWhiteSpace(model.HaziFeladatNaplozasRogzites?.HaziFeladat) && model.HaziFeladatNaplozasRogzites?.Hatarido == null)
{
ModelState.AddModelError(nameof(model.HaziFeladatNaplozasRogzites.Hatarido), OrarendResource.HazifeladatHataridoKotelezo);
}
if (string.IsNullOrWhiteSpace(model.HaziFeladatNaplozasRogzites?.HaziFeladat) && model.HaziFeladatNaplozasRogzites?.Hatarido != null)
{
ModelState.AddModelError(nameof(model.HaziFeladatNaplozasRogzites.HaziFeladat), OrarendResource.HazifeladatSzovegKotelezo);
}
if (!string.IsNullOrWhiteSpace(model.TanoraAdatokRogzites.Megjegyzes) && model.TanoraAdatokRogzites.Megjegyzes.Length > 255)
{
ModelState.AddModelError(nameof(model.TanoraAdatokRogzites.Megjegyzes), ErrorResource.AMegjegyzesMax255KarakterLehet);
}
if (!ModelState.IsValid)
{
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
}
try
{
var naploValidacioParameters = new NaploValidacioParameters(model.TanoraMuveletek.CalendarModel.Start, ConnectionTypeExtensions.GetSessionConnectionType(), ClaimData.FelhasznaloSzerepkor);
var validator = new NaploValidacio(naploValidacioParameters);
var co = new NaplozasCo();
model.ConvertTo(co, model.TanoraMuveletek.NaplozasDatum);
co.SzervezetTipusId = szervezetTipusId;
var naplozasLogic = new NaplozasLogic(validator, co);
if (IsNaplozhatZarastolFuggetlenul(naplozasLogic.GetModel.OraAdat.OraKezdete.Date, naplozasLogic.GetModel.OraAdat.OsztalyCsoportId))
{
var orarendiOraHelper = new CsengetesiRendOrakHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType());
if (model.TanoraAdatokRogzites.CsengetesiRendID.HasValue && !model.TanoraMuveletek.IsTanoranKivuli)
{
var csengrendOraId = orarendiOraHelper.GetCsengetesiRendOraId(model.TanoraAdatokRogzites.CsengetesiRendID.Value, model.TanoraAdatokRogzites.Oraszam.Value);
if (!csengrendOraId.HasValue)
{
throw new KretaError(OrarendResource.CsengetesiRendhezNincsCsengetesiOra);
}
model.TanoraAdatokRogzites.CsengetesiRendOraId = csengrendOraId;
}
LicenceHelper.LicenceWait(ClaimData.LicenceDatum);
saveResult = naplozasLogic.SaveNaplozas(_fileServiceHelper, _coreApiClient);
}
}
catch (KretaError ke)
{
ModelState.AddModelError(ErrorResource.Hiba, ke.Message);
}
catch (ValidationException ve)
{
ModelState.AddModelError(ErrorResource.Hiba, ve.Message);
}
catch (BlException e)
{
throw new StatusError(HttpStatusCode.BadRequest, e.Message);
}
if (ModelState.IsValid)
{
ClaimData.NemNaplozottTanorakCount = ClaimData.SetNemNaplozottTanorakCount();
return Request.CreateResponse(HttpStatusCode.OK, new { saveResult.TanitasiOraId, saveResult.HazifeladatId, saveResult.DKTHiba });
}
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
}
[NonAction]
public HttpResponseMessage SaveNemMegtartottNaplozas(TanoraNaplozasRogzites model, int? szervezetTipusId = null)
{
if (ModelState.IsValid)
{
var naploValidacioParameters = new NaploValidacioParameters(model.TanoraMuveletek.CalendarModel.Start, ConnectionTypeExtensions.GetSessionConnectionType(), ClaimData.FelhasznaloSzerepkor);
var validator = new NaploValidacio(naploValidacioParameters);
var co = new NaplozasCo();
model.ConvertTo(co, model.TanoraMuveletek.NaplozasDatum);
var naplozasLogic = new NaplozasLogic(validator, co);
if (IsNaplozhatZarastolFuggetlenul(naplozasLogic.GetModel.OraAdat.OraKezdete.Date, naplozasLogic.GetModel.OraAdat.OsztalyCsoportId))
{
LicenceHelper.LicenceWait(ClaimData.LicenceDatum);
naplozasLogic.SaveNemMegtartottNaplozas(_fileServiceHelper, _coreApiClient);
}
ClaimData.NemNaplozottTanorakCount = ClaimData.SetNemNaplozottTanorakCount();
return new HttpResponseMessage(HttpStatusCode.OK);
}
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
}
[NonAction]
public IHttpActionResult DeleteTanora(TanoraMuveletek pram, int? szervezetTipusId = null)
{
if (!Authorization.IsValidTanitasiOra(pram.CalendarModel.EventId))
{
throw new StatusError(HttpStatusCode.Forbidden, ErrorResource.AFelhasznalonakNincsMegfeleloJogosultsagaAFunkcioHasznalatahoz);
}
try
{
LicenceHelper.LicenceWait(ClaimData.LicenceDatum);
var helper = new TanoraHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType());
helper.NaplozasTorlese(pram.CalendarModel.EventId, true);
ClaimData.NemNaplozottTanorakCount = ClaimData.SetNemNaplozottTanorakCount();
return Json(new { Title = CommonResource.Siker, Text = CommonResource.SikeresTorles });
}
catch (KretaError e)
{
return Json(new { Title = CommonResource.BiztosanTorli, Text = e.Message, TanoraId = pram.CalendarModel.EventId });
}
catch (KretaMissingTanoraException e)
{
throw new StatusError(HttpStatusCode.BadRequest, ErrorResource.HibaTortentAMuveletSoran) { UnHandledException = e };
}
catch (BlException e)
{
throw new StatusError(HttpStatusCode.BadRequest, e.Message) { UnHandledException = e };
}
catch (Exception ex)
{
throw new StatusError(HttpStatusCode.InternalServerError, ErrorResource.HibaTortentAMuveletSoran) { UnHandledException = ex };
}
}
public bool IsNaplozhatZarastolFuggetlenul(DateTime date, int? osztalyId)
{
var naplozarasLogic = new NaplozarasLogic(ConnectionTypeExtensions.GetSessionConnectionType());
return naplozarasLogic.IsNaplozhatZarastolFuggetlenul(date, osztalyId);
}
public int GetNemNaplozottTanorakCount()
{
return ClaimData.NemNaplozottTanorakCount;
}
private bool IsTeremBefogadokepessegeKissebbMintAzOsztalyCsoportLetszama(SystemSettingsHelper systemSettingsHelper, TeremHelper teremHelper, int? teremId, int mulasztasokSzama)
{
if (teremId.HasValue) //Terem befogadóképesség ellenőrzése kell
{
var naplozasTeremBefogadokepesseg = systemSettingsHelper.GetSystemSettingValue<bool>(RendszerBeallitasTipusEnum.Naplozas_terem_befogadokepesseg);
if (naplozasTeremBefogadokepesseg)
{
var teremKapacitas = teremHelper.GetTeremKapacitasById(teremId.Value);
if (teremKapacitas < mulasztasokSzama)
{
return true;
}
}
return false;
}
return false;
}
}
}

View file

@ -0,0 +1,13 @@
using Kreta.BusinessLogic.Security;
using Kreta.Web.Security;
namespace Kreta.Web.Areas.Orarend.ApiControllers
{
[ApiRoleClaimsAuthorize(true)]
[ApiRolePackageAuthorize(KretaClaimPackages.Adminisztrator.ClaimValue, KretaClaimPackages.Dualis_Admin.ClaimValue)]
[Attributes.KretaGlobalLanguageChangeActionFilter(LanguageCode = "hu-Dualis")]
public class DualisAdminOsztalyOrarendApiController : BaseAdminOsztalyOrarendApiController
{
}
}

View file

@ -0,0 +1,12 @@
using Kreta.BusinessLogic.Security;
using Kreta.Web.Security;
namespace Kreta.Web.Areas.Orarend.ApiControllers
{
[ApiRoleClaimsAuthorize(true)]
[ApiRolePackageAuthorize(KretaClaimPackages.Adminisztrator.ClaimValue, KretaClaimPackages.Dualis_Admin.ClaimValue)]
[Attributes.KretaGlobalLanguageChangeActionFilter(LanguageCode = "hu-Dualis")]
public class DualisAdminTanariOrarendApiController : BaseAdminTanariOrarendApiController
{
}
}

View file

@ -0,0 +1,12 @@
using Kreta.BusinessLogic.Security;
using Kreta.Web.Security;
namespace Kreta.Web.Areas.Orarend.ApiControllers
{
[ApiRoleClaimsAuthorize(true)]
[ApiRolePackageAuthorize(KretaClaimPackages.Adminisztrator.ClaimValue, KretaClaimPackages.Dualis_Admin.ClaimValue)]
[Attributes.KretaGlobalLanguageChangeActionFilter(LanguageCode = "hu-Dualis")]
public class DualisAdminTeremOrarendApiController : BaseAdminTeremOrarendApiController
{
}
}

View file

@ -0,0 +1,71 @@
using System;
using System.Net.Http;
using System.Web.Http;
using System.Web.Http.ModelBinding;
using Kendo.Mvc.UI;
using Kreta.BusinessLogic.Helpers;
using Kreta.BusinessLogic.Interfaces;
using Kreta.BusinessLogic.Logic.Mulasztas;
using Kreta.BusinessLogic.Security;
using Kreta.Client.CoreApi;
using Kreta.Enums.ManualEnums;
using Kreta.Web.Areas.Orarend.Models;
using Kreta.Web.Helpers;
using Kreta.Web.Helpers.Grid;
using Kreta.Web.Security;
namespace Kreta.Web.Areas.Orarend.ApiControllers
{
[ApiRoleClaimsAuthorize(true)]
[ApiRolePackageAuthorize(KretaClaimPackages.Naplo.ClaimValue)]
[Attributes.KretaGlobalLanguageChangeActionFilter(LanguageCode = "hu-Dualis")]
public class DualisTanariOrarendApiController : BaseTanariOrarendApiController
{
private IKretaAuthorization Authorization { get; }
private readonly IFileServiceHelper _fileServiceHelper;
private readonly ICoreApiClient _coreApiClient;
public bool IsDualisKepzesEnabled => new IntezmenyConfigHelper(ConnectionTypeExtensions.GetSystemConnectionType()).GetIntezmenyConfig<bool>(IntezmenyConfigModulEnum.DualisKepzes, IntezmenyConfigTipusEnum.IsEnabled);
public int? SzervezetId => IsDualisKepzesEnabled ? (int)SzervezetTipusEnum.Dualis : (int?)null;
public DualisTanariOrarendApiController(IKretaAuthorization authorization, IFileServiceHelper fileServiceHelper, ICoreApiClient coreApiClient) : base(authorization, fileServiceHelper, coreApiClient)
{
Authorization = authorization;
_fileServiceHelper = fileServiceHelper ?? throw new ArgumentNullException(nameof(fileServiceHelper));
_coreApiClient = coreApiClient ?? throw new ArgumentNullException(nameof(coreApiClient));
}
public DataSourceResult GetMulasztasokForDetail(int osztalycsoportId, int tanoraId, DateTime oraKezdete, DateTime oraVege, int targyId, int tanarId, bool hianyzokAutoKitoltes, [ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] DataSourceRequest request)
{
return new MulasztasLogic(ConnectionTypeExtensions.GetSessionConnectionType()).GetMulasztasok(osztalycsoportId, tanoraId, oraKezdete, oraVege, targyId, tanarId, hianyzokAutoKitoltes, IsDualisKepzesEnabled ? SzervezetTipusEnum.Dualis : (SzervezetTipusEnum?)null).ToDataSourceResult();
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public IHttpActionResult ValidateNaplozas(TanoraNaplozasRogzites model)
{
return ValidateNaplozas(model, SzervezetId);
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public HttpResponseMessage SaveNaplozas(TanoraNaplozasRogzites model)
{
return SaveNaplozas(model, SzervezetId);
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public HttpResponseMessage SaveNemMegtartottNaplozas(TanoraNaplozasRogzites model)
{
return SaveNemMegtartottNaplozas(model, SzervezetId);
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public IHttpActionResult DeleteTanora(TanoraMuveletek pram)
{
return DeleteTanora(pram, SzervezetId);
}
}
}

View file

@ -0,0 +1,262 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using Kendo.Mvc.UI;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.BusinessLogic.Helpers;
using Kreta.BusinessLogic.Interfaces;
using Kreta.BusinessLogic.Logic;
using Kreta.BusinessLogic.Security;
using Kreta.BusinessLogic.Utils;
using Kreta.Client.CoreApi;
using Kreta.Core;
using Kreta.Core.Exceptions;
using Kreta.Enums.ManualEnums;
using Kreta.Framework.Util;
using Kreta.Resources;
using Kreta.Web.Areas.Orarend.Models;
using Kreta.Web.Controllers;
using Kreta.Web.Helpers;
using Kreta.Web.Helpers.Error;
using Kreta.Web.Helpers.Grid;
using Kreta.Web.Security;
using Newtonsoft.Json;
using static Kreta.Core.Constants;
namespace Kreta.Web.Areas.Orarend.ApiControllers
{
[ApiRoleClaimsAuthorize(true)]
[ApiRolePackageAuthorize(KretaClaimPackages.Adminisztrator.ClaimValue, KretaClaimPackages.Osztalyfonok.ClaimValue, KretaClaimPackages.CsoportVezeto.ClaimValue, KretaClaimPackages.Naplo.ClaimValue)]
public class HazifeladatokListajaApiController : ApiController
{
private readonly IFileServiceHelper fileServiceHelper;
private readonly ICoreApiClient coreApiClient;
public HazifeladatokListajaApiController(IFileServiceHelper fileServiceHelper, ICoreApiClient coreApiClient)
{
this.fileServiceHelper = fileServiceHelper ?? throw new ArgumentNullException(nameof(fileServiceHelper));
this.coreApiClient = coreApiClient ?? throw new ArgumentNullException(nameof(coreApiClient));
}
public DataSourceResult GetHazifeladatokListajaGrid(string data, DataSourceRequest request)
{
var (gridParameter, modelList, isEmptyCoList) = GetGridData(data, request);
if (isEmptyCoList)
{
return new DataSourceResult();
}
return modelList.ToDataSourceResult(gridParameter);
}
public HttpResponseMessage GetExport(string data, DataSourceRequest request)
{
try
{
var (gridParameter, modelList, _) = GetGridData(data, request, General.MaxHazifeladatSzovegHossz);
modelList = modelList.SortingAndPaging(gridParameter.OrderDictionary);
var simpleExportColumnCos = SimpleExportLogic.GetSimpleExportColumnCos<HazifeladatokListajaGridModel>(HazifeladatokListajaGridModel.HazifeladatExportAttributeId);
var memoryStream = SimpleExportLogic.GetExport(OrarendResource.HazifeladatExportSheetName, simpleExportColumnCos, modelList, ClaimData.SelectedTanevID.Value);
return HttpResponseExtensions.GetFileHttpResponse(memoryStream.ToArray(), $"{OrarendResource.HazifeladatExportFileName}_{DateTime.Now:yyyy_MM_dd}.{Constants.ImportExport.FileFormatXlsx}");
}
catch (Exception ex)
{
throw new StatusError(HttpStatusCode.BadRequest, ErrorResource.HibaTortentAFajlExportalasaKozben) { UnHandledException = ex };
}
}
private (GridParameters gridParameter, List<HazifeladatokListajaGridModel> modelList, bool isEmptyCoList) GetGridData(string data, DataSourceRequest request, int? maxHazifeladatSzovegHossz = null)
{
var model = JsonConvert.DeserializeObject<HazifeladatokListajaSrcModel>(data);
var osztalyCsoportIds = new List<int>();
var isEmptyCoList = false;
if ((model.HazifeladatokListajaTipus == HazifeladatokListajaTipusEnum.Csopvez || model.HazifeladatokListajaTipus == HazifeladatokListajaTipusEnum.Ofo)
&& !model.OsztalyCsoportIdSrc.HasValue)
{
switch (model.HazifeladatokListajaTipus)
{
case HazifeladatokListajaTipusEnum.Csopvez:
osztalyCsoportIds.AddRange(new ComboBoxHelperApiController().GetCsoportVezListWithTanoraiCeluak().Content.Select(i => int.Parse(i.Value)));
break;
case HazifeladatokListajaTipusEnum.Ofo:
osztalyCsoportIds.AddRange(new ComboBoxHelperApiController().GetTanitottOsztalyokList().Content.Select(i => int.Parse(i.Value)));
break;
default:
break;
}
if (!osztalyCsoportIds.Any())
{
isEmptyCoList = true;
}
}
var gridParameter = Converter.GridParameter(request);
var coList = isEmptyCoList ? new List<HaziFeladatItemCo>() : new OrarendHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetHazifeladatCoList(model.ToCo(osztalyCsoportIds), maxHazifeladatSzovegHossz);
var modelList = new List<HazifeladatokListajaGridModel>();
foreach (var co in coList)
{
var gridModel = new HazifeladatokListajaGridModel(co);
modelList.Add(gridModel);
}
return (gridParameter, modelList, isEmptyCoList);
}
public DataSourceResult GetFeladatokListajaGrid(string data, DataSourceRequest request)
{
var (gridParameter, modelList, isEmptyCoList) = GetFeladatokGridData(data, request);
if (isEmptyCoList)
{
return new DataSourceResult();
}
return modelList.ToDataSourceResult(gridParameter);
}
public HttpResponseMessage GetFeladatokListajaExport(string data, DataSourceRequest request)
{
try
{
var (gridParameter, modelList, _) = GetFeladatokGridData(data, request, General.MaxHazifeladatSzovegHossz);
modelList = modelList.SortingAndPaging(gridParameter.OrderDictionary);
var simpleExportColumnCos = SimpleExportLogic.GetSimpleExportColumnCos<FeladatokListajaGridModel>(FeladatokListajaGridModel.HazifeladatExportAttributeId);
var memoryStream = SimpleExportLogic.GetExport(OrarendResource.FeladatokListajaExportSheetName, simpleExportColumnCos, modelList, ClaimData.SelectedTanevID.Value);
return HttpResponseExtensions.GetFileHttpResponse(memoryStream.ToArray(), OrarendResource.FeladatokListaja_export);
}
catch (Exception ex)
{
throw new StatusError(HttpStatusCode.BadRequest, ErrorResource.HibaTortentAFajlExportalasaKozben) { UnHandledException = ex };
}
}
private (GridParameters gridParameter, List<HazifeladatokListajaGridModel> modelList, bool isEmptyCoList) GetFeladatokGridData(string data, DataSourceRequest request, int? maxHazifeladatSzovegHossz = null)
{
var model = JsonConvert.DeserializeObject<FeladatokListajaSrcModel>(data);
var osztalyCsoportIds = new List<int>();
var isEmptyCoList = false;
if ((model.HazifeladatokListajaTipus == HazifeladatokListajaTipusEnum.Csopvez || model.HazifeladatokListajaTipus == HazifeladatokListajaTipusEnum.Ofo)
&& !model.OsztalyCsoportIdSrc.HasValue)
{
switch (model.HazifeladatokListajaTipus)
{
case HazifeladatokListajaTipusEnum.Csopvez:
osztalyCsoportIds.AddRange(new ComboBoxHelperApiController().GetCsoportVezListWithTanoraiCeluak().Content.Select(i => int.Parse(i.Value)));
break;
case HazifeladatokListajaTipusEnum.Ofo:
osztalyCsoportIds.AddRange(new ComboBoxHelperApiController().GetTanitottOsztalyokList().Content.Select(i => int.Parse(i.Value)));
break;
default:
break;
}
if (!osztalyCsoportIds.Any())
{
isEmptyCoList = true;
}
}
var gridParameter = Converter.GridParameter(request);
var coList = isEmptyCoList ? new List<HaziFeladatItemCo>() : new OrarendHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetHazifeladatCoList(model.ToCo(osztalyCsoportIds), maxHazifeladatSzovegHossz);
var modelList = new List<HazifeladatokListajaGridModel>();
foreach (var co in coList)
{
var gridModel = new HazifeladatokListajaGridModel(co);
modelList.Add(gridModel);
}
return (gridParameter, modelList, isEmptyCoList);
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public HttpResponseMessage SaveHF(HazifeladatBevitelModel model)
{
try
{
if (ModelState.IsValid)
{
var hazi = new TanarHaziFeladatCO
{
Id = model.Id,
OsztalyCsoportId = model.OsztalycsoportId,
TantargyId = model.TantargyId,
RogzitoId = ClaimData.FelhasznaloId,
IsTanarRogzitette = true,
Oraszam = model.Oraszam,
TanitasiOraId = model.TanitasiOraId,
FeladasDatuma = model.ErvenyessegKezdete,
Hatarido = model.ErvenyessegVege.Value,
Szoveg = CommonUtils.CreateLinksInText(model.Szoveg),
IntezmenyId = ClaimData.IntezmenyId,
IntezmenyAzonosito = ClaimData.IntezmenyAzonosito,
TanevId = ClaimData.SelectedTanevID.Value,
CsatolmanyId = model.CsatolmanyId
};
int? tanarId = null;
if (model.OrarendiOraId.HasValue)
{
var orarendiOra = new OrarendiOraHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetOrarendiOraById(model.OrarendiOraId.Value);
tanarId = orarendiOra.TanarId;
hazi.Idopont = orarendiOra.OraKezdete;
}
else if (model.TanitasiOraId.HasValue)
{
var tanitasiOra = new TanoraHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetTanorakAdatok(model.TanitasiOraId.Value);
tanarId = tanitasiOra.Tanar;
hazi.Idopont = tanitasiOra.OraKezd;
}
else
{
tanarId = ClaimData.FelhasznaloId;
}
new DktFeladatHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType()).SaveOrUpdateTanarHaziFeladat(hazi, tanarId, fileServiceHelper, coreApiClient);
return new HttpResponseMessage(HttpStatusCode.OK);
}
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
}
catch (BlException ex)
{
throw new StatusError(HttpStatusCode.BadRequest, ex.Message);
}
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public HttpResponseMessage DeleteHF([FromBody] int id)
{
try
{
new DktFeladatHelper(ConnectionTypeExtensions.GetSessionConnectionType()).DeleteHazi(id, coreApiClient);
return new HttpResponseMessage(HttpStatusCode.OK);
}
catch (Exception e)
{
throw new StatusError(HttpStatusCode.BadRequest, e.Message);
}
}
}
}

View file

@ -0,0 +1,98 @@
using System;
using System.Collections.Generic;
using System.Data;
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.Helpers;
using Kreta.BusinessLogic.Security;
using Kreta.Enums.ManualEnums;
using Kreta.Web.Areas.Orarend.Models;
using Kreta.Web.Areas.Tanar.Models;
using Kreta.Web.Helpers;
using Kreta.Web.Helpers.Grid;
using Kreta.Web.Security;
using Newtonsoft.Json;
namespace Kreta.Web.Areas.Orarend.ApiControllers
{
[ApiRoleClaimsAuthorize(true)]
[ApiRolePackageAuthorize(KretaClaimPackages.Ellenorzo.ClaimValue)]
public class InformaciokFogadoorakApiController : ApiController
{
public DataSourceResult GetFogadooraGrid(string data, [ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] DataSourceRequest request)
{
var model = JsonConvert.DeserializeObject<FogadooraSearchModel>(data);
var helper = new FogadooraHelper(ConnectionTypeExtensions.GetSessionConnectionType());
var gridParameters = Converter.GridParameter(request);
var ds = helper.GetFogadooraGondviselo(ClaimData.GondviseloId ?? -1, model.TanarIdSrc, model.TeremIdSrc, model.IdopontTolSrc, model.IdopontIgSrc, model.IdointervallumTolSrc, model.IdointervallumIgSrc, model.IsJelentkezheto);
var modelList = new List<InformaciokFogadoorakGridModel>();
foreach (var row in ds.Tables[0].AsEnumerable())
{
modelList.Add(new InformaciokFogadoorakGridModel
{
ID = row.Field<int>("ID").ToString(),
JelentkezesekKezeleseId = row.Field<int>("JelentkezesekKezeleseId"),
IdopontGondviseloId = row.Field<int?>("IdopontGondviseloId"),
IdopontStr = row.Field<string>("IdopontStr"),
JelentkezesiHatarido = row.Field<DateTime?>("JelentkezesiHatarido"),
Pedagogus = row.Field<string>("Pedagogus"),
Terem = row.Field<string>("Terem"),
FogadooraKezdete = row.Field<DateTime>("FogadooraKezdete"),
FogadooraVege = row.Field<DateTime>("FogadooraVege"),
JelentkezesAllapot = row.Field<int>("JelentkezesAllapot")
});
}
return modelList.ToDataSourceResult(gridParameters);
}
public JsonResult<List<ComboBoxListItem>> GetFogadooraIdopontok(int fogadooraId)
{
var ds = new FogadooraHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetFogadooraIdopontok(fogadooraId, ClaimData.GondviseloId.Value, FogadooraTipusEnum.Jelentkezheto);
List<ComboBoxListItem> dropdownListItems = new List<ComboBoxListItem>();
foreach (DataRow row in ds.Tables[0].Rows)
{
ComboBoxListItem sli = new ComboBoxListItem() { Text = row.Field<string>("Text"), Value = row.Field<int>("Value").ToString() };
dropdownListItems.Add(sli);
}
return Json(dropdownListItems);
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public HttpResponseMessage Jelentkezes(int idopontId)
{
new FogadooraHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType()).FogadooraGondviseloJelentkezes(idopontId, ClaimData.GondviseloId.Value);
return new HttpResponseMessage(HttpStatusCode.OK);
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public HttpResponseMessage Lemondas(int idopontGondviseloId)
{
new FogadooraHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType()).FogadooraGondviseloJelentkezesLemondas(idopontGondviseloId);
return new HttpResponseMessage(HttpStatusCode.OK);
}
[HttpGet]
[ApiValidateAjaxAntiForgeryToken]
public int isSzabadIdopontByFogadooraIdopontId(int fogadooraIdopontId)
{
var result = new FogadooraHelper(ConnectionTypeExtensions.GetSessionConnectionType()).IsSzabadIdopontByFogadooraIdopontId(fogadooraIdopontId);
return result;
}
}
}

View file

@ -0,0 +1,28 @@
using System.Data;
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.Orarend.ApiControllers
{
[ApiRoleClaimsAuthorize(true)]
[ApiRolePackageAuthorize(KretaClaimPackages.Ellenorzo.ClaimValue)]
public class InformaciokOrarendApiController : ApiController
{
public DataSourceResult GetHFCsatolmanyokGridForHazi(int haziFeladatId, [ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] DataSourceRequest request)
{
var helper = new DktFileHelper(ConnectionTypeExtensions.GetSessionConnectionType())
{
GridParameters = Converter.GridParameter(request)
};
DataSet ds = helper.GetCsatolmanyokForHaziFeladatDataSet(haziFeladatId);
return ds.ToDataSourceResult();
}
}
}

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.Orarend.ApiControllers
{
[ApiRoleClaimsAuthorize(true)]
[ApiRolePackageAuthorize(KretaClaimPackages.Ellenorzo.ClaimValue)]
public class InformaciokTanorakApiController : ApiController
{
public DataSourceResult GetTanitasiOraGrid([ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] DataSourceRequest request)
{
var helper = new TanoraHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType());
helper.GridParameters = Converter.GridParameter(request);
var ds = helper.GetDiakTanorai(ClaimData.FelhasznaloId);
return ds.ToDataSourceResult();
}
}
}

View file

@ -0,0 +1,146 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using System.Web.Http.ModelBinding;
using Kendo.Mvc.UI;
using Kreta.BusinessLogic.Exceptions;
using Kreta.BusinessLogic.Helpers;
using Kreta.BusinessLogic.Interfaces;
using Kreta.BusinessLogic.Security;
using Kreta.Core;
using Kreta.Ellenorzo.Dao.VN.FeltoltottFajl;
using Kreta.Enums;
using Kreta.Resources;
using Kreta.Web.Areas.Orarend.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.Orarend.ApiControllers
{
[ApiRoleClaimsAuthorize(true)]
[ApiRolePackageAuthorize(KretaClaimPackages.Adminisztrator.ClaimValue, KretaClaimPackages.Naplo.ClaimValue)]
[ApiRolePackageDenyAuthorize(KretaClaimPackages.IsDualisKepzohelyiOktato.ClaimValue)]
public class KepekListajaApiController : ApiController
{
private readonly IFileServiceHelper FileServiceHelper;
public KepekListajaApiController(IFileServiceHelper fileServiceHelper)
{
FileServiceHelper = fileServiceHelper ?? throw new ArgumentNullException(nameof(fileServiceHelper));
}
public DataSourceResult GetKepekListajaGrid(string data, [ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] DataSourceRequest request)
{
KepekListajaSearchModel model = JsonConvert.DeserializeObject<KepekListajaSearchModel>(data);
var helper = new OpenBoardHelper(ConnectionTypeExtensions.GetSessionConnectionType()) { GridParameters = Converter.GridParameter(request) };
var fileKereses = new FileKeresesRequestDao
{
DatumTol = model.DatumTol,
DatumIg = model.DatumIg,
FeladatKategoriaId = model.FeladatKategoriaId,
FeladatEllatasiHelyId = model.FeladatEllatasiHelyId,
FajlNeve = model.KepNeve,
OsztalyCsoportId = model.OsztalyCsoportId,
TanarHelyettesitoId = ClaimManager.HasPackage(KretaClaimPackages.Adminisztrator.ClaimValue) ? model.TanarHelyettesitoId : ClaimData.FelhasznaloId,
TantargyId = model.TantargyId,
FoglalkozasId = ClaimManager.HasPackage(KretaClaimPackages.Adminisztrator.ClaimValue) ? model.FoglalkozasId : null,
OraFileTipusId = (int)OraFileTipusEnum.openboard,
IsOnlineOra = model.IsOnlineOra
};
DataSet kepek = helper.FileKereses(fileKereses);
return kepek.ToDataSourceResult();
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public HttpResponseMessage SaveKepData(KepekListajaGridModel model)
{
try
{
if (!model.OraFileId.IsEntityId())
{
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ErrorResource.HibaTortentAMuveletKozben);
}
if (model.KepNeve == null)
{
ModelState.AddModelError("KepekListajaGridModel.KepNeve", ErrorResource.FileNevenekMegadasaKotelezo);
}
if (ModelState.IsValid)
{
new OpenBoardHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType()).SaveOraFileData(model.OraFileId.Value, model.KepNeve, model.Megjegyzes);
return new HttpResponseMessage(HttpStatusCode.OK);
}
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
}
catch (CannotBeInsertedException ex)
{
throw new StatusError(HttpStatusCode.BadRequest, ex.Message);
}
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public HttpResponseMessage DeleteKep([FromBody] int oraFileId)
{
try
{
new OraFileHelper(ConnectionTypeExtensions.GetSessionConnectionType(), FileServiceHelper).DeleteOraFile(oraFileId);
return new HttpResponseMessage(HttpStatusCode.OK);
}
catch (CannotBeDeletedException e)
{
throw new StatusError(HttpStatusCode.BadRequest, e.Message);
}
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public IHttpActionResult DeleteSelectedKep(List<int> selectedOraFileIdList)
{
string errorMsg = string.Empty;
var counter = 0;
var oraFileHelper = new OraFileHelper(ConnectionTypeExtensions.GetSessionConnectionType(), FileServiceHelper);
foreach (var oraFileId in selectedOraFileIdList)
{
try
{
oraFileHelper.DeleteOraFile(oraFileId);
counter++;
}
catch (CannotBeDeletedException ex)
{
errorMsg += $"{ex.Message}{Environment.NewLine}";
continue;
}
}
if (string.IsNullOrWhiteSpace(errorMsg))
{
return Json(new { Message = string.Format(ErrorResource.NSorTorlesSikeres, counter) });
}
if (counter > 0)
{
errorMsg += Environment.NewLine + string.Format(ErrorResource.NSorTorlesSikeres, counter);
}
throw new StatusError(HttpStatusCode.BadRequest, errorMsg);
}
}
}

View file

@ -0,0 +1,199 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using ICSharpCode.SharpZipLib.Zip;
using Kreta.BusinessLogic.Helpers;
using Kreta.BusinessLogic.Security;
using Kreta.Enums.ManualEnums;
using Kreta.Resources;
using Kreta.Web.Areas.Orarend.Models;
using Kreta.Web.Helpers;
using Kreta.Web.Helpers.Error;
using Kreta.Web.Security;
namespace Kreta.Web.Areas.Orarend.ApiControllers
{
[ApiRoleClaimsAuthorize(true)]
[ApiRolePackageAuthorize(KretaClaimPackages.Adminisztrator.ClaimValue)]
public class OrarendekTorleseApiController : ApiController
{
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public HttpResponseMessage FelhelyOrarendekTorlese(FelhelyOrarendTorleseParameterModel model)
{
var orarendTorleseHelper = new OrarendTorleseHelper(ConnectionTypeExtensions.GetSessionConnectionType());
(model.MinDatum, model.MaxDatum) = orarendTorleseHelper.GetMinMaxDatumValaszto();
if (!ValidateBaseModel(model, out var errorDictionary))
{
ModelState.AddRange(errorDictionary);
}
if (string.IsNullOrWhiteSpace(model.KivalasztottFelhelyekIds))
{
ModelState.AddModelError(nameof(model.KivalasztottFelhelyekIds), OrarendekTorleseResource.LegalabbEgyFeladatellatasiHelyKivalasztasaKotelezo);
}
if (ModelState.IsValid)
{
try
{
var orarendekTorleseCo = model.ConvertToCo();
var excelFiles = orarendTorleseHelper.OrarendekTorlese(orarendekTorleseCo);
var base64ZipResult = CreateBase64ZipResult(excelFiles);
return Request.CreateResponse(HttpStatusCode.OK, base64ZipResult);
}
catch (Exception ex)
{
throw new StatusError(HttpStatusCode.BadRequest, ex.Message);
}
}
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public HttpResponseMessage CsoportOrarendekTorlese(CsoportOrarendTorleseModel model)
{
var orarendTorleseHelper = new OrarendTorleseHelper(ConnectionTypeExtensions.GetSessionConnectionType());
(model.MinDatum, model.MaxDatum) = orarendTorleseHelper.GetMinMaxDatumValaszto();
if (!ValidateBaseModel(model, out var errorDictionary))
{
ModelState.AddRange(errorDictionary);
}
if (string.IsNullOrWhiteSpace(model.SelectedCsoportok))
{
ModelState.AddModelError(nameof(model.SelectedCsoportok), OrarendekTorleseResource.LegalabbEgyCsoportKivalasztasaKotelezo);
}
if (ModelState.IsValid)
{
try
{
var orarendekTorleseCo = model.ConvertToCo();
var excelFiles = orarendTorleseHelper.OrarendekTorlese(orarendekTorleseCo);
var base64ZipResult = CreateBase64ZipResult(excelFiles);
return Request.CreateResponse(HttpStatusCode.OK, base64ZipResult);
}
catch (Exception ex)
{
throw new StatusError(HttpStatusCode.BadRequest, ex.Message);
}
}
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public HttpResponseMessage OsztalyOrarendekTorlese(OsztalyOrarendTorleseModel model)
{
var orarendTorleseHelper = new OrarendTorleseHelper(ConnectionTypeExtensions.GetSessionConnectionType());
(model.MinDatum, model.MaxDatum) = orarendTorleseHelper.GetMinMaxDatumValaszto();
if (!ValidateBaseModel(model, out var errorDictionary))
{
ModelState.AddRange(errorDictionary);
}
if (string.IsNullOrWhiteSpace(model.SelectedOsztalyok))
{
ModelState.AddModelError(nameof(model.SelectedOsztalyok), OrarendekTorleseResource.LegalabbEgyOsztalyKivalasztasaKotelezo);
}
if (ModelState.IsValid)
{
try
{
var orarendekTorleseCo = model.ConvertToCo();
var excelFiles = orarendTorleseHelper.OrarendekTorlese(orarendekTorleseCo);
var base64ZipResult = CreateBase64ZipResult(excelFiles);
return Request.CreateResponse(HttpStatusCode.OK, base64ZipResult);
}
catch (Exception ex)
{
throw new StatusError(HttpStatusCode.BadRequest, ex.Message);
}
}
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
}
private bool ValidateBaseModel(BaseOrarendTorleseModel model, out Dictionary<string, List<string>> errorDictionary)
{
errorDictionary = new Dictionary<string, List<string>>();
if (model.KezdeteDatum.HasValue && model.VegeDatum.HasValue && model.KezdeteDatum > model.VegeDatum)
{
AddErrorMessage(errorDictionary, nameof(model.KezdeteDatum), OrarendekTorleseResource.IntervallumKezdeteNemLehetNagyobbMintVege);
}
if (model.KezdeteDatum.HasValue && model.KezdeteDatum < model.MinDatum)
{
AddErrorMessage(errorDictionary, nameof(model.KezdeteDatum), OrarendekTorleseResource.IntervallumKezdeteNemLehetKisebbMintTanevKezdete);
}
if (model.VegeDatum.HasValue && model.VegeDatum > model.MaxDatum)
{
AddErrorMessage(errorDictionary, nameof(model.VegeDatum), OrarendekTorleseResource.IntervallumVegeNemLehetNagyobbMintTanevVege);
}
if (!Enum.TryParse(model.OraTipus, out OrarendekTorleseNezetTipusEnum _))
{
AddErrorMessage(errorDictionary, nameof(model.OraTipus), OrarendekTorleseResource.OraTipusNemMegfelelo);
}
return !errorDictionary.Any();
}
private void AddErrorMessage(Dictionary<string, List<string>> errorDictionary, string key, string message)
{
if (!errorDictionary.TryGetValue(key, out var messages))
{
messages = new List<string>();
errorDictionary.Add(key, messages);
}
messages.Add(message);
}
private string CreateBase64ZipResult(List<(string FileName, MemoryStream FileStream)> excelFiles)
{
string result = null;
if (excelFiles.Any())
{
using (var outputStream = new MemoryStream())
{
using (var zipOutputStream = new ZipOutputStream(outputStream))
{
var buffer = new byte[4096];
foreach (var (FileName, FileStream) in excelFiles)
{
var entry = new ZipEntry(FileName);
zipOutputStream.PutNextEntry(entry);
int sourceBytes;
do
{
sourceBytes = FileStream.Read(buffer, 0, buffer.Length);
zipOutputStream.Write(buffer, 0, sourceBytes);
} while (sourceBytes > 0);
}
zipOutputStream.Finish();
outputStream.Position = 0;
result = Convert.ToBase64String(outputStream.ToArray());
}
}
}
return result;
}
}
}

View file

@ -0,0 +1,177 @@
using System;
using System.Collections.Generic;
using System.Data;
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.Resources;
using Kreta.Web.Areas.Orarend.Logic;
using Kreta.Web.Areas.Orarend.Models;
using Kreta.Web.Helpers;
using Kreta.Web.Helpers.Error;
using Kreta.Web.Helpers.Grid;
using Kreta.Web.Security;
namespace Kreta.Web.Areas.Orarend.ApiControllers
{
[ApiRoleClaimsAuthorize(true)]
[ApiRolePackageAuthorize(KretaClaimPackages.Naplo.ClaimValue)]
public class SzamonkeresElorejelzesApiController : ApiController
{
[HttpPost]
[ApiRolePackageAuthorize(
KretaClaimPackages.IsKozossegiSzolgalatKezelo.ClaimValue,
KretaClaimPackages.Osztalyfonok.ClaimValue,
KretaClaimPackages.SzuperOsztalyfonok.ClaimValue,
KretaClaimPackages.Adminisztrator.ClaimValue,
KretaClaimPackages.FelhasznaloMunkakoreNemTiltoListas.ClaimValue,
KretaClaimPackages.Naplo.ClaimValue
)]
public DataSourceResult GetSzamonkeresElorejelzesDetailGrid(int oraGroupId, int osztalyCsoportId, DateTime datum, [ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] DataSourceRequest request)
{
var helper = new SzamonkeresElorejelzesHelper(ConnectionTypeExtensions.GetSessionConnectionType());
helper.GridParameters = Converter.GridParameter(request);
SzamonkeresElorejelzesSearchCO co = new SzamonkeresElorejelzesSearchCO
{
OraGroupId = oraGroupId,
Datum = datum,
OsztalyCsoportId = osztalyCsoportId
};
var ds = helper.GetSzamonkeresElorejelzesDetailDataSet(co, isKellKapcsolodoOsztalyok: true);
DataSourceResult result = ds.ToDataSourceResult();
return result;
}
[HttpGet]
[ApiValidateAjaxAntiForgeryToken]
public IHttpActionResult GetModListAndComboItemColor(int? OraGroupId, int? OsztalyCsoportId, DateTime? Datum)
{
var helper = new SzamonkeresElorejelzesHelper(ConnectionTypeExtensions.GetSessionConnectionType());
var szamonkeresModIdList = helper.GetModListAndComboItemColorNapiLimithez(OraGroupId, Datum, OsztalyCsoportId, out string backgroundColor);
return Json(new { ErtekelesModList = szamonkeresModIdList, color = backgroundColor });
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public IHttpActionResult ValidateSzamonkeresElorejelzes(SzamonkeresElorejelzesModel model)
{
var szKLogic = new SzamonkeresElorejelzesLogic();
int limit = szKLogic.GetNapiSzamonkeresiLimit;
List<int> ertekelesModokLimithez = szKLogic.GetModokListNapiLimithez;
if (model.ErtekelesModId != null && ertekelesModokLimithez.Contains(model.ErtekelesModId.Value) &&
limit > 0 && ertekelesModokLimithez.Count > 0 && szKLogic.SzamonkeresLimitFigyelmeztetes < 3)
{
var helper = new SzamonkeresElorejelzesHelper(ConnectionTypeExtensions.GetSessionConnectionType());
SzamonkeresElorejelzesSearchCO co = new SzamonkeresElorejelzesSearchCO
{
OraGroupId = model.OraGroupId,
Datum = model.Datum,
NapiSzamonkeresLimit = limit,
OsztalyCsoportId = model.OsztalyCsoportId,
ErtekelesModokLimithez = ertekelesModokLimithez
};
var ds = helper.GetTanulokSzamonkeresElorejelzesei(co);
switch (szKLogic.SzamonkeresLimitFigyelmeztetes)
{
case 1:
if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
{
string msg = string.Format(OrarendResource.FelvitelNemLehetsegesLimit0Miatt, limit) + "<br>";
foreach (DataRow row in ds.Tables[0].Rows)
{
msg += SDAConvert.ToString(row["Nev"]) + " - " + SDAConvert.ToString(row["OsztalyNev"]) + " (" + SDAConvert.ToString(row["SzamonkeresekSzama"]) + ") " + "<br>";
}
throw new StatusError(HttpStatusCode.BadRequest, msg);
}
break;
case 2:
if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
{
string msg = string.Format(OrarendResource.FelvitelNemLehetsegesLimit0MiattKerdes, limit) + "<br>" + "<br>";
foreach (DataRow row in ds.Tables[0].Rows)
{
msg += SDAConvert.ToString(row["Nev"]) + " - " + SDAConvert.ToString(row["OsztalyNev"]) + " (" + SDAConvert.ToString(row["SzamonkeresekSzama"]) + ") " + "<br>";
}
return Json(new { Valid = false, Text = msg });
}
break;
}
}
return Json(new { Valid = true, Text = "" });
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public HttpResponseMessage SaveSzamonkeresElorejelzes(SzamonkeresElorejelzesModel model)
{
ModelState.Merge(model.Validate());
var helper = new SzamonkeresElorejelzesHelper(ConnectionTypeExtensions.GetSessionConnectionType());
SzamonkeresElorejelzesSearchCO co = new SzamonkeresElorejelzesSearchCO
{
OraGroupId = model.OraGroupId,
DatumTol = model.Datum,
DatumIg = model.Datum.Value.AddDays(1),
OsztalyCsoportId = model.OsztalyCsoportId
};
var ds = helper.GetBejelentettSzamonkeresekGrid(co);
if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
{
throw new StatusError(HttpStatusCode.BadRequest, ErrorResource.DuplikaltSzamonkeresElorejelzes);
}
if (ModelState.IsValid)
{
helper.SaveSzamonkeresElorejelzes(model.ToCo(), ClaimData.FelhasznaloId);
return new HttpResponseMessage(HttpStatusCode.OK);
}
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public HttpResponseMessage DeleteSzamonkeresElorejelzes(int id)
{
try
{
var helper = new SzamonkeresElorejelzesHelper(ConnectionTypeExtensions.GetSessionConnectionType());
helper.DeleteSzamonkeresElorejelzes(id);
return new HttpResponseMessage(HttpStatusCode.OK);
}
catch
{
throw new StatusError(HttpStatusCode.BadRequest, ErrorResource.HibaATorlesSoran);
}
}
}
}

View file

@ -0,0 +1,84 @@
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using System.Web.Http.Results;
using Kreta.BusinessLogic.Classes;
using Kreta.BusinessLogic.Classes.ComboBox;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.BusinessLogic.Helpers;
using Kreta.BusinessLogic.Helpers.SystemSettings;
using Kreta.BusinessLogic.Security;
using Kreta.BusinessLogic.Utils;
using Kreta.Web.Areas.Orarend.Models;
using Kreta.Web.Helpers;
using Kreta.Web.Security;
namespace Kreta.Web.Areas.Orarend.ApiControllers
{
[ApiRoleClaimsAuthorize(true)]
[ApiRolePackageAuthorize(KretaClaimPackages.Naplo.ClaimValue)]
[ApiRolePackageDenyAuthorize(KretaClaimPackages.IsDualisKepzohelyiOktato.ClaimValue)]
public class TanarOralatogatasApiController : ApiController
{
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public HttpResponseMessage SaveOralatogatas(OralatogatasModel model)
{
if (ModelState.IsValid)
{
var helper = new OralatogatasokHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType());
if (!model.OralatogatasID.HasValue && model.TanarId != ClaimData.FelhasznaloId
&& helper.OralatogatasUtkozes(ClaimData.FelhasznaloId, model.OraID.Value, out string errorMessage))
{
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, errorMessage);
}
OralatogatasokCO co = new OralatogatasokCO()
{
LatogatoID = ClaimData.FelhasznaloId,
Megjegyzes = model.OralatogatasSzovege,
Date = model.OralatogatasDatuma,
Ora = model.OraID.Value,
Id = model.OralatogatasID ?? -1,
NemKotottMunkaidos = model.NemKotottMunkaidos
};
if (new SystemSettingsHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetSystemSettingValue<bool>(Enums.RendszerBeallitasTipusEnum.kotott_munkaido_nevelesseloktatassal_le_nem_kotott_resz_kezelesenek_tiltasa))
{
co.NemKotottMunkaidos = false;
}
helper.SaveOralatogatas(co);
return new HttpResponseMessage(HttpStatusCode.OK);
}
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public HttpResponseMessage DeleteOralatogatas(int id)
{
var helper = new OralatogatasokHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType());
helper.DeleteOralatogatas(id, ClaimData.FelhasznaloId);
return new HttpResponseMessage(HttpStatusCode.OK);
}
public JsonResult<List<ComboBoxListItem>> GetTanarList()
{
var connectionType = ConnectionTypeExtensions.GetSessionConnectionType();
var felhasznalokOnlyAlkalmazottSzerepkorIds = new FelhasznaloHelper(connectionType).GetFelhasznaloIdsOnlyAlkalmazottSzerepkor();
IDictionary<string, string> lista;
var helper = new TanarHelper(connectionType);
lista = helper.GetTanarok(string.Empty, oktatasiAzonositoval: true);
lista.Remove("");
return Json(lista.ToComboBoxItemList().Where(x => !felhasznalokOnlyAlkalmazottSzerepkorIds.Contains(SDAConvert.ToInt32(x.Value))).ToList());
}
}
}

View file

@ -0,0 +1,773 @@
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;
using Kreta.BusinessLogic.Classes.ComboBox;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.BusinessLogic.Helpers;
using Kreta.BusinessLogic.Helpers.SystemSettings;
using Kreta.BusinessLogic.Interfaces;
using Kreta.BusinessLogic.Logic.Mulasztas;
using Kreta.BusinessLogic.Logic.Naplozas;
using Kreta.BusinessLogic.Logic.Naplozas.Elokeszites;
using Kreta.BusinessLogic.Logic.Naplozas.Validacio;
using Kreta.BusinessLogic.Security;
using Kreta.BusinessLogic.Utils;
using Kreta.Client.CoreApi;
using Kreta.Core;
using Kreta.Core.Exceptions;
using Kreta.Core.Validation.Exceptions;
using Kreta.Enums;
using Kreta.Enums.ManualEnums;
using Kreta.Framework;
using Kreta.Framework.Util;
using Kreta.Resources;
using Kreta.Web.Areas.Intezmeny.Logic;
using Kreta.Web.Areas.Orarend.Models;
using Kreta.Web.Helpers;
using Kreta.Web.Helpers.Error;
using Kreta.Web.Helpers.Grid;
using Kreta.Web.Security;
using Newtonsoft.Json.Linq;
namespace Kreta.Web.Areas.Orarend.ApiControllers
{
[ApiRoleClaimsAuthorize(true)]
[ApiRolePackageAuthorize(KretaClaimPackages.Naplo.ClaimValue)]
public class TanariOrarendApiController : BaseTanariOrarendApiController
{
private IKretaAuthorization Authorization { get; }
private readonly IFileServiceHelper _fileServiceHelper;
private readonly ICoreApiClient _coreApiClient;
public TanariOrarendApiController(IKretaAuthorization authorization, IFileServiceHelper fileServiceHelper, ICoreApiClient coreApiClient) : base(authorization, fileServiceHelper, coreApiClient)
{
Authorization = authorization;
_fileServiceHelper = fileServiceHelper ?? throw new ArgumentNullException(nameof(fileServiceHelper));
_coreApiClient = coreApiClient ?? throw new ArgumentNullException(nameof(coreApiClient));
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public HttpResponseMessage SaveNaplozas(TanoraNaplozasRogzites model)
{
return base.SaveNaplozas(model);
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public HttpResponseMessage SaveNemMegtartottNaplozas(TanoraNaplozasRogzites model)
{
return base.SaveNemMegtartottNaplozas(model);
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public IHttpActionResult ValidateNaplozas(TanoraNaplozasRogzites model)
{
return base.ValidateNaplozas(model);
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public IHttpActionResult UtkozesValidateNaplozas(TanoraIdBeallitasModel model)
{
model.calendarModel.Start = model.calendarModel.Start.ToLocalTime();
var connectionType = ConnectionTypeExtensions.GetSessionConnectionType();
var naploValidacioParameters = new NaploValidacioParameters(model.calendarModel.Start, connectionType, ClaimData.FelhasznaloSzerepkor);
var validator = new NaploValidacio(naploValidacioParameters);
NaplozasElokeszitesLogic naplozasLogic;
if (model.calendarModel.EventType == EventTypeEnum.UjEgyediOraFelvitel ||
(model.calendarModel.EventType == EventTypeEnum.UjOraFelvitele && (model.calendarModel.OraType == CalendarOraTypeEnum.UresOra ||
model.calendarModel.OraType == CalendarOraTypeEnum.Egyeb)))
{
var co = new EgyediNaplozasElokeszitesCo();
model.ConvertTo(co);
naplozasLogic = new NaplozasElokeszitesLogic(validator, co);
}
else
{
var co = new NaplozasElokeszitesCo();
model.calendarModel.ConvertTo(co);
naplozasLogic = new NaplozasElokeszitesLogic(validator, co);
}
var systemSettingsHelper = new SystemSettingsHelper(connectionType);
var tevekenysegUtkozes = systemSettingsHelper.GetSystemSettingValue<int>(RendszerBeallitasTipusEnum.Napirend_felvitelel_utkozes_figyeles);
var osztalyVagyTanarOraiadottUtkozes = TanevRendjeLogic.IsEgyediNapByDate(model.calendarModel.Start.Date) ? "" : naplozasLogic.GetOsztalyEsTanarOraiUtkozes();
switch ((TevekenysegUtkozesEnum)tevekenysegUtkozes)
{
case TevekenysegUtkozesEnum.UtkozesNemLehetseges:
if (!string.IsNullOrWhiteSpace(osztalyVagyTanarOraiadottUtkozes))
{
throw new StatusError(HttpStatusCode.BadRequest, string.Format(OrarendResource.TanoraFelviteleNemLehetsegesUtkozesMiatt, osztalyVagyTanarOraiadottUtkozes));
}
break;
case TevekenysegUtkozesEnum.UtkozeskorFigyelmeztetes:
if (!string.IsNullOrWhiteSpace(osztalyVagyTanarOraiadottUtkozes))
{
return Json(new { Valid = false, Text = string.Format(OrarendResource.TanoraFelviteleNemLehetsegesUtkozesMiattKerdes, string.Empty, string.Empty, osztalyVagyTanarOraiadottUtkozes) });
}
break;
}
return Json(new { Valid = true, Text = "" });
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public HttpResponseMessage SaveNemKotottMunkaIdo(NemKotottMunkaidoModel model)
{
model.isMegtartott = true;
if (ModelState.IsValid)
{
try
{
model.Kezdet = Logic.OrarendiOraLogic.CreateLocalDateTimeBasedOnDateAndTime(model.Datum.Value, model.Kezdet.Value);
model.Veg = Logic.OrarendiOraLogic.CreateLocalDateTimeBasedOnDateAndTime(model.Datum.Value, model.Veg.Value);
var customModelState = Logic.NemKotottMunkaidoLogic.CheckCustomValidation(ModelState, model);
if (!customModelState.IsValid)
{
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, customModelState);
}
NemKotottMunkaidoHelper helper = new NemKotottMunkaidoHelper(ConnectionTypeExtensions.GetSessionConnectionType());
var co = Logic.NemKotottMunkaidoLogic.ConvertModelToCO(model);
if (model.Id.IsEntityId())
{
helper.Update(co);
}
else
{
co.GroupId = Guid.NewGuid().ToString();
helper.Insert(co);
}
return new HttpResponseMessage(HttpStatusCode.OK);
}
catch (BlException ex)
{
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex.Message);
}
}
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public HttpResponseMessage DeleteNemKotottMunkaIdo(int Id, bool isGlobal)
{
var authorization = (IKretaAuthorization)Request.GetDependencyScope().GetService(typeof(IKretaAuthorization));
if (!authorization.IsValidNemKotottMunkaido(Id))
{
throw new StatusError(HttpStatusCode.Forbidden, ErrorResource.AFelhasznalonakNincsMegfeleloJogosultsagaAFunkcioHasznalatahoz);
}
try
{
var helper = new NemKotottMunkaidoHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType());
LicenceHelper.LicenceWait(ClaimData.LicenceDatum);
helper.Delete(Id, isAdmin: false, isGlobal);
return new HttpResponseMessage(HttpStatusCode.OK);
}
catch (KretaError ke)
{
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ke.Message);
}
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public HttpResponseMessage DeleteTanarAltalNemKotottMunkaIdo(int Id)
{
var authorization = (IKretaAuthorization)Request.GetDependencyScope().GetService(typeof(IKretaAuthorization));
if (!authorization.IsValidNemKotottMunkaido(Id))
{
throw new StatusError(HttpStatusCode.Forbidden, ErrorResource.AFelhasznalonakNincsMegfeleloJogosultsagaAFunkcioHasznalatahoz);
}
try
{
var helper = new NemKotottMunkaidoHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType());
LicenceHelper.LicenceWait(ClaimData.LicenceDatum);
helper.DeleteTanarAltal(Id);
return new HttpResponseMessage(HttpStatusCode.OK);
}
catch (KretaError ke)
{
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ke.Message);
}
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public IHttpActionResult UtkozesValidateNemKotottMunkaido(NemKotottMunkaidoModel model)
{
var hasUtkozes = Logic.NemKotottMunkaidoLogic.CheckUtkozesValidation(model);
int tevekenysegutkozesSystemSetting = Logic.NemKotottMunkaidoLogic.GetTevekenysegUtkozesSystemSetting();
if (tevekenysegutkozesSystemSetting != (int)TevekenysegUtkozesEnum.UtkozesMegengedett && hasUtkozes)
{
if (tevekenysegutkozesSystemSetting == (int)TevekenysegUtkozesEnum.UtkozesNemLehetseges)
{
throw new StatusError(HttpStatusCode.BadRequest, OrarendResource.NemKotottMunkaidoFelviteleNemLehetsegesUtkozesMiatt);
}
return Json(new { Valid = false, Text = string.Format(OrarendResource.NemKotottMunkaidoFelviteleNemLehetsegesUtkozesMiattKerdes) });
}
return Json(new { Valid = true, Text = string.Empty });
}
public DataSourceResult GetMulasztasokForInfo(int osztalycsoportId, int tanoraId, DateTime oraKezdete, DateTime oraVege, int targyId, int tanarId, [ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] DataSourceRequest request)
{
return new MulasztasLogic(ConnectionTypeExtensions.GetSessionConnectionType()).GetMulasztasok(osztalycsoportId, tanoraId, oraKezdete, oraVege, targyId, tanarId, false).ToDataSourceResult();
}
public DataSourceResult GetMulasztasokForDetail(int osztalycsoportId, int tanoraId, DateTime oraKezdete, DateTime oraVege, int targyId, int tanarId, bool hianyzokAutoKitoltes, [ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] DataSourceRequest request)
{
return new MulasztasLogic(ConnectionTypeExtensions.GetSessionConnectionType()).GetMulasztasok(osztalycsoportId, tanoraId, oraKezdete, oraVege, targyId, tanarId, hianyzokAutoKitoltes).ToDataSourceResult();
}
public string GetTanarokNeve(string id)
{
return int.TryParse(id, out int fID) && fID.IsEntityId()
? new FoglalkozasHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetTanarokTanoranKivuliFoglalkozashoz(fID)
: string.Empty;
}
public bool IsTanevRendEsemenyNemKotottMunkaido(CalendarModel model)
{
var helper = new TanevrendHelper(ConnectionTypeExtensions.GetSessionConnectionType());
return helper.GetVanTanevRendjeEsemenyNemKotottMunkaido(model.Start, model.End);
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public DateTime GetNaplozarasDate(CalendarModel model)
{
var helper = new OrarendHelper(ConnectionTypeExtensions.GetSessionConnectionType());
return helper.GetNaplozarasDate(model.Start).ToUniversalTime();
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public JObject GetNaploZarasInfo(CalendarModel model)
{
var naplozarasDate = GetNaplozarasDate(model);
bool csakErtekelesZarasa = new NaplozarasLogic(ConnectionTypeExtensions.GetActiveSessionConnectionType()).IsCsakErtekelesZarasaBeallitas();
JObject json = JObject.FromObject(new { NaplozarasDate = naplozarasDate, CsakErtekelesZarasa = csakErtekelesZarasa });
return json;
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public int GetCsengetesiRend(CalendarModel model)
{
var helper = new TanoraHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType());
return helper.GetTanitasiCsengetesiRendOraIdja(model.EventId);
}
public JsonResult<List<ComboBoxListItem>> GetHelyettesitesTipus(string osszevonas = null)
{
var data = FrameworkEnumExtensions.EnumToList((int)GeneratedAdatszotarTipusEnum.HelyettesitesTipus, ClaimData.SelectedTanevID.Value, false);
if (osszevonas != ((int)HelyettesitesTipusEnum.oraosszevonas).ToString())
{
data.Remove(((int)HelyettesitesTipusEnum.oraosszevonas).ToString());
}
return Json(data.ToComboBoxItemList());
}
public JsonResult<List<ComboBoxListItem>> GetHelyettesitesTipusOsszevonassal()
{
var data = FrameworkEnumExtensions.EnumToList((int)GeneratedAdatszotarTipusEnum.HelyettesitesTipus, ClaimData.SelectedTanevID.Value, false);
return Json(data.ToComboBoxItemList());
}
public JsonResult<List<ComboBoxListItem>> GetHelyettesitoTanarok()
{
var helper = new TanarHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType());
var data = helper.GetTanarNevek(string.Empty, oktatasiAzonositoval: true);
data.Remove(ClaimData.FelhasznaloId.ToString());
return Json(data.ToComboBoxItemList());
}
public JsonResult<List<GroupComboBoxListItem>> GetTanoranKivuliFoglalkozasok(DateTime? datum = null, bool? isForOrarend = null, bool? filterNincsBeloleOra = false, int? hanyadikOra = null)
{
return GetTanoranKivuliFoglalkozasok(ClaimData.FelhasznaloId, filterNincsBeloleOra ?? false, datum, isForOrarend, hanyadikOra);
}
public JsonResult<List<GroupComboBoxListItem>> GetTanoranKivuliFoglalkozasok(int filterId, bool filterNincsBeloleOra = false, DateTime? datum = null, bool? isForOrarend = null, int? hanyadikOra = null)
{
var connectionType = ConnectionTypeExtensions.GetSessionConnectionType();
var helper = new TantargyFelosztasHelper(connectionType);
var foglalkozasok = helper.GetFoglalkozasok(filterId, filterNincsBeloleOra: filterNincsBeloleOra);
var list = foglalkozasok.Tables[0].AsEnumerable();
if (isForOrarend.HasValue && isForOrarend.Value && datum.HasValue && hanyadikOra.HasValue)
{
var osztalyCsoportIds = new CsengetesiRendHelper(connectionType).GetOsztalyCsoportIdsForCsengetesiRend(datum.Value, hanyadikOra.Value, list.Select(x => x.Field<int>("OsztalyCsoportId")));
list = list.Where(x => osztalyCsoportIds.Contains(x.Field<int>("OsztalyCsoportId")));
}
var filteredList = list.Select(dataRow => new ComboBoxListItem
{
Value = dataRow.Field<int>("ID").ToString() + " - " + dataRow.Field<int>("OsztalyCsoportId").ToString(),
Text = dataRow.Field<string>("Tantargy") + " - " + dataRow.Field<string>("OsztalyCsoportNev"),
GroupName = dataRow.Field<string>("IsOsztalyOrOsztalyJelleguCsoport") == "T" ? StringResourcesUtil.GetString(4808) /*Tanórai célú csoportok*/ : StringResourcesUtil.GetString(4809) /*Tanórán kívüli csoportok*/
}).ToList();
return Json(ComboBoxHelper.ConvertDataToGroup(filteredList));
}
public JsonResult<List<GroupComboBoxListItem>> GetNapirendTanoranKivuliFoglalkozasok(int filterId, DateTime? datum = null, bool? isForOrarend = null, int? hanyadikOra = null)
{
var connectionType = ConnectionTypeExtensions.GetSessionConnectionType();
var helper = new TantargyFelosztasHelper(connectionType);
var foglalkozasok = helper.GetFoglalkozasok(filterId);
var list = foglalkozasok.Tables[0].AsEnumerable();
if (isForOrarend.HasValue && isForOrarend.Value && datum.HasValue && hanyadikOra.HasValue)
{
var osztalyCsoportIds = new CsengetesiRendHelper(connectionType).GetOsztalyCsoportIdsForCsengetesiRend(datum.Value, hanyadikOra.Value, list.Select(x => x.Field<int>("OsztalyCsoportId")));
list = list.Where(x => osztalyCsoportIds.Contains(x.Field<int>("OsztalyCsoportId")));
}
var systemSettingsHelper = new SystemSettingsHelper(connectionType);
var csakOsztalyEsTanoraJelleguCsoport = systemSettingsHelper.GetSystemSettingValue<bool>(RendszerBeallitasTipusEnum.Foglalkozasnal_csak_osztaly_es_tanora_jellegu_csoport_allithato);
if (csakOsztalyEsTanoraJelleguCsoport)
{
list = list.Where(x => x.Field<string>("IsOsztalyOrOsztalyJelleguCsoport") == "T");
}
var filteredList = list.Select(dataRow => new ComboBoxListItem
{
Value = dataRow.Field<int>("ID").ToString() + " - " + dataRow.Field<int>("OsztalyCsoportId").ToString(),
Text = dataRow.Field<string>("Tantargy") + " - " + dataRow.Field<string>("OsztalyCsoportNev"),
GroupName = dataRow.Field<string>("IsOsztalyOrOsztalyJelleguCsoport") == "T" ? StringResourcesUtil.GetString(4808) /*Tanórai célú csoportok*/ : StringResourcesUtil.GetString(4809) /*Tanórán kívüli csoportok*/
}).ToList();
return Json(ComboBoxHelper.ConvertDataToGroup(filteredList));
}
public JsonResult<List<GroupComboBoxListItem>> GetTanoranKivuliFoglalkozasokOsztalyList()
{
var systemSettingsHelper = new SystemSettingsHelper(ConnectionTypeExtensions.GetSessionConnectionType());
var csakOsztalyEsTanoraJelleguCsoport = systemSettingsHelper.GetSystemSettingValue<bool>(RendszerBeallitasTipusEnum.Foglalkozasnal_csak_osztaly_es_tanora_jellegu_csoport_allithato);
var ocsHelper = new OsztalyCsoportHelper(ConnectionTypeExtensions.GetSessionConnectionType());
var ds = ocsHelper.GetOsztalyCsoportokTanoranKivuliFoglalkozasokhozWithGroup(csakOsztalyEsTanoraJelleguCsoport);
var result = new List<ComboBoxListItem>();
foreach (DataRow dr in ds.Tables[0].Rows)
{
var item = new ComboBoxListItem();
item.Value = dr["ID"].ToString();
item.Text = dr["OsztalyCsoport"].ToString();
if (!string.IsNullOrWhiteSpace(SDAConvert.ToString(dr["CsoportTipusa_DNAME"])))
{
item.GroupName = dr["CsoportTipusa_DNAME"].ToString();
}
else
{
item.GroupName = "";
}
result.Add(item);
}
return Json(ComboBoxHelper.ConvertDataToGroup(result));
}
public JsonResult<List<ComboBoxListItem>> GetTantargyak([DataSourceRequest] DataSourceRequest request, bool filterNincsBeloleOra = false)
{
var helper = new TantargyHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType());
var dictionary = helper.GetTantargyakForDDL(filterNincsBeloleOra: filterNincsBeloleOra, isSzakkepzo: ClaimData.IsSzakkepzoIntezmeny);
var dropdownListItems = new List<ComboBoxListItem>();
foreach (var item in dictionary)
{
var sli = new ComboBoxListItem() { Text = item.Value, Value = item.Key };
dropdownListItems.Add(sli);
}
return Json(dropdownListItems);
}
public JsonResult<List<ComboBoxListItem>> GetErtekelesTipus()
{
return Json(FrameworkEnumExtensions.EnumToList((int)GeneratedAdatszotarTipusEnum.ErtekelesMod, ClaimData.SelectedTanevID.Value, true).ToComboBoxItemList());
}
public JsonResult<List<ComboBoxListItem>> GetTema(int osztcsop, int targy)
{
var helper = new TanoraHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType());
var list = helper.GetTemaIdAndNameForNaplozasDDL(targy, osztcsop).ToComboBoxItemList();
return Json(list);
}
public JsonResult<DataTable> CheckTanarOra(CalendarModel model)
{
var helper = new OrarendHelper(ConnectionTypeExtensions.GetSessionConnectionType());
var data = helper.CheckTanarOra(model.Start, model.End, model.HelyettesitoId.Value, model.Hanyadikora, isNapirend: false, isEgyediHelyettesites: false);
return Json(data.Tables[0]);
}
[ApiRolePackageAuthorize(KretaClaimPackages.Naplo.ClaimValue, KretaClaimPackages.Adminisztrator.ClaimValue)]
public JsonResult<List<ComboBoxListItem>> GetTorvenyKategoriaList()
{
var dictionary = FrameworkEnumExtensions.EnumToList((int)GeneratedAdatszotarTipusEnum.TevekenysegTipus, ClaimData.SelectedTanevID.Value);
List<ComboBoxListItem> list = new List<ComboBoxListItem>();
foreach (var item in dictionary)
{
ComboBoxListItem ci = new ComboBoxListItem() { Text = item.Value, Value = item.Key };
list.Add(ci);
}
return Json(list);
}
public JsonResult<List<ComboBoxListItem>> GetTanarList()
{
return Json(GetTanarDictionary().ToComboBoxItemList());
}
public List<System.Web.Mvc.SelectListItem> GetTanarListItems()
{
return GetTanarDictionary().ToSelectListItemList();
}
private static IDictionary<string, string> GetTanarDictionary()
{
IDictionary<string, string> list;
var helper = new TanarHelper(ConnectionTypeExtensions.GetSessionConnectionType());
list = helper.GetTanarok(string.Empty, oktatasiAzonositoval: false);
list.Remove("");
return list;
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public IHttpActionResult DeleteTanora(TanoraMuveletek pram)
{
return base.DeleteTanora(pram);
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
/// TODO: (DevKornél) string resx-ből
/// TODO: (DevKornél) pram rename
public IHttpActionResult OraOsszevonasDelete(TanoraMuveletek pram)
{
try
{
LicenceHelper.LicenceWait(ClaimData.LicenceDatum);
var helper = new TanoraHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType());
helper.NaplozasTorlese(pram.CalendarModel.EventId);
return Json(new { Title = StringResourcesUtil.GetString(366) /*Siker*/, Text = StringResourcesUtil.GetString(3211) /*Sikeres törlés*/});
}
catch (Exception ex)
{
throw new StatusError(HttpStatusCode.InternalServerError, StringResourcesUtil.GetString(3212) /*Törlés sikertelen*/)
{
UnHandledException = ex
};
}
}
[HttpGet]
public bool IsTanitasiNap(DateTime date)
{
var tanevrendHelper = new TanevrendHelper(ConnectionTypeExtensions.GetSessionConnectionType());
var isTanitasiNap = tanevrendHelper.IsTanitasiNap(date, null);
return isTanitasiNap;
}
[HttpGet]
public int GetOsztalyCsoportTerem(int? osztalyCsoportId)
{
if (osztalyCsoportId > 0)
{
return new OsztalyCsoportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetOsztalyCsoportTeremId(osztalyCsoportId.Value);
}
return 0;
}
[HttpGet]
public int GetTeremByFoglalkozas(int? foglalkozasId)
{
if (foglalkozasId > 0)
{
var helper = new TantargyFelosztasHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType());
return helper.GetTeremByFoglalkozas(foglalkozasId.Value);
}
return 0;
}
[HttpGet]
public bool IsOrarendiNap(DateTime date)
{
var tanevrendHelper = new TanevrendHelper(ConnectionTypeExtensions.GetSessionConnectionType());
var isOrarendiNap = tanevrendHelper.IsOrarendiNap(date, null);
return isOrarendiNap;
}
[HttpGet]
public bool EnabledNemKotottMunkaidoRogzitese(DateTime date)
{
var tanevrendHelper = new TanevrendHelper(ConnectionTypeExtensions.GetSessionConnectionType());
var enabledNemKotottMunkaidoRogzitese = tanevrendHelper.EnabledNemKotottMunkaidoRogzitese(date);
return enabledNemKotottMunkaidoRogzitese;
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public HttpResponseMessage SaveHaziFeladat(TanoraNaplozasRogzites model)
{
if (string.IsNullOrWhiteSpace(model.HaziFeladatNaplozasRogzites.HaziFeladat) && !model.HaziFeladatNaplozasRogzites.Hatarido.HasValue && model.HaziFeladatNaplozasRogzites.Id.HasValue)
{
new DktFeladatHelper(ConnectionTypeExtensions.GetSessionConnectionType()).DeleteHazi(model.HaziFeladatNaplozasRogzites.Id.Value, _coreApiClient);
return new HttpResponseMessage(HttpStatusCode.OK);
}
if (string.IsNullOrWhiteSpace(model.HaziFeladatNaplozasRogzites.HaziFeladat))
{
throw new StatusError(HttpStatusCode.BadRequest, OrarendResource.AHaziFeladatSzovegeNemLehetUres);
}
if (!model.HaziFeladatNaplozasRogzites.Hatarido.HasValue)
{
throw new StatusError(HttpStatusCode.BadRequest, OrarendResource.HataridoMegadasaKotelezo);
}
try
{
var orarendiOra = new OrarendiOraHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetOrarendiOraById(model.TanoraMuveletek.CalendarModel.EventId);
var co = new BusinessLogic.HelperClasses.TanarHaziFeladatCO
{
Id = model.HaziFeladatNaplozasRogzites.Id,
Szoveg = CommonUtils.CreateLinksInText(model.HaziFeladatNaplozasRogzites.HaziFeladat),
TanitasiOraId = null,
TantargyId = orarendiOra.TantargyId,
FeladasDatuma = model.TanoraMuveletek.CalendarModel.Start.Date,
Hatarido = model.HaziFeladatNaplozasRogzites.Hatarido.Value,
HelyettesitoId = model.TanoraMuveletek.CalendarModel.HelyettesitoId,
IsTanarRogzitette = true,
OrarendiOraId = model.TanoraMuveletek.CalendarModel.EventId,
Oraszam = model.TanoraMuveletek.CalendarModel.Hanyadikora,
Idopont = model.TanoraAdatokRogzites.OraKezdete,
OsztalyCsoportId = orarendiOra.OsztalyCsoportId,
RogzitoId = ClaimData.FelhasznaloId,
IntezmenyId = ClaimData.IntezmenyId,
IntezmenyAzonosito = ClaimData.IntezmenyAzonosito,
TanevId = ClaimData.SelectedTanevID.Value,
CsatolmanyId = model.HaziFeladatNaplozasRogzites.CsatolmanyId
};
var hfId = new DktFeladatHelper(ConnectionTypeExtensions.GetSessionConnectionType()).SaveOrUpdateTanarHaziFeladat(co, orarendiOra.TanarId, _fileServiceHelper, _coreApiClient);
return Request.CreateResponse(HttpStatusCode.OK, new { HazifeladatId = hfId });
}
catch { throw; }
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public HttpResponseMessage SaveHaziFeladatFromDetail(HaziFeladatNaplozas model)
{
if (string.IsNullOrWhiteSpace(model.HaziFeladat) && !model.Hatarido.HasValue && model.Id.HasValue)
{
new DktFeladatHelper(ConnectionTypeExtensions.GetSessionConnectionType()).DeleteHazi(model.Id.Value, _coreApiClient);
return new HttpResponseMessage(HttpStatusCode.OK);
}
if (string.IsNullOrWhiteSpace(model.HaziFeladat))
{
throw new StatusError(HttpStatusCode.BadRequest, OrarendResource.AHaziFeladatSzovegeNemLehetUres);
}
if (!model.Hatarido.HasValue)
{
throw new StatusError(HttpStatusCode.BadRequest, OrarendResource.HataridoMegadasaKotelezo);
}
try
{
BusinessLogic.HelperClasses.TanarHaziFeladatCO co;
int? tanarId;
if (!model.IsElmaradt)
{
var orarendiOra = new OrarendiOraHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetOrarendiOraById(model.OrarendiOraId.Value);
tanarId = orarendiOra.TanarId;
co = new BusinessLogic.HelperClasses.TanarHaziFeladatCO
{
Id = model.Id,
Szoveg = CommonUtils.CreateLinksInText(model.HaziFeladat),
TanitasiOraId = null,
TantargyId = orarendiOra.TantargyId,
FeladasDatuma = model.NapDatuma.Value,
Hatarido = model.Hatarido.Value,
HelyettesitoId = null,
IsTanarRogzitette = true,
OrarendiOraId = model.OrarendiOraId,
Oraszam = orarendiOra.Oraszam,
Idopont = orarendiOra.OraKezdete,
OsztalyCsoportId = orarendiOra.OsztalyCsoportId,
RogzitoId = ClaimData.FelhasznaloId,
IntezmenyId = ClaimData.IntezmenyId,
IntezmenyAzonosito = ClaimData.IntezmenyAzonosito,
TanevId = ClaimData.SelectedTanevID.Value,
CsatolmanyId = model.CsatolmanyId
};
}
else
{
var tanora = new TanoraHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetTanorakAdatok(model.TanitasiOraId.Value);
tanarId = tanora.Tanar;
co = new BusinessLogic.HelperClasses.TanarHaziFeladatCO
{
Id = model.Id,
Szoveg = CommonUtils.CreateLinksInText(model.HaziFeladat),
TanitasiOraId = model.TanitasiOraId,
TantargyId = tanora.Targy,
FeladasDatuma = model.NapDatuma.Value,
Hatarido = model.Hatarido.Value,
HelyettesitoId = null,
IsTanarRogzitette = true,
OrarendiOraId = null,
Idopont = tanora.OraKezd,
OsztalyCsoportId = tanora.OsztCsop,
RogzitoId = ClaimData.FelhasznaloId,
IntezmenyId = ClaimData.IntezmenyId,
IntezmenyAzonosito = ClaimData.IntezmenyAzonosito,
TanevId = ClaimData.SelectedTanevID.Value,
CsatolmanyId = model.CsatolmanyId
};
}
var hfId = new DktFeladatHelper(ConnectionTypeExtensions.GetSessionConnectionType()).SaveOrUpdateTanarHaziFeladat(co, tanarId, _fileServiceHelper, _coreApiClient);
return Request.CreateResponse(HttpStatusCode.OK, new { HazifeladatId = hfId });
}
catch (BlException ex)
{
throw new StatusError(HttpStatusCode.BadRequest, ex.Message);
}
catch
{
throw;
}
}
[HttpGet]
public JsonResult<CheckFoglalkozasRogzithetoResult> CheckFoglalkozasRogzitheto(DateTime calendarStartDate)
{
var localCalendarstartDate = calendarStartDate.ToLocalTime();
var orarendHelper = new OrarendHelper(ConnectionTypeExtensions.GetSessionConnectionType());
var tanevrendHelper = new TanevrendHelper(ConnectionTypeExtensions.GetSessionConnectionType());
var isOrarendiNap = tanevrendHelper.IsOrarendiNap(localCalendarstartDate, osztalycsoportId: null);
var isTanitasiNap = tanevrendHelper.IsTanitasiNap(localCalendarstartDate, osztalycsoportId: null);
var naplozaras = orarendHelper.GetNaplozarasDate(localCalendarstartDate);
var isCsakErtekelesZarasa = new NaplozarasLogic(ConnectionTypeExtensions.GetSessionConnectionType()).IsCsakErtekelesZarasaBeallitas();
var isNaplozaras = naplozaras >= localCalendarstartDate;
var isNapirendMegnyithato = IsNapirendMegnyithato();
var result = new CheckFoglalkozasRogzithetoResult
{
IsOrarendiNap = isOrarendiNap,
IsTanitasiNap = isTanitasiNap,
IsNaplozaras = isNaplozaras,
IsCsakErtekelesZarasa = isCsakErtekelesZarasa,
IsNapirendMegnyithato = isNapirendMegnyithato
};
return Json(result);
}
private bool IsNapirendMegnyithato()
{
var systemSettingsHelper = new SystemSettingsHelper(ConnectionTypeExtensions.GetSessionConnectionType());
return !systemSettingsHelper.GetSystemSettingValue<bool>(RendszerBeallitasTipusEnum.Pedagogusok_csak_az_eloirt_helyettesiteseiket_regisztralhatjak_a_haladasi_naploban) ||
systemSettingsHelper.GetSystemSettingValue<bool>(RendszerBeallitasTipusEnum.Tanar_vehet_e_fel_orat_maganak) ||
systemSettingsHelper.GetSystemSettingValue<bool>(RendszerBeallitasTipusEnum.Lehet_orat_felvenni_TTF_nelkul);
}
[HttpPost]
public JsonResult<OraCO> GetCsengetesiRendEsOrak(CsengetesiRendOraszamaModel csengetesiRend)
{
var helper = new CsengetesiRendHelper(ConnectionTypeExtensions.GetSessionConnectionType());
var data = helper.GetCsengetesiRendEsOrak(csengetesiRend.AktualisCsengetesiRendId, csengetesiRend.AktualisOraSzam).Tables[0].Rows;
var ora = new OraCO
{
Kezdete = data.Count > 0 ? data[0].Field<DateTime>("Kezdete").TimeOfDay : TimeSpan.Zero,
Vege = data.Count > 0 ? data[0].Field<DateTime>("Vege").TimeOfDay : TimeSpan.Zero
};
return Json(ora);
}
public bool IsHelyettesitesTulora(KeziHelyettesitesIsTuloraModel cm)
{
var helper = new OrarendHelper(ConnectionTypeExtensions.GetSessionConnectionType());
var ds = helper.CheckTanarOra(SDAConvert.ToDateTime(cm.Start).Value, SDAConvert.ToDateTime(cm.End).Value, SDAConvert.ToInt32(cm.HelyettesitettId), SDAConvert.ToNullableInt32(cm.Hanyadikora), SDAConvert.ToBoolean(cm.UseFoglakozas), true);
if (ds != null && ds.Tables.Count > 0)
{
var szuksegesSorok = ds.Tables[0].AsEnumerable().ToList();
if (szuksegesSorok.Count == 1 && szuksegesSorok[0].Field<string>("C_TULORA") == "T")
return true;
}
return false;
}
public class KeziHelyettesitesIsTuloraModel
{
public int HelyettesitettId { get; set; }
public DateTime Start { get; set; }
public DateTime End { get; set; }
public int Hanyadikora { get; set; }
public bool UseFoglakozas { get; set; }
}
}
}

View file

@ -0,0 +1,162 @@
using System;
using System.Collections.Generic;
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.Interfaces;
using Kreta.BusinessLogic.Logic;
using Kreta.BusinessLogic.Security;
using Kreta.BusinessLogic.Utils;
using Kreta.Client.CoreApi;
using Kreta.Core;
using Kreta.Core.Exceptions;
using Kreta.Enums;
using Kreta.Enums.ManualEnums;
using Kreta.Framework.Util;
using Kreta.Resources;
using Kreta.Web.Areas.Orarend.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.Orarend.ApiControllers
{
[ApiRoleClaimsAuthorize(true)]
[ApiRolePackageAuthorize(KretaClaimPackages.Adminisztrator.ClaimValue)]
public class TanoraKeresoApiController : ApiController
{
private IKretaAuthorization Authorization { get; }
private readonly IFileServiceHelper fileServiceHelper;
private readonly ICoreApiClient coreApiClient;
public TanoraKeresoApiController(IKretaAuthorization authorization, IFileServiceHelper fileServiceHelper, ICoreApiClient coreApiClient)
{
Authorization = authorization;
this.fileServiceHelper = fileServiceHelper ?? throw new ArgumentNullException(nameof(fileServiceHelper));
this.coreApiClient = coreApiClient ?? throw new ArgumentNullException(nameof(coreApiClient));
}
[HttpPost]
public DataSourceResult GetTanitasiOraGrid([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<TanitasiOraGridModel>(TanitasiOraGridModel.TanoraExportAttributeId);
var memoryStream = SimpleExportLogic.GetExport(OrarendResource.Tanorak, simpleExportColumnCos, modelList, ClaimData.SelectedTanevID.Value);
return HttpResponseExtensions.GetFileHttpResponse(memoryStream.ToArray(), OrarendResource.ExportFileName);
}
catch (Exception ex)
{
throw new StatusError(HttpStatusCode.BadRequest, ErrorResource.HibaTortentAFajlExportalasaKozben) { UnHandledException = ex };
}
}
private (GridParameters gridParameter, List<TanitasiOraGridModel> modelList) GetGridData(string data, DataSourceRequest request)
{
var model = JsonConvert.DeserializeObject<TanitasiOraSearchModel>(data);
var gridParameter = Converter.GridParameter(request);
var coList = new TanoraHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetTanitasiOraCoList(TanitasiOraSearchModel.ConvertModelToCo(model));
var modelList = new List<TanitasiOraGridModel>();
foreach (var co in coList)
{
var gridModel = new TanitasiOraGridModel(co);
modelList.Add(gridModel);
}
return (gridParameter, modelList);
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public bool DeleteTanora(int tanoraId)
{
try
{
TanoraCO tanora;
var helper = new TanoraHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType());
tanora = helper.GetTanorakAdatok(tanoraId);
var calendarModel = new CalendarModel();
calendarModel.Start = tanora.OraKezd;
calendarModel.End = tanora.OraVeg;
calendarModel.EventId = tanoraId;
calendarModel.EventType = EventTypeEnum.LetezoOraSzerkesztese;
calendarModel.AllDay = false;
calendarModel.EventColor = string.Empty;
calendarModel.OraType = CalendarOraTypeEnum.TanitasiOra;
calendarModel.HelyettesitesId = tanora.HelyettesitesId;
calendarModel.HelyettesitoId = tanora.Helyettesito;
calendarModel.UseFoglakozas = tanora.Fogl.HasValue;
calendarModel.isHelyettesites = tanora.Helyettesito.HasValue;
calendarModel.IsOraOsszevonas = tanora.HelyettesitesTipus == (int)HelyettesitesTipusEnum.oraosszevonas;
calendarModel.Tema = tanora.Tema;
if (!tanora.Tanar.HasValue)
{
throw new StatusError(HttpStatusCode.BadRequest, ErrorResource.HibaTortentAMuveletSoran);
}
var muveletPram = new TanoraMuveletek(tanora.Tanar.Value, calendarModel);
using (var tanariOrarend = new TanariOrarendApiController(Authorization, fileServiceHelper, coreApiClient))
{
tanariOrarend.DeleteTanora(muveletPram);
}
return true;
}
catch (BlException ex)
{
throw new StatusError(HttpStatusCode.BadRequest, ex.Message);
}
}
public JsonResult<List<ComboBoxListItem>> GetCsoportTipusList([DataSourceRequest] DataSourceRequest request)
{
var dictionary = FrameworkEnumExtensions.EnumToList((int)GeneratedAdatszotarTipusEnum.CsoportTipus, ClaimData.SelectedTanevID.Value, false);
return Json(dictionary.ToComboBoxItemList());
}
public JsonResult<List<ComboBoxListItem>> GetFoglalkozasList([DataSourceRequest] DataSourceRequest request)
{
var foglalkozasHelper = new FoglalkozasHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType());
var dictionary = foglalkozasHelper.GetOsszesFoglalkozas();
return Json(dictionary.ToComboBoxItemList());
}
public JsonResult<List<ComboBoxListItem>> GetTantargyList([DataSourceRequest] DataSourceRequest request)
{
var helper = new TantargyHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType());
var dictionary = helper.GetTantargyakForDDL(isSzakkepzo: ClaimData.IsSzakkepzoIntezmeny);
return Json(dictionary.ToComboBoxItemList());
}
}
}