460 lines
15 KiB
C#
460 lines
15 KiB
C#
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.Enums;
|
|
using Kreta.Enums.ManualEnums;
|
|
using Kreta.Framework;
|
|
using Kreta.Framework.Util;
|
|
using SDA.DataProvider;
|
|
using SDA.Kreta.Entities;
|
|
|
|
namespace Kreta.DataAccessManual
|
|
{
|
|
internal class OraSorszamozasHalmazDAL : DataAccessBase, IOraSorszamozasHalmazDAL
|
|
{
|
|
public OraSorszamozasHalmazDAL(DalHandler handler) : base(handler)
|
|
{ }
|
|
|
|
public OraSorszamozasHalmazDAL(DalHandler handler, GridParameters parameters) : base(handler, parameters)
|
|
{ }
|
|
|
|
public bool NevExists(int tanevId, string nev, int id)
|
|
{
|
|
using (var command = new SDACommand())
|
|
{
|
|
command.Connection = UserContext.Instance.SDAConnection;
|
|
command.Transaction = UserContext.Instance.SDATransaction;
|
|
|
|
command.Parameters.Add("pTanevId", tanevId);
|
|
command.Parameters.Add("pNev", nev);
|
|
command.Parameters.Add("pId", id);
|
|
|
|
command.CommandText = @"
|
|
IF EXISTS
|
|
(
|
|
SELECT 1
|
|
FROM T_ORASORSZAMOZASHALMAZ_OSSZES h
|
|
WHERE h.TOROLT = 'F'
|
|
AND h.C_TANEVID = :pTanevId
|
|
AND h.C_NEV = :pNev
|
|
AND h.ID <> :pId
|
|
)
|
|
SELECT 1
|
|
ELSE
|
|
SELECT 0
|
|
";
|
|
|
|
return Convert.ToBoolean(command.ExecuteScalar());
|
|
}
|
|
}
|
|
|
|
public bool OsszerendelesExists(int tanevId, int osztalyCsoportId, int tantargyId, int halmazId, List<int> deletedOsszerendeslIds)
|
|
{
|
|
var deletedOsszerendelesIdsList = deletedOsszerendeslIds.Count > 0 ? string.Join<int>(",", deletedOsszerendeslIds) : "-1";
|
|
|
|
using (var command = new SDACommand())
|
|
{
|
|
command.Connection = UserContext.Instance.SDAConnection;
|
|
command.Transaction = UserContext.Instance.SDATransaction;
|
|
|
|
command.Parameters.Add("pTanevId", tanevId);
|
|
command.Parameters.Add("pOsztalyCsoportId", osztalyCsoportId);
|
|
command.Parameters.Add("pTantargyId", tantargyId);
|
|
command.Parameters.Add("pHalmazId", halmazId);
|
|
|
|
command.CommandText = $@"
|
|
IF EXISTS
|
|
(
|
|
SELECT 1
|
|
FROM T_ORASORSZAMOZASHALMAZOSSZEREN_OSSZES r
|
|
WHERE r.TOROLT = 'F'
|
|
AND r.C_TANEVID = :pTanevId
|
|
AND r.C_OSZTALYCSOPORTID = :pOsztalyCsoportId
|
|
AND r.C_TANTARGYID = :pTantargyId
|
|
AND r.C_ORASORSZAMOZASHALMAZID <> :pHalmazId
|
|
AND r.ID NOT IN ({deletedOsszerendelesIdsList})
|
|
)
|
|
SELECT 1
|
|
ELSE
|
|
SELECT 0
|
|
";
|
|
|
|
return Convert.ToBoolean(command.ExecuteScalar());
|
|
}
|
|
}
|
|
|
|
public IOraSorszamozasHalmaz Get(int id)
|
|
{
|
|
var entity = OraSorszamozasHalmaz.GiveAnInstance();
|
|
entity.LoadByID(id);
|
|
|
|
return entity;
|
|
}
|
|
|
|
public DataSet GetAllPaged(int tanevId, OraSorszamozasHalmazSearchPCO pco)
|
|
{
|
|
var commandParameterList = new List<CommandParameter>
|
|
{
|
|
new CommandParameter("pTanevId", tanevId),
|
|
};
|
|
|
|
string commandText = @"
|
|
SELECT
|
|
h.ID AS ID
|
|
,h.C_NEV AS HalmazNeve
|
|
FROM T_ORASORSZAMOZASHALMAZ_OSSZES h
|
|
";
|
|
|
|
if (pco.SearchOsztalyCsoportId.HasValue || pco.SearchTantargyId.HasValue)
|
|
{
|
|
commandText += @" INNER JOIN T_ORASORSZAMOZASHALMAZOSSZEREN_OSSZES r ON h.ID = r.C_ORASORSZAMOZASHALMAZID AND r.TOROLT = 'F'";
|
|
|
|
if (pco.SearchOsztalyCsoportId.HasValue)
|
|
{
|
|
commandText += @" AND r.C_OSZTALYCSOPORTID = :pOsztalyCsoportId";
|
|
commandParameterList.Add(new CommandParameter("pOsztalyCsoportId", pco.SearchOsztalyCsoportId.Value));
|
|
}
|
|
|
|
if (pco.SearchTantargyId.HasValue)
|
|
{
|
|
commandText += @" AND r.C_TANTARGYID = :pTantargyId";
|
|
commandParameterList.Add(new CommandParameter("pTantargyId", pco.SearchTantargyId.Value));
|
|
}
|
|
}
|
|
|
|
commandText += @"
|
|
WHERE h.TOROLT = 'F'
|
|
AND h.C_TANEVID = :pTanevId
|
|
";
|
|
|
|
if (!string.IsNullOrWhiteSpace(pco.SearchHalmazNeve))
|
|
{
|
|
commandText += @" AND h.C_NEV LIKE '%' + :pHalmazNeve + '%'";
|
|
commandParameterList.Add(new CommandParameter("pHalmazNeve", pco.SearchHalmazNeve));
|
|
}
|
|
|
|
return GetData(commandText, commandParameterList);
|
|
}
|
|
|
|
public DataSet GetOsszerendelesek(int halmazId, bool forDetail = false)
|
|
{
|
|
var commandParameterList = new List<CommandParameter>
|
|
{
|
|
new CommandParameter("pHalmazId", halmazId),
|
|
};
|
|
|
|
string commandText = $@"
|
|
SELECT
|
|
r.ID AS ID
|
|
,r.C_OSZTALYCSOPORTID AS {(forDetail ? "Detail" : "")}OsztalyCsoportId
|
|
,o.C_NEV AS {(forDetail ? "Detail" : "")}OsztalyCsoport
|
|
,r.C_TANTARGYID AS {(forDetail ? "Detail" : "")}TantargyId
|
|
,t.C_NEV AS {(forDetail ? "Detail" : "")}Tantargy
|
|
FROM T_ORASORSZAMOZASHALMAZOSSZEREN_OSSZES r
|
|
INNER JOIN T_OSZTALYCSOPORT_OSSZES o ON r.C_OSZTALYCSOPORTID = o.ID
|
|
AND o.TOROLT = 'F'
|
|
INNER JOIN T_TANTARGY_OSSZES t ON r.C_TANTARGYID = t.ID
|
|
AND t.TOROLT = 'F'
|
|
WHERE r.TOROLT = 'F'
|
|
AND r.C_ORASORSZAMOZASHALMAZID = :pHalmazId
|
|
";
|
|
|
|
return GetData(commandText, commandParameterList);
|
|
}
|
|
|
|
public void Delete(int id, int intezmenyId, int tanevId)
|
|
{
|
|
var entity = OraSorszamozasHalmaz.GiveAnInstance();
|
|
entity.LoadByID(id);
|
|
|
|
entity.OraSorszamozasHalmazOsszerendelesList.DeleteAll();
|
|
|
|
entity.Delete();
|
|
|
|
DalHelper.TanitasiOra().UpdateTanitasiOraEvesSorszamTeljesTanev(intezmenyId, tanevId);
|
|
|
|
DalHelper.Commit();
|
|
}
|
|
|
|
public void DeleteOsszerendeles(int osszerendelesId, int intezmenyId, int tanevId, bool updateTanoraEvesSorszam = true)
|
|
{
|
|
var ids = GetHalmazokForOsszerendeles(osszerendelesId);
|
|
|
|
foreach (var id in ids)
|
|
{
|
|
ResetSorszamozasKezodErtek(id);
|
|
}
|
|
|
|
DalHelper.OraSorszamozasHalmazOsszerendeles().Delete(osszerendelesId);
|
|
|
|
if (updateTanoraEvesSorszam)
|
|
{
|
|
DalHelper.TanitasiOra().UpdateTanitasiOraEvesSorszamTeljesTanev(intezmenyId, tanevId);
|
|
}
|
|
|
|
DalHelper.Commit();
|
|
}
|
|
|
|
public int Save(int tanevId, int id, string nev, bool kozosOraSorszamozasElteroTanarnal, int tipus, int? kezdoertek)
|
|
{
|
|
var entity = OraSorszamozasHalmaz.GiveAnInstance();
|
|
|
|
if (id.IsEntityId())
|
|
{
|
|
entity.LoadByID(id);
|
|
}
|
|
|
|
entity.Nev = nev;
|
|
entity.KozosOraSorszamozasElteroTanarnal = kozosOraSorszamozasElteroTanarnal;
|
|
entity.Tipus = tipus;
|
|
entity.Kezdoertek = kezdoertek;
|
|
entity.TanevId = tanevId;
|
|
|
|
if (id.IsEntityId())
|
|
{
|
|
entity.FullUpdate();
|
|
}
|
|
else
|
|
{
|
|
entity.Insert();
|
|
}
|
|
|
|
DalHelper.Commit();
|
|
|
|
return entity.ID;
|
|
}
|
|
|
|
public int SaveOsszerendeles(int tanevId, int osztalyCsoportId, int tantargyId, int halmazId)
|
|
{
|
|
var ds = GetOsszerendelesIDWithTorolt(tanevId, osztalyCsoportId, tantargyId);
|
|
|
|
int? osszerendelesId = null;
|
|
bool torolt = false;
|
|
|
|
if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
|
|
{
|
|
var row = ds.Tables[0].Rows[0];
|
|
|
|
if (row["ID"] != null && row["ID"] != DBNull.Value)
|
|
{
|
|
osszerendelesId = Convert.ToInt32(row["ID"]);
|
|
}
|
|
|
|
if (row["TOROLT"] != null && row["TOROLT"] != DBNull.Value)
|
|
{
|
|
torolt = row["TOROLT"].ToString() == "T";
|
|
}
|
|
}
|
|
|
|
if (!osszerendelesId.IsEntityId())
|
|
{
|
|
osszerendelesId = InsertOsszerendeles(tanevId, osztalyCsoportId, tantargyId, halmazId);
|
|
}
|
|
else
|
|
{
|
|
if (torolt)
|
|
{
|
|
UnDeleteOsszerendeles(osszerendelesId.Value, halmazId);
|
|
}
|
|
}
|
|
|
|
return osszerendelesId.Value;
|
|
}
|
|
|
|
public void DeleteOsszerendelesek(int halmazId, IEnumerable<int> idsInGrid, int intezmenyId, int tanevId)
|
|
{
|
|
var idsInDB = GetOsszerendelesekID(halmazId);
|
|
|
|
var torlendoIds = idsInDB.Except(idsInGrid).Distinct();
|
|
|
|
foreach (var id in torlendoIds)
|
|
{
|
|
DeleteOsszerendeles(id, tanevId, intezmenyId, updateTanoraEvesSorszam: false);
|
|
}
|
|
}
|
|
|
|
public void SetHalmazOsszerendeles(int halmazId, int osszerendelesId)
|
|
{
|
|
var entity = OraSorszamozasHalmaz.GiveAnInstance();
|
|
entity.LoadByID(halmazId);
|
|
entity.OraSorszamozasHalmazOsszerendelesId = osszerendelesId;
|
|
|
|
entity.FullUpdate();
|
|
|
|
DalHelper.Commit();
|
|
}
|
|
|
|
public List<int> GetEvesOraszamForTantargyAndOsztaly(int tanevId, int itezmenyId, int osztalyCsoportId, int tantargyId)
|
|
{
|
|
List<int> ret = new List<int>();
|
|
|
|
using (var command = new SDACommand())
|
|
{
|
|
command.Connection = UserContext.Instance.SDAConnection;
|
|
command.Transaction = UserContext.Instance.SDATransaction;
|
|
command.CommandType = CommandType.StoredProcedure;
|
|
command.CommandText = "uspGetEvesOraszamForTantargyAndOsztaly";
|
|
|
|
command.Parameters.Add("pTanevId", tanevId);
|
|
command.Parameters.Add("pIntezmenyId", itezmenyId);
|
|
command.Parameters.Add("pOsztalyCsoportId", osztalyCsoportId);
|
|
command.Parameters.Add("pTantargyId", tantargyId);
|
|
command.Parameters.Add("pBeallitasTanarSzamit", (int)RendszerBeallitasTipusEnum.TanitasiOra_sorszamozas_mod);
|
|
command.Parameters.Add("pBeallitasOsztalybontasEgybe", (int)RendszerBeallitasTipusEnum.tanitasiOra_sorszamozas_csoportbontas);
|
|
|
|
var ds = new DataSet();
|
|
|
|
using (var adapter = new SDADataAdapter())
|
|
{
|
|
adapter.SelectCommand = command;
|
|
adapter.Fill(ds);
|
|
}
|
|
|
|
foreach (DataRow row in ds.Tables[0].Rows)
|
|
{
|
|
if (row["EvesOraszam"] != null && row["EvesOraszam"] != DBNull.Value)
|
|
{
|
|
ret.Add(Convert.ToInt32(row["EvesOraszam"]));
|
|
}
|
|
}
|
|
}
|
|
|
|
return ret;
|
|
}
|
|
|
|
private int InsertOsszerendeles(int tanevId, int osztalyCsoportId, int tantargyId, int halmazId)
|
|
{
|
|
var entity = OraSorszamozasHalmazOsszerendeles.GiveAnInstance();
|
|
entity.OsztalyCsoportId = osztalyCsoportId;
|
|
entity.TantargyId = tantargyId;
|
|
|
|
entity.OraSorszamozasHalmazId = halmazId;
|
|
entity.TanevId = tanevId;
|
|
|
|
entity.Insert();
|
|
|
|
DalHelper.Commit();
|
|
|
|
return entity.ID;
|
|
}
|
|
|
|
private void UnDeleteOsszerendeles(int id, int halmazId)
|
|
{
|
|
var entity = OraSorszamozasHalmazOsszerendeles.GiveAnInstance();
|
|
entity.LoadByID(id);
|
|
|
|
entity.Torolt = false;
|
|
|
|
entity.OraSorszamozasHalmazId = halmazId;
|
|
|
|
entity.FullUpdate();
|
|
|
|
DalHelper.Commit();
|
|
}
|
|
|
|
private List<int> GetHalmazokForOsszerendeles(int osszerendelesId)
|
|
{
|
|
List<int> ret = new List<int>();
|
|
|
|
var commandParameterList = new List<CommandParameter>
|
|
{
|
|
new CommandParameter("pOsszerendelesId", osszerendelesId),
|
|
};
|
|
|
|
string commandText = @"
|
|
SELECT
|
|
h.ID AS ID
|
|
FROM T_ORASORSZAMOZASHALMAZ_OSSZES h
|
|
WHERE h.C_ORASORSZAMOZASHALMAZOSSZEREN = :pOsszerendelesId
|
|
";
|
|
|
|
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;
|
|
}
|
|
|
|
private void ResetSorszamozasKezodErtek(int id)
|
|
{
|
|
var entity = OraSorszamozasHalmaz.GiveAnInstance();
|
|
entity.LoadByID(id);
|
|
|
|
entity.OraSorszamozasHalmazOsszerendelesId = -1;
|
|
|
|
entity.Tipus = (int)SorszamozasKezdoErtekenekBeallitasa.SorszamozasKezdoErtekeKezzelMegadva;
|
|
|
|
entity.FullUpdate();
|
|
|
|
DalHelper.Commit();
|
|
}
|
|
|
|
private DataSet GetOsszerendelesIDWithTorolt(int tanevId, int osztalyCsoportId, int tantargyId)
|
|
{
|
|
var commandParameterList = new List<CommandParameter>
|
|
{
|
|
new CommandParameter("pTanevId", tanevId),
|
|
new CommandParameter("pOsztalyCsoportId", osztalyCsoportId),
|
|
new CommandParameter("pTantargyId", tantargyId),
|
|
};
|
|
|
|
string commandText = @"
|
|
SELECT
|
|
r.ID
|
|
,r.TOROLT
|
|
FROM T_ORASORSZAMOZASHALMAZOSSZEREN_OSSZES r
|
|
WHERE r.C_TANEVID = :pTanevId
|
|
AND r.C_OSZTALYCSOPORTID = :pOsztalyCsoportId
|
|
AND r.C_TANTARGYID = :pTantargyId
|
|
";
|
|
|
|
return GetData(commandText, commandParameterList);
|
|
}
|
|
|
|
private List<int> GetOsszerendelesekID(int halmazId)
|
|
{
|
|
List<int> ret = new List<int>();
|
|
|
|
var commandParameterList = new List<CommandParameter>
|
|
{
|
|
new CommandParameter("pHalmazId", halmazId),
|
|
};
|
|
|
|
string commandText = $@"
|
|
SELECT
|
|
r.ID AS ID
|
|
FROM T_ORASORSZAMOZASHALMAZOSSZEREN_OSSZES r
|
|
INNER JOIN T_OSZTALYCSOPORT_OSSZES o ON r.C_OSZTALYCSOPORTID = o.ID
|
|
AND o.TOROLT = 'F'
|
|
INNER JOIN T_TANTARGY_OSSZES t ON r.C_TANTARGYID = t.ID
|
|
AND t.TOROLT = 'F'
|
|
WHERE r.TOROLT = 'F'
|
|
AND r.C_ORASORSZAMOZASHALMAZID = :pHalmazId
|
|
";
|
|
|
|
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;
|
|
}
|
|
}
|
|
}
|