using System; using System.Collections.Generic; using System.Linq; 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.Adminisztrator.ClaimValue, KretaClaimPackages.Dualis_Admin.ClaimValue, KretaClaimPackages.IsSzakiranyuOktatasertFelelos.ClaimValue)] public class BaseCsoportApiController : ApiController { [NonAction] public DataSourceResult GetCsoportGrid(string data, DataSourceRequest request) { var (gridParameter, modelList) = GetGridData(data, request); return modelList.ToDataSourceResult(gridParameter); } public DataSourceResult GetCsoportTanuloi(string csoportId, [System.Web.Http.ModelBinding.ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] DataSourceRequest request) { return OsztalyCsoportLogic.GetCsoportTanuloi(csoportId, request); } [NonAction] public HttpResponseMessage SaveModifiedOrNewCsoport(AlapkepzesCsoportModel model) { try { ModelState.AddRange(AlapkepzesOsztalyCsoportLogic.ValidateCsoport(model)); if (ModelState.IsValid) { AlapkepzesOsztalyCsoportLogic.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); } } [NonAction] public IHttpActionResult DeleteCsoport([FromBody] int csoportID, bool isFromSzervezet) { var csoportList = new List { csoportID }; return DeleteKijeloltCsoportok(csoportList); } [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 DataSourceResult GetCsoportOrarendiOrai(string csoportId, [System.Web.Http.ModelBinding.ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] DataSourceRequest request, bool isFromSzervezet) { return OsztalyCsoportLogic.GetCsoportOrarendiOrai(csoportId, request, isFromSzervezet); } public (GridParameters gridParameter, List modelList) GetGridData(string data, DataSourceRequest request, bool aktualisLetszam = false) { var connection = ConnectionTypeExtensions.GetSessionConnectionType(); var model = JsonConvert.DeserializeObject(data); var gridParameter = Converter.GridParameter(request); int? felhasznaloSzervezetId = null; if (ClaimData.FelhasznaloSzerepkor != SzerepkorTipusEnum.Adminisztrator) { felhasznaloSzervezetId = new SzervezetHelper(connection).GetAlkalmazottSzervezetId(ClaimData.FelhasznaloId); model.SzervezetId = felhasznaloSzervezetId; } var coList = new CsoportHelper(connection).GetCsoportKeresesCoList(model.ConvertToCo(OsztalyCsoportLogic.GetSearchDate()), felhasznaloSzervezetId); var modelList = coList.Select(x => new CsoportGridModel(x, aktualisLetszam)).ToList(); modelList = modelList.SortingAndPaging(gridParameter.OrderDictionary); return (gridParameter, modelList); } public HttpResponseMessage GetExport(string data, DataSourceRequest request, bool isFromSzervezet) { try { var (gridParameter, modelList) = GetGridData(data, request); modelList = modelList.SortingAndPaging(gridParameter.OrderDictionary); var simpleExportColumnCos = SimpleExportLogic.GetSimpleExportColumnCos(isFromSzervezet ? CsoportGridModel.CsoportSzervezetExportAttributeId : CsoportGridModel.CsoportExportAttributeId); var memoryStream = SimpleExportLogic.GetExport(OsztalyCsoportResource.CsoportExportSheetName, simpleExportColumnCos, modelList, ClaimData.SelectedTanevID.Value); var exportFileName = OsztalyCsoportResource.CsoportExportFileName; if (isFromSzervezet) { exportFileName = $"{OsztalyCsoportResource.DualisCsoportokExportFileNev}_{DateTime.Now.Year}_{DateTime.Now.Month}_{DateTime.Now.Day}{Core.Constants.ImportExport.FileExtensionExcelX}"; } return HttpResponseExtensions.GetFileHttpResponse(memoryStream.ToArray(), exportFileName); } catch (Exception ex) { throw new StatusError(HttpStatusCode.BadRequest, ErrorResource.HibaTortentAFajlExportalasaKozben) { UnHandledException = ex }; } } } }