using System; using System.Collections.Generic; using System.Data; using Kreta.Core; using Kreta.DataAccess.Interfaces; using Kreta.DataAccessManual.Interfaces; using Kreta.DataAccessManual.ParameterClasses; 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 HelyettesitesDAL : DataAccessBase, IHelyettesitesDAL { public HelyettesitesDAL(DalHandler handler, GridParameters gridParameters) : base(handler, gridParameters) { } public HelyettesitesDAL(DalHandler handler) : base(handler) { } public DataSet GetTanarOrai(HelyettesitesekKeresesePCO pco, int intezmenyId, int tanevId) { 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 = "sp_HelyettesitesekKeresese"; command.Parameters.Add("IntezmenyId", SDADBType.Int).Value = intezmenyId; command.Parameters.Add("TanevId", SDADBType.Int).Value = tanevId; command.Parameters.Add("pHelyettesitettTanarId", SDADBType.Int).Value = pco.HelyettesitettId; command.Parameters.Add("pHelyettesitesKezdete", SDADBType.String).Value = pco.HelyettesitesKezdete.Value.Date.ToString("yyyyMMdd"); command.Parameters.Add("pHelyettesitesVege", SDADBType.String).Value = pco.HelyettesitesVege.Value.Date.ToString("yyyyMMdd"); using (var adapter = new SDADataAdapter()) { adapter.SelectCommand = command; adapter.Fill(ds); } } SetDNAME(ds.Tables[0], "HelyettesitesTipusId"); DataTable dt = SortingAndPaging(ds.Tables[0], GridParameters); return dt.AsDataSet(); } public DataSet GetHelyettesitesekAjanlasa(LehetsegesHelyettesitoTanarokPCO pco, int tanevId, int intezmenyId) { 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 = "uspGetHelyettesitesekAjanlasa"; command.Parameters.Add("pHelyettesitettOrarendiOraId", SDADBType.Int).Value = pco.orarendiOraId; command.Parameters.Add("pHelyettesitesDatuma", SDADBType.DateTime).Value = pco.datum; command.Parameters.Add("pSzakszeruId", SDADBType.Int).Value = (int)HelyettesitesTipusEnum.szakszeru_helyettesites; command.Parameters.Add("pNemSzakszeruId", SDADBType.Int).Value = (int)HelyettesitesTipusEnum.nem_szakszeru_helyettesites_felugyelet_; command.Parameters.Add("pOsszevonas", SDADBType.Int).Value = (int)HelyettesitesTipusEnum.oraosszevonas; command.Parameters.Add("pFokozatNa", SDADBType.Int).Value = (int)BesorolasiFokozatTipusEnum.na; command.Parameters.Add(nameof(tanevId), SDADBType.Int).Value = tanevId; command.Parameters.Add(nameof(intezmenyId), SDADBType.Int).Value = intezmenyId; using (var adapter = new SDADataAdapter()) { adapter.SelectCommand = command; adapter.Fill(ds); } } SetDNAME(ds.Tables[0], "HelyettesitesTipusId"); SetBoolFields(ds.Tables[0], "Tulora"); DataTable dt = SortingAndPaging(ds.Tables[0], GridParameters); return dt.AsDataSet(); } public DataSet GetHelyettesitettTanorak(TanarHelyettesitesekKeresesePCO pco) { List parameters = new List(); parameters.Add(new CommandParameter("OktNevKatTipus", (int)OktNevelesiKategoriaEnum.NevelesOktatas)); string whereClause = ""; if (pco.HelyettesitesKezdete.HasValue) { parameters.Add(new CommandParameter("pHelyettesitesKezdete", pco.HelyettesitesKezdete)); whereClause += " AND C_DATUM >= :pHelyettesitesKezdete "; } if (pco.HelyettesitesKezdete.HasValue) { parameters.Add(new CommandParameter("pHelyettesitesVege", pco.HelyettesitesVege)); whereClause += " AND C_DATUM <= :pHelyettesitesVege"; } if (pco.HelyettesitettId.HasValue && pco.HelyettesitoId.HasValue) { parameters.Add(new CommandParameter("pHelyettesitettId", pco.HelyettesitettId)); parameters.Add(new CommandParameter("pHelyettesitoId", pco.HelyettesitoId)); whereClause += @" AND ( C_HELYETTESITOTANARID = :pHelyettesitoId OR C_ORATULAJDONOSID = :pHelyettesitettId ) "; } else if (pco.HelyettesitettId.HasValue) { parameters.Add(new CommandParameter("pHelyettesitettId", pco.HelyettesitettId)); whereClause += " AND C_ORATULAJDONOSID = :pHelyettesitettId"; } else if (pco.HelyettesitoId.HasValue) { parameters.Add(new CommandParameter("pHelyettesitoId", pco.HelyettesitoId)); whereClause += " AND C_HELYETTESITOTANARID = :pHelyettesitoId"; } string commandText = @" SELECT T_TANITASIORA.ID ID, T_TANITASIORA.C_ORASZAM Ora, T_OSZTALYCSOPORT.C_NEV OsztalyCsoportNev, T_TANTARGY.C_NEV TantargyNev, --T_TANITASIORA.C_ORAEVESSORSZAM OraSorszama, T_TANITASIORA.C_TEMA TanitasiOraTemaja, T_TANITASIORA.C_MEGTARTOTT Megtartott, T_FELHASZNALO.C_NYOMTATASINEV Helyettesites, T_TANITASIORA.C_DATUM Datum FROM T_TANITASIORA LEFT JOIN T_OSZTALYCSOPORT ON T_OSZTALYCSOPORT.ID = T_TANITASIORA.C_OSZTALYCSOPORTID AND T_OSZTALYCSOPORT.C_FELADATKATEGORIAID = @OktNevKatTipus LEFT JOIN T_TANTARGY ON T_TANTARGY.ID = T_TANITASIORA.C_TANTARGYID LEFT JOIN T_FELHASZNALO ON T_FELHASZNALO.ID = T_TANITASIORA.C_HELYETTESITOTANARID WHERE C_HELYETTESITOTANARID IS NOT NULL " + whereClause ; DataSet ds = GetData(commandText, parameters: parameters, booleanColumns: "Megtartott"); return ds; } public DataSet GetHelyettesitesekListajaGrid(HelyettesitesekListajaSearchPCO pco, int pTanevID) { 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 = "uspGetHelyettesitesekListaja"; command.Parameters.Add("pKezdoDatum", SDADBType.DateTime).Value = pco.HelyettesitesDatumaTolSearch; command.Parameters.Add("pVegDatum", SDADBType.DateTime).Value = pco.HelyettesitesDatumaIgSearch; command.Parameters.Add("pHelyettesitesTipusId", SDADBType.Int).Value = pco.HelyettesitesTipusaSearch; command.Parameters.Add("pHelyettesitettId", SDADBType.Int).Value = pco.HelyettesitettTanarSearch; command.Parameters.Add("pHelyettesitoId", SDADBType.Int).Value = pco.HelyettesitoTanarSearch; command.Parameters.Add("pIsNaplozott", SDADBType.Boolean).Value = pco.NaplozottSearch; command.Parameters.Add("pOsztalyCsoportId", SDADBType.Int).Value = pco.OsztalyCsoportSearch; command.Parameters.Add("pTantargyId", SDADBType.Int).Value = pco.TantargySearch; command.Parameters.Add("pKellKapcsolodoCsoportok", SDADBType.Boolean).Value = pco.IsKellKapcsolodoCsoportokSearch; command.Parameters.Add("pTanevID", SDADBType.Int).Value = pTanevID; if (pco.FeladatKategoriaId.IsEntityId()) { command.Parameters.Add("pFeladatKategoriaId", (int)pco.FeladatKategoriaId); } if (pco.FeladatEllatasiHelyId.IsEntityId()) { command.Parameters.Add("pFeladatEllatasiHelyId", (int)pco.FeladatEllatasiHelyId); } if (pco.IsOnlineOra.HasValue) { command.Parameters.Add("pIsOnlineOra", pco.IsOnlineOra.ToBool()); } using (var adapter = new SDADataAdapter()) { adapter.SelectCommand = command; adapter.Fill(ds); } } SetDNAME(ds.Tables[0], "HelyettesitesTipusId"); SetBoolFields(ds.Tables[0], "Naplozott,IsOnlineOra"); DataTable dt = SortingAndPaging(ds.Tables[0], GridParameters); return dt.AsDataSet(); } public void Delete(int id) { var entity = HelyettesitesiIdoszak.GiveAnInstance(); entity.LoadByID(id); UpdateDktFeladatHelyettesitoAlkalmazott(entity.HelyettesitettOrarendId, entity.HelyettesitesNapja); entity.Delete(); DalHelper.Commit(); } public IHelyettesitesiIdoszak Get(int id) { var entity = HelyettesitesiIdoszak.GiveAnInstance(); entity.LoadByID(id); return entity; } public void FullUpdate(IHelyettesitesiIdoszak dto) { var entity = dto as HelyettesitesiIdoszak; entity.FullUpdate(); DalHelper.Commit(); } public DataSet GetHelyettesitesEmailDataById(int id) { List parameters = new List(); string commandText = string.Format(@" SELECT TOP 1 f.C_NYOMTATASINEV as HelyettesitoNev ,ISNULL(e.C_EMAILCIM, '-') as HelyettesitoEmail ,tt.C_NEV as TantargyNev ,ocs.C_NEV as OsztalyCsoportNev ,hi.C_HELYETTESITESNAPJA as OraDatuma ,oo.C_ORAKEZDETE as OraKezdete ,oo.C_ORAVEGE as OraVege ,oo.C_ORASZAM as OraSzama ,IIF(oo.C_CSENGETESIRENDORAID IS NULL,'T','F') as IsNapirend ,tte.C_NEV as TeremNev ,helyettesitesTipus.C_NAME AS HelyettesitesTipus ,helyettesitett.C_NYOMTATASINEV AS HelyettesitettNev ,f.ID AS HelyettesitoID ,e.C_GUID AS HelyettesitoEmailGuid FROM T_HELYETTESITESIIDOSZAK hi INNER JOIN T_DICTIONARYITEMBASE helyettesitesTipus ON helyettesitesTipus.ID = hi.C_HELYETTESITESTIPUS AND helyettesitesTipus.C_INTEZMENYID = hi.C_INTEZMENYID AND helyettesitesTipus.C_TANEVID = hi.C_TANEVID AND helyettesitesTipus.TOROLT = 'F' JOIN T_ORARENDIORA oo ON oo.ID = hi.C_HELYETTESITETTORARENDID and oo.TOROLT = 'F' JOIN T_FELHASZNALO f ON f.ID = hi.C_HELYETTESTANAROKID and f.TOROLT = 'F' JOIN T_FELHASZNALO helyettesitett ON helyettesitett.ID = oo.C_TANARID and helyettesitett.TOROLT = 'F' JOIN T_OSZTALYCSOPORT ocs ON ocs.ID = oo.C_OSZTALYCSOPORTID AND ocs.TOROLT = 'F' JOIN T_TANTARGY tt ON tt.ID = oo.C_TANTARGYID AND tt.TOROLT = 'F' JOIN T_TEREM tte ON tte.ID = oo.C_TEREMID and tte.TOROLT = 'F' LEFT JOIN T_EMAIL e ON e.C_FELHASZNALOID = f.ID AND e.TOROLT = 'F' AND e.C_ISHIBASANMEGADVA = 'F' AND e.C_ALAPERTELMEZETT = 'T' WHERE hi.TOROLT = 'F' AND hi.ID = {0} ", id); var CommandText = commandText; DataSet ds = GetData(CommandText, parameters: parameters, booleanColumns: "IsNapirend"); return ds; } public void DeleteHelyettesitesek(int orarendiOraId, DateTime start, DateTime end, int tanevId) { using (var command = new SDACommand { Connection = UserContext.Instance.SDAConnection, Transaction = UserContext.Instance.SDATransaction, CommandText = @" UPDATE T_HELYETTESITESIIDOSZAK SET TOROLT = 'T' WHERE C_HELYETTESITETTORARENDID = :pOrarendiOraId AND CAST(C_HELYETTESITESNAPJA AS DATE) >= CAST(:pStart AS DATE) AND CAST(C_HELYETTESITESNAPJA AS DATE) <= CAST(:pEnd AS DATE) AND TOROLT = 'F' AND C_TANEVID = :pTanevId " }) { command.Parameters.Add("pTanevId", tanevId); command.Parameters.Add("pStart", start); command.Parameters.Add("pEnd", end); command.Parameters.Add("pOrarendiOraId", orarendiOraId); command.ExecuteNonQuery(); } } public DataSet GetHelyettesitesDataSetByGroupId(int intezmenyId, int tanevId, int groupId) { var commandParameterList = new List { new CommandParameter("pIntezmenyId", intezmenyId), new CommandParameter("pTanevId", tanevId), new CommandParameter("pGroupId", groupId) }; string commandText = @" SELECT helyettesitesiIdoszak.ID Id ,helyettesitesiIdoszak.C_HELYETTESITESNAPJA HelyettesitesNapjaDate FROM T_HELYETTESITESIIDOSZAK_OSSZES helyettesitesiIdoszak WHERE helyettesitesiIdoszak.C_INTEZMENYID = :pIntezmenyId AND helyettesitesiIdoszak.C_TANEVID = :pTanevId AND helyettesitesiIdoszak.TOROLT = 'F' AND helyettesitesiIdoszak.C_GROUPID = :pGroupId "; return GetData(commandText, commandParameterList); } public DataSet GetHelyettesitesDataSet(int tanevId) { var commandParameterList = new List { new CommandParameter("pTanevId", tanevId) }; string commandText = @" SELECT helyettesites.ID Id ,helyettesites.C_HELYETTESITESNAPJA HelyettesitesNapja ,helyettesites.C_HELYETTESTANAROKID HelyettesitoTanarId ,orarendiOra.ID OrarendiOraId ,orarendiOra.C_ORASZAM OrarendiOraOraSorszam ,orarendiOra.C_ORAKEZDETE OrarendiOraOraKezdete ,orarendiOra.C_ORAVEGE OrarendiOraOraVege ,hetirendTipusDictionay.ID OrarendiOraHetirendTipusId ,hetirendTipusDictionay.C_NAME OrarendiOraHetirendTipusNev FROM T_HELYETTESITESIIDOSZAK_OSSZES helyettesites INNER JOIN T_ORARENDIORA_OSSZES orarendiOra ON orarendiOra.TOROLT = 'F' AND orarendiOra.C_TANEVID = helyettesites.C_TANEVID AND orarendiOra.ID = helyettesites.C_HELYETTESITETTORARENDID INNER JOIN T_HETIRENDTIPUS_OSSZES hetirendTipus ON hetirendTipus.TOROLT = 'F' AND hetirendTipus.C_ALTANEVID = helyettesites.C_TANEVID AND hetirendTipus.ID = orarendiOra.C_HETIREND INNER JOIN T_DICTIONARYITEMBASE_OSSZES hetirendTipusDictionay ON hetirendTipusDictionay.TOROLT = 'F' AND hetirendTipusDictionay.C_TANEVID = helyettesites.C_TANEVID AND hetirendTipusDictionay.ID = hetirendTipus.ID WHERE helyettesites.TOROLT = 'F' AND helyettesites.C_TANEVID = :pTanevId "; return GetData(commandText, commandParameterList); } public DataSet GetHelyettesitesekListajaByOrerendiOra(DateTime pOraErvenyessegKezdete, DateTime pOraErvenyessegVege, int? pOrerendiOraId) { var commandParameterList = new List { new CommandParameter("pOraErvenyessegKezdete", pOraErvenyessegKezdete), new CommandParameter("pOraErvenyessegVege", pOraErvenyessegVege), new CommandParameter("pOrerendiOraId", pOrerendiOraId) }; string commandText = @" SELECT hisz.ID ID, tanora.ID as TANORAID, hisz.C_HELYETTESITETTORARENDID, hisz.C_HELYETTESITESNAPJA FROM T_HELYETTESITESIIDOSZAK hisz INNER JOIN T_ORARENDIORA oo ON oo.ID = hisz.C_HELYETTESITETTORARENDID AND oo.TOROLT = 'F' LEFT JOIN T_TANITASIORA tanora ON tanora.C_ORARENDIORAGROUPID = oo.ID AND tanora.C_DATUM = hisz.C_HELYETTESITESNAPJA AND tanora.TOROLT = 'F' WHERE hisz.C_HELYETTESITETTORARENDID = :pOrerendiOraId AND hisz.C_HELYETTESITESNAPJA BETWEEN :pOraErvenyessegKezdete AND :pOraErvenyessegVege AND hisz.TOROLT = 'F' "; return GetData(commandText, commandParameterList); } public void UpdateHelyettesitekUjOrarendiOraIdByDate(DateTime pOraErvenyessegKezdete, DateTime? pOraErvenyessegVege, int pOrerendiOraId, int pRegiOrerendiOraId, int tanevId) { using (var command = new SDACommand()) { command.Connection = UserContext.Instance.SDAConnection; command.Transaction = UserContext.Instance.SDATransaction; command.CommandType = CommandType.StoredProcedure; command.CommandText = "uspUpdateHelyettesitekUjOrarendiOraIdByDate"; command.Parameters.Add("pOraErvenyessegKezdete", SDADBType.DateTime).Value = pOraErvenyessegKezdete; if (pOraErvenyessegVege.HasValue) { command.Parameters.Add("pOraErvenyessegVege", SDADBType.DateTime).Value = pOraErvenyessegVege.Value; } command.Parameters.Add("pOrerendiOraId", SDADBType.Int).Value = pOrerendiOraId; command.Parameters.Add("pRegiOrerendiOraId", SDADBType.Int).Value = pRegiOrerendiOraId; command.Parameters.Add("pTanevId", SDADBType.Int).Value = tanevId; command.ExecuteNonQuery(); } DalHelper.Commit(); } public void DeleteAllByOrarendiOraId(int tanevId, int orarendiOraId) { var ids = GetHelyettesitesIDsForOrarendiOraId(tanevId, orarendiOraId); foreach (var id in ids) { Delete(id); } } private List GetHelyettesitesIDsForOrarendiOraId(int tanevId, int orarendiOraId) { List ret = new List(); var commandParameterList = new List { new CommandParameter("pTanevId", tanevId), new CommandParameter("pOrarendiOraId", orarendiOraId), }; string commandText = @" SELECT h.ID FROM T_HELYETTESITESIIDOSZAK_OSSZES h WHERE h.TOROLT = 'F' AND h.C_TANEVID = :pTanevId AND h.C_HELYETTESITETTORARENDID = :pOrarendiOraId "; var ds = GetData(commandText, commandParameterList); foreach (DataRow row in ds.Tables[0].Rows) { if (row["ID"] != null && row["ID"] != DBNull.Value) { ret.Add(Convert.ToInt32(row["ID"])); } } return ret; } public void DeleteAllNotInIdoszak(int tanevId, int orarendiOraId, DateTime? oraErvenyessegKezdete, DateTime? oraErvenyessegVege) { var ids = GetHelyettesitesIDsForOrarendiOraGroupIdNotInIdoszak(tanevId, orarendiOraId, oraErvenyessegKezdete, oraErvenyessegVege); foreach (var id in ids) { Delete(id); } } private List GetHelyettesitesIDsForOrarendiOraGroupIdNotInIdoszak(int tanevId, int orarendiOraId, DateTime? oraErvenyessegKezdete, DateTime? oraErvenyessegVege) { List ret = new List(); var commandParameterList = new List { new CommandParameter("pTanevId", tanevId), new CommandParameter("pOrarendiOraId", orarendiOraId), }; if (oraErvenyessegKezdete.HasValue) { commandParameterList.Add(new CommandParameter("pOraErvenyessegKezdete", oraErvenyessegKezdete.Value)); } else { commandParameterList.Add(new CommandParameter("pOraErvenyessegKezdete", DBNull.Value)); } if (oraErvenyessegVege.HasValue) { commandParameterList.Add(new CommandParameter("pOraErvenyessegVege", oraErvenyessegVege.Value)); } else { commandParameterList.Add(new CommandParameter("pOraErvenyessegVege", DBNull.Value)); } string commandText = @" SELECT h.ID FROM T_HELYETTESITESIIDOSZAK_OSSZES h WHERE h.TOROLT = 'F' AND h.C_TANEVID = :pTanevId AND h.C_HELYETTESITETTORARENDID = :pOrarendiOraId AND (h.C_HELYETTESITESNAPJA < :pOraErvenyessegKezdete OR (:pOraErvenyessegVege IS NOT NULL AND h.C_HELYETTESITESNAPJA > :pOraErvenyessegVege)) "; var ds = GetData(commandText, commandParameterList); foreach (DataRow row in ds.Tables[0].Rows) { if (row["ID"] != null && row["ID"] != DBNull.Value) { ret.Add(Convert.ToInt32(row["ID"])); } } return ret; } public DataSet GetNemkotottMunkaidoByHelyettesites(int? id, int? groupId, int tanevId) { 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 = "uspGetNemkotottMunkaidoByHelyettesites"; command.Parameters.Add("TanevId", SDADBType.Int).Value = tanevId; if (id.HasValue) { command.Parameters.Add("HelyettesitesId", SDADBType.Int).Value = id.Value; } if (groupId.HasValue) { command.Parameters.Add("GroupId", SDADBType.Int).Value = groupId.Value; } using (var adapter = new SDADataAdapter()) { adapter.SelectCommand = command; adapter.Fill(ds); } } return ds; } public DateTime GetHelyettesitesElrendelese(int helyettesitesId) { var commandText = $@" SELECT CREATED FROM T_HELYETTESITESIIDOSZAK_OSSZES WHERE ID = {helyettesitesId} AND TOROLT = 'F' "; var ds = GetData(commandText); var created = ds.Tables[0].Rows[0].Field("CREATED"); return created; } public void UpdateDktFeladatHelyettesitoAlkalmazott(int orarendiOraId, DateTime helyettesitesNapja, int? helyettesitoAlkalmazottId = null) { using (var command = new SDACommand()) { command.Connection = UserContext.Instance.SDAConnection; command.Transaction = UserContext.Instance.SDATransaction; command.CommandType = CommandType.StoredProcedure; command.CommandText = "uspUpdateDktFeladatHelyettesitoAlkalmazott"; command.Parameters.Add("pOrarendiOraId", SDADBType.Int).Value = orarendiOraId; command.Parameters.Add("pHelyettesitesNapja", SDADBType.DateTime).Value = helyettesitesNapja; command.Parameters.Add("pHelyettesitoAlkalmazottId", SDADBType.Int).Value = helyettesitoAlkalmazottId; command.ExecuteNonQuery(); } DalHelper.Commit(); } } }