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(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(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(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("JogviszonyDb"); Model.Mulasztas.JogviszonySzunetletetok = row.Field("JogviszonyNevSor"); Model.Mulasztas.SzakmaiGyakorlatonLevokDb = row.Field("SzakmaiGyakDb"); Model.Mulasztas.SzakmaiGyakorlatonLevok = row.Field("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); } } }