142 lines
5.2 KiB
Transact-SQL
142 lines
5.2 KiB
Transact-SQL
DROP PROCEDURE IF EXISTS uspValidateCsoportbaSorolasModositasa
|
|
GO
|
|
|
|
CREATE PROCEDURE dbo.uspValidateCsoportbaSorolasModositasa
|
|
@pTanevId int
|
|
,@pCsoportId int
|
|
,@pTanuloId int
|
|
,@pDatumTol datetime
|
|
,@pDatumIg datetime
|
|
,@pIsTorolhetosegVizsgalat bit
|
|
,@pFeladatKategoriaId int = NULL
|
|
AS
|
|
BEGIN
|
|
SET NOCOUNT ON;
|
|
|
|
DECLARE @osztalybontasId int = (SELECT C_OSZTALYBONTASID FROM T_CSOPORT WHERE ID = @pCsoportId)
|
|
|
|
CREATE TABLE #hibak (Oka int, Datum datetime, Darab int)
|
|
|
|
IF @pIsTorolhetosegVizsgalat = 0
|
|
BEGIN
|
|
INSERT INTO #hibak
|
|
SELECT
|
|
1 AS Oka -- 'a tanuló már tagja az adott csoportnak'
|
|
,IIF(tcs.C_BELEPESDATUM <= @pDatumTol, @pDatumTol, tcs.C_BELEPESDATUM) AS Datum
|
|
,NULL AS Darab
|
|
FROM T_TANULOCSOPORT_OSSZES tcs
|
|
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = tcs.C_OSZTALYCSOPORTID
|
|
AND ocs.TOROLT = 'F'
|
|
AND (@pFeladatKategoriaId IS NULL OR ocs.C_FELADATKATEGORIAID = @pFeladatKategoriaId)
|
|
WHERE tcs.TOROLT = 'F'
|
|
AND tcs.C_TANEVID = @pTanevId
|
|
AND tcs.C_TANULOID = @pTanuloId
|
|
AND tcs.C_OSZTALYCSOPORTID = @pCsoportId
|
|
AND (tcs.C_BELEPESDATUM <= @pDatumIg AND (tcs.C_KILEPESDATUM IS NULL OR tcs.C_KILEPESDATUM >= @pDatumTol))
|
|
|
|
INSERT INTO #hibak
|
|
SELECT
|
|
2 AS Oka -- 'a tanuló nem tagja egy osztálynak sem'
|
|
,MIN(C_NAPDATUMA) AS Datum
|
|
,NULL AS Darab
|
|
FROM T_NAPTARINAP_OSSZES nn
|
|
WHERE nn.TOROLT = 'F'
|
|
AND nn.C_TANEVID = @pTanevId
|
|
AND nn.C_NAPDATUMA BETWEEN @pDatumTol AND @pDatumIg
|
|
AND NOT EXISTS
|
|
(
|
|
SELECT 1
|
|
FROM T_TANULOCSOPORT_OSSZES tcs
|
|
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON tcs.C_OSZTALYCSOPORTID = ocs.ID
|
|
AND ocs.TOROLT = 'F'
|
|
AND (@pFeladatKategoriaId IS NULL OR ocs.C_FELADATKATEGORIAID = @pFeladatKategoriaId)
|
|
INNER JOIN T_OSZTALY_OSSZES o ON ocs.ID = o.ID
|
|
AND o.TOROLT = 'F'
|
|
WHERE tcs.TOROLT = 'F'
|
|
AND tcs.C_TANEVID = @pTanevId
|
|
AND tcs.C_TANULOID = @pTanuloId
|
|
AND nn.C_NAPDATUMA >= tcs.C_BELEPESDATUM
|
|
AND (nn.C_NAPDATUMA <= tcs.C_KILEPESDATUM OR tcs.C_KILEPESDATUM IS NULL)
|
|
)
|
|
HAVING COUNT(1) > 0
|
|
IF @osztalybontasId IS NOT NULL
|
|
BEGIN
|
|
INSERT INTO #hibak
|
|
SELECT
|
|
3 AS Oka -- 'a tanuló nem tagja az osztálybontott csoport osztályának'
|
|
,MIN(C_NAPDATUMA) AS Datum
|
|
,NULL AS Darab
|
|
FROM T_NAPTARINAP_OSSZES nn
|
|
WHERE nn.TOROLT = 'F'
|
|
AND nn.C_TANEVID = @pTanevId
|
|
AND nn.C_NAPDATUMA BETWEEN @pDatumTol AND @pDatumIg
|
|
AND NOT EXISTS
|
|
(
|
|
SELECT 1
|
|
FROM T_TANULOCSOPORT_OSSZES tcs
|
|
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON tcs.C_OSZTALYCSOPORTID = ocs.ID
|
|
AND ocs.TOROLT = 'F'
|
|
AND (@pFeladatKategoriaId IS NULL OR ocs.C_FELADATKATEGORIAID = @pFeladatKategoriaId)
|
|
INNER JOIN T_OSZTALY_OSSZES o ON ocs.ID = o.ID
|
|
AND o.TOROLT = 'F'
|
|
AND o.ID = @osztalybontasId
|
|
WHERE tcs.TOROLT = 'F'
|
|
AND tcs.C_TANEVID = @pTanevId
|
|
AND tcs.C_TANULOID = @pTanuloId
|
|
AND nn.C_NAPDATUMA >= tcs.C_BELEPESDATUM
|
|
AND (nn.C_NAPDATUMA <= tcs.C_KILEPESDATUM OR tcs.C_KILEPESDATUM IS NULL)
|
|
)
|
|
HAVING COUNT(1) > 0
|
|
END
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
INSERT INTO #hibak
|
|
SELECT
|
|
4 AS Oka -- 'van a csoporthoz mulasztása'
|
|
,NULL AS Datum
|
|
,COUNT(mul.ID) AS Darab
|
|
FROM T_TANULOCSOPORT_OSSZES tcs
|
|
INNER JOIN T_TANULOMULASZTAS_OSSZES mul ON mul.C_ORATANULOIID = tcs.C_TANULOID
|
|
AND mul.TOROLT = 'F'
|
|
INNER JOIN T_TANITASIORA_OSSZES tano ON tano.ID = mul.C_TANITASIORAKID
|
|
AND tano.TOROLT = 'F'
|
|
AND tano.C_OSZTALYCSOPORTID = tcs.C_OSZTALYCSOPORTID
|
|
AND tano.C_DATUM >= @pDatumTol
|
|
AND tano.C_DATUM <= @pDatumIg
|
|
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = tcs.C_OSZTALYCSOPORTID
|
|
AND ocs.TOROLT = 'F'
|
|
AND (@pFeladatKategoriaId IS NULL OR ocs.C_FELADATKATEGORIAID = @pFeladatKategoriaId)
|
|
WHERE tcs.TOROLT = 'F'
|
|
AND tcs.C_TANEVID = @pTanevId
|
|
AND tcs.C_TANULOID = @pTanuloId
|
|
AND tcs.C_OSZTALYCSOPORTID = @pCsoportId
|
|
AND (tcs.C_BELEPESDATUM <= @pDatumIg AND (tcs.C_KILEPESDATUM IS NULL OR tcs.C_KILEPESDATUM >= @pDatumTol))
|
|
GROUP BY ocs.ID
|
|
|
|
INSERT INTO #hibak
|
|
SELECT
|
|
5 AS Oka -- 'van a csoporthoz értékelés'
|
|
,NULL AS Datum
|
|
,COUNT(ert.ID) AS Darab
|
|
FROM T_TANULOCSOPORT_OSSZES tcs
|
|
INNER JOIN T_TANULOERTEKELES_OSSZES ert ON ert.C_TANULOID = tcs.C_TANULOID
|
|
AND ert.C_OSZTALYCSOPORTID = tcs.C_OSZTALYCSOPORTID
|
|
AND ert.TOROLT = 'F'
|
|
AND ert.C_DATUM >= @pDatumTol
|
|
AND ert.C_DATUM <= @pDatumIg
|
|
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = tcs.C_OSZTALYCSOPORTID
|
|
AND ocs.TOROLT = 'F'
|
|
AND (@pFeladatKategoriaId IS NULL OR ocs.C_FELADATKATEGORIAID = @pFeladatKategoriaId)
|
|
WHERE tcs.TOROLT = 'F'
|
|
AND tcs.C_TANEVID = @pTanevId
|
|
AND tcs.C_TANULOID = @pTanuloId
|
|
AND tcs.C_OSZTALYCSOPORTID = @pCsoportId
|
|
AND (tcs.C_BELEPESDATUM <= @pDatumIg AND (tcs.C_KILEPESDATUM IS NULL OR tcs.C_KILEPESDATUM >= @pDatumTol))
|
|
GROUP BY ocs.ID
|
|
END
|
|
|
|
SELECT * FROM #hibak
|
|
|
|
END
|
|
GO |