using System; using System.Collections.Generic; using System.Data; using System.Linq; using Kreta.BusinessLogic.Classes; using Kreta.BusinessLogic.Exceptions; using Kreta.BusinessLogic.HelperClasses; using Kreta.BusinessLogic.Utils; using Kreta.Core; using Kreta.Core.ConnectionType; using Kreta.Core.Exceptions; using Kreta.DataAccess.Interfaces; using Kreta.DataAccessManual; using Kreta.DataAccessManual.Interfaces; using Kreta.DataAccessManual.Util; using Kreta.Enums; using Kreta.Resources; namespace Kreta.BusinessLogic.Helpers { public class OsztalyHelper : LogicBase { public OsztalyHelper(IConnectionType connectionType) : base(connectionType) { } public DataSet GetSZMKOsztalyok(int gondviseloId) { return Dal.CustomConnection.Run(ConnectionType, h => { var dal = h.EugyintezesDal(); return dal.GetSZMKOsztalyok(gondviseloId); }); } public OsztalyCO GetClassById(int id) { return Dal.CustomConnection.Run(ConnectionType, (h) => { var dal = h.Osztaly(); var entity = dal.Get(id); var co = ConvertEntityToCo(entity, h); co.HasTanuloBesorolas = h.OsztalyCsoport().HasTanuloBesorolas(id); return co; }); } public void InsertCo(OsztalyCO co) { Dal.CustomConnection.Run(ConnectionType, (h) => { var dal = h.Osztaly(); var entity = dal.Get(); ConvertToNewEntity(entity, co); entity.TanevId = TanevId; entity.FeladatKategoriaId = new FeladatEllatasiHelyHelper(new DalHandlerConnectionType(ConnectionType, h)).GetFeladatKategoriaId(co.FeladatEllatasiHelyId); dal.Insert(entity); }); } public void UpdateCo(OsztalyCO co) { Dal.CustomConnection.Run(ConnectionType, (h) => { var dal = h.Osztaly(); var entity = dal.Get(co.Id); if (entity.FeladatEllatasiHelyId != co.FeladatEllatasiHelyId) { var helper = new FeladatEllatasiHelyHelper(new DalHandlerConnectionType(ConnectionType, h)); var dictionary = helper.GetFeladatEllatasiHelyDDl(string.Empty, (int)OktNevelesiKategoriaEnum.NevelesOktatas); var feladatEllatasiHelyIdMegtalalhato = dictionary.Keys.Any(x => x == entity.FeladatEllatasiHelyId.ToString()); if (feladatEllatasiHelyIdMegtalalhato) { if (!new FeladatEllatasiHelyHelper(new DalHandlerConnectionType(ConnectionType, h)).IsAzonosKategoria(entity.FeladatEllatasiHelyId, co.FeladatEllatasiHelyId) && h.OsztalyCsoport().HasTanuloBesorolas(co.Id, true)) { throw new BlException(OsztalyCsoportResource.FeladatellatasiHelyNemModosithatoMertVanTanuloBesorolva); } } } var kapcsolodoOsztalybontottCsoportokUpdate = ( entity.EvfolyamTipusa != co.EvfolyamTipusa || entity.VegzosEvfolyam != co.VegzosEvfolyam || entity.Keresztfeleves != co.Keresztfeleves || entity.FeladatEllatasiHelyId != co.FeladatEllatasiHelyId || entity.OsztalyFonokId != co.OsztalyfonokId || entity.KepzesiForma != co.KepzesiForma || entity.IsTechnikai != co.TechnikaiOsztaly ); var osztalyTanuloiUpdateSzakkepzesesAdatokNeeded = co.SzakmacsoportId.HasValue || co.AgazatId.HasValue || co.SzakkepesitesId.HasValue || co.ReszSzakkepesitesId.HasValue; var osztalyTanuloiUpdateSzakkepzoJuttatasAdatokNeeded = new IntezmenyHelper(new DalHandlerConnectionType(ConnectionType, h)).GetIntezmenyiAdatok().IsSzakkepzoJuttatas; var felhelyHelper = new FeladatEllatasiHelyHelper(new DalHandlerConnectionType(ConnectionType, h)); var elozoFelhelyIsSzakkepzeses = felhelyHelper.IsSzakkepzeses(entity.FeladatEllatasiHelyId); var ujFelhelyIsSzakkepzeses = felhelyHelper.IsSzakkepzeses(co.FeladatEllatasiHelyId); var juttatasUpdateNeeded = entity.JogviszonyTipusId != co.JogviszonyTipusId || entity.EvfolyamTipusa != co.EvfolyamTipusa || entity.IsTechnikai != co.TechnikaiOsztaly || entity.Keresztfeleves != co.Keresztfeleves || elozoFelhelyIsSzakkepzeses != ujFelhelyIsSzakkepzeses || entity.VegzosEvfolyam != co.VegzosEvfolyam; var isOrarendUpdateNeeded = (entity.VegzosEvfolyam != co.VegzosEvfolyam || entity.Keresztfeleves != co.Keresztfeleves) && entity.OrarendiOra.Count > 0; ConvertToUpdateEntity(h, entity, co); if (kapcsolodoOsztalybontottCsoportokUpdate) { KapcsolodoOsztalybontottCsoportokUpdate(h, entity, isOrarendUpdateNeeded); } if (osztalyTanuloiUpdateSzakkepzesesAdatokNeeded) { var szakkepzeseAdatok = new SzakkepzesesAdatokCO { Szakmacsoport = entity.SzakmaCsoport, Agazat = entity.Agazat, Szakkepesites = entity.Szakkepesites, Reszszakkepesites = entity.Reszszakkepesites }; SetSzakkepzesesAdatokNaToNull(szakkepzeseAdatok); dal.UpdateOsztalyTanuloiSzakkepzesesAdatok(entity.ID, szakkepzeseAdatok.ConvertToPCO()); } if (elozoFelhelyIsSzakkepzeses && !ujFelhelyIsSzakkepzeses) { dal.UpdateOsztalyTanuloiReszszakepzesAdatokToNull(entity.ID, TanevId, IntezmenyId, FelhasznaloId); } if (osztalyTanuloiUpdateSzakkepzoJuttatasAdatokNeeded) { dal.FullUpdate(entity); if (juttatasUpdateNeeded) { var osztalyTanuloiIdList = entity.Tanulo.Where(x => !x.Torolt && (!x.KilepesDatum.HasValue || (x.KilepesDatum.Value >= DateTime.Today))).Select(tcs => tcs.TanuloId).ToList(); var juttatasDal = h.JuttatasDAL(); juttatasDal.UpdateTanulokSzakkepzesiJuttatasok(entity.TanevId, FelhasznaloId, (int)JuttatasTipusEnum.szakkepzesi_juttatas, tanulokIdString: string.Join(",", osztalyTanuloiIdList)); juttatasDal.UpdateTanulokSzakkepzesiJuttatasok(entity.TanevId, FelhasznaloId, (int)JuttatasTipusEnum.apaczaiosztondij, tanulokIdString: string.Join(",", osztalyTanuloiIdList)); } return; } dal.FullUpdate(entity); }); } private void KapcsolodoOsztalybontottCsoportokUpdate(IDalHandler h, IOsztaly entity, bool isOrarendUpdateNeeded) { var csoportDal = h.Csoport(); var orarendDal = h.OrarendiOra(); foreach (var osztalybontottcsoport in entity.CsoportBontasok) { osztalybontottcsoport.EvfolyamTipusa = entity.EvfolyamTipusa; osztalybontottcsoport.VegzosEvfolyam = entity.VegzosEvfolyam; osztalybontottcsoport.Keresztfeleves = entity.Keresztfeleves; osztalybontottcsoport.FeladatEllatasiHelyId = entity.FeladatEllatasiHelyId; osztalybontottcsoport.KepzesiForma = entity.KepzesiForma; osztalybontottcsoport.FeladatKategoriaId = new FeladatEllatasiHelyHelper(new DalHandlerConnectionType(ConnectionType, h)).GetFeladatKategoriaId(entity.FeladatEllatasiHelyId); osztalybontottcsoport.IsTechnikai = entity.IsTechnikai; if (osztalybontottcsoport.IsAutoEgyeniCsoport) { osztalybontottcsoport.CsoportVezetoId = entity.OsztalyFonokId; } csoportDal.Update(osztalybontottcsoport); if (isOrarendUpdateNeeded) { orarendDal.UpdateOrarend(IntezmenyId, TanevId, null, null, null, osztalybontottcsoport.ID); } } } private void SetSzakkepzesesAdatokNaToNull(SzakkepzesesAdatokCO szakkepzesesAdatok) { if (szakkepzesesAdatok.Szakmacsoport == (int)SzakmacsoportTipusEnum.Na) { szakkepzesesAdatok.Szakmacsoport = null; } if (szakkepzesesAdatok.Agazat == (int)AgazatTipusEnum.Na) { szakkepzesesAdatok.Agazat = null; } if (szakkepzesesAdatok.Szakkepesites == (int)SzakkepesitesTipusEnum.Na) { szakkepzesesAdatok.Szakkepesites = null; } if (szakkepzesesAdatok.Reszszakkepesites == (int)ReszszakkepesitesTipusEnum.Na) { szakkepzesesAdatok.Reszszakkepesites = null; } } public string DeleteClass(int id, bool csoportokTorlese, int felhasznaloId, bool updateTanoraEvesSorszam) { return Dal.CustomConnection.Run(ConnectionType, (h) => { var tanmenetHelper = new TanmenetHelper(new DalHandlerConnectionType(ConnectionType, h)); var dal = h.Osztaly(); var entity = dal.Get(id); var tanuloOsztalyNev = entity.Nev; if (h.OsztalyCsoport().HasTanuloBesorolas(id)) { throw new CannotBeDeletedException(string.Format(ErrorResource.Az0OsztalyCsoportNemTorolthetoMertKapcsolodikVagyKapcsolodottHozzaTanulo, tanuloOsztalyNev)); } foreach (var tanmenetId in entity.Tanmenet.Where(x => !x.Torolt).Select(x => x.ID).ToList()) { tanmenetHelper.DeleteTanmenet(tanmenetId); } // TODO: Átgondolni, a Csoport entitás Osztalybontás és az Osztály CsoportBontasok, illetve az Osztaly_Csoportok kapcsolótáblát, mert redundás tárolásnak tünik és össze vissza van használva. // Elméletileg nem lehet egy csoportnak több osztálya(felületről biztos nem lehet állítani), ezért a kapcsolótábla indokolalannak tűnik. // https://jira.ekreta.hu/browse/KRETA-2817 var osztalyCsoport = new OsztalyCsoportHelper(new DalHandlerConnectionType(ConnectionType, h)); if (!osztalyCsoport.HasTanitasiOra(id)) { var orarendiOraDal = h.OrarendiOra(); var orarendiOraList = entity.OrarendiOra.Where(x => !x.Torolt).ToList(); orarendiOraList.ForEach(x => orarendiOraDal.Delete(x.ID)); } var csoportDal = h.Csoport(); var csoportHelper = new CsoportHelper(new DalHandlerConnectionType(ConnectionType, h)); var csoportbontasok = entity.CsoportBontasok.Where(cs => !cs.Torolt).ToList(); if (csoportokTorlese) { csoportbontasok.ForEach(x => csoportHelper.DeleteGroupById(x.ID)); } else { csoportbontasok.ForEach(x => csoportDal.SetOsztalyBontasIdToNull(x.ID, felhasznaloId, TanevId)); } dal.Delete(entity, IntezmenyId, TanevId, updateTanoraEvesSorszam); return tanuloOsztalyNev; }); } public DataSet OsztalyExport(OsztalySearchCo co) { return Dal.CustomConnection.Run(ConnectionType, (h) => { DateTime tanevElsoTanitasiNapja = new TanevHelper(new DalHandlerConnectionType(ConnectionType, h)).GetTanevKezdete(); var dal = h.Osztaly(GridParameters); var ds = dal.OsztalyExport(co.ConvertToPco(), TanevId, tanevElsoTanitasiNapja); return ds; }); } public string UpdateOsztalyTobbes(OsztalyTobbesModCO co) { if (!co.ID.HasValue) { throw new BlException(ErrorResource.NemLetezoOsztaly); } return Dal.CustomConnection.Run(ConnectionType, (h) => { var osztalyTanuloiUpdateSzakkepzesesAdatokNeeded = false; var dal = h.Osztaly(); var entity = dal.Get(co.ID.Value); var kapcsolodoOsztalybontottCsoportokUpdate = ( co.Evfolyam.HasValue && entity.EvfolyamTipusa != co.Evfolyam || co.VegzosEvf.HasValue && entity.VegzosEvfolyam != co.VegzosEvf.ToBool() || co.Keresztfeleves.HasValue && entity.Keresztfeleves != co.Keresztfeleves.ToBool() || co.FeladatellatasiHely.HasValue && entity.FeladatEllatasiHelyId != co.FeladatellatasiHely ); var isOrarendUpdateNeeded = (entity.VegzosEvfolyam != co.VegzosEvf.ToBool() || entity.Keresztfeleves != co.Keresztfeleves.ToBool()) && entity.OrarendiOra.Count > 0; var juttatasUpdateNeeded = (co.Evfolyam.HasValue && (entity.EvfolyamTipusa != co.Evfolyam)) || (co.JogviszonyTipusId.HasValue && (entity.JogviszonyTipusId != co.JogviszonyTipusId)) || (co.VegzosEvf.HasValue && (entity.VegzosEvfolyam != co.VegzosEvf.ToBool())) || (co.Keresztfeleves.HasValue && (entity.Keresztfeleves != co.Keresztfeleves.ToBool())) || (co.TechnikaiOsztaly.HasValue && (entity.IsTechnikai != co.TechnikaiOsztaly.ToBool())); if (co.FeladatellatasiHely.HasValue) { var felhelyHelper = new FeladatEllatasiHelyHelper(new DalHandlerConnectionType(ConnectionType, h)); var elozoFelhelyIsSzakkepzeses = felhelyHelper.IsSzakkepzeses(entity.FeladatEllatasiHelyId); var ujFelhelyIsSzakkepzeses = felhelyHelper.IsSzakkepzeses(co.FeladatellatasiHely.Value); juttatasUpdateNeeded = juttatasUpdateNeeded || (elozoFelhelyIsSzakkepzeses != ujFelhelyIsSzakkepzeses); } var osztalyTanuloiUpdateSzakkepzoJuttatasAdatokNeeded = new IntezmenyHelper(new DalHandlerConnectionType(ConnectionType, h)).GetIntezmenyiAdatok().IsSzakkepzoJuttatas; if (co.Evfolyam.HasValue) { entity.EvfolyamTipusa = co.Evfolyam.Value; } if (co.FeladatellatasiHely.HasValue) { if (entity.FeladatEllatasiHelyId != co.FeladatellatasiHely.Value && !new FeladatEllatasiHelyHelper(new DalHandlerConnectionType(ConnectionType, h)).IsAzonosKategoria(entity.FeladatEllatasiHelyId, co.FeladatellatasiHely.Value) && h.OsztalyCsoport().HasTanuloBesorolas(co.ID.Value, true)) { return entity.Nev; } entity.FeladatEllatasiHelyId = co.FeladatellatasiHely.Value; entity.FeladatKategoriaId = new FeladatEllatasiHelyHelper(new DalHandlerConnectionType(ConnectionType, h)).GetFeladatKategoriaId(co.FeladatellatasiHely.Value); } if (co.KepzesiForma.HasValue) { entity.KepzesiForma = co.KepzesiForma.Value; } if (co.Tanterv.HasValue) { entity.TantervId = co.Tanterv.Value; } if (co.VegzosEvf.HasValue) { entity.VegzosEvfolyam = co.VegzosEvf.ToBool(); } if (co.Keresztfeleves.HasValue) { entity.Keresztfeleves = co.Keresztfeleves.ToBool(); } if (co.TechnikaiOsztaly.HasValue) { entity.IsTechnikai = co.TechnikaiOsztaly.ToBool(); } if (co.TervezettLetszam.HasValue) { entity.TervezettLetszam = co.TervezettLetszam; } if (co.Nemzetisegi.HasValue) { entity.Nemzetisegi = co.Nemzetisegi.ToBool(); } //if (co.Gyogypedagogiai.HasValue) //{ // entity.Gyogypedagogiai = co.Gyogypedagogiai.ToBool(); // entity.SpecialisJellemzo = co.SpecialisJellemzo; //} if (co.Kettannyelvu.HasValue) { entity.Kettannyelvu = co.Kettannyelvu.ToBool(); } if (co.NyelviElokeszito.HasValue) { entity.NyelviElokeszito = co.NyelviElokeszito.ToBool(); } if (co.IsGyogypedagogiaiLogopediai.HasValue) { entity.IsGyogypedagogiaiLogopediai = co.IsGyogypedagogiaiLogopediai.ToBool(); } if (co.AJAlProgram.HasValue) { entity.AranyJanosProgramTipusId = co.AJAlProgram.Value; } //if (co.Gyogypedagogiai.HasValue) //{ // entity.Gyogypedagogiai = co.Gyogypedagogiai.ToBool(); // entity.SpecialisJellemzo = co.SpecialisJellemzo; //} if (co.SzakmacsoportId.HasValue) { entity.SzakmaCsoport = co.SzakmacsoportId.Value; osztalyTanuloiUpdateSzakkepzesesAdatokNeeded = true; } if (co.AgazatId.HasValue) { entity.Agazat = co.AgazatId.Value; osztalyTanuloiUpdateSzakkepzesesAdatokNeeded = true; } if (co.SzakkepesitesId.HasValue) { entity.Szakkepesites = co.SzakkepesitesId.Value; osztalyTanuloiUpdateSzakkepzesesAdatokNeeded = true; } if (co.ReszSzakkepesitesId.HasValue) { entity.Reszszakkepesites = co.ReszSzakkepesitesId.Value; osztalyTanuloiUpdateSzakkepzesesAdatokNeeded = true; } if (co.AgazatUjSzktTipusId.HasValue) { entity.AgazatUjSzktTipusId = co.AgazatUjSzktTipusId.Value; } if (co.SzakmaTipusId.HasValue) { entity.SzakmaTipusId = co.SzakmaTipusId.Value; } if (co.SzakmairanyTipusId.HasValue) { entity.SzakmairanyTipusId = co.SzakmairanyTipusId.Value; } if (co.SzakiranyNktTipusId.HasValue) { entity.SzakiranyNktTipusId = co.SzakiranyNktTipusId.Value; } if (co.SzakkepesitesNktTipusId.HasValue) { entity.SzakkepesitesNktTipusId = co.SzakkepesitesNktTipusId.Value; } if (co.TanulmanyiTeruletNktTipusId.HasValue) { entity.TanulmanyiTeruletNktTipusId = co.TanulmanyiTeruletNktTipusId.Value; } //if (co.AJTehettseggondozoProgram.HasValue) //{ // entity.AJTehettseggondozoProgram = co.AJTehettseggondozoProgram.ToBool(); //} if (co.GimnaziumiEvfolyamTipusId.HasValue) { entity.GimnaziumiEvfolyamTipusId = co.GimnaziumiEvfolyamTipusId.Value; } if (co.Sport.HasValue) { entity.Sport = co.Sport.ToBool(); } if (co.AJProgram.HasValue) { entity.AJProgram = co.AJProgram.ToBool(); } if (co.MuveszetiAgId.HasValue) { entity.MuveszetiAgId = co.MuveszetiAgId.Value; } if (co.MufajTipusId.HasValue) { entity.MufajTipusId = co.MufajTipusId.Value; } if (co.TanszakTipusId.HasValue) { entity.TanszakTipusId = co.TanszakTipusId.Value; } if (co.ZenemuveszetiAgTipusId.HasValue) { entity.ZenemuveszetiAgTipusId = co.ZenemuveszetiAgTipusId.Value; } if (osztalyTanuloiUpdateSzakkepzesesAdatokNeeded) { var szakkepzeseAdatok = new SzakkepzesesAdatokCO { Szakmacsoport = entity.SzakmaCsoport, Agazat = entity.Agazat, Szakkepesites = entity.Szakkepesites, Reszszakkepesites = entity.Reszszakkepesites }; SetSzakkepzesesAdatokNaToNull(szakkepzeseAdatok); dal.UpdateOsztalyTanuloiSzakkepzesesAdatok(entity.ID, szakkepzeseAdatok.ConvertToPCO()); } if (co.OsztalynaploMegnyitasDatuma.HasValue) { entity.OsztalynaploMegnyitasa = co.OsztalynaploMegnyitasDatuma.Value; } if (co.OsztalynaploLezarasDatuma.HasValue) { entity.OsztalynaploZarasa = co.OsztalynaploLezarasDatuma.Value; } if (kapcsolodoOsztalybontottCsoportokUpdate) { KapcsolodoOsztalybontottCsoportokUpdate(h, entity, isOrarendUpdateNeeded); } entity.JogviszonyTipusId = co.JogviszonyTipusId; if (co.OsztalyFonok.HasValue) { entity.OsztalyFonokId = co.OsztalyFonok.Value; } if (co.OsztalyFonokHelyettes.HasValue) { entity.OfoHelyettesId = co.OsztalyFonokHelyettes.Value; } if (co.Terem.HasValue) { entity.TeremId = co.Terem.Value; } if (osztalyTanuloiUpdateSzakkepzoJuttatasAdatokNeeded) { dal.FullUpdate(entity); if (juttatasUpdateNeeded) { var osztalyTanuloiIdList = entity.Tanulo.Where(x => !x.Torolt && (!x.KilepesDatum.HasValue || (x.KilepesDatum.Value >= DateTime.Today))).Select(tcs => tcs.TanuloId).ToList(); var juttatasDal = h.JuttatasDAL(); juttatasDal.UpdateTanulokSzakkepzesiJuttatasok(entity.TanevId, FelhasznaloId, (int)JuttatasTipusEnum.szakkepzesi_juttatas, tanulokIdString: string.Join(",", osztalyTanuloiIdList)); juttatasDal.UpdateTanulokSzakkepzesiJuttatasok(entity.TanevId, FelhasznaloId, (int)JuttatasTipusEnum.apaczaiosztondij, tanulokIdString: string.Join(",", osztalyTanuloiIdList)); } return null; } dal.FullUpdate(entity); return null; }); } private DataSet SearchClass(OsztalySearchCo co) { return Dal.CustomConnection.Run(ConnectionType, (h) => { var dal = h.Osztaly(GridParameters); var ds = dal.OsztalyKereses(co.ConvertToPco(), TanevId); return ds; }); } public int GetOsztalyfonokByOsztalyId(int osztalyId) { return Dal.CustomConnection.Run(ConnectionType, (h) => { var dal = h.Osztaly(); return dal.GetOsztalyfonokByOsztalyId(osztalyId); }); } public IDictionary GetOsztalyokByTanev(string baseText, int? feladatKategoriaId = null) { var result = Dal.CustomConnection.Run(ConnectionType, (h) => { var dal = h.Osztaly(); return dal.GetOsztalyokByTanevForDDL(TanevId, feladatKategoriaId); }); return LogicUtil.CreateDropdownContent(result, "ID", "Nev", baseText, sort: false); } public IDictionary GetOnlyOsztalyok(string baseText = null, int? tanarId = null, OktNevelesiKategoriaEnum? feladatKategoriaId = null, int? customTanevId = null, bool forSzirStatTanulo = false) { var result = Dal.CustomConnection.Run(ConnectionType, (h) => { var tanevId = customTanevId.HasValue ? customTanevId.Value : TanevId; var dal = h.Osztaly(); return dal.GetOnlyOsztalyokForDDL(tanevId, tanarId, feladatKategoriaId, forSzirStatTanulo); }); return LogicUtil.CreateDropdownContent(result, "ID", "Nev", baseText, sort: false); } private void ConvertToUpdateEntity(IDalHandler h, IOsztaly entity, OsztalyCO co) { entity.Nev = co.OsztalyNev; entity.Megjegyzes = co.Megjegyzes; entity.VegzosEvfolyam = co.VegzosEvfolyam; entity.EvfolyamTipusa = co.EvfolyamTipusa; if (co.TeremID.HasValue) { entity.TeremId = co.TeremID.Value; } else { entity.Terem = null; } if (co.KepzesiForma.HasValue) { entity.KepzesiForma = co.KepzesiForma.Value; } if (co.OsztalyfonokId.HasValue && co.OsztalyfonokId > 0) { entity.OsztalyFonokId = co.OsztalyfonokId.Value; } else { entity.OsztalyFonok = null; } if (co.OsztalyfonokHelyettesId.HasValue && co.OsztalyfonokHelyettesId > 0) { entity.OfoHelyettesId = (int)co.OsztalyfonokHelyettesId; } else { entity.OfoHelyettes = null; } if (co.TantervId.HasValue && co.TantervId > 0) { entity.TantervId = co.TantervId.Value; } else { entity.Tanterv = null; } if (co.FeladatEllatasiHelyId > 0) { entity.FeladatEllatasiHelyId = co.FeladatEllatasiHelyId; entity.FeladatKategoriaId = new FeladatEllatasiHelyHelper(new DalHandlerConnectionType(ConnectionType, h)).GetFeladatKategoriaId(co.FeladatEllatasiHelyId); } else { entity.FeladatEllatasiHely = null; } if (co.OsztalynaploMegnyitasa.HasValue) { entity.OsztalynaploMegnyitasa = co.OsztalynaploMegnyitasa.Value; } else { entity.OsztalynaploMegnyitasa = null; } if (co.OsztalynaploLezarasa.HasValue) { entity.OsztalynaploZarasa = co.OsztalynaploLezarasa.Value; } else { entity.OsztalynaploZarasa = null; } if (co.SzuloiMunkakozossegKepviseloId.HasValue && co.SzuloiMunkakozossegKepviseloId > 0) { entity.SZMKKepviseloId = co.SzuloiMunkakozossegKepviseloId.Value; } else { entity.SZMKKepviselo = null; } if (co.SzuloiMunkakozossegKepviseloHelyettesId.HasValue && co.SzuloiMunkakozossegKepviseloHelyettesId > 0) { entity.SZMKKepviseloHelyettesId = co.SzuloiMunkakozossegKepviseloHelyettesId.Value; } else { entity.SZMKKepviseloHelyettes = null; } if (co.SzuloiMunkakozossegKepviseloHelyettesId.HasValue && co.SzuloiMunkakozossegKepviseloHelyettesId > 0) { entity.SZMKKepviseloHelyettesId = co.SzuloiMunkakozossegKepviseloHelyettesId.Value; } else { entity.SZMKKepviseloHelyettes = null; } if (co.AJAlProgram.HasValue && co.AJAlProgram > 0) { entity.AranyJanosProgramTipusId = co.AJAlProgram.Value; } else { entity.AranyJanosProgramTipusId = null; } entity.OsztalypenzBankszamlaszama = co.OsztalypenzBankszamlaszama; entity.OsztalypenzBankszamlaszamKedvezmenyezettNeve = co.OsztalypenzBankszamlaszamKedvezmenyezett; entity.GimnaziumiEvfolyamTipusId = co.GimnaziumiEvfolyamTipusId.HasValue ? co.GimnaziumiEvfolyamTipusId : null; entity.OsztalynaploLeirasa = co.OsztalynaploLeirasa; entity.Naploszam = co.Naploszam; entity.Keresztfeleves = co.Keresztfeleves; entity.IsTechnikai = co.TechnikaiOsztaly; entity.TervezettLetszam = co.TervezettLetszam; entity.Nemzetisegi = co.Nemzetisegi; entity.Kettannyelvu = co.Kettannyelvu; entity.NyelviElokeszito = co.NyelviElokeszito; entity.IsGyogypedagogiaiLogopediai = co.IsGyogypedagogiaiLogopediai; entity.Sport = co.Sport; entity.SzakmaCsoport = co.SzakmacsoportId ?? (int)SzakmacsoportTipusEnum.Na; entity.Agazat = co.AgazatId ?? (int)AgazatTipusEnum.Na; entity.Szakkepesites = co.SzakkepesitesId ?? (int)SzakkepesitesTipusEnum.Na; entity.Reszszakkepesites = co.ReszSzakkepesitesId ?? (int)ReszszakkepesitesTipusEnum.Na; entity.AgazatUjSzktTipusId = co.AgazatUjSzktTipusId ?? (int)AgazatUjSzktTipusEnum.na; entity.SzakmaTipusId = co.SzakmaTipusId ?? (int)SzakmaTipusEnum.na; entity.SzakmairanyTipusId = co.SzakmairanyTipusId ?? (int)SzakmairanyTipusEnum.na; entity.SzakiranyNktTipusId = co.SzakiranyNktTipusId ?? (int)SzakiranyNktTipusEnum.na; entity.SzakkepesitesNktTipusId = co.SzakkepesitesNktTipusId ?? (int)SzakkepesitesNktTipusEnum.na; entity.TanulmanyiTeruletNktTipusId = co.TanulmanyiTeruletNktTipusId ?? (int)TanulmanyiTeruletNktTipusEnum.na; entity.JogviszonyTipusId = co.JogviszonyTipusId; entity.AJProgram = co.AJProgram; //entity.AJTehettseggondozoProgram = co.AJTehettseggondozoProgram; entity.SpecialisJellemzo = co.SpecialisJellemzo; entity.MuveszetiAgId = co.MuveszetiAgId; entity.TanszakTipusId = co.TanszakTipusId; entity.MufajTipusId = co.MufajTipusId; } private void ConvertToNewEntity(IOsztaly entity, OsztalyCO co) { entity.Nev = co.OsztalyNev; entity.Megjegyzes = co.Megjegyzes; entity.VegzosEvfolyam = co.VegzosEvfolyam; if (co.TeremID.HasValue) entity.TeremId = co.TeremID.Value; if (co.KepzesiForma.HasValue) entity.KepzesiForma = co.KepzesiForma.Value; entity.EvfolyamTipusa = co.EvfolyamTipusa; if (co.OsztalyfonokId.HasValue && co.OsztalyfonokId > 0) entity.OsztalyFonokId = co.OsztalyfonokId.Value; if (co.OsztalyfonokHelyettesId != null && co.OsztalyfonokHelyettesId > 0) entity.OfoHelyettesId = co.OsztalyfonokHelyettesId.Value; if (co.TantervId.HasValue && co.TantervId > 0) entity.TantervId = co.TantervId.Value; if (co.FeladatEllatasiHelyId > 0) entity.FeladatEllatasiHelyId = co.FeladatEllatasiHelyId; if (co.OsztalynaploMegnyitasa.HasValue) entity.OsztalynaploMegnyitasa = co.OsztalynaploMegnyitasa.Value; if (co.OsztalynaploLezarasa.HasValue) entity.OsztalynaploZarasa = co.OsztalynaploLezarasa.Value; if (!string.IsNullOrWhiteSpace(co.OsztalynaploLeirasa)) entity.OsztalynaploLeirasa = co.OsztalynaploLeirasa; entity.Naploszam = co.Naploszam; entity.Keresztfeleves = co.Keresztfeleves; entity.IsTechnikai = co.TechnikaiOsztaly; entity.TervezettLetszam = co.TervezettLetszam; entity.Nemzetisegi = co.Nemzetisegi; entity.Kettannyelvu = co.Kettannyelvu; entity.NyelviElokeszito = co.NyelviElokeszito; entity.IsGyogypedagogiaiLogopediai = co.IsGyogypedagogiaiLogopediai; entity.Sport = co.Sport; entity.AJProgram = co.AJProgram; //entity.AJTehettseggondozoProgram = co.AJTehettseggondozoProgram; entity.SpecialisJellemzo = co.SpecialisJellemzo; entity.MuveszetiAgId = co.MuveszetiAgId; if (co.GimnaziumiEvfolyamTipusId.HasValue) { entity.GimnaziumiEvfolyamTipusId = co.GimnaziumiEvfolyamTipusId; } entity.SzakmaCsoport = co.SzakmacsoportId ?? (int)SzakmacsoportTipusEnum.Na; entity.Agazat = co.AgazatId ?? (int)AgazatTipusEnum.Na; entity.Szakkepesites = co.SzakkepesitesId ?? (int)SzakkepesitesTipusEnum.Na; entity.Reszszakkepesites = co.ReszSzakkepesitesId ?? (int)ReszszakkepesitesTipusEnum.Na; entity.AgazatUjSzktTipusId = co.AgazatUjSzktTipusId ?? (int)AgazatUjSzktTipusEnum.na; entity.SzakmaTipusId = co.SzakmaTipusId ?? (int)SzakmaTipusEnum.na; entity.SzakmairanyTipusId = co.SzakmairanyTipusId ?? (int)SzakmairanyTipusEnum.na; entity.SzakiranyNktTipusId = co.SzakiranyNktTipusId ?? (int)SzakiranyNktTipusEnum.na; entity.SzakkepesitesNktTipusId = co.SzakkepesitesNktTipusId ?? (int)SzakkepesitesNktTipusEnum.na; entity.TanulmanyiTeruletNktTipusId = co.TanulmanyiTeruletNktTipusId ?? (int)TanulmanyiTeruletNktTipusEnum.na; entity.JogviszonyTipusId = co.JogviszonyTipusId; if (co.AJAlProgram.HasValue) { entity.AranyJanosProgramTipusId = co.AJAlProgram.Value; } entity.MuveszetiAgId = co.MuveszetiAgId; entity.MufajTipusId = co.MufajTipusId; entity.TanszakTipusId = co.TanszakTipusId; } /// INFO @DevKornel: Mobil használja public OsztalyCO ConvertEntityToCo(IOsztaly entity, IDalHandler h) { var co = new OsztalyCO(); co.Id = entity.ID; co.OsztalyNev = entity.Nev; co.Megjegyzes = entity.Megjegyzes; co.VegzosEvfolyam = entity.VegzosEvfolyam; co.KepzesiForma = entity.KepzesiForma; co.EvfolyamTipusa = entity.EvfolyamTipusa > 0 ? entity.EvfolyamTipusa : (int)EvfolyamTipusEnum.na; co.OsztalyfonokId = entity.OsztalyFonokId > 0 ? entity.OsztalyFonokId : -1; co.OsztalyfonokHelyettesId = entity.OfoHelyettesId > 0 ? entity.OfoHelyettesId : -1; co.TantervId = entity.TantervId > 0 ? entity.TantervId : new int?(); co.FeladatEllatasiHelyId = entity.FeladatEllatasiHelyId > 0 ? entity.FeladatEllatasiHelyId : 0; co.TeremID = entity.TeremId > 0 ? entity.TeremId : (int?)null; co.OsztalyfonokNev = entity.OsztalyFonokId > 0 ? entity.OsztalyFonok.NyomtatasiNev : ""; co.OfoHelyettesNev = entity.OfoHelyettesId > 0 ? entity.OfoHelyettes.NyomtatasiNev : ""; co.TanevNeve = entity.Tanev.Nev; co.TeremNev = entity.Terem != null ? entity.Terem.Nev : ""; co.TantervNev = entity.TantervId > 0 ? entity.Tanterv.Nev : ""; co.FeladatellatasiHelyNev = entity.FeladatEllatasiHely.MukodesiHely.Nev + " - " + entity.FeladatEllatasiHely.OktatasiNevelesiFeladatTipus.GetDisplayName(TanevId); co.Keresztfeleves = entity.Keresztfeleves; co.SzakmacsoportId = entity.SzakmaCsoport; co.AgazatId = entity.Agazat; co.SzakkepesitesId = entity.Szakkepesites; co.ReszSzakkepesitesId = entity.Reszszakkepesites; co.AgazatUjSzktTipusId = entity.AgazatUjSzktTipusId; co.SzakmaTipusId = entity.SzakmaTipusId; co.SzakmairanyTipusId = entity.SzakmairanyTipusId; co.SzakiranyNktTipusId = entity.SzakiranyNktTipusId; co.SzakkepesitesNktTipusId = entity.SzakkepesitesNktTipusId; co.TanulmanyiTeruletNktTipusId = entity.TanulmanyiTeruletNktTipusId; co.TechnikaiOsztaly = entity.IsTechnikai; co.TervezettLetszam = entity.TervezettLetszam; co.Nemzetisegi = entity.Nemzetisegi; co.Kettannyelvu = entity.Kettannyelvu; co.NyelviElokeszito = entity.NyelviElokeszito; co.IsGyogypedagogiaiLogopediai = entity.IsGyogypedagogiaiLogopediai; co.GimnaziumiEvfolyamTipusId = entity.GimnaziumiEvfolyamTipusId; co.Sport = entity.Sport; co.AJProgram = entity.AJProgram; //co.AJTehettseggondozoProgram = entity.AJTehettseggondozoProgram; co.SpecialisJellemzo = entity.SpecialisJellemzo; co.MuveszetiAgId = entity.MuveszetiAgId; co.MufajTipusId = entity.MufajTipusId; co.TanszakTipusId = entity.TanszakTipusId; co.SzuloiMunkakozossegKepviseloId = entity.SZMKKepviseloId > 0 ? entity.SZMKKepviseloId : (int?)null; co.SzuloiMunkakozossegKepviselo = entity.SZMKKepviseloId > 0 ? entity.SZMKKepviselo.Nev : string.Empty; co.SzuloiMunkakozossegKepviseloHelyettesId = entity.SZMKKepviseloHelyettesId > 0 ? entity.SZMKKepviseloHelyettesId : (int?)null; co.SzuloiMunkakozossegKepviseloHelyettes = entity.SZMKKepviseloHelyettesId > 0 ? entity.SZMKKepviseloHelyettes.Nev : string.Empty; co.OsztalypenzBankszamlaszama = entity.OsztalypenzBankszamlaszama; co.OsztalypenzBankszamlaszamKedvezmenyezett = entity.OsztalypenzBankszamlaszamKedvezmenyezettNeve; co.JogviszonyTipusId = entity.JogviszonyTipusId; //Azok a tanulók, akiknél nincs kilépésdátuma, vagy az nagyobb, mint a jelenlegi dátum DateTime date = DateTime.Now; TanevHelper thelper = new TanevHelper(new DalHandlerConnectionType(ConnectionType, h)); var tanev = thelper.GetTanevInfo(); co.TanulokSzama = entity.Tanulo.Count(x => x.Torolt == false && (!tanev.IsAktiv || (x.BelepesDatum != null && x.BelepesDatum <= date && (x.KilepesDatum == null || x.KilepesDatum > date)))); if (entity.OsztalynaploMegnyitasa != null) { co.OsztalynaploMegnyitasa = entity.OsztalynaploMegnyitasa; } if (entity.OsztalynaploZarasa != null) { co.OsztalynaploLezarasa = entity.OsztalynaploZarasa; } if (entity.OsztalynaploLeirasa != null) { co.OsztalynaploLeirasa = entity.OsztalynaploLeirasa; } if (!string.IsNullOrWhiteSpace(entity.Naploszam)) { co.Naploszam = entity.Naploszam; } co.AJAlProgram = entity.AranyJanosProgramTipusId; return co; } public SzakkepzesesAdatokCO GetOsztalyNKTesSZKTSzakkepzesesAdatok(int osztalyId) { return Dal.CustomConnection.Run(ConnectionType, (h) => { var dal = h.Osztaly(); var szakkepzesesAdatok = new SzakkepzesesAdatokCO(); var ds = dal.GetOsztalyNKTesSZKTSzakkepzesesAdatok(osztalyId); if (ds.Tables[0].Rows.Count > 0) { var row = ds.Tables[0].Rows[0]; szakkepzesesAdatok.Szakmacsoport = row["Szakmacsoport"] == DBNull.Value ? null : (int?)row["Szakmacsoport"]; szakkepzesesAdatok.Agazat = row["Agazat"] == DBNull.Value ? null : (int?)row["Agazat"]; szakkepzesesAdatok.Szakkepesites = row["Szakkepesites"] == DBNull.Value ? null : (int?)row["Szakkepesites"]; szakkepzesesAdatok.Reszszakkepesites = row["Reszszakkepesites"] == DBNull.Value ? null : (int?)row["Reszszakkepesites"]; szakkepzesesAdatok.SzakiranyNKTTipusId = row["SzakiranyNKTTipus"] == DBNull.Value ? null : (int?)row["SzakiranyNKTTipus"]; szakkepzesesAdatok.SzakkepesitesNKTTipusId = row["SzakkepesitesNKTTipus"] == DBNull.Value ? null : (int?)row["SzakkepesitesNKTTipus"]; szakkepzesesAdatok.TanulmanyiTeruletNKTTipusId = row["TanulmanyiTeruletNKTTipus"] == DBNull.Value ? null : (int?)row["TanulmanyiTeruletNKTTipus"]; } return szakkepzesesAdatok; }); } public SzakkepzoAdatokCO GetOsztalySzakkepzoAdatok(int osztalyId) { return Dal.CustomConnection.Run(ConnectionType, (h) => { var dal = h.Osztaly(); var szakkepzoAdatok = new SzakkepzoAdatokCO(); var ds = dal.GetOsztalySzakkepzoAdatok(osztalyId); if (ds.Tables[0].Rows.Count > 0) { var row = ds.Tables[0].Rows[0]; szakkepzoAdatok.JogviszonyTipus = row["Jogviszony"] == DBNull.Value ? null : (int?)row["Jogviszony"]; } return szakkepzoAdatok; }); } public List GetOsztalyCoList() { DataSet dataSet = Dal.CustomConnection.Run(ConnectionType, dalHandler => dalHandler.Osztaly().GetOsztalyDataSet(TanevId)); var result = new List(); foreach (DataRow dataRow in dataSet.Tables[0].Rows) { var item = new OsztalyItemCo(dataRow); result.Add(item); } return result; } public IDictionary GetOsztalyokForDDL(string baseText = null, int? tanarId = null, bool? szuperOsztalyfonok = null, OktNevelesiKategoriaEnum? feladatKategoriaId = null) { var result = Dal.CustomConnection.Run(ConnectionType, (h) => { var dal = h.Osztaly(); return dal.GetOsztalyokForDDL(TanevId, tanarId, szuperOsztalyfonok, feladatKategoriaId); }); return LogicUtil.CreateDropdownContent(result, "ID", "Nev", baseText, sort: false); } public IDictionary GetOsztalyokCsoportokForDDL(string baseText = null, int? tanarId = null, bool szuperOsztalyfonok = false) { var result = Dal.CustomConnection.Run(ConnectionType, (h) => { var dal = h.Osztaly(); return dal.GetOsztalyokCsoportokForDDL(TanevId, tanarId, szuperOsztalyfonok); }); return LogicUtil.CreateDropdownContent(result, "ID", "Nev", baseText, sort: false); } public List GetOsztalyCoList(OsztalySearchCo osztalySearchCo) { var coList = new List(); var ds = SearchClass(osztalySearchCo); foreach (var row in ds.Tables[0].AsEnumerable()) { coList.Add(new OsztalyItemCo(row)); } return FilterOsztalyItemCoList(coList, osztalySearchCo); } private List FilterOsztalyItemCoList(List coList, OsztalySearchCo osztalySearchCo) { if (osztalySearchCo == null) { return coList; } IEnumerable result = coList; if (osztalySearchCo.NincsEvfolyamJellmezo.HasValue && osztalySearchCo.NincsEvfolyamJellmezo.Value) { result = result.Where(x => x.EvfolyamId == (int)EvfolyamTipusEnum.na); } if (osztalySearchCo.NincsOsztalyfonok.HasValue && osztalySearchCo.NincsOsztalyfonok.Value) { result = result.Where(x => string.IsNullOrWhiteSpace(x.Osztalyfonok)); } if (osztalySearchCo.UresOsztaly.HasValue) { // Note: TanulokSzamaOrder = TanulokSzama * 1000 + ArchivTanulokSzama DB-ben igy kerul kiszamitasra! result = result.Where(x => x.TanulokSzamaOrder < 1000); } if (osztalySearchCo.FeladatKategoriaId.IsEntityId()) { result = result.Where(x => x.FeladatKategoriaId == osztalySearchCo.FeladatKategoriaId.Value); } if (!string.IsNullOrWhiteSpace(osztalySearchCo.OsztalyNev)) { result = result.Where(x => x.Nev.ToComparableString().Contains(osztalySearchCo.OsztalyNev.ToComparableString())); } if (osztalySearchCo.EvfolyamId.HasValue) { result = result.Where(x => x.EvfolyamId == osztalySearchCo.EvfolyamId.Value); } if (osztalySearchCo.OsztalyfonokId.HasValue) { result = result.Where(x => x.OsztalyfonokId == osztalySearchCo.OsztalyfonokId.Value); } if (osztalySearchCo.OsztalyfonokHelyettesId.HasValue) { result = result.Where(x => x.OsztalyfonokHelyettesId == osztalySearchCo.OsztalyfonokHelyettesId.Value); } if (osztalySearchCo.TeremId.HasValue) { result = result.Where(x => x.TeremId == osztalySearchCo.TeremId.Value); } if (osztalySearchCo.Vegzos.HasValue) { result = result.Where(x => x.VegzosEvfolyam_BNAME == (osztalySearchCo.Vegzos.Value == 1).GetDisplayName()); } if (osztalySearchCo.KepzesId.HasValue) { result = result.Where(x => x.KepzesId == osztalySearchCo.KepzesId.Value); } if (osztalySearchCo.TantervId.HasValue) { result = result.Where(x => x.TantervId == osztalySearchCo.TantervId.Value); } /// TODO: ezt a szűrést át kell beszélni if (osztalySearchCo.NaploMegnyitasDatum.HasValue) { result = result.Where(x => x.NaploMegnyitasDatum >= osztalySearchCo.NaploMegnyitasDatum.Value); } if (osztalySearchCo.NaploLezarasDatum.HasValue) { result = result.Where(x => x.NaploLezarasDatum <= osztalySearchCo.NaploLezarasDatum.Value); } if (osztalySearchCo.FeladatEllatasiHelyId.HasValue) { result = result.Where(x => x.FeladatEllatasiHelyId == osztalySearchCo.FeladatEllatasiHelyId.Value); } if (osztalySearchCo.SearchMuveszetiAgId.HasValue) { result = result.Where(x => x.MuveszetiAgId == osztalySearchCo.SearchMuveszetiAgId.Value); } return result.ToList(); } public List GetOsztalyTanuloinakKepzesiJellemzoi(int osztalyId, int jegyzekTipus, bool isAktivTanev) { return Dal.CustomConnection.Run(ConnectionType, (h) => { var dal = h.Osztaly(GridParameters); var dataSet = dal.GetOsztalyTanuloinakKepzesiJellemzoi(TanevId, IntezmenyId, osztalyId, jegyzekTipus, isAktivTanev); var result = new List(); foreach (DataRow dataRow in dataSet.Tables[0].Rows) { var item = new OsztalyTanuloinakKepzesiJellemzoiItemCo(dataRow); result.Add(item); } return result; }); } public List GetOsztalyTanuloiByKepzesiJellemzok(TanuloKepzesiJellemzoSearchCo co, bool isAktivTanev) { return Dal.CustomConnection.Run(ConnectionType, (h) => { var dal = h.Osztaly(GridParameters); var dataSet = dal.GetOsztalyTanuloiByKepzesiJellemzok(co.ConvertToPco(), TanevId, IntezmenyId, isAktivTanev); var result = new List(); foreach (DataRow dataRow in dataSet.Tables[0].Rows) { var item = new TanuloKepzesiJellemzoiItemCo(dataRow); result.Add(item); } return result; }); } public List GetOsztalyTanuloiByMunkarend(int osztalycsoportId, bool hasMunkarend, bool isAktivTanev) { return Dal.CustomConnection.Run(ConnectionType, (h) => { var dal = h.Osztaly(GridParameters); var dataSet = dal.GetOsztalyTanuloiByMunkarend(osztalycsoportId, hasMunkarend, isAktivTanev); var result = new List(); foreach (DataRow dataRow in dataSet.Tables[0].Rows) { var item = new OsztalyCsoportTanuloMunkarendItemCo(dataRow); result.Add(item); } return result; }); } public (int SzktCount, int OkjCount, int NktCount, int UresCount, int ReszszakmaCount) GetOsztalyTanuloinakSzamaKepzesiJellemzokSzerint(int osztalyId, bool isAktivTanev) { return Dal.CustomConnection.Run(ConnectionType, (h) => { var dal = h.Osztaly(GridParameters); var dataSet = dal.GetOsztalyTanuloinakSzamaKepzesiJellemzokSzerint(osztalyId, TanevId, IntezmenyId, isAktivTanev); var dataRow = dataSet.Tables[0].Rows[0]; return (SzktCount: (int)dataRow[0], OkjCount: (int)dataRow[1], NktCount: (int)dataRow[2], UresCount: (int)dataRow[3], ReszszakmaCount: (int)dataRow[4]); }); } public (int munkarenddelNemRendelkezo, int munkarenddelRendelkezo) GetOsztalyMunkarendSzama(int osztalyCsoportId, bool isAktivTanev) { return Dal.CustomConnection.Run(ConnectionType, (h) => { var dal = h.Osztaly(GridParameters); var dataSet = dal.GetOsztalyMunkarendSzama(osztalyCsoportId, isAktivTanev); var dataRow = dataSet.Tables[0].Rows[0]; return (munkarenddelNemRendelkezo: (int)dataRow[0], munkarenddelRendelkezo: (int)dataRow[1]); }); } } }