﻿PRINT N'Altering [dbo].[T_FELHASZNALO]...';
GO

ALTER TABLE [dbo].[T_FELHASZNALO] ALTER COLUMN [C_EGYEDIAZONOSITO] NVARCHAR (36) NOT NULL;
GO

PRINT N'Altering [dbo].[T_GONDVISELO]...';
GO

IF COL_LENGTH('dbo.T_GONDVISELO', 'C_EGYEDIAZONOSITO') IS NULL BEGIN
  ALTER TABLE [dbo].[T_GONDVISELO] ADD [C_EGYEDIAZONOSITO] NVARCHAR (36) DEFAULT ('00000000-0000-0000-0000-000000000000') NULL;
END
GO

-- AKT tanév, a felhasznalobelepes GUID-ból EGYEDIAZONOSITO
UPDATE g SET 
  g.C_EGYEDIAZONOSITO = fb.C_GUID
FROM T_FELHASZNALOBELEPES fb
  INNER JOIN T_GONDVISELO g ON fb.C_GONDVISELOID = g.ID
  INNER JOIN T_TANEV tv ON tv.ID = fb.C_TANEVID AND tv.C_NEV = '2018/2019'
WHERE fb.TOROLT = 'F'
  AND g.TOROLT = 'F'
  AND g.C_EGYEDIAZONOSITO IS NULL
GO

-- AKT tanév, maradék gondviselő
UPDATE g SET C_EGYEDIAZONOSITO = NEWID() 
FROM T_GONDVISELO g
  INNER JOIN T_TANEV tv ON tv.ID = g.C_TANEVID AND tv.C_NEV = '2018/2019'
WHERE g.C_EGYEDIAZONOSITO IS NULL
GO

-- KÖV tanévre EGYEDIAZONOSITO átvezetése
UPDATE g SET g.C_EGYEDIAZONOSITO = g2.C_EGYEDIAZONOSITO
FROM T_GONDVISELO g
  INNER JOIN T_GONDVISELO g2 ON g.ELOZOTANEVIREKORDID = g2.ID
WHERE g.C_EGYEDIAZONOSITO IS NULL
  AND g.C_EGYEDIAZONOSITO IS NOT NULL
GO

-- UPDATE a maradékra
UPDATE g SET 
  C_EGYEDIAZONOSITO = NEWID() 
FROM T_GONDVISELO g
WHERE C_EGYEDIAZONOSITO IS NULL
GO


ALTER TABLE [dbo].[T_GONDVISELO]
  ALTER COLUMN [C_EGYEDIAZONOSITO] NVARCHAR (36) NOT NULL;
GO


PRINT N'Altering [dbo].[T_TANTERV]...';
GO
ALTER TABLE [dbo].[T_TANTERV]
  ADD [C_VEDETT] CHAR (1) DEFAULT ('F') NOT NULL;
GO

PRINT N'Creating unnamed constraint on [dbo].[T_FELHASZNALO]...';
GO


-- DROP régi default constraint
DECLARE @sql nvarchar(max) = ''

SELECT @sql = 'ALTER TABLE T_FELHASZNALO DROP CONSTRAINT ' + default_constraints.name + ';'
FROM sys.all_columns
  INNER JOIN sys.tables ON all_columns.object_id = tables.object_id
  INNER JOIN sys.schemas ON tables.schema_id = schemas.schema_id
  INNER JOIN sys.default_constraints ON all_columns.default_object_id = default_constraints.object_id
WHERE schemas.name = 'dbo'
  AND tables.name = 'T_FELHASZNALO'
  AND all_columns.name = 'C_EGYEDIAZONOSITO'

EXEC sp_executesql @sql
GO

ALTER TABLE [dbo].[T_FELHASZNALO]
  ADD DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [C_EGYEDIAZONOSITO];
GO

-- AKT tanév, a felhasznalobelepes GUID-ból EGYEDIAZONOSITO
UPDATE fh SET fh.C_EGYEDIAZONOSITO = fb.C_GUID
FROM T_FELHASZNALO fh
  INNER JOIN T_FELHASZNALOBELEPES fb ON fb.C_FELHASZNALOID = fh.ID AND fb.C_GONDVISELOID IS NULL AND fb.TOROLT = 'F'
  INNER JOIN T_TANEV tv ON tv.ID = fh.C_TANEVID AND tv.C_NEV = '2018/2019'
WHERE fh.TOROLT = 'F' 
  AND (fh.C_EGYEDIAZONOSITO IS NULL OR fh.C_EGYEDIAZONOSITO = '1')

-- AKT tanév, maradék felhasználónak
UPDATE fh SET fh.C_EGYEDIAZONOSITO = NEWID()
FROM T_FELHASZNALO fh
  INNER JOIN T_TANEV tv ON tv.ID = fh.C_TANEVID AND tv.C_NEV = '2018/2019'
WHERE (fh.C_EGYEDIAZONOSITO IS NULL OR fh.C_EGYEDIAZONOSITO = '1')


-- KÖV tanévre EGYEDIAZONOSITO átvezetése
UPDATE kov SET kov.C_EGYEDIAZONOSITO = akt.C_EGYEDIAZONOSITO
FROM T_FELHASZNALO akt
INNER JOIN T_FELHASZNALO kov ON kov.ELOZOTANEVIREKORDID = akt.ID
WHERE akt.C_EGYEDIAZONOSITO <> '1' AND (kov.C_EGYEDIAZONOSITO IS NULL OR kov.C_EGYEDIAZONOSITO = '1')
  AND akt.TOROLT = 'F' 
  AND kov.TOROLT = 'F'

-- UPDATE a maradékra
UPDATE T_FELHASZNALO SET 
  C_EGYEDIAZONOSITO = NEWID() 
WHERE (C_EGYEDIAZONOSITO IS NULL OR C_EGYEDIAZONOSITO = '1')
GO


PRINT N'Refreshing [dbo].[T_FELHASZNALO_OSSZES]...';
GO

EXECUTE sp_refreshsqlmodule N'[dbo].[T_FELHASZNALO_OSSZES]';
GO

PRINT N'Refreshing [dbo].[T_GONDVISELO_OSSZES]...';
GO

EXECUTE sp_refreshsqlmodule N'[dbo].[T_GONDVISELO_OSSZES]';
GO

PRINT N'Refreshing [dbo].[T_TANTERV_OSSZES]...';
GO

EXECUTE sp_refreshsqlmodule N'[dbo].[T_TANTERV_OSSZES]';
GO

PRINT N'Update complete.';
GO


--------------------


PRINT '--- intézményi view-k (dbo táblákkal megegyező nevű és a tábla_OSSZES nevűek) frissítése ---'

DECLARE  @viewname nvarchar(100), @pureview nvarchar(100)

DECLARE semaviewk CURSOR LOCAL FOR 
  SELECT '['+TABLE_SCHEMA + '].[' + TABLE_NAME + ']', TABLE_NAME
  FROM INFORMATION_SCHEMA.TABLES
  WHERE TABLE_TYPE = 'VIEW' and TABLE_SCHEMA LIKE 'KR[_]%[_]Schema'
  AND TABLE_NAME in ('T_GONDVISELO', 'T_GONDVISELO_OSSZES'
					,'T_TANTERV', 'T_TANTERV_OSSZES'
					,'T_FELHASZNALO', 'T_FELHASZNALO_OSSZES') -- ha csak néhány VIEW frissült, akkor a gyorsabb futásért ide fel lehet sorolni
  ORDER BY TABLE_SCHEMA, TABLE_NAME

OPEN semaviewk
FETCH NEXT FROM semaviewk INTO @viewname, @pureview

WHILE @@FETCH_STATUS = 0 BEGIN
    PRINT @viewname
    EXEC sp_refreshview @viewname

    FETCH NEXT FROM semaviewk INTO @viewname, @pureview
END             

CLOSE semaviewk
DEALLOCATE semaviewk
GO

--------------------

EXEC dev.sp_Global_GenerateAsyncAuditTriggerAll
GO


ALTER QUEUE auditLog.[AuditQueue]
WITH ACTIVATION
( 
    STATUS = ON,
    PROCEDURE_NAME = auditLog.usp_AuditProcessing,
    MAX_QUEUE_READERS = 10,
    EXECUTE AS 'Kreta_tech_user'
);

GO
