using System; using System.Collections.Generic; using System.Data; using System.Linq; using Kreta.Core; using Kreta.DataAccess.Interfaces; using Kreta.DataAccessManual.Interfaces; using Kreta.DataAccessManual.ParameterClasses; using Kreta.DataAccessManual.Util; using Kreta.Framework; using Kreta.Framework.Util; using SDA.DataProvider; using SDA.Kreta.Entities; namespace Kreta.DataAccessManual { public class SzervezetDal : DataAccessBase, ISzervezetDal { public SzervezetDal(DalHandler handler, GridParameters gridParameters) : base(handler, gridParameters) { } public SzervezetDal(DalHandler handler) : base(handler) { } public ISzervezet Get(int? id = null) { var entity = Szervezet.GiveAnInstance(); if (id.IsEntityId()) { entity.LoadByID(id.Value); } return entity; } public int Insert(ISzervezet dto) { var entity = dto as Szervezet; entity.Insert(true); DalHelper.Commit(); return entity.ID; } public void Update(ISzervezet dto) { var entity = dto as Szervezet; entity.Update(); DalHelper.Commit(); } public void Delete(ISzervezet dto) { var entity = dto as Szervezet; entity.Delete(); DalHelper.Commit(); } public DataSet GetSzervezetAdatok(SzervezetSearchPco pco, int intezmenyId, int tanevId, int adatokHalmaza) { var dataSet = new DataSet(); using (var sdaCommand = new SDACommand()) { sdaCommand.Connection = UserContext.Instance.SDAConnection; sdaCommand.Transaction = UserContext.Instance.SDATransaction; sdaCommand.CommandType = CommandType.StoredProcedure; sdaCommand.CommandText = "uspGetSzervezetData"; sdaCommand.Parameters.Add("pIntezmenyId", SDADBType.Int).Value = intezmenyId; sdaCommand.Parameters.Add("pTanevId", SDADBType.Int).Value = tanevId; if (pco.SzervezetId.IsEntityId()) { sdaCommand.Parameters.Add("pSzervezetId", SDADBType.Int).Value = pco.SzervezetId.Value; } sdaCommand.Parameters.Add("pAdatokHalmaza", SDADBType.Int).Value = adatokHalmaza; if (!string.IsNullOrWhiteSpace(pco.Nev)) { sdaCommand.Parameters.Add("pNev", SDADBType.String).Value = pco.Nev; } if (!string.IsNullOrWhiteSpace(pco.Azonosito)) { sdaCommand.Parameters.Add("pAzonosito", SDADBType.String).Value = pco.Azonosito; } if (!string.IsNullOrWhiteSpace(pco.SzervezetCime)) { sdaCommand.Parameters.Add("pSzervezetCime", SDADBType.String).Value = pco.SzervezetCime; } if (pco.TanulokSzamaTol.HasValue) { sdaCommand.Parameters.Add("pTanulokSzamaTol", SDADBType.Int).Value = pco.TanulokSzamaTol.Value; } if (pco.TanulokSzamaIg.HasValue) { sdaCommand.Parameters.Add("pTanulokSzamaIg", SDADBType.Int).Value = pco.TanulokSzamaIg.Value; } if (pco.OktatokSzamaTol.HasValue) { sdaCommand.Parameters.Add("pOktatokSzamaTol", SDADBType.Int).Value = pco.OktatokSzamaTol.Value; } if (pco.OktatokSzamaIg.HasValue) { sdaCommand.Parameters.Add("pOktatokSzamaIg", SDADBType.Int).Value = pco.OktatokSzamaIg.Value; } if (pco.CsoportokSzamaTol.HasValue) { sdaCommand.Parameters.Add("pCsoportokSzamaTol", SDADBType.Int).Value = pco.CsoportokSzamaTol.Value; } if (pco.CsoportokSzamaIg.HasValue) { sdaCommand.Parameters.Add("pCsoportokSzamaIg", SDADBType.Int).Value = pco.CsoportokSzamaIg.Value; } if (pco.TantargyakSzamaTol.HasValue) { sdaCommand.Parameters.Add("pTantargyakSzamaTol", SDADBType.Int).Value = pco.TantargyakSzamaTol.Value; } if (pco.TantargyakSzamaIg.HasValue) { sdaCommand.Parameters.Add("pTantargyakSzamaIg", SDADBType.Int).Value = pco.TantargyakSzamaIg.Value; } if (pco.HelyszinSzamaTol.HasValue) { sdaCommand.Parameters.Add("pHelyszinSzamaTol", SDADBType.Int).Value = pco.HelyszinSzamaTol.Value; } if (pco.HelyszinSzamaIg.HasValue) { sdaCommand.Parameters.Add("pHelyszinSzamaIg", SDADBType.Int).Value = pco.HelyszinSzamaIg.Value; } using (var sdaDataAdapter = new SDADataAdapter()) { sdaDataAdapter.SelectCommand = sdaCommand; sdaDataAdapter.Fill(dataSet); } } var dataTable = SortingAndPaging(dataSet.Tables[0], GridParameters); var result = dataTable.AsDataSet(); return result; } public DataSet GetSzervezetCsoportjai(int tanevId, int szervezetId) { var parameters = new List { new CommandParameter("pTanevId", tanevId), new CommandParameter("pSzervezetId", szervezetId) }; var commandText = @" SELECT ocs.ID AS ID ,ocs.C_NEV AS CsoportNeve ,ocs.C_MEGJEGYZES AS Megjegyzes ,COUNT(tcs.ID) AS TanulokSzama FROM T_SZERVEZET_OSSZES sz INNER JOIN T_CSOPORT_OSSZES cs ON cs.C_SZERVEZETID = sz.ID AND cs.C_ALTANEVID = sz.C_TANEVID AND cs.TOROLT = 'F' INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = cs.ID AND ocs.C_TANEVID = sz.C_TANEVID AND ocs.TOROLT = 'F' LEFT JOIN T_TANULOCSOPORT_OSSZES tcs ON tcs.C_OSZTALYCSOPORTID = ocs.ID AND tcs.C_TANEVID = sz.C_TANEVID AND tcs.TOROLT = 'F' WHERE sz.ID = :pSzervezetId AND sz.C_TANEVID = :pTanevId AND sz.TOROLT = 'F' GROUP BY ocs.ID ,ocs.C_NEV ,ocs.C_MEGJEGYZES "; var ds = GetData(commandText, parameters); return ds; } public DataSet GetSzervezetHelyszinei(int tanevId, int szervezetId) { var parameters = new List { new CommandParameter("pTanevId", tanevId), new CommandParameter("pSzervezetId", szervezetId) }; var commandText = @" SELECT t.ID AS ID ,t.C_NEV AS Nev ,dib.C_NAME AS HelyisegJelleg ,'' AS HelyszinTipus ,IIF(t.C_AKTIV = 'T', 'Igen', 'Nem') AS AktivStr FROM T_SZERVEZET_OSSZES sz INNER JOIN T_TEREM_OSSZES t ON t.C_SZERVEZETID = sz.ID AND t.C_TANEVID = sz.C_TANEVID AND t.TOROLT = 'F' INNER JOIN T_DICTIONARYITEMBASE_OSSZES dib ON dib.ID = t.C_JELLEG AND dib.C_TANEVID = sz.C_TANEVID AND dib.C_TANEVID = sz.C_TANEVID AND dib.TOROLT = 'F' WHERE sz.ID = :pSzervezetId AND sz.C_TANEVID = :pTanevId AND sz.TOROLT = 'F' "; var ds = GetData(commandText, parameters); return ds; } public DataSet GetSzervezetOktatoi(int tanevId, int szervezetId) { var parameters = new List { new CommandParameter("pTanevId", tanevId), new CommandParameter("pSzervezetId", szervezetId) }; var commandText = @" SELECT fh.ID AS ID ,fh.C_NYOMTATASINEV AS Nev ,fh.C_OKTATASIAZONOSITO AS OktatasiAzonosito FROM T_SZERVEZET_OSSZES sz INNER JOIN T_MUNKAUGYIADATOK_OSSZES ma ON ma.C_SZERVEZETID = sz.ID AND ma.C_TANEVID = sz.C_TANEVID AND ma.TOROLT = 'F' INNER JOIN T_FELHASZNALO_OSSZES fh ON fh.ID = ma.C_ALKALMAZOTTID AND fh.C_TANEVID = sz.C_TANEVID AND fh.TOROLT = 'F' WHERE sz.ID = :pSzervezetId AND sz.C_TANEVID = :pTanevId AND sz.TOROLT = 'F' "; var ds = GetData(commandText, parameters); return ds; } public DataSet GetSzervezetTanuloi(int tanevId, int szervezetId) { var parameters = new List { new CommandParameter("pTanevId", tanevId), new CommandParameter("pSzervezetId", szervezetId) }; var commandText = @" SELECT fh.ID AS ID ,fh.C_NYOMTATASINEV AS Nev ,fh.C_OKTATASIAZONOSITO AS OktatasiAzonosito ,fh.C_ADOAZONOSITOJEL AS Adoazonosito ,fh.C_TAJSZAM AS TajSzam FROM T_SZERVEZET_OSSZES sz INNER JOIN T_TANULOTANUGYIADATOK_OSSZES tta ON tta.C_SZERVEZETID = sz.ID AND tta.C_TANEVID = sz.C_TANEVID AND tta.TOROLT = 'F' INNER JOIN T_TANULOCSOPORT_OSSZES tcs ON tcs.ID = tta.C_TANULOCSOPORTID AND tcs.C_TANEVID = sz.C_TANEVID AND tcs.TOROLT = 'F' INNER JOIN T_FELHASZNALO_OSSZES fh ON fh.ID = tcs.C_TANULOID AND fh.C_TANEVID = sz.C_TANEVID AND fh.TOROLT = 'F' WHERE sz.ID = :pSzervezetId AND sz.C_TANEVID = :pTanevId AND sz.TOROLT = 'F' "; var ds = GetData(commandText, parameters); return ds; } public DataSet GetSzervezetTantargyai(int tanevId, int szervezetId) { var parameters = new List { new CommandParameter("pTanevId", tanevId), new CommandParameter("pSzervezetId", szervezetId) }; var commandText = @" SELECT tt.ID AS ID ,tt.C_NEV AS Nev FROM T_SZERVEZET_OSSZES sz INNER JOIN T_TANTARGY_OSSZES tt ON tt.C_SZERVEZETID = sz.ID AND tt.C_TANEVID = sz.C_TANEVID AND tt.TOROLT = 'F' WHERE sz.ID = :pSzervezetId AND sz.C_TANEVID = :pTanevId AND sz.TOROLT = 'F' "; var ds = GetData(commandText, parameters); return ds; } public DataSet GetEntitySzervezetList(int entityId, string entityName) { var ds = new DataSet(); using (var command = new SDACommand()) { command.Connection = UserContext.Instance.SDAConnection; command.Transaction = UserContext.Instance.SDATransaction; command.CommandType = CommandType.StoredProcedure; command.CommandText = "uspGetEntitySzervezetList"; command.Parameters.Add("pEntityId", SDADBType.Int).Value = entityId; command.Parameters.Add("pEntityName", SDADBType.Char).Value = entityName; using (var adapter = new SDADataAdapter()) { adapter.SelectCommand = command; adapter.Fill(ds); } } return ds; } public int? GetSzervezetIdNevAzonosito(int tanevId, string szervezetNev, string szervezetAzonosito) { using (var command = new SDACommand()) { command.CommandText = $@" SELECT TOP 1 ID FROM T_SZERVEZET_OSSZES WHERE C_NEV = :pSzervezetNev AND C_AZONOSITO = :pSzervezetAzonosito AND C_TANEVID = :pTanevId AND TOROLT = 'F' "; command.Connection = UserContext.Instance.SDAConnection; command.Transaction = UserContext.Instance.SDATransaction; command.CommandType = CommandType.Text; command.Parameters.Add("pTanevId", SDADBType.Int).Value = tanevId; command.Parameters.Add("pSzervezetNev", szervezetNev); command.Parameters.Add("pSzervezetAzonosito", szervezetAzonosito); var result = command.ExecuteScalar(); if (result != DBNull.Value && result != null) { return Convert.ToInt32(result); } return null; } } public List GetLathatoSzervezetek(int intezmenyId, int tanevId, int? szervezetId, int szervezetAdatokHalmazaId) { var parameters = new List { new CommandParameter("pIntezmenyId", intezmenyId), new CommandParameter("pTanevId", tanevId), szervezetId.IsEntityId() ? new CommandParameter("pSzervezetId", szervezetId.Value) : new CommandParameter("pSzervezetId", DBNull.Value), new CommandParameter("pSzervezetAdatokHalmazaId", szervezetAdatokHalmazaId) }; var commandText = @" SELECT ID FROM fnGetLathatoSzervezetek( @pIntezmenyId ,@pTanevId ,@pSzervezetId ,@pSzervezetAdatokHalmazaId) "; var dataSet = GetData(commandText, parameters); var result = dataSet.Tables[0].AsEnumerable().Select(r => r.Field("ID")).ToList(); return result; } } }