USP_SMARTFIELD_SPONSORSHIPOPPORTUNITYPROJECTACTIVESPONSORS

Parameters

Parameter Parameter Type Mode Description
@ASOF datetime IN
@SITES xml IN

Definition

Copy


CREATE procedure dbo.USP_SMARTFIELD_SPONSORSHIPOPPORTUNITYPROJECTACTIVESPONSORS
(
    @ASOF datetime,
    @SITES xml = null
)
as
    declare @TABLE table (ID uniqueidentifier)

    if @ASOF is not null
        insert into 
            @TABLE(ID) 
        select 
            SPONSORSHIPOPPORTUNITYID 
        from 
            dbo.SPONSORSHIP 
        inner join
            dbo.SPONSORSHIPOPPORTUNITYPROJECT on SPONSORSHIPOPPORTUNITYPROJECT.ID = SPONSORSHIP.SPONSORSHIPOPPORTUNITYID 
        where 
            SPONSORSHIP.DATECHANGED > @ASOF

        union 

        select 
            SPONSORSHIPOPPORTUNITYID 
        from 
            dbo.SPONSORSHIPAUDIT 
        inner join 
            dbo.SPONSORSHIPOPPORTUNITYPROJECT on SPONSORSHIPOPPORTUNITYPROJECT.ID = SPONSORSHIPAUDIT.SPONSORSHIPOPPORTUNITYID 
        where 
            SPONSORSHIPAUDIT.AUDITDATE > @ASOF

        union 

        select 
            ID 
        from 
            dbo.SPONSORSHIPOPPORTUNITYPROJECT 
        where 
            DATEADDED > @ASOF;
    else
        insert into 
            @TABLE(ID) 
        select 
            ID 
        from 
            dbo.SPONSORSHIPOPPORTUNITYPROJECT


    declare @SITESFILTER table(ID uniqueidentifier primary key);
    insert into 
        @SITESFILTER(ID) 
    select distinct
        T.c.value('(SITEID)[1]','uniqueidentifier')
    FROM
        @SITES.nodes('/SITES/ITEM') T(c)

    select 
        SOC.ID, 
        (
            select 
                count(*)
            from 
                dbo.SPONSORSHIP S
            where 
                S.SPONSORSHIPOPPORTUNITYID = SOC.ID
                and 
                S.STATUSCODE = 1
                and
                (
                    (@SITES is null
                    or
                    ((select COUNT(ID) from @SITESFILTER) = 0)
                    or 
                    exists(
                        select 
                            CONSTITUENTSITE.ID 
                        from 
                            CONSTITUENTSITE 
                        inner join 
                            @SITESFILTER as SITES on SITES.ID = CONSTITUENTSITE.SITEID 
                        where 
                            CONSTITUENTSITE.CONSTITUENTID = S.CONSTITUENTID
                    )
                )
        ) as VAL
    from 
        @TABLE SOC