USP_DATALIST_SPONSORSHIPPROGRAM
List of all the sponsorship programs.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@INCLUDEOPPORTUNITIESCOUNT | bit | IN |
Definition
Copy
CREATE procedure [dbo].[USP_DATALIST_SPONSORSHIPPROGRAM]
(
@INCLUDEOPPORTUNITIESCOUNT bit = 1
)
as
set nocount on;
declare @OPPORTUNITIES TABLE
(
ID uniqueidentifier,
OPPORTUNITIES [int]
)
if @INCLUDEOPPORTUNITIESCOUNT = 1
begin
declare @FILTERLOCATIONCODE table
(
ID uniqueidentifier,
FILTERLOCATIONCODE [tinyint],
[HIERARCHYPATH] [hierarchyid]
)
insert into @FILTERLOCATIONCODE (ID,FILTERLOCATIONCODE,HIERARCHYPATH)
select distinct SPONSORSHIPPROGRAM.ID,SPONSORSHIPPROGRAM.FILTERLOCATIONCODE,FILTERLOCATION.HIERARCHYPATH
from dbo.SPONSORSHIPPROGRAM
cross apply dbo.UFN_SPONSORSHIPPROGRAM_FILTERLOCATIONS(SPONSORSHIPPROGRAM.FILTERLOCATIONS) X
join dbo.SPONSORSHIPLOCATION FILTERLOCATION on FILTERLOCATION.ID = X.SPONSORSHIPLOCATIONID
where SPONSORSHIPPROGRAM.FILTERLOCATIONCODE >= 1
union
select distinct SPONSORSHIPPROGRAM.ID,SPONSORSHIPPROGRAM.FILTERLOCATIONCODE,null
from dbo.SPONSORSHIPPROGRAM
where SPONSORSHIPPROGRAM.FILTERLOCATIONCODE = 0;
insert into @OPPORTUNITIES (ID,OPPORTUNITIES)
select SPONSORSHIPPROGRAM.ID , 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.FILTERLOCATIONCODE = 0
group by SPONSORSHIPPROGRAM.ID
union
select SPONSORSHIPPROGRAM.ID , 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.FILTERLOCATIONCODE = 1
and exists
(
select 'x'
from @FILTERLOCATIONCODE PROGRAMFILTEREDLOCATION
where PROGRAMFILTEREDLOCATION.FILTERLOCATIONCODE = 1
and SPONSORSHIPPROGRAM.ID = PROGRAMFILTEREDLOCATION.ID
and OPPORTUNITYLOCATION.HIERARCHYPATH.IsDescendantOf(PROGRAMFILTEREDLOCATION.HIERARCHYPATH) = 1
) group by SPONSORSHIPPROGRAM.ID
union
select SPONSORSHIPPROGRAM.ID , 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.FILTERLOCATIONCODE = 2
and not exists
(
select 'x'
from @FILTERLOCATIONCODE PROGRAMFILTEREDLOCATION
where PROGRAMFILTEREDLOCATION.FILTERLOCATIONCODE = 2
and SPONSORSHIPPROGRAM.ID = PROGRAMFILTEREDLOCATION.ID
and OPPORTUNITYLOCATION.HIERARCHYPATH.IsDescendantOf(PROGRAMFILTEREDLOCATION.HIERARCHYPATH) = 1
) group by SPONSORSHIPPROGRAM.ID
end
else
begin
insert into @OPPORTUNITIES (ID,OPPORTUNITIES)
select SPONSORSHIPPROGRAM.ID, 0
from SPONSORSHIPPROGRAM
end
select
SPONSORSHIPPROGRAM.ID,
SPONSORSHIPPROGRAM.NAME,
SPONSORSHIPOPPORTUNITYGROUP.NAME OPPORTUNITYGROUPNAME,
OPPS.OPPORTUNITIES OPPORTUNITIES,
case when SPONSORSHIPPROGRAM.ISINACTIVE = 1 then 'Inactive' else 'Active' end STATUS
from dbo.SPONSORSHIPPROGRAM
inner join dbo.SPONSORSHIPOPPORTUNITYGROUP on SPONSORSHIPOPPORTUNITYGROUP.ID = SPONSORSHIPPROGRAM.SPONSORSHIPOPPORTUNITYGROUPID
inner join @OPPORTUNITIES OPPS on OPPS.ID = SPONSORSHIPPROGRAM.ID
order by SPONSORSHIPPROGRAM.NAME