using System; using System.Collections.Generic; using System.Data; using System.Text; using Kreta.Core; using Kreta.DataAccess.Interfaces; using Kreta.DataAccessManual.Interfaces; using Kreta.DataAccessManual.ParameterClasses; using Kreta.DataAccessManual.Util; using Kreta.Enums.ManualEnums; using Kreta.Framework; using Kreta.Framework.Entities; using Kreta.Framework.Util; using SDA.DataProvider; using SDA.Kreta.Entities; namespace Kreta.DataAccessManual { internal class TeremDal : DataAccessBase, ITeremDal { public TeremDal(DalHandler handler) : base(handler) { } public TeremDal(DalHandler handler, GridParameters parameters) : base(handler, parameters) { } public DataSet GetTeremIdWithName(bool IsFromSzervezet, int? tanevId = null) { var commandParameterList = new List(); var commandText = @" SELECT t.id AS ID ,t.C_NEV AS Nev ,t.C_JELLEG AS Jelleg FROM T_TEREM_OSSZES t WHERE t.TOROLT = 'F' AND t.C_AKTIV = 'T' "; if (tanevId.IsEntityId()) { commandText += @" AND t.C_TANEVID = :pTanevId "; commandParameterList.Add(new CommandParameter("pTanevId", tanevId)); } commandText += @" AND t.C_SZERVEZETID IS " + (IsFromSzervezet ? "NOT" : "") + @" NULL "; var dataSet = GetData(commandText, commandParameterList, "Jelleg"); return dataSet; } #region Export public DataSet GetTermekAdataiExcelExport(int tanevId, TeremSearchPCO teremSearchPCO) { var paramsList = new List { new CommandParameter("pTanevId", tanevId) }; var command = new StringBuilder($@" SELECT terem.C_NEV as 'Helyiség név' , jelleg.C_NAME as 'Helyiség jelleg' , IIF(convert(varchar(20),terem.C_KAPACITAS,120) IS NULL, '-', convert(varchar(20),terem.C_KAPACITAS,120)) as 'Befogadóképesség' , IIF(convert(varchar(20),terem.C_TERULET,120) IS NULL, '-', convert(varchar(20),terem.C_TERULET,120)) as 'Alapterület (nm)' , mukodesi.C_NEV as 'Működési hely' , IIF(terem.C_TEREMFELELOSID IS NULL, '-', felh.C_NYOMTATASINEV) as 'Teremfelelős' , IIF(convert(varchar(20),terem.C_VIZSGAKAPACITAS,120) IS NULL, '-', convert(varchar(20),terem.C_VIZSGAKAPACITAS,120)) as 'Vizsga-befogadóképesség' , IIF(terem.C_AKTIV = 'T', 'Igen', 'Nem') as 'Aktív' , IIF(terem.C_TOBBORATLEHETTARTANI = 'T', 'Igen', 'Nem') as 'Egyszerre több órát lehet tartani' , IIF(terem.C_WIFILEFEDETT = 'T', 'Igen', 'Nem') as 'Wifi elérhető' , terem.C_MEGJEGYZES as 'Megjegyzés' {(teremSearchPCO.IsSelectedTanev21_22OrLater ? @", IIF(terem.C_ISINTERNETKAPCSOLATELERHETO = 'T', 'Igen', 'Nem') as 'Internetkapcsolat elérhető' , IIF(convert(varchar(20),terem.C_TANULOKSZAMARAHOZZAFERHINTER,120) IS NULL, '-', convert(varchar(20),terem.C_TANULOKSZAMARAHOZZAFERHINTER,120)) as 'Internetkapcsolattal rendelkező számítógép száma - tanulók számára hozzáférhető' , IIF(convert(varchar(20),terem.C_PEDAGOGUSHOZZAFERHINTERNETES,120) IS NULL, '-', convert(varchar(20),terem.C_PEDAGOGUSHOZZAFERHINTERNETES,120)) as 'Internetkapcsolattal rendelkező számítógépek száma - pedagógus számítógépek' , IIF(convert(varchar(20),terem.C_OKTCELRAHASZNALTSZAMITOGEPEK,120) IS NULL, '-', convert(varchar(20),terem.C_OKTCELRAHASZNALTSZAMITOGEPEK,120)) as 'Oktatási célra használt számítógépek száma' , IIF(terem.C_ISINTERAKTTABLAVALMUNKAALLOM = 'T', 'Igen', 'Nem') as 'Interaktív táblával, kijelzővel, hozzá tartozó munkaállomással felszerelt'" : "")} FROM T_TEREM_OSSZES terem LEFT JOIN T_FELHASZNALO_OSSZES felh ON felh.ID = terem.C_TEREMFELELOSID AND felh.C_INTEZMENYID = terem.C_INTEZMENYID LEFT JOIN T_DICTIONARYITEMBASE jelleg ON jelleg.ID = terem.C_JELLEG AND jelleg.C_INTEZMENYID = terem.C_INTEZMENYID LEFT JOIN T_MUKODESIHELY_OSSZES mukodesi ON mukodesi.ID = terem.C_MUKODESIHELYID AND mukodesi.C_INTEZMENYID = terem.C_INTEZMENYID WHERE terem.TOROLT = 'F' and terem.C_TANEVID = :pTanevId "); if (!string.IsNullOrWhiteSpace(teremSearchPCO.TeremNev)) { command.Append($" and lower(terem.C_NEV) like '%' + @{nameof(teremSearchPCO.TeremNev)} + '%'"); paramsList.Add(new CommandParameter(nameof(teremSearchPCO.TeremNev), teremSearchPCO.TeremNev.ToLowerInvariant())); } if (teremSearchPCO.TeremJellegId.HasValue) { command.Append(" and terem.C_JELLEG = :pJellegID"); paramsList.Add(new CommandParameter("pJellegID", teremSearchPCO.TeremJellegId)); } if (teremSearchPCO.KeresesMukodesiHelyID.HasValue) { command.Append(" and terem.C_MUKODESIHELYID = :pMukodesiID"); paramsList.Add(new CommandParameter("pMukodesiID", teremSearchPCO.KeresesMukodesiHelyID)); } if (teremSearchPCO.MinAlapterulet.HasValue) { command.Append(" and terem.C_TERULET >= :pMinTerulet"); paramsList.Add(new CommandParameter("pMinTerulet", teremSearchPCO.MinAlapterulet)); } if (teremSearchPCO.MaxAlapterulet.HasValue) { command.Append(" and terem.C_TERULET <= :pMaxTerulet"); paramsList.Add(new CommandParameter("pMaxTerulet", teremSearchPCO.MaxAlapterulet)); } if (teremSearchPCO.MinKapacitas.HasValue) { command.Append(" and terem.C_KAPACITAS >= :pMinKapacitas"); paramsList.Add(new CommandParameter("pMinKapacitas", teremSearchPCO.MinKapacitas)); } if (teremSearchPCO.MaxKapacitas.HasValue) { command.Append(" and terem.C_KAPACITAS <= :pMaxKapacitas"); paramsList.Add(new CommandParameter("pMaxKapacitas", teremSearchPCO.MaxKapacitas)); } if (teremSearchPCO.IsAktiv.HasValue) { if (teremSearchPCO.IsAktiv.Value == 1) { command.Append(" and terem.C_AKTIV = 'T'"); } if (teremSearchPCO.IsAktiv.Value == 0) { command.Append(" and terem.C_AKTIV = 'F'"); } } if (teremSearchPCO.TeremFelelosId.HasValue) { command.Append(" and terem.C_TEREMFELELOSID = :pTeremFelelos"); paramsList.Add(new CommandParameter("pTeremFelelos", teremSearchPCO.TeremFelelosId)); } if (teremSearchPCO.MinVizsgaKapacitas.HasValue) { command.Append(" and terem.C_VIZSGAKAPACITAS >= :pMinVKap"); paramsList.Add(new CommandParameter("pMinVKap", teremSearchPCO.MinVizsgaKapacitas)); } if (teremSearchPCO.MaxVizsgaKapacitas.HasValue) { command.Append(" and terem.C_VIZSGAKAPACITAS <= :pMaxVKap"); paramsList.Add(new CommandParameter("pMaxVKap", teremSearchPCO.MaxVizsgaKapacitas)); } if (teremSearchPCO.IsTobbOraTarthato.HasValue) { if (teremSearchPCO.IsTobbOraTarthato.Value == 1) { command.Append(" and terem.C_TOBBORATLEHETTARTANI = 'T'"); } if (teremSearchPCO.IsTobbOraTarthato.Value == 0) { command.Append(" and (terem.C_TOBBORATLEHETTARTANI IS NULL OR terem.C_TOBBORATLEHETTARTANI = 'F')"); } } if (teremSearchPCO.IsWifiLefedett.HasValue) { if (teremSearchPCO.IsWifiLefedett.Value == 1) { command.Append(" and terem.C_WIFILEFEDETT = 'T'"); } if (teremSearchPCO.IsWifiLefedett.Value == 0) { command.Append(" and terem.C_WIFILEFEDETT = 'F'"); } } if (teremSearchPCO.IsInternetkapcsolatElerheto.HasValue) { if (teremSearchPCO.IsInternetkapcsolatElerheto.Value == 1) { command.Append(" and terem.C_ISINTERNETKAPCSOLATELERHETO = 'T'"); } if (teremSearchPCO.IsInternetkapcsolatElerheto.Value == 0) { command.Append(" and terem.C_ISINTERNETKAPCSOLATELERHETO = 'F'"); } } if (teremSearchPCO.MinOktCelraHasznaltSzamitogepekSzama.HasValue) { command.Append(" and terem.C_OKTCELRAHASZNALTSZAMITOGEPEK >= :pMinOktCelraHasznaltSzamitogepekSzama"); paramsList.Add(new CommandParameter("pMinOktCelraHasznaltSzamitogepekSzama", teremSearchPCO.MinOktCelraHasznaltSzamitogepekSzama)); } if (teremSearchPCO.MaxOktCelraHasznaltSzamitogepekSzama.HasValue) { command.Append(" and terem.C_OKTCELRAHASZNALTSZAMITOGEPEK <= :pMaxOktCelraHasznaltSzamitogepekSzama"); paramsList.Add(new CommandParameter("pMaxOktCelraHasznaltSzamitogepekSzama", teremSearchPCO.MaxOktCelraHasznaltSzamitogepekSzama)); } if (teremSearchPCO.IsInterakttablavalMunkaallomassalFelszerelt.HasValue) { if (teremSearchPCO.IsInterakttablavalMunkaallomassalFelszerelt.Value == 1) { command.Append(" and terem.C_ISINTERAKTTABLAVALMUNKAALLOM = 'T'"); } if (teremSearchPCO.IsInterakttablavalMunkaallomassalFelszerelt.Value == 0) { command.Append(" and terem.C_ISINTERAKTTABLAVALMUNKAALLOM = 'F'"); } } command.Append(" ORDER BY terem.C_NEV"); return GetData(command.ToString(), paramsList); } #endregion public ITerem Get() { return Terem.GiveAnInstance(); } public ITerem Get(int id) { var entity = Terem.GiveAnInstance(); entity.LoadByID(id); return entity; } public void SetState(EntityState state, ITerem dto) { var entity = Terem.GiveAnInstance(); entity.SetState(state); } public void Insert(ITerem dto) { var entity = dto as Terem; entity.Importalt = false; entity.Insert(); dto.ID = entity.ID; FollowUp(entity); DalHelper.Commit(); } public void FullUpdate(ITerem dto) { var entity = dto as Terem; entity.Importalt = false; entity.FullUpdate(); FollowUp(entity); DalHelper.Commit(); } public void Delete(int id) { var entity = Terem.GiveAnInstance(); entity.LoadByID(id); Delete(entity); } public void Delete(ITerem dto) { var entity = dto as Terem; entity.Importalt = false; entity.Delete(); DalHelper.Commit(); } public void FollowUpTerem(int intezmenyId, int aktTanevId, int kovetkezoTanevId, int teremId) { using (SDACommand command = new SDACommand()) { command.Connection = UserContext.Instance.SDAConnection; command.Transaction = UserContext.Instance.SDATransaction; command.CommandText = "uspFollowUpTerem"; command.Parameters.Add("intezmenyId", intezmenyId); command.Parameters.Add("aktTanevId", aktTanevId); command.Parameters.Add("kovetkezoTanevId", kovetkezoTanevId); command.Parameters.Add("teremId", teremId); command.CommandType = CommandType.StoredProcedure; command.ExecuteNonQuery(); DalHelper.Commit(); } } public DataSet TeremKapacitasTullepesVizsgalat(string teremIdArrayString, int? tervezettKapacitas) { using (var command = new SDACommand()) { command.Connection = UserContext.Instance.SDAConnection; command.Transaction = UserContext.Instance.SDATransaction; command.CommandType = CommandType.StoredProcedure; command.CommandText = "sp_TeremKapacitasTullepesVizsgalat"; command.Parameters.Add("teremIdArray", teremIdArrayString); command.Parameters.Add("tervezettKapacitas", tervezettKapacitas); var dts = new DataSet(); using (var adapter = new SDADataAdapter()) { adapter.SelectCommand = command; adapter.Fill(dts); } return dts; } } public DataSet GetTeremDataSet(int intezmenyId, int tanevId, bool isFromSzervezet, int? szervezetId) { using (var command = new SDACommand()) { command.Connection = UserContext.Instance.SDAConnection; command.Transaction = UserContext.Instance.SDATransaction; command.CommandType = CommandType.StoredProcedure; command.CommandText = "uspGetTeremData"; command.Parameters.Add("pIntezmenyId", SDADBType.Int).Value = intezmenyId; command.Parameters.Add("pTanevId", SDADBType.Int).Value = tanevId; command.Parameters.Add("pIsFromSzervezet", isFromSzervezet); command.Parameters.Add("pSzervezetId", SDADBType.Int).Value = (object)szervezetId ?? DBNull.Value; command.Parameters.Add("pSzervezetekHalmaza", SDADBType.Int).Value = (int)SzervezetAdatokHalmazaEnum.SzervezetEsAlSzervezetek; var ds = new DataSet(); using (var adapter = new SDADataAdapter()) { adapter.SelectCommand = command; adapter.Fill(ds); } SetDNAME(ds.Tables[0], "JellegId"); SetBoolFields(ds.Tables[0], "IsAktiv"); return ds; } } public DataSet GetBerbeadhatoTermekMukodesiHelyeinekVarosai(int? tanevId) { var commandText = $@" SELECT DISTINCT mh.C_VAROS Varos FROM T_TEREM_OSSZES t LEFT JOIN T_MUKODESIHELY_OSSZES mh ON mh.ID = t.C_MUKODESIHELYID AND mh.TOROLT = 'F' WHERE t.TOROLT = 'F' AND t.C_AKTIV = 'T' AND t.C_BERBEADHATO = 'T' AND t.C_TANEVID = @{nameof(tanevId)}"; var commandParameterList = new List { new CommandParameter(nameof(tanevId), tanevId) }; var ds = GetData( commandText: commandText, parameters: commandParameterList); return ds; } public int GetKovTanevIdByAktTanevId(int id) { using (var command = new SDACommand()) { command.Connection = UserContext.Instance.SDAConnection; command.Transaction = UserContext.Instance.SDATransaction; command.Parameters.Add(nameof(id), id); command.CommandText = $@" SELECT ID FROM T_TEREM_OSSZES WHERE ELOZOTANEVIREKORDID = @{nameof(id)} AND TOROLT = 'F' "; var result = command.ExecuteScalar(); int.TryParse(result?.ToString(), out int res); return res; } } } }