using System.Collections.Generic; using System.Data; 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 TantervDAL : DataAccessBase, ITantervDAL { public TantervDAL(DalHandler handler, GridParameters parameters) : base(handler, parameters) { } public TantervDAL(DalHandler handler) : base(handler) { } public DataSet GetAktivTantervek(int? tanevId = null) { var paramsList = new List(); var commandText = new StringBuilder(@" SELECT ID, C_NEV Nev FROM T_TANTERV_OSSZES WHERE TOROLT = 'F' "); if (tanevId.IsEntityId()) { commandText.Append(@" and T_TANTERV_OSSZES.c_tanevId = :pTanevID"); paramsList.Add(new CommandParameter("pTanevID", tanevId)); } var ds = this.GetData(commandText.ToString(), paramsList); return ds; } public DataSet GetTantervek() { var CommandText = @" SELECT tt.ID ID, tt.C_NEV Nev, tt.C_CSOPORTTIPUSA CsoportTipusa, tt.C_EVFOLYAMIG Evfolyamig, tt.C_EVFOLYAMTOL Evfolyamtol, tt.C_MEGJEGYZES Megjegyzes FROM T_TANTERV as tt WHERE tt.TOROLT = 'F' "; var ds = GetData(CommandText, dictionaryItemColumns: "CsoportTipusa,Evfolyamig,Evfolyamtol"); return ds; } public DataSet GetTantervOsztalyai(int tantervId, int tanevId) { List parameters = new List(); /// TODO(@DevKornél): mehetnének list-be object initializerrel parameters.Add(new CommandParameter("pTantervId", tantervId)); parameters.Add(new CommandParameter("pTanevId", tanevId)); parameters.Add(new CommandParameter("OktNevKatTipus", (int)OktNevelesiKategoriaEnum.NevelesOktatas)); var command = @" SELECT ocs.ID, ocs.C_NEV Nev, ocs.C_EVFOLYAMTIPUSA Evfolyam, LETSZAM.TANULOKSZAMA Letszam FROM T_OSZTALYCSOPORT_OSSZES ocs INNER JOIN T_OSZTALY_OSSZES on T_OSZTALY_OSSZES.ID = ocs.ID left JOIN ( SELECT C_OSZTALYCSOPORTID, count(C_TANULOID) TANULOKSZAMA FROM T_TANULOCSOPORT WHERE T_TANULOCSOPORT.TOROLT = 'F' and T_TANULOCSOPORT.C_BELEPESDATUM < GETDATE() and (T_TANULOCSOPORT.C_KILEPESDATUM IS NULL or T_TANULOCSOPORT.C_KILEPESDATUM > GETDATE()) GROUP BY C_OSZTALYCSOPORTID ) LETSZAM on LETSZAM.C_OSZTALYCSOPORTID = ocs.ID WHERE ocs.TOROLT = 'F' and T_OSZTALY_OSSZES.C_TANTERVID = :pTantervId AND T_OSZTALY_OSSZES.C_ALTANEVID = :pTanevId AND ocs.C_FELADATKATEGORIAID = @OktNevKatTipus "; return this.GetData(command, parameters, "Evfolyam"); } public DataSet GetTantervTanuloi(int tantervId, int tanevId) { List parameters = new List(); /// TODO(@DevKornél): mehetnének list-be object initializerrel parameters.Add(new CommandParameter("TantervId", tantervId)); parameters.Add(new CommandParameter("TanevId", tanevId)); parameters.Add(new CommandParameter("OktNevKatTipus", (int)OktNevelesiKategoriaEnum.NevelesOktatas)); var command = @" select f.ID as ID ,f.C_NYOMTATASINEV as Nev ,ocs.C_NEV as OsztalyNev from T_TANULOTANUGYIADATOK tta join T_TANULOCSOPORT tcs on tta.C_TANULOCSOPORTID = tcs.ID and tcs.C_BELEPESDATUM < GETDATE() and (tcs.C_KILEPESDATUM is null or tcs.C_KILEPESDATUM > GETDATE()) and tcs.TOROLT = 'F' join T_OSZTALY o on o.ID = tcs.C_OSZTALYCSOPORTID and o.TOROLT = 'F' join T_OSZTALYCSOPORT ocs on ocs.ID = o.ID and ocs.C_FELADATKATEGORIAID = @OktNevKatTipus and ocs.TOROLT = 'F' join T_TANULO t on t.ID = tcs.C_TANULOID and t.TOROLT = 'F' join T_FELHASZNALO f on f.ID = t.ID and f.TOROLT = 'F' where tta.C_TANTERVID = @TantervId and t.C_ALTANEVID = @TanevId and tta.TOROLT = 'F' "; return this.GetData(command, parameters); } public DataSet TantervKereses(int tanevId, string tantervNev = null, int? jellemzoCsopTipId = null, int? kezdoEvfolyamId = null, int? vegzoEvfolyamId = null, int? isKerettantervreEpul = null, int? isKerettanterv = null) { List paramsList = new List(); StringBuilder command = new StringBuilder(@"SELECT tanterv.ID AS ID ,tanterv.C_NEV AS Nev ,tanterv.C_CSOPORTTIPUSA AS CsoportTipusa ,tanterv.C_EVFOLYAMIG AS Evfolyamig ,tanterv.C_EVFOLYAMTOL AS Evfolyamtol ,tanterv.C_MEGJEGYZES AS Megjegyzes ,C_ISKERETTANTERV as IsKerettanterv FROM T_TANTERV_OSSZES tanterv WHERE tanterv.TOROLT = 'F'"); if (!string.IsNullOrWhiteSpace(tantervNev)) { command.Append($" AND lower(tanterv.C_NEV) like '%' + @{nameof(tantervNev)} + '%'"); paramsList.Add(new CommandParameter(nameof(tantervNev), tantervNev.ToLowerInvariant())); } if (jellemzoCsopTipId.HasValue) { command.Append(@" AND tanterv.C_CSOPORTTIPUSA = :pJellCsopTip"); paramsList.Add(new CommandParameter("pJellCsopTip", jellemzoCsopTipId)); } if (kezdoEvfolyamId.HasValue) { command.Append(@" AND tanterv.C_EVFOLYAMTOL = :pKezdEvf"); paramsList.Add(new CommandParameter("pKezdEvf", kezdoEvfolyamId)); } if (vegzoEvfolyamId.HasValue) { command.Append(@" AND tanterv.C_EVFOLYAMIG = :pVegEvf"); paramsList.Add(new CommandParameter("pVegEvf", vegzoEvfolyamId)); } if (isKerettantervreEpul.HasValue) { if (isKerettantervreEpul.Value == 1) { command.Append(@" AND tanterv.C_KERETTANTERVREEPULO = 'T'"); } if (isKerettantervreEpul.Value == 0) { command.Append(@" AND tanterv.C_KERETTANTERVREEPULO = 'F'"); } } if (isKerettanterv.HasValue) { if (isKerettanterv.Value == 1) { command.Append(@" AND tanterv.C_ISKERETTANTERV = 'T'"); } if (isKerettanterv.Value == 0) { command.Append(@" AND tanterv.C_ISKERETTANTERV = 'F'"); } } command.Append(@" AND tanterv.C_TANEVID = :pTanevId"); paramsList.Add(new CommandParameter("pTanevId", tanevId)); var ds = GetData(command.ToString(), paramsList, dictionaryItemColumns: "CsoportTipusa,Evfolyamig,Evfolyamtol", booleanColumns: "IsKerettanterv"); return ds; } public void Insert(ITanterv dto) { var entity = dto as Tanterv; entity.Insert(); dto.ID = entity.ID; FollowUp(entity); DalHelper.Commit(); } public void FullUpdate(ITanterv dto) { var entity = dto as Tanterv; entity.FullUpdate(); FollowUp(entity); DalHelper.Commit(); } public void Update(ITanterv dto) { var entity = dto as Tanterv; entity.Update(); FollowUp(entity); DalHelper.Commit(); } public void Delete(ITanterv dto) { var entity = dto as Tanterv; entity.Delete(); DalHelper.Commit(); } public void FollowUpTanterv(int intezmenyId, int aktTanevId, int kovetkezoTanevId, int tantervId) { using (SDACommand command = new SDACommand()) { command.Connection = UserContext.Instance.SDAConnection; command.Transaction = UserContext.Instance.SDATransaction; command.CommandText = "uspFollowUpTanterv"; command.Parameters.Add("intezmenyId", intezmenyId); command.Parameters.Add("aktTanevId", aktTanevId); command.Parameters.Add("kovetkezoTanevId", kovetkezoTanevId); command.Parameters.Add("tantervId", tantervId); command.CommandType = CommandType.StoredProcedure; command.ExecuteNonQuery(); DalHelper.Commit(); } } public int GetKovTanevTanterv(int tantervId, int tanevId) { using (var commandByTantervId = new SDACommand { Connection = UserContext.Instance.SDAConnection, Transaction = UserContext.Instance.SDATransaction }) { commandByTantervId.Parameters.Add("pTantervId", tantervId); commandByTantervId.CommandText = @" SELECT tt.ID FROM T_TANTERV_OSSZES tt WHERE tt.ELOZOTANEVIREKORDID = :pTantervId AND tt.TOROLT = 'F' "; var resultByTantervId = commandByTantervId.ExecuteScalar(); if (resultByTantervId != null) return int.Parse(resultByTantervId.ToString()); } using (var commandByTanevId = new SDACommand { Connection = UserContext.Instance.SDAConnection, Transaction = UserContext.Instance.SDATransaction }) { commandByTanevId.Parameters.Add("pTanevId", tanevId); commandByTanevId.CommandText = @" SELECT ID FROM T_TANTERV_OSSZES WHERE C_TANEVID = :pTanevId AND TOROLT = 'F' AND C_VEDETT = 'T' "; var resultByTanevId = commandByTanevId.ExecuteScalar(); if (resultByTanevId != null) return int.Parse(resultByTanevId.ToString()); } return -1; } public ITanterv Get() { return Tanterv.GiveAnInstance(); } public ITanterv Get(int id) { var entity = Tanterv.GiveAnInstance(); entity.LoadByID(id); return entity; } 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_TANTERV_OSSZES WHERE ELOZOTANEVIREKORDID = @{nameof(id)} AND TOROLT = 'F' "; var result = command.ExecuteScalar(); int.TryParse(result?.ToString(), out int res); return res; } } public int GetTop1TantervId(int tanevId) { SDA.DataProvider.SDACommand command = new SDA.DataProvider.SDACommand(); command.Connection = UserContext.Instance.SDAConnection; command.Transaction = UserContext.Instance.SDATransaction; command.Parameters.Add("pTanevId", tanevId); command.CommandText = @" SELECT TOP 1 tt.ID FROM T_TANTERV_OSSZES tt WHERE tt.C_TANEVID = :pTanevId AND tt.TOROLT = 'F' "; var result = command.ExecuteScalar(); if (result != null) return int.Parse(result.ToString()); return -1; } } }