USP_SPONSORSHIPOPPORTUNITYCHILD_SEARCH

Search for a child sponsorship opportunity

Parameters

Parameter Parameter Type Mode Description
@QUICKSEARCH nvarchar(100) IN QUICKSEARCH
@KEYNAME nvarchar(100) IN Last name
@FIRSTNAME nvarchar(100) IN First name
@LOOKUPID nvarchar(100) IN Lookup ID
@SPONSORSHIPOPPORTUNITYGROUPID uniqueidentifier IN Child group
@SPONSORSHIPPROGRAMID uniqueidentifier IN Sponsorship program
@SPONSORSHIPLOCATIONID uniqueidentifier IN Location
@ELIGIBILITYCODE smallint IN Eligibility
@AVAILABILITYCODE smallint IN Availability
@RESTRICTFORSOLESPONSORSHIP bit IN Only include unsponsored
@EXCLUDEOPPORTUNITYID uniqueidentifier IN EXCLUDEOPPORTUNITYID
@MAXROWS smallint IN Input parameter indicating the maximum number of rows to return.
@RESERVATIONKEYID uniqueidentifier IN Reservation key
@SPONSORSHIPOPPORTUNITYID uniqueidentifier IN SPONSORSHIPOPPORTUNITYID
@CORRESPONDINGSPONSORID uniqueidentifier IN CORRESPONDINGSPONSORID
@FINANCIALSPONSORID uniqueidentifier IN FINANCIALSPONSORID

Definition

Copy


CREATE procedure dbo.USP_SPONSORSHIPOPPORTUNITYCHILD_SEARCH
(
    @QUICKSEARCH nvarchar(100) = null,
    @KEYNAME nvarchar(100) = null,
    @FIRSTNAME nvarchar(100) = null,
    @LOOKUPID nvarchar(100) = null,
    @SPONSORSHIPOPPORTUNITYGROUPID uniqueidentifier = null,
    @SPONSORSHIPPROGRAMID uniqueidentifier = null,
    @SPONSORSHIPLOCATIONID uniqueidentifier = null,
    @ELIGIBILITYCODE smallint = -1,
    @AVAILABILITYCODE smallint = -1,
    @RESTRICTFORSOLESPONSORSHIP bit = 0,
    @EXCLUDEOPPORTUNITYID uniqueidentifier = null,
    @MAXROWS smallint = 500,
    @RESERVATIONKEYID uniqueidentifier = null,
    -- used by add sponsorship

    @SPONSORSHIPOPPORTUNITYID uniqueidentifier = null,
    @CORRESPONDINGSPONSORID uniqueidentifier = null,
    @FINANCIALSPONSORID uniqueidentifier = null
)
with execute as owner
as 

set nocount on;

  declare @tempid uniqueidentifier = newid();

  set @KEYNAME = ISNULL(@KEYNAME, '') + '%';
  set @FIRSTNAME = ISNULL(@FIRSTNAME, '') + '%';
  set @LOOKUPID = ISNULL(@LOOKUPID, '') + '%';

  declare @SQL nvarchar(max);
  set @SQL = '
    select top(@MAXROWS)
      SO.ID,
        CHILDNAME.NAME as NAME, 
      SO.LOOKUPID,
        (select NAME from dbo.SPONSORSHIPOPPORTUNITYGROUP SPR WHERE SPR.ID = SO.SPONSORSHIPOPPORTUNITYGROUPID) OPPORTUNITYGROUP,
        SO.ELIGIBILITY,
        SO.AVAILABILITY,
        C.GENDER, 
        C.BIRTHDATE,
        dbo.UFN_SPONSORSHIPLOCATION_GETFULLNAME(OPPORTUNITYLOCATION.ID) LOCATION
    from 
      SPONSORSHIPOPPORTUNITY SO
      inner join SPONSORSHIPOPPORTUNITYCHILD SC on SC.ID =SO.ID
      inner join CONSTITUENT C on C.ID=  SC.CONSTITUENTID
      left outer join dbo.SPONSORSHIPLOCATION SELECTEDLOCATION on SELECTEDLOCATION.ID = @SPONSORSHIPLOCATIONID
      left outer join dbo.SPONSORSHIPLOCATION OPPORTUNITYLOCATION on OPPORTUNITYLOCATION.ID = SO.SPONSORSHIPLOCATIONID
      left outer join dbo.SPONSORSHIPPROGRAM on SPONSORSHIPPROGRAM.ID = @SPONSORSHIPPROGRAMID
      outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(SC.CONSTITUENTID) [CHILDNAME]
     where
      (@SPONSORSHIPOPPORTUNITYID is null or SO.ID = @SPONSORSHIPOPPORTUNITYID) ' + CHAR(13);

  if @KEYNAME <> '%'
    set @SQL = @SQL + 'and (C.KEYNAME like @KEYNAME) ' + CHAR(13);

  if @FIRSTNAME <> '%'
    set @SQL = @SQL + 'and (C.FIRSTNAME like @FIRSTNAME) ' + CHAR(13);

  if @LOOKUPID <> '%'
    set @SQL = @SQL + 'and (SO.LOOKUPID like @LOOKUPID) ' + CHAR(13);

  if @SPONSORSHIPLOCATIONID is not null
    set @SQL = @SQL + 'and (OPPORTUNITYLOCATION.HIERARCHYPATH.IsDescendantOf(SELECTEDLOCATION.HIERARCHYPATH) = 1) ' + CHAR(13);

  if @SPONSORSHIPOPPORTUNITYGROUPID is not null
    set @SQL = @SQL + 'and (SO.SPONSORSHIPOPPORTUNITYGROUPID = @SPONSORSHIPOPPORTUNITYGROUPID) ' + CHAR(13);

  set @SQL = @SQL + '
      and (@SPONSORSHIPPROGRAMID is null or
             (SO.SPONSORSHIPOPPORTUNITYGROUPID = SPONSORSHIPPROGRAM.SPONSORSHIPOPPORTUNITYGROUPID and
              (SPONSORSHIPPROGRAM.FILTERLOCATIONCODE = 0 or
               (SPONSORSHIPPROGRAM.FILTERLOCATIONCODE = 1 and
                exists(select ''x''
                       from dbo.UFN_SPONSORSHIPPROGRAM_FILTERLOCATIONS(SPONSORSHIPPROGRAM.FILTERLOCATIONS) X
                         inner join dbo.SPONSORSHIPLOCATION FILTERLOCATION on FILTERLOCATION.ID = X.SPONSORSHIPLOCATIONID
                         where OPPORTUNITYLOCATION.HIERARCHYPATH.IsDescendantOf(FILTERLOCATION.HIERARCHYPATH) = 1)) or
               (SPONSORSHIPPROGRAM.FILTERLOCATIONCODE = 2 and
                not exists(select ''x''
                           from dbo.UFN_SPONSORSHIPPROGRAM_FILTERLOCATIONS(SPONSORSHIPPROGRAM.FILTERLOCATIONS) X
                             inner join dbo.SPONSORSHIPLOCATION FILTERLOCATION on FILTERLOCATION.ID = X.SPONSORSHIPLOCATIONID
                           where OPPORTUNITYLOCATION.HIERARCHYPATH.IsDescendantOf(FILTERLOCATION.HIERARCHYPATH) = 1))))) ' + CHAR(13);

    if @ELIGIBILITYCODE <> -1
      set @SQL = @SQL + 'and (SO.ELIGIBILITYCODE = @ELIGIBILITYCODE) ' + CHAR(13);

    if @AVAILABILITYCODE <> -1
      set @SQL = @SQL + 'and (SO.AVAILABILITYCODE = @AVAILABILITYCODE) ' + CHAR(13);

    if @EXCLUDEOPPORTUNITYID is not null
      set @SQL = @SQL + 'and (SO.ID <> @EXCLUDEOPPORTUNITYID) ' + CHAR(13);

    if @RESTRICTFORSOLESPONSORSHIP <> 0
      set @SQL = @SQL + 'and (
             not exists(select ''x''
                        from dbo.SPONSORSHIP S
                        where SO.ID = S.SPONSORSHIPOPPORTUNITYID
                        and S.STATUSCODE in(0,1))) ' + CHAR(13);

    if isnull(@QUICKSEARCH, '%') <> '%'
      set @SQL = @SQL + 'and (C.NAME like ''%''+@QUICKSEARCH+''%'' or SO.LOOKUPID like @QUICKSEARCH) ' + CHAR(13)

    if @RESERVATIONKEYID is not null
      set @SQL = @SQL + 'and (SO.RESERVATIONKEYID = @RESERVATIONKEYID) ' + CHAR(13);

    if @CORRESPONDINGSPONSORID is not null 
      set @SQL = @SQL + 'and (
             not exists(select ''x''
                         from dbo.SPONSORSHIP S
                         where S.SPONSORSHIPOPPORTUNITYID = SO.ID
                         and S.CONSTITUENTID = @CORRESPONDINGSPONSORID
                         and S.STATUSCODE in(0,1))) ' + CHAR(13);

  if @FINANCIALSPONSORID is not null
    set @SQL = @SQL + 'and (
             (select UNIQUEOPPORTUNITIESFORGIFTDONOR from dbo.SPONSOR where ID = @FINANCIALSPONSORID) = 0 or
             not exists(select ''x''
                          from dbo.REVENUE
                          inner join dbo.REVENUESPLIT on REVENUESPLIT.REVENUEID = REVENUE.ID
                          inner join dbo.SPONSORSHIP on SPONSORSHIP.REVENUESPLITID = REVENUESPLIT.ID
                          where REVENUE.CONSTITUENTID = @FINANCIALSPONSORID
                          and SPONSORSHIP.SPONSORSHIPOPPORTUNITYID = SO.ID
                          and SPONSORSHIP.STATUSCODE in(0,1))) ' + CHAR(13);

    if @ELIGIBILITYCODE    = 1
      set @SQL = @SQL + 'and (dbo.UFN_SPONSORSHIPOPPORTUNITY_AGEVALID(SO.SPONSORSHIPOPPORTUNITYGROUPID,C.BIRTHDATE) = 1) ' + CHAR(13);

  declare @PARAMS nvarchar(max);
  set @PARAMS = '@QUICKSEARCH nvarchar(100), @KEYNAME nvarchar(100), @FIRSTNAME nvarchar(100), @LOOKUPID nvarchar(100), @SPONSORSHIPOPPORTUNITYGROUPID uniqueidentifier, ' +
                '@SPONSORSHIPPROGRAMID uniqueidentifier, @SPONSORSHIPLOCATIONID uniqueidentifier, @ELIGIBILITYCODE smallint = -1, @AVAILABILITYCODE smallint = -1, ' +
                '@RESTRICTFORSOLESPONSORSHIP bit = 0, @EXCLUDEOPPORTUNITYID uniqueidentifier, @MAXROWS smallint = 500, @RESERVATIONKEYID uniqueidentifier, ' +
                '@SPONSORSHIPOPPORTUNITYID uniqueidentifier, @CORRESPONDINGSPONSORID uniqueidentifier, @FINANCIALSPONSORID uniqueidentifier = null';

  exec sp_executesql @SQL, @PARAMS, @QUICKSEARCH, @KEYNAME, @FIRSTNAME, @LOOKUPID, @SPONSORSHIPOPPORTUNITYGROUPID,
                      @SPONSORSHIPPROGRAMID, @SPONSORSHIPLOCATIONID, @ELIGIBILITYCODE, @AVAILABILITYCODE,
                      @RESTRICTFORSOLESPONSORSHIP, @EXCLUDEOPPORTUNITYID, @MAXROWS, @RESERVATIONKEYID
                      @SPONSORSHIPOPPORTUNITYID, @CORRESPONDINGSPONSORID, @FINANCIALSPONSORID;

  ;