476 lines
19 KiB
C#
476 lines
19 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;
|
|
using Kreta.Framework;
|
|
using Kreta.Framework.Util;
|
|
using SDA.Kreta.Entities;
|
|
|
|
namespace Kreta.DataAccessManual
|
|
{
|
|
internal class TanmenetDal : DataAccessBase, ITanmenetDal
|
|
{
|
|
|
|
public TanmenetDal(DalHandler handler) : base(handler)
|
|
{
|
|
|
|
}
|
|
|
|
public TanmenetDal(DalHandler handler, GridParameters parameters) : base(handler, parameters)
|
|
{
|
|
|
|
}
|
|
|
|
public DataSet GetTemakByTargyEsOsztCsop(int tantargyId = -1, int osztalyCsoportId = -1, int tanarID = -1)
|
|
{
|
|
var parameters = new List<CommandParameter>
|
|
{
|
|
new CommandParameter("pTantargyId", tantargyId), new CommandParameter("pOsztalyCsoportId", osztalyCsoportId),new CommandParameter("pTantarId", tanarID)
|
|
};
|
|
|
|
var command = $@"
|
|
SELECT
|
|
ID ID,
|
|
C_TEMA Tema,
|
|
C_ORASZAM Sorsz
|
|
FROM
|
|
T_TANMENET
|
|
WHERE
|
|
TOROLT = 'F'
|
|
{(tantargyId > 0 ? "AND C_TANTARGYID = :pTantargyId " : string.Empty)}
|
|
{(osztalyCsoportId > 0 ? "AND C_OSZTALYCSOPORTID = :pOsztalyCsoportId" : string.Empty)}
|
|
{(tanarID > 0 ? "AND C_FELTOLTOID = :pTantarId " : string.Empty)}";
|
|
var ds = GetData(command, parameters);
|
|
return ds;
|
|
}
|
|
|
|
public DataSet GetTanmenetek(TanmenetKeresesePCO pco)
|
|
{
|
|
var parameters = new List<CommandParameter>();
|
|
|
|
var whereTanmenet = new StringBuilder();
|
|
parameters.Add(new CommandParameter("pAlkalmazottID", pco.AlkalmazottID));
|
|
|
|
if (pco.OsztalyID.HasValue && pco.OsztalyID.Value > 0)
|
|
{
|
|
parameters.Add(new CommandParameter("pOsztalyID", pco.OsztalyID));
|
|
whereTanmenet.Append(" AND tanmenet.C_OSZTALYCSOPORTID = :pOsztalyID");
|
|
}
|
|
if (pco.TantargyID.HasValue && pco.TantargyID.Value > 0)
|
|
{
|
|
parameters.Add(new CommandParameter("pTantargyID", pco.TantargyID));
|
|
whereTanmenet.Append(" AND tanmenet.C_TANTARGYID = :pTantargyID");
|
|
}
|
|
|
|
string commandText = $@"
|
|
SELECT
|
|
CAST(tantargy.ID AS VARCHAR) + CAST(osztalycsoport.ID AS VARCHAR) ID,
|
|
tantargy.C_NEV TantargyNev,
|
|
osztalycsoport.C_NEV OsztalyCsoportNev,
|
|
MAX(szurtTanmenet.C_ORASZAM) OraszamMax,
|
|
COUNT(szurtTanmenet.ID) OraszamCount,
|
|
szurtTanmenet.C_FELTOLTOID FeltoltoID,
|
|
tantargy.ID TantargyID,
|
|
osztalycsoport.ID OsztalyCsoportID,
|
|
foglalkozas.ID FoglalkozasID
|
|
FROM (
|
|
SELECT
|
|
*
|
|
FROM
|
|
T_TANMENET tanmenet
|
|
WHERE
|
|
tanmenet.TOROLT = 'F' AND
|
|
tanmenet.C_FELTOLTOID = :pAlkalmazottID
|
|
{whereTanmenet}
|
|
) szurtTanmenet
|
|
LEFT JOIN
|
|
T_TANTARGY tantargy ON
|
|
tantargy.ID = szurtTanmenet.C_TANTARGYID
|
|
LEFT JOIN
|
|
T_OSZTALYCSOPORT osztalycsoport ON
|
|
osztalycsoport.ID = szurtTanmenet.C_OSZTALYCSOPORTID
|
|
LEFT JOIN
|
|
T_FOGLALKOZAS foglalkozas ON
|
|
foglalkozas.C_TANTARGYID = tantargy.ID AND
|
|
foglalkozas.C_OSZTALYCSOPORTID = osztalycsoport.ID AND
|
|
foglalkozas.C_TANARID = szurtTanmenet.C_FELTOLTOID
|
|
WHERE
|
|
foglalkozas.C_TANARID = :pAlkalmazottID
|
|
GROUP BY
|
|
tantargy.C_NEV,
|
|
osztalycsoport.C_NEV,
|
|
szurtTanmenet.C_FELTOLTOID,
|
|
tantargy.ID,
|
|
osztalycsoport.ID,
|
|
foglalkozas.ID";
|
|
|
|
DataSet ds = GetData(commandText, parameters);
|
|
return ds;
|
|
}
|
|
|
|
/// INFO @DevKornel: Mobil használja
|
|
public DataSet GetTanmenetek(int tantargyId, int osztalyId, int? userId = null, int? foglalkozasId = null, Guid? userIdpUniqueId = null)
|
|
{
|
|
List<CommandParameter> parameters = new List<CommandParameter>
|
|
{
|
|
new CommandParameter("pOsztalyId", osztalyId),
|
|
new CommandParameter("pTantargyId", tantargyId)
|
|
};
|
|
|
|
StringBuilder command = new StringBuilder(@"
|
|
SELECT
|
|
t.ID ID,
|
|
t.C_ORASZAM Oraszam,
|
|
t.C_NEV Nev,
|
|
t.C_ROVIDNEV RovidNev,
|
|
t.C_TEMA Tema,
|
|
t.C_MEGJEGYZES Megjegyzes
|
|
FROM T_TANMENET t
|
|
INNER JOIN T_FOGLALKOZAS f on t.C_TANTARGYID = f.C_TANTARGYID
|
|
AND t.C_OSZTALYCSOPORTID = f.C_OSZTALYCSOPORTID");
|
|
|
|
if (userIdpUniqueId.HasValue)
|
|
{
|
|
parameters.Add(new CommandParameter("pUserIdpUniqueId", userIdpUniqueId));
|
|
command.AppendFormat(@" INNER JOIN T_FELHASZNALO felh on felh.C_IDPEGYEDIAZONOSITO = :pUserIdpUniqueId");
|
|
}
|
|
|
|
command.AppendFormat(@"
|
|
WHERE
|
|
t.C_TANTARGYID = :pTantargyId
|
|
AND t.C_OSZTALYCSOPORTID = :pOsztalyId");
|
|
|
|
if (userId.HasValue)
|
|
{
|
|
parameters.Add(new CommandParameter("pFeltoltoId", userId));
|
|
command.AppendFormat(@" AND f.C_TANARID = :pFeltoltoId");
|
|
command.AppendFormat(@" AND t.C_FELTOLTOID = :pFeltoltoId");
|
|
}
|
|
|
|
if (foglalkozasId.HasValue)
|
|
{
|
|
parameters.Add(new CommandParameter("pFoglalkozasId", foglalkozasId));
|
|
command.AppendFormat(@" AND f.ID = :pFoglalkozasId");
|
|
}
|
|
|
|
if (userIdpUniqueId.HasValue)
|
|
{
|
|
command.AppendFormat(@" AND felh.ID = t.C_FELTOLTOID");
|
|
command.AppendFormat(@" AND felh.ID = f.C_TANARID");
|
|
}
|
|
|
|
return GetData(command.ToString(), parameters);
|
|
}
|
|
|
|
public DataSet GetTantargyTanmenetei(int tantargyId, int tanevId)
|
|
{
|
|
var parameters = new List<CommandParameter>
|
|
{
|
|
new CommandParameter("pTantargyID", tantargyId),
|
|
new CommandParameter("pTanevId", tanevId)
|
|
};
|
|
|
|
var commandText = @"
|
|
SELECT
|
|
T_TANMENET_OSSZES.ID ID,
|
|
T_FELHASZNALO_OSSZES.C_NYOMTATASINEV Tanar,
|
|
T_OSZTALYCSOPORT_OSSZES.C_NEV OsztalyCsoport,
|
|
T_TANMENET_OSSZES.C_ORASZAM Oraszam,
|
|
T_TANMENET_OSSZES.C_TEMA Tema
|
|
FROM T_TANMENET_OSSZES
|
|
INNER JOIN T_FELHASZNALO_OSSZES ON T_TANMENET_OSSZES.C_FELTOLTOID = T_FELHASZNALO_OSSZES.ID
|
|
INNER JOIN T_OSZTALYCSOPORT_OSSZES ON T_TANMENET_OSSZES.C_OSZTALYCSOPORTID = T_OSZTALYCSOPORT_OSSZES.ID
|
|
WHERE
|
|
T_TANMENET_OSSZES.TOROLT = 'F' AND
|
|
T_TANMENET_OSSZES.C_TANTARGYID = :pTantargyID AND
|
|
T_TANMENET_OSSZES.C_TANEVID = :pTanevId
|
|
";
|
|
|
|
var ds = GetData(commandText, parameters);
|
|
return ds;
|
|
}
|
|
|
|
public DataSet GetOsztalyCsoportTanmenetei(int osztalyCsoportId, int tanevId, OktNevelesiKategoriaEnum? kategoria)
|
|
{
|
|
var parameters = new List<CommandParameter> {
|
|
new CommandParameter("pOsztalyCsoportID", osztalyCsoportId),
|
|
new CommandParameter("pTanevId", tanevId)
|
|
};
|
|
|
|
if (kategoria.HasValue)
|
|
{
|
|
parameters.Add(new CommandParameter(nameof(kategoria), (int)kategoria));
|
|
}
|
|
else
|
|
{
|
|
parameters.Add(new CommandParameter(nameof(kategoria), DBNull.Value));
|
|
}
|
|
|
|
string commandText = $@"
|
|
SELECT
|
|
T_TANMENET_OSSZES.ID ID,
|
|
T_FELHASZNALO_OSSZES.C_NYOMTATASINEV Tanar,
|
|
T_TANTARGY_OSSZES.C_NEV Tantargy,
|
|
T_TANMENET_OSSZES.C_TEMA Tema,
|
|
T_TANMENET_OSSZES.C_ORASZAM Ora
|
|
FROM
|
|
T_TANMENET_OSSZES
|
|
INNER JOIN
|
|
T_TANTARGY_OSSZES ON
|
|
T_TANTARGY_OSSZES.ID = T_TANMENET_OSSZES.C_TANTARGYID
|
|
INNER JOIN
|
|
T_FELHASZNALO_OSSZES ON
|
|
T_FELHASZNALO_OSSZES.ID = T_TANMENET_OSSZES.C_FELTOLTOID
|
|
INNER JOIN
|
|
T_OSZTALYCSOPORT_OSSZES ON
|
|
T_OSZTALYCSOPORT_OSSZES.ID = T_TANMENET_OSSZES.C_OSZTALYCSOPORTID AND (T_OSZTALYCSOPORT_OSSZES.C_FELADATKATEGORIAID = @{nameof(kategoria)} OR @{nameof(kategoria)} IS NULL)
|
|
WHERE
|
|
T_OSZTALYCSOPORT_OSSZES.ID = :pOsztalyCsoportID AND
|
|
T_TANMENET_OSSZES.TOROLT = 'F' AND T_OSZTALYCSOPORT_OSSZES.C_TANEVID = :pTanevId
|
|
";
|
|
|
|
DataSet ds = GetData(commandText, parameters);
|
|
return ds;
|
|
}
|
|
|
|
public int? GetTanmenetIdBySorszamEsFoglalkozas(int evesOraSorszam, int foglalkozasId)
|
|
{
|
|
using (var command = new SDA.DataProvider.SDACommand())
|
|
{
|
|
command.Connection = UserContext.Instance.SDAConnection;
|
|
command.Transaction = UserContext.Instance.SDATransaction;
|
|
|
|
command.Parameters.Add("pFoglalkozasId", foglalkozasId);
|
|
command.Parameters.Add("pEvesOraSorszam", evesOraSorszam);
|
|
|
|
command.CommandText = @"
|
|
SELECT
|
|
T_TANMENET.ID
|
|
FROM
|
|
T_TANMENET
|
|
JOIN
|
|
T_FOGLALKOZAS ON
|
|
T_FOGLALKOZAS.C_OSZTALYCSOPORTID = T_TANMENET.C_OSZTALYCSOPORTID AND
|
|
T_FOGLALKOZAS.C_TANTARGYID = T_TANMENET.C_TANTARGYID
|
|
WHERE
|
|
T_TANMENET.TOROLT = 'F' AND
|
|
T_FOGLALKOZAS.TOROLT = 'F' AND
|
|
T_FOGLALKOZAS.ID = :pFoglalkozasId AND
|
|
T_TANMENET.C_ORASZAM = :pEvesOraSorszam";
|
|
|
|
var result = command.ExecuteScalar();
|
|
|
|
if (result != null && result != DBNull.Value)
|
|
{
|
|
return (int)result;
|
|
}
|
|
|
|
return null;
|
|
}
|
|
}
|
|
|
|
public void DeleteTanmenet(int tantargyId, int osztalyCsoportId, int userId)
|
|
{
|
|
using (var command = new SDA.DataProvider.SDACommand())
|
|
{
|
|
command.Connection = UserContext.Instance.SDAConnection;
|
|
command.Transaction = UserContext.Instance.SDATransaction;
|
|
|
|
command.Parameters.Add("pUserId", userId);
|
|
command.Parameters.Add("pTantargyId", tantargyId);
|
|
command.Parameters.Add("pOsztalyCsoportId", osztalyCsoportId);
|
|
|
|
command.CommandText = @"
|
|
UPDATE
|
|
T_TANMENET
|
|
SET
|
|
TOROLT = 'T',
|
|
SERIAL = SERIAL + 1,
|
|
LASTCHANGED = GETDATE(),
|
|
MODIFIER = :pUserId
|
|
WHERE
|
|
C_TANTARGYID = :pTantargyId AND
|
|
C_OSZTALYCSOPORTID = :pOsztalyCsoportId AND
|
|
C_FELTOLTOID = :pUserId";
|
|
|
|
command.ExecuteNonQuery();
|
|
}
|
|
}
|
|
|
|
public string GetTemaEvesOraSorszamhoz(int tantargyId, int osztalyCsoportId, int feltoltoId, int oraEvesSorszama = 0, string elozoTema = null)
|
|
{
|
|
if (string.IsNullOrWhiteSpace(elozoTema))
|
|
{
|
|
using (var command = new SDA.DataProvider.SDACommand())
|
|
{
|
|
command.Connection = UserContext.Instance.SDAConnection;
|
|
command.Transaction = UserContext.Instance.SDATransaction;
|
|
|
|
command.Parameters.Add("pTantargyID", tantargyId);
|
|
command.Parameters.Add("pOsztalyCsoportID", osztalyCsoportId);
|
|
command.Parameters.Add("pFeltoltoID", feltoltoId);
|
|
command.Parameters.Add("pOraEvesSorszama", oraEvesSorszama);
|
|
|
|
command.CommandText = @"
|
|
SELECT
|
|
C_TEMA Tema
|
|
FROM
|
|
T_TANMENET
|
|
WHERE
|
|
T_TANMENET.C_TANTARGYID = @pTantargyID AND
|
|
T_TANMENET.C_OSZTALYCSOPORTID = @pOsztalyCsoportID AND
|
|
T_TANMENET.C_FELTOLTOID = @pFeltoltoID AND
|
|
T_TANMENET.C_ORASZAM = @pOraEvesSorszama";
|
|
|
|
var result = command.ExecuteScalar();
|
|
|
|
if (result != null && result != DBNull.Value)
|
|
{
|
|
return result.ToString();
|
|
}
|
|
|
|
return string.Empty;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
using (var command = new SDA.DataProvider.SDACommand())
|
|
{
|
|
command.Connection = UserContext.Instance.SDAConnection;
|
|
command.Transaction = UserContext.Instance.SDATransaction;
|
|
|
|
command.Parameters.Add("pTantargyID", tantargyId);
|
|
command.Parameters.Add("pOsztalyCsoportID", osztalyCsoportId);
|
|
command.Parameters.Add("pFeltoltoID", feltoltoId);
|
|
command.Parameters.Add("pOraEvesSorszama", oraEvesSorszama);
|
|
command.Parameters.Add("pElozoTema", elozoTema);
|
|
|
|
command.CommandText = @"
|
|
SELECT TOP 1
|
|
T_TANMENET.C_TEMA Tema
|
|
FROM
|
|
T_TANMENET
|
|
OUTER APPLY (
|
|
SELECT TOP 1
|
|
T_TANMENET.C_ORASZAM
|
|
FROM
|
|
T_TANMENET
|
|
WHERE
|
|
T_TANMENET.C_TANTARGYID = @pTantargyID AND
|
|
T_TANMENET.C_OSZTALYCSOPORTID = @pOsztalyCsoportID AND
|
|
T_TANMENET.C_FELTOLTOID = @pFeltoltoID AND
|
|
T_TANMENET.C_ORASZAM <= @pOraEvesSorszama AND
|
|
T_TANMENET.C_TEMA = @pElozoTema
|
|
ORDER BY T_TANMENET.C_ORASZAM DESC
|
|
) elozo
|
|
WHERE
|
|
T_TANMENET.C_TANTARGYID = @pTantargyID AND
|
|
T_TANMENET.C_OSZTALYCSOPORTID = @pOsztalyCsoportID AND
|
|
T_TANMENET.C_FELTOLTOID = @pFeltoltoID AND
|
|
T_TANMENET.C_ORASZAM > elozo.C_ORASZAM
|
|
ORDER BY T_TANMENET.C_ORASZAM";
|
|
|
|
var result = command.ExecuteScalar();
|
|
|
|
if (result != null && result != DBNull.Value)
|
|
{
|
|
return result.ToString();
|
|
}
|
|
|
|
return string.Empty;
|
|
}
|
|
}
|
|
}
|
|
|
|
public ITanmenet Get()
|
|
{
|
|
return Tanmenet.GiveAnInstance();
|
|
}
|
|
|
|
public ITanmenet Get(int tanuloId)
|
|
{
|
|
var entity = Tanmenet.GiveAnInstance();
|
|
entity.LoadByID(tanuloId);
|
|
return entity;
|
|
}
|
|
|
|
public void FullUpdate(ITanmenet dto)
|
|
{
|
|
var entity = dto as Tanmenet;
|
|
entity.FullUpdate();
|
|
|
|
DalHelper.Commit();
|
|
}
|
|
|
|
public void Update(ITanmenet dto)
|
|
{
|
|
var entity = dto as Tanmenet;
|
|
entity.Update();
|
|
|
|
DalHelper.Commit();
|
|
}
|
|
|
|
public void Insert(ITanmenet dto)
|
|
{
|
|
var entity = dto as Tanmenet;
|
|
entity.Insert();
|
|
|
|
dto.ID = entity.ID;
|
|
DalHelper.Commit();
|
|
}
|
|
|
|
public void Delete(int id)
|
|
{
|
|
var entity = Tanmenet.GiveAnInstance();
|
|
entity.LoadByID(id);
|
|
entity.TanitasiOra.RemoveAll();
|
|
entity.Delete();
|
|
|
|
DalHelper.Commit();
|
|
}
|
|
|
|
public DataSet GetTanmenetDataSet(int tanevId, int? alkalmazottId = null, int? oktNevelesiKategoriaId = null)
|
|
{
|
|
var commandParameterList = new List<CommandParameter>
|
|
{
|
|
new CommandParameter("pTanevId", tanevId),
|
|
alkalmazottId.IsEntityId() ?
|
|
new CommandParameter("pAlkalmazottId", alkalmazottId.Value) :
|
|
new CommandParameter("pAlkalmazottId", DBNull.Value),
|
|
oktNevelesiKategoriaId.IsEntityId() ?
|
|
new CommandParameter("pOktNevelesiKategoriaId", oktNevelesiKategoriaId.Value) :
|
|
new CommandParameter("pOktNevelesiKategoriaId", DBNull.Value)
|
|
};
|
|
|
|
const string commandText = @"
|
|
SELECT
|
|
tm.ID AS Id
|
|
,tm.C_NEV AS Nev
|
|
,tm.C_BEJEGYZESIDEJE AS BejegyzesIdeje
|
|
,tm.C_ORASZAM AS OraSorszam
|
|
,tm.C_TEMA AS Tema
|
|
,tm.C_IMPORTALT AS Importalt
|
|
,f.ID AS TantargyfelosztasId
|
|
,(ocs.C_NEV + ' - ' + tgy.C_NEV) AS TantargyfelosztasNevAlkalmazottNelkul
|
|
FROM T_TANMENET_OSSZES tm
|
|
INNER JOIN T_TANTARGY_OSSZES tgy ON tgy.ID = tm.C_TANTARGYID AND tgy.C_TANEVID = tm.C_TANEVID AND tgy.TOROLT = 'F'
|
|
INNER JOIN T_FELHASZNALO_OSSZES fh ON fh.ID = tm.C_FELTOLTOID AND fh.C_TANEVID = tm.C_TANEVID AND fh.TOROLT = 'F'
|
|
INNER JOIN T_ALKALMAZOTT_OSSZES a ON a.ID = fh.ID AND a.C_ALTANEVID = tm.C_TANEVID AND a.TOROLT = 'F'
|
|
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = tm.C_OSZTALYCSOPORTID AND ocs.C_TANEVID = tm.C_TANEVID AND ocs.TOROLT = 'F' AND (:pOktNevelesiKategoriaId IS NULL OR ocs.C_FELADATKATEGORIAID = :pOktNevelesiKategoriaId)
|
|
INNER JOIN T_FOGLALKOZAS_OSSZES f ON f.C_TANTARGYID = tgy.ID AND f.C_TANARID = fh.ID AND f.C_OSZTALYCSOPORTID = ocs.ID AND f.C_TANEVID = tm.C_TANEVID AND f.TOROLT = 'F'
|
|
WHERE (:pAlkalmazottId IS NULL OR tm.C_FELTOLTOID = :pAlkalmazottId)
|
|
AND tm.C_TANEVID = :pTanevId
|
|
AND tm.TOROLT = 'F'
|
|
";
|
|
|
|
DataSet dataSet = GetData(commandText, commandParameterList);
|
|
return dataSet;
|
|
}
|
|
}
|
|
}
|