kreta/KretaWeb/Areas/Adatszolgaltatasok/ApiControllers/HittanOraszamApiController.cs
2024-03-13 00:33:46 +01:00

157 lines
6.7 KiB
C#

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<HittanOraszamGridModel> modelList) GetGridData(DataSourceRequest request, bool forJanuar = false)
{
var gridParameter = Converter.GridParameter(request);
var coList = new AdatszolgaltatasokHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetHittanOraszamCoList(forJanuar);
var modelList = new List<HittanOraszamGridModel>();
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<HittanOraszamGridModel> modelList, string worksheetName, string fileName, int tanevId)
{
var orderedList = modelList.SortingAndPaging(gridParameter.OrderDictionary);
var simpleExportColumnCos = SimpleExportLogic.GetSimpleExportColumnCos<HittanOraszamGridModel>(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("<br />"); }
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);
}
}
}