spAddUpdate_GivingHistoryUsedFields
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@PayloadXML | xml | IN | |
@SiteContentID | int | IN |
Definition
Copy
CREATE PROCEDURE [dbo].[spAddUpdate_GivingHistoryUsedFields]
(
@PayloadXML XML,
@SiteContentID int
)
AS
BEGIN
BEGIN TRY
BEGIN TRANSACTION spAddUpdate_GHFields;
-- Delete fields that are no longer used
DELETE FROM GivingHistoryUsedFields
WHERE SiteContentID = @SiteContentID And FieldID NOT IN
(SELECT Tbl.Col.value('@FieldID', 'INT')
FROM @PayloadXml.nodes('//GivingHistoryColumn') Tbl(Col)
WHERE SiteContentID = @SiteContentID)
-- Update fields that are left
UPDATE GivingHistoryUsedFields SET
DisplayOrder = Tbl.Col.value('@DisplayOrder', 'INT')
FROM GivingHistoryUsedFields gh
INNER JOIN @PayloadXml.nodes('//GivingHistoryColumn') Tbl(Col) ON Tbl.Col.value('@FieldID', 'INT') = gh.FieldID
WHERE gh.SiteContentID = @SiteContentID
-- Insert any new fields
INSERT INTO GivingHistoryUsedFields(SiteContentID, FieldID, DisplayOrder)
(
SELECT @SiteContentID, Tbl.Col.value('@FieldID', 'INT'), Tbl.Col.value('@DisplayOrder', 'INT')
FROM @PayloadXml.nodes('//GivingHistoryColumn') Tbl(Col)
WHERE Tbl.Col.value('@FieldID', 'INT') NOT IN (SELECT FieldID FROM GivingHistoryUsedFields WHERE SiteContentID = @SiteContentID)
)
COMMIT TRANSACTION spAddUpdate_GHFields
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0
ROLLBACK
END CATCH
END