kreta/Kreta.DataAccess.Migrations/DBScripts/Database/dbo/Stored procedures/uspGetNemNaplozottOrarendiOrak.sql
2024-03-13 00:33:46 +01:00

178 lines
No EOL
8.7 KiB
Transact-SQL

DROP PROCEDURE IF EXISTS uspGetNemNaplozottOrarendiOrak
GO
CREATE PROCEDURE uspGetNemNaplozottOrarendiOrak
@IntezmenyId int
,@TanevId int
,@IdoszakKezdete datetime
,@IdoszakVege datetime
,@TanarId int = NULL
,@OsztalyCsoportId int = NULL
,@TantargyId int = NULL
,@CsakAHelyettesiteseim bit = 0
,@HelyettesitettOraimIs bit = 0
,@pFeladatKategoriaId int = NULL
,@pDatumTol datetime = NULL
,@pOraszamTol int = NULL
,@pIdopontTol datetime = NULL
,@pDatumIg datetime = NULL
,@pOraszamIg int = NULL
,@pIdopontIg datetime = NULL
,@pFeladatEllatasiHelyId int = NULL
AS BEGIN
SET NOCOUNT ON;
SET DATEFIRST 1;
SELECT
ot.C_ORARENDIORAID AS Id,
ot.C_ORARENDIORAID AS ORARENDIID,
ot.C_BONTOTT AS Bontott,
ot.C_HETIREND AS Hetirend,
ot.C_HETNAPJA AS HetNapja,
ot.C_HETSORSZAMA AS HetSorszam,
CAST(ot.C_ORAERVENYESSEGKEZDETE AS DATETIME) AS ErvenyessegKezdete,
CAST(ot.C_ORAERVENYESSEGVEGE AS DATETIME) AS ErvenyessegVege,
CAST(ot.C_DATUM AS DATETIME) + CAST(ot.C_ORAKEZDETE AS DATETIME) AS OraKezdete,
ot.C_DATUM AS OraKezdeteDate,
CONVERT(varchar(5), CAST(ot.C_ORAKEZDETE AS DATETIME), 108) AS OraKezdeteTimeText,
CAST(ot.C_DATUM AS DATETIME) + CAST(ot.C_ORAVEGE AS DATETIME) AS OraVege,
IIF(ot.C_CSENGETESIRENDID IS NOT NULL, ot.C_ORASZAM, NULL) AS Oraszam,
tt.C_NEV AS TargyNev,
COALESCE(tt.C_ROVIDNEV, tt.C_NEV) AS TargyNevForMobile,
ISNULL(tt.C_NEVNYOMTATVANYBAN, tt.C_NEV) AS TargyNevForNyomtatvany,
tt.C_TARGYKATEGORIA AS TargykategoriaID,
'F' AS Megtartott,
csr.ID AS CsengetesiRendOraID,
ot.C_CSENGETESIRENDID AS CsengetesiRendID,
ot.C_MAXORASZAM AS MaxNapiOraszam,
ocs.C_NEV AS OsztalyNev,
'' AS MegjelenesOka,
tanar.C_NYOMTATASINEV AS TanarNev,
tanar.C_OKTATASIAZONOSITO AS TanarOktAzon,
terem.C_NEV AS TeremNev,
'OrarendiOra' AS OraTipus,
'F' AS Hianyzas,
'F' AS Keses,
'F' AS Ures,
ot.C_HELYETTESTANAROKID AS HelyettesitoTanarID,
helyettes.C_NYOMTATASINEV AS HelyettesitoTanarNev,
ot.C_HELYETTESITESID AS HelyettesitesId,
ot.C_TANARID AS TanarID,
NULL AS AdminAltalKiirt,
ot.C_ORARENDIORAGROUPID AS GroupId,
NULL AS Tema,
ot.C_TANTARGYID AS TantargyId,
ot.C_OSZTALYCSOPORTID AS OsztCsopId,
IIF(ot.C_HELYETTESTANAROKID IS NOT NULL, tanar.C_NYOMTATASINEV, NULL) AS HelyettesitettPedagogusNev,
CONVERT(nvarchar(25), CAST(ot.C_DATUM AS DATETIME), 102) AS OraKezdeteDateST,
DATEPART(w, ot.C_DATUM) + 1407 AS HetNapjaValos,
CAST(ot.C_DATUM AS DATETIME) AS Datum,
helyettes.C_OKTATASIAZONOSITO AS HelyettesitoTanarOktAzon
FROM T_ORARENDTELJES_OSSZES ot
LEFT JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = ot.C_OSZTALYCSOPORTID --AND ocs.C_INTEZMENYID = ot.C_INTEZMENYID and ocs.C_TANEVID = ot.C_TANEVID --AND ocs.TOROLT = 'F'
LEFT JOIN T_CSENGETESIRENDORA_OSSZES csr ON csr.C_CSENGETESIRENDID = ot.C_CSENGETESIRENDID AND csr.C_ORASZAM = ot.C_ORASZAM --AND csr.C_INTEZMENYID = ot.C_INTEZMENYID AND csr.C_TANEVID = ot.C_TANEVID AND csr.TOROLT = 'F'
LEFT JOIN T_TANTARGY_OSSZES tt ON tt.ID = ot.C_TANTARGYID AND tt.C_INTEZMENYID = ot.C_INTEZMENYID AND tt.C_TANEVID = ot.C_TANEVID AND tt.TOROLT = 'F'
LEFT JOIN T_FELHASZNALO_OSSZES tanar ON tanar.ID = ot.C_TANARID
LEFT JOIN T_FELHASZNALO_OSSZES helyettes ON helyettes.ID = ot.C_HELYETTESTANAROKID --AND helyettes.TOROLT = 'F'
LEFT JOIN T_TEREM_OSSZES terem ON terem.ID = ot.C_TEREMID
WHERE ot.C_INTEZMENYID = @IntezmenyId
AND ot.C_TANEVID = @TanevId
AND ot.C_DATUM >= @IdoszakKezdete
AND ot.C_DATUM <= @IdoszakVege
AND (CAST(ot.C_DATUM AS DATETIME) + CAST(ot.C_ORAVEGE AS DATETIME)) >= CAST(@IdoszakKezdete AS DATE)
AND (CAST(ot.C_DATUM AS DATETIME) + CAST(ot.C_ORAKEZDETE AS DATETIME)) <= CAST(@IdoszakVege AS DATE)
AND ot.C_FELADATKATEGORIAID = CASE WHEN @pFeladatKategoriaId IS NOT NULL THEN @pFeladatKategoriaId ELSE ot.C_FELADATKATEGORIAID END
AND ot.C_OSZTALYCSOPORTID = CASE WHEN @OsztalyCsoportId IS NOT NULL THEN @OsztalyCsoportId ELSE ot.C_OSZTALYCSOPORTID END
AND ocs.C_FELADATELLATASIHELYID = CASE WHEN @pFeladatEllatasiHelyId IS NOT NULL THEN @pFeladatEllatasiHelyId ELSE ocs.C_FELADATELLATASIHELYID END
AND ot.C_TANTARGYID = CASE WHEN @TantargyId IS NOT NULL THEN @TantargyId ELSE ot.C_TANTARGYID END
AND (@TanarId IS NULL OR (ot.C_TANARID = @TanarId OR ot.C_HELYETTESTANAROKID = @TanarId))
-- ha 0 mindkét paraméter, adja vissza a tanar osszes sajat nem naplozott orajat + azokat ahol ő volt a helyettesito
AND (@TanarId IS NULL OR ((@CsakAHelyettesiteseim = 1 OR @HelyettesitettOraimIs = 1) OR (ot.C_HELYETTESTANAROKID = @TanarId OR (ot.C_TANARID = @TanarId AND ot.C_HELYETTESTANAROKID IS NULL))))
-- ha csak a "csak a helyettesiteseim" parameter igaz, adja vissza a tanar azon nem naplozott orait, ahol ő volt a helyettesito
AND (@TanarId IS NULL OR ((@CsakAHelyettesiteseim = 0 OR @HelyettesitettOraimIs = 1) OR (ot.C_HELYETTESTANAROKID = @TanarId)))
-- ha csak a "helyettesitett oram is" parameter igaz, adja vissza a tanar sajat nem naplozott orait + azokat ahol ő volt a helyettesito + ahol őt helyettesítették
AND (@TanarId IS NULL OR ((@CsakAHelyettesiteseim = 1 OR @HelyettesitettOraimIs = 0) OR (ot.C_HELYETTESTANAROKID IS NOT NULL OR ot.C_TANARID = @TanarId)))
-- ha a "csak a helyettesiteseim" es a "helyettesitett oraim is" parameter is igaz, adja vissza azokat a nem naplozott orakat ahol a tanar volt a helyettesito, vagy őt helyettesítették
AND (@TanarId IS NULL OR ((@CsakAHelyettesiteseim = 0 OR @HelyettesitettOraimIs = 0) OR (ot.C_HELYETTESTANAROKID IS NOT NULL)))
-- inkább így kellene
--AND (@TanarId IS NULL OR ((@CsakAHelyettesiteseim = 0 OR @HelyettesitettOraimIs = 0) OR (ot.C_HELYETTESTANAROKID = @TanarId OR (ot.C_TANARID = @TanarId AND ot.C_HELYETTESTANAROKID IS NOT NULL))))
AND (@pDatumTol IS NULL OR ot.C_DATUM >= CAST(@pDatumTol AS DATE))
AND (@pDatumIg IS NULL OR ot.C_DATUM <= CAST(@pDatumIg AS DATE))
AND (@pOraszamTol IS NULL OR ot.C_ORASZAM >= @pOraszamTol)
AND (@pOraszamIg IS NULL OR ot.C_ORASZAM <= @pOraszamIg)
AND (@pIdopontTol IS NULL OR ot.C_ORAKEZDETE >= CAST(@pIdopontTol AS TIME))
AND (@pIdopontIg IS NULL OR ot.C_ORAKEZDETE <= CAST(@pIdopontIg AS TIME))
AND NOT EXISTS(
SELECT *
FROM dbo.T_TANITASIORA_OSSZES tt
WHERE 1 = 1
AND tt.TOROLT = 'F'
AND tt.C_INTEZMENYID = ot.C_INTEZMENYID
AND tt.C_TANEVID = ot.C_TANEVID
AND tt.C_DATUM = CAST(ot.C_DATUM AS DATETIME)
AND tt.C_OSZTALYCSOPORTID = ot.C_OSZTALYCSOPORTID
AND tt.C_TANTARGYID = ot.C_TANTARGYID
AND tt.C_TANARID = ot.C_TANARID
AND (
tt.C_ORASZAM = ot.C_ORASZAM
OR
(
tt.C_ORAKEZDETE = CAST(ot.C_DATUM AS DATETIME) + CAST(ot.C_ORAKEZDETE AS DATETIME)
AND
tt.C_ORAVEGE = CAST(ot.C_DATUM AS DATETIME) + CAST(ot.C_ORAVEGE AS DATETIME)
)
)
)
-- Iktatás adatok
SELECT
@OsztalyCsoportId AS OsztalyId
,ocs.C_EVFOLYAMTIPUSA AS Evfolyam
,ocs.C_FELADATELLATASIHELYID AS FeladatEllatasiHelyId
,ocs.C_KEPZESIFORMA AS KepzesiForma
,o.C_OSZTALYFONOKID AS OsztalyFonokId
,o.C_TANTERVID AS TantervId
,o.C_SZAKMACSOPORT AS SzakmaCsoport
,o.C_AGAZAT AS Agazat
,o.C_SZAKKEPESITES AS Szakkepesites
,o.C_RESZSZAKKEPESITES AS Reszszakkepesites
,o.C_AGAZATUJSZKTTIPUSID AS UjSzktAgazat
,o.C_SZAKMATIPUSID AS UjSzktSzakma
,o.C_SZAKMAIRANYTIPUSID AS UjSzktSzakmairany
,o.C_TANULMANYITERULETNKTTIPUSID AS NktTanulmanyiTerulet
,o.C_SZAKKEPESITESNKTTIPUSID AS NktSzakkepesites
,o.C_SZAKIRANYNKTTIPUSID AS NktSzakirany
,ocs.C_KERESZTFELEVES AS OJCSJKeresztfeleves
,ocs.C_ISTECHNIKAI AS OJTechnikaiOsztaly
,o.C_NEMZETISEGI AS OJNemzetisegi
,o.C_KETTANNYELVU AS OJKettannyelvu
,o.C_NYELVIELOKESZITO AS OJNyelviElokeszito
,ocs.C_ISGYOGYPEDAGOGIAILOGOPEDIAI AS OJIsGyogypedagogiaiLogopediai
,o.C_SPORT AS OJSportOsztaly
,o.C_AJPROGRAM AS OJAranyJanosProgram
FROM T_OSZTALYCSOPORT_OSSZES ocs
INNER JOIN T_OSZTALY_OSSZES o ON o.ID = ocs.ID AND o.TOROLT = 'F'
AND o.C_ALTANEVID = ocs.C_TANEVID
AND o.C_ALINTEZMENYID = ocs.C_INTEZMENYID
WHERE ocs.ID = @OsztalyCsoportId
AND ocs.TOROLT = 'F'
AND ocs.C_TANEVID = @TanevId
AND ocs.C_INTEZMENYID = @IntezmenyId
-- Tanár iktatás adatok
SELECT
f.ID AS TanarId
,f.C_OKTATASIAZONOSITO AS TanarOktAzon
FROM T_ALKALMAZOTT_OSSZES a
INNER JOIN T_FELHASZNALO_OSSZES f ON f.ID = a.ID AND f.TOROLT = 'F'
AND a.C_ALTANEVID = f.C_TANEVID
AND a.C_ALINTEZMENYID = f.C_INTEZMENYID
WHERE a.TOROLT = 'F'
AND a.C_ALINTEZMENYID = @IntezmenyId
AND a.C_ALTANEVID = @TanevId
AND f.ID = CASE WHEN @TanarId IS NOT NULL THEN @TanarId ELSE f.ID END
END
GO