kreta/Kreta.DataAccessManual/SzervezetDal.cs
2024-03-13 00:33:46 +01:00

331 lines
13 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.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<CommandParameter>
{
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<CommandParameter>
{
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<CommandParameter>
{
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<CommandParameter>
{
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<CommandParameter>
{
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<int> GetLathatoSzervezetek(int intezmenyId, int tanevId, int? szervezetId, int szervezetAdatokHalmazaId)
{
var parameters = new List<CommandParameter>
{
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<int>("ID")).ToList();
return result;
}
}
}