157 lines
6.7 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|