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(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(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 tantargyUids = null; if (dataSet.Tables[0].Rows.Count > 0) { tantargyUids = new List(); foreach (DataRow row in dataSet.Tables[0].Rows) { if (!row.Field("TantargyIsTanulmanyiAtlagbaNemSzamit")) { tantargyUids.Add(new TantargyUid(row.Field("TantargyId") ?? 0)); } } } var osztalyAtlagok = new OsztalyAtlagFacade(new MobileUser(ClaimData.IntezmenyAzonosito, tanuloId, ClaimData.BelepesiNev, ClaimData.GondviseloId, new List { 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("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(); } } }