using System; using System.Collections.Generic; using System.Net; using System.Net.Http; using System.Web.Http; using System.Web.Http.Results; using Kendo.Mvc.UI; using Kreta.BusinessLogic.Helpers; using Kreta.BusinessLogic.Logic; using Kreta.BusinessLogic.Security; using Kreta.Core; using Kreta.Core.Exceptions; using Kreta.Enums; using Kreta.Framework.Util; using Kreta.Resources; using Kreta.Web.Areas.OsztalyCsoport.Logic; 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.EGYMIModul.ClaimValue)] public class EGYMICsoportApiController : ApiController { public DataSourceResult GetCsoportGrid(string data, DataSourceRequest request) { var (gridParameter, modelList) = GetGridData(data, request); return modelList.ToDataSourceResult(gridParameter); } public HttpResponseMessage GetExport(string data, DataSourceRequest request) { try { var (gridParameter, modelList) = GetGridData(data, request); modelList = modelList.SortingAndPaging(gridParameter.OrderDictionary); var simpleExportColumnCos = SimpleExportLogic.GetSimpleExportColumnCos(CsoportGridModel.CsoportExportAttributeId); var memoryStream = SimpleExportLogic.GetExport(OsztalyCsoportResource.CsoportExportSheetName, simpleExportColumnCos, modelList, ClaimData.SelectedTanevID.Value); return HttpResponseExtensions.GetFileHttpResponse(memoryStream.ToArray(), OsztalyCsoportResource.CsoportExportFileName); } catch (Exception ex) { throw new StatusError(HttpStatusCode.BadRequest, ErrorResource.HibaTortentAFajlExportalasaKozben) { UnHandledException = ex }; } } public HttpResponseMessage GetCsoportAktualisLetszamAdataiExport(string data, DataSourceRequest request) { try { var (gridParameter, modelList) = GetGridData(data, request, aktualisLetszam: true); modelList = modelList.SortingAndPaging(gridParameter.OrderDictionary); var simpleExportColumnCos = SimpleExportLogic.GetSimpleExportColumnCos(CsoportGridModel.CsoportExportAttributeId); var memoryStream = SimpleExportLogic.GetExport(OsztalyCsoportResource.CsoportExportSheetName, simpleExportColumnCos, modelList, ClaimData.SelectedTanevID.Value); return HttpResponseExtensions.GetFileHttpResponse(memoryStream.ToArray(), OsztalyCsoportResource.CsoportokAktualisLetszamadataiExportFileName); } catch (Exception ex) { throw new StatusError(HttpStatusCode.BadRequest, ErrorResource.HibaTortentAFajlExportalasaKozben) { UnHandledException = ex }; } } private (GridParameters gridParameter, List modelList) GetGridData(string data, DataSourceRequest request, bool aktualisLetszam = false) { var model = JsonConvert.DeserializeObject(data); var gridParameter = Converter.GridParameter(request); var coList = new CsoportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetCsoportKeresesCoList(model.ConvertToCo(OsztalyCsoportLogic.GetSearchDate())); var modelList = new List(); foreach (var co in coList) { var gridModel = new CsoportGridModel(co, aktualisLetszam); modelList.Add(gridModel); } return (gridParameter, modelList); } public HttpResponseMessage SaveModifiedOrNewCsoport(AlapkepzesCsoportModel model) { try { ModelState.AddRange(EGYMIOsztalyCsoportLogic.ValidateCsoport(model)); if (ModelState.IsValid) { EGYMIOsztalyCsoportLogic.SaveCsoport(model); } else { return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState); } return new HttpResponseMessage(HttpStatusCode.OK); } catch (SDA.DataProvider.UniqueKeyViolationException) { throw new StatusError(HttpStatusCode.BadRequest, OsztalyCsoportResource.AMegadottNevMarLetezik); } catch (BlException e) { throw new StatusError(HttpStatusCode.BadRequest, e.Message); } } public HttpResponseMessage SaveModCsoport(CsoportModModel model) { try { ModelState.AddRange(OsztalyCsoportLogic.ValidateCsoportGroup(model)); if (ModelState.IsValid) { var errorMessage = OsztalyCsoportLogic.SaveCsoportGroup(model); if (!string.IsNullOrWhiteSpace(errorMessage)) { errorMessage = $"{ErrorResource.AzAlabbiOsztalyCsoportokModositasaSikertelenVoltMertVanTanuloBesorolas}{errorMessage}"; return Request.CreateResponse(HttpStatusCode.OK, errorMessage); } } else { return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState); } return new HttpResponseMessage(HttpStatusCode.OK); } catch (BlException e) { throw new StatusError(HttpStatusCode.BadRequest, e.Message); } } [System.Web.Http.HttpPost] public IHttpActionResult DeleteCsoport([FromBody] int csoportID) { var csoportList = new List { csoportID }; return DeleteKijeloltCsoportok(csoportList); } [System.Web.Http.HttpPost] public IHttpActionResult DeleteKijeloltCsoportok(List csoportLista) { var errorMsg = OsztalyCsoportLogic.DeleteCsoportGroup(csoportLista, out bool deleteError); if (deleteError) { throw new StatusError(HttpStatusCode.BadRequest, errorMsg); } return Json(new { Message = errorMsg }); } public VegzosOsztalyModel GetOsztalyEvfolyama(string osztalyId) { return OsztalyCsoportLogic.GetOsztalyEvfolyama(osztalyId); } public int GetOsztalyFeladatEllatasiHelye(int osztalyId) { return OsztalyCsoportLogic.GetOsztalyFeladatEllatasiHelye(osztalyId); } public DataSourceResult GetCsoportTanuloi(string csoportId, [System.Web.Http.ModelBinding.ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] DataSourceRequest request) { return OsztalyCsoportLogic.GetCsoportTanuloi(csoportId, request); } public DataSourceResult GetCsoportFoglalkozasai(int csoportId, [System.Web.Http.ModelBinding.ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] DataSourceRequest request) { return OsztalyCsoportLogic.GetCsoportFoglalkozasai(csoportId, request); } public DataSourceResult GetCsoportOrarendiOrai(string csoportId, [System.Web.Http.ModelBinding.ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] DataSourceRequest request) { return OsztalyCsoportLogic.GetCsoportOrarendiOrai(csoportId, request); } public DataSourceResult GetCsoportTanmenetei(int csoportId, [System.Web.Http.ModelBinding.ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] DataSourceRequest request) { return OsztalyCsoportLogic.GetCsoportTanmenetei(csoportId, request); } public DataSourceResult GetCsoportMegtartottTanorai(string csoportId, [System.Web.Http.ModelBinding.ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] DataSourceRequest request) { return OsztalyCsoportLogic.GetCsoportMegtartottTanorai(csoportId, request); } public DataSourceResult GetCsoportErtekelesListGrid(string csoportId, [System.Web.Http.ModelBinding.ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] DataSourceRequest request) { return OsztalyCsoportLogic.GetCsoportErtekelesListGrid(csoportId, request, (int)OktNevelesiKategoriaEnum.EGYMI); } [System.Web.Http.HttpPost] public JsonResult> GetExportColumns() { List Items = new List(); Items.Add(new ExportColumn() { Field = "Tanev", Title = OsztalyCsoportResource.Tanev }); Items.Add(new ExportColumn() { Field = "csoportNev", Title = OsztalyCsoportResource.CsoportNeve }); Items.Add(new ExportColumn() { Field = "EVFOLYAMTIPUSA_DNAME", Title = OsztalyCsoportResource.Evfolyam }); Items.Add(new ExportColumn() { Field = "CsopTip_DNAME", Title = OsztalyCsoportResource.CsoportTipus }); Items.Add(new ExportColumn() { Field = "OsztalyBontasNev", Title = OsztalyCsoportResource.Osztalybontas }); Items.Add(new ExportColumn() { Field = "Terem", Title = OsztalyCsoportResource.Terem }); Items.Add(new ExportColumn() { Field = "vegzos_BNAME", Title = OsztalyCsoportResource.Vegzos }); Items.Add(new ExportColumn() { Field = "Tanulokszama", Title = OsztalyCsoportResource.TanulokSzama }); return Json(Items); } public HttpResponseMessage SaveNewEgyeniCsoport(EgyeniCsoportModel model) { try { OsztalyCsoportLogic.SaveNewEgyeniCsoport(model); return new HttpResponseMessage(HttpStatusCode.OK); } catch (SDA.DataProvider.UniqueKeyViolationException) { throw new StatusError(HttpStatusCode.BadRequest, CommonResource.AMegadottNevMarLetezik); //A megadott név már létezik } catch (BlException e) { throw new StatusError(HttpStatusCode.BadRequest, e.Message); } } public int? GetOsztalyKepzesiFormaja(int osztalyId) { return OsztalyCsoportLogic.GetOsztalyKepzesiFormaja(osztalyId); } public GyogypedaogiaiLogopediaiOsztalyModel GetOsztalyCsoportByOsztalyId(int osztalyId) { return OsztalyCsoportLogic.GetOsztalyByOsztalyId(osztalyId); } } }