Files
kreta/Kreta.BusinessLogic/Logic/Naplozas/Elokeszites/NaplozasElokeszitesLogic.cs
T
2024-03-13 00:33:46 +01:00

321 lines
14 KiB
C#

using System;
using System.Data;
using System.Linq;
using Kreta.BusinessLogic.Classes;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.BusinessLogic.Helpers;
using Kreta.BusinessLogic.Helpers.SystemSettings;
using Kreta.BusinessLogic.Logic.Naplozas.Validacio;
using Kreta.Core;
using Kreta.Core.ConnectionType;
using Kreta.Enums;
using Kreta.Resources;
namespace Kreta.BusinessLogic.Logic.Naplozas.Elokeszites
{
public class NaplozasElokeszitesLogic
{
protected NaplozasElokeszitesModel Model;
protected IConnectionType ConnectionType;
protected NaploValidacio Validator;
public NaplozasElokeszitesModel GetModel
{
get { return Model; }
}
protected NaplozasElokeszitesLogic(NaploValidacio validator)
{
Validator = validator;
ConnectionType = validator.ConnectionType;
}
public NaplozasElokeszitesLogic(NaploValidacio validator, NaplozasElokeszitesCo input) : this(validator)
{
FillInnerModel(input);
}
public NaplozasElokeszitesLogic(NaploValidacio validator, EgyediNaplozasElokeszitesCo input) : this(validator)
{
FillInnerModel(input);
}
public NaplozasElokeszitesLogic(NaploValidacio validator, HelyettesitesNaplozasElokeszitesCo input) : this(validator)
{
FillInnerModel(input);
}
private void FillInnerModel(NaplozasElokeszitesCo input)
{
var thelper = new TanoraHelper(ConnectionType);
var oraCo = thelper.GetTanoraByOrarendiId(input.TanitasiOraId ?? input.OrarendiOraId.Value, input.Start, input.TanitasiOraId.HasValue, isTanuloOrGondviselo: false);
if (input is HelyettesitesNaplozasElokeszitesCo helyettesitesNaplozasElokeszitesInput)
{
oraCo.HelyettesitesTipus = helyettesitesNaplozasElokeszitesInput.HelyettesitesTipus ?? oraCo.HelyettesitesTipus;
oraCo.HelyettesitesId = helyettesitesNaplozasElokeszitesInput.HelyettesitesId ?? oraCo.HelyettesitesId;
oraCo.HelyettesitesOka = !string.IsNullOrWhiteSpace(helyettesitesNaplozasElokeszitesInput.HelyettesitesOka) ? helyettesitesNaplozasElokeszitesInput.HelyettesitesOka : oraCo.HelyettesitesOka;
oraCo.Helyettesito = ConnectionType.FelhasznaloId;
}
Model = new NaplozasElokeszitesModel(ConnectionType.FelhasznaloId, input.SzervezetTipusId);
var systemSettingsHelper = new SystemSettingsHelper(ConnectionType);
var helyettesitesEsetenFelugyeletAlapertelmezettenSorszamozando = systemSettingsHelper.GetSystemSettingValue<bool>(RendszerBeallitasTipusEnum.Helyettesites_eseten_felugyelet_alapertelmezetten_sorszamozando);
Model.OraAdat.Fill(oraCo, helyettesitesEsetenFelugyeletAlapertelmezettenSorszamozando);
if (input.TanitasiOraId.HasValue)
{
SetEgyediOraEvesOraszam(thelper, sorszamozando: false);
}
else
{
SetEgyediOraEvesOraszam(thelper, Model.OraAdat.IsSorszamozando);
}
SetOsztalyfonok(new OsztalyHelper(ConnectionType));
SetElozoOraAdatai(new OrarendiOraHelper(ConnectionType));
SetSzamonkeresElorejelzesAdatai(new SzamonkeresElorejelzesHelper(ConnectionType));
SetHetesekAdatai(new HetesekHelper(ConnectionType));
SetTemaLista(thelper);
SetMentessegList(new OrarendHelper(ConnectionType));
Model.OraTulajdonsag.Fill(oraCo);
Model.Helyettesites.Fill(oraCo);
if (!Model.SzervezetTipusId.HasValue)
{
Model.Hazifeladat.Fill(oraCo);
Model.DigitalisOktatas.Fill(oraCo);
}
}
private void FillInnerModel(EgyediNaplozasElokeszitesCo input)
{
Model = new NaplozasElokeszitesModel(ConnectionType.FelhasznaloId);
if (input.FoglakozasId.HasValue)
{
var helper = new TantargyFelosztasHelper(ConnectionType);
var ttf = helper.GetFoglalkozasDataById(input.FoglakozasId.Value);
var nemzetisegiOra = SDAConvert.ToBooleanFromTF(ttf.Tables[0].Rows[0]["NemzetisegiOra"]);
var naplozasCo = new NaplozasCo
{
OraTulajdosag = new NaplozasCo.OraTulajdonsagModel
{
NemzetisegiOra = nemzetisegiOra
}
};
Model.OraTulajdonsag.Fill(naplozasCo);
}
Model.IsEgyediNaplozas = true;
var systemSettingsHelper = new SystemSettingsHelper(ConnectionType);
var helyettesitesEsetenFelugyeletAlapertelmezettenSorszamozando = systemSettingsHelper.GetSystemSettingValue<bool>(RendszerBeallitasTipusEnum.Helyettesites_eseten_felugyelet_alapertelmezetten_sorszamozando);
Model.OraAdat.Fill(ConnectionType, input, helyettesitesEsetenFelugyeletAlapertelmezettenSorszamozando);
Model.Helyettesites.Fill(input, ConnectionType.FelhasznaloId);
var tanarHelper = new TanarHelper(ConnectionType);
var tanoraHelper = new TanoraHelper(ConnectionType);
SetTanar(tanarHelper, input.HelyettesitesTanarId);
SetOraszam(new CsengetesiRendOrakHelper(ConnectionType));
SetTantargyOsztalycsoport();
SetEgyediOraEvesOraszam(tanoraHelper, Model.OraAdat.IsSorszamozando);
SetElozoOraAdatai(new OrarendiOraHelper(ConnectionType));
SetEgyediOraTema(tanoraHelper);
SetTemaLista(tanoraHelper);
SetHazifeladat();
SetHetesekAdatai(new HetesekHelper(ConnectionType));
SetOraVegeByOrahossz();
}
private void SetOraVegeByOrahossz()
{
var isOravegeBeallitasOrahosszAlapjan = new SystemSettingsHelper(ConnectionType).GetSystemSettingValue<bool>(RendszerBeallitasTipusEnum.Orarendi_Elem_Hossz);
if (isOravegeBeallitasOrahosszAlapjan)
{
var csoport = new CsoportHelper(ConnectionType).GetCsoportCoList().SingleOrDefault(cs => cs.Id == Model.OraAdat.OsztalyCsoportId.Value);
if (csoport != null)
{
var csoportTipusList = new AdatszotarHelper(ConnectionType).GetCsoportTipusList();
var csoportTipusId = csoport.TipusId ?? (int)CsoportTipusEnum.iskolai_csoport_tanorai_celu_;
var csoportTipus = csoportTipusList.Single(cs => cs.Id == csoportTipusId);
if (csoportTipus.OraPerc.HasValue)
{
Model.OraAdat.OraVege = Model.OraAdat.OraKezdete.AddMinutes(csoportTipus.OraPerc.Value);
}
}
}
}
protected void SetMentessegList(OrarendHelper helper)
{
var ds = helper.GetOraMentessegList(Model.OraAdat.OraKezdete, Model.OraAdat.OraVege, Model.OraAdat.OsztalyCsoportId.Value);
if (ds.Tables[0].Rows.Count == 1)
{
var row = ds.Tables[0].Rows[0];
Model.Mulasztas.JogviszonySzunetletetokDb = row.Field<int>("JogviszonyDb");
Model.Mulasztas.JogviszonySzunetletetok = row.Field<string>("JogviszonyNevSor");
Model.Mulasztas.SzakmaiGyakorlatonLevokDb = row.Field<int>("SzakmaiGyakDb");
Model.Mulasztas.SzakmaiGyakorlatonLevok = row.Field<string>("SzakmaiGyakNevSor");
}
}
protected void SetTemaLista(TanoraHelper helper)
{
Model.OraAdat.TemaLista = helper.GetTemaIdAndNameForNaplozasDDL(Model.OraAdat.TantargyId.Value, Model.OraAdat.OsztalyCsoportId.Value, Model.OraAdat.TanarId.Value, Model.SzervezetTipusId);
}
protected void SetElozoOraAdatai(OrarendiOraHelper helper)
{
var elozoOraAdatai = helper.GetElozoOraAdatai(Model.OraAdat.TantargyId.Value, Model.OraAdat.OsztalyCsoportId.Value, Model.OraAdat.TanarId.Value, Model.OraAdat.OraKezdete);
Model.OraAdat.ElozoOraAdat = elozoOraAdatai?.ElozoOraAdatai ?? string.Empty;
Model.OraAdat.ElozoOraTema = elozoOraAdatai?.ElozoOraTemaja ?? string.Empty;
}
protected void SetSzamonkeresElorejelzesAdatai(SzamonkeresElorejelzesHelper helper)
{
var ds = helper.GetSzamonkeresElorejelzesDetailDataSet(new SzamonkeresElorejelzesSearchCO
{
OraGroupId = Model.OraAdat.GroupId,
Datum = Model.OraAdat.OraKezdete.Date,
OraszamSrc = Model.OraAdat.Oraszam,
OsztalyCsoportId = Model.OraAdat.OsztalyCsoportId
}, isKellKapcsolodoOsztalyok: false);
if (ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0 && !string.IsNullOrWhiteSpace(SDAConvert.ToString(ds.Tables[0].Rows[0]["SzamonkeresMod"])))
{
Model.OraAdat.SzamonkeresModId = SDAConvert.ToInt32(ds.Tables[0].Rows[0]["SzamonkeresModId"]);
Model.OraAdat.SzamonkeresModja = SDAConvert.ToString(ds.Tables[0].Rows[0]["SzamonkeresMod"]);
Model.OraAdat.SzamonkeresMegnevezes = SDAConvert.ToString(ds.Tables[0].Rows[0]["SzamonkeresMegnevezes"]);
}
}
protected void SetHetesekAdatai(HetesekHelper helper)
{
Model.OraAdat.Hetesek = helper.GetHetesekForDatum(Model.OraAdat.OsztalyCsoportId.Value, Model.OraAdat.OraKezdete.Date);
}
protected void SetOsztalyfonok(OsztalyHelper helper)
{
Model.OraAdat.OsztalyfonokId = helper.GetOsztalyfonokByOsztalyId(Model.OraAdat.OsztalyCsoportId.Value);
}
protected void SetTanar(TanarHelper helper, int? helyettesTanarId)
{
if (helyettesTanarId.HasValue)
{
Model.OraAdat.TanarNev = helper.GetTanarNev(helyettesTanarId.Value);
Model.OraAdat.TanarId = helyettesTanarId;
}
else
{
Model.OraAdat.TanarNev = helper.GetTanarNev(ConnectionType.FelhasznaloId);
Model.OraAdat.TanarId = ConnectionType.FelhasznaloId;
}
}
protected void SetOraszam(CsengetesiRendOrakHelper helper)
{
if (!Model.OraAdat.IsTanorankivuli)
{
Model.OraAdat.Oraszam = helper.GetCsengetesiRendOraSzam(Model.OraAdat.CsengetesirendOraId.Value);
}
}
protected void SetTantargyOsztalycsoport()
{
TantargyFoglalkozasCO foglalkozas = null;
if (Model.OraAdat.FoglakozasId.IsEntityId() && (!Model.OraAdat.OsztalyCsoportId.IsEntityId() || !Model.OraAdat.TantargyId.IsEntityId()))
{
foglalkozas = new FoglalkozasHelper(ConnectionType).GetFoglalkozas(Model.OraAdat.FoglakozasId.Value);
}
if (Model.OraAdat.OsztalyCsoportId.IsEntityId())
{
Model.OraAdat.OsztalyCsoportNev = new OsztalyCsoportHelper(ConnectionType).GetOsztalyCsoportNevById(Model.OraAdat.OsztalyCsoportId.Value);
}
else if (foglalkozas != null)
{
Model.OraAdat.OsztalyCsoportNev = foglalkozas.OsztalyCsoportNev;
Model.OraAdat.OsztalyCsoportId = foglalkozas.OsztalyCsoportId;
}
else
{
throw new Exception(ErrorResource.NincsSemOsztalycsoportSemFoglalkozas);
}
if (Model.OraAdat.TantargyId.IsEntityId())
{
var tantargy = new TantargyHelper(ConnectionType).GetTantargyById(Model.OraAdat.TantargyId.Value);
Model.OraAdat.TantargyNev = tantargy.TantargyNev;
}
else if (foglalkozas != null)
{
Model.OraAdat.TantargyId = foglalkozas.TantargyId;
Model.OraAdat.TantargyNev = foglalkozas.TantargyNev;
}
else
{
throw new Exception(ErrorResource.NincsSemTantargySemFoglalkozas);
}
}
protected void SetEgyediOraTema(TanoraHelper tanoraHelper)
{
Model.OraAdat.Tema = tanoraHelper.GetTemaEvesOraSorszamhoz(Model.OraAdat.TantargyId.Value, Model.OraAdat.OsztalyCsoportId.Value, ConnectionType.FelhasznaloId, Model.OraAdat.EvesOraSorszam.Value);
}
protected void SetEgyediOraEvesOraszam(TanoraHelper tanoraHelper, bool sorszamozando)
{
var evesOraszam = tanoraHelper.GetOraEvesSorszamaSP(Model.OraAdat.TantargyId.Value, Model.OraAdat.OsztalyCsoportId.Value, Model.OraAdat.OraKezdete, Model.OraAdat.TanarId.Value);
if (Model.OraAdat.IsElmaradt)
{
Model.OraAdat.EvesOraSorszam = null;
}
else
{
Model.OraAdat.EvesOraSorszam = sorszamozando ? evesOraszam + 1 : evesOraszam;
}
}
protected void SetHazifeladat()
{
Enum.TryParse(new OsztalyCsoportHelper(ConnectionType).GetOsztalyCsoportFeladatKategoria(Model.OraAdat.OsztalyCsoportId.Value).ToString(), out OktNevelesiKategoriaEnum kategoria);
var helper = new DktFeladatHelper(ConnectionType);
var hazi = Model.IsTanora ?
helper.GetTanitasiOraHaziFeladatDetail(Model.OraAdat.TanitasiOraId, kategoria, isTanuloOrGondviselo: false) :
helper.GetOrarendiOraHaziFeladatDetail(Model.OraAdat.OrarendiOraId, Model.OraAdat.OraKezdete, isTanuloOrGondviselo: false, oraszam: null, kategoria);
if (hazi.Id.HasValue)
{
Model.Hazifeladat.Id = hazi.Id;
Model.Hazifeladat.Szoveg = hazi.Szoveg;
Model.Hazifeladat.Hatarido = hazi.Hatarido;
}
}
public bool TeremUtkozesEllenorzes()
{
return Validator.TeremUtkozesEllenorzes(Model);
}
public string GetOsztalyEsTanarOraiUtkozes()
{
return Validator.GetOsztalyEsTanarOraiUtkozes(Model);
}
}
}