using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Text; using Kreta.Core; using Kreta.DataAccess.Interfaces; using Kreta.DataAccessManual.Interfaces; using Kreta.DataAccessManual.Util; using Kreta.Enums; using Kreta.Framework; using Kreta.Framework.Util; using SDA.DataProvider; using SDA.Kreta.Entities; namespace Kreta.DataAccessManual { internal class FeladatEllatasiHelyDAL : DataAccessBase, IFeladatEllatasiHelyDal { public FeladatEllatasiHelyDAL(DalHandler handler) : base(handler) { } public FeladatEllatasiHelyDAL(DalHandler handler, GridParameters parameters) : base(handler, parameters) { } public DataSet GetFeladatEllatasiHelyOktatasiNevelesiFeladatok(int feladHelyId) { var paramlist = new List(); paramlist.Add(new CommandParameter(nameof(feladHelyId), feladHelyId)); var commandText = $@" SELECT feh.C_OKTATASINEVELESIFELADATTIPUS AS OktNevFel FROM T_FELADATELLATASIHELY_OSSZES feh INNER JOIN T_MUKODESIHELY_OSSZES mh ON feh.C_MUKODESIHELYID = mh.ID WHERE feh.TOROLT = 'F' AND mh.TOROLT = 'F' AND feh.ID = @{nameof(feladHelyId)}"; DataSet ds = this.GetData(commandText, paramlist); return ds; } public IFeladatEllatasiHely Get() => FeladatEllatasiHely.GiveAnInstance(); public IFeladatEllatasiHely Get(int id) { var entity = FeladatEllatasiHely.GiveAnInstance(); entity.LoadByID(id); return entity; } public DataSet GetFeladatEllatasiHelyekForkDropDown(int tanevId, bool forEsl = false, int? feladatKategoriaId = null, bool? hasKovTanev = null, bool forSzirStatTanulo = false) { var parameters = new List { new CommandParameter(nameof(tanevId), tanevId) }; var feladKatSzures = string.Empty; if (feladatKategoriaId.IsEntityId()) { parameters.Add(new CommandParameter(nameof(feladatKategoriaId), feladatKategoriaId.Value)); feladKatSzures = $@"INNER JOIN T_OKTATASINEVELESIFELADAT_OSSZES oktNevFel ON oktNevFel.ID = feladHely.C_OKTATASINEVELESIFELADATTIPUS AND feladHely.C_INTEZMENYID = oktNevFel.C_ALINTEZMENYID AND feladHely.C_TANEVID = oktNevFel.C_ALTANEVID AND oktNevFel.TOROLT = 'F' AND oktNevFel.C_FELADATKATEGORIAID = @{nameof(feladatKategoriaId)} "; } var hasKovTanevSzures = string.Empty; if (hasKovTanev.HasValue && hasKovTanev.Value) { hasKovTanevSzures = @"INNER JOIN T_FELADATELLATASIHELY_OSSZES kovTanevFelHely ON kovTanevFelHely.ELOZOTANEVIREKORDID = feladHely.ID"; } var commandTextBuilder = new StringBuilder($@" SELECT feladHely.ID ,feladHely.C_OKTATASINEVELESIFELADATTIPUS AS OktNevFel ,CONCAT(mukodHely.C_NEV, ' - ', DIB.C_NAME) AS Nev ,mukodHely.ID AS MukodesiHelyID FROM T_FELADATELLATASIHELY_OSSZES feladHely INNER JOIN T_MUKODESIHELY_OSSZES mukodHely ON feladHely.C_MUKODESIHELYID = mukodHely.ID INNER JOIN T_DICTIONARYITEMBASE_OSSZES DIB ON feladHely.C_OKTATASINEVELESIFELADATTIPUS = DIB.ID AND feladHely.C_INTEZMENYID = DIB.C_INTEZMENYID AND feladHely.C_TANEVID = DIB.C_TANEVID {feladKatSzures} {hasKovTanevSzures} WHERE feladHely.TOROLT = 'F' AND mukodHely.TOROLT = 'F' And feladHely.C_TANEVID = @{nameof(tanevId)} "); if (forEsl) { commandTextBuilder.Append(@" AND feladHely.C_OKTATASINEVELESIFELADATTIPUS NOT IN (1156, 1159, 1165, 1166, 1195, 1196, 6711) "); } if (forSzirStatTanulo) { commandTextBuilder.Append($@" AND feladHely.C_OKTATASINEVELESIFELADATTIPUS NOT IN ({(int)OktatasiNevelesiFeladatEnum.kollegium}, {(int)OktatasiNevelesiFeladatEnum.kollegium_nemzetisegi_}) "); } using (var command = new SDACommand()) { command.Connection = UserContext.Instance.SDAConnection; command.Transaction = UserContext.Instance.SDATransaction; command.CommandText = commandTextBuilder.ToString(); DataSet ds = GetData(command.CommandText, parameters); return ds; } } public List GetFeladatellatasiHelyIdsBySelectedOktatasiNevelesiFeladat(int tanevId, int oktatasiNevelesiFeladatId) { var parameters = new List(); parameters.Add(new CommandParameter("ptanevId", tanevId)); parameters.Add(new CommandParameter("poktatasiNevelesiFeladatId", oktatasiNevelesiFeladatId)); StringBuilder commandTextBuilder = new StringBuilder(@" SELECT feladatellatasiHely.ID FROM T_FELADATELLATASIHELY_OSSZES feladatellatasiHely INNER JOIN T_MUKODESIHELY_OSSZES mukodesiHely ON feladatellatasiHely.C_MUKODESIHELYID = mukodesiHely.ID WHERE feladatellatasiHely.TOROLT = 'F' AND mukodesiHely.TOROLT = 'F' AND feladatellatasiHely.C_OKTATASINEVELESIFELADATTIPUS = :poktatasiNevelesiFeladatId And feladatellatasiHely.C_TANEVID = :ptanevId"); using (SDA.DataProvider.SDACommand command = new SDA.DataProvider.SDACommand()) { command.Connection = UserContext.Instance.SDAConnection; command.Transaction = UserContext.Instance.SDATransaction; command.CommandText = commandTextBuilder.ToString(); var ds = GetData(command.CommandText, parameters); return ds.Tables[0].AsEnumerable().Select(x => x.Field("ID")).ToList(); } } public DataSet GetFeladatEllatasiHelyByMukodesiHelyID(int mukodesiHelyID, int tanevId) { var paramlist = new List(); paramlist.Add(new CommandParameter("pMukodesiHelyID", mukodesiHelyID)); paramlist.Add(new CommandParameter("pTanevId", tanevId)); var commandText = @" SELECT ID ID, C_OKTATASINEVELESIFELADATTIPUS OktatasiNevelesiFeladatTipus FROM T_FELADATELLATASIHELY_OSSZES WHERE TOROLT = 'F' AND C_MUKODESIHELYID = :pMukodesiHelyID and C_TANEVID = :pTanevId "; DataSet ds = GetData(commandText, paramlist, dictionaryItemColumns: "OktatasiNevelesiFeladatTipus"); return ds; } public DataSet GetFeladatellatasiHelyByFeladatellatasiHelyNev(string feladatellatasiHelyNev, int tanevId) { var paramlist = new List(); paramlist.Add(new CommandParameter("pFeladatellatasiHelyNev", feladatellatasiHelyNev)); paramlist.Add(new CommandParameter("pTanevId", tanevId)); var commandText = @" SELECT f.ID FeladatellatasiHelyId FROM T_FELADATELLATASIHELY_OSSZES f INNER JOIN T_MUKODESIHELY_OSSZES m ON f.C_MUKODESIHELYID = m.ID WHERE m.TOROLT = 'F' AND m.C_NEV = :pFeladatellatasiHelyNev and m.C_TANEVID = :pTanevId "; DataSet ds = GetData(commandText, paramlist); return ds; } public DataSet GetFeladatellatasiHelyDataSet(int tanevId) { const string commandText = @" SELECT fh.ID AS Id ,fh.C_OKTATASINEVELESIFELADATTIPUS AS OktatasiNevelesiFeladatTipusId ,mh.C_NEV AS MukodesiHelyNev FROM T_FELADATELLATASIHELY_OSSZES fh INNER JOIN T_MUKODESIHELY_OSSZES mh ON mh.ID = fh.C_MUKODESIHELYID AND mh.C_TANEVID = fh.C_TANEVID AND mh.TOROLT = 'F' WHERE fh.C_TANEVID = :pTanevId AND fh.TOROLT = 'F' "; var commandParameterList = new List { new CommandParameter("pTanevId", tanevId) }; DataSet dataSet = GetData(commandText, commandParameterList, "OktatasiNevelesiFeladatTipusId"); return dataSet; } public DataSet GetFeladatellatasiHelyOsztalycsoportjai(int feladHelyID, int tanevId) { List param = new List(); param.Add(new CommandParameter("pFeladHelyID", feladHelyID)); param.Add(new CommandParameter("pTanevId", tanevId)); var command = @" select ocs.ID, ocs.C_NEV Nev, Tipus = case when (select count(*) from T_OSZTALY_OSSZES where ID = ocs.ID and T_OSZTALY_OSSZES.C_ALTANEVID = :pTanevId) > 0 then 'Osztály' when (select count(*) from T_CSOPORT_OSSZES where ID = ocs.ID and T_CSOPORT_OSSZES.C_ALTANEVID = :pTanevId) > 0 then 'Csoport' end, ocs.C_EVFOLYAMTIPUSA Evfolyam, isnull(LETSZAM.TANULOKSZAMA, 0) Letszam from T_OSZTALYCSOPORT_OSSZES ocs left join ( select C_OSZTALYCSOPORTID, count(C_TANULOID) TANULOKSZAMA from T_TANULOCSOPORT_OSSZES where T_TANULOCSOPORT_OSSZES.TOROLT = 'F' and T_TANULOCSOPORT_OSSZES.C_BELEPESDATUM < GETDATE() and (T_TANULOCSOPORT_OSSZES.C_KILEPESDATUM is null or T_TANULOCSOPORT_OSSZES.C_KILEPESDATUM > GETDATE()) group by C_OSZTALYCSOPORTID ) LETSZAM on LETSZAM.C_OSZTALYCSOPORTID = ocs.ID where ocs.TOROLT = 'F' and ocs.C_FELADATELLATASIHELYID = :pFeladHelyID and ocs.C_TANEVID = :pTanevId "; return this.GetData(command, param, "Evfolyam"); } public DataSet GetFeladatellatasiHelyAlkalmazottjai(int feladHelyID, int tanevId) { List param = new List(); param.Add(new CommandParameter("pFeladHelyID", feladHelyID)); param.Add(new CommandParameter("pTanevId", tanevId)); var command = @" select T_FELHASZNALO_OSSZES.ID, T_FELHASZNALO_OSSZES.C_NYOMTATASINEV Nev, T_MUNKAUGYIADATOK_OSSZES.C_MUNKAKORTIPUSA Munkakor, T_MUNKAUGYIADATOK_OSSZES.C_MUNKAVISZONYTIPUSA Munkaviszony from T_ALKALMAZOTT_OSSZES inner join T_FELHASZNALO_OSSZES on T_FELHASZNALO_OSSZES.ID = T_ALKALMAZOTT_OSSZES.ID and T_FELHASZNALO_OSSZES.TOROLT = 'F' inner join T_MUNKAUGYIADATOK_OSSZES on T_MUNKAUGYIADATOK_OSSZES.C_ALKALMAZOTTID = T_ALKALMAZOTT_OSSZES.ID and T_MUNKAUGYIADATOK_OSSZES.TOROLT = 'F' where T_ALKALMAZOTT_OSSZES.TOROLT = 'F' and T_MUNKAUGYIADATOK_OSSZES.C_FELADATELLATASIHELYID = :pFeladHelyID and T_ALKALMAZOTT_OSSZES.C_ALTANEVID = :pTanevId union select T_FELHASZNALO_OSSZES.ID, T_FELHASZNALO_OSSZES.C_NYOMTATASINEV Nev, T_TOVABBIMUNKAUGYIADATOK.C_MUNKAKORTIPUSA Munkakor, T_TOVABBIMUNKAUGYIADATOK.C_MUNKAVISZONYTIPUSA Munkaviszony from T_ALKALMAZOTT_OSSZES inner join T_FELHASZNALO_OSSZES on T_FELHASZNALO_OSSZES.ID = T_ALKALMAZOTT_OSSZES.ID and T_FELHASZNALO_OSSZES.TOROLT = 'F' inner join T_TOVABBIMUNKAUGYIADATOK on T_TOVABBIMUNKAUGYIADATOK.C_ALKALMAZOTTID = T_ALKALMAZOTT_OSSZES.ID and T_TOVABBIMUNKAUGYIADATOK.TOROLT = 'F' where T_ALKALMAZOTT_OSSZES.TOROLT = 'F' and T_TOVABBIMUNKAUGYIADATOK.C_FELADATELLATASIHELYID = :pFeladHelyID and T_ALKALMAZOTT_OSSZES.C_ALTANEVID = :pTanevId "; return this.GetData(command, param, "Munkakor,Munkaviszony"); } public DataSet GetFeladatellatasiHelyhezTartozoEvfolyamtipusok(int feladHelyID) { var ds = new DataSet(); using (SDACommand command = new SDACommand()) { command.Connection = UserContext.Instance.SDAConnection; command.Transaction = UserContext.Instance.SDATransaction; command.Parameters.Add("pFeladHelyID", feladHelyID); command.CommandText = @"select efokt.C_EVFOLYAMTIPUSID ID ,dib.C_NAME 'Name' from T_EVFOLYAMTIPUS_OKTATASINEVELE efokt INNER JOIN T_DICTIONARYITEMBASE_OSSZES dib ON efokt.C_EVFOLYAMTIPUSID = dib.ID AND dib.C_TANEVID = efokt.C_TANEVID AND dib.TOROLT = 'F' INNER join T_FELADATELLATASIHELY_OSSZES fh on fh.C_OKTATASINEVELESIFELADATTIPUS = efokt.C_OKTATASINEVELESIFELADATID AND fh.C_TANEVID = efokt.C_TANEVID AND fh.TOROLT = 'F' where fh.ID = :pFeladHelyID"; using (var adapter = new SDADataAdapter()) { adapter.SelectCommand = command; adapter.Fill(ds); } return ds; } } public void Insert(IFeladatEllatasiHely entity) { ((FeladatEllatasiHely)entity).Insert(); FollowUp(entity); DalHelper.Commit(); } public void Update(IFeladatEllatasiHely entity) { ((FeladatEllatasiHely)entity).Update(); FollowUp(entity); DalHelper.Commit(); } public void Delete(int id) { var felhely = FeladatEllatasiHely.GiveAnInstance(); felhely.LoadByID(id); felhely.EszkozIgenyles.DeleteAll(); felhely.Delete(); FollowUp(felhely); DalHelper.Commit(); } public void FollowUpFeladatellatasiHely(int intezmenyId, int aktTanevId, int kovetkezoTanevId, int feladatellatasiHelyId) { using (SDACommand command = new SDACommand()) { command.Connection = UserContext.Instance.SDAConnection; command.Transaction = UserContext.Instance.SDATransaction; command.CommandText = "uspFollowUpFeladatellatasiHely"; command.Parameters.Add("intezmenyId", intezmenyId); command.Parameters.Add("aktTanevId", aktTanevId); command.Parameters.Add("kovetkezoTanevId", kovetkezoTanevId); command.Parameters.Add("feladatellatasiHelyId", feladatellatasiHelyId); command.CommandType = CommandType.StoredProcedure; command.ExecuteNonQuery(); DalHelper.Commit(); } } public int GetFeladatKategoriaId(int feladatEllatasiHelyId) { using (var command = new SDACommand()) { command.Connection = UserContext.Instance.SDAConnection; command.Transaction = UserContext.Instance.SDATransaction; command.Parameters.Add(nameof(feladatEllatasiHelyId), feladatEllatasiHelyId); command.CommandText = $@" SELECT onf.C_FELADATKATEGORIAID FROM T_FELADATELLATASIHELY_OSSZES fh INNER JOIN T_OKTATASINEVELESIFELADAT_OSSZES onf ON onf.ID = fh.C_OKTATASINEVELESIFELADATTIPUS AND fh.C_TANEVID = onf.C_ALTANEVID AND fh.C_INTEZMENYID = onf.C_ALINTEZMENYID AND onf.TOROLT = 'F' WHERE fh.ID = @{nameof(feladatEllatasiHelyId)} AND fh.TOROLT = 'F' "; var result = command.ExecuteScalar(); int.TryParse(result?.ToString(), out int res); return res; } } public bool IsAzonosKategoria(int oldFeladhelyId, int newFeladhelyId) { using (var command = new SDACommand()) { command.Connection = UserContext.Instance.SDAConnection; command.Transaction = UserContext.Instance.SDATransaction; command.Parameters.Add(nameof(oldFeladhelyId), oldFeladhelyId); command.Parameters.Add(nameof(newFeladhelyId), newFeladhelyId); command.CommandText = $@" IF EXISTS ( SELECT 1 FROM T_FELADATELLATASIHELY_OSSZES oldFh INNER JOIN T_OKTATASINEVELESIFELADAT_OSSZES oldOnf ON oldOnf.ID = oldFh.C_OKTATASINEVELESIFELADATTIPUS AND oldFh.C_TANEVID = oldOnf.C_ALTANEVID AND oldFh.C_INTEZMENYID = oldOnf.C_ALINTEZMENYID AND oldOnf.TOROLT = 'F' INNER JOIN T_FELADATELLATASIHELY_OSSZES newFh ON oldFh.C_INTEZMENYID = newFh.C_INTEZMENYID INNER JOIN T_OKTATASINEVELESIFELADAT_OSSZES newOnf ON newOnf.ID = newFh.C_OKTATASINEVELESIFELADATTIPUS AND newFh.C_TANEVID = newOnf.C_ALTANEVID AND newFh.C_INTEZMENYID = newOnf.C_ALINTEZMENYID AND newOnf.TOROLT = 'F' WHERE oldFh.ID = @{nameof(oldFeladhelyId)} AND newFh.ID = @{nameof(newFeladhelyId)} AND oldFh.TOROLT = 'F' AND newFh.TOROLT = 'F' AND oldOnf.C_FELADATKATEGORIAID = newOnf.C_FELADATKATEGORIAID ) SELECT 1 ELSE SELECT 0 "; return Convert.ToBoolean(command.ExecuteScalar()); } } public bool IsMukodesiHelyNemModosithato(int tanevId, int feladatEllatasiHelyId) { using (var command = new SDACommand()) { command.Connection = UserContext.Instance.SDAConnection; command.Transaction = UserContext.Instance.SDATransaction; command.Parameters.Add(nameof(tanevId), tanevId); command.Parameters.Add(nameof(feladatEllatasiHelyId), feladatEllatasiHelyId); command.CommandText = $@" Select COUNT(*) from T_OSZTALYCSOPORT_OSSZES ocs Where ocs.TOROLT = 'F' and ocs.C_FELADATELLATASIHELYID = @{nameof(feladatEllatasiHelyId)} and ocs.C_TANEVID = @{nameof(tanevId)}"; var count = Convert.ToInt32(command.ExecuteScalar()); return count > 0; } } public List GetFeladatKategoriak(int tanevId, int itezmenyId) { var commandParameters = new List { new CommandParameter(nameof(tanevId), tanevId), new CommandParameter(nameof(itezmenyId), itezmenyId) }; string commandText = $@" SELECT DISTINCT onf.C_FELADATKATEGORIAID FROM T_OKTATASINEVELESIFELADAT_OSSZES onf INNER JOIN T_FELADATELLATASIHELY_OSSZES fh ON onf.ID = fh.C_OKTATASINEVELESIFELADATTIPUS AND onf.C_ALINTEZMENYID = fh.C_INTEZMENYID AND onf.C_ALTANEVID = fh.C_TANEVID AND fh.TOROLT = 'F' WHERE onf.TOROLT = 'F' AND onf.C_ALTANEVID = @{nameof(tanevId)} AND onf.C_ALINTEZMENYID = @{nameof(itezmenyId)} "; DataSet ds = GetData(commandText, commandParameters); return ds.Tables[0].AsEnumerable().Select(r => r.Field("C_FELADATKATEGORIAID")).ToList(); } public List GetFeladatKategoriakForLogin(int aktTanevId, int? kovTanevId, int itezmenyId) { try { var tanevIdString = $"{aktTanevId}" + (kovTanevId.IsEntityId() ? $",{kovTanevId.Value}" : string.Empty); var commandParameters = new List { new CommandParameter(nameof(itezmenyId), itezmenyId) }; string commandText = $@" SELECT DISTINCT onf.C_FELADATKATEGORIAID FROM T_OKTATASINEVELESIFELADAT_OSSZES onf INNER JOIN T_FELADATELLATASIHELY_OSSZES fh ON onf.ID = fh.C_OKTATASINEVELESIFELADATTIPUS AND onf.C_ALINTEZMENYID = fh.C_INTEZMENYID AND onf.C_ALTANEVID = fh.C_TANEVID AND fh.TOROLT = 'F' WHERE onf.TOROLT = 'F' AND onf.C_ALTANEVID IN ({tanevIdString}) AND onf.C_ALINTEZMENYID = @{nameof(itezmenyId)} "; DataSet ds = GetData(commandText, commandParameters); return ds.Tables[0].AsEnumerable().Select(r => (OktNevelesiKategoriaEnum)r.Field("C_FELADATKATEGORIAID")).ToList(); } catch { return new List(); } } #region Export public DataSet GetMukodesiHelyekAdataiExcelExport(int tanevId) { var parameters = new List { new CommandParameter(nameof(tanevId), tanevId) }; var command = $@" SELECT mukodesi.C_NEV as 'Működési hely neve' , IIF(mukodesi.C_MUKODESIHELYAZONOSITO IS NULL, '-', mukodesi.C_MUKODESIHELYAZONOSITO) as 'Működési hely azonosító' , IIF(mukodesi.C_IRANYITOSZAM IS NULL, '-', mukodesi.C_IRANYITOSZAM) as 'Irányítószám' , IIF(mukodesi.C_VAROS IS NULL, '-', mukodesi.C_VAROS) as 'Helység neve' , IIF(mukodesi.C_KOZTERULETNEV IS NULL, '-', mukodesi.C_KOZTERULETNEV) as 'Közterület neve' , mukodesi.C_KOZTERULETJELLEGENEV as 'Közterület jellege' , IIF(mukodesi.C_HAZSZAM IS NULL, '-', mukodesi.C_HAZSZAM) as 'Házszám' , IIF(mukodesi.C_EMELET IS NULL, '-', mukodesi.C_EMELET) as 'Emelet' , IIF(mukodesi.C_AJTO IS NULL, '-', mukodesi.C_AJTO) as 'Ajtó' , IIF(mukodesi.C_TELEFONSZAM IS NULL, '-', mukodesi.C_TELEFONSZAM) as 'Telefonszám' , IIF(mukodesi.C_FAX IS NULL, '-', mukodesi.C_FAX) as 'Fax' , IIF(mukodesi.C_EMAILCIM IS NULL, '-', mukodesi.C_EMAILCIM) as 'E-mail cím' , IIF(mukodesi.C_MUKODESIHELYTIPUSA IS NULL, '-', mhelytipus.C_NAME) as 'Működési hely típusa' , IIF(mukodesi.C_VEZETONEVE IS NULL, '-', mukodesi.C_VEZETONEVE) AS 'Tagintézmény vezetője' , IIF(mukodesi.C_TELEPHELYANYAINTEZMENYID IS NULL, '-', (SELECT C_NEV FROM T_MUKODESIHELY_OSSZES WHERE ID = mukodesi.C_TELEPHELYANYAINTEZMENYID)) AS 'A telephely anyaintézménye' FROM T_MUKODESIHELY_OSSZES mukodesi LEFT JOIN T_DICTIONARYITEMBASE_OSSZES mhelytipus ON mhelytipus.ID = mukodesi.C_MUKODESIHELYTIPUSA AND mhelytipus.C_TANEVID = mukodesi.C_TANEVID WHERE mukodesi.TOROLT = 'F' AND mukodesi.C_TANEVID = @{nameof(tanevId)} ORDER BY mukodesi.C_NEV "; return GetData(command, parameters); } #endregion 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_FELADATELLATASIHELY_OSSZES fh WHERE fh.ELOZOTANEVIREKORDID = @{nameof(id)} AND fh.TOROLT = 'F' "; var result = command.ExecuteScalar(); int.TryParse(result?.ToString(), out int res); return res; } } } }