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

442 lines
18 KiB
C#

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);
}
}
}