UFN_EVENTAUCTION_SITESVALIDFORITEMS

Checks that all items have a designation that is valid with the auction sites.

Return

Return Type
bit

Parameters

Parameter Parameter Type Mode Description
@EVENTAUCTIONID uniqueidentifier IN
@SITES xml IN

Definition

Copy


            create function dbo.UFN_EVENTAUCTION_SITESVALIDFORITEMS
            (
                @EVENTAUCTIONID uniqueidentifier,
                @SITES xml
            )
            returns bit
            as begin
                declare @VALID bit = 1;

                declare @EVENTSITES table
                (
                    SITEID uniqueidentifier
                )

                insert into @EVENTSITES select SITEID from dbo.UFN_EVENT_GETSITES_FROMITEMLISTXML(@SITES)

                declare @EVENTSITESCOUNT int = 0;
                select @EVENTSITESCOUNT = count(SITEID) from @EVENTSITES;

                declare @INVALIDITEMCOUNT int = 0;

                select 
                    @INVALIDITEMCOUNT = count(AUCTIONITEM.ID)
                from 
                    dbo.AUCTIONITEM
                    left join dbo.REVENUESPLIT on AUCTIONITEM.REVENUEAUCTIONDONATIONID = REVENUESPLIT.REVENUEID
                    left join dbo.DESIGNATION on REVENUESPLIT.DESIGNATIONID = DESIGNATION.ID
                    left join dbo.DESIGNATIONLEVEL DL1 on DL1.ID = DESIGNATION.DESIGNATIONLEVEL1ID
                    left join dbo.DESIGNATIONLEVEL DL2 on DL2.ID = DESIGNATION.DESIGNATIONLEVEL2ID
                    left join dbo.DESIGNATIONLEVEL DL3 on DL3.ID = DESIGNATION.DESIGNATIONLEVEL3ID
                    left join dbo.DESIGNATIONLEVEL DL4 on DL4.ID = DESIGNATION.DESIGNATIONLEVEL4ID
                    left join dbo.DESIGNATIONLEVEL DL5 on DL5.ID = DESIGNATION.DESIGNATIONLEVEL5ID
                    left join dbo.SITE on coalesce(DL5.SITEID, DL4.SITEID, DL3.SITEID, DL2.SITEID, DL1.SITEID) = SITE.ID
                where
                    AUCTIONITEM.EVENTAUCTIONID = @EVENTAUCTIONID
                    and
                    AUCTIONITEM.TYPECODE = 0
                    and
                    (
                        (@EVENTSITESCOUNT = 0 and SITE.ID is not null)
                        or
                        (@EVENTSITESCOUNT > 0 and not exists (select 1 from @EVENTSITES [EVENTSITES] where EVENTSITES.SITEID = SITE.ID))
                    )

                if @INVALIDITEMCOUNT > 0
                    set @VALID = 0

                return @VALID
            end