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

121 lines
5.2 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using System.Web.Http.ModelBinding;
using System.Web.Http.Results;
using Kendo.Mvc.UI;
using Kreta.BusinessLogic.Classes;
using Kreta.BusinessLogic.Exceptions;
using Kreta.BusinessLogic.Helpers;
using Kreta.BusinessLogic.Logic;
using Kreta.BusinessLogic.Security;
using Kreta.Client.KozpontiKreta;
using Kreta.Core;
using Kreta.Core.Configuratiaton.Interface;
using Kreta.Core.Exceptions;
using Kreta.Core.KozpontiModels.MdszModels;
using Kreta.Enums;
using Kreta.Enums.ManualEnums;
using Kreta.Framework.Entities;
using Kreta.Framework.Util;
using Kreta.Resources;
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.Models;
using Kreta.Web.Security;
using Newtonsoft.Json;
using SDA.DataProvider;
namespace Kreta.Web.Areas.Tanulo.ApiControllers
{
public class BaseTanuloApiController : ApiController
{
public readonly IKozpontiKretaConfiguration kozpontiKretaConfiguration;
public BaseTanuloApiController(IKozpontiKretaConfiguration kozpontiKretaConfiguration)
{
this.kozpontiKretaConfiguration = kozpontiKretaConfiguration ?? throw new ArgumentNullException(nameof(kozpontiKretaConfiguration));
}
[NonAction]
public DataSourceResult GetTanuloGrid(string data, DataSourceRequest request, bool isFromSzervezet)
{
var (gridParameter, modelList) = GetGridData(data, request);
return modelList.ToDataSourceResult(gridParameter);
}
[NonAction]
public DataSourceResult GetFelmentesekGrid(string id, [ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] DataSourceRequest request, bool isFromSzervezet)
{
var helper = new TanuloHelper(ConnectionTypeExtensions.GetSessionConnectionType()) { GridParameters = Converter.GridParameter(request) };
var tanuloId = SDAConvert.ToNullableInt32(id);
var dualisKepzesTantargyId = new TantargyHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetDualisKepzesTantargyId();
var result = tanuloId.IsEntityId()
? helper.GetTanulokFelmentesei(new List<int> { tanuloId.Value }, isFromSzervezet, dualisKepzesTantargyId: dualisKepzesTantargyId).ToDataSourceResult()
: new DataSourceResult();
return result;
}
[NonAction]
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<TanuloGridModel>(isFromSzervezet ? TanuloGridModel.DualisTanuloExportAttributeId : TanuloGridModel.TanuloExportAttributeId);
var memoryStream = SimpleExportLogic.GetExport(TanuloResource.TanuloExportSheetName, simpleExportColumnCos, modelList, ClaimData.SelectedTanevID.Value);
return HttpResponseExtensions.GetFileHttpResponse(memoryStream.ToArray(), !isFromSzervezet ? $"{TanuloResource.TanuloExportFileName}.{Constants.ImportExport.FileFormatXlsx}" : $"{TanuloResource.TanuloExportFileName}_{DateTime.Now:yyyy_MM_dd}.{Constants.ImportExport.FileFormatXlsx}");
}
catch (Exception ex)
{
throw new StatusError(HttpStatusCode.BadRequest, ErrorResource.HibaTortentAFajlExportalasaKozben) { UnHandledException = ex };
}
}
[NonAction]
public DataSourceResult GetOsztalyCsoportGrid(string data, [ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] DataSourceRequest request, bool isFromSzervezet)
{
var model = JsonConvert.DeserializeObject<TanuloDetailModel>(data);
var helper = new TanuloHelper(ConnectionTypeExtensions.GetSessionConnectionType())
{
GridParameters = Converter.GridParameter(request),
};
var ds = helper.GetOsztalyCsoport(model.TanuloId, model.FeladatKategoriaId, !model.MegNemAktivOsztalyok, isFromSzervezet);
return ds.ToDataSourceResult();
}
private (GridParameters gridParameter, List<TanuloGridModel> modelList) GetGridData(string data, DataSourceRequest request)
{
data = data.Replace("_", string.Empty);
var model = JsonConvert.DeserializeObject<TanuloSearchModel>(data);
var gridParameter = Converter.GridParameter(request);
var coList = new TanuloHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetTanuloItemCoList(model.ConvertModelToCo(ConnectionTypeExtensions.GetSessionConnectionType(), ClaimData.IsActivTanev));
var modelList = new List<TanuloGridModel>();
foreach (var co in coList)
{
var gridModel = new TanuloGridModel(co);
modelList.Add(gridModel);
}
return (gridParameter, modelList);
}
}
}