UFN_SPONSORSHIPOPPORTUNITIES_FOR_PROGRAM

Gets all the sponsorship opportunities for a given sponsorship program.

Return

Return Type
int

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN

Definition

Copy


            CREATE function dbo.UFN_SPONSORSHIPOPPORTUNITIES_FOR_PROGRAM(@ID uniqueidentifier)
            returns int
            with execute as caller
            as begin
                declare @COUNT int = 0;      

                declare @PROGRAMFILTEREDLOCATION table    
                (    
                    HIERARCHYPATH hierarchyid    
                )    

                insert into @PROGRAMFILTEREDLOCATION (HIERARCHYPATH)    
                select 
                    FILTERLOCATION.HIERARCHYPATH    
                from dbo.SPONSORSHIPPROGRAM    
                cross apply dbo.UFN_SPONSORSHIPPROGRAM_FILTERLOCATIONS(SPONSORSHIPPROGRAM.FILTERLOCATIONS) X      
                inner join dbo.SPONSORSHIPLOCATION FILTERLOCATION on FILTERLOCATION.ID = X.SPONSORSHIPLOCATIONID    
                where    
                    SPONSORSHIPPROGRAM.ID = @ID    

                select @COUNT = count(*)    
                from dbo.SPONSORSHIPOPPORTUNITY      
                inner join dbo.SPONSORSHIPPROGRAM on SPONSORSHIPPROGRAM.SPONSORSHIPOPPORTUNITYGROUPID = SPONSORSHIPOPPORTUNITY.SPONSORSHIPOPPORTUNITYGROUPID      
                left outer join dbo.SPONSORSHIPLOCATION OPPORTUNITYLOCATION on OPPORTUNITYLOCATION.ID = SPONSORSHIPOPPORTUNITY.SPONSORSHIPLOCATIONID      
                where     
                    SPONSORSHIPPROGRAM.ID = @ID and     
                    (    
                        SPONSORSHIPPROGRAM.FILTERLOCATIONCODE = 0 or      
                        (    
                            SPONSORSHIPPROGRAM.FILTERLOCATIONCODE = 1 and      
                            exists    
                            (    
                                select 'x'      
                                from @PROGRAMFILTEREDLOCATION PROGRAMFILTEREDLOCATION    
                                where     
                                OPPORTUNITYLOCATION.HIERARCHYPATH.IsDescendantOf(PROGRAMFILTEREDLOCATION.HIERARCHYPATH) = 1    
                            )
                        ) or      
                        (    
                            SPONSORSHIPPROGRAM.FILTERLOCATIONCODE = 2 and      
                            not exists    
                            (    
                                select 'x'      
                                from @PROGRAMFILTEREDLOCATION PROGRAMFILTEREDLOCATION    
                                where     
                                OPPORTUNITYLOCATION.HIERARCHYPATH.IsDescendantOf(PROGRAMFILTEREDLOCATION.HIERARCHYPATH) = 1    
                            )    
                        )    
                    )

                return @COUNT      
            end