129 lines
6.7 KiB
C#
129 lines
6.7 KiB
C#
using System.Collections.Generic;
|
|
using System.Data;
|
|
using System.Linq;
|
|
using System.Web.Http;
|
|
using System.Web.Http.ModelBinding;
|
|
using Kendo.Mvc.UI;
|
|
using Kreta.BusinessLogic.Classes;
|
|
using Kreta.BusinessLogic.Helpers;
|
|
using Kreta.BusinessLogic.Security;
|
|
using Kreta.Core;
|
|
using Kreta.Enums;
|
|
using Kreta.Enums.ManualEnums;
|
|
using Kreta.Framework.Util;
|
|
using Kreta.Web.Areas.TanuloErtekeles.Models.TanuloErtekeles;
|
|
using Kreta.Web.Helpers;
|
|
using Kreta.Web.Helpers.Grid;
|
|
using Kreta.Web.Models;
|
|
using Kreta.Web.Security;
|
|
using Newtonsoft.Json;
|
|
|
|
namespace Kreta.Web.Areas.TanuloErtekeles.ApiControllers
|
|
{
|
|
[ApiRoleClaimsAuthorize(true)]
|
|
[ApiRolePackageAuthorize(KretaClaimPackages.Ellenorzo.ClaimValue)]
|
|
public class OsztalyzatokApiController : ApiController
|
|
{
|
|
public DataSourceResult GetOsztalyzatokFeleviErtesitoGrid(string data, [ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] DataSourceRequest request)
|
|
{
|
|
var result = GetOsztalyzatokErtesitoGrid(data, request, (int)ErtekelesTipusEnum.felevi_jegy_ertekeles);
|
|
return result;
|
|
}
|
|
|
|
public DataSourceResult GetOsztalyzatokEvvegiErtesitoGrid(string data, [ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))]
|
|
DataSourceRequest request)
|
|
{
|
|
var result = GetOsztalyzatokErtesitoGrid(data, request, (int)ErtekelesTipusEnum.evvegi_jegy_ertekeles);
|
|
return result;
|
|
}
|
|
|
|
private DataSourceResult GetOsztalyzatokErtesitoGrid(string data, DataSourceRequest request, int ertekelesTipusEnumId)
|
|
{
|
|
var model = JsonConvert.DeserializeObject<OsztalyzatokFeleviEvvegiErtesitoModel>(data);
|
|
var osztalyId = model.OsztalyId;
|
|
|
|
if (!osztalyId.IsEntityId())
|
|
{
|
|
return new DataSourceResult();
|
|
}
|
|
|
|
var helper = new TanuloErtekelesHelper(ConnectionTypeExtensions.GetSessionConnectionType())
|
|
{
|
|
GridParameters = Converter.GridParameter(request)
|
|
};
|
|
var feladatKategoriaId = new OsztalyCsoportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetOsztalyCsoportFeladatKategoria(osztalyId.Value);
|
|
var tanuloErtekelesListModel = new TanuloErtekelesListModel
|
|
{
|
|
TanuloIdSearch = ClaimData.FelhasznaloId,
|
|
TipusIdSearch = ertekelesTipusEnumId,
|
|
OsztalyCsoportIdSearch = osztalyId.Value,
|
|
FeladatKategoriaIdSearch = feladatKategoriaId,
|
|
KellKapcsolodoCsoportokSearch = true
|
|
};
|
|
var dataSet = helper.GetTanuloErtekelesListGridDataSet(tanuloErtekelesListModel.ToCo(), pErtekelesTextTemaval: true);
|
|
var dataTable = dataSet.Tables[0];
|
|
if (feladatKategoriaId != (int)OktNevelesiKategoriaEnum.AlapfokuMuveszetoktatas)
|
|
{
|
|
var datum = new TanevHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetDatumInTanev();
|
|
var tanuloOsztalyId = new TanuloHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType()).GetTanuloOsztalyIdByFeladatKategoria(ClaimData.FelhasznaloId, datum, (OktNevelesiKategoriaEnum)feladatKategoriaId);
|
|
if (!tanuloOsztalyId.IsEntityId())
|
|
{
|
|
dataTable.Rows.Clear();
|
|
}
|
|
else
|
|
{
|
|
var tanuloOsztalyEvfolyamTipusId = new OsztalyCsoportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetOsztalyCsoportEvfolyamTipusId(tanuloOsztalyId.Value);
|
|
var tanuloIdAndFeladatKategoriaIdAndEvfolyamTipusIdList = new List<(int tanuloId, int feladatKategoriaId, int? evfolyamTipusId)>
|
|
{
|
|
(ClaimData.FelhasznaloId, feladatKategoriaId, tanuloOsztalyEvfolyamTipusId)
|
|
};
|
|
helper.RemoveMasEvfolyamTanuloErtekelesek(dataTable, tanuloIdAndFeladatKategoriaIdAndEvfolyamTipusIdList);
|
|
}
|
|
}
|
|
|
|
helper.RemoveTanuloJogosultsagMiattiErtekelesek(new List<int>() { ClaimData.FelhasznaloId }, dataTable);
|
|
|
|
var gridDataSet = dataSet.Tables[0].Rows.Count > 0 ? GetSortedDataSet(dataSet.Tables[0]) : dataSet;
|
|
return gridDataSet.ToDataSourceResult();
|
|
}
|
|
|
|
private DataSet GetSortedDataSet(DataTable dataTable)
|
|
{
|
|
var targyKategoriaTipusDictionaryItemList = ((int)GeneratedAdatszotarTipusEnum.TargyKategoriaTipus).GetItemsByType(ClaimData.SelectedTanevID.Value);
|
|
|
|
dataTable.Columns.Add("TantargyKategoriaOrder");
|
|
dataTable.Columns.Add("FotargyTantargyKategoriaOrder");
|
|
var tanuloErtekelesRows = dataTable.Rows.Cast<DataRow>().ToList();
|
|
foreach (var dataRow in tanuloErtekelesRows)
|
|
{
|
|
var tantargyKategoriaId = SDAConvert.ToNullableInt32(dataRow["TantargyKategoriaId"]);
|
|
dataRow["TantargyKategoriaOrder"] = SDAConvert.ToBooleanFromTF(dataRow["IsMagatartasSzorgalom"]) ? 0 : tantargyKategoriaId.IsEntityId() ? targyKategoriaTipusDictionaryItemList.Single(x => x.Id == tantargyKategoriaId.Value).Order : null;
|
|
|
|
var fotargyTantargyKategoriaId = SDAConvert.ToNullableInt32(dataRow["FotargyTantargyKategoriaId"]);
|
|
dataRow["FotargyTantargyKategoriaOrder"] = fotargyTantargyKategoriaId.IsEntityId() ? targyKategoriaTipusDictionaryItemList.Single(x => x.Id == fotargyTantargyKategoriaId.Value).Order : null;
|
|
}
|
|
|
|
var sortedDataTable = dataTable
|
|
.AsEnumerable()
|
|
.OrderBy(x => SDAConvert.ToBoolean(x["IsFotargy"]) ? SDAConvert.ToNullableInt32(x["TantargyKategoriaOrder"]) ?? 10000 : SDAConvert.ToNullableInt32(x["FotargyTantargyKategoriaOrder"]) ?? 10000)
|
|
.ThenBy(x => SDAConvert.ToBoolean(x["IsFotargy"]) ? SDAConvert.ToString(x["TantargyNev"]) : SDAConvert.ToString(x["FotargyNev"]))
|
|
.ThenBy(x => SDAConvert.ToBoolean(x["IsFotargy"]) ? 0 : 1)
|
|
.ThenBy(x => SDAConvert.ToString(x["TantargyNev"]))
|
|
.CopyToDataTable();
|
|
|
|
var gridDataSet = new DataSet();
|
|
gridDataSet.Tables.Add(sortedDataTable);
|
|
|
|
return gridDataSet;
|
|
}
|
|
|
|
[HttpPost]
|
|
[ApiValidateAjaxAntiForgeryToken]
|
|
public ZaradekModel GetTanuloZaradek(string osztalyId)
|
|
{
|
|
var tanuloCo = new TanuloHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetTanuloiAdatok(ClaimData.FelhasznaloId, kovTanevId: null, ClaimData.IsSelectedTanev20_21OrLater, ClaimData.IsSelectedTanev21_22OrLater, int.Parse(osztalyId));
|
|
|
|
return tanuloCo.Zaradek.TanuloCsoportId.HasValue ? new ZaradekModel(tanuloCo.Zaradek.TanuloCsoportId.Value, tanuloCo.ID.Value) : new ZaradekModel();
|
|
}
|
|
}
|
|
}
|