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

113 lines
6.1 KiB
C#

using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using Kendo.Mvc.UI;
using Kreta.BusinessLogic.Helpers;
using Kreta.BusinessLogic.Security;
using Kreta.Core;
using Kreta.Ellenorzo.BL.VN.Ertekeles.Atlag.OsztalyAtlag;
using Kreta.Ellenorzo.Domain.VN.Common;
using Kreta.Ellenorzo.Domain.VN.Ertekeles.Atlag.OsztalyAtlag;
using Kreta.Ellenorzo.Domain.VN.UniqueIdentifier;
using Kreta.Ellenorzo.Enums;
using Kreta.Enums;
using Kreta.Enums.ManualEnums;
using Kreta.Web.Areas.TanuloErtekeles.Models.TanuloErtekeles;
using Kreta.Web.Helpers;
using Kreta.Web.Helpers.Grid;
using Kreta.Web.Security;
using Newtonsoft.Json;
namespace Kreta.Web.Areas.TanuloErtekeles.ApiControllers
{
[ApiRoleClaimsAuthorize(true)]
[ApiRolePackageAuthorize(KretaClaimPackages.Tanar.ClaimValue, KretaClaimPackages.Osztalyfonok.ClaimValue, KretaClaimPackages.SzuperOsztalyfonok.ClaimValue, KretaClaimPackages.Adminisztrator.ClaimValue, KretaClaimPackages.CsoportVezeto.ClaimValue)]
public class TanuloErtekelesByTanuloApiController : BaseTanuloErtekelesApiController
{
[ApiRolePackageAuthorize(KretaClaimPackages.FelhasznaloMunkakoreNemTiltoListas.ClaimValue, KretaClaimPackages.Osztalyfonok.ClaimValue, KretaClaimPackages.SzuperOsztalyfonok.ClaimValue, KretaClaimPackages.Adminisztrator.ClaimValue, KretaClaimPackages.CsoportVezeto.ClaimValue, KretaClaimPackages.Dualis_Admin.ClaimValue)]
public DataSourceResult GetTanuloErtekelesByTanuloGrid(string data)
{
var model = JsonConvert.DeserializeObject<TanuloErtekelesByTanuloListModel>(data);
int? tanuloId = model.TanuloId;
if (!tanuloId.IsEntityId())
{
return new DataSourceResult();
}
return GetTanuloErtekelesGrid(ClaimData.FelhasznaloId, tanuloId.Value, false, model.OktatasiNevelesiFeladatId, model.IsOsztalyAtlagMegjelenik);
}
[ApiRolePackageAuthorize(KretaClaimPackages.Tanulo.ClaimValue)]
public DataSourceResult GetTanuloErtekelesByTanuloGridTanuloView(string data)
{
var model = JsonConvert.DeserializeObject<TanuloErtekelesByTanuloListModel>(data);
return GetTanuloErtekelesGrid(null, ClaimData.FelhasznaloId, true, model.OktatasiNevelesiFeladatId, model.IsOsztalyAtlagMegjelenik);
}
private DataSourceResult GetTanuloErtekelesGrid(int? tanarId, int tanuloId, bool isTanuloView, int oktatasiNevelesiFeladatId, bool isOsztalyAtlagMegjelenik)
{
DateTime datum = new TanevHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetDatumInTanev();
var helper = new TanuloErtekelesHelper(ConnectionTypeExtensions.GetSessionConnectionType());
DataSet dataSet = helper.GetTanuloErtekelesDataSetByTanuloForGrid(tanarId, tanuloId, isTanuloView, datum, oktatasiNevelesiFeladatId);
if (isOsztalyAtlagMegjelenik)
{
List<TantargyUid> tantargyUids = null;
if (dataSet.Tables[0].Rows.Count > 0)
{
tantargyUids = new List<TantargyUid>();
foreach (DataRow row in dataSet.Tables[0].Rows)
{
if (!row.Field<bool>("TantargyIsTanulmanyiAtlagbaNemSzamit"))
{
tantargyUids.Add(new TantargyUid(row.Field<int?>("TantargyId") ?? 0));
}
}
}
var osztalyAtlagok = new OsztalyAtlagFacade(new MobileUser(ClaimData.IntezmenyAzonosito, tanuloId, ClaimData.BelepesiNev, ClaimData.GondviseloId, new List<FelhasznaloSzerepkor> { ClaimData.GondviseloId.HasValue ? FelhasznaloSzerepkor.Gondviselo : FelhasznaloSzerepkor.Tanulo }, ClaimData.SelectedTanevID.Value, null, ClaimData.FelhasznaloIdpEgyediAzonosito, ClaimData.FelhasznaloIdpEgyediAzonosito, ClaimData.IntezmenyGuid.Value))
.ListAktualisTanuloOsztalyAtlag(new OsztalyAtlagListRequest
{
OktatasiNevelesiFeladatUid = new OktatasiNevelesiFeladatUid(oktatasiNevelesiFeladatId, (OktatasiNevelesiFeladatEnum?)oktatasiNevelesiFeladatId),
TantargyUids = tantargyUids,
IsAtlagNeeded = true
});
dataSet.Tables[0].Columns.Add("OsztalyAtlag", typeof(decimal));
foreach (DataRow row in dataSet.Tables[0].Rows)
{
var osztalyAtlag = osztalyAtlagok.FirstOrDefault(a => a.Tantargy.Uid.Id == row.Field<int?>("TantargyId"));
if (osztalyAtlag != null && osztalyAtlag.OsztalyCsoportAtlag.HasValue)
{
row["OsztalyAtlag"] = osztalyAtlag.OsztalyCsoportAtlag.Value;
}
}
}
return dataSet.ToDataSourceResult();
}
public DataSourceResult GetTanuloErtekelesByTanuloDetailGrid(int tantargyId, int oktatasiNevelesiFeladatId, int tanuloId)
{
return GetDetailGridData(tanuloId, tantargyId.IsEntityId() ? tantargyId : (int?)null, false, oktatasiNevelesiFeladatId);
}
[ApiRolePackageAuthorize(KretaClaimPackages.Tanulo.ClaimValue)]
public DataSourceResult GetTanuloErtekelesByTanuloDetailGridTanuloView(int tantargyId, int oktatasiNevelesiFeladatId)
{
return GetDetailGridData(ClaimData.FelhasznaloId, tantargyId.IsEntityId() ? tantargyId : (int?)null, true, oktatasiNevelesiFeladatId);
}
private DataSourceResult GetDetailGridData(int tanuloId, int? tantargyId, bool isTanuloView, int oktatasiNevelesiFeladatId)
{
bool showToroltElemek = !isTanuloView;
DateTime datum = new TanevHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetDatumInTanev();
DataSet dataSet = GetDetailGridDataBase(tanuloId, tantargyId, showToroltElemek, datum, (int)ErtekelesMegjelenesFajtaEnum.Tanulo, oktatasiNevelesiFeladatId: oktatasiNevelesiFeladatId, isTanuloView: isTanuloView);
return dataSet.ToDataSourceResult();
}
}
}