using System; using System.Collections.Generic; using System.Data; using System.IO; using System.Linq; using System.Web.Mvc; using Kreta.BusinessLogic.Caching; using Kreta.BusinessLogic.Classes; using Kreta.BusinessLogic.Classes.ComboBox; using Kreta.BusinessLogic.Classes.MobileApi.Naplo.V2.Co.Post.Ertekeles; using Kreta.BusinessLogic.HelperClasses; using Kreta.BusinessLogic.Helpers.DokumentumHelpers; using Kreta.BusinessLogic.Helpers.SystemSettings; using Kreta.BusinessLogic.Logic; using Kreta.BusinessLogic.Logic.TanuloErtekeles; using Kreta.Core; using Kreta.Core.ConnectionType; using Kreta.Core.FeatureToggle; using Kreta.Core.Validation.Exceptions; using Kreta.DataAccess.Interfaces; using Kreta.DataAccessManual; using Kreta.DataAccessManual.DataAccessObjects.Csoport; using Kreta.DataAccessManual.Interfaces; using Kreta.DataAccessManual.Util; using Kreta.Enums; using Kreta.Enums.ManualEnums; using Kreta.Framework.Caching.DictionaryItemTables; using Kreta.KretaServer.SystemSettings; namespace Kreta.BusinessLogic.Helpers { public class TanuloErtekelesHelper : LogicBase { public TanuloErtekelesHelper(IConnectionType connectionType) : base(connectionType) { } public TanuloErtekelesCo GetTanuloErtekelesCoById(int id) { return Dal.CustomConnection.Run(ConnectionType, h => { ITanuloErtekeles entity = h.TanuloErtekelesDal().Get(id); List nemzetiDokumentumNyelvek = new SystemSettingsHelper(new DalHandlerConnectionType(ConnectionType, h)).GetSystemSettingValue>(RendszerBeallitasTipusEnum.Nemzeti_Nyelvi_Dokumentum_Nyelvek); TanuloErtekelesCo co = new TanuloErtekelesCo(entity, nemzetiDokumentumNyelvek, TanevId); return co; }); } public DataSet GetTanuloErtekelesDataSetByTantargyForGrid(int tanarId, int osztalyCsoportId, int tantargyId, DateTime? datum, bool isFromSzervezet) { return Dal.CustomConnection.Run(ConnectionType, h => { var tanuloErtekelesGridHelperCo = new TanuloErtekelesGridHelperCo { DataSet = h.TanuloErtekelesDal(GridParameters).GetTanuloErtekelesDataSetByTantargy(TanevId, tanarId, tantargyId, osztalyCsoportId, datum, isFromSzervezet), Datum = datum, TanuloErtekelesVisibilityCo = null, EgyszerAdhatoErtekelesTipusIds = EnumExtensions.GetErtekelesTipusDictionaryItems(TanevId, true).Select(x => x.Id).ToList(), ErtekelesModDictionary = GetErtekelesModDictionary() }; SetTanuloErtekelesGridHelperCo(h, tanuloErtekelesGridHelperCo); DataSet gridDataSet = TanuloErtekelesLogicWeb.GetTanuloErtekelesDataSetByTantargyForGrid(tanuloErtekelesGridHelperCo); return gridDataSet; }); } public DataSet GetTanuloErtekelesDataSetByMagatartasSzorgalomForGrid(int tanarId, int osztalyCsoportId, DateTime? datum) { return Dal.CustomConnection.Run(ConnectionType, h => { var tanuloErtekelesGridHelperCo = new TanuloErtekelesGridHelperCo { DataSet = h.TanuloErtekelesDal(GridParameters).GetTanuloErtekelesDataSetByMagatartasSzorgalom(TanevId, tanarId, osztalyCsoportId, datum), Datum = datum, TanuloErtekelesVisibilityCo = null, EgyszerAdhatoErtekelesTipusIds = EnumExtensions.GetErtekelesTipusDictionaryItems(TanevId, true).Select(x => x.Id).ToList(), ErtekelesModDictionary = GetErtekelesModDictionary() }; SetTanuloErtekelesGridHelperCo(h, tanuloErtekelesGridHelperCo); DataSet gridDataSet = TanuloErtekelesLogicWeb.GetTanuloErtekelesDataSetByMagatartasSzorgalomForGrid(tanuloErtekelesGridHelperCo); return gridDataSet; }); } public DataSet GetTanuloErtekelesDataSetByTanuloForGrid(int? tanarId, int tanuloId, bool isTanuloView, DateTime? datum, int oktatasiNevelesiFeladatId) { return Dal.CustomConnection.Run(ConnectionType, h => { var feladatKategoriaId = h.OktatasNevelesiFeladatDal().GetFeladatKategoriaId(oktatasiNevelesiFeladatId, TanevId); bool isVegzosOsztalyTanuloja = GetIsVegzosOsztalyTanuloja(tanuloId, h); var tanuloErtekelesVisibilityCo = new TanuloErtekelesVisibilityCo { IsTanuloView = isTanuloView, IsINegyedevesJegyHidden = IsINegyedevesJegyHidden(), IsIiNegyedevesJegyHidden = IsIiNegyedevesJegyHidden(), IsFeleviJegyHidden = IsFeleviJegyHidden(), IsIiiNegyedevesJegyHidden = IsIiiNegyedevesJegyHidden(), IsIvNegyedevesJegyHidden = IsIvNegyedevesJegyHidden(isVegzosOsztalyTanuloja), IsEvvegiJegyHidden = IsEvvegiJegyHidden(isVegzosOsztalyTanuloja), KesleltetettMegjelenitesOraszam = GetKesleltetettMegjelenitesOraszam() }; var tanuloErtekelesGridHelperCo = new TanuloErtekelesGridHelperCo { DataSet = h.TanuloErtekelesDal().GetTanuloErtekelesDataSetByTanulo(IntezmenyId, TanevId, tanarId, tanuloId, datum, oktatasiNevelesiFeladatId, feladatKategoriaId), Datum = datum, TanuloErtekelesVisibilityCo = tanuloErtekelesVisibilityCo, EgyszerAdhatoErtekelesTipusIds = EnumExtensions.GetErtekelesTipusDictionaryItems(TanevId, true).Select(x => x.Id).ToList(), ErtekelesModDictionary = GetErtekelesModDictionary() }; SetTanuloErtekelesGridHelperCo(h, tanuloErtekelesGridHelperCo); DataSet gridDataSet = TanuloErtekelesLogicWeb.GetTanuloErtekelesDataSetByTanuloForGrid(tanuloErtekelesGridHelperCo); return gridDataSet; }); } public DataSet GetTanuloErtekelesDataSetByFotargyAltargyForGrid(int tanarId, int tanuloId, int fotargyAltargyId, DateTime? datum, int feladatKategoriaId) { return Dal.CustomConnection.Run(ConnectionType, h => { var tanuloErtekelesGridHelperCo = new TanuloErtekelesGridHelperCo { DataSet = h.TanuloErtekelesDal().GetTanuloErtekelesDataSetByFotargyAltargy(IntezmenyId, TanevId, tanarId, tanuloId, fotargyAltargyId, datum, feladatKategoriaId), Datum = datum, TanuloErtekelesVisibilityCo = null, EgyszerAdhatoErtekelesTipusIds = EnumExtensions.GetErtekelesTipusDictionaryItems(TanevId, true).Select(x => x.Id).ToList(), ErtekelesModDictionary = GetErtekelesModDictionary() }; SetTanuloErtekelesGridHelperCo(h, tanuloErtekelesGridHelperCo); DataSet gridDataSet = TanuloErtekelesLogicWeb.GetTanuloErtekelesDataSetByFotargyAltargyForGrid(tanuloErtekelesGridHelperCo); return gridDataSet; }); } private void SetTanuloErtekelesGridHelperCo(IDalHandler h, TanuloErtekelesGridHelperCo tanuloErtekelesGridHelperCo) { tanuloErtekelesGridHelperCo.TanevId = TanevId; tanuloErtekelesGridHelperCo.FelevVegeDatum = h.TanevRendjeDal().GetElsoFelevVege(IntezmenyId, TanevId); tanuloErtekelesGridHelperCo.NaplozarasDatuma = new OrarendHelper(new DalHandlerConnectionType(ConnectionType, h)).GetNaplozarasDate(startDate: null); tanuloErtekelesGridHelperCo.IsJegyekAtlagaMegjelenik = GetIsJegyekAtlagaMegjelenik(); } public DataSet GetTanuloErtekelesDataSetForDetailGrid(int tanuloId, int? tantargyId, bool showToroltElemek, bool isTanuloView, int felhasznaloId, int ertekelesMegjelenesFajtaEnumId, DateTime? datum, int? feladatKategoriaId, int? oktatasiNevelesiFeladatId, bool isDualisKepzesEnabled) { return Dal.CustomConnection.Run(ConnectionType, h => { var fkId = feladatKategoriaId ?? 0; if (oktatasiNevelesiFeladatId.HasValue) { fkId = h.OktatasNevelesiFeladatDal().GetFeladatKategoriaId(oktatasiNevelesiFeladatId.Value, TanevId); } int? tanarId = isTanuloView ? (int?)null : felhasznaloId; DataSet result = h.TanuloErtekelesDal(GridParameters).GetTanuloErtekelesDetailDataSet(TanevId, tanuloId, tantargyId, showToroltElemek, tanarId, ertekelesMegjelenesFajtaEnumId, datum, fkId, oktatasiNevelesiFeladatId, isDualisKepzesEnabled); var dataTable = result.Tables[0]; if (isTanuloView) { RemoveTanuloJogosultsagMiattiErtekelesek(new List { tanuloId }, dataTable); } DateTime naplozarasDatuma = new OrarendHelper(new DalHandlerConnectionType(ConnectionType, h)).GetNaplozarasDate(startDate: null); TanuloErtekelesLogicWeb.SetTanuloErtekelesDataSetForDetailGridDataTable(dataTable, ertekelesMegjelenesFajtaEnumId, naplozarasDatuma, TanevId); return result; }); } public DataSet GetTanuloErtekelesListGridDataSet(TanuloErtekelesListCo tanuloErtekelesListCo, bool pErtekelesTextTemaval = false, bool utolagosOsztalyszures = false) { DataSet dataSet = GetTanuloErtekelesListDataSet(tanuloErtekelesListCo, utolagosOsztalyszures); TanuloErtekelesLogicWeb.SetTanuloErtekelesListGridDataSet(dataSet, TanevId, pErtekelesTextTemaval); return dataSet; } public QuadrupleList GetTanuloLegfrissebbTanuloErtekelesList(int tanuloId) { return Dal.CustomConnection.Run(ConnectionType, h => { int kesleltetettMegjelenitesOraszam = GetKesleltetettMegjelenitesOraszam(); DataSet tanuloErtekelesDataSet = h.TanuloErtekelesDal().GetLegfrissebbTanuloErtekelesDataSet(IntezmenyId, TanevId, tanuloId, kesleltetettMegjelenitesOraszam); List egyszerAdhatoErtekelesTipusIds = EnumExtensions.GetErtekelesTipusDictionaryItems(TanevId, true).Select(x => x.Id).ToList(); QuadrupleList result = TanuloErtekelesLogicWeb.GetTanuloLegfrissebbTanuloErtekelesList(tanuloErtekelesDataSet, egyszerAdhatoErtekelesTipusIds); return result; }); } public DataSet GetTanuloErtekelesDataSetForGrid(DolgozatokAtlagaSearchCo searchCo) { return Dal.CustomConnection.Run(ConnectionType, h => { var dolgozatGridHelperCo = new DolgozatGridHelperCo { DataSet = h.TanuloErtekelesDal(GridParameters).GetErtekelesDolgozatAtlagDataSet(IntezmenyId, TanevId, searchCo.ToPco()), Datum = searchCo.Datum, TanevId = TanevId }; DataSet gridDataSet = TanuloErtekelesLogicWeb.GetDolgozatErtekelesDataSetForGrid(dolgozatGridHelperCo); return gridDataSet; }); } public DataSet GetDolgozatReszletekDataSetForGrid(int? osztalyCsoportId, int? tantargyId, string ertekelesTemaja, DateTime? datum) { return Dal.CustomConnection.Run(ConnectionType, h => { return h.TanuloErtekelesDal(GridParameters).GetDolgozatReszletekDataSet(osztalyCsoportId, tantargyId, ertekelesTemaja, datum); }); } public MemoryStream GetTanulokJegyeiByTipusIdExcelExport(int tipusId, TanuloErtekelesListCo searchModel) { return Dal.CustomConnection.Run(ConnectionType, h => { DataSet dataSet = h.Tanulo().GetTanulokJegyeiByErtekelesTipusExcelExport(TanevId, tipusId, searchModel.ToPco()); dataSet.Tables[0].ChangeColumnDataType("Százalékos értékelés", typeof(string)); foreach (DataRow row in dataSet.Tables[0].Rows) { if (row.Field("C_TARGYKATEGORIA") == (int)TargyKategoriaTipusEnum.Szorgalom) { row["Osztályzat"] = TanuloErtekelesLogicWeb.GetOsztalyzatTextSzorgalom(row.Field("C_ERTEKELESOSZTALYZATID"), TanevId); } if (!(string.IsNullOrWhiteSpace(row.Field("Százalékos értékelés")))) { row["Százalékos értékelés"] = row["Százalékos értékelés"] + "%"; } } dataSet.Tables[0].Columns.Remove("C_TARGYKATEGORIA"); dataSet.Tables[0].Columns.Remove("C_ERTEKELESOSZTALYZATID"); DataTable dataTable = dataSet.Tables[0]; ExportLogic.TryCreateHeaderIfNotExist(dataTable); MemoryStream memoryStream = TanuloErtekelesLogicWeb.GetTanulokJegyeiByTipusIdExcelExport(dataTable, tipusId); return memoryStream; }); } public void DeleteTanuloErtekelesById(int id, int? szervezetTipusId = null) { Dal.CustomConnection.Run(ConnectionType, h => { var ertekeles = h.TanuloErtekelesDal().Get(id); h.TanuloErtekelesDal().Delete(id); if (!szervezetTipusId.HasValue) { UpdateTantargyAtlagByTanuloTantargy(h, ertekeles.TanuloId, ertekeles.TantargyId, ertekeles.OsztalyCsoport.FeladatEllatasiHely.OktatasiNevelesiFeladatTipus); } }); } /// INFO @DevKornel: Mobil használja public void SaveTanuloErtekelesListMobilV2(int felhasznaloId, OsztalyCsoportErtekelesRequestCo osztalyCsoportErtekelesRequestCo) { Dal.CustomConnection.Run(ConnectionType, h => { var tanuloErtekelesCoList = TanuloErtekelesLogicMobil.GetTanuloErtekelesCoListV2(IntezmenyId, felhasznaloId, osztalyCsoportErtekelesRequestCo); tanuloErtekelesCoList = new TanuloErtekelesValidacioMobil(new DalHandlerConnectionType(ConnectionType, h)).Validate(h, tanuloErtekelesCoList, out List errors); SaveTanuloErtekelesList(h, felhasznaloId, tanuloErtekelesCoList); if (errors.Any()) { var validationException = TanuloErtekelesLogicMobil.GetValidationException(errors); throw validationException; } }); } public void SaveTanuloErtekelesList(int felhasznaloId, List tanuloErtekelesCoList, int? szervezetTipusId = null) { Dal.CustomConnection.Run(ConnectionType, h => { SaveTanuloErtekelesList(h, felhasznaloId, tanuloErtekelesCoList, szervezetTipusId); }); } private void SaveTanuloErtekelesList(IDalHandler h, int felhasznaloId, List tanuloErtekelesCoList, int? szervezetTipusId = null) { tanuloErtekelesCoList.ForEach(x => SaveOrUpdateTanuloErtekeles(h, felhasznaloId, x, szervezetTipusId)); } private ITanuloErtekeles SaveOrUpdateTanuloErtekeles(IDalHandler h, int felhasznaloId, TanuloErtekelesCo tanuloErtekelesCo, int? szervezetTipusId = null) { ITanuloErtekelesDal dal = h.TanuloErtekelesDal(); bool isNew = !tanuloErtekelesCo.Id.IsEntityId(); var entity = isNew ? dal.Get() : dal.Get(tanuloErtekelesCo.Id.Value); DateTime datum = tanuloErtekelesCo.Datum; bool isMagatartasSzorgalom = tanuloErtekelesCo.IsMagatartasSzorgalom; TanuloErtekelesLogicBase.SetDefaultTanuloErtekelesProperties(entity, tanuloErtekelesCo, datum, isMagatartasSzorgalom, isNew); if (isNew) { int? rogziteskoriTanuloOsztalyId = GetRogziteskoriOsztalyId(h, tanuloErtekelesCo, datum, szervezetTipusId); TanuloErtekelesLogicBase.SetNewTanuloErtekelesProperties(entity, tanuloErtekelesCo, felhasznaloId, isMagatartasSzorgalom, rogziteskoriTanuloOsztalyId); dal.Insert(entity); SetNyelviesitesProperties(h, entity, tanuloErtekelesCo, isMagatartasSzorgalom); dal.FullUpdate(entity); } else { SetNyelviesitesProperties(h, entity, tanuloErtekelesCo, isMagatartasSzorgalom); dal.FullUpdate(entity); } if (tanuloErtekelesCo.TantargyId != null && !szervezetTipusId.HasValue) { UpdateTantargyAtlagByTanuloTantargy(h, tanuloErtekelesCo.TanuloId, tanuloErtekelesCo.TantargyId.Value, entity.OsztalyCsoport.FeladatEllatasiHely.OktatasiNevelesiFeladatTipus); } return entity; } private void SetNyelviesitesProperties(IDalHandler h, ITanuloErtekeles entity, TanuloErtekelesCo tanuloErtekelesCo, bool isMagatartasSzorgalom) { ITanuloErtekelesDal dal = h.TanuloErtekelesDal(); if (!TanuloErtekelesLogicBase.NyelviesithetoTanuloErtekelesTipusIdList.Contains(entity.TipusId)) { dal.RemoveAllTanuloErtekelesNyelv(entity); return; } var nemzetiDokumentumNyelvek = new SystemSettingsHelper(new DalHandlerConnectionType(ConnectionType, h)).GetSystemSettingValue>(RendszerBeallitasTipusEnum.Nemzeti_Nyelvi_Dokumentum_Nyelvek); if (!nemzetiDokumentumNyelvek.Any() || !TanuloErtekelesLogicBase.NyelviesithetoTanuloErtekelesTipusIdList.Contains(tanuloErtekelesCo.TipusId)) { return; } var tanuloErtekelesNyelvHelperCo = new TanuloErtekelesNyelvHelperCo { IsMagatartasSzorgalom = isMagatartasSzorgalom, ErtekelesSzoveg = tanuloErtekelesCo.ErtekelesSzoveg, ErtekelesTema = tanuloErtekelesCo.ErtekelesTema, MagatartasSzoveg = tanuloErtekelesCo.MagatartasSzoveg, SzorgalomSzoveg = tanuloErtekelesCo.SzorgalomSzoveg, }; if (DokumentumNyelvesitesHelper.IsNemzetiDokumentumNyelvActive(nemzetiDokumentumNyelvek, AnyanyelvEnum.nemet)) { tanuloErtekelesNyelvHelperCo.NyelvEnum = AnyanyelvEnum.nemet; tanuloErtekelesNyelvHelperCo.ErtekelesSzovegNyelv = tanuloErtekelesCo.ErtekelesSzovegNemet; tanuloErtekelesNyelvHelperCo.ErtekelesSzovegFormazottNyelv = tanuloErtekelesCo.ErtekelesSzovegFormazottNemet; tanuloErtekelesNyelvHelperCo.ErtekelesTemaNyelv = tanuloErtekelesCo.ErtekelesTemaNemet; tanuloErtekelesNyelvHelperCo.MagatartasSzovegNyelv = tanuloErtekelesCo.MagatartasSzovegNemet; tanuloErtekelesNyelvHelperCo.MagatartasSzovegFormazottNyelv = tanuloErtekelesCo.MagatartasSzovegFormazottNemet; tanuloErtekelesNyelvHelperCo.SzorgalomSzovegNyelv = tanuloErtekelesCo.ErtekelesSzovegNemet; tanuloErtekelesNyelvHelperCo.SzorgalomSzovegFormazottNyelv = tanuloErtekelesCo.SzorgalomSzovegFormazottNemet; SetNyelvProperties(h, entity, tanuloErtekelesNyelvHelperCo); } if (DokumentumNyelvesitesHelper.IsNemzetiDokumentumNyelvActive(nemzetiDokumentumNyelvek, AnyanyelvEnum.horvat)) { tanuloErtekelesNyelvHelperCo.NyelvEnum = AnyanyelvEnum.horvat; tanuloErtekelesNyelvHelperCo.ErtekelesSzovegNyelv = tanuloErtekelesCo.ErtekelesSzovegHorvat; tanuloErtekelesNyelvHelperCo.ErtekelesSzovegFormazottNyelv = tanuloErtekelesCo.ErtekelesSzovegFormazottHorvat; tanuloErtekelesNyelvHelperCo.ErtekelesTemaNyelv = tanuloErtekelesCo.ErtekelesTemaHorvat; tanuloErtekelesNyelvHelperCo.MagatartasSzovegNyelv = tanuloErtekelesCo.MagatartasSzovegHorvat; tanuloErtekelesNyelvHelperCo.MagatartasSzovegFormazottNyelv = tanuloErtekelesCo.MagatartasSzovegFormazottHorvat; tanuloErtekelesNyelvHelperCo.SzorgalomSzovegNyelv = tanuloErtekelesCo.ErtekelesSzovegHorvat; tanuloErtekelesNyelvHelperCo.SzorgalomSzovegFormazottNyelv = tanuloErtekelesCo.SzorgalomSzovegFormazottHorvat; SetNyelvProperties(h, entity, tanuloErtekelesNyelvHelperCo); } if (DokumentumNyelvesitesHelper.IsNemzetiDokumentumNyelvActive(nemzetiDokumentumNyelvek, AnyanyelvEnum.roman)) { tanuloErtekelesNyelvHelperCo.NyelvEnum = AnyanyelvEnum.roman; tanuloErtekelesNyelvHelperCo.ErtekelesSzovegNyelv = tanuloErtekelesCo.ErtekelesSzovegRoman; tanuloErtekelesNyelvHelperCo.ErtekelesSzovegFormazottNyelv = tanuloErtekelesCo.ErtekelesSzovegFormazottRoman; tanuloErtekelesNyelvHelperCo.ErtekelesTemaNyelv = tanuloErtekelesCo.ErtekelesTemaRoman; tanuloErtekelesNyelvHelperCo.MagatartasSzovegNyelv = tanuloErtekelesCo.MagatartasSzovegRoman; tanuloErtekelesNyelvHelperCo.MagatartasSzovegFormazottNyelv = tanuloErtekelesCo.MagatartasSzovegFormazottRoman; tanuloErtekelesNyelvHelperCo.SzorgalomSzovegNyelv = tanuloErtekelesCo.ErtekelesSzovegRoman; tanuloErtekelesNyelvHelperCo.SzorgalomSzovegFormazottNyelv = tanuloErtekelesCo.SzorgalomSzovegFormazottRoman; SetNyelvProperties(h, entity, tanuloErtekelesNyelvHelperCo); } if (DokumentumNyelvesitesHelper.IsNemzetiDokumentumNyelvActive(nemzetiDokumentumNyelvek, AnyanyelvEnum.szerb)) { tanuloErtekelesNyelvHelperCo.NyelvEnum = AnyanyelvEnum.szerb; tanuloErtekelesNyelvHelperCo.ErtekelesSzovegNyelv = tanuloErtekelesCo.ErtekelesSzovegSzerb; tanuloErtekelesNyelvHelperCo.ErtekelesSzovegFormazottNyelv = tanuloErtekelesCo.ErtekelesSzovegFormazottSzerb; tanuloErtekelesNyelvHelperCo.ErtekelesTemaNyelv = tanuloErtekelesCo.ErtekelesTemaSzerb; tanuloErtekelesNyelvHelperCo.MagatartasSzovegNyelv = tanuloErtekelesCo.MagatartasSzovegSzerb; tanuloErtekelesNyelvHelperCo.MagatartasSzovegFormazottNyelv = tanuloErtekelesCo.MagatartasSzovegFormazottSzerb; tanuloErtekelesNyelvHelperCo.SzorgalomSzovegNyelv = tanuloErtekelesCo.ErtekelesSzovegSzerb; tanuloErtekelesNyelvHelperCo.SzorgalomSzovegFormazottNyelv = tanuloErtekelesCo.SzorgalomSzovegFormazottSzerb; SetNyelvProperties(h, entity, tanuloErtekelesNyelvHelperCo); } } private int? GetRogziteskoriOsztalyId(IDalHandler h, TanuloErtekelesCo tanuloErtekelesCo, DateTime? datum, int? szervezetTipusId = null) { var osztalyCsoportFeladatKategoriaId = new OsztalyCsoportHelper(new DalHandlerConnectionType(ConnectionType, h)).GetOsztalyCsoportFeladatKategoria(tanuloErtekelesCo.OsztalyCsoportId.Value); if (osztalyCsoportFeladatKategoriaId != (int)OktNevelesiKategoriaEnum.AlapfokuMuveszetoktatas) { return new TanuloHelper(new DalHandlerConnectionType(ConnectionType, h)).GetTanuloOsztalyIdByFeladatKategoria(tanuloErtekelesCo.TanuloId, datum, (OktNevelesiKategoriaEnum)osztalyCsoportFeladatKategoriaId, szervezetTipusId); } return null; } private void SetNyelvProperties(IDalHandler h, ITanuloErtekeles entity, TanuloErtekelesNyelvHelperCo tanuloErtekelesNyelvHelperCo) { ITanuloErtekelesNyelv tanuloErtekelesNyelv = entity.TanuloErtekelesNyelv.FirstOrDefault(x => !x.Torolt && x.NyelvId == (int)tanuloErtekelesNyelvHelperCo.NyelvEnum); var isNew = tanuloErtekelesNyelv == null; if (isNew) { tanuloErtekelesNyelv = h.TanuloErtekelesNyelvDal().Get(); tanuloErtekelesNyelv.NyelvId = (int)tanuloErtekelesNyelvHelperCo.NyelvEnum; tanuloErtekelesNyelv.TanuloErtekelesId = entity.ID; } if (!tanuloErtekelesNyelvHelperCo.IsMagatartasSzorgalom) { tanuloErtekelesNyelv.SzorgalomSzoveg = null; tanuloErtekelesNyelv.SzorgalomSzovegFormazott = null; tanuloErtekelesNyelv.MagatartasSzoveg = null; tanuloErtekelesNyelv.MagatartasSzovegFormazott = null; if (!string.IsNullOrWhiteSpace(tanuloErtekelesNyelvHelperCo.ErtekelesSzoveg)) { tanuloErtekelesNyelv.ErtekelesSzoveg = tanuloErtekelesNyelvHelperCo.ErtekelesSzovegNyelv; tanuloErtekelesNyelv.ErtekelesSzovegFormazott = tanuloErtekelesNyelvHelperCo.ErtekelesSzovegFormazottNyelv; } else { tanuloErtekelesNyelv.ErtekelesSzoveg = null; tanuloErtekelesNyelv.ErtekelesSzovegFormazott = null; } tanuloErtekelesNyelv.ErtekelesTema = !string.IsNullOrWhiteSpace(tanuloErtekelesNyelvHelperCo.ErtekelesTema) ? tanuloErtekelesNyelvHelperCo.ErtekelesTemaNyelv : null; } else { tanuloErtekelesNyelv.ErtekelesSzoveg = null; tanuloErtekelesNyelv.ErtekelesSzovegFormazott = null; tanuloErtekelesNyelv.ErtekelesTema = null; if (!string.IsNullOrWhiteSpace(tanuloErtekelesNyelvHelperCo.MagatartasSzoveg)) { tanuloErtekelesNyelv.MagatartasSzoveg = tanuloErtekelesNyelvHelperCo.MagatartasSzovegNyelv; tanuloErtekelesNyelv.MagatartasSzovegFormazott = tanuloErtekelesNyelvHelperCo.MagatartasSzovegFormazottNyelv; } else { tanuloErtekelesNyelv.MagatartasSzoveg = null; tanuloErtekelesNyelv.MagatartasSzovegFormazott = null; } if (!string.IsNullOrWhiteSpace(tanuloErtekelesNyelvHelperCo.SzorgalomSzoveg)) { tanuloErtekelesNyelv.SzorgalomSzoveg = tanuloErtekelesNyelvHelperCo.SzorgalomSzovegNyelv; tanuloErtekelesNyelv.SzorgalomSzovegFormazott = tanuloErtekelesNyelvHelperCo.SzorgalomSzovegFormazottNyelv; } else { tanuloErtekelesNyelv.SzorgalomSzoveg = null; tanuloErtekelesNyelv.SzorgalomSzovegFormazott = null; } } if (isNew) { h.TanuloErtekelesDal().AddTanuloErtekelesNyelv(entity, tanuloErtekelesNyelv); } else { h.TanuloErtekelesNyelvDal().Update(tanuloErtekelesNyelv); } } public ITanuloErtekeles SaveOrUpdateTanuloErtekeles(int felhasznaloId, TanuloErtekelesCo tanuloErtekelesCo, int? szervezetTipusId = null) { return Dal.CustomConnection.Run(ConnectionType, h => { return SaveOrUpdateTanuloErtekeles(h, felhasznaloId, tanuloErtekelesCo, szervezetTipusId); }); } public List GetDolgozatTemakForComboBox(int? osztalyCsoportId, int? tantargyId) { return Dal.CustomConnection.Run(ConnectionType, h => { var comboBoxListItemList = new List(); DataSet dataSet = h.TanuloErtekelesDal().GetDolgozatErtekelesTemak(IntezmenyId, TanevId, osztalyCsoportId, tantargyId); foreach (var tema in dataSet.Tables[0].AsEnumerable().Select(r => r.Field("ErtekelesTema")).OrderBy(r => r)) { comboBoxListItemList.Add( new ComboBoxListItem { Text = tema, Value = tema }); } return comboBoxListItemList; }); } private bool GetIsJegyekAtlagaMegjelenik() { bool result = SystemSettingsManager.GetSystemSettingValue(RendszerBeallitasTipusEnum.Ertekelesnel_a_naplojegyek_atlaga_megjelenik, IntezmenyAzonosito, TanevId); return result; } /// INFO @DevKornel: Mobil használja private bool GetIsVegzosOsztalyTanuloja(int tanuloId, IDalHandler h) { var isVegzosOsztalyTanuloja = false; int? osztalyId = new TanuloHelper(new DalHandlerConnectionType(ConnectionType, h)).GetTanuloAlapkepzesesOsztalyId(tanuloId); if (osztalyId.IsEntityId()) { isVegzosOsztalyTanuloja = new OsztalyCsoportHelper(new DalHandlerConnectionType(ConnectionType, h)).GetIsVegzosOsztalyCsoport(osztalyId.Value); } return isVegzosOsztalyTanuloja; } private bool IsINegyedevesJegyHidden() { DateTime? megjelenitesDate = SystemSettingsManager.GetSystemSettingValue(RendszerBeallitasTipusEnum.I_Negyedeves_jegyek_megjelenesenek_datuma, IntezmenyAzonosito, TanevId); return megjelenitesDate > DateTime.UtcNow; } private bool IsIiNegyedevesJegyHidden() { DateTime? megjelenitesDate = SystemSettingsManager.GetSystemSettingValue(RendszerBeallitasTipusEnum.II_Negyedeves_jegyek_megjelenesenek_datuma, IntezmenyAzonosito, TanevId); return megjelenitesDate > DateTime.UtcNow; } private bool IsFeleviJegyHidden() { DateTime? megjelenitesDate = SystemSettingsManager.GetSystemSettingValue(RendszerBeallitasTipusEnum.Felevi_jegyek_megjelenesenek_datuma, IntezmenyAzonosito, TanevId); return megjelenitesDate > DateTime.UtcNow; } private bool IsIiiNegyedevesJegyHidden() { DateTime? megjelenitesDate = SystemSettingsManager.GetSystemSettingValue(RendszerBeallitasTipusEnum.III_Negyedeves_jegyek_megjelenesenek_datuma, IntezmenyAzonosito, TanevId); return megjelenitesDate > DateTime.UtcNow; } private bool IsIvNegyedevesJegyHidden(bool isVegzosOsztalyTanuloja) { DateTime? megjelenitesDate; DateTime? ivNegyedevesJegyMegjelenitesDate = SystemSettingsManager.GetSystemSettingValue(RendszerBeallitasTipusEnum.IV_Negyedeves_jegyek_megjelenesenek_datuma, IntezmenyAzonosito, TanevId); if (isVegzosOsztalyTanuloja) { //NOTE: Ha végzős, akkor a végzős évvégi jegy megjelenítés és a IV. negyedéves jegy megjelenítés dátum közül a korábbit vesszük figyelembe! List megjelenitesDateList = new List { ivNegyedevesJegyMegjelenitesDate, SystemSettingsManager.GetSystemSettingValue(RendszerBeallitasTipusEnum.Ev_vegi_jegyek_megjelenesenek_datuma_vegzos, IntezmenyAzonosito, TanevId) }; megjelenitesDate = megjelenitesDateList.OfType().Min(); } else { //NOTE: Ha nem végzős, akkor a IV. negyedéves jegy megjelenítés dátumát vesszük figyelembe! megjelenitesDate = ivNegyedevesJegyMegjelenitesDate; } return megjelenitesDate > DateTime.UtcNow; } private bool IsEvvegiJegyHidden(bool isVegzosOsztalyTanuloja) { //NOTE: Ha végzős, akkor a végzős évvégi jegy megjelenítés dátumát vesszük figyelembe, különben az évvégi jegy megjelenítés dátumát! DateTime? megjelenitesDate = isVegzosOsztalyTanuloja ? SystemSettingsManager.GetSystemSettingValue(RendszerBeallitasTipusEnum.Ev_vegi_jegyek_megjelenesenek_datuma_vegzos, IntezmenyAzonosito, TanevId) : SystemSettingsManager.GetSystemSettingValue(RendszerBeallitasTipusEnum.Ev_vegi_jegyek_megjelenesenek_datuma, IntezmenyAzonosito, TanevId); return megjelenitesDate > DateTime.UtcNow; } /// INFO @DevKornel: Mobil használja public int GetKesleltetettMegjelenitesOraszam() { int result = SystemSettingsManager.GetSystemSettingValue(RendszerBeallitasTipusEnum.Ertekelesek_megjelenese_az_ellenorzo_modulban, IntezmenyAzonosito, TanevId); return result; } /// INFO @DevKornel: Mobil használja public void RemoveTanuloJogosultsagMiattiErtekelesek(List tanuloIds, DataTable dataTable) { var isVegzosOsztalyTanulojaByTanuloId = new Dictionary(); Dal.CustomConnection.Run(ConnectionType, h => { foreach (var tanuloId in tanuloIds) { isVegzosOsztalyTanulojaByTanuloId.Add(tanuloId, GetIsVegzosOsztalyTanuloja(tanuloId, h)); } }); int kesleltetettMegjelenitesOraszam = GetKesleltetettMegjelenitesOraszam(); for (int i = dataTable.Rows.Count - 1; i >= 0; --i) { var tanuloId = dataTable.Rows[i].Field("TanuloId"); int tipusId = SDAConvert.ToInt32(dataTable.Rows[i]["TipusId"]); DateTime created = SDAConvert.ToDateTime(dataTable.Rows[i]["Created"]).Value; bool isErtesitesElkuldve = SDAConvert.ToBooleanFromTF(dataTable.Rows[i]["IsErtesitesElkuldve"]); //NOTE: Ha nincs elküldve az értesítés, csak akkor kell vizsgálni a többi szűrő feltételt, különben vissza kell adnunk az értékelést mindenképpen. if (!isErtesitesElkuldve) { //NOTE: Nem adjuk vissza a tanuló értékelést, ha... // - az étrékelés típusa bármelyik egyszer adható értékelés és el kell rejtenünk. // - a megjelenítési időpont(created + késleltés óraszám) későbbi, mint a DateTime.Now. if (tipusId == (int)ErtekelesTipusEnum.I_ne_jegy_ertekeles && IsINegyedevesJegyHidden() || tipusId == (int)ErtekelesTipusEnum.II_ne_jegy_ertekeles && IsIiNegyedevesJegyHidden() || tipusId == (int)ErtekelesTipusEnum.felevi_jegy_ertekeles && IsFeleviJegyHidden() || tipusId == (int)ErtekelesTipusEnum.III_ne_jegy_ertekeles && IsIiiNegyedevesJegyHidden() || tipusId == (int)ErtekelesTipusEnum.IV_ne_jegy_ertekeles && IsIvNegyedevesJegyHidden(isVegzosOsztalyTanulojaByTanuloId[tanuloId]) || tipusId == (int)ErtekelesTipusEnum.evvegi_jegy_ertekeles && IsEvvegiJegyHidden(isVegzosOsztalyTanulojaByTanuloId[tanuloId]) || created.AddHours(kesleltetettMegjelenitesOraszam) > DateTime.Now) { dataTable.Rows.RemoveAt(i); } } } } /// INFO @DevKornel: Mobil használja public DataSet GetTanuloErtekelesListDataSet(TanuloErtekelesListCo tanuloErtekelesListCo, bool utolagosOsztalyszures = false) { if (tanuloErtekelesListCo.TantargyUids != null && tanuloErtekelesListCo.TantargyUids.Contains("-1")) { tanuloErtekelesListCo.TantargyUids.Remove("-1"); tanuloErtekelesListCo.TantargyUids.Add("Magatartas"); tanuloErtekelesListCo.TantargyUids.Add("Szorgalom"); } return Dal.CustomConnection.Run(ConnectionType, h => { List szervezetIdList = null; if (tanuloErtekelesListCo.SzervezetId.IsEntityId()) { szervezetIdList = h.SzervezetDal(GridParameters).GetLathatoSzervezetek(IntezmenyId, TanevId, tanuloErtekelesListCo.SzervezetId.Value, (int)SzervezetAdatokHalmazaEnum.SzervezetEsAlSzervezetek); } DataSet result = h.TanuloErtekelesDal(GridParameters).GetTanuloErtekelesListDataSet(tanuloErtekelesListCo.ToPco(szervezetIdList), utolagosOsztalyszures); return result; }); } /// INFO @DevKornel: Mobil használja public DataSet GetTantargyiAtlagListDataSet(List tantargyIds, List tanuloIds, int? oktatasiNevelesiFeladatId = null) { return Dal.CustomConnection.Run(ConnectionType, h => { return h.TanuloErtekelesDal(GridParameters).GetTantargyiAtlagListDataSet(TanevId, tantargyIds, tanuloIds, oktatasiNevelesiFeladatId); }); } public DataSet GetErtekelesFoglalkozasData(bool isDualisErtekeles = false) { return Dal.CustomConnection.Run(ConnectionType, h => { DataSet result = h.Foglalkozas().GetFelhasznaloFoglalkozasokErtekelesekhez(TanevId, FelhasznaloId); var nemTanoraiCeluCsoportTipusok = new List(); var isNemTanoraiCeluCsoportokErtekelesEnabled = new SystemSettingsHelper(new DalHandlerConnectionType(ConnectionType, h)).GetSystemSettingValue(RendszerBeallitasTipusEnum.nem_tanorai_celu_csoportok_ertekelesi_lehetosege); if (!isNemTanoraiCeluCsoportokErtekelesEnabled) { nemTanoraiCeluCsoportTipusok = h.Csoport().GetNemTanoraiCeluCsoportTipusList(); } var responseDs = new DataSet(); responseDs.Tables.Add(result.Tables[0].Clone()); if (isDualisErtekeles) { foreach (var dr in result.Tables[0].AsEnumerable().Where(x => x.Field("CsoportTipusId").HasValue && x.Field("CsoportTipusId").Value == (int)CsoportTipusEnum.dualis_kepzesi_csoport)) { responseDs.Tables[0].ImportRow(dr); } } else { foreach (DataRow dr in result.Tables[0].Rows) { var csoportTipusId = dr.Field("CsoportTipusId"); if (!isNemTanoraiCeluCsoportokErtekelesEnabled && csoportTipusId.HasValue && nemTanoraiCeluCsoportTipusok.Any(x => x.CsoportTipusId == csoportTipusId.Value)) { continue; } responseDs.Tables[0].ImportRow(dr); } } return responseDs; }); } public DataSet GetErtekelesFotargyiFoglalkozasData() { return Dal.CustomConnection.Run(ConnectionType, h => { DataSet result = h.Foglalkozas().GetErtekelesFotargyiFoglalkozasData(TanevId, FelhasznaloId); var nemTanoraiCeluCsoportTipusok = new List(); var isNemTanoraiCeluCsoportokErtekelesEnabled = new SystemSettingsHelper(new DalHandlerConnectionType(ConnectionType, h)).GetSystemSettingValue(RendszerBeallitasTipusEnum.nem_tanorai_celu_csoportok_ertekelesi_lehetosege); if (!isNemTanoraiCeluCsoportokErtekelesEnabled) { nemTanoraiCeluCsoportTipusok = h.Csoport().GetNemTanoraiCeluCsoportTipusList(); } var responseDs = new DataSet(); responseDs.Tables.Add(result.Tables[0].Clone()); foreach (DataRow dr in result.Tables[0].Rows) { var csoportTipusId = dr.Field("CsoportTipusId"); if (!isNemTanoraiCeluCsoportokErtekelesEnabled && csoportTipusId.HasValue && nemTanoraiCeluCsoportTipusok.Any(x => x.CsoportTipusId == csoportTipusId.Value)) { continue; } responseDs.Tables[0].ImportRow(dr); } return responseDs; }); } public bool HasTantargyFotargyAltargy(int fotargyAltargyId) { return Dal.CustomConnection.Run(ConnectionType, h => { bool result = h.Tantargy().HasTantargyFotargyAltargy(IntezmenyId, TanevId, fotargyAltargyId); return result; }); } public string GetAtlag(int osztalyCsoportId, int tantargyId, AtlagMegjelenitesTipus atlagMegjelenitesTipus, AtlagbaBeleszamitoOsztalyTipus atlagbaBeleszamitoOsztalyTipus, DateTime? datum = null) { return Dal.CustomConnection.Run(ConnectionType, h => { string result = "-"; var tantargy = h.Tantargy().GetTantargy(tantargyId); if (!tantargy.IsTanulmanyiAtlagbaNemSzamit) { DataSet dataSet = h.TanuloErtekelesDal().GetAtlag(osztalyCsoportId, tantargyId, TanevId, atlagMegjelenitesTipus, atlagbaBeleszamitoOsztalyTipus, datum); DataTable dataTable = dataSet.Tables[0]; if (dataTable.Rows.Count > 0) { DataRow dataRow = dataTable.Rows[0]; result = SDAConvert.ToString(dataRow["Atlag"]); } } return result; }); } public void UpdateTantargyAtlag() { Dal.CustomConnection.Run(ConnectionType, h => { h.TanuloErtekelesDal().UpdateTantargyAtlag(IntezmenyId, TanevId, FelhasznaloId); }); } public void UpdateTantargyAtlagByTanuloTantargy(IDalHandler h, int tanuloId, int tantargyId, int oktatasNevelesiFeladatId) { TantargyiAtlagCache tantargyiAtlagCache = KretaServer.KretaServer.Instance.CacheManager.AquireCacheMobile(); var cacheEnabledAndNotNull = DependencyResolver.Current.GetService()?.IsEnabled(Constants.FeatureName.MobileEllenorzoApiCache) != null && tantargyiAtlagCache != null; h.TanuloErtekelesDal().UpdateTantargyAtlagByTanuloTantargy(IntezmenyId, TanevId, FelhasznaloId, tanuloId, tantargyId, oktatasNevelesiFeladatId); if (cacheEnabledAndNotNull) { tantargyiAtlagCache.RemoveTantargyiAtlag(tanuloId, IntezmenyAzonosito, tantargyId.ToString(), oktatasNevelesiFeladatId); } } public void AtlagUjraSzamitasVisszamenolegesModositasUtan(TantargyFelosztasVisszamenolegesCO ttfCo) { Dal.CustomConnection.Run(ConnectionType, h => { UpdateAtlagByOsztalyCsoportTantargy(h, ttfCo.EredetiOsztalyCsoportId, ttfCo.EredetiTantargyId); UpdateAtlagByOsztalyCsoportTantargy(h, ttfCo.ModosultOsztalyCsoportId, ttfCo.ModosultTantargyId); }); } public void UpdateAtlagByOsztalyCsoportTantargy(IDalHandler h, int osztalyCsoportId, int? tantargyId = null) { //TODO: cache törlése lsd. UpdateTantargyAtlagByTanuloTantargy? h.TanuloErtekelesDal().UpdateAtlagByOsztalyCsoportTantargy(IntezmenyId, TanevId, FelhasznaloId, osztalyCsoportId, tantargyId); } public bool CheckTanuloListEgyszerAdhatoTanuloErtekelesValidation(Dictionary tanuloErtekelesDictionary, int tipusId, int? tantargyId, DateTime? datum, int feladatKategoriaId) { return Dal.CustomConnection.Run(ConnectionType, h => { bool result = h.TanuloErtekelesDal().CheckTanuloListEgyszerAdhatoTanuloErtekelesValidation(tanuloErtekelesDictionary, tipusId, tantargyId, datum, feladatKategoriaId); return result; }); } public DataSet ValidateTanuloListTanuloMentesseg(List tanuloIdList, int tantargyId, DateTime ertekelesDatum) { return Dal.CustomConnection.Run(ConnectionType, h => { DataSet result = h.TanuloErtekelesDal().ValidateTanuloListTanuloMentesseg(tanuloIdList, tantargyId, ertekelesDatum); return result; }); } /// INFO @DevKornel: Mobil használja public void RemoveMasEvfolyamTanuloErtekelesek(DataTable dataTable, List<(int tanuloId, int feladatKategoriaId, int? evfolyamTipusId)> tanuloIdAndFeladatKategoriaIdAndEvfolyamTipusIdList) { for (int i = dataTable.Rows.Count - 1; i >= 0; --i) { (int tanuloId, int feladatKategoriaId, int? evfolyamTipusId) tanuloIdAndFeladatKategoriaAndEvfolyamTipusIdItem = (SDAConvert.ToInt32(dataTable.Rows[i]["TanuloId"]), SDAConvert.ToInt32(dataTable.Rows[i]["FeladatKategoriaId"]), SDAConvert.ToNullableInt32(dataTable.Rows[i]["RogziteskoriTanuloOsztalyEvfolyamTipusId"])); if (!tanuloIdAndFeladatKategoriaIdAndEvfolyamTipusIdList.Contains(tanuloIdAndFeladatKategoriaAndEvfolyamTipusIdItem)) { dataTable.Rows.RemoveAt(i); } } } private Dictionary GetErtekelesModDictionary() { List ertekelesModDictionaryItems = EnumExtensions.GetErtekelesModDictionaryItems(TanevId); var ertekelesDict = ertekelesModDictionaryItems.Select(x => new ErtekelesModCo { Id = x.Id, Color = x.Color, IsBold = x.IsBold }).ToDictionary(e => e.Id); return ertekelesDict; } public void SaveTanuloErtekelesListMobil(int felhasznaloId, Classes.MobileApi.Naplo.V3.Co.Ertekeles.OsztalyCsoportErtekelesRequestCo osztalyCsoportErtekelesRequestCo) { Dal.CustomConnection.Run(ConnectionType, h => { var tanuloErtekelesCoList = TanuloErtekelesLogicMobil.GetTanuloErtekelesCoList(IntezmenyId, felhasznaloId, osztalyCsoportErtekelesRequestCo); tanuloErtekelesCoList = new TanuloErtekelesValidacioMobil(new DalHandlerConnectionType(ConnectionType, h)).Validate(h, tanuloErtekelesCoList, out List errors); SaveTanuloErtekelesList(h, felhasznaloId, tanuloErtekelesCoList); if (errors.Any()) { var validationException = TanuloErtekelesLogicMobil.GetValidationException(errors); throw validationException; } }); } } }