using System; using System.Collections.Generic; using System.Net; using System.Net.Http; using System.Text; using System.Web.Http; using Kendo.Mvc.UI; using Kreta.BusinessLogic.HelperClasses; using Kreta.BusinessLogic.Helpers; using Kreta.BusinessLogic.Logic; using Kreta.BusinessLogic.Security; using Kreta.Core; using Kreta.Framework.Util; using Kreta.Resources; using Kreta.Web.Areas.Adatszolgaltatasok.Models; using Kreta.Web.Helpers; using Kreta.Web.Helpers.Error; using Kreta.Web.Helpers.Grid; using Kreta.Web.Security; namespace Kreta.Web.Areas.Adatszolgaltatasok.ApiControllers { [ApiRoleClaimsAuthorize(true)] [ApiRolePackageAuthorize(KretaClaimPackages.Adminisztrator.ClaimValue)] public class HittanOraszamApiController : ApiController { public DataSourceResult GetHittanOraszamGrid(DataSourceRequest request) { var (gridParameter, modelList) = GetGridData(request); return modelList.ToDataSourceResult(gridParameter); } public DataSourceResult GetHittanOraszamGridForJanuar(DataSourceRequest request) { var (gridParameter, modelList) = GetGridData(request, forJanuar: true); return modelList.ToDataSourceResult(gridParameter); } private (GridParameters gridParameter, List modelList) GetGridData(DataSourceRequest request, bool forJanuar = false) { var gridParameter = Converter.GridParameter(request); var coList = new AdatszolgaltatasokHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetHittanOraszamCoList(forJanuar); var modelList = new List(); foreach (var co in coList) { var gridModel = new HittanOraszamGridModel(co); modelList.Add(gridModel); } return (gridParameter, modelList); } public HttpResponseMessage GetExportSzeptemberDecember(DataSourceRequest request) { try { var (gridParameter, modelList) = GetGridData(request); return GetExportFile(gridParameter, modelList, AdatszolgaltatasokResource.HittanOraszamSzeptemberDecemberExportSheetName, AdatszolgaltatasokResource.HittanOraszamSzeptemberDecemberExportFileName, ClaimData.SelectedTanevID.Value); } catch (Exception ex) { throw new StatusError(HttpStatusCode.BadRequest, ErrorResource.HibaTortentAFajlExportalasaKozben) { UnHandledException = ex }; } } public HttpResponseMessage GetExportJanuarJunius(DataSourceRequest request) { try { var (gridParameter, modelList) = GetGridData(request, forJanuar: true); return GetExportFile(gridParameter, modelList, AdatszolgaltatasokResource.HittanOraszamJanuarJuniusExportSheetName, AdatszolgaltatasokResource.HittanOraszamJanuarJuniusExportFileName, ClaimData.SelectedTanevID.Value); } catch (Exception ex) { throw new StatusError(HttpStatusCode.BadRequest, ErrorResource.HibaTortentAFajlExportalasaKozben) { UnHandledException = ex }; } } private HttpResponseMessage GetExportFile(GridParameters gridParameter, List modelList, string worksheetName, string fileName, int tanevId) { var orderedList = modelList.SortingAndPaging(gridParameter.OrderDictionary); var simpleExportColumnCos = SimpleExportLogic.GetSimpleExportColumnCos(HittanOraszamGridModel.HittanOraszamExportAttributeId); var memoryStream = SimpleExportLogic.GetExport(worksheetName, simpleExportColumnCos, orderedList, tanevId); return HttpResponseExtensions.GetFileHttpResponse(memoryStream.ToArray(), fileName); } [HttpPost] [ApiValidateAjaxAntiForgeryToken] public HttpResponseMessage Save(HittanOraszamSaveModel model, bool forJanuar = false) { TanevCO tanevCo; var tanev = new TanevHelper(ConnectionTypeExtensions.GetSessionConnectionType()); tanevCo = tanev.GetTanevInfo(); AdatszolgaltatasokHelper helper = new AdatszolgaltatasokHelper(ConnectionTypeExtensions.GetSessionConnectionType()); // kezdőnap januárnál záróév január 1, nem januárnál tanév első napja var startDate = forJanuar ? new DateTime(tanevCo.UtolsoNap.Year, 1, 1) : tanevCo.KezdoNap; // végenap januárnál tanév utolsó napja, nem januárnál kezdő év december 31 var endDate = forJanuar ? tanevCo.UtolsoNap : new DateTime(tanevCo.KezdoNap.Year, 12, 31); StringBuilder errorMsg = new StringBuilder(); foreach (var item in model.oraszamok) { if (errorMsg.Length > 0) { errorMsg.Append("
"); } if (!item.HittanTipusId.HasValue) { errorMsg.Append($"{item.CsoportNev} {AdatszolgaltatasokResource.HittanTipusKotelezo}"); } else if (item.Darabszam.HasValue && item.Darabszam.Value < 0) { errorMsg.Append($"{item.CsoportNev} {AdatszolgaltatasokResource.HittanAdatszolgaltatasDarabszamNegativ}"); } else if (item.Letszam.HasValue && item.Letszam.Value < 0) { errorMsg.Append($"{item.CsoportNev} {AdatszolgaltatasokResource.HittanAdatszolgaltatasLetszamNegativ}"); } else if (item.Darabszam.HasValue && item.Darabszam.Value > 10000) { errorMsg.Append($"{item.CsoportNev} {AdatszolgaltatasokResource.HittanAdatszolgaltatasDarabszamTulNagy}"); } else if (item.Letszam.HasValue && item.Letszam.Value > 10000) { errorMsg.Append($"{item.CsoportNev} {AdatszolgaltatasokResource.HittanAdatszolgaltatasLetszamTulNagy}"); } else { helper.SaveHittanOraszam(item.Id, item.HittanTipusId.Value, item.Darabszam ?? 0, item.Letszam ?? 0, startDate, endDate, forJanuar); } } if (errorMsg.Length > 0) throw new StatusError(HttpStatusCode.BadRequest, errorMsg.ToString()); return new HttpResponseMessage(HttpStatusCode.OK); } [HttpPost] [ApiValidateAjaxAntiForgeryToken] public HttpResponseMessage SaveForJanuar(HittanOraszamSaveModel model) { return Save(model, forJanuar: true); } } }