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