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,342 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using System.Web.Http.ModelBinding;
using Kendo.Mvc.Extensions;
using Kendo.Mvc.UI;
using Kreta.BusinessLogic.Exceptions;
using Kreta.BusinessLogic.Helpers;
using Kreta.BusinessLogic.Helpers.SystemSettings;
using Kreta.BusinessLogic.Logic;
using Kreta.Client.Eugyintezes.Configuration;
using Kreta.Core;
using Kreta.Core.Exceptions;
using Kreta.Core.FileService;
using Kreta.Enums;
using Kreta.Framework.Entities;
using Kreta.Framework.Util;
using Kreta.Resources;
using Kreta.Web.Areas.Intezmeny.Logic;
using Kreta.Web.Areas.Intezmeny.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.Intezmeny.ApiControllers
{
public class BaseTeremApiController : ApiController
{
protected readonly IFileService FileService;
protected readonly IEugyintezesClientConfiguration EugyintezesClientConfiguration;
public BaseTeremApiController(IFileService fileService, IEugyintezesClientConfiguration eugyintezesClientConfiguration)
{
FileService = fileService;
EugyintezesClientConfiguration = eugyintezesClientConfiguration;
}
public DataSourceResult GetTeremGrid(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, exportAttributeName) = GetGridData(data, request);
modelList = modelList.SortingAndPaging(gridParameter.OrderDictionary);
var simpleExportColumnCos = SimpleExportLogic.GetSimpleExportColumnCos<TeremGridModel>(exportAttributeName);
var memoryStream = SimpleExportLogic.GetExport(IntezmenyResource.ExportSheetName, simpleExportColumnCos, modelList, ClaimData.SelectedTanevID.Value);
return HttpResponseExtensions.GetFileHttpResponse(memoryStream.ToArray(), $"{IntezmenyResource.Termek_Export}_{DateTime.Now:yyyy_MM_dd}.xlsx");
}
catch (Exception ex)
{
throw new StatusError(HttpStatusCode.BadRequest, ErrorResource.HibaTortentAFajlExportalasaKozben) { UnHandledException = ex };
}
}
private (GridParameters gridParameter, List<TeremGridModel> modelList, string exportAttributeName) GetGridData(string data, DataSourceRequest request)
{
var connection = ConnectionTypeExtensions.GetSessionConnectionType();
var model = JsonConvert.DeserializeObject<TeremSearchModel>(data);
var gridParameter = Converter.GridParameter(request);
int? felhasznaloSzervezetId = null;
if (ClaimData.FelhasznaloSzerepkor != SzerepkorTipusEnum.Adminisztrator)
{
felhasznaloSzervezetId = new SzervezetHelper(connection).GetAlkalmazottSzervezetId(ClaimData.FelhasznaloId);
model.SzervezetId = felhasznaloSzervezetId;
}
var coList = new TeremHelper(connection).GetTeremCoList(model.ConvertToCo(), ClaimData.IsAdministrator, felhasznaloSzervezetId);
var modelList = coList.Select(x => new TeremGridModel(x)).ToList();
modelList = modelList.SortingAndPaging(gridParameter.OrderDictionary);
var exportAttributeName = model.IsFromSzervezet ? TeremGridModel.HelyszinExportAttributeId : TeremGridModel.TeremExportAttributeId;
return (gridParameter, modelList, exportAttributeName);
}
public TeremModel GetTeremBaseProperties(int teremID)
{
return TeremLogic.GetTeremBaseProperties(teremID);
}
public DataSourceResult GetTeremOrarendiOrai(string teremID, [ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] DataSourceRequest request)
{
var orarendiOraHelper = new OrarendiOraHelper(ConnectionTypeExtensions.GetSessionConnectionType())
{
GridParameters = Converter.GridParameter(request)
};
DataSet orak = orarendiOraHelper.GetOrarendiOrakForTerem(int.Parse(teremID));
return orak.ToDataSourceResult();
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public HttpResponseMessage SaveModifiedOrNewTerem(TeremModel teremModel)
{
try
{
var teremHelper = new TeremHelper(ConnectionTypeExtensions.GetSessionConnectionType());
var kapcsolodoOraTipusok = teremHelper.GetTeremKapcsolodoOraTipusok(teremModel.TeremId);
TeremModel.ValidateModel(teremModel, kapcsolodoOraTipusok, ModelState);
if (ModelState.IsValid)
{
var terem = TeremLogic.GetTeremBaseProperties(teremModel.TeremId);
var teremBerbeadhatoAlapertek = terem.TeremBerbeadasModel.Berbeadhato;
var teremCO = TeremModel.ConvertModelToCO(teremModel);
var teremId = 0;
if (teremModel.TeremBerbeadasModel.Berbeadhato)
{
if (teremModel.TeremBerbeadasModel.PictureList.Count > 0)
{
var kepInfo = new FileInfo(teremModel.TeremBerbeadasModel.PictureList.Select(x => x.Name).First());
teremCO.KepUtvonal = teremHelper.SaveTeremFiles(FileService, teremModel.TeremBerbeadasModel.PictureList.Select(x => x.ContentAsBase64EncodedString)).First();
teremCO.KepNev = Path.GetFileNameWithoutExtension(kepInfo.Name);
teremCO.KepKiterjesztes = kepInfo.Extension.Replace(".", string.Empty);
}
if (teremModel.TeremBerbeadasModel.Document != null
&& teremModel.TeremBerbeadasModel.Document.Count > 0)
{
var dokumentumInfo = new FileInfo(teremModel.TeremBerbeadasModel.Document.Select(x => x.Name).First());
teremCO.DokumentumUtvonal = teremHelper.SaveTeremFiles(FileService, teremModel.TeremBerbeadasModel.Document.Select(x => x.ContentAsBase64EncodedString)).First();
teremCO.DokumentumNev = Path.GetFileNameWithoutExtension(dokumentumInfo.Name);
teremCO.DokumentumKiterjesztes = dokumentumInfo.Extension.Replace(".", string.Empty);
}
}
if (teremModel.TeremId > 0)
{
teremHelper.UpdateTerem(teremCO);
}
else
{
teremId = teremHelper.InsertTerem(teremCO);
}
if (teremModel.TeremBerbeadasModel.Berbeadhato && teremModel.TeremBerbeadasModel.TeremBerbeadasIdopontokListModel?.Count > 0)
{
//nyakatekert
teremCO.TeremBerbeadasIdopontokCOList.ForEach(item =>
{
if (item.TeremElerhetosegId.HasValue)
{
teremHelper.UpdateTeremElerhetoseg(item);
}
else
{
teremHelper.InsertTeremElerhetoseg(item, teremCO.TeremId ?? teremId);
}
});
}
// Ha bérbeadható, vagy most váltott nem bérbeadható státuszra
if (teremModel.TeremBerbeadasModel.Berbeadhato || teremBerbeadhatoAlapertek)
{
TeremLogic.EugyErtesitesTeremBerbeadhatoStatuszValtozasrol(EugyintezesClientConfiguration);
}
return new HttpResponseMessage(HttpStatusCode.OK);
}
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
}
catch (SDA.DataProvider.UniqueKeyViolationException)
{
throw new StatusError(HttpStatusCode.BadRequest, ErrorResource.MarLetezikTeremIlyenNevvel);
}
catch (EntityDeleteFailedException edfex)
{
throw new StatusError(HttpStatusCode.Forbidden, edfex.Message.Replace("'CONNECTIONS'", edfex.ConnectionErrorMessage));
}
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public IHttpActionResult ValidateSaveModifiedOrNewTerem(TeremModModel model)
{
var systemSettingsHelper = new SystemSettingsHelper(ConnectionTypeExtensions.GetSessionConnectionType());
var naplozasTeremBefogadokepessegSystemSetting = systemSettingsHelper.GetSystemSettingValue<bool>(RendszerBeallitasTipusEnum.Naplozas_terem_befogadokepesseg);
var kapacitastTullepettTermekFigyelmeztetoUzenet = string.Empty;
if (!string.IsNullOrWhiteSpace(model.TeremIDArray) && model.Kapacitas.HasValue && naplozasTeremBefogadokepessegSystemSetting)
{
var h = new TeremHelper(ConnectionTypeExtensions.GetSessionConnectionType());
kapacitastTullepettTermekFigyelmeztetoUzenet = h.ValidateTeremBefogadokepesseg(tervezettKapacitas: model.Kapacitas, teremIdArrayString: model.TeremIDArray);
}
if (!string.IsNullOrWhiteSpace(kapacitastTullepettTermekFigyelmeztetoUzenet))
{
return Json(new { Valid = false, Text = kapacitastTullepettTermekFigyelmeztetoUzenet });
}
return Json(new { Valid = true, Text = "" });
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public HttpResponseMessage SaveModTerem(TeremModModel model)
{
if (ModelState.IsValid)
{
if (model.VizsgaKapacitas > model.Kapacitas)
{
throw new StatusError(HttpStatusCode.BadRequest, ErrorResource.AVizsgaBefogadokepessegNemLehetNagyobbMintABefogadokepesseg);
}
var co = TeremModModel.ConvertModelToCO(model);
var h = new TeremHelper(ConnectionTypeExtensions.GetSessionConnectionType());
string[] teremIDArray;
var errorMsgs = new List<(string errorMsg, HttpStatusCode errorStatusCode)>();
if (string.IsNullOrWhiteSpace(model.TeremIDArray))
{
teremIDArray = new string[] { co.ID.ToString() };
}
else
{
teremIDArray = model.TeremIDArray.Split(',');
}
foreach (var item in teremIDArray)
{
try
{
co.ID = int.Parse(item);
h.TeremTobbesModify(co);
}
catch (BlException e)
{
errorMsgs.Add((e.Message, HttpStatusCode.BadRequest));
continue;
}
catch (EntityDeleteFailedException edfex)
{
errorMsgs.Add((edfex.Message.Replace("'CONNECTIONS'", edfex.ConnectionErrorMessage), HttpStatusCode.Forbidden));
continue;
}
}
if (errorMsgs.Count == 0)
{
return new HttpResponseMessage(HttpStatusCode.OK);
}
var usedErrorStatusCode = errorMsgs.GroupBy(x => x.errorStatusCode).Select(group => new { Key = group.Key, Count = group.Count() }).OrderBy(x => x.Count).First().Key;
throw new StatusError(usedErrorStatusCode, string.Join(Environment.NewLine, errorMsgs.Select(x => x.errorMsg)));
}
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
}
public TeremModModel GetTeremBasePropertiesMod(int teremID)
=> TeremModModel.ConvertCOToModel(new TeremHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetTeremCo(teremID));
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public HttpResponseMessage DeleteTerem([FromBody] int TeremId)
{
try
{
var h = new TeremHelper(ConnectionTypeExtensions.GetSessionConnectionType());
h.DeleteTerem(TeremId);
return new HttpResponseMessage(HttpStatusCode.OK);
}
catch (CannotBeDeletedException ex)
{
throw new StatusError(HttpStatusCode.BadRequest, ex.Message);
}
catch (EntityDeleteFailedException ex)
{
var uzenet = string.Format(ErrorResource.Az0NemTorolhetoMertEgyVagyTobbKapcsolodasaVanKapcsolatok1, IntezmenyResource.Terem, ex.ConnectionErrorMessage);
throw new StatusError(HttpStatusCode.BadRequest, uzenet);
}
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public IHttpActionResult DeleteSelectedTerem(List<int> idList)
{
var h = new TeremHelper(ConnectionTypeExtensions.GetSessionConnectionType());
string errorMsg = string.Empty, entityName = string.Empty;
var counter = 0;
foreach (var id in idList)
{
try
{
h.DeleteTerem(id);
counter++;
}
catch (CannotBeDeletedException ex)
{
errorMsg += $"{ex.Message}{Environment.NewLine}";
continue;
}
catch (EntityDeleteFailedException ex)
{
var teremNev = h.GetTeremNev(id);
var errorMessage = string.Format(ErrorResource.NemTorolhetoKapcsolatMiatt, teremNev, ex.ConnectionErrorMessage);
errorMsg += $"{errorMessage}{Environment.NewLine}{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,351 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Text.RegularExpressions;
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.Logic;
using Kreta.BusinessLogic.Security;
using Kreta.Core;
using Kreta.Framework;
using Kreta.Framework.Entities;
using Kreta.Framework.Util;
using Kreta.Resources;
using Kreta.Web.Areas.Intezmeny.Models;
using Kreta.Web.Helpers;
using Kreta.Web.Helpers.Error;
using Kreta.Web.Helpers.Grid;
using Kreta.Web.Security;
namespace Kreta.Web.Areas.Intezmeny.ApiControllers
{
[ApiRoleClaimsAuthorize(true)]
[ApiRolePackageAuthorize(KretaClaimPackages.Adminisztrator.ClaimValue)]
public class CsengetesiRendApiController : ApiController
{
public DataSourceResult GetCsengetesiRendGrid(string data, DataSourceRequest request)
{
var (gridParameter, modelList) = GetGridData(request);
return modelList.ToDataSourceResult(gridParameter);
}
public HttpResponseMessage GetExport(DataSourceRequest request)
{
try
{
var (gridParameter, modelList) = GetGridData(request);
modelList = modelList.SortingAndPaging(gridParameter.OrderDictionary);
var simpleExportColumnCos = SimpleExportLogic.GetSimpleExportColumnCos<CsengetesiRendGridModel>(CsengetesiRendGridModel.CsengetesiRendExportAttributeId);
var memoryStream = SimpleExportLogic.GetExport(CsengetesiRendResource.CsengetesiRendExportSheetName, simpleExportColumnCos, modelList, ClaimData.SelectedTanevID.Value);
return HttpResponseExtensions.GetFileHttpResponse(memoryStream.ToArray(), CsengetesiRendResource.CsengetesiRendExportFileName);
}
catch (Exception ex)
{
throw new StatusError(HttpStatusCode.BadRequest, ErrorResource.HibaTortentAFajlExportalasaKozben) { UnHandledException = ex };
}
}
private (GridParameters gridParameter, List<CsengetesiRendGridModel> modelList) GetGridData(DataSourceRequest request)
{
var gridParameter = Converter.GridParameter(request);
var coList = new CsengetesiRendHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetCsengetesiRendCoList();
var modelList = new List<CsengetesiRendGridModel>();
foreach (var co in coList)
{
var gridModel = new CsengetesiRendGridModel(co);
modelList.Add(gridModel);
}
return (gridParameter, modelList);
}
public DataSourceResult GetCsengetesiRendOrai(int csrendID, bool onlyReal, [ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] DataSourceRequest request)
{
var helper = new CsengetesiRendOrakHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType());
helper.GridParameters = Converter.GridParameter(request);
var ds = helper.GetCsengetesiRendOraiForGrid(csrendID, onlyReal);
return ds.ToDataSourceResult();
}
public DataSourceResult GetCsengetesiRendTanevrendAdatai(string csrendID, [ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] DataSourceRequest request)
{
var helper = new TanevrendHelper(ConnectionTypeExtensions.GetSessionConnectionType());
helper.GridParameters = Converter.GridParameter(request);
var ds = helper.GetTanevrendByCsengRend(SDAConvert.ToInt32(csrendID));
return ds.ToDataSourceResult();
}
public CsengetesiRendModel GetCsengetesiRendProperties(int csengRendID)
{
var helper = new CsengetesiRendHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType());
var co = helper.GetCsengetesiRendById(csengRendID);
var model = new CsengetesiRendModel();
model.ID = co.ID;
model.Nev = co.Nev;
model.Aktiv = co.Aktiv;
return model;
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public HttpResponseMessage MentesUjModositottCsengRend(SaveCsengetesiRendModel csrendOrak) //CsengetesiRendModel model,
{
try
{
CsengetesiRendModel model = new CsengetesiRendModel();
model.ID = csrendOrak.CsengRendID;
model.Nev = csrendOrak.CsengRendNev;
model.Aktiv = csrendOrak.CsengRendAktiv;
if (string.IsNullOrWhiteSpace(model.Nev.Trim()))
{
ModelState.AddModelError("NevHiba", StringResourcesUtil.GetString(4038)); //A csengetésirend név megadása kötelező.
}
var cshelper = new CsengetesiRendHelper(ConnectionTypeExtensions.GetSessionConnectionType());
var helper = new CsengetesiRendOrakHelper(ConnectionTypeExtensions.GetSessionConnectionType());
if (!ClaimData.IsActivTanev && new CsengetesiRendHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType()).CheckCsengRendNevEgyezes(csrendOrak.CsengRendID, csrendOrak.CsengRendNev))
{
throw new StatusError(HttpStatusCode.BadRequest, StringResourcesUtil.GetString(3796)); //A megadott név már létezik!
}
if (model.ID.Value <= 0)
{
var insertOralista = ConvertModelListToCoList(-1, csrendOrak.Orak, ModelState);
var insertHibaLista = helper.ValidateCsengetesiRendOrak(insertOralista.Where(a => a.Aktiv).ToList());
foreach (var item in insertHibaLista)
{
ModelState.AddModelError("OraHiba", item.Value);
}
}
if (ModelState.IsValid)
{
var csengetesiRendID = cshelper.SaveOrUpdateCsengetesiRend(ConvertModelToCo(model));
var oralista = ConvertModelListToCoList(csengetesiRendID, csrendOrak.Orak, ModelState);
var hibaLista = helper.ValidateCsengetesiRendOrak(oralista.Where(a => a.Aktiv).ToList());
foreach (var item in hibaLista)
{
ModelState.AddModelError("OraHiba", item.Value);
}
if (ModelState.IsValid)
{
helper.SaveCsengetesiRendOraLista(oralista, csrendOrak.IsVisszamenoleges, ClaimData.KovTanevID);
return new HttpResponseMessage(HttpStatusCode.OK);
}
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
}
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
}
catch (FormatException)
{
throw new StatusError(HttpStatusCode.BadRequest, StringResourcesUtil.GetString(2484));
}
catch (SDA.DataProvider.UniqueKeyViolationException)
{
throw new StatusError(HttpStatusCode.BadRequest, StringResourcesUtil.GetString(3796)); //A megadott név már létezik!
}
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public HttpResponseMessage SetCsengetesiRendAktiv(CsengetesiRendTorlesModel model)
{
var helper = new CsengetesiRendHelper(ConnectionTypeExtensions.GetSessionConnectionType());
helper.SetCsengetesirend((int)model.ID, true);
int kovTanevId = ClaimData.KovTanevID ?? new TanevHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType()).GetKovetkezoTanev().Key;
if (kovTanevId != default(int) && kovTanevId != ClaimData.SelectedTanevID)
{
helper.FollowUpCsengetesiRend(kovTanevId, (int)model.ID);
}
return new HttpResponseMessage(HttpStatusCode.OK);
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public HttpResponseMessage CsengRendTorles(CsengetesiRendTorlesModel model)
{
try
{
if (model.ID.IsEntityId())
{
var helper = new CsengetesiRendHelper(ConnectionTypeExtensions.GetSessionConnectionType());
var csengetesiRend = helper.GetCsengetesiRendById(model.ID.Value);
if (csengetesiRend.Aktiv)
{
throw new StatusError(HttpStatusCode.BadRequest, Framework.StringResourcesUtil.GetString(3809)); //Aktív csengetési rend nem törölhető!
}
helper.DeleteCsengetesiRend(model.ID.Value);
}
return new HttpResponseMessage(HttpStatusCode.OK);
}
catch (EntityDeleteFailedException ex)
{
var uzenet = string.Format(ErrorResource.NemTorolhetoKapcsolatMiatt, OrarendResource.CsengetesiRend, ex.ConnectionErrorMessage);
throw new StatusError(HttpStatusCode.BadRequest, uzenet);
}
}
[HttpGet]
public bool CsengetesiRendValidacio(int valasztottCsengRendId, int torlendoCsengRendId)
{
var helper = new CsengetesiRendOrakHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType());
CsengetesiRendOraCO valasztottCsengRendResult = helper.GetCsengetesiRendKapcsolodoOra(valasztottCsengRendId);
CsengetesiRendOraCO torlendoCsengRendResult = helper.GetCsengetesiRendKapcsolodoOra(torlendoCsengRendId);
bool isFullValid = false;
if (valasztottCsengRendResult.MinOraszam == torlendoCsengRendResult.MinOraszam && valasztottCsengRendResult.MaxOraszam == torlendoCsengRendResult.MaxOraszam)
{
var valasztottCsengRendOraKezdet = helper.GetCsengetesiRendKapcsolodoOraKezdeteVege(valasztottCsengRendId);
var torlendoCsengRendOraVeg = helper.GetCsengetesiRendKapcsolodoOraKezdeteVege(torlendoCsengRendId);
if (valasztottCsengRendOraKezdet.Count == torlendoCsengRendOraVeg.Count && !valasztottCsengRendOraKezdet.Except(torlendoCsengRendOraVeg).Any())
{
isFullValid = true;
}
}
else
{
throw new StatusError(HttpStatusCode.BadRequest, CsengetesiRendResource.OraszamNemEgyezik);
}
return isFullValid;
}
[HttpGet]
public void CsengetesiRendUpdateAndDel(int valasztottCsengRendId, int torlendoCsengRendId)
{
var helper = new CsengetesiRendOrakHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType());
CsengetesiRendOraCO torlendoCsengRendResult = helper.GetCsengetesiRendKapcsolodoOra(torlendoCsengRendId);
if (torlendoCsengRendResult.Aktiv == false)
{
var csRendHelper = new CsengetesiRendHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType());
if (torlendoCsengRendResult.ID.HasValue)
{
helper.UpdateCsengetesiRend(valasztottCsengRendId, torlendoCsengRendId);
csRendHelper.DeleteCsengetesiRend(torlendoCsengRendId);
}
}
else
{
throw new StatusError(HttpStatusCode.BadRequest, CsengetesiRendResource.AktivCsengRendNemTorolheto);
}
}
[HttpGet]
public CsengetesiRendOraCO CsengetesiRendDetails(int csengRendID)
{
return new CsengetesiRendOrakHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetCsengetesiRendKapcsolodoOra(csengRendID);
}
#region Converters
private CsengetesiRendCO ConvertModelToCo(CsengetesiRendModel model)
{
var co = new CsengetesiRendCO();
co.ID = model.ID;
co.Nev = model.Nev.Trim();
co.Aktiv = model.Aktiv;
return co;
}
private List<CsengetesiRendOraCO> ConvertModelListToCoList(int csengetesiRendId, List<CsengetesiRendOraModel> modelList, ModelStateDictionary modelState)
{
var colist = new List<CsengetesiRendOraCO>();
Regex regex = new Regex(Core.Constants.RegularExpressions.TimePicker);
foreach (CsengetesiRendOraModel item in modelList)
{
var co = new CsengetesiRendOraCO();
co.ID = item.ID;
co.CsengetesiRendID = csengetesiRendId;
co.Oraszam = item.Oraszam;
co.Aktiv = item.Aktiv;
if (item.Aktiv)
{
if (string.IsNullOrWhiteSpace(item.Kezd))
{
modelState.AddModelError(nameof(item.Kezd), string.Format(CsengetesiRendResource.KezdeteKotelezo, item.Oraszam));
}
else
{
if (!regex.IsMatch(item.Kezd))
{
modelState.AddModelError(nameof(item.Kezd), string.Format(CsengetesiRendResource.KezdeteRosszFormatum, item.Oraszam));
}
else
{
var split = item.Kezd.Split(':');
co.Kezd = new DateTime(1900, 01, 01);
co.Kezd = co.Kezd.AddHours(SDAConvert.ToInt32(split[0])).AddMinutes(SDAConvert.ToInt32(split[1]));
}
}
if (string.IsNullOrWhiteSpace(item.Veg))
{
modelState.AddModelError(nameof(item.Veg), string.Format(CsengetesiRendResource.VegeKotelezo, item.Oraszam));
}
else
{
if (!regex.IsMatch(item.Veg))
{
modelState.AddModelError(nameof(item.Veg), string.Format(CsengetesiRendResource.VegeRosszFormatum, item.Oraszam));
}
else
{
var split = item.Veg.Split(':');
co.Veg = new DateTime(1900, 01, 01);
co.Veg = co.Veg.AddHours(SDAConvert.ToInt32(split[0])).AddMinutes(SDAConvert.ToInt32(split[1]));
}
}
}
colist.Add(co);
}
return colist;
}
#endregion
}
}

View file

@ -0,0 +1,18 @@
using Kreta.BusinessLogic.Security;
using Kreta.Client.Eugyintezes.Configuration;
using Kreta.Core.FileService;
using Kreta.Web.Security;
namespace Kreta.Web.Areas.Intezmeny.ApiControllers
{
[ApiRoleClaimsAuthorize(true)]
[ApiRolePackageAuthorize(KretaClaimPackages.Adminisztrator.ClaimValue, KretaClaimPackages.Dualis_Admin.ClaimValue)]
[Attributes.KretaGlobalLanguageChangeApiActionFilter(LanguageCode = "hu-Dualis")]
public class DualisAdminTeremApiController : BaseTeremApiController
{
public DualisAdminTeremApiController(IFileService fileService, IEugyintezesClientConfiguration eugyintezesClientConfiguration)
: base(fileService, eugyintezesClientConfiguration)
{
}
}
}

View file

@ -0,0 +1,442 @@
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.Security;
using Kreta.BusinessLogic.Utils;
using Kreta.Core;
using Kreta.Enums;
using Kreta.Framework;
using Kreta.Framework.Entities;
using Kreta.Framework.Util;
using Kreta.Resources;
using Kreta.Web.Areas.Intezmeny.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.Intezmeny.ApiControllers
{
[ApiRoleClaimsAuthorize(true)]
[ApiRolePackageAuthorize(KretaClaimPackages.Adminisztrator.ClaimValue)]
public class EszkozokApiController : ApiController
{
public DataSourceResult GetEszkozokGrid(string data, [ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] DataSourceRequest request)
{
EszkozSearchModel model = JsonConvert.DeserializeObject<EszkozSearchModel>(data);
var ehelper = new EszkozHelper(ConnectionTypeExtensions.GetSessionConnectionType());
ehelper.GridParameters = Converter.GridParameter(request);
var eszkozok = ehelper.EszkozKereses(model.ConvertToCo(ClaimData.SelectedTanevID.Value));
return eszkozok.ToDataSourceResult();
}
public EszkozModel GetEszkozProperties(int eszkozId)
{
EszkozCO co;
EszkozHelper ehelper = new EszkozHelper(ConnectionTypeExtensions.GetSessionConnectionType());
co = ehelper.GetEszkozCo(eszkozId);
return ConvertCOtoModel(co);
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public HttpResponseMessage SaveModifiedOrNewEszkoz(EszkozModel model)
{
if (!ClaimData.EszkozKezelesEnabled)
{
throw new StatusError(HttpStatusCode.Forbidden, ErrorResource.NincsJogaAMuveletVegrehajtasahoz);
}
if (ModelState.IsValid)
{
int ideiEv = System.DateTime.Now.Year;
if (model.GyartasiEv < ideiEv - 100 || model.GyartasiEv > ideiEv)
{
//A gyártási év nem lehet száz évnél régebbi, és újabb, mint az idei év
throw new StatusError(HttpStatusCode.BadRequest, StringResourcesUtil.GetString(3828));
}
if (Convert.ToDateTime(model.BeszerzesDatum).Date > System.DateTime.Now.Date)
{
//A beszerzési dátum nem lehet későbbi, mint a mai nap
throw new StatusError(HttpStatusCode.BadRequest, StringResourcesUtil.GetString(3831));
}
if (model.BeszerzesDatum?.Year < model.GyartasiEv)
{
throw new StatusError(HttpStatusCode.BadRequest, IntezmenyResource.BeszerzesDatumaNemLehetKorabbbanMintGyartasiEv);
}
EszkozHelper h = new EszkozHelper(ConnectionTypeExtensions.GetSessionConnectionType());
if (h.GetEszkozByName(model.Nev, model.ID, model.TeremID.Value, model.Jelleg ?? (int)Enums.EszkozJellegEnum.na))
{
throw new StatusError(HttpStatusCode.BadRequest, EszkozResource.MegadottNevvelMarSzerepelEszkoz);
}
EszkozCO co = Convert_Model_to_CO(model);
if (model.ID.HasValue && model.ID > 0)
{
h.UpdateEszkozCo(co);
}
else
{
h.InsertEszkozCo(co);
}
return new HttpResponseMessage(HttpStatusCode.OK);
}
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
}
public EszkozCsopModModel GetCsopEszkozProperties(int eszkozId)
{
if (!ClaimData.EszkozKezelesEnabled)
{
throw new StatusError(HttpStatusCode.Forbidden, ErrorResource.NincsJogaAMuveletVegrehajtasahoz);
}
EszkozCO co;
EszkozHelper ehelper = new EszkozHelper(ConnectionTypeExtensions.GetSessionConnectionType());
co = ehelper.GetEszkozCo(eszkozId);
EszkozCsopModModel model = new EszkozCsopModModel();
model.EszkozId = eszkozId;
model.EszkozNev = co.Nev;
model.TeremID = co.TeremID;
model.Tipus = co.Tipus;
model.Kategoria = co.Kategoria;
model.BeszerzesDatum = co.BeszerzesDatum;
model.Darabszam = co.Darabszam;
model.SzemelyiFelelos = co.SzemelyiFelelos;
model.GyartasiEv = co.GyartasiEv;
//Statisztikai jellemzők
model.PedagogusHozzaferhet = co.PedagogusHozzaferhet;
model.TanuloHozzaferhet = co.TanuloHozzaferhet;
model.Multimedias = co.Multimedias;
model.HalozatiKapcsolat = co.HalozatiKapcsolat;
model.Hordozhato = co.Hordozhato;
model.InternetKapcsolat = co.InternetKapcsolat;
model.Berelt = co.Berelt;
model.Tartozek = co.Tartozek;
model.TartozekHivatkozas = co.TartozekHivatkozas;
model.Celja = co.Celja;
model.NemMukodik = co.NemMukodik;
return model;
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public HttpResponseMessage TeremValidacio(EszkozModel model)
{
if (!ClaimData.EszkozKezelesEnabled)
{
throw new StatusError(HttpStatusCode.Forbidden, ErrorResource.NincsJogaAMuveletVegrehajtasahoz);
}
if (model.ID.IsEntityId() && new EszkozHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetEszkozByIds(model.ID.ToString(), model.TeremID.Value))
{
ModelState.AddModelError(nameof(model.TeremID), EszkozResource.MegadottNevvelMarSzerepelTomegesEszkoz);
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
}
return new HttpResponseMessage(HttpStatusCode.OK);
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public HttpResponseMessage TeremValidacioTobbes(EszkozCsopModModel model)
{
if (!ClaimData.EszkozKezelesEnabled)
{
throw new StatusError(HttpStatusCode.Forbidden, ErrorResource.NincsJogaAMuveletVegrehajtasahoz);
}
if (new EszkozHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetEszkozByIds(model.EszkozIdArray.TrimEnd(' ').TrimEnd(','), model.TeremID.Value))
{
ModelState.AddModelError(nameof(model.TeremID), EszkozResource.MegadottNevvelMarSzerepelTomegesEszkoz);
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
}
return new HttpResponseMessage(HttpStatusCode.OK);
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public HttpResponseMessage SaveCsopModifiedEszkozok(EszkozCsopModModel model)
{
if (!ClaimData.EszkozKezelesEnabled)
{
throw new StatusError(HttpStatusCode.Forbidden, ErrorResource.NincsJogaAMuveletVegrehajtasahoz);
}
if (ModelState.IsValid)
{
int ideiEv = System.DateTime.Now.Year;
if (model.GyartasiEv < ideiEv - 100 || model.GyartasiEv > ideiEv)
{
//A gyártási év nem lehet száz évnél régebbi, és újabb, mint az idei év
throw new StatusError(HttpStatusCode.BadRequest, StringResourcesUtil.GetString(3828));
}
if (Convert.ToDateTime(model.BeszerzesDatum).Date > System.DateTime.Now.Date)
{
//A beszerzési dátum nem lehet későbbi, mint a mai nap
throw new StatusError(HttpStatusCode.BadRequest, StringResourcesUtil.GetString(3831));
}
if (model.BeszerzesDatum?.Year < model.GyartasiEv)
{
throw new StatusError(HttpStatusCode.BadRequest, IntezmenyResource.BeszerzesDatumaNemLehetKorabbbanMintGyartasiEv);
}
string[] eszkozArray;
if (!string.IsNullOrWhiteSpace(model.EszkozIdArray))
{
eszkozArray = model.EszkozIdArray.Split(',');
}
else
{
eszkozArray = new string[] { model.EszkozId.ToString() };
}
foreach (var item in eszkozArray)
{
if (!string.IsNullOrWhiteSpace(item))
{
var co = new EszkozCO();
co.ID = int.Parse(item);
co.TeremID = model.TeremID;
co.Tipus = model.Tipus;
co.Kategoria = model.Kategoria;
co.BeszerzesDatum = model.BeszerzesDatum;
co.Darabszam = model.Darabszam;
co.SzemelyiFelelos = model.SzemelyiFelelos;
co.GyartasiEv = model.GyartasiEv;
if (model.TanuloHozzaferhet.HasValue)
{
co.TanuloHozzaferhet = model.TanuloHozzaferhet;
}
if (model.PedagogusHozzaferhet.HasValue)
{
co.PedagogusHozzaferhet = model.PedagogusHozzaferhet;
}
if (model.HalozatiKapcsolat.HasValue)
{
co.HalozatiKapcsolat = model.HalozatiKapcsolat;
}
if (model.InternetKapcsolat.HasValue)
{
co.InternetKapcsolat = model.InternetKapcsolat;
}
if (model.Multimedias.HasValue)
{
co.Multimedias = model.Multimedias;
}
if (model.Berelt.HasValue)
{
co.Berelt = model.Berelt;
}
co.Tartozek = model.Tartozek;
if (model.Hordozhato.HasValue)
{
co.Hordozhato = model.Hordozhato;
}
co.Celja = model.Celja;
co.TartozekHivatkozas = model.TartozekHivatkozas;
if (model.NemMukodik.HasValue)
{
co.NemMukodik = model.NemMukodik;
}
var helper = new EszkozHelper(ConnectionTypeExtensions.GetSessionConnectionType());
helper.UpdateCsopEszkoz(co);
}
}
return new HttpResponseMessage(HttpStatusCode.OK);
}
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public IHttpActionResult DeleteEszkoz([FromBody] int eszkozId)
{
var eszkozList = new List<int> { eszkozId };
return DeleteSelectedEszkoz(eszkozList);
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public IHttpActionResult DeleteSelectedEszkoz(List<int> eszkozList)
{
EszkozHelper h = new EszkozHelper(ConnectionTypeExtensions.GetSessionConnectionType());
string errorMsg = string.Empty, entityName = string.Empty;
var counter = 0;
foreach (var eszkozId in eszkozList)
{
try
{
h.DeleteEszkoz(eszkozId);
counter++;
}
catch (EntityDeleteFailedException ex)
{
var eszkoz = h.GetEszkozCo(eszkozId);
entityName = eszkoz.Nev;
errorMsg += string.Format(ErrorResource.EszkozNemTorolhetoKapcsolatMiatt1, entityName, ex.ConnectionErrorMessage) + Environment.NewLine + 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);
}
private EszkozCO Convert_Model_to_CO(EszkozModel model)
{
EszkozCO eszkoz = new EszkozCO()
{
Berelt = model.Berelt.ToNullableInt(),
BeszerzesDatum = model.BeszerzesDatum,
BeszerzesiAr = model.BeszerzesiAr,
Celja = model.Celja,
Darabszam = model.Darabszam,
FelelosNev = model.FelelosNev,
FokonyviSzam = model.FokonyviSzam,
GyariSzam = model.GyariSzam,
GyartasiEv = model.GyartasiEv,
HalozatiKapcsolat = model.HalozatiKapcsolat.ToNullableInt(),
Hordozhato = model.Hordozhato.ToNullableInt(),
ID = model.ID,
InternetKapcsolat = model.InternetKapcsolat.ToNullableInt(),
Jelleg = model.Jelleg,
Kategoria = model.Kategoria,
LeltariSzam = model.LeltariSzam,
MennyisegiEgyseg = model.MennyisegiEgyseg,
Megjegyzes = model.Megjegyzes,
Multimedias = model.Multimedias.ToNullableInt(),
NemMukodik = model.NemMukodik.ToNullableInt(),
Nev = model.Nev,
PedagogusHozzaferhet = model.PedagogusHozzaferhet.ToNullableInt(),
Szallito = model.Szallito,
SzemelyiFelelos = model.SzemelyiFelelos,
TanuloHozzaferhet = model.TanuloHozzaferhet.ToNullableInt(),
Tartozek = model.Tartozek,
TartozekHivatkozas = model.TartozekHivatkozas,
TeremID = model.TeremID ?? -1,
TeremNev = model.TeremNev,
Tipus = model.Tipus,
Vonalkod = model.Vonalkod
};
return eszkoz;
}
private EszkozModel ConvertCOtoModel(EszkozCO co)
{
EszkozModel model = new EszkozModel()
{
Berelt = co.Berelt.ToBool(),
BeszerzesDatum = co.BeszerzesDatum,
BeszerzesiAr = co.BeszerzesiAr,
Celja = co.Celja,
Darabszam = co.Darabszam,
FelelosNev = co.FelelosNev,
FokonyviSzam = co.FokonyviSzam,
GyariSzam = co.GyariSzam,
GyartasiEv = co.GyartasiEv,
HalozatiKapcsolat = co.HalozatiKapcsolat.ToBool(),
Hordozhato = co.Hordozhato.ToBool(),
ID = co.ID,
InternetKapcsolat = co.InternetKapcsolat.ToBool(),
Jelleg = co.Jelleg,
Kategoria = co.Kategoria,
LeltariSzam = co.LeltariSzam,
Megjegyzes = co.Megjegyzes,
MennyisegiEgyseg = co.MennyisegiEgyseg,
NemMukodik = co.NemMukodik.ToBool(),
Multimedias = co.Multimedias.ToBool(),
Nev = co.Nev,
PedagogusHozzaferhet = co.PedagogusHozzaferhet.ToBool(),
Szallito = co.Szallito,
SzemelyiFelelos = co.SzemelyiFelelos,
TanuloHozzaferhet = co.TanuloHozzaferhet.ToBool(),
Tartozek = co.Tartozek,
TartozekHivatkozas = co.TartozekHivatkozas,
TeremID = co.TeremID,
TeremNev = co.TeremNev,
Tipus = co.Tipus,
Vonalkod = co.Vonalkod
};
return model;
}
public JsonResult<List<ComboBoxListItem>> GetKategoriaList([DataSourceRequest] DataSourceRequest request)
{
List<ComboBoxListItem> items = ((int)GeneratedAdatszotarTipusEnum.EszkozKategoria).GetItemsByType(ClaimData.SelectedTanevID.Value, true).ToComboBoxItemList();
return Json(items);
}
public JsonResult<List<ComboBoxListItem>> GetFelelosList([DataSourceRequest] DataSourceRequest request)
{
var helper = new AlkalmazottHelper(ConnectionTypeExtensions.GetSessionConnectionType());
var dictionary = helper.GetAlkalmazottak();
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>> GetTipusList([DataSourceRequest] DataSourceRequest request)
{
var tipuslist = FrameworkEnumExtensions.EnumToList((int)GeneratedAdatszotarTipusEnum.EszkozTipus, ClaimData.SelectedTanevID.Value);
var list = new List<ComboBoxListItem>();
foreach (var item in tipuslist)
{
var sli = new ComboBoxListItem() { Text = item.Value, Value = item.Key };
list.Add(sli);
}
return Json(list);
}
public JsonResult<List<ComboBoxListItem>> GetFelhasznalasList([DataSourceRequest] DataSourceRequest request)
{
var enumList = FrameworkEnumExtensions.EnumToList((int)GeneratedAdatszotarTipusEnum.EszkozCel, ClaimData.SelectedTanevID.Value);
var list = new List<ComboBoxListItem>();
foreach (var item in enumList)
{
var sli = new ComboBoxListItem() { Text = item.Value, Value = item.Key };
list.Add(sli);
}
return Json(list);
}
}
}

View file

@ -0,0 +1,30 @@
using System;
using System.Web.Http;
using Kreta.BusinessLogic.Helpers;
using Kreta.BusinessLogic.Security;
using Kreta.Web.Areas.Intezmeny.Logic;
using Kreta.Web.Areas.Intezmeny.Models;
using Kreta.Web.Helpers;
using Kreta.Web.Security;
namespace Kreta.Web.Areas.Intezmeny.ApiControllers
{
[ApiRoleClaimsAuthorize(true)]
[ApiRolePackageAuthorize(KretaClaimPackages.Ellenorzo.ClaimValue)]
public class FaliujsagApiController : ApiController
{
/// <summary>
/// Visszaadja a tanuló/szülő faliújság-bejegyéseit tartalmazó listát
/// </summary>
/// <returns></returns>
public FaliujsagModel GetFaliujsagBejegyzesek(DateTime? date = null, int? startindex = null, int? range = null)
{
var helper = new FeljegyzesekHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType());
var dataTable = helper.GetFaliujsagonMegjelenoBejegyzesek(date, null, startindex, range);
var converter = new FaliujsagLogic();
return converter.ConvertFaliujsagDataTableToList(dataTable);
}
}
}

View file

@ -0,0 +1,589 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Text.RegularExpressions;
using System.Web.Http;
using Kendo.Mvc.UI;
using Kreta.BusinessLogic.Classes;
using Kreta.BusinessLogic.Exceptions;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.BusinessLogic.Helpers;
using Kreta.BusinessLogic.Interfaces;
using Kreta.BusinessLogic.Security;
using Kreta.BusinessLogic.Utils;
using Kreta.Core;
using Kreta.Core.Exceptions;
using Kreta.Core.Iktato.Poszeidon.Factory.Interface;
using Kreta.Enums;
using Kreta.Framework;
using Kreta.Framework.Entities;
using Kreta.Framework.Util;
using Kreta.Resources;
using Kreta.Web.Areas.Intezmeny.Models;
using Kreta.Web.Helpers;
using Kreta.Web.Helpers.Error;
using Kreta.Web.Helpers.Grid;
using Kreta.Web.Security;
namespace Kreta.Web.Areas.Intezmeny.ApiControllers
{
[ApiRoleClaimsAuthorize(true)]
[ApiRolePackageAuthorize(KretaClaimPackages.Adminisztrator.ClaimValue)]
public class IntezmenyApiController : ApiController
{
private readonly IJiraHelper JiraHelper;
public IntezmenyApiController(IJiraHelper jiraHelper)
{
JiraHelper = jiraHelper ?? throw new ArgumentNullException(nameof(jiraHelper));
}
[HttpGet]
[ApiRolePackageAuthorize(KretaClaimPackages.Adminisztrator.ClaimValue, KretaClaimPackages.Ellenorzo.ClaimValue)]
public IntezmenyModel GetIntezmeny(IIktatoRepositoryFactory iktatoRepositoryFactory, IktatoServiceConfiguration iktatoServiceConfiguration)
{
IntezmenyModel model = new IntezmenyModel();
var helper = new IntezmenyHelper(ConnectionTypeExtensions.GetSessionConnectionType());
IntezmenyCO co = helper.GetIntezmenyiAdatok();
if (co != null)
{
var posziHelper = new PoszeidonHelper(ConnectionTypeExtensions.GetSessionConnectionType(), iktatoRepositoryFactory, iktatoServiceConfiguration);
var dokumentumCO = posziHelper.IntezmenyiKotelezoDokumentum(null, DokumentumTipusEnum.AlapitoOkirat);
co.AlapitoOkirat = dokumentumCO;
dokumentumCO = posziHelper.IntezmenyiKotelezoDokumentum(null, DokumentumTipusEnum.SzervezetiEsMukodesiSzabalyzat);
co.SzervezetiEsMukodesiSzabalyzat = dokumentumCO;
dokumentumCO = posziHelper.IntezmenyiKotelezoDokumentum(null, DokumentumTipusEnum.PedagogiaiProgram);
co.PedagogiaiProgram = dokumentumCO;
dokumentumCO = posziHelper.IntezmenyiKotelezoDokumentum(null, DokumentumTipusEnum.Hazirend);
co.Hazirend = dokumentumCO;
dokumentumCO = posziHelper.IntezmenyiKotelezoDokumentum(ClaimData.SelectedTanevID, DokumentumTipusEnum.Munkaterv);
co.Munkaterv = dokumentumCO;
dokumentumCO = posziHelper.IntezmenyiKotelezoDokumentum(null, DokumentumTipusEnum.mukodesi_engedely);
co.MukodesiEngedely = dokumentumCO;
model = ConvertIntezmenyCoToModel(co);
}
return model;
}
[ApiRolePackageAuthorize(KretaClaimPackages.Adminisztrator.ClaimValue, KretaClaimPackages.Ellenorzo.ClaimValue)]
public DataSourceResult GetIntezmenyMukodesiHelyGrid(string data, [System.Web.Http.ModelBinding.ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] DataSourceRequest request)
{
MukodesiHelyHelper helper = new MukodesiHelyHelper(ConnectionTypeExtensions.GetSessionConnectionType());
helper.GridParameters = Converter.GridParameter(request);
var helyek = helper.GetMukodesiHelyek();
return helyek.ToDataSourceResult();
}
[ApiRolePackageAuthorize(KretaClaimPackages.Adminisztrator.ClaimValue, KretaClaimPackages.Ellenorzo.ClaimValue)]
public DataSourceResult GetIntezmenyFeladatEllatasiHelyGrid(string id, [System.Web.Http.ModelBinding.ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] DataSourceRequest request)
{
FeladatEllatasiHelyHelper helper = new FeladatEllatasiHelyHelper(ConnectionTypeExtensions.GetSessionConnectionType());
helper.GridParameters = Converter.GridParameter(request);
var ds = helper.GetFeladatEllatasiHelyByMukodesiHelyID(int.Parse(id));
return ds.ToDataSourceResult();
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public HttpResponseMessage SaveIntezmeny(IntezmenyModel pmodel)
{
bool isNevOmKodModosithato = ApplicationData.SystemType == SystemType.AZURE || ApplicationData.SystemType == SystemType.NSZFH_EMA;
if (IsOMKodValid(pmodel.OMKod) == false && isNevOmKodModosithato)
{
ModelState.AddModelError("OMKod", StringResourcesUtil.GetString(4483) /*Az OM kódnak 6 számjegyűnek kell lennie!*/);
}
if (!pmodel.Telefon.IsValidPhone())
{
ModelState.AddModelError("Telefon", ErrorResource.ATelefonszamFormatumaNemMegfelelo);
}
if (ClaimData.IsKretaAdministrator)
{
if (string.IsNullOrWhiteSpace(pmodel.AdminEmail))
{
ModelState.AddModelError("AdminEmail", string.Format(ErrorResource.Required, CommonResource.AdminEmail));
}
else if (!pmodel.AdminEmail.IsValidEmail())
{
ModelState.AddModelError("AdminEmail", ErrorResource.EMailCimFormatumaNemMegfelelo);
}
}
if (ModelState.IsValid)
{
var helper = new IntezmenyHelper(ConnectionTypeExtensions.GetSessionConnectionType());
if (ClaimData.IsKretaAdministrator)
{
JiraHelper.ChangeAdminEmail(ClaimData.IntezmenyAzonosito, pmodel.AdminEmail);
}
IntezmenyCO co = ConvertIntezmenyModelToCo(pmodel, isNevOmKodModosithato);
helper.SaveIntezmenyiAdatok(co, isNevOmKodModosithato, ClaimData.IsKretaAdministrator);
ClaimData.OrganizationShortName = co.RovidNev;
ClaimData.OrganizationCode = co.OMKod;
ClaimData.RefreshOrganizationFullAddress(co);
return new HttpResponseMessage(HttpStatusCode.OK);
}
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public HttpResponseMessage SaveMukodesiHely(MukodesiHelyModel pmodel)
{
try
{
if (pmodel.MukodesiHelyTipusa.HasValue && pmodel.MukodesiHelyTipusa.Value == (int)MukodesiHelyTipusEnum.Telephely && !pmodel.TelephelyAnyaintezmeny.HasValue)
{
ModelState.AddModelError(nameof(pmodel.TelephelyAnyaintezmeny), IntezmenyResource.TelephelyAnyaIntezmenyKotelezo);
}
if (ModelState.IsValid)
{
MukodesiHelyHelper helper = new MukodesiHelyHelper(ConnectionTypeExtensions.GetSessionConnectionType());
if (pmodel.MukodesiHelyTipusa != null && (MukodesiHelyTipusEnum)pmodel.MukodesiHelyTipusa == MukodesiHelyTipusEnum.Szekhely)
{
bool vanMasikSzekhely;
if (!pmodel.Id.HasValue)
{
var mukodesiHelyek = helper.GetMukodesiHelyek()
.Tables[0]
.Rows.Cast<DataRow>().ToList();
vanMasikSzekhely = mukodesiHelyek
.Any(CheckSzekhely(pmodel));
}
else
{
var mukodesiHelyek = helper.GetMukodesiHelyek()
.Tables[0]
.Rows.Cast<DataRow>();
vanMasikSzekhely = mukodesiHelyek
.Any(CheckSzekhely(pmodel));
}
if (vanMasikSzekhely)
{
ModelState.AddModelError(nameof(pmodel.MukodesiHelyTipusa), IntezmenyResource.CsakEgySzekhelyLehet);
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
}
}
if (pmodel.MukodesiHelyTipusa.HasValue && pmodel.MukodesiHelyTipusa.Value != (int)MukodesiHelyTipusEnum.Tagintezmeny)
{
pmodel.VezetoNeve = string.Empty;
}
var co = pmodel.ToCo();
if (helper.MukodesiHelyAzonositoExists(co))
{
ModelState.AddModelError(nameof(pmodel.MukodesiHelyAzonosito), ErrorResource.AMegadottMukodesiHelyAzonositoMarLetezik);
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
}
helper.SaveMukodesiHely(co);
return new HttpResponseMessage(HttpStatusCode.OK);
}
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
}
catch (SDA.DataProvider.SDADataProviderException ex)
{
if (ex.Error == SDA.DataProvider.SDADataProviderError.UniqueKeyViolation)
{
ModelState.AddModelError(nameof(pmodel.Nev), ErrorResource.IlyenNevuMukodesiHelyMarLetezik);
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
}
throw;
}
catch (CannotBeInsertedException ex)
{
ModelState.AddModelError(nameof(pmodel.MukodesiHelyAzonosito), ex.Message);
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
}
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
[ApiRolePackageAuthorize(KretaClaimPackages.Adminisztrator.ClaimValue)]
public MukodesiHelyModel GetMukodesiHely([FromBody] int pId)
{
var helper = new MukodesiHelyHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType());
MukodesiHelyCO co = helper.GetMukodesiHelyAdatok(pId);
return new MukodesiHelyModel(co);
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public HttpResponseMessage SaveFeladat(FeladatellatasiHelyModel pmodel)
{
if (ModelState.IsValid)
{
var helper = new FeladatEllatasiHelyHelper(ConnectionTypeExtensions.GetSessionConnectionType());
if (!string.IsNullOrWhiteSpace(pmodel.KIRFeladatellatasiHelySorszama))
{
pmodel.KIRFeladatellatasiHelySorszama = pmodel.KIRFeladatellatasiHelySorszama.Replace("_", string.Empty);
if (!Regex.IsMatch(pmodel.KIRFeladatellatasiHelySorszama, Core.Constants.RegularExpressions.KIRFeladatellatasiHelySorszama))
{
throw new StatusError(HttpStatusCode.BadRequest, ErrorResource.KIRFeladatellatasiHelySorszamCsak3JegyuSzamLehet);
}
}
var co = ConvertFeladatellatasiHelyModelToCo(pmodel);
try
{
helper.SaveFeladatEllatasiHelyAdatok(co);
}
catch (BlException blex)
{
throw new StatusError(HttpStatusCode.BadRequest, blex.Message);
}
return new HttpResponseMessage(HttpStatusCode.OK);
}
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public HttpResponseMessage DeleteMukodesiHely([FromBody] int pID)
{
try
{
MukodesiHelyHelper helper = new MukodesiHelyHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType());
helper.DeleteMukodesiHely(pID);
return new HttpResponseMessage(HttpStatusCode.OK);
}
catch (CannotBeDeletedException ex)
{
throw new StatusError(HttpStatusCode.BadRequest, ex.Message);
}
catch (EntityDeleteFailedException ex)
{
var uzenet = string.Format(ErrorResource.NemTorolhetoKapcsolatMiatt, IntezmenyResource.MukodesiHely, ex.ConnectionErrorMessage);
throw new StatusError(HttpStatusCode.BadRequest, uzenet);
}
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public HttpResponseMessage DeleteFeladat([FromBody] int pID)
{
try
{
FeladatEllatasiHelyHelper helper = new FeladatEllatasiHelyHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType());
helper.FeladatEllatasiHelyTorles(pID);
return new HttpResponseMessage(HttpStatusCode.OK);
}
catch (EntityDeleteFailedException ex)
{
var errorMessage = string.Format(ErrorResource.NemTorolhetoKapcsolatMiatt, CommonResource.Feladatellatasihely, ex.ConnectionErrorMessage);
throw new StatusError(HttpStatusCode.BadRequest, errorMessage);
}
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
[ApiRolePackageAuthorize(KretaClaimPackages.Adminisztrator.ClaimValue)]
public FeladatellatasiHelyModel GetFeladatellatasiHely([FromBody] int pfeladatellatasiHelyId)
{
FeladatellatasiHelyModel model = new FeladatellatasiHelyModel();
var helper = new FeladatEllatasiHelyHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType());
FeladatEllatasiHelyCO co = helper.GetFeladatEllatasiHelyAdatok(pfeladatellatasiHelyId);
if (co != null)
{
model = ConvertFeladatellatasiHelyCoToModel(co);
}
return model;
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
[ApiRolePackageAuthorize(KretaClaimPackages.Adminisztrator.ClaimValue)]
public List<System.Web.Mvc.SelectListItem> GetFeladatListByMukodesiHelyId([FromBody] int pmukodesiHelyId)
{
var helper = new FeladatEllatasiHelyHelper(ConnectionTypeExtensions.GetSessionConnectionType());
var feladatIdList = helper.GetGetFeladatEllatasiHelyIdListByMukodesiHelyID(pmukodesiHelyId);
var feladatDDLDataSource = ((int)GeneratedAdatszotarTipusEnum.OktatasiNevelesiFeladat).GetItemsByType(ClaimData.SelectedTanevID.Value, true).ToSelectItemList();
foreach (var id in feladatIdList)
{
feladatDDLDataSource.RemoveAll(i => i.Value == id.ToString());
}
return feladatDDLDataSource;
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public HttpResponseMessage SetSzekhely([FromBody] int pmukodesiHelyId)
{
var helper = new MukodesiHelyHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType());
helper.SetSzekhely(pmukodesiHelyId);
return new HttpResponseMessage(HttpStatusCode.OK);
}
[ApiRolePackageAuthorize(KretaClaimPackages.Adminisztrator.ClaimValue)]
public FeladatellatasiHelyModel GetFeladatellatasiHelyAlapadatok(int feladellHelyID)
{
var helper = new FeladatEllatasiHelyHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType());
var co = helper.GetFeladatEllatasiHelyAdatok(feladellHelyID);
var model = new FeladatellatasiHelyModel();
model.ID = co.ID;
model.MukodesiHelyNev = co.MukodesiHelyNev;
model.FeladatTipusNev = co.OktatasiNevelesiFeladatNev;
return model;
}
[ApiRolePackageAuthorize(KretaClaimPackages.Adminisztrator.ClaimValue)]
public DataSourceResult GetFeladatellatasiHelyOsztalycsoportjai(string id, [System.Web.Http.ModelBinding.ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] DataSourceRequest request)
{
var helper = new FeladatEllatasiHelyHelper(ConnectionTypeExtensions.GetSessionConnectionType());
helper.GridParameters = Converter.GridParameter(request);
var ds = helper.GetFeladatellatasiHelyOsztalycsoportjai(SDAConvert.ToInt32(id));
return ds.ToDataSourceResult();
}
[ApiRolePackageAuthorize(KretaClaimPackages.Adminisztrator.ClaimValue)]
public DataSourceResult GetFeladatellatasiHelyAlkalmazottjai(string id, [System.Web.Http.ModelBinding.ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] DataSourceRequest request)
{
var helper = new FeladatEllatasiHelyHelper(ConnectionTypeExtensions.GetSessionConnectionType());
helper.GridParameters = Converter.GridParameter(request);
var ds = helper.GetFeladatellatasiHelyAlkalmazottjai(SDAConvert.ToInt32(id));
return ds.ToDataSourceResult();
}
public IntezmenyiDokumentumModel GetIntezmenyiDokumentumModel(Enums.DokumentumTipusEnum dokumentumTipus, IIktatoRepositoryFactory
iktatoRepositoryFactory, IktatoServiceConfiguration iktatoServiceConfiguration)
{
var helper = new PoszeidonHelper(ConnectionTypeExtensions.GetSessionConnectionType(), iktatoRepositoryFactory, iktatoServiceConfiguration);
var co = helper.IntezmenyiKotelezoDokumentum((dokumentumTipus != Enums.DokumentumTipusEnum.Munkaterv) ? null : ClaimData.SelectedTanevID, dokumentumTipus);
return ConvertIntezmenyiDokumentumCoToModel(co);
}
#region Others
private IntezmenyModel ConvertIntezmenyCoToModel(IntezmenyCO co)
{
IntezmenyModel model = new IntezmenyModel()
{
Email = co.Email,
AdminEmail = co.AdminEmail,
Id = co.ID,
IgazgatoNeve = co.Igazgato,
IntezmenyNev = co.Nev,
OMKod = co.OMKod,
RovidNev = co.RovidNev,
Telefon = co.Telefonszam,
EngedelyezettAllashely = co.EngedelyezettAllashely ?? 0,
Orszag = co.Orszag,
Iranyitoszam = co.Iranyitoszam,
Iranyitoszam_Str = co.Iranyitoszam,
HelysegNev = co.Varos,
HelysegNev_Str = co.Varos,
KozteruletTipus = co.KozteruletJellegNev,
KozteruletTipus_Str = co.KozteruletJellegNev,
KozteruletNev = co.Kozterulet,
Emelet = co.Emelet,
Hazszam = co.Hazszam,
Ajto = co.Ajto,
IsSzakkepzo = co.IsSzakkepzo,
JuttatasHatarnap = co.JuttatasHatarnap - 1,
};
model.AlapitoOkirat = ConvertIntezmenyiDokumentumCoToModel(co.AlapitoOkirat);
model.SZMSZ = ConvertIntezmenyiDokumentumCoToModel(co.SzervezetiEsMukodesiSzabalyzat);
model.PedagogiaiProgram = ConvertIntezmenyiDokumentumCoToModel(co.PedagogiaiProgram);
model.Hazirend = ConvertIntezmenyiDokumentumCoToModel(co.Hazirend);
model.Munkaterv = ConvertIntezmenyiDokumentumCoToModel(co.Munkaterv);
model.MukodesiEngedely = ConvertIntezmenyiDokumentumCoToModel(co.MukodesiEngedely);
return model;
}
private IntezmenyCO ConvertIntezmenyModelToCo(IntezmenyModel model, bool isNevOMKodModosithato)
{
IntezmenyCO co = new IntezmenyCO()
{
Email = model.Email,
AdminEmail = model.AdminEmail,
ID = model.Id ?? (int)default,
Igazgato = model.IgazgatoNeve,
RovidNev = model.RovidNev,
Telefonszam = model.Telefon,
EngedelyezettAllashely = model.EngedelyezettAllashely.HasValue ? model.EngedelyezettAllashely : 0,
Orszag = model.Orszag,
Iranyitoszam = model.Iranyitoszam_Str,
Varos = model.HelysegNev_Str,
Kozterulet = model.KozteruletNev,
KozteruletJellegNev = model.KozteruletTipus_Str,
Emelet = model.Emelet,
Hazszam = model.Hazszam,
Ajto = model.Ajto,
IsSzakkepzo = model.IsSzakkepzo,
JuttatasHatarnap = model.JuttatasHatarnap + 1,
};
if (isNevOMKodModosithato)
{
co.Nev = model.IntezmenyNev;
co.OMKod = model.OMKod;
}
if (model.AlapitoOkirat != null)
{
co.AlapitoOkirat = ConvertIntezmenyiDokumentumModelToCo(model.AlapitoOkirat);
}
if (model.SZMSZ != null)
{
co.SzervezetiEsMukodesiSzabalyzat = ConvertIntezmenyiDokumentumModelToCo(model.SZMSZ);
}
if (model.PedagogiaiProgram != null)
{
co.PedagogiaiProgram = ConvertIntezmenyiDokumentumModelToCo(model.PedagogiaiProgram);
}
if (model.Hazirend != null)
{
co.Hazirend = ConvertIntezmenyiDokumentumModelToCo(model.Hazirend);
}
if (model.Munkaterv != null)
{
co.Munkaterv = ConvertIntezmenyiDokumentumModelToCo(model.Munkaterv);
}
if (model.MukodesiEngedely != null)
{
co.MukodesiEngedely = ConvertIntezmenyiDokumentumModelToCo(model.MukodesiEngedely);
}
return co;
}
private FeladatellatasiHelyModel ConvertFeladatellatasiHelyCoToModel(FeladatEllatasiHelyCO co)
{
FeladatellatasiHelyModel model = new FeladatellatasiHelyModel()
{
FeladatTipus = co.OktatasiNevelesiFeladat.Value,
ID = co.ID,
MukodesiHelyID = co.MukodesiHelyID,
KIRFeladatellatasiHelySorszama = co.KIRFeladatellatasiHelySorszama
};
return model;
}
private FeladatEllatasiHelyCO ConvertFeladatellatasiHelyModelToCo(FeladatellatasiHelyModel model)
{
FeladatEllatasiHelyCO co = new FeladatEllatasiHelyCO()
{
OktatasiNevelesiFeladat = model.FeladatTipus,
ID = model.ID,
MukodesiHelyID = model.MukodesiHelyID,
KIRFeladatellatasiHelySorszama = model.KIRFeladatellatasiHelySorszama,
TanevId = ClaimData.SelectedTanevID.Value
};
return co;
}
private IntezmenyiDokumentumModel ConvertIntezmenyiDokumentumCoToModel(IntezmenyiDokumentumCO co)
{
return new IntezmenyiDokumentumModel()
{
Nev = co.Nev,
Tipus = co.Tipus,
FajlNev = co.FajlNev,
Statusz = co.Statusz,
IktatottDokumentumId = co.IktatottDokumentumId
};
}
private IntezmenyiDokumentumCO ConvertIntezmenyiDokumentumModelToCo(IntezmenyiDokumentumModel model)
{
return new IntezmenyiDokumentumCO()
{
Nev = model.Nev,
Tipus = model.Tipus,
FajlNev = model.FajlNev,
Statusz = model.Statusz,
IktatottDokumentumId = model.IktatottDokumentumId
};
}
private bool IsOMKodValid(string omKod)
{
return !string.IsNullOrWhiteSpace(omKod) && Regex.IsMatch(omKod, Core.Constants.RegularExpressions.OMAzonosito);
}
#endregion
#region PrivateMethods
/// <summary>
/// Can be used as the evaluator for iterating through the list of MukodesiHely-s within an Any function to check if there is already a Szekhely which is not the one currently being edited.
/// </summary>
/// <param name="pmodel">MukodesiHely currently being edited.</param>
/// <returns></returns>
private Func<DataRow, bool> CheckSzekhely(MukodesiHelyModel pmodel)
{
return row =>
{
MukodesiHelyTipusEnum castedValue;
var successParse = Enum.TryParse(row["C_MUKODESIHELYTIPUSA"]?.ToString(), out castedValue);
if (successParse && castedValue == MukodesiHelyTipusEnum.Szekhely)
{
if (pmodel.Id.HasValue && row["ID"]?.ToString() == pmodel.Id.Value.ToString())
{
return false;
}
return true;
}
return false;
};
}
#endregion
}
}

View file

@ -0,0 +1,172 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using Kendo.Mvc.UI;
using Kreta.BusinessLogic.Helpers;
using Kreta.BusinessLogic.Interfaces;
using Kreta.BusinessLogic.Logic;
using Kreta.BusinessLogic.Security;
using Kreta.Core;
using Kreta.Framework;
using Kreta.Framework.Util;
using Kreta.Resources;
using Kreta.Web.Areas.Intezmeny.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.Intezmeny.ApiControllers
{
[ApiRoleClaimsAuthorize(true)]
[MvcRolePackageDenyAuthorize(KretaClaimPackages.IsOnlyAlkalmozott.ClaimValue)]
[ApiRolePackageAuthorize(KretaClaimPackages.Adminisztrator.ClaimValue, KretaClaimPackages.IsSzakkepzoIntezmeny.ClaimValue)]
public class OktatottSzakmakApiController : ApiController
{
private readonly IFileServiceHelper _fileServiceHelper;
public OktatottSzakmakApiController(IFileServiceHelper fileServiceHelper)
{
_fileServiceHelper = fileServiceHelper ?? throw new ArgumentNullException(nameof(fileServiceHelper));
}
public DataSourceResult GetOktatottSzakmakGrid(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<OktatottSzakmakGridModel>(OktatottSzakmakGridModel.OktatottSzakmakExportAttributeId);
var memoryStream = SimpleExportLogic.GetExport(UjSzktSzakmajegyzekOsszerendelesResource.ExportDefaultSheetname, simpleExportColumnCos, modelList, ClaimData.SelectedTanevID.Value);
var today = DateTime.Today;
return HttpResponseExtensions.GetFileHttpResponse(memoryStream.ToArray(), string.Format(UjSzktSzakmajegyzekOsszerendelesResource.ExportFileName, $"{today.Year}_{today.Month:00}_{today.Day:00}"));
}
catch (Exception ex)
{
throw new StatusError(HttpStatusCode.BadRequest, ErrorResource.HibaTortentAFajlExportalasaKozben)
{
UnHandledException = ex
};
}
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public HttpResponseMessage OktatottSzakmaMultipleModify(OktatottSzakmaMultipleModifyModel model)
{
if (ModelState.IsValid)
{
try
{
new UjSzktSzakmajegyzekOsszerendelesHelper(ConnectionTypeExtensions.GetSessionConnectionType()).SaveUjSzktSzakmajegyzekOsszerendelesCoList(model.ToCoList(), false);
}
catch (KretaError ke)
{
SDAServer.Instance.Logger.ExceptionThrown(ke);
ModelState.AddModelError("Error", ke.Message);
}
if (ModelState.IsValid)
{
return new HttpResponseMessage(HttpStatusCode.OK);
}
}
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public HttpResponseMessage OktatottSzakmaModify(OktatottSzakmaModifyModel model)
{
if (model.File != null)
{
var maxAllowedFileSizeInBytes = model.MaxAllowedFileSizeInBytes;
if (model.File.Size > maxAllowedFileSizeInBytes)
{
ModelState.AddModelError("Error", string.Format(CommonResource.TulNagyFajl, Math.Round((decimal)maxAllowedFileSizeInBytes / 1024 / 1024)));
}
var allowedFileExtensions = model.AllowedFileExtensions;
if (!allowedFileExtensions.ContainsValue(model.File.Type))
{
ModelState.AddModelError("Error", string.Format(CommonResource.NemMegfeleloFajlKiterjesztes, string.Join(", ", allowedFileExtensions.Select(x => x.Key))));
}
}
if (ModelState.IsValid)
{
try
{
new UjSzktSzakmajegyzekOsszerendelesHelper(ConnectionTypeExtensions.GetSessionConnectionType(), _fileServiceHelper).SaveUjSzktSzakmajegyzekOsszerendelesCo(model.ToCo(), isFileModify: true);
}
catch (KretaError ke)
{
SDAServer.Instance.Logger.ExceptionThrown(ke);
ModelState.AddModelError("Error", ke.Message);
}
if (ModelState.IsValid)
{
return new HttpResponseMessage(HttpStatusCode.OK);
}
}
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
}
public DataSourceResult GetOktatottSzakmaTanuloGrid(string id, DataSourceRequest request)
{
var gridParameter = Converter.GridParameter(request);
var helper = new UjSzktSzakmajegyzekOsszerendelesHelper(ConnectionTypeExtensions.GetSessionConnectionType())
{
GridParameters = gridParameter
};
var searchCo = helper.GetUjSzktSzakmajegyzekOsszerendelesCo(int.Parse(id));
var coList = helper.GetOktatottSzakmaTanuloCoList(searchCo);
var modelList = new List<OktatottSzakmaTanulokGridModel>();
foreach (var co in coList)
{
var gridModel = new OktatottSzakmaTanulokGridModel(co);
modelList.Add(gridModel);
}
return modelList.ToDataSourceResult(gridParameter);
}
private (GridParameters gridParameter, List<OktatottSzakmakGridModel> modelList) GetGridData(string data, DataSourceRequest request)
{
var searchModel = JsonConvert.DeserializeObject<OktatottSzakmakSearchModel>(data);
var gridParameter = Converter.GridParameter(request);
var helper = new UjSzktSzakmajegyzekOsszerendelesHelper(ConnectionTypeExtensions.GetSessionConnectionType())
{
GridParameters = gridParameter
};
var coList = helper.GetUjSzktSzakmajegyzekOsszerendelesCoList(searchModel.ToCo());
var modelList = new List<OktatottSzakmakGridModel>();
foreach (var co in coList)
{
var gridModel = new OktatottSzakmakGridModel(co);
modelList.Add(gridModel);
}
return (gridParameter, modelList);
}
}
}

View file

@ -0,0 +1,301 @@
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;
using Kreta.BusinessLogic.Classes.ComboBox;
using Kreta.BusinessLogic.Exceptions;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.BusinessLogic.Helpers;
using Kreta.BusinessLogic.Logic;
using Kreta.BusinessLogic.Security;
using Kreta.BusinessLogic.Utils;
using Kreta.Core;
using Kreta.Core.Exceptions;
using Kreta.Enums;
using Kreta.Enums.ManualEnums;
using Kreta.Framework;
using Kreta.Framework.Entities;
using Kreta.Framework.Util;
using Kreta.Resources;
using Kreta.Web.Areas.Intezmeny.Logic;
using Kreta.Web.Areas.Intezmeny.Models;
using Kreta.Web.Helpers;
using Kreta.Web.Helpers.Error;
using Kreta.Web.Helpers.Grid;
using Kreta.Web.Models;
using Kreta.Web.Security;
using Newtonsoft.Json;
namespace Kreta.Web.Areas.Intezmeny.ApiControllers
{
[ApiRoleClaimsAuthorize(true)]
[ApiRolePackageAuthorize(KretaClaimPackages.Adminisztrator.ClaimValue)]
public class TanevRendjeApiController : ApiController
{
public DataSourceResult GetTanevRendjeGrid(DataSourceRequest request)
{
var (gridParameter, modelList) = GetGridData(request);
return modelList.ToDataSourceResult(gridParameter);
}
public HttpResponseMessage GetExport(DataSourceRequest request)
{
try
{
var (gridParameter, modelList) = GetGridData(request);
modelList = modelList.SortingAndPaging(gridParameter.OrderDictionary);
var simpleExportColumnCos = SimpleExportLogic.GetSimpleExportColumnCos<TanevRendjeGridModel>(TanevRendjeGridModel.TanevRendjeExportAttributeId);
var memoryStream = SimpleExportLogic.GetExport(TanevResource.TanevRendjeExportSheetName, simpleExportColumnCos, modelList, ClaimData.SelectedTanevID.Value);
return HttpResponseExtensions.GetFileHttpResponse(memoryStream.ToArray(), TanevResource.TanevRendjeExportFileName);
}
catch (Exception ex)
{
throw new StatusError(HttpStatusCode.BadRequest, ErrorResource.HibaTortentAFajlExportalasaKozben) { UnHandledException = ex };
}
}
private (GridParameters gridParameter, List<TanevRendjeGridModel> modelList) GetGridData(DataSourceRequest request)
{
var gridParameter = Converter.GridParameter(request);
var coList = new TanevrendHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetTanevRendjeCoList();
var modelList = new List<TanevRendjeGridModel>();
foreach (var co in coList)
{
var gridModel = new TanevRendjeGridModel(co);
modelList.Add(gridModel);
}
return (gridParameter, modelList);
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public HttpResponseMessage CheckTanevRendjeBeforeSave(TanevRendjeModel model)
{
//utólag egy tanítási nap nem tanítási nappá válik
if (OrarendHelper.NemTanitasiNapTipusok.Contains(model.NapTipusa.Value))
{
var naptariNapHelper = new NaptariNapHelper(ConnectionTypeExtensions.GetSessionConnectionType());
Dictionary<int, string> tanarok = naptariNapHelper.GetNaplozottOrakTanarai(model.Datum);
if (tanarok.Count > 0)
{
var result = new
{
NeedConfirm = true,
ConfirmMessage = StringResourcesUtil.GetString(4806)
//Az alábbi tanárok már naplóztak órát a kiválasztott napon:
+ string.Join(", ", tanarok.Values) + ". "
+ StringResourcesUtil.GetString(3226)
};
return Request.CreateResponse(HttpStatusCode.OK, result);
}
}
return SaveTanevRendje(model);
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public HttpResponseMessage SaveTanevRendje(TanevRendjeModel model)
{
try
{
TanevRendjeLogic.TanevRendjeValidation(ModelState, model);
if (ModelState.IsValid)
{
TanevRendjeLogic.CheckTanevRendjeUtkozes(model);
model = TanevRendjeLogic.SetNapEsHetirend(model);
var tanevrendHelper = new TanevrendHelper(ConnectionTypeExtensions.GetSessionConnectionType());
if (!tanevrendHelper.IsTanoraOrNapirendRogzitheto(model.NapTipusa.Value))
{
model.UresOrarend = false;
model.OrarendiNap = false;
}
var co = new TanevrendCO
{
ID = model.TanevRendjeId,
Tanev = ClaimData.SelectedTanevID.Value,
IntezmenyId = ClaimData.IntezmenyId,
Datum = model.Datum.Value,
Nap = model.Nap,
NapTip = model.NapTipusa,
Hetirend = model.Hetirend,
Megjegyzes = model.Megjegyzes?.Replace("<script>", "").Replace("</script>", ""),
OsszesCsop = model.OsszesCsop,
CsengetesiRend = model.CsengetesiRend,
ElteroOrarendSzerintiTanitasNapDatum = model.ElteroOrarendSzerintiTanitasNapDatum,
UresOrarend = model.UresOrarend,
OrarendiNap = model.UresOrarend || model.OrarendiNap,
IsEgyediNap = TanevRendjeLogic.IsEgyediNap(model)
};
//co.OrarendiNap = TanevRendjeLogic.IsOrarendiNap(model);
tanevrendHelper.SaveOrUpdateTanevRendje(co, model.ModifiedOsztalyCsoportList, model.SelectedOsztalyCsoportIdList);
return new HttpResponseMessage(HttpStatusCode.OK);
}
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
}
catch (BlException e)
{
throw new StatusError(HttpStatusCode.BadRequest, e.Message) { UnHandledException = e.InnerException };
}
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public HttpResponseMessage DeleteTanevRendje(TanevrendDeleteModel model)
{
try
{
var helper = new TanevrendHelper(ConnectionTypeExtensions.GetSessionConnectionType());
helper.DeleteTanevRendjeByID(model.TanevrendjeId, model.EgyediRogzitesTorles);
return new HttpResponseMessage(HttpStatusCode.OK);
}
catch (CannotBeDeletedException e)
{
throw new StatusError(HttpStatusCode.BadRequest, e.Message);
}
catch (EntityDeleteFailedException ex)
{
var uzenet = string.Format(ErrorResource.TanevrendjeNemTorolhetoKapcsolatMiatt, ex.ConnectionErrorMessage);
throw new StatusError(HttpStatusCode.BadRequest, uzenet);
}
}
public DataSourceResult GetTanevRendjeOsztalyCsoportGrid(string data, [ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] DataSourceRequest request)
{
var model = JsonConvert.DeserializeObject<TanevRendjeModel>(data);
int tanevRendjeId = -1;
if (int.TryParse(model.TanevRendjeId?.ToString(), out int resultId))
{
tanevRendjeId = resultId;
}
var helper = new TanevrendHelper(ConnectionTypeExtensions.GetSessionConnectionType())
{
GridParameters = Converter.GridParameter(request)
};
DataSet ds = helper.GetTanevredhezTartozoOsztCsopList(tanevRendjeId, model.FeladatKategoriaId, model.MukodesiHelyId, model.FeladatEllatasiHelyId);
return ds.ToDataSourceResult();
}
public DataSourceResult GetNaptariHetGrid(string data, [ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] DataSourceRequest request)
{
var helper = new NaptariHetHelper(ConnectionTypeExtensions.GetSessionConnectionType())
{
GridParameters = Converter.GridParameter(request)
};
helper.GridParameters.OrderBy = "HetSorszama ASC";
DataSet ds = helper.GetNaptariHetList();
var dataList = new List<NaptariHetGridModel>();
DataTable dt = ds.Tables[0];
foreach (DataRow dr in dt.Rows)
{
var model = new NaptariHetGridModel()
{
ID = dr["ID"].ToString(),
HetSorszama = SDAConvert.ToInt32(dr["HetSorszama"]),
HetKezdoNapja = SDAConvert.ToDateTime(dr["HetKezdoNapja"]).Value,
HetUtolsoNapja = SDAConvert.ToDateTime(dr["HetUtolsoNapja"]).Value,
Hetirend = SDAConvert.ToInt32(dr["Hetirend"]),
};
dataList.Add(model);
}
var dataSourceResult = new DataSourceResult
{
Data = dataList,
Total = Convert.ToInt32(dt.ExtendedProperties["RowCount"])
};
return dataSourceResult;
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public HttpResponseMessage GetHetirendHelyettesitesList(SetHetirendModel model)
{
WarningValidationModel validationMsg = new WarningValidationModel();
if (model.ModifiedHetirendList.Count > 0)
{
var helper = new NaptariHetHelper(ConnectionTypeExtensions.GetSessionConnectionType());
var ds = helper.GetHetirendHelyettesitesList(model.ModifiedHetirendList);
if (ds.Tables[0].Rows.Count > 0)
{
foreach (DataRow row in ds.Tables[0].Rows)
{
validationMsg.Msg += "<br />";
validationMsg.Msg += "<strong>" + HelyettesitesResource.Datum + ":</strong> " + row.Field<DateTime>("Datum").ToShortDateString();
validationMsg.Msg += " <strong>" + HelyettesitesResource.Helyettesito + ":</strong> " + row.Field<string>("Helyettesito");
validationMsg.Msg += " <strong>" + HelyettesitesResource.Helyettesitett + ":</strong> " + row.Field<string>("fHelyettesitett");
validationMsg.Msg += " <strong>" + HelyettesitesResource.OsztalyCsoport + ":</strong> " + row.Field<string>("OsztalyCsoport");
validationMsg.Msg += " <strong>" + HelyettesitesResource.Tantargy + ":</strong> " + row.Field<string>("Tantargy");
}
}
}
if (!string.IsNullOrWhiteSpace(validationMsg.Msg))
{
throw new StatusError(CustomHTTPStatusEnum.WarningMegszakitas, string.Empty) { Json = validationMsg };
}
return new HttpResponseMessage(HttpStatusCode.OK);
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public HttpResponseMessage SetHetirend(SetHetirendModel model)
{
if (model.ModifiedHetirendList.Count > 0)
{
var helper = new NaptariHetHelper(ConnectionTypeExtensions.GetSessionConnectionType());
helper.SetHetirend(model.ModifiedHetirendList);
}
return new HttpResponseMessage(HttpStatusCode.OK);
}
public JsonResult<List<ComboBoxListItem>> GetHetirendList([DataSourceRequest] DataSourceRequest request)
{
IDictionary<string, string> dictionary = FrameworkEnumExtensions.EnumToList((int)GeneratedAdatszotarTipusEnum.HetiRendTipus, ClaimData.SelectedTanevID.Value);
dictionary["0"] = StringResourcesUtil.GetString(4254) /*Szünet*/;
return Json(dictionary.ToComboBoxItemList());
}
public bool GetNaptipusIsTanoraOrTanorakivuli(string napTipusId)
{
var model = new TanevRendjeModel() { NapTipusa = int.Parse(napTipusId) };
return TanevRendjeLogic.IsOrarendiNap(model);
}
}
}

View file

@ -0,0 +1,53 @@
using System.Web.Http;
using System.Web.Http.ModelBinding;
using Kendo.Mvc.Extensions;
using Kendo.Mvc.UI;
using Kreta.BusinessLogic.Helpers;
using Kreta.BusinessLogic.Security;
using Kreta.Client.Eugyintezes.Configuration;
using Kreta.Core.FileService;
using Kreta.Web.Areas.Intezmeny.Logic;
using Kreta.Web.Helpers;
using Kreta.Web.Helpers.Grid;
using Kreta.Web.Security;
namespace Kreta.Web.Areas.Intezmeny.ApiControllers
{
[ApiRoleClaimsAuthorize(true)]
[ApiRolePackageAuthorize(KretaClaimPackages.Adminisztrator.ClaimValue, KretaClaimPackages.Dualis_Admin.ClaimValue)]
public class TeremApiController : BaseTeremApiController
{
public TeremApiController(IFileService fileService, IEugyintezesClientConfiguration eugyintezesClientConfiguration)
: base(fileService, eugyintezesClientConfiguration)
{
}
public DataSourceResult GetTeremEszkozei(string teremID, [ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] DataSourceRequest request)
{
var eszkozHelper = new EszkozHelper(ConnectionTypeExtensions.GetSessionConnectionType());
eszkozHelper.GridParameters = Converter.GridParameter(request);
var eszkozok = eszkozHelper.GetEszkozokForTerem(int.Parse(teremID));
return eszkozok.ToDataSourceResult();
}
public DataSourceResult GetTeremBerbeadasIdopontjai(int teremId)
{
var berbeadasIdopontjai = new TeremHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetTeremBerbeadasIdopontjai(teremId);
return berbeadasIdopontjai.ToDataSourceResult();
}
[HttpGet]
public IHttpActionResult GetPicture(int? teremId, [ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] DataSourceRequest request)
{
return Json(TeremLogic.GetPicture(FileService, teremId).ToDataSourceResult(request));
}
[HttpGet]
public (string FajNev, byte[] Content) GetDocument(int? teremId)
{
return TeremLogic.GetDocument(FileService, teremId);
}
}
}