﻿-- =============================================
-- Description:  <Tanulo KIFIR import>
-- =============================================
DROP PROCEDURE IF EXISTS [dbo].[uspTanuloKifirImport]
GO

CREATE PROCEDURE [dbo].[uspTanuloKifirImport]
   @pIntezmenyId          INT
  ,@pTanevId            INT
  ,@pUserId            INT
  ,@pImportJson          NVARCHAR(MAX)

AS
BEGIN

  SET NOCOUNT ON;  

  DECLARE
     @tableNameList      NVARCHAR(2000)  = 'T_FELHASZNALO_OSSZES'
    ,@actualJson      NVARCHAR(MAX)  = ''

    ,@lastChangedDateTime  DATETIME    = GETDATE()
    
  --NOTE: A törlés azért false, mert a tanuló importálásoknál soha nem törlünk!
  EXECUTE [dbo].[uspDynamicImportJsonSplit] @pIntezmenyId = @pIntezmenyId, @pTanevId = @pTanevId, @pUserId = @pUserId, @pImportJson = @pImportJson, @pIsTorles = 0, @pIsSubTable = 0, @pTableNameList = @tableNameList
  
  --NOTE: Tanulo temp tábla incializálása
  CREATE TABLE #TanuloTempTable (
     ID                INT        
    ,C_ELOZOINTEZMENY        NVARCHAR(255)    
    ,C_ALLAMIGONDOZOTT        CHAR(1)  
    ,C_BEILLESZKEDESINEHEZSEG    CHAR(1)  
    ,C_BEJARO            CHAR(1)  
    ,C_EVISMETLO          CHAR(1)  
    ,C_JOGVISZONYATSZUNETELTETO    CHAR(1)  
    ,C_MAGANTANULO          CHAR(1)  
    ,C_POLGARISZERZODESES      CHAR(1)  
    ,C_SZAKMAIGYAKORLATON      CHAR(1)  
    ,C_SZOCIALISTAMOGATAS      CHAR(1)  
    ,C_TANDIJATFIZETO        CHAR(1)  
    ,C_TANKOTELEZETT        CHAR(1)  
    ,C_TANULOSZERZODESES      CHAR(1)  
    ,C_TERITESIDIJATFIZETO      CHAR(1)  
    ,C_TESTNEVELESTIPUSA      INT    
    ,C_VENDEG            CHAR(1)  
    ,C_BTMPROBLEMAS          CHAR(1)  
    ,C_DIAKSPORTKOROS        CHAR(1)  
    ,C_HALMOZOTTANFOGYATEKOS    CHAR(1)  
    ,C_HATRANYOSHELYZETU      INT    
    ,C_KOLLEGIUMIELLATASOS      CHAR(1)  
    ,C_SAJATOSNEVELESU        CHAR(1)  
    ,C_VESZELYEZTETETT        CHAR(1)  
    ,C_BEILLESZKEDESIPROBLEMAVALKUZ  CHAR(1)  
    ,C_MAGATARTASIPROBLEMAVALKUZD  CHAR(1)  
    ,C_TANULASIPROBLEMADISZGRAFIA  CHAR(1)  
    ,C_TANULASIPROBLEMAVALKUZD    CHAR(1)  
    ,C_TANULASIPROBLEMAVALKUZDDISZK  CHAR(1)  
    ,C_TANULASIPROBLEMAVALKUZDDISZL  CHAR(1)  
    ,C_KOZEPFOKUOKTATASBATIZENHATOD  CHAR(1)  
    ,C_MENEDEKJOGGALRENDELKEZO    CHAR(1)  
    ,C_EGYEBDONTO          CHAR(1)  
    ,C_MEGALLAPODASOS        CHAR(1)  
    ,C_OSZTV            CHAR(1)  
    ,C_SZETVAGAZAT          CHAR(1)  
    ,C_SZKTV            CHAR(1)  
    ,C_TECHNIKUSIEVFOLYAM      CHAR(1)  
    ,C_EGYUTTMUKODESES        CHAR(1)  
    ,C_ISKOLAIKERETEKKOZOTT      CHAR(1)  
    ,C_ISSZAKMAIGYAKORLATHIANY    CHAR(1)  
    ,C_ISKIFIRIMPORTALT        CHAR(1)  
    ,C_FELVETELTANEVEID        INT    
      
    ,C_ALINTEZMENYID        INT    
    ,C_ALTANEVID          INT
    ,TOROLT              CHAR(1)      
    ,SERIAL              INT        
    ,LASTCHANGED          DATETIME    
    ,CREATED            DATETIME    
    ,MODIFIER            INT        
    ,CREATOR            INT        
    ,ELOZOTANEVIREKORDID      INT        
    ,Operation            INT    
  )  
  
  INSERT INTO
    #TanuloTempTable
  SELECT
     Felhasznalo.ID
    ,TanuloJsonData.C_ELOZOINTEZMENY            
    ,TanuloJsonData.C_ALLAMIGONDOZOTT        
    ,TanuloJsonData.C_BEILLESZKEDESINEHEZSEG    
    ,TanuloJsonData.C_BEJARO            
    ,TanuloJsonData.C_EVISMETLO            
    ,TanuloJsonData.C_JOGVISZONYATSZUNETELTETO    
    ,TanuloJsonData.C_MAGANTANULO          
    ,TanuloJsonData.C_POLGARISZERZODESES      
    ,TanuloJsonData.C_SZAKMAIGYAKORLATON      
    ,TanuloJsonData.C_SZOCIALISTAMOGATAS      
    ,TanuloJsonData.C_TANDIJATFIZETO        
    ,TanuloJsonData.C_TANKOTELEZETT          
    ,TanuloJsonData.C_TANULOSZERZODESES        
    ,TanuloJsonData.C_TERITESIDIJATFIZETO      
    ,TanuloJsonData.C_TESTNEVELESTIPUSA        
    ,TanuloJsonData.C_VENDEG            
    ,TanuloJsonData.C_BTMPROBLEMAS          
    ,TanuloJsonData.C_DIAKSPORTKOROS        
    ,TanuloJsonData.C_HALMOZOTTANFOGYATEKOS    
    ,TanuloJsonData.C_HATRANYOSHELYZETU        
    ,TanuloJsonData.C_KOLLEGIUMIELLATASOS      
    ,TanuloJsonData.C_SAJATOSNEVELESU        
    ,TanuloJsonData.C_VESZELYEZTETETT        
    ,TanuloJsonData.C_BEILLESZKEDESIPROBLEMAVALKUZ  
    ,TanuloJsonData.C_MAGATARTASIPROBLEMAVALKUZD  
    ,TanuloJsonData.C_TANULASIPROBLEMADISZGRAFIA  
    ,TanuloJsonData.C_TANULASIPROBLEMAVALKUZD    
    ,TanuloJsonData.C_TANULASIPROBLEMAVALKUZDDISZK  
    ,TanuloJsonData.C_TANULASIPROBLEMAVALKUZDDISZL  
    ,TanuloJsonData.C_KOZEPFOKUOKTATASBATIZENHATOD  
    ,TanuloJsonData.C_MENEDEKJOGGALRENDELKEZO    
    ,TanuloJsonData.C_EGYEBDONTO          
    ,TanuloJsonData.C_MEGALLAPODASOS        
    ,TanuloJsonData.C_OSZTV              
    ,TanuloJsonData.C_SZETVAGAZAT          
    ,TanuloJsonData.C_SZKTV              
    ,TanuloJsonData.C_TECHNIKUSIEVFOLYAM      
    ,TanuloJsonData.C_EGYUTTMUKODESES        
    ,TanuloJsonData.C_ISKOLAIKERETEKKOZOTT      
    ,TanuloJsonData.C_ISSZAKMAIGYAKORLATHIANY    
    ,TanuloJsonData.C_ISKIFIRIMPORTALT        
    ,TanuloJsonData.C_FELVETELTANEVEID        
    
    ,TanuloJsonData.C_ALINTEZMENYID      
    ,TanuloJsonData.C_ALTANEVID        
    ,TanuloJsonData.TOROLT          
    ,TanuloJsonData.SERIAL          
    ,TanuloJsonData.LASTCHANGED      
    ,TanuloJsonData.CREATED        
    ,TanuloJsonData.MODIFIER        
    ,TanuloJsonData.CREATOR        
    ,TanuloJsonData.ELOZOTANEVIREKORDID          
    ,TanuloJsonData.Operation          
  FROM OPENJSON(@pImportJson,  N'lax $.ImportJson.T_TANULO_OSSZES')
    WITH (
       ID                INT        '$.ID'
      ,C_ELOZOINTEZMENY        NVARCHAR(255)  '$.C_ELOZOINTEZMENY'
      ,C_ALLAMIGONDOZOTT        CHAR(1)      '$.C_ALLAMIGONDOZOTT'
      ,C_BEILLESZKEDESINEHEZSEG    CHAR(1)      '$.C_BEILLESZKEDESINEHEZSEG'
      ,C_BEJARO            CHAR(1)      '$.C_BEJARO'
      ,C_EVISMETLO          CHAR(1)      '$.C_EVISMETLO'
      ,C_JOGVISZONYATSZUNETELTETO    CHAR(1)      '$.C_JOGVISZONYATSZUNETELTETO'
      ,C_MAGANTANULO          CHAR(1)      '$.C_MAGANTANULO'
      ,C_POLGARISZERZODESES      CHAR(1)      '$.C_POLGARISZERZODESES'
      ,C_SZAKMAIGYAKORLATON      CHAR(1)      '$.C_SZAKMAIGYAKORLATON'
      ,C_SZOCIALISTAMOGATAS      CHAR(1)      '$.C_SZOCIALISTAMOGATAS'
      ,C_TANDIJATFIZETO        CHAR(1)      '$.C_TANDIJATFIZETO'
      ,C_TANKOTELEZETT        CHAR(1)      '$.C_TANKOTELEZETT'
      ,C_TANULOSZERZODESES      CHAR(1)      '$.C_TANULOSZERZODESES'
      ,C_TERITESIDIJATFIZETO      CHAR(1)      '$.C_TERITESIDIJATFIZETO'
      ,C_TESTNEVELESTIPUSA      INT        '$.C_TESTNEVELESTIPUSA'
      ,C_VENDEG            CHAR(1)      '$.C_VENDEG'
      ,C_BTMPROBLEMAS          CHAR(1)      '$.C_BTMPROBLEMAS'
      ,C_DIAKSPORTKOROS        CHAR(1)      '$.C_DIAKSPORTKOROS'
      ,C_HALMOZOTTANFOGYATEKOS    CHAR(1)      '$.C_HALMOZOTTANFOGYATEKOS'
      ,C_HATRANYOSHELYZETU      INT        '$.C_HATRANYOSHELYZETU'
      ,C_KOLLEGIUMIELLATASOS      CHAR(1)      '$.C_KOLLEGIUMIELLATASOS'
      ,C_SAJATOSNEVELESU        CHAR(1)      '$.C_SAJATOSNEVELESU'
      ,C_VESZELYEZTETETT        CHAR(1)      '$.C_VESZELYEZTETETT'
      ,C_BEILLESZKEDESIPROBLEMAVALKUZ  CHAR(1)      '$.C_BEILLESZKEDESIPROBLEMAVALKUZ'
      ,C_MAGATARTASIPROBLEMAVALKUZD  CHAR(1)      '$.C_MAGATARTASIPROBLEMAVALKUZD'
      ,C_TANULASIPROBLEMADISZGRAFIA  CHAR(1)      '$.C_TANULASIPROBLEMADISZGRAFIA'
      ,C_TANULASIPROBLEMAVALKUZD    CHAR(1)      '$.C_TANULASIPROBLEMAVALKUZD'
      ,C_TANULASIPROBLEMAVALKUZDDISZK  CHAR(1)      '$.C_TANULASIPROBLEMAVALKUZDDISZK'
      ,C_TANULASIPROBLEMAVALKUZDDISZL  CHAR(1)      '$.C_TANULASIPROBLEMAVALKUZDDISZL'
      ,C_KOZEPFOKUOKTATASBATIZENHATOD  CHAR(1)      '$.C_KOZEPFOKUOKTATASBATIZENHATOD'
      ,C_MENEDEKJOGGALRENDELKEZO    CHAR(1)      '$.C_MENEDEKJOGGALRENDELKEZO'
      ,C_EGYEBDONTO          CHAR(1)      '$.C_EGYEBDONTO'
      ,C_MEGALLAPODASOS        CHAR(1)      '$.C_MEGALLAPODASOS'
      ,C_OSZTV            CHAR(1)      '$.C_OSZTV'
      ,C_SZETVAGAZAT          CHAR(1)      '$.C_SZETVAGAZAT'
      ,C_SZKTV            CHAR(1)      '$.C_SZKTV'
      ,C_TECHNIKUSIEVFOLYAM      CHAR(1)      '$.C_TECHNIKUSIEVFOLYAM'
      ,C_EGYUTTMUKODESES        CHAR(1)      '$.C_EGYUTTMUKODESES'
      ,C_ISKOLAIKERETEKKOZOTT      CHAR(1)      '$.C_ISKOLAIKERETEKKOZOTT'
      ,C_ISSZAKMAIGYAKORLATHIANY    CHAR(1)      '$.C_ISSZAKMAIGYAKORLATHIANY'
      ,C_ISKIFIRIMPORTALT        CHAR(1)      '$.C_ISKIFIRIMPORTALT'
      ,C_FELVETELTANEVEID        INT        '$.C_FELVETELTANEVEID'

      ,C_ALINTEZMENYID        INT        '$.C_INTEZMENYID'
      ,C_ALTANEVID          INT        '$.C_TANEVID'
      ,TOROLT              CHAR(1)      '$.TOROLT'
      ,SERIAL              INT        '$.SERIAL'
      ,LASTCHANGED          DATETIME    '$.LASTCHANGED'
      ,CREATED            DATETIME    '$.CREATED'
      ,MODIFIER            INT        '$.MODIFIER'
      ,CREATOR            INT        '$.CREATOR'
      ,ELOZOTANEVIREKORDID      INT        '$.ELOZOTANEVIREKORDID'
      ,Operation            INT        '$.Operation'
          
      ,Vezeteknev            NVARCHAR(255)  '$.Vezeteknev'
      ,Keresztnev            NVARCHAR(255)  '$.Keresztnev'
      ,SzuletesiHely          NVARCHAR(50)  '$.SzuletesiHely'
      ,SzuletesiIdo          DATETIME    '$.SzuletesiIdo'
      ,OktatasiAzonosito        NVARCHAR(20)  '$.OktatasiAzonosito'
    ) TanuloJsonData
  LEFT JOIN
    T_FELHASZNALO_OSSZES Felhasznalo ON
        --NOTE: A leküldött adat már teljesen jól formázott, de a db-ben lehetnek rossz adatok. Az összehasonlításhoz ezt csináljuk:
        --    Kisbetűsítjük -> Lecseréljük a NO BREAK SPACE-eket, SPACE-ekre -> Lecseréljük az összes többszörös szóközt egyre -> Trimmelünk
          REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(LOWER(Felhasznalo.C_VEZETEKNEV),CHAR(160),CHAR(32)),CHAR(9),CHAR(32)),CHAR(32),'(¤¤)'),'¤)(¤',''),'(¤¤)',CHAR(32)) = LOWER(TanuloJsonData.Vezeteknev)
      AND REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(LOWER(Felhasznalo.C_UTONEV),CHAR(160),CHAR(32)),CHAR(9),CHAR(32)),CHAR(32),'(¤¤)'),'¤)(¤',''),'(¤¤)',CHAR(32)) = LOWER(TanuloJsonData.Keresztnev)
      AND REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(LOWER(Felhasznalo.C_SZULETESIHELY),CHAR(160),CHAR(32)),CHAR(9),CHAR(32)),CHAR(32),'(¤¤)'),'¤)(¤',''),'(¤¤)',CHAR(32)) = LOWER(TanuloJsonData.SzuletesiHely)
      AND Felhasznalo.C_SZULETESIDATUM  = TanuloJsonData.SzuletesiIdo
      AND Felhasznalo.C_OKTATASIAZONOSITO  = TanuloJsonData.OktatasiAzonosito
      AND Felhasznalo.C_INTEZMENYID    = @pIntezmenyId
      AND Felhasznalo.C_TANEVID      = @pTanevId
      AND Felhasznalo.TOROLT        = 'F'
  
  --NOTE: Cim temp tábla incializálása
  CREATE TABLE #CimTempTable (
     ID            INT        
    ,C_CIMTIPUSA      INT        
    ,C_IRANYITOSZAM      NVARCHAR(20)  
    ,C_VAROS        NVARCHAR(50)  
    ,C_KOZTERULET      NVARCHAR(40)  
    ,C_KOZTERULETJELLEGENEV NVARCHAR(100)    
    ,C_HAZSZAM        NVARCHAR(30)  
    ,C_ORSZAG        INT        
    ,C_ALAPERTELMEZETT    CHAR(1)      
    ,C_EMELET        NVARCHAR(40)  
    ,C_AJTO          NVARCHAR(30)  
    ,C_FELHASZNALOID    INT
                    
    ,C_INTEZMENYID      INT        
    ,C_TANEVID        INT        
    ,TOROLT          CHAR(1)      
    ,SERIAL          INT        
    ,LASTCHANGED      DATETIME    
    ,CREATED        DATETIME    
    ,MODIFIER        INT        
    ,CREATOR        INT        
    ,ELOZOTANEVIREKORDID  INT          
    ,Operation        INT    
  )  
  
  INSERT INTO
    #CimTempTable
  SELECT
     CimJsonData.ID      
    ,CimJsonData.C_CIMTIPUSA      
    ,CimJsonData.C_IRANYITOSZAM      
    ,CimJsonData.C_VAROS        
    ,CimJsonData.C_KOZTERULET      
    ,CimJsonData.C_KOZTERULETJELLEGENEV  
    ,CimJsonData.C_HAZSZAM        
    ,CimJsonData.C_ORSZAG        
    ,CimJsonData.C_ALAPERTELMEZETT    
    ,CimJsonData.C_EMELET        
    ,CimJsonData.C_AJTO          
    ,Felhasznalo.ID
    
    ,CimJsonData.C_INTEZMENYID      
    ,CimJsonData.C_TANEVID        
    ,CimJsonData.TOROLT          
    ,CimJsonData.SERIAL          
    ,CimJsonData.LASTCHANGED      
    ,CimJsonData.CREATED        
    ,CimJsonData.MODIFIER        
    ,CimJsonData.CREATOR        
    ,CimJsonData.ELOZOTANEVIREKORDID          
    ,CimJsonData.Operation          
  FROM OPENJSON(@pImportJson,  N'lax $.ImportJson.T_CIM_OSSZES')
    WITH (
       ID            INT        '$.ID'
      ,C_CIMTIPUSA      INT        '$.C_CIMTIPUSA'
      ,C_IRANYITOSZAM      NVARCHAR(20)  '$.C_IRANYITOSZAM'
      ,C_VAROS        NVARCHAR(50)  '$.C_VAROS'
      ,C_KOZTERULET      NVARCHAR(40)  '$.C_KOZTERULET'
      ,C_KOZTERULETJELLEGENEV  NVARCHAR(100)  '$.C_KOZTERULETJELLEGENEV'
      ,C_HAZSZAM        NVARCHAR(30)  '$.C_HAZSZAM'
      ,C_ORSZAG        INT        '$.C_ORSZAG'
      ,C_ALAPERTELMEZETT    CHAR(1)      '$.C_ALAPERTELMEZETT'
      ,C_EMELET        NVARCHAR(40)  '$.C_EMELET'
      ,C_AJTO          NVARCHAR(30)  '$.C_AJTO'
          
      ,C_INTEZMENYID      INT        '$.C_INTEZMENYID'
      ,C_TANEVID        INT        '$.C_TANEVID'
      ,TOROLT          CHAR(1)      '$.TOROLT'
      ,SERIAL          INT        '$.SERIAL'
      ,LASTCHANGED      DATETIME    '$.LASTCHANGED'
      ,CREATED        DATETIME    '$.CREATED'
      ,MODIFIER        INT        '$.MODIFIER'
      ,CREATOR        INT        '$.CREATOR'
      ,ELOZOTANEVIREKORDID  INT        '$.ELOZOTANEVIREKORDID'    
      ,Operation        INT        '$.Operation'
      
      ,Vezeteknev        NVARCHAR(255)  '$.Vezeteknev'
      ,Keresztnev        NVARCHAR(255)  '$.Keresztnev'
      ,SzuletesiHely      NVARCHAR(50)  '$.SzuletesiHely'
      ,SzuletesiIdo      DATETIME    '$.SzuletesiIdo'
      ,OktatasiAzonosito    NVARCHAR(20)  '$.OktatasiAzonosito'        
    ) CimJsonData
  LEFT JOIN
    T_FELHASZNALO_OSSZES Felhasznalo ON
        --NOTE: A leküldött adat már teljesen jól formázott, de a db-ben lehetnek rossz adatok. Az összehasonlításhoz ezt csináljuk:
        --    Kisbetűsítjük -> Lecseréljük a NO BREAK SPACE-eket, SPACE-ekre -> Lecseréljük az összes többszörös szóközt egyre -> Trimmelünk
          REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(LOWER(Felhasznalo.C_VEZETEKNEV),CHAR(160),CHAR(32)),CHAR(9),CHAR(32)),CHAR(32),'(¤¤)'),'¤)(¤',''),'(¤¤)',CHAR(32)) = LOWER(CimJsonData.Vezeteknev)
      AND REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(LOWER(Felhasznalo.C_UTONEV),CHAR(160),CHAR(32)),CHAR(9),CHAR(32)),CHAR(32),'(¤¤)'),'¤)(¤',''),'(¤¤)',CHAR(32)) = LOWER(CimJsonData.Keresztnev)
      AND REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(LOWER(Felhasznalo.C_SZULETESIHELY),CHAR(160),CHAR(32)),CHAR(9),CHAR(32)),CHAR(32),'(¤¤)'),'¤)(¤',''),'(¤¤)',CHAR(32)) = LOWER(CimJsonData.SzuletesiHely)
      AND Felhasznalo.C_SZULETESIDATUM  = CimJsonData.SzuletesiIdo
      AND Felhasznalo.C_OKTATASIAZONOSITO  = CimJsonData.OktatasiAzonosito
      AND Felhasznalo.C_INTEZMENYID    = @pIntezmenyId
      AND Felhasznalo.C_TANEVID      = @pTanevId
      AND Felhasznalo.TOROLT        = 'F'
  
  --NOTE: Email temp tábla incializálása
  CREATE TABLE #EmailTempTable (
     ID            INT        
    ,C_EMAILTIPUSA      INT        
    ,C_EMAILCIM        NVARCHAR(200)  
    ,C_ALAPERTELMEZETT    CHAR(1)      
    ,C_ISPUBLIC        CHAR(1)
    ,C_FELHASZNALOID    INT
    ,C_ISHIBASANMEGADVA    char(1)
                    
    ,C_INTEZMENYID      INT        
    ,C_TANEVID        INT        
    ,TOROLT          CHAR(1)      
    ,SERIAL          INT        
    ,LASTCHANGED      DATETIME    
    ,CREATED        DATETIME    
    ,MODIFIER        INT        
    ,CREATOR        INT        
    ,ELOZOTANEVIREKORDID  INT            
    ,Operation        INT    
  )  
  
  INSERT INTO
    #EmailTempTable
  SELECT
     EmailJsonData.ID      
    ,EmailJsonData.C_EMAILTIPUSA      
    ,EmailJsonData.C_EMAILCIM      
    ,EmailJsonData.C_ALAPERTELMEZETT        
    ,EmailJsonData.C_ISPUBLIC        
    ,Felhasznalo.ID
    ,EmailJsonData.C_ISHIBASANMEGADVA
    
    ,EmailJsonData.C_INTEZMENYID      
    ,EmailJsonData.C_TANEVID        
    ,EmailJsonData.TOROLT          
    ,EmailJsonData.SERIAL          
    ,EmailJsonData.LASTCHANGED      
    ,EmailJsonData.CREATED        
    ,EmailJsonData.MODIFIER        
    ,EmailJsonData.CREATOR        
    ,EmailJsonData.ELOZOTANEVIREKORDID      
    ,EmailJsonData.Operation
  FROM OPENJSON(@pImportJson,  N'lax $.ImportJson.T_EMAIL_OSSZES')
    WITH (
       ID            INT        '$.ID'
      ,C_EMAILTIPUSA      INT        '$.C_EMAILTIPUSA'
      ,C_EMAILCIM        NVARCHAR(200)  '$.C_EMAILCIM'
      ,C_ALAPERTELMEZETT    CHAR(1)      '$.C_ALAPERTELMEZETT'
      ,C_ISPUBLIC        CHAR(1)      '$.C_ISPUBLIC'
      ,C_ISHIBASANMEGADVA    CHAR(1)      '$.C_ISHIBASANMEGADVA'
          
      ,C_INTEZMENYID      INT        '$.C_INTEZMENYID'
      ,C_TANEVID        INT        '$.C_TANEVID'
      ,TOROLT          CHAR(1)      '$.TOROLT'
      ,SERIAL          INT        '$.SERIAL'
      ,LASTCHANGED      DATETIME    '$.LASTCHANGED'
      ,CREATED        DATETIME    '$.CREATED'
      ,MODIFIER        INT        '$.MODIFIER'
      ,CREATOR        INT        '$.CREATOR'
      ,ELOZOTANEVIREKORDID  INT        '$.ELOZOTANEVIREKORDID'  
      ,Operation        INT        '$.Operation'
      
      ,Vezeteknev        NVARCHAR(255)  '$.Vezeteknev'
      ,Keresztnev        NVARCHAR(255)  '$.Keresztnev'
      ,SzuletesiHely      NVARCHAR(50)  '$.SzuletesiHely'
      ,SzuletesiIdo      DATETIME    '$.SzuletesiIdo'
      ,OktatasiAzonosito    NVARCHAR(20)  '$.OktatasiAzonosito'          
    ) EmailJsonData
  LEFT JOIN
    T_FELHASZNALO_OSSZES Felhasznalo ON
        --NOTE: A leküldött adat már teljesen jól formázott, de a db-ben lehetnek rossz adatok. Az összehasonlításhoz ezt csináljuk:
        --    Kisbetűsítjük -> Lecseréljük a NO BREAK SPACE-eket, SPACE-ekre -> Lecseréljük az összes többszörös szóközt egyre -> Trimmelünk
          REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(LOWER(Felhasznalo.C_VEZETEKNEV),CHAR(160),CHAR(32)),CHAR(9),CHAR(32)),CHAR(32),'(¤¤)'),'¤)(¤',''),'(¤¤)',CHAR(32)) = LOWER(EmailJsonData.Vezeteknev)
      AND REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(LOWER(Felhasznalo.C_UTONEV),CHAR(160),CHAR(32)),CHAR(9),CHAR(32)),CHAR(32),'(¤¤)'),'¤)(¤',''),'(¤¤)',CHAR(32)) = LOWER(EmailJsonData.Keresztnev)
      AND REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(LOWER(Felhasznalo.C_SZULETESIHELY),CHAR(160),CHAR(32)),CHAR(9),CHAR(32)),CHAR(32),'(¤¤)'),'¤)(¤',''),'(¤¤)',CHAR(32)) = LOWER(EmailJsonData.SzuletesiHely)
      AND Felhasznalo.C_SZULETESIDATUM  = EmailJsonData.SzuletesiIdo
      AND Felhasznalo.C_OKTATASIAZONOSITO  = EmailJsonData.OktatasiAzonosito
      AND Felhasznalo.C_INTEZMENYID    = @pIntezmenyId
      AND Felhasznalo.C_TANEVID      = @pTanevId
      AND Felhasznalo.TOROLT = 'F'
  
  --NOTE: Ha van bejövő cím állandó lakcím típusú a json-ben, akkor az ehhez a címhez tartozó felhasználó összes címének C_ALAPERTELMEZETT mezőjét false-ra állítjuk és a bejövő lesz a egyedül true!
  UPDATE 
    Cim
  SET 
     Cim.C_ALAPERTELMEZETT          = 'F'
    ,Cim.SERIAL                = Cim.SERIAL + 1
    ,Cim.LASTCHANGED            = @lastChangedDateTime
    ,Cim.MODIFIER              = @pUserId
  FROM 
    T_FELHASZNALO_OSSZES Felhasznalo
  INNER JOIN
     #CimTempTable ON
        #CimTempTable.C_INTEZMENYID    = Felhasznalo.C_INTEZMENYID
      AND  #CimTempTable.C_TANEVID      = Felhasznalo.C_TANEVID
      AND #CimTempTable.TOROLT      = 'F'
      AND #CimTempTable.C_FELHASZNALOID  = Felhasznalo.ID
  INNER JOIN
     T_CIM_OSSZES Cim ON
        Cim.C_INTEZMENYID        = Felhasznalo.C_INTEZMENYID
      AND  Cim.C_TANEVID          = Felhasznalo.C_TANEVID
      AND Cim.TOROLT            = 'F'    
      AND Cim.C_FELHASZNALOID        = Felhasznalo.ID
      AND Cim.C_ALAPERTELMEZETT      = 'T'
  WHERE 
      Felhasznalo.C_INTEZMENYID      = @pIntezmenyId
    AND  Felhasznalo.C_TANEVID        = @pTanevId
    AND Felhasznalo.TOROLT          = 'F'
  
  --NOTE: Ha van bejövő email a json-ben, akkor az ehhez a email-hez tartozó felhasználó összes email-jének C_ALAPERTELMEZETT mezőjét false-ra állítjuk és a bejövő lesz a egyedül true!
  UPDATE 
    Email
  SET 
     Email.C_ALAPERTELMEZETT        = 'F'
    ,Email.SERIAL              = Email.SERIAL + 1
    ,Email.LASTCHANGED            = @lastChangedDateTime
    ,Email.MODIFIER              = @pUserId
  FROM 
    T_FELHASZNALO_OSSZES Felhasznalo
  INNER JOIN
     #EmailTempTable ON
        #EmailTempTable.C_INTEZMENYID  = Felhasznalo.C_INTEZMENYID
      AND  #EmailTempTable.C_TANEVID    = Felhasznalo.C_TANEVID
      AND #EmailTempTable.TOROLT      = 'F'
      AND #EmailTempTable.C_FELHASZNALOID  = Felhasznalo.ID
  INNER JOIN
     T_EMAIL_OSSZES Email ON
        Email.C_INTEZMENYID        = Felhasznalo.C_INTEZMENYID
      AND  Email.C_TANEVID          = Felhasznalo.C_TANEVID
      AND Email.TOROLT          = 'F'    
      AND Email.C_FELHASZNALOID      = Felhasznalo.ID
      AND Email.C_ALAPERTELMEZETT      = 'T'
  WHERE 
      Felhasznalo.C_INTEZMENYID      = @pIntezmenyId
    AND  Felhasznalo.C_TANEVID        = @pTanevId
    AND Felhasznalo.TOROLT          = 'F'

  --Tanulók beszúrása
  SET @actualJson = ' { "ImportJson":{ "T_TANULO_OSSZES":' + (
    SELECT
       Tanulo.ID
      ,Tanulo.C_ELOZOINTEZMENY      
      ,Tanulo.C_ALLAMIGONDOZOTT
      ,Tanulo.C_BEILLESZKEDESINEHEZSEG
      ,Tanulo.C_BEJARO
      ,Tanulo.C_EVISMETLO
      ,Tanulo.C_JOGVISZONYATSZUNETELTETO
      ,Tanulo.C_MAGANTANULO
      ,Tanulo.C_POLGARISZERZODESES
      ,Tanulo.C_SZAKMAIGYAKORLATON
      ,Tanulo.C_SZOCIALISTAMOGATAS
      ,Tanulo.C_TANDIJATFIZETO
      ,Tanulo.C_TANKOTELEZETT
      ,Tanulo.C_TANULOSZERZODESES
      ,Tanulo.C_TERITESIDIJATFIZETO
      ,Tanulo.C_TESTNEVELESTIPUSA
      ,Tanulo.C_VENDEG
      ,Tanulo.C_BTMPROBLEMAS
      ,Tanulo.C_DIAKSPORTKOROS
      ,Tanulo.C_HALMOZOTTANFOGYATEKOS
      ,Tanulo.C_HATRANYOSHELYZETU
      ,Tanulo.C_KOLLEGIUMIELLATASOS
      ,Tanulo.C_SAJATOSNEVELESU
      ,Tanulo.C_VESZELYEZTETETT
      ,Tanulo.C_BEILLESZKEDESIPROBLEMAVALKUZ
      ,Tanulo.C_MAGATARTASIPROBLEMAVALKUZD
      ,Tanulo.C_TANULASIPROBLEMADISZGRAFIA
      ,Tanulo.C_TANULASIPROBLEMAVALKUZD
      ,Tanulo.C_TANULASIPROBLEMAVALKUZDDISZK
      ,Tanulo.C_TANULASIPROBLEMAVALKUZDDISZL
      ,Tanulo.C_KOZEPFOKUOKTATASBATIZENHATOD
      ,Tanulo.C_MENEDEKJOGGALRENDELKEZO
      ,Tanulo.C_EGYEBDONTO
      ,Tanulo.C_MEGALLAPODASOS
      ,Tanulo.C_OSZTV
      ,Tanulo.C_SZETVAGAZAT
      ,Tanulo.C_SZKTV
      ,Tanulo.C_TECHNIKUSIEVFOLYAM
      ,Tanulo.C_EGYUTTMUKODESES
      ,Tanulo.C_ISKOLAIKERETEKKOZOTT
      ,Tanulo.C_ISSZAKMAIGYAKORLATHIANY
      ,Tanulo.C_ISKIFIRIMPORTALT
      ,Tanulo.C_FELVETELTANEVEID  

      ,Tanulo.C_ALINTEZMENYID
      ,Tanulo.C_ALTANEVID
      ,Tanulo.TOROLT
      ,Tanulo.SERIAL
      ,Tanulo.LASTCHANGED
      ,Tanulo.CREATED
      ,Tanulo.MODIFIER
      ,Tanulo.CREATOR
      ,Tanulo.ELOZOTANEVIREKORDID
      ,Tanulo.Operation
    FROM
      #TanuloTempTable AS Tanulo
    FOR JSON PATH,INCLUDE_NULL_VALUES
  )

  SET @actualJson = @actualJson + ' } }'
  
  --NOTE: A törlés azért false, mert a tanuló importálásoknál soha nem törlünk!
  EXECUTE [dbo].[uspDynamicImport] @pIntezmenyId = @pIntezmenyId, @pTanevId = @pTanevId, @pUserId = @pUserId, @pImportJson = @actualJson, @pIsTorles = 0, @pIsSubTable = 1
  DROP TABLE IF EXISTS #TanuloTempTable

  --Címek beszúrása
  SET @actualJson = ' { "ImportJson":{ "T_CIM_OSSZES":' + (
    SELECT
       Cim.ID
      ,Cim.C_CIMTIPUSA
      ,Cim.C_IRANYITOSZAM
      ,Cim.C_VAROS
      ,Cim.C_KOZTERULET
      ,Cim.C_KOZTERULETJELLEGENEV
      ,Cim.C_HAZSZAM
      ,Cim.C_ORSZAG
      ,Cim.C_ALAPERTELMEZETT
      ,Cim.C_EMELET
      ,Cim.C_AJTO
      ,Cim.C_FELHASZNALOID

      ,Cim.C_INTEZMENYID
      ,Cim.C_TANEVID
      ,Cim.TOROLT
      ,Cim.SERIAL
      ,Cim.LASTCHANGED
      ,Cim.CREATED
      ,Cim.MODIFIER
      ,Cim.CREATOR
      ,Cim.ELOZOTANEVIREKORDID
      ,Cim.Operation
    FROM 
      #CimTempTable AS Cim
    FOR JSON PATH,INCLUDE_NULL_VALUES
  )

  SET @actualJson = @actualJson + ' } }'
  
  --NOTE: A törlés azért false, mert a tanuló importálásoknál soha nem törlünk!
  EXECUTE [dbo].[uspDynamicImport] @pIntezmenyId = @pIntezmenyId, @pTanevId = @pTanevId, @pUserId = @pUserId, @pImportJson = @actualJson, @pIsTorles = 0, @pIsSubTable = 0
  DROP TABLE IF EXISTS #CimTempTable

  --Emailek beszúrása
  SET @actualJson = ' { "ImportJson":{ "T_EMAIL_OSSZES":' + (
    SELECT
       Email.ID
      ,Email.C_EMAILTIPUSA
      ,Email.C_EMAILCIM
      ,Email.C_ALAPERTELMEZETT
      ,Email.C_ISPUBLIC
      ,Email.C_FELHASZNALOID
      ,Email.C_ISHIBASANMEGADVA
      
      ,Email.C_INTEZMENYID
      ,Email.C_TANEVID
      ,Email.TOROLT
      ,Email.SERIAL
      ,Email.LASTCHANGED
      ,Email.CREATED
      ,Email.MODIFIER
      ,Email.CREATOR
      ,Email.ELOZOTANEVIREKORDID
      ,Email.Operation
    FROM 
      #EmailTempTable AS Email
    FOR JSON PATH,INCLUDE_NULL_VALUES
  )

  SET @actualJson = @actualJson + ' } }'
  
  --NOTE: A törlés azért false, mert a tanuló importálásoknál soha nem törlünk!
  EXECUTE [dbo].[uspDynamicImport] @pIntezmenyId = @pIntezmenyId, @pTanevId = @pTanevId, @pUserId = @pUserId, @pImportJson = @actualJson, @pIsTorles = 0, @pIsSubTable = 0
  DROP TABLE IF EXISTS #EmailTempTable

END

GO

