using System; using System.Collections.Generic; 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.Logic; using Kreta.BusinessLogic.Security; using Kreta.Core; using Kreta.Core.Exceptions; using Kreta.Framework.Entities; using Kreta.Framework.Util; using Kreta.Resources; using Kreta.Web.Areas.Hianyzas.Models; using Kreta.Web.Areas.Tanulo.Helper; using Kreta.Web.Areas.Tanulo.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.Hianyzas.ApiControllers { [ApiRoleClaimsAuthorize(true)] [ApiRolePackageAuthorize(KretaClaimPackages.Adminisztrator.ClaimValue)] public class FelmentesekApiController : ApiController { public DataSourceResult GetFelmentesekGrid(string data, [System.Web.Http.ModelBinding.ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] DataSourceRequest request) { var (gridParameter, modelList) = GetGridData(data, request); return modelList.ToDataSourceResult(gridParameter); } [HttpPost] [ApiValidateAjaxAntiForgeryToken] [ApiRolePackageAuthorize(KretaClaimPackages.Adminisztrator.ClaimValue)] public HttpResponseMessage SaveFelmentes(TanuloFelmentesModel model) { TanuloLogic.TanuloFelmentesCustomValidation(ModelState, model); if (ModelState.IsValid) { try { var helper = new TanuloHelper(ConnectionTypeExtensions.GetSessionConnectionType()); var co = TanuloFelmentesModel.ConvertModelToCo(model); if (co.IsKorabbiMulasztasokEllenorzese && co.Kezdete.Value < DateTime.Now && co.OraMentesites) { var mulasztasDataSet = helper.CheckModosuloKorabbiMulasztasok(co); if (mulasztasDataSet.Tables[0].Rows.Count != 0) { return Request.CreateResponse(HttpStatusCode.OK, mulasztasDataSet.ToDataSourceResult(), Configuration.Formatters.JsonFormatter); } } helper.TanuloFelmentesMentese(co, ClaimData.KovTanevID); return new HttpResponseMessage(HttpStatusCode.OK); } catch (BlException e) { var error = new StatusError(HttpStatusCode.BadRequest, e.Message); throw error; } } return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState); } [HttpPost] [ApiValidateAjaxAntiForgeryToken] [ApiRolePackageAuthorize(KretaClaimPackages.Adminisztrator.ClaimValue)] public HttpResponseMessage DeleteFelmentes([FromBody] int id) { try { var helper = new TanuloHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType()); helper.TanuloFelmentesTorles(id); return new HttpResponseMessage(HttpStatusCode.OK); } catch (EntityDeleteFailedException ex) { var uzenet = string.Format(ErrorResource.NemTorolhetoKapcsolatMiatt, FelmentesResource.Felmentes, ex.ConnectionErrorMessage); throw new StatusError(HttpStatusCode.BadRequest, uzenet); } } public HttpResponseMessage GetExportFelmentesekGrid(string data, [ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] DataSourceRequest request) { try { var (gridParameter, modelList) = GetGridData(data, request, isTeljesFelmentesOka: true); modelList = modelList.SortingAndPaging(gridParameter.OrderDictionary); var simpleExportColumnCos = SimpleExportLogic.GetSimpleExportColumnCos(FelmentesekGridModel.FelmentesekGridExportAttributeId); var memoryStream = SimpleExportLogic.GetExport(FelmentesResource.FelmentesekGridExportSheetName, simpleExportColumnCos, modelList, ClaimData.SelectedTanevID.Value); return HttpResponseExtensions.GetFileHttpResponse(memoryStream.ToArray(), $"{FelmentesResource.FelmentesekGridExportFilename}_{DateTime.Now:yyyy_MM_dd}.xlsx"); } catch (Exception ex) { throw new StatusError(HttpStatusCode.BadRequest, ErrorResource.HibaTortentAFajlExportalasaKozben) { UnHandledException = ex }; } } public HttpResponseMessage GetExportAktivFelmentesek(string data, [ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] DataSourceRequest request) { try { var (gridParameter, modelList) = GetGridData(data, request, false, true); modelList = modelList.SortingAndPaging(gridParameter.OrderDictionary); var simpleExportColumnCos = SimpleExportLogic.GetSimpleExportColumnCos(FelmentesekGridModel.AktivFelmentesekGridExportAttributeId); var memoryStream = SimpleExportLogic.GetExport(FelmentesResource.AktivFelmentesekGridExportSheetName, simpleExportColumnCos, modelList, ClaimData.SelectedTanevID.Value); return HttpResponseExtensions.GetFileHttpResponse(memoryStream.ToArray(), $"{FelmentesResource.AktivFelmentesekGridExportFilename}_{DateTime.Now:yyyy_MM_dd}.xlsx"); } catch (Exception ex) { throw new StatusError(HttpStatusCode.BadRequest, ErrorResource.HibaTortentAFajlExportalasaKozben) { UnHandledException = ex }; } } public HttpResponseMessage GetExportToroltFelmentesek(string data, [ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] DataSourceRequest request) { try { var (gridParameter, modelList) = GetGridData(data, request, true, true); modelList = modelList.SortingAndPaging(gridParameter.OrderDictionary); var simpleExportColumnCos = SimpleExportLogic.GetSimpleExportColumnCos(FelmentesekGridModel.ToroltFelmentesekGridExportAttributeId); var memoryStream = SimpleExportLogic.GetExport(FelmentesResource.ToroltFelmentesekGridExportSheetName, simpleExportColumnCos, modelList, ClaimData.SelectedTanevID.Value); return HttpResponseExtensions.GetFileHttpResponse(memoryStream.ToArray(), $"{FelmentesResource.ToroltFelmentesekGridExportFilename}_{DateTime.Now:yyyy_MM_dd}.xlsx"); } catch (Exception ex) { throw new StatusError(HttpStatusCode.BadRequest, ErrorResource.HibaTortentAFajlExportalasaKozben) { UnHandledException = ex }; } } private (GridParameters gridParameter, List modelList) GetGridData(string data, DataSourceRequest request, bool? torolt = null, bool isTeljesFelmentesOka = false) { var model = JsonConvert.DeserializeObject(data); model.Torolt = torolt; var gridParameter = Converter.GridParameter(request); var coList = new FelmentesHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetFelmentesGrid(model.ToCo()); var modelList = new List(); foreach (var co in coList) { var gridModel = new FelmentesekGridModel(co, isTeljesFelmentesOka); modelList.Add(gridModel); } return (gridParameter, modelList); } } }