﻿DROP PROCEDURE IF EXISTS dbo.uspGetMulasztasokDatumNezetDataByOsztalyCsoportId
GO

CREATE PROCEDURE dbo.uspGetMulasztasokDatumNezetDataByOsztalyCsoportId
  @pMulasztasTipusJelenlet int,
  @pMulasztasTipusUres int,
  @pAktualisTanevId int,
  @pOsztalyCsoportId int,
  @pIntezmenyId int,
  @pIsCsoportVezeto int
AS
BEGIN
  SET DATEFIRST 1; -- Sets the first day of the week to a number from 1 (Monday) through 7 (Sunday).

SELECT
    MulasztasDatuma
    ,MulasztasokSzama
    ,d.C_NAME AS MulasztasNapja
    ,OsztalyCsoportId, d.C_INTEZMENYID
FROM (
    SELECT
    tn.C_DATUM AS MulasztasDatuma,
    COUNT(C_TANULOID) AS MulasztasokSzama,
    tcs.C_OSZTALYCSOPORTID AS OsztalyCsoportId
    FROM T_TANULOCSOPORT tcs
    INNER JOIN T_TANULOMULASZTAS tm ON tm.C_ORATANULOIID = tcs.C_TANULOID
    INNER JOIN T_TANITASIORA tn ON tn.ID = tm.C_TANITASIORAKID AND (@pIsCsoportVezeto = 0 OR tn.C_OSZTALYCSOPORTID = @pOsztalyCsoportId)
    WHERE tm.TOROLT = 'F'
    AND tm.C_IGAZOLT IS NULL
    AND tm.C_TIPUS <> @pMulasztasTipusJelenlet
    AND tm.C_TIPUS <>  @pMulasztasTipusUres
    AND tm.C_TANEVID = @pAktualisTanevId
    AND tm.C_INTEZMENYID = @pIntezmenyId
    AND tcs.C_OSZTALYCSOPORTID = @pOsztalyCsoportId
    AND tcs.C_BELEPESDATUM <= tn.C_DATUM
    AND (tcs.C_KILEPESDATUM IS NULL OR tcs.C_KILEPESDATUM > tn.C_DATUM)
    GROUP BY
    tn.C_DATUM,
    tcs.C_OSZTALYCSOPORTID
) x
INNER JOIN T_DICTIONARYITEMBASE d ON d.C_VALUE = DATEPART(dw,x.MulasztasDatuma)
    AND C_TYPE = N'HetnapjaTipus'
    AND d.C_INTEZMENYID = @pIntezmenyId
    AND d.C_TANEVID = @pAktualisTanevId
ORDER BY MulasztasDatuma DESC
END
GO
