using System; using System.Net; using System.Net.Http; using System.Web.Http; using System.Web.Http.ModelBinding; using Kendo.Mvc.UI; using Kreta.BusinessLogic.Helpers; using Kreta.BusinessLogic.Security; using Kreta.Enums.ManualEnums; using Kreta.Resources; using Kreta.Web.Areas.OsztalyCsoport.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.OsztalyCsoport.ApiControllers { [ApiRoleClaimsAuthorize(true)] [ApiRolePackageAuthorize(KretaClaimPackages.Adminisztrator.ClaimValue)] public class OraSorszamozasHalmazApiController : ApiController { public DataSourceResult GetHalmazGrid(string data, [ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] DataSourceRequest request) { var model = JsonConvert.DeserializeObject(data); var helper = new OraSorszamozasHalmazHelper(ConnectionTypeExtensions.GetSessionConnectionType()) { GridParameters = Converter.GridParameter(request) }; var ds = helper.GetAllPaged(model.ConvertToCO()); return ds.ToDataSourceResult(); } public DataSourceResult GetOsszerendelesGrid(int halmazId) { var helper = new OraSorszamozasHalmazHelper(ConnectionTypeExtensions.GetSessionConnectionType()); var ds = helper.GetOsszerendelesek(halmazId, true); return ds.ToDataSourceResult(); } [HttpPost] [ApiValidateAjaxAntiForgeryToken] public HttpResponseMessage DeleteHalmaz(int id) { new OraSorszamozasHalmazHelper(ConnectionTypeExtensions.GetSessionConnectionType()).Delete(id); return Request.CreateResponse(HttpStatusCode.OK); } [HttpPost] [ApiValidateAjaxAntiForgeryToken] public HttpResponseMessage DeleteOsszerendeles(int id) { new OraSorszamozasHalmazHelper(ConnectionTypeExtensions.GetSessionConnectionType()).DeleteOsszerendeles(id); return Request.CreateResponse(HttpStatusCode.OK); } [HttpPost] [ApiValidateAjaxAntiForgeryToken] public HttpResponseMessage Save(OraSorszamozasHalmazModel model) { try { CustomValidation(ModelState, model); if (ModelState.IsValid) { new OraSorszamozasHalmazHelper(ConnectionTypeExtensions.GetSessionConnectionType()).Save(model.ConvertModelToCo()); return Request.CreateResponse(HttpStatusCode.OK); } return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState); } catch (Exception e) { throw new StatusError(HttpStatusCode.BadRequest, e.Message) { UnHandledException = e }; } } private void CustomValidation(ModelStateDictionary modelState, OraSorszamozasHalmazModel model) { if (!string.IsNullOrWhiteSpace(model.Nev)) { var helper = new OraSorszamozasHalmazHelper(ConnectionTypeExtensions.GetSessionConnectionType()); var result = helper.NevExists(model.Nev, model.ID); if (result) { modelState.AddModelError(nameof(model.Nev), OraSorszamozasHalmazResource.AMegadottNevvelMarLetezikHalmaz); } } if (model.Osszerendelesek == null || model.Osszerendelesek.Count < 1) { modelState.AddModelError(nameof(model.Osszerendelesek), OraSorszamozasHalmazResource.LegalabbEgyOsszerendelesRogziteseKotelezo); } if (model.Tipus == (int)SorszamozasKezdoErtekenekBeallitasa.SorszamozasKezdoErtekeKezzelMegadva) { if (!model.Kezdoertek.HasValue) { modelState.AddModelError(nameof(model.Kezdoertek), OraSorszamozasHalmazResource.AKezdoErtekMegadasaKotelezo); } else { if (model.Kezdoertek.Value < 1) { modelState.AddModelError(nameof(model.Kezdoertek), OraSorszamozasHalmazResource.AKezdoErtekNemLehetKisebbMintEgy); } else { if (model.Kezdoertek.Value > 1000) { modelState.AddModelError(nameof(model.Kezdoertek), OraSorszamozasHalmazResource.AKezdoErtekNemLehetNagyobbMintEzer); } } } } } } }