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