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

407 lines
16 KiB
C#

using System;
using System.Collections.Generic;
using System.Data;
using System.Text;
using Kreta.Core;
using Kreta.DataAccess.Interfaces;
using Kreta.DataAccessManual.Interfaces;
using Kreta.DataAccessManual.ParameterClasses;
using Kreta.DataAccessManual.Util;
using Kreta.Enums.ManualEnums;
using Kreta.Framework;
using Kreta.Framework.Entities;
using Kreta.Framework.Util;
using SDA.DataProvider;
using SDA.Kreta.Entities;
namespace Kreta.DataAccessManual
{
internal class TeremDal : DataAccessBase, ITeremDal
{
public TeremDal(DalHandler handler) : base(handler)
{
}
public TeremDal(DalHandler handler, GridParameters parameters) : base(handler, parameters)
{
}
public DataSet GetTeremIdWithName(bool IsFromSzervezet, int? tanevId = null)
{
var commandParameterList = new List<CommandParameter>();
var commandText = @"
SELECT
t.id AS ID
,t.C_NEV AS Nev
,t.C_JELLEG AS Jelleg
FROM T_TEREM_OSSZES t
WHERE t.TOROLT = 'F'
AND t.C_AKTIV = 'T'
";
if (tanevId.IsEntityId())
{
commandText += @"
AND t.C_TANEVID = :pTanevId
";
commandParameterList.Add(new CommandParameter("pTanevId", tanevId));
}
commandText += @"
AND t.C_SZERVEZETID IS " + (IsFromSzervezet ? "NOT" : "") + @" NULL
";
var dataSet = GetData(commandText, commandParameterList, "Jelleg");
return dataSet;
}
#region Export
public DataSet GetTermekAdataiExcelExport(int tanevId, TeremSearchPCO teremSearchPCO)
{
var paramsList = new List<CommandParameter>
{
new CommandParameter("pTanevId", tanevId)
};
var command = new StringBuilder($@"
SELECT
terem.C_NEV as 'Helyiség név'
, jelleg.C_NAME as 'Helyiség jelleg'
, IIF(convert(varchar(20),terem.C_KAPACITAS,120) IS NULL, '-', convert(varchar(20),terem.C_KAPACITAS,120)) as 'Befogadóképesség'
, IIF(convert(varchar(20),terem.C_TERULET,120) IS NULL, '-', convert(varchar(20),terem.C_TERULET,120)) as 'Alapterület (nm)'
, mukodesi.C_NEV as 'Működési hely'
, IIF(terem.C_TEREMFELELOSID IS NULL, '-', felh.C_NYOMTATASINEV) as 'Teremfelelős'
, IIF(convert(varchar(20),terem.C_VIZSGAKAPACITAS,120) IS NULL, '-', convert(varchar(20),terem.C_VIZSGAKAPACITAS,120)) as 'Vizsga-befogadóképesség'
, IIF(terem.C_AKTIV = 'T', 'Igen', 'Nem') as 'Aktív'
, IIF(terem.C_TOBBORATLEHETTARTANI = 'T', 'Igen', 'Nem') as 'Egyszerre több órát lehet tartani'
, IIF(terem.C_WIFILEFEDETT = 'T', 'Igen', 'Nem') as 'Wifi elérhető'
, terem.C_MEGJEGYZES as 'Megjegyzés'
{(teremSearchPCO.IsSelectedTanev21_22OrLater ? @", IIF(terem.C_ISINTERNETKAPCSOLATELERHETO = 'T', 'Igen', 'Nem') as 'Internetkapcsolat elérhető'
, IIF(convert(varchar(20),terem.C_TANULOKSZAMARAHOZZAFERHINTER,120) IS NULL, '-', convert(varchar(20),terem.C_TANULOKSZAMARAHOZZAFERHINTER,120)) as 'Internetkapcsolattal rendelkező számítógép száma - tanulók számára hozzáférhető'
, IIF(convert(varchar(20),terem.C_PEDAGOGUSHOZZAFERHINTERNETES,120) IS NULL, '-', convert(varchar(20),terem.C_PEDAGOGUSHOZZAFERHINTERNETES,120)) as 'Internetkapcsolattal rendelkező számítógépek száma - pedagógus számítógépek'
, IIF(convert(varchar(20),terem.C_OKTCELRAHASZNALTSZAMITOGEPEK,120) IS NULL, '-', convert(varchar(20),terem.C_OKTCELRAHASZNALTSZAMITOGEPEK,120)) as 'Oktatási célra használt számítógépek száma'
, IIF(terem.C_ISINTERAKTTABLAVALMUNKAALLOM = 'T', 'Igen', 'Nem') as 'Interaktív táblával, kijelzővel, hozzá tartozó munkaállomással felszerelt'" : "")}
FROM T_TEREM_OSSZES terem
LEFT JOIN T_FELHASZNALO_OSSZES felh ON felh.ID = terem.C_TEREMFELELOSID AND felh.C_INTEZMENYID = terem.C_INTEZMENYID
LEFT JOIN T_DICTIONARYITEMBASE jelleg ON jelleg.ID = terem.C_JELLEG AND jelleg.C_INTEZMENYID = terem.C_INTEZMENYID
LEFT JOIN T_MUKODESIHELY_OSSZES mukodesi ON mukodesi.ID = terem.C_MUKODESIHELYID AND mukodesi.C_INTEZMENYID = terem.C_INTEZMENYID
WHERE
terem.TOROLT = 'F' and terem.C_TANEVID = :pTanevId
");
if (!string.IsNullOrWhiteSpace(teremSearchPCO.TeremNev))
{
command.Append($" and lower(terem.C_NEV) like '%' + @{nameof(teremSearchPCO.TeremNev)} + '%'");
paramsList.Add(new CommandParameter(nameof(teremSearchPCO.TeremNev), teremSearchPCO.TeremNev.ToLowerInvariant()));
}
if (teremSearchPCO.TeremJellegId.HasValue)
{
command.Append(" and terem.C_JELLEG = :pJellegID");
paramsList.Add(new CommandParameter("pJellegID", teremSearchPCO.TeremJellegId));
}
if (teremSearchPCO.KeresesMukodesiHelyID.HasValue)
{
command.Append(" and terem.C_MUKODESIHELYID = :pMukodesiID");
paramsList.Add(new CommandParameter("pMukodesiID", teremSearchPCO.KeresesMukodesiHelyID));
}
if (teremSearchPCO.MinAlapterulet.HasValue)
{
command.Append(" and terem.C_TERULET >= :pMinTerulet");
paramsList.Add(new CommandParameter("pMinTerulet", teremSearchPCO.MinAlapterulet));
}
if (teremSearchPCO.MaxAlapterulet.HasValue)
{
command.Append(" and terem.C_TERULET <= :pMaxTerulet");
paramsList.Add(new CommandParameter("pMaxTerulet", teremSearchPCO.MaxAlapterulet));
}
if (teremSearchPCO.MinKapacitas.HasValue)
{
command.Append(" and terem.C_KAPACITAS >= :pMinKapacitas");
paramsList.Add(new CommandParameter("pMinKapacitas", teremSearchPCO.MinKapacitas));
}
if (teremSearchPCO.MaxKapacitas.HasValue)
{
command.Append(" and terem.C_KAPACITAS <= :pMaxKapacitas");
paramsList.Add(new CommandParameter("pMaxKapacitas", teremSearchPCO.MaxKapacitas));
}
if (teremSearchPCO.IsAktiv.HasValue)
{
if (teremSearchPCO.IsAktiv.Value == 1)
{
command.Append(" and terem.C_AKTIV = 'T'");
}
if (teremSearchPCO.IsAktiv.Value == 0)
{
command.Append(" and terem.C_AKTIV = 'F'");
}
}
if (teremSearchPCO.TeremFelelosId.HasValue)
{
command.Append(" and terem.C_TEREMFELELOSID = :pTeremFelelos");
paramsList.Add(new CommandParameter("pTeremFelelos", teremSearchPCO.TeremFelelosId));
}
if (teremSearchPCO.MinVizsgaKapacitas.HasValue)
{
command.Append(" and terem.C_VIZSGAKAPACITAS >= :pMinVKap");
paramsList.Add(new CommandParameter("pMinVKap", teremSearchPCO.MinVizsgaKapacitas));
}
if (teremSearchPCO.MaxVizsgaKapacitas.HasValue)
{
command.Append(" and terem.C_VIZSGAKAPACITAS <= :pMaxVKap");
paramsList.Add(new CommandParameter("pMaxVKap", teremSearchPCO.MaxVizsgaKapacitas));
}
if (teremSearchPCO.IsTobbOraTarthato.HasValue)
{
if (teremSearchPCO.IsTobbOraTarthato.Value == 1)
{
command.Append(" and terem.C_TOBBORATLEHETTARTANI = 'T'");
}
if (teremSearchPCO.IsTobbOraTarthato.Value == 0)
{
command.Append(" and (terem.C_TOBBORATLEHETTARTANI IS NULL OR terem.C_TOBBORATLEHETTARTANI = 'F')");
}
}
if (teremSearchPCO.IsWifiLefedett.HasValue)
{
if (teremSearchPCO.IsWifiLefedett.Value == 1)
{
command.Append(" and terem.C_WIFILEFEDETT = 'T'");
}
if (teremSearchPCO.IsWifiLefedett.Value == 0)
{
command.Append(" and terem.C_WIFILEFEDETT = 'F'");
}
}
if (teremSearchPCO.IsInternetkapcsolatElerheto.HasValue)
{
if (teremSearchPCO.IsInternetkapcsolatElerheto.Value == 1)
{
command.Append(" and terem.C_ISINTERNETKAPCSOLATELERHETO = 'T'");
}
if (teremSearchPCO.IsInternetkapcsolatElerheto.Value == 0)
{
command.Append(" and terem.C_ISINTERNETKAPCSOLATELERHETO = 'F'");
}
}
if (teremSearchPCO.MinOktCelraHasznaltSzamitogepekSzama.HasValue)
{
command.Append(" and terem.C_OKTCELRAHASZNALTSZAMITOGEPEK >= :pMinOktCelraHasznaltSzamitogepekSzama");
paramsList.Add(new CommandParameter("pMinOktCelraHasznaltSzamitogepekSzama", teremSearchPCO.MinOktCelraHasznaltSzamitogepekSzama));
}
if (teremSearchPCO.MaxOktCelraHasznaltSzamitogepekSzama.HasValue)
{
command.Append(" and terem.C_OKTCELRAHASZNALTSZAMITOGEPEK <= :pMaxOktCelraHasznaltSzamitogepekSzama");
paramsList.Add(new CommandParameter("pMaxOktCelraHasznaltSzamitogepekSzama", teremSearchPCO.MaxOktCelraHasznaltSzamitogepekSzama));
}
if (teremSearchPCO.IsInterakttablavalMunkaallomassalFelszerelt.HasValue)
{
if (teremSearchPCO.IsInterakttablavalMunkaallomassalFelszerelt.Value == 1)
{
command.Append(" and terem.C_ISINTERAKTTABLAVALMUNKAALLOM = 'T'");
}
if (teremSearchPCO.IsInterakttablavalMunkaallomassalFelszerelt.Value == 0)
{
command.Append(" and terem.C_ISINTERAKTTABLAVALMUNKAALLOM = 'F'");
}
}
command.Append(" ORDER BY terem.C_NEV");
return GetData(command.ToString(), paramsList);
}
#endregion
public ITerem Get()
{
return Terem.GiveAnInstance();
}
public ITerem Get(int id)
{
var entity = Terem.GiveAnInstance();
entity.LoadByID(id);
return entity;
}
public void SetState(EntityState state, ITerem dto)
{
var entity = Terem.GiveAnInstance();
entity.SetState(state);
}
public void Insert(ITerem dto)
{
var entity = dto as Terem;
entity.Importalt = false;
entity.Insert();
dto.ID = entity.ID;
FollowUp(entity);
DalHelper.Commit();
}
public void FullUpdate(ITerem dto)
{
var entity = dto as Terem;
entity.Importalt = false;
entity.FullUpdate();
FollowUp(entity);
DalHelper.Commit();
}
public void Delete(int id)
{
var entity = Terem.GiveAnInstance();
entity.LoadByID(id);
Delete(entity);
}
public void Delete(ITerem dto)
{
var entity = dto as Terem;
entity.Importalt = false;
entity.Delete();
DalHelper.Commit();
}
public void FollowUpTerem(int intezmenyId, int aktTanevId, int kovetkezoTanevId, int teremId)
{
using (SDACommand command = new SDACommand())
{
command.Connection = UserContext.Instance.SDAConnection;
command.Transaction = UserContext.Instance.SDATransaction;
command.CommandText = "uspFollowUpTerem";
command.Parameters.Add("intezmenyId", intezmenyId);
command.Parameters.Add("aktTanevId", aktTanevId);
command.Parameters.Add("kovetkezoTanevId", kovetkezoTanevId);
command.Parameters.Add("teremId", teremId);
command.CommandType = CommandType.StoredProcedure;
command.ExecuteNonQuery();
DalHelper.Commit();
}
}
public DataSet TeremKapacitasTullepesVizsgalat(string teremIdArrayString, int? tervezettKapacitas)
{
using (var command = new SDACommand())
{
command.Connection = UserContext.Instance.SDAConnection;
command.Transaction = UserContext.Instance.SDATransaction;
command.CommandType = CommandType.StoredProcedure;
command.CommandText = "sp_TeremKapacitasTullepesVizsgalat";
command.Parameters.Add("teremIdArray", teremIdArrayString);
command.Parameters.Add("tervezettKapacitas", tervezettKapacitas);
var dts = new DataSet();
using (var adapter = new SDADataAdapter())
{
adapter.SelectCommand = command;
adapter.Fill(dts);
}
return dts;
}
}
public DataSet GetTeremDataSet(int intezmenyId, int tanevId, bool isFromSzervezet, int? szervezetId)
{
using (var command = new SDACommand())
{
command.Connection = UserContext.Instance.SDAConnection;
command.Transaction = UserContext.Instance.SDATransaction;
command.CommandType = CommandType.StoredProcedure;
command.CommandText = "uspGetTeremData";
command.Parameters.Add("pIntezmenyId", SDADBType.Int).Value = intezmenyId;
command.Parameters.Add("pTanevId", SDADBType.Int).Value = tanevId;
command.Parameters.Add("pIsFromSzervezet", isFromSzervezet);
command.Parameters.Add("pSzervezetId", SDADBType.Int).Value = (object)szervezetId ?? DBNull.Value;
command.Parameters.Add("pSzervezetekHalmaza", SDADBType.Int).Value = (int)SzervezetAdatokHalmazaEnum.SzervezetEsAlSzervezetek;
var ds = new DataSet();
using (var adapter = new SDADataAdapter())
{
adapter.SelectCommand = command;
adapter.Fill(ds);
}
SetDNAME(ds.Tables[0], "JellegId");
SetBoolFields(ds.Tables[0], "IsAktiv");
return ds;
}
}
public DataSet GetBerbeadhatoTermekMukodesiHelyeinekVarosai(int? tanevId)
{
var commandText = $@"
SELECT DISTINCT mh.C_VAROS Varos
FROM T_TEREM_OSSZES t
LEFT JOIN T_MUKODESIHELY_OSSZES mh ON mh.ID = t.C_MUKODESIHELYID AND mh.TOROLT = 'F'
WHERE t.TOROLT = 'F'
AND t.C_AKTIV = 'T'
AND t.C_BERBEADHATO = 'T'
AND t.C_TANEVID = @{nameof(tanevId)}";
var commandParameterList = new List<CommandParameter>
{
new CommandParameter(nameof(tanevId), tanevId)
};
var ds = GetData(
commandText: commandText,
parameters: commandParameterList);
return ds;
}
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_TEREM_OSSZES
WHERE
ELOZOTANEVIREKORDID = @{nameof(id)}
AND TOROLT = 'F'
";
var result = command.ExecuteScalar();
int.TryParse(result?.ToString(), out int res);
return res;
}
}
}
}