kreta/Kreta.DataAccess.Migrations/DBScripts/Database/dbo/Stored procedures/uspFollowUpGondviselo.sql
2024-03-13 00:33:46 +01:00

157 lines
No EOL
5.9 KiB
Transact-SQL

DROP PROCEDURE IF EXISTS uspFollowUpGondviselo
GO
CREATE PROCEDURE uspFollowUpGondviselo
@intezmenyId int
,@tanevId int
,@kovetkezoTanevId int
,@gondviseloId int
AS
BEGIN
SET NOCOUNT ON;
IF NOT EXISTS (SELECT 1 from T_TANEV where ID = @kovetkezoTanevId and C_KOVETKEZO = 'T' and C_AKTIVALVA is null and C_ISKIVALASZTHATO = 'T')
BEGIN
RETURN;
END
DECLARE
@kovGondviseloId int = (SELECT ID FROM T_GONDVISELO_OSSZES WHERE ELOZOTANEVIREKORDID=@gondviseloId)
,@insertColList nvarchar(max)
,@selectColList nvarchar(max)
,@updateColList nvarchar(max)
,@partialSql nvarchar(max)
,@sql nvarchar(max)
IF (SELECT TOROLT FROM T_GONDVISELO_OSSZES WHERE ID = @gondviseloId) = 'T'
OR
(SELECT TOROLT FROM T_GONDVISELO_OSSZES WHERE ID = @kovGondviseloId) = 'T' BEGIN
RETURN
END
CREATE TABLE #ColumnMappings(
insertColName nvarchar(max)
,selectColName nvarchar(max)
,updateColName nvarchar(max)
,tableName nvarchar(128)
)
INSERT INTO #ColumnMappings(insertColName,selectColName,updateColName,tableName)
SELECT insertColName,selectColName,updateColName,'T_GONDVISELO' from fnGetFollowUpColumnMapping (NULL,'T_GONDVISELO')
UNION ALL
SELECT insertColName,selectColName,updateColName,'T_EMAIL' FROM fnGetFollowUpColumnMapping (NULL,'T_EMAIL')
UNION ALL
SELECT insertColName,selectColName,updateColName,'T_TELEFON' FROM fnGetFollowUpColumnMapping (NULL,'T_TELEFON')
UPDATE #ColumnMappings SET selectColName = 'gKov.ID' WHERE insertColName = 'C_GONDVISELOID' AND tableName IN ('T_EMAIL','T_TELEFON')
UPDATE #ColumnMappings SET selectColName = 'gKov.C_TANULOID' WHERE insertColName = 'C_FELHASZNALOID' AND tableName IN ('T_EMAIL','T_TELEFON')
IF @kovGondviseloId IS NULL BEGIN
SELECT @insertColList = ISNULL(@insertColList+','+insertColname,insertColname) FROM #columnMappings WHERE tableName = 'T_GONDVISELO'
SELECT @selectColList = ISNULL(@selectColList+','+selectColName,selectColName) FROM #ColumnMappings WHERE tableName = 'T_GONDVISELO'
SET @partialSql = N'
INSERT INTO T_GONDVISELO_OSSZES (
'+@insertColList+'
) SELECT
'+@selectColList+'
FROM T_GONDVISELO_OSSZES s
INNER JOIN T_FELHASZNALO_OSSZES fh ON fh.ID = s.C_TANULOID
INNER JOIN T_FELHASZNALO_OSSZES fhNew ON fhNew.C_OKTATASIAZONOSITO = fh.C_OKTATASIAZONOSITO AND fhNew.TOROLT=''F'' AND fhNew.C_TANEVID = @kovetkezoTanevId
INNER JOIN T_TANULO_OSSZES t ON t.ID = fhNew.ID AND t.TOROLT = ''F''
WHERE s.ID = @gondviseloId'
END
ELSE BEGIN
SELECT
@updateColList = ISNULL(@updateColList+','+insertColName+' = '+updateColname,insertColName+' = '+updateColname)
FROM #columnMappings
WHERE tableName = 'T_GONDVISELO' AND updateColname IS NOT NULL
SET @partialSql = N'
UPDATE t SET
'+@updateColList+'
FROM T_GONDVISELO_OSSZES s
INNER JOIN T_GONDVISELO_OSSZES t ON t.ELOZOTANEVIREKORDID=s.ID AND s.ID=@gondviseloId'
END
--PRINT @partialSql
SET @sql = @partialSql
SELECT @partialSql = NULL,@insertColList = NULL,@selectColList = NULL,@updateColList = NULL
SELECT @insertColList = ISNULL(@insertColList+','+insertColname,insertColname) FROM #columnMappings WHERE tableName = 'T_TELEFON'
SELECT @selectColList = ISNULL(@selectColList+','+selectColName,selectColName) FROM #ColumnMappings WHERE tableName = 'T_TELEFON'
SET @partialSql = N'
INSERT INTO T_TELEFON_OSSZES (
'+@insertColList+'
) SELECT
'+@selectColList+'
FROM T_GONDVISELO_OSSZES g
INNER JOIN T_GONDVISELO_OSSZES gKov ON gKov.ELOZOTANEVIREKORDID=g.ID
INNER JOIN T_TELEFON_OSSZES s ON s.C_GONDVISELOID=g.ID AND s.TOROLT=''F''
WHERE g.ID=@gondviseloId
AND NOT EXISTS(SELECT 1 FROM T_TELEFON_OSSZES WHERE ELOZOTANEVIREKORDID=s.ID AND TOROLT=''F'')'
SELECT @insertColList = NULL,@selectColList = NULL
SELECT @insertColList = ISNULL(@insertColList+','+insertColname,insertColname) FROM #columnMappings WHERE tableName = 'T_EMAIL'
SELECT @selectColList = ISNULL(@selectColList+','+selectColName,selectColName) FROM #ColumnMappings WHERE tableName = 'T_EMAIL'
SET @partialSql += N'
INSERT INTO T_EMAIL_OSSZES (
'+@insertColList+'
) SELECT
'+@selectColList+'
FROM T_GONDVISELO_OSSZES g
INNER JOIN T_GONDVISELO_OSSZES gKov ON gKov.ELOZOTANEVIREKORDID=g.ID
INNER JOIN T_EMAIL_OSSZES s ON s.C_GONDVISELOID=g.ID AND s.TOROLT=''F''
WHERE g.ID=@gondviseloId
AND NOT EXISTS(SELECT 1 FROM T_EMAIL_OSSZES WHERE ELOZOTANEVIREKORDID=s.ID AND TOROLT=''F'')'
SET @sql+=@partialSql
--PRINT @partialSql
SELECT
@updateColList = ISNULL(@updateColList+','+insertColName+' = '+updateColname,insertColName+' = '+updateColname)
FROM #columnMappings
WHERE tableName = 'T_TELEFON' AND updateColname IS NOT NULL
SET @partialSql = N'
UPDATE t SET
'+@updateColList+'
FROM T_TELEFON_OSSZES s
INNER JOIN T_TELEFON_OSSZES t ON t.ELOZOTANEVIREKORDID=s.ID AND t.TOROLT=''F''
WHERE s.TOROLT=''F'' AND s.C_GONDVISELOID=@gondviseloId'
SET @updateColList = NULL
SELECT
@updateColList = ISNULL(@updateColList+','+insertColName+' = '+updateColname,insertColName+' = '+updateColname)
FROM #columnMappings
WHERE tableName = 'T_EMAIL' AND updateColname IS NOT NULL
SET @partialSql += N'
UPDATE t SET
'+@updateColList+'
FROM T_EMAIL_OSSZES s
INNER JOIN T_EMAIL_OSSZES t ON t.ELOZOTANEVIREKORDID=s.ID AND t.TOROLT=''F''
WHERE s.TOROLT=''F'' AND s.C_GONDVISELOID=@gondviseloId'
SET @sql += @partialSql
--PRINT @partialSql
EXEC sp_executesql
@sql,N'
@intezmenyId int
,@tanevId int
,@kovetkezoTanevId int
,@gondviseloId int
,@kovGondviseloId int'
,@intezmenyId = @intezmenyId
,@tanevId = @tanevId
,@kovetkezoTanevId = @kovetkezoTanevId
,@gondviseloId = @gondviseloId
,@kovGondviseloId = @kovGondviseloId
EXEC uspFollowUpGondviseloCim
@intezmenyId
,@tanevId
,@kovetkezoTanevId
,@gondviseloId
,@kovGondviseloId = @kovGondviseloId
END
GO