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

141 lines
6.7 KiB
C#

using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using System.Web.Http.Results;
using Kendo.Mvc.UI;
using Kreta.BusinessLogic.Classes;
using Kreta.BusinessLogic.Classes.ComboBox;
using Kreta.BusinessLogic.Helpers;
using Kreta.BusinessLogic.Logic;
using Kreta.BusinessLogic.Utils;
using Kreta.Core;
using Kreta.Enums;
using Kreta.Enums.ManualEnums;
using Kreta.Framework.Entities;
using Kreta.Framework.Util;
using Kreta.Resources;
using Kreta.Web.Areas.TanuloErtekeles.Models.TanuloErtekeles;
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.TanuloErtekeles.ApiControllers
{
public class BaseTanuloErtekelesKeresoApiController : ApiController
{
[NonAction]
public HttpResponseMessage GetExport(string data, DataSourceRequest request, SzervezetTipusEnum? szervezetTipus = null)
{
try
{
var (gridParameter, modelList) = GetGridData(data, request, szervezetTipus);
modelList = modelList.SortingAndPaging(gridParameter.OrderDictionary);
var simpleExportColumnCos = SimpleExportLogic.GetSimpleExportColumnCos<TanuloErtekelesListGridModel>(TanuloErtekelesListGridModel.TanuloErtekelesExportAttributeId);
var memoryStream = SimpleExportLogic.GetExport(TanuloErtekelesResource.TanulokJegyeiExportSheetName, simpleExportColumnCos, modelList, ClaimData.SelectedTanevID.Value);
return HttpResponseExtensions.GetFileHttpResponse(memoryStream.ToArray(), TanuloErtekelesResource.TanulokJegyeiExportFileName);
}
catch (Exception ex)
{
throw new StatusError(HttpStatusCode.BadRequest, ErrorResource.HibaTortentAFajlExportalasaKozben) { UnHandledException = ex };
}
}
public (GridParameters gridParameter, List<TanuloErtekelesListGridModel> modelList) GetGridData(string data, DataSourceRequest request, SzervezetTipusEnum? szervezetTipus = null)
{
var model = JsonConvert.DeserializeObject<TanuloErtekelesListModel>(data);
if (szervezetTipus.HasValue)
{
model.SzervezetTipusIdSearch = (int)szervezetTipus;
}
var gridParameter = Converter.GridParameter(request);
var dataSet = new TanuloErtekelesHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetTanuloErtekelesListGridDataSet(model.ToCo(), utolagosOsztalyszures: true);
var kapcsolodoOsztalyCsoportList = new List<int>();
if (model.OsztalyCsoportIdSearch.HasValue && model.KellKapcsolodoCsoportokSearch)
{
kapcsolodoOsztalyCsoportList = new OsztalyCsoportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).ListOsztalyCsoportokKapcsolodoOsztalyCsoportjai(new List<int> { model.OsztalyCsoportIdSearch.Value }).ToList();
}
else if (model.OsztalyCsoportIdSearch.HasValue)
{
kapcsolodoOsztalyCsoportList.Add(model.OsztalyCsoportIdSearch.Value);
}
var modelList = new List<TanuloErtekelesListGridModel>();
foreach (DataRow dataRow in dataSet.Tables[0].Rows)
{
var gridModel = new TanuloErtekelesListGridModel
{
ID = SDAConvert.ToString(dataRow["ID"]),
TanuloNev = SDAConvert.ToString(dataRow["TanuloNev"]),
TanuloNevElotagNelkul = SDAConvert.ToString(dataRow["TanuloNevElotagNelkul"]),
Datum = SDAConvert.ToDateTime(dataRow["Datum"]).Value,
RogzitesDatum = SDAConvert.ToDateTime(dataRow["RogzitesDatum"]).Value,
ErtekeloNyomtatasiNev = SDAConvert.ToString(dataRow["ErtekeloNyomtatasiNev"]) ?? string.Empty,
ErtekeloNyomtatasiNevElotagNelkul = SDAConvert.ToString(dataRow["ErtekeloNyomtatasiNevElotagNelkul"]) ?? string.Empty,
OsztalyCsoportNev = SDAConvert.ToString(dataRow["OsztalyCsoportNev"]) ?? string.Empty,
TantargyNev = SDAConvert.ToString(dataRow["TantargyNev"]) ?? string.Empty,
TipusId_DNAME = SDAConvert.ToString(dataRow["TipusId_DNAME"]) ?? string.Empty,
ErtekelesModId_DNAME = SDAConvert.ToString(dataRow["ErtekelesModId_DNAME"]) ?? string.Empty,
ErtekelesTema = SDAConvert.ToString(dataRow["ErtekelesTema"]) ?? string.Empty,
TanuloErtekelesText = SDAConvert.ToString(dataRow["TanuloErtekelesText"]) ?? string.Empty
};
if (!model.OsztalyCsoportIdSearch.IsEntityId() || (model.OsztalyCsoportIdSearch.IsEntityId() && kapcsolodoOsztalyCsoportList.Contains(SDAConvert.ToInt32(dataRow["OsztalyCsoportId"]))))
{
modelList.Add(gridModel);
}
}
return (gridParameter, modelList);
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public HttpResponseMessage DeleteErtekeles([FromBody] int id)
{
try
{
var helper = new TanuloErtekelesHelper(ConnectionTypeExtensions.GetSessionConnectionType());
helper.DeleteTanuloErtekelesById(id);
return new HttpResponseMessage(HttpStatusCode.OK);
}
catch (EntityDeleteFailedException ex)
{
var uzenet = string.Format(ErrorResource.NemTorolhetoKapcsolatMiatt, TanuloErtekelesResource.Ertekeles, ex.ConnectionErrorMessage);
throw new StatusError(HttpStatusCode.BadRequest, uzenet);
}
}
public JsonResult<List<ComboBoxListItem>> GetOsztalyzatList()
{
var items = FrameworkEnumExtensions.EnumToList((int)GeneratedAdatszotarTipusEnum.OsztalyzatTipus, ClaimData.SelectedTanevID.Value);
return Json(items.OrderBy(x => x.Key).ToDictionary(x => x.Key, x => x.Value).ToComboBoxItemList());
}
public JsonResult<List<ComboBoxListItem>> GetErtekelesTipusList()
{
var items = ((int)GeneratedAdatszotarTipusEnum.ErtekelesTipus).GetItemsByType(ClaimData.SelectedTanevID.Value, true);
return Json(items.ToComboBoxItemList());
}
public JsonResult<List<ComboBoxListItem>> GetSpecialisOsztalyzatList()
{
var items = EnumExtensions.EnumToDictionary<SpecialisErtekelesOsztalyzatEnum>(ClaimData.SelectedTanevID.Value, removeValueList: new List<string> { ((int)SpecialisErtekelesOsztalyzatEnum.None).ToString() });
return Json(items.ToComboBoxItemList());
}
}
}