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(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 { eszkozId }; return DeleteSelectedEszkoz(eszkozList); } [HttpPost] [ApiValidateAjaxAntiForgeryToken] public IHttpActionResult DeleteSelectedEszkoz(List 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> GetKategoriaList([DataSourceRequest] DataSourceRequest request) { List items = ((int)GeneratedAdatszotarTipusEnum.EszkozKategoria).GetItemsByType(ClaimData.SelectedTanevID.Value, true).ToComboBoxItemList(); return Json(items); } public JsonResult> GetFelelosList([DataSourceRequest] DataSourceRequest request) { var helper = new AlkalmazottHelper(ConnectionTypeExtensions.GetSessionConnectionType()); var dictionary = helper.GetAlkalmazottak(); var dropdownListItems = new List(); foreach (var item in dictionary) { var sli = new ComboBoxListItem() { Text = item.Value, Value = item.Key }; dropdownListItems.Add(sli); } return Json(dropdownListItems); } public JsonResult> GetTipusList([DataSourceRequest] DataSourceRequest request) { var tipuslist = FrameworkEnumExtensions.EnumToList((int)GeneratedAdatszotarTipusEnum.EszkozTipus, ClaimData.SelectedTanevID.Value); var list = new List(); foreach (var item in tipuslist) { var sli = new ComboBoxListItem() { Text = item.Value, Value = item.Key }; list.Add(sli); } return Json(list); } public JsonResult> GetFelhasznalasList([DataSourceRequest] DataSourceRequest request) { var enumList = FrameworkEnumExtensions.EnumToList((int)GeneratedAdatszotarTipusEnum.EszkozCel, ClaimData.SelectedTanevID.Value); var list = new List(); foreach (var item in enumList) { var sli = new ComboBoxListItem() { Text = item.Value, Value = item.Key }; list.Add(sli); } return Json(list); } } }