185 lines
9.3 KiB
C#
185 lines
9.3 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Data;
|
|
using System.Linq;
|
|
using Kreta.BusinessLogic.Classes;
|
|
using Kreta.BusinessLogic.Helpers;
|
|
using Kreta.BusinessLogic.Helpers.SystemSettings;
|
|
using Kreta.Core.ConnectionType;
|
|
using Kreta.Enums;
|
|
using Kreta.Enums.ManualEnums;
|
|
using Kreta.Enums.ManualEnums.SystemSettings;
|
|
using Kreta.Resources;
|
|
|
|
namespace Kreta.BusinessLogic.Logic.Mulasztas
|
|
{
|
|
public class MulasztasLogic
|
|
{
|
|
private readonly IConnectionType ConnectionType;
|
|
|
|
public MulasztasLogic(IConnectionType connectionType)
|
|
{
|
|
ConnectionType = connectionType;
|
|
}
|
|
|
|
public DataSet GetMulasztasok(int osztalycsoportId, int tanoraId, DateTime oraKezdete, DateTime oraVege, int targyId, int tanarId, bool hianyzokAutoKitoltes, SzervezetTipusEnum? szervezetTipus = null)
|
|
{
|
|
var systemHelper = new SystemSettingsHelper(ConnectionType);
|
|
var tantargyHelper = new TantargyHelper(ConnectionType);
|
|
var tanevHelper = new TanevHelper(ConnectionType);
|
|
var osztalyCsoportHelper = new OsztalyCsoportHelper(ConnectionType);
|
|
|
|
var magantanuloMulasztasKezeles = (SystemSettingMagantanuloMulasztas)systemHelper.GetSystemSettingValue<int>(RendszerBeallitasTipusEnum.Magantanulo_oralatogatas_aloli_mentessegenek_kezelese);
|
|
var parhuzamosOraKezeles = systemHelper.GetSystemSettingValue<bool>(RendszerBeallitasTipusEnum.A_foglalkozasok_mulasztasi_adatai_megadasanal_a_parhuzamos_orakkal_valo_utkozes_vizsgalata);
|
|
var csakMegtartott = systemHelper.GetSystemSettingValue<int>(RendszerBeallitasTipusEnum.Naplozaskor_mulasztas_szazalek_szamitas) == 1 ? 0 : 1;
|
|
var alapertelmezettMulasztasTipus = (MulasztasTipusEnum)systemHelper.GetSystemSettingValue<int>(RendszerBeallitasTipusEnum.alapertelmezett_statusz_naplozasok_eseteben);
|
|
|
|
if (osztalyCsoportHelper.GetCsoportTipusByOsztalyCsoportId(osztalycsoportId) == CsoportTipusEnum.apaczai_mentorcsoport)
|
|
{
|
|
alapertelmezettMulasztasTipus = MulasztasTipusEnum.ures;
|
|
}
|
|
|
|
var tanevCo = tanevHelper.GetTanevInfo();
|
|
var isGyakorlatiTantargy = tantargyHelper.IsGyakorlatiTantargy(targyId);
|
|
var parhuzamosOranNaplozottak = new MulasztasHelper(ConnectionType).ListParhuzamosOranNaplozottMulasztasTanuloId(oraKezdete, oraVege, tanoraId);
|
|
|
|
var elozoOranhianyzottTanulok = hianyzokAutoKitoltes ? new TanuloHelper(ConnectionType).GetElozoOranHianyzottTanulok(oraKezdete, osztalycsoportId) : null;
|
|
var tantargybolElozoOranHianyzottTanulok = new OrarendiOraHelper(ConnectionType).GetElozoOranHianyzottTanulo(targyId, osztalycsoportId, oraKezdete);
|
|
|
|
var ds = osztalyCsoportHelper.GetMulasztasEsFelmentesOsztalyCsoportTanuloi(osztalycsoportId, tanoraId, targyId, tanarId, oraKezdete.Date, csakMegtartott, tanevCo, alapertelmezettMulasztasTipus);
|
|
ds.Tables[0].Columns.Add("elozoOranHianyzott", typeof(bool));
|
|
|
|
foreach (DataRow row in ds.Tables[0].Rows)
|
|
{
|
|
SetAmiTooltipsAndInfos(row);
|
|
CheckMagantanuloFelmentes(row, magantanuloMulasztasKezeles, isGyakorlatiTantargy, oraKezdete);
|
|
SetParhuzamosOraFelmentett(row, parhuzamosOraKezeles, parhuzamosOranNaplozottak);
|
|
if ((row["MulasztasId"] == DBNull.Value) && hianyzokAutoKitoltes)
|
|
{ SetMulasztasHianyzasFromLastLesson(row, elozoOranhianyzottTanulok); }
|
|
SetMulasztasIgazolas(row);
|
|
SetMulasztasEloreRogzitettIgazolas(row, tanoraId);
|
|
SetElozoOranHianyzottTanulo(row, tantargybolElozoOranHianyzottTanulok);
|
|
SetMulasztasTipusUresOraMentesseg(row, oraKezdete, tanoraId);
|
|
}
|
|
|
|
return ds;
|
|
}
|
|
|
|
private void CheckMagantanuloFelmentes(DataRow row, SystemSettingMagantanuloMulasztas magantanuloMulasztasKezeles, bool isGyakorlatiTantargy, DateTime oraKezdete)
|
|
{
|
|
var magantanulosagKezdete = SDAConvert.ToDateTime(row["MagantanulosagKezdete"]);
|
|
var magantanulosagVege = SDAConvert.ToDateTime(row["MagantanulosagVege"]);
|
|
if (SDAConvert.ToBoolean(row["IsMagantanulo_BOOL"]) && (magantanulosagKezdete.HasValue == false || magantanulosagKezdete.Value.Date <= oraKezdete.Date) && (!magantanulosagVege.HasValue || magantanulosagVege >= oraKezdete.Date))
|
|
{
|
|
if (SDAConvert.ToBoolean(row["OraMentesseg_BOOL"]) || (magantanuloMulasztasKezeles != SystemSettingMagantanuloMulasztas.KotelezoMegjelenie && (magantanuloMulasztasKezeles != SystemSettingMagantanuloMulasztas.CsakGyakorlaton || !isGyakorlatiTantargy)))
|
|
{
|
|
row["OraMentesseg"] = "T";
|
|
row["OraMentesseg_BOOL"] = true;
|
|
row["Oka"] = row["Oka"] + " " + OrarendResource.Magantanulo;
|
|
}
|
|
else
|
|
{
|
|
row["OraMentesseg"] = "F";
|
|
row["OraMentesseg_BOOL"] = false;
|
|
}
|
|
}
|
|
}
|
|
|
|
private void SetParhuzamosOraFelmentett(DataRow row, bool parhuzamosOraKezeles, List<int> parhuzamosOranNaplozottak)
|
|
{
|
|
if (!parhuzamosOraKezeles)
|
|
return;
|
|
|
|
if (parhuzamosOranNaplozottak.Count > 0 && parhuzamosOranNaplozottak.Contains(SDAConvert.ToInt32(row["ID"])))
|
|
{
|
|
row["OraMentesseg"] = "T";
|
|
row["OraMentesseg_BOOL"] = true;
|
|
row["Oka"] = row["Oka"] + " " + OrarendResource.ParhuzamosOranMarNaploztak;
|
|
}
|
|
}
|
|
|
|
private void SetMulasztasHianyzasFromLastLesson(DataRow row, List<int> elozoOranhianyzottTanulok)
|
|
{
|
|
if (elozoOranhianyzottTanulok?.Count > 0)
|
|
{
|
|
if (elozoOranhianyzottTanulok.Contains(SDAConvert.ToInt32(row["ID"])))
|
|
{
|
|
row["MulasztasTipus"] = (int)MulasztasTipusEnum.hianyzas;
|
|
row["MulasztasTipus_DNAME"] = MulasztasTipusEnum.hianyzas.GetDisplayName(ConnectionType.TanevId);
|
|
}
|
|
}
|
|
}
|
|
|
|
private void SetMulasztasIgazolas(DataRow row)
|
|
{
|
|
var igazoltMulasztas = SDAConvert.ToBooleanFromTF(row["Igazolt"], NullValue: false);
|
|
if (igazoltMulasztas)
|
|
{
|
|
row["Oka"] = row["Oka"] + " " + OrarendResource.ATanulonakVanRogzitveIgazolasa;
|
|
}
|
|
}
|
|
|
|
private void SetElozoOranHianyzottTanulo(DataRow row, List<int> tantargybolElozoOranHianyzottTanulok)
|
|
{
|
|
if (tantargybolElozoOranHianyzottTanulok.Any())
|
|
{
|
|
if (tantargybolElozoOranHianyzottTanulok.Contains(row.Field<int>("ID")))
|
|
{
|
|
row["elozoOranHianyzott"] = true;
|
|
}
|
|
else
|
|
{
|
|
row["elozoOranHianyzott"] = false;
|
|
}
|
|
}
|
|
}
|
|
|
|
private void SetMulasztasEloreRogzitettIgazolas(DataRow row, int tanoraId)
|
|
{
|
|
if (tanoraId < 0)
|
|
{
|
|
if (row["RogzitettIgazolas"].ToString() == "T" && string.IsNullOrWhiteSpace(SDAConvert.ToString(row["MulasztasId"])))
|
|
{
|
|
row["MulasztasTipus"] = (int)MulasztasTipusEnum.hianyzas;
|
|
row["MulasztasTipus_DNAME"] = MulasztasTipusEnum.hianyzas.GetDisplayName(ConnectionType.TanevId);
|
|
}
|
|
}
|
|
}
|
|
|
|
private void SetMulasztasTipusUresOraMentesseg(DataRow row, DateTime oraKezdete, int tanoraId)
|
|
{
|
|
// csak nem naplózott óráknál kell
|
|
if (tanoraId < 0)
|
|
{
|
|
var magantanulosagKezdete = SDAConvert.ToDateTime(row["MagantanulosagKezdete"]);
|
|
var magantanulosagVege = SDAConvert.ToDateTime(row["MagantanulosagVege"]);
|
|
if (SDAConvert.ToBoolean(row["OraMentesseg_BOOL"]) ||
|
|
(SDAConvert.ToBoolean(row["IsMagantanulo_BOOL"]) && (magantanulosagKezdete.HasValue == false || magantanulosagKezdete.Value.Date <= oraKezdete.Date) && (!magantanulosagVege.HasValue || magantanulosagVege >= oraKezdete.Date)))
|
|
{
|
|
row["MulasztasTipus"] = (int)MulasztasTipusEnum.ures;
|
|
row["MulasztasTipus_DNAME"] = MulasztasTipusEnum.ures.GetDisplayName(ConnectionType.TanevId);
|
|
}
|
|
}
|
|
}
|
|
|
|
private void SetAmiTooltipsAndInfos(DataRow row)
|
|
{
|
|
if (!string.IsNullOrWhiteSpace(row.Field<string>("EvfolyamId_DNAME")))
|
|
{
|
|
row["TanuloNev"] = row.Field<string>("TanuloNev").Substring(0, row.Field<string>("TanuloNev").Length - 1) +
|
|
" - " +
|
|
row.Field<string>("EvfolyamId_DNAME") + ", " +
|
|
row.Field<string>("AmiTagozatId_DNAME") + ")";
|
|
}
|
|
|
|
if (string.IsNullOrWhiteSpace(row.Field<string>("AmiFotargyId_DNAME")))
|
|
{ row["AmiFotargyId_DNAME"] = "-"; }
|
|
if (string.IsNullOrWhiteSpace(row.Field<string>("AmiTagozatId_DNAME")))
|
|
{ row["AmiTagozatId_DNAME"] = "-"; }
|
|
if (string.IsNullOrWhiteSpace(row.Field<string>("AmiTantargyKotelezosegId_DNAME")))
|
|
{ row["AmiTantargyKotelezosegId_DNAME"] = "-"; }
|
|
if (string.IsNullOrWhiteSpace(row.Field<string>("EvfolyamId_DNAME")))
|
|
{ row["EvfolyamId_DNAME"] = "-"; }
|
|
}
|
|
}
|
|
}
|