TR_TEAMEXTENSION_INSERT_FAFGROUPDIRECTHIERARCHY

Definition

Copy


          CREATE trigger TR_TEAMEXTENSION_INSERT_FAFGROUPDIRECTHIERARCHY on dbo.TEAMEXTENSION after insert not for replication
          as begin
              declare @CHANGEAGENTID uniqueidentifier,
                          @CURRENTDATE datetime

                  exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output
                  set @CURRENTDATE = GETDATE()

              ;With CTE_PARENT(TEAMID, PARENTTEAMID)
               AS
               (
                  select T.ID, T.PARENTTEAMID
                  from inserted I
                  join dbo.TEAMFUNDRAISINGTEAM T on I.TEAMFUNDRAISINGTEAMID = T.ID
                  union all
                  select C.TEAMID, TFT.PARENTTEAMID
                  from dbo.TEAMFUNDRAISINGTEAM TFT
                  join CTE_PARENT C ON TFT.ID = C.PARENTTEAMID 
               )
              ,CTE_CHILDREN(TEAMID, PARENTTEAMID)
              as
              (
                  select T.ID, T.PARENTTEAMID
                  from inserted I
                  join dbo.TEAMFUNDRAISINGTEAM T on I.TEAMFUNDRAISINGTEAMID = T.ID
                  union all    
                  select TFT.ID, C.PARENTTEAMID
                  from dbo.TEAMFUNDRAISINGTEAM TFT
                  join CTE_CHILDREN C ON TFT.PARENTTEAMID = C.TEAMID
              ),
              CTE_ALL(TEAMID, PARENTTEAMID)
              AS
              (
                  select TEAMID, PARENTTEAMID from CTE_PARENT 
                  union all 
                  select TEAMID, PARENTTEAMID from CTE_CHILDREN
              ) 

              insert into dbo.FAFGROUPDIRECTHIERARCHY(ID, EVENTID, GROUPID, GROUPCONSTITUENTID, CHILDGROUPID, CHILDGROUPCONSTITUENTID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
              select newID(), A.*,@CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE from (
                  select distinct cTX.EVENTID, C.PARENTTEAMID as GROUPID , pTX.TEAMCONSTITUENTID as GROUPCONSTITUENTID, C.TEAMID as CHILDGROUPID, cTX.TEAMCONSTITUENTID as CHILDGROUPCONSTITUENTID
                  from CTE_ALL c
                  left join dbo.TEAMEXTENSION cTX (nolock) on cTX.TEAMFUNDRAISINGTEAMID = C.TEAMID
                  left join dbo.TEAMEXTENSION pTX (nolock) on pTX.TEAMFUNDRAISINGTEAMID = C.PARENTTEAMID
                  where C.PARENTTEAMID is not null 
              ) A

              -- insert self record.

              insert into dbo.FAFGROUPDIRECTHIERARCHY(ID, EVENTID, GROUPID, GROUPCONSTITUENTID, CHILDGROUPID, CHILDGROUPCONSTITUENTID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
              select newID(), I.EVENTID, I.TEAMFUNDRAISINGTEAMID, I.TEAMCONSTITUENTID, I.TEAMFUNDRAISINGTEAMID, I.TEAMCONSTITUENTID, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE 
              from inserted I 

          end