USP_AUCTIONITEMBATCH_CONSTITUENT_DELETE

Deletes an auction item batch constituent.

Parameters

Parameter Parameter Type Mode Description
@BATCHAUCTIONITEMCONSTITUENTID uniqueidentifier IN
@CHANGEAGENTID uniqueidentifier INOUT

Definition

Copy


            create procedure dbo.USP_AUCTIONITEMBATCH_CONSTITUENT_DELETE
            (
                @BATCHAUCTIONITEMCONSTITUENTID uniqueidentifier,
                @CHANGEAGENTID uniqueidentifier = null output
            )
            as
                set nocount on;

                if @CHANGEAGENTID is null
                    exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output

                --cache current context information

                declare @contextCache varbinary(128);
                set @contextCache = CONTEXT_INFO();
                --set CONTEXT_INFO to @CHANGEAGENTID

                set CONTEXT_INFO @CHANGEAGENTID;

                -- If the constituent is a group/household or individual that resulted in a household, remove members of the group


                -- First, store which constituents are members

                declare @GROUPMEMBERSANDRELATIONS table
                (
                    BATCHAUCTIONITEMCONSTITUENTID uniqueidentifier
                )

                -- Determine the household ID that may have been generated if the constituent is an individual

                declare @HOUSEHOLDID uniqueidentifier
                select @HOUSEHOLDID = BRCGM.GROUPID
                from dbo.BATCHAUCTIONITEMCONSTITUENTGROUPMEMBER BRCGM
                inner join BATCHAUCTIONITEMCONSTITUENT BRC on BRCGM.GROUPID = BRC.ID
                where
                    BRCGM.MEMBERID = @BATCHAUCTIONITEMCONSTITUENTID and
                    BRC.GROUPTYPECODE = 0 -- Verify group is household


                insert into @GROUPMEMBERSANDRELATIONS (BATCHAUCTIONITEMCONSTITUENTID)
                select MEMBERID from dbo.BATCHAUCTIONITEMCONSTITUENTGROUPMEMBER 
                where 
                    -- Handle when the constituent is a group/household

                    GROUPID = @BATCHAUCTIONITEMCONSTITUENTID or
                    -- Handle household generated by individual

                    GROUPID = @HOUSEHOLDID
                union
                select RELATIONID from dbo.BATCHAUCTIONITEMCONSTITUENTRELATION where CONSTITUENTID = @BATCHAUCTIONITEMCONSTITUENTID

                -- Handle the case when the constituent was a group and their primary contact was an individual or household

                -- (we prevent the user from selecting a group as a primary contact through the form metadata)

                insert into @GROUPMEMBERSANDRELATIONS (BATCHAUCTIONITEMCONSTITUENTID)
                select MEMBERID from dbo.BATCHAUCTIONITEMCONSTITUENTGROUPMEMBER 
                where
                    GROUPID in (select BATCHAUCTIONITEMCONSTITUENTID from @GROUPMEMBERSANDRELATIONS)
                union
                select GROUPID from dbo.BATCHAUCTIONITEMCONSTITUENTGROUPMEMBER 
                where
                    MEMBERID in (select BATCHAUCTIONITEMCONSTITUENTID from @GROUPMEMBERSANDRELATIONS)
                union
                select RELATIONID from dbo.BATCHAUCTIONITEMCONSTITUENTRELATION
                where CONSTITUENTID in (select BATCHAUCTIONITEMCONSTITUENTID from @GROUPMEMBERSANDRELATIONS)

                delete from dbo.BATCHAUCTIONITEMCONSTITUENTGROUPMEMBER 
                where 
                    GROUPID = @BATCHAUCTIONITEMCONSTITUENTID or 
                    GROUPID = @HOUSEHOLDID or
                    GROUPID in (select BATCHAUCTIONITEMCONSTITUENTID from @GROUPMEMBERSANDRELATIONS)

                delete from dbo.BATCHAUCTIONITEMCONSTITUENTRELATION
                where
                    CONSTITUENTID = @BATCHAUCTIONITEMCONSTITUENTID or
                    CONSTITUENTID in (select BATCHAUCTIONITEMCONSTITUENTID from @GROUPMEMBERSANDRELATIONS)

                delete from dbo.BATCHAUCTIONITEMCONSTITUENT 
                where ID in (select BATCHAUCTIONITEMCONSTITUENTID from @GROUPMEMBERSANDRELATIONS)

                if @HOUSEHOLDID is not null
                    delete from dbo.BATCHAUCTIONITEMCONSTITUENT where ID = @HOUSEHOLDID

                --delete the temporary batch version of the constituent

                delete from dbo.BATCHAUCTIONITEMCONSTITUENT where ID = @BATCHAUCTIONITEMCONSTITUENTID

                --reset CONTEXT_INFO to previous value

                if not @contextCache is null
                    set CONTEXT_INFO @contextCache;