442 lines
18 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|