125 lines
No EOL
4.8 KiB
Transact-SQL
125 lines
No EOL
4.8 KiB
Transact-SQL
IF OBJECT_ID('dbo.sp_GetHelyettesitesekAjanlasa') IS NOT NULL BEGIN
|
|
DROP PROCEDURE dbo.sp_GetHelyettesitesekAjanlasa
|
|
END
|
|
GO
|
|
|
|
CREATE PROCEDURE [dbo].[sp_GetHelyettesitesekAjanlasa]
|
|
@intezmenyId int,
|
|
@tanevId int,
|
|
@pHelyettesitettOrarendiOraId int,
|
|
@pHelyettesitesDatuma DATE,
|
|
@pSzakszeruId int = 1494,
|
|
@pNemSzakszeruId int = 1495,
|
|
@pOsszevonas int = 1496,
|
|
@pFokozatNa int = 3040
|
|
AS
|
|
BEGIN
|
|
SET NOCOUNT ON;
|
|
|
|
DECLARE @OraKezdet DATETIME; DECLARE @Oraveg DATETIME;
|
|
SELECT @OraKezdet = C_ORAKEZDETE, @Oraveg = C_ORAVEGE FROM T_ORARENDIORA WHERE ID = @pHelyettesitettOrarendiOraId
|
|
|
|
DECLARE @Datum DATETIME = (SELECT CAST(@pHelyettesitesDatuma AS date))
|
|
DECLARE @DatumVeg DATETIME = (SELECT DATEADD(DAY, 1, (SELECT CAST(@pHelyettesitesDatuma AS date))))
|
|
|
|
CREATE TABLE #OrarendTable (
|
|
Id int
|
|
,ORARENDIID int
|
|
,Datum datetime
|
|
,Bontott char(1)
|
|
,Hetirend int
|
|
,HetNapja int
|
|
,HetSorszam int
|
|
,ErvenyessegKezdete datetime
|
|
,ErvenyessegVege datetime
|
|
,OraKezdete datetime
|
|
,OraVege datetime
|
|
,Oraszam int
|
|
,TargyNev nvarchar(300)
|
|
,TargyNevForMobile nvarchar(300)
|
|
,TargykategoriaID int
|
|
,Megtartott char(1)
|
|
,CsengetesiRendOraID int
|
|
,CsengetesiRendID int
|
|
,MaxNapiOraszam int
|
|
,OsztalyNev nvarchar(255)
|
|
,TanevRendOsztalyCsoportId int
|
|
,MegjelenesOka nvarchar(300)
|
|
,TanarNev nvarchar(255)
|
|
,TeremNev nvarchar(255)
|
|
,TeremId int
|
|
,OraTipus nvarchar(200)
|
|
,Hianyzas char(1)
|
|
,Keses char(1)
|
|
,Ures char(1)
|
|
,HelyettesitoTanarID int
|
|
,HelyettesitoTanarNev nvarchar(255)
|
|
,HelyettesitesId int
|
|
,TanarID int
|
|
,AdminAltalKiirt char(1)
|
|
,GroupId int
|
|
,Tema nvarchar(max)
|
|
,TantargyId int
|
|
,OsztCsopId int
|
|
,INDEX IX01 CLUSTERED (OraTipus, OraKezdete, OraVege)
|
|
)
|
|
|
|
INSERT INTO #OrarendTable (
|
|
Id,ORARENDIID,Datum,Bontott,Hetirend,HetNapja,HetSorszam,ErvenyessegKezdete,ErvenyessegVege,OraKezdete,OraVege,Oraszam,
|
|
TargyNev,TargyNevForMobile,TargykategoriaID,Megtartott,CsengetesiRendOraID,CsengetesiRendID,MaxNapiOraszam,OsztalyNev,TanevRendOsztalyCsoportId,
|
|
MegjelenesOka,TanarNev,TeremNev,TeremId,OraTipus,Hianyzas,Keses,Ures,HelyettesitoTanarID,HelyettesitoTanarNev,HelyettesitesId,TanarID,AdminAltalKiirt,GroupId,Tema,TantargyId,OsztCsopId)
|
|
EXEC sp_GetOrarend
|
|
@pIntezmenyId = @IntezmenyId
|
|
,@pTanevId = @TanevId
|
|
,@pIdoszakKezdete = @Datum
|
|
,@pIdoszakVege = @DatumVeg
|
|
,@pTanarId = NULL
|
|
,@pIsHelyettesitesNelkul = 0
|
|
,@pOsztalyCsoportId = NULL
|
|
,@pTanuloId = NULL
|
|
,@pTantargyId = NULL
|
|
,@pTeremId = NULL
|
|
,@pCsakOrarendiOrak = 0
|
|
,@pIsNapirend = NULL
|
|
|
|
SELECT
|
|
NULL as ID
|
|
,f.ID as TanarId
|
|
,CASE
|
|
MAX(CASE
|
|
WHEN ot.ID IS NULL AND ma.C_BESOROLASIFOKOZAT = @pFokozatNa THEN '2'
|
|
WHEN ot.ID IS NULL AND ma.C_BESOROLASIFOKOZAT != @pFokozatNa THEN '1'
|
|
WHEN ot.ID IS NOT NULL AND ot.ID = ot.ORARENDIID AND ot.HelyettesitesId IS NULL THEN '3'
|
|
WHEN ot.ID IS NOT NULL AND ot.ID != ot.ORARENDIID AND ot.Megtartott = 'T' THEN '3'
|
|
WHEN ot.ID IS NOT NULL AND ot.ID != ot.ORARENDIID AND ot.Megtartott = 'F' AND ma.C_BESOROLASIFOKOZAT = @pFokozatNa THEN '2'
|
|
WHEN ot.ID IS NOT NULL AND ot.ID != ot.ORARENDIID AND ot.Megtartott = 'F' AND ma.C_BESOROLASIFOKOZAT != @pFokozatNa THEN '1'
|
|
WHEN ot.ID IS NOT NULL AND ot.ID = ot.ORARENDIID AND ot.HelyettesitesId IS NOT NULL AND a.ID = ot.TanarID AND ma.C_BESOROLASIFOKOZAT = @pFokozatNa THEN '2'
|
|
WHEN ot.ID IS NOT NULL AND ot.ID = ot.ORARENDIID AND ot.HelyettesitesId IS NOT NULL AND a.ID = ot.TanarID AND ma.C_BESOROLASIFOKOZAT != @pFokozatNa THEN '1'
|
|
WHEN ot.ID IS NOT NULL AND ot.ID = ot.ORARENDIID AND ot.HelyettesitesId IS NOT NULL AND a.ID = ot.HelyettesitoTanarID THEN '3'
|
|
END)
|
|
WHEN 1 THEN @pSzakszeruId
|
|
WHEN 2 THEN @pNemSzakszeruId
|
|
WHEN 3 THEN @pOsszevonas
|
|
END as HelyettesitesTipusId
|
|
,ot.TantargyId as TantargyId
|
|
,ot.OsztCsopId as OsztalyCsoportId
|
|
,f.C_NYOMTATASINEV as TanarNev
|
|
,t.C_NEV as TantargyNev
|
|
,ot.OsztalyNev AS OsztalycsoportNev
|
|
,@pHelyettesitettOrarendiOraId AS HelyettesitettOrarendiOraId
|
|
,@pHelyettesitesDatuma AS HelyettesitesDatuma
|
|
FROM T_ALKALMAZOTT a
|
|
INNER JOIN T_FELHASZNALO f on f.ID = a.ID AND f.TOROLT = 'F'
|
|
INNER JOIN T_MUNKAUGYIADATOK ma ON ma.C_ALKALMAZOTTID = a.ID AND ma.C_BETOLTETLENALLASHELY = 'F' AND ma.C_TARTOSHELYETTESITES = 'F' AND (C_ALKALMAZASKEZDETE <= @Datum AND (C_ALKALMAZASMEGSZUNESE >= @Datum OR C_ALKALMAZASMEGSZUNESE IS NULL))
|
|
LEFT JOIN #OrarendTable ot on (ot.TanarID = a.ID or ot.HelyettesitoTanarID = a.ID) and CAST(ot.OraKezdete as time) = CAST(@OraKezdet as time) and CAST(ot.OraVege as time) = CAST(@Oraveg as time)
|
|
LEFT JOIN T_TANTARGY t on t.ID = ot.TantargyId AND t.TOROLT = 'F'
|
|
WHERE
|
|
a.TOROLT = 'F' and a.C_ALINTEZMENYID = @intezmenyId and a.C_ALTANEVID = @tanevId
|
|
GROUP BY
|
|
f.ID, ot.TantargyId, ot.OsztCsopId,f.C_NYOMTATASINEV,t.C_NEV,ot.OsztalyNev
|
|
ORDER BY
|
|
HelyettesitesTipusId, TanarNev
|
|
|
|
DROP TABLE #OrarendTable
|
|
END
|
|
GO |