﻿DROP PROCEDURE IF EXISTS uspGetKozossegiSzolgalatokData
GO

CREATE PROCEDURE uspGetKozossegiSzolgalatokData
   @pIntezmenyId int
  ,@pOsztalyCsoportIdList nvarchar(max)
  ,@pIdoszakKezdete datetime
  ,@pIdoszakVege datetime
  ,@pOsszesOraszamKezdete int
  ,@pOsszesOraszamVege int
  ,@pTanuloNeve nvarchar(250)
  ,@pAnyjaNeve nvarchar(250)
AS
BEGIN

  SET NOCOUNT ON;

  DECLARE
    @sql nvarchar(max)

  SET @sql = N'
    SELECT *
    FROM (
      SELECT
         currenttanulo.TanuloId as ID
        ,currenttanulo.TanuloId as TanuloId
        ,currenttanulo.TanuloNev as TanuloNev
        ,IIF(currenttanulo.Nevsorrend = ''T''
        ,currenttanulo.TanuloUtonev + '' '' + currenttanulo.TanuloVezeteknev
        ,currenttanulo.TanuloVezeteknev + '' '' + currenttanulo.TanuloUtonev) as TanuloNevElotagNelkul
        ,currenttanulo.AnyjaNeve as AnyjaNeve
        ,currenttanulo.SzuletesiIdo as SzuletesiIdo
        ,currenttanulo.OsztalyNev as OsztalyNev
        ,ISNULL(SUM(kozossegiszolgalat.C_ORASZAM),0) as OsszesOraszam
        ,tanulo.C_OKTATASIAZONOSITO as OktatasiAzonosito
      FROM T_FELHASZNALO_OSSZES tanulo
        LEFT JOIN (
          SELECT DISTINCT
             tanulo.C_OKTATASIAZONOSITO as OktatasiAzonosito
            ,tanulo.ID as TanuloId
            ,tanulo.C_NYOMTATASINEV as TanuloNev
            ,tanulo.C_NEVSORREND as Nevsorrend
            ,tanulo.C_VEZETEKNEV as TanuloVezeteknev
            ,tanulo.C_UTONEV as TanuloUtonev
            ,tanulo.C_ANYJANEVE as AnyjaNeve
            ,tanulo.C_SZULETESIDATUM as SzuletesiIdo
            ,osztalycsoport.C_NEV as OsztalyNev
          FROM T_FELHASZNALO_OSSZES tanulo
            LEFT JOIN T_TANULOCSOPORT_OSSZES tanulocsoport ON tanulocsoport.C_TANULOID = tanulo.ID
              AND tanulocsoport.TOROLT = ''F''
            LEFT JOIN T_OSZTALYCSOPORT_OSSZES osztalycsoport ON osztalycsoport.ID = tanulocsoport.C_OSZTALYCSOPORTID
              AND osztalycsoport.TOROLT = ''F''
          WHERE tanulo.TOROLT = ''F''
            ' + IIF(@pOsztalyCsoportIdList IS NOT NULL, 'AND osztalycsoport.ID IN (' + @pOsztalyCsoportIdList + ')', '') + N'
        ) currenttanulo ON currenttanulo.OktatasiAzonosito IS NOT NULL
          ' + IIF(@pTanuloNeve IS NOT NULL, 'AND currenttanulo.TanuloNev LIKE (''%''+ @pTanuloNeve +''%'')', '') + N'
          ' + IIF(@pAnyjaNeve IS NOT NULL, 'AND currenttanulo.AnyjaNeve LIKE (''%''+ @pAnyjaNeve +''%'')', '') + N'
        LEFT JOIN T_TANULOKOZOSSEGISZOLGALAT_OSSZES kozossegiszolgalat ON kozossegiszolgalat.C_TANULOID = Tanulo.ID
          AND kozossegiszolgalat.C_INTEZMENYID = @pIntezmenyId
          ' + IIF(@pIdoszakKezdete IS NOT NULL, 'AND kozossegiszolgalat.C_INTERVALLUMKEZDETE >= @pIdoszakKezdete', '') + N'
          ' + IIF(@pIdoszakVege IS NOT NULL, 'AND kozossegiszolgalat.C_INTERVALLUMVEGE <= @pIdoszakVege', '') + N'
          AND kozossegiszolgalat.TOROLT = ''F''
      WHERE tanulo.C_OKTATASIAZONOSITO = currenttanulo.OktatasiAzonosito
        AND tanulo.C_INTEZMENYID = @pIntezmenyId
        AND tanulo.TOROLT = ''F''
      GROUP BY currenttanulo.TanuloId, currenttanulo.TanuloNev, currenttanulo.Nevsorrend, currenttanulo.TanuloVezeteknev,
         currenttanulo.TanuloUtonev, currenttanulo.AnyjaNeve, currenttanulo.SzuletesiIdo, currenttanulo.OsztalyNev, tanulo.C_OKTATASIAZONOSITO
    ) result
    WHERE 1 = 1
      ' + IIF(@pOsszesOraszamKezdete IS NOT NULL, 'AND @pOsszesOraszamKezdete >= result.OsszesOraszam', '') + N'
      ' + IIF(@pOsszesOraszamVege IS NOT NULL, 'AND @pOsszesOraszamVege <= result.OsszesOraszam', '') + N'
    ORDER BY result.TanuloNevElotagNelkul ASC'

  EXEC sp_executesql @sql, N'
     @pIntezmenyId int
    ,@pOsztalyCsoportIdList nvarchar(max)
    ,@pIdoszakKezdete datetime
    ,@pIdoszakVege datetime
    ,@pOsszesOraszamKezdete int
    ,@pOsszesOraszamVege int
    ,@pTanuloNeve nvarchar(250)
    ,@pAnyjaNeve nvarchar(250)'
    ,@pIntezmenyId = @pIntezmenyId
    ,@pOsztalyCsoportIdList = @pOsztalyCsoportIdList
    ,@pIdoszakKezdete = @pIdoszakKezdete
    ,@pIdoszakVege = @pIdoszakVege
    ,@pOsszesOraszamKezdete = @pOsszesOraszamKezdete
    ,@pOsszesOraszamVege = @pOsszesOraszamVege
    ,@pTanuloNeve = @pTanuloNeve
    ,@pAnyjaNeve = @pAnyjaNeve

END

GO

