USP_DATALIST_CONSTITUENTGROUP_PENDINGINTERACTIONS

List of pending interactions belonging to a constituent group and its current members.

Parameters

Parameter Parameter Type Mode Description
@GROUPID uniqueidentifier IN Input parameter indicating the context ID for the data list.
@CURRENTAPPUSERID uniqueidentifier IN Input parameter indicating the ID of the current user.
@DATEFILTER tinyint IN Date
@STARTDATE datetime IN Start date
@ENDDATE datetime IN End date
@TYPEFILTER uniqueidentifier IN Contact method
@SITEFILTERMODE tinyint IN Sites
@SITESSELECTED xml IN
@SECURITYFEATUREID uniqueidentifier IN Input parameter indicating the ID of the feature to use for site security checking.
@SECURITYFEATURETYPE tinyint IN Input parameter indicating the type of the feature to use for site security checking.
@SHOWCOMPLETED bit IN Show completed interactions

Definition

Copy


CREATE procedure dbo.USP_DATALIST_CONSTITUENTGROUP_PENDINGINTERACTIONS
(
  @GROUPID uniqueidentifier,
  @CURRENTAPPUSERID uniqueidentifier,
  @DATEFILTER tinyint = 0,
  @STARTDATE datetime = null,
  @ENDDATE datetime = null,
  @TYPEFILTER uniqueidentifier = null,
  @SITEFILTERMODE tinyint = 0,
  @SITESSELECTED xml = null,
  @SECURITYFEATUREID uniqueidentifier = null,
  @SECURITYFEATURETYPE tinyint = null,
  @SHOWCOMPLETED bit = 0

as begin
  set nocount on;

  declare @DATE datetime

  set @DATE = getdate();

  if @DATEFILTER = 0        -- all

    begin
      set @STARTDATE = null
      set @ENDDATE = null
    end

  if @DATEFILTER = 1        -- this year

    begin
      set @STARTDATE = dbo.UFN_DATE_THISCALENDARYEAR_FIRSTDAY(@DATE, 0)
      set @ENDDATE = dbo.UFN_DATE_THISCALENDARYEAR_LASTDAY(@DATE, 0)
    end

  if @DATEFILTER = 2        -- this quarter

    begin
      set @STARTDATE = dbo.UFN_DATE_THISQUARTER_FIRSTDAY(@DATE, 0)
      set @ENDDATE = dbo.UFN_DATE_THISQUARTER_LASTDAY(@DATE, 0)
    end

  if @DATEFILTER = 3        -- this month

  begin
    set @STARTDATE = dbo.UFN_DATE_THISMONTH_FIRSTDAY(@DATE, 0)
    set @ENDDATE = dbo.UFN_DATE_THISMONTH_LASTDAY(@DATE, 0)
  end

  if @DATEFILTER = 4        -- this week

  begin
    set @STARTDATE = dbo.UFN_DATE_THISWEEK_FIRSTDAY(@DATE, 0)
    set @ENDDATE = dbo.UFN_DATE_THISWEEK_LASTDAY(@DATE, 0)
  end

  if @DATEFILTER = 5        -- next week

  begin
    set @STARTDATE = dbo.UFN_DATE_NEXTWEEK_FIRSTDAY(@DATE, 0)
    set @ENDDATE = dbo.UFN_DATE_NEXTWEEK_LASTDAY(@DATE, 0)
  end

  if @DATEFILTER = 6        -- next month

  begin
    set @STARTDATE = dbo.UFN_DATE_NEXTMONTH_FIRSTDAY(@DATE, 0)
    set @ENDDATE = dbo.UFN_DATE_NEXTMONTH_LASTDAY(@DATE, 0)
  end

  if @DATEFILTER = 7        -- next quarter

  begin
    set @STARTDATE = dbo.UFN_DATE_NEXTQUARTER_FIRSTDAY(@DATE, 0)
    set @ENDDATE = dbo.UFN_DATE_NEXTQUARTER_LASTDAY(@DATE, 0)
  end

  if @DATEFILTER = 8        -- next year

  begin
    set @STARTDATE = dbo.UFN_DATE_NEXTCALENDARYEAR_FIRSTDAY(@DATE, 0)
    set @ENDDATE = dbo.UFN_DATE_NEXTCALENDARYEAR_LASTDAY(@DATE, 0)
  end

  declare @CURRENTDATE datetime;
  set @CURRENTDATE = dbo.UFN_DATE_GETEARLIESTTIME(getdate());

  declare @DATALISTID uniqueidentifier;
  set @DATALISTID = '9dbf2aca-66da-443d-bfc9-89cad0d53e72';

  with CONSTITUENTS_CTE as
  (
    select
    CONSTITUENT.ID as ID,
    NF.NAME,
    CONSTITUENT.KEYNAME,
    CONSTITUENT.FIRSTNAME,
    GROUPMEMBER.ISPRIMARY,
    GMDR.DATEFROM,
    GMDR.DATETO,
    0 as ISGROUP
    from
    dbo.GROUPMEMBER
    inner join
    dbo.CONSTITUENT on CONSTITUENT.ID = GROUPMEMBER.MEMBERID
    left join
    dbo.GROUPMEMBERDATERANGE GMDR on GMDR.GROUPMEMBERID = GROUPMEMBER.ID
    outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(CONSTITUENT.ID) NF
    where
    GROUPMEMBER.GROUPID = @GROUPID

    union all

    select
    ID,
    NF.NAME,
    '' as KEYNAME,
    '' as FIRSTNAME,
    0 as ISPRIMARY,
    null as DATEFROM,
    null as DATETO,
    1 as ISGROUP
    from
    dbo.CONSTITUENT
    outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(CONSTITUENT.ID) NF
    where
    CONSTITUENT.ID = @GROUPID
  ),

  INTERACTION_CTE as
  (
    select
    INTERACTION.ID,
    INTERACTION.DATE,
    INTERACTION.STATUS,
    case
      when INTERACTION.INTERACTIONBASETYPE = 2 then INTERACTION.CONSTITUENTID
      else INTERACTION.FUNDRAISERID
    end as OWNERID,
    INTERACTION.OBJECTIVE,
    INTERACTION.INTERACTIONTYPECODEID,
    case
      when INTERACTION.INTERACTIONBASETYPE = 2 then
      case
        when exists(select 1 from dbo.STEWARDSHIPNOTE where STEWARDSHIPNOTE.STEPID = INTERACTION.ID)
        or exists(select 1 from dbo.STEWARDSHIPATTACHMENT where STEWARDSHIPATTACHMENT.STEPID = INTERACTION.ID)
        or exists(select 1 from dbo.STEWARDSHIPMEDIALINK where STEWARDSHIPMEDIALINK.STEPID = INTERACTION.ID) then 1
      else 0
      end
      else
      case
        when exists(select 1 from dbo.INTERACTIONNOTE where INTERACTIONNOTE.INTERACTIONID = INTERACTION.ID)
        or exists(select 1 from dbo.INTERACTIONATTACHMENT where INTERACTIONATTACHMENT.INTERACTIONID = INTERACTION.ID)
        or exists(select 1 from dbo.INTERACTIONMEDIALINK where INTERACTIONMEDIALINK.INTERACTIONID = INTERACTION.ID) then 1
      else 0
      end
    end as HASDOCUMENTATION,
    case
      when INTERACTION.INTERACTIONBASETYPE = 1 then 1
      else 0
    end as ISMOVE,
    INTERACTION.EVENTID,
    coalesce(INTERACTIONCATEGORY.NAME, STEWARDSHIPSTEPCATEGORYCODE.DESCRIPTION) as CATEGORY,
    INTERACTIONSUBCATEGORY.NAME as SUBCATEGORY,
    INTERACTION.STARTTIME,
    INTERACTION.ENDTIME,
    INTERACTION.TIMEZONEENTRYID,
    case
      when INTERACTION.INTERACTIONBASETYPE = 2 then 1
      else 0
    end as ISSTEWARDSHIPSTEP,
    case
      when CONSTITUENT.ISGROUP = 1 then '0'
      else
      case
        when CONSTITUENT.ISPRIMARY = 1 then '1'
        else '2' + CONSTITUENT.KEYNAME + ' ' + CONSTITUENT.FIRSTNAME + ' ' + cast(CONSTITUENT.ID as nvarchar(36))
      end
    end as GROUPORPRIMARYSORT,
    CONSTITUENT.NAME as GROUPORPRIMARYSORTVALUE,
    case 
      when dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID) = 1 then 1 
      else dbo.UFN_SECURITY_APPUSER_GRANTED_DATALIST_FORCONSTIT(@CURRENTAPPUSERID, @DATALISTID, CONSTITUENT.ID)
    end HASPERMISSIONS,
    INTERACTION.INTERACTIONBASETYPE,
    INTERACTION.PROSPECTPLANID,
    INTERACTION.STEWARDSHIPPLANID,
    case
      when INTERACTIONCONSTITUENT.ISGROUP = 1 then 0
      when INTERACTIONCONSTITUENT.ISORGANIZATION = 1 then 0
      else 1
    end as ISINDIVIDUALSTEP
    from
    dbo.V_CONSTITUENT_INTERACTION INTERACTION
    left join
    dbo.INTERACTIONSUBCATEGORY on INTERACTIONSUBCATEGORY.ID = INTERACTION.INTERACTIONSUBCATEGORYID
    left join
    dbo.INTERACTIONCATEGORY on INTERACTIONCATEGORY.ID = INTERACTIONSUBCATEGORY.INTERACTIONCATEGORYID
    left join
    dbo.STEWARDSHIPSTEPCATEGORYCODE on STEWARDSHIPSTEPCATEGORYCODE.ID = INTERACTION.STEWARDSHIPSTEPCATEGORYCODEID
    left join
    dbo.INTERACTIONPARTICIPANT on INTERACTIONPARTICIPANT.INTERACTIONID = INTERACTION.ID
    inner join
    CONSTITUENTS_CTE CONSTITUENT on (CONSTITUENT.ID = INTERACTION.CONSTITUENTID) or (CONSTITUENT.ID = INTERACTION.CONTACTPERSONID) or (CONSTITUENT.ID = INTERACTIONPARTICIPANT.CONSTITUENTID)
    left join
    dbo.CONSTITUENT INTERACTIONCONSTITUENT on INTERACTIONCONSTITUENT.ID = INTERACTION.CONSTITUENTID
    where
    (
      (INTERACTION.DATE between @STARTDATE and @ENDDATE) or
      (@STARTDATE is null and @ENDDATE is null) or
      (INTERACTION.DATE >= @STARTDATE and @ENDDATE is null) or
      (@STARTDATE is null and INTERACTION.DATE <= @ENDDATE)
    ) and
    (
      (CONSTITUENT.DATEFROM is null and (CONSTITUENT.DATETO is null or CONSTITUENT.DATETO > INTERACTION.DATE)) or
      (CONSTITUENT.DATETO is null and (CONSTITUENT.DATEFROM is null or CONSTITUENT.DATEFROM <= INTERACTION.DATE)) or
      (CONSTITUENT.DATEFROM <= INTERACTION.DATE and CONSTITUENT.DATETO > INTERACTION.DATE)
    ) and
    (@TYPEFILTER is null or INTERACTION.INTERACTIONTYPECODEID = @TYPEFILTER) and
    (@SHOWCOMPLETED = 1 or INTERACTION.STATUS != 'Completed')    and
    exists(
      select top 1 INTERACTIONSITE.SITEID from dbo.UFN_SITEID_MAPFROM_INTERACTIONID(INTERACTION.ID) INTERACTIONSITE
      where (dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID) = 1 or exists (select 1 from dbo.UFN_SITESFORUSERONFEATURE(@CURRENTAPPUSERID,@SECURITYFEATUREID,@SECURITYFEATURETYPE) where SITEID=[INTERACTIONSITE].[SITEID] or (SITEID is null and [INTERACTIONSITE].[SITEID] is null)))
    ) and
    (
      @SITEFILTERMODE = 0 or
      (INTERACTION.INTERACTIONBASETYPE = 0 and INTERACTION.ID in 
      (
select INTERACTIONSITE.INTERACTIONID
        from dbo.UFN_SITE_BUILDDATALISTSITEFILTER (@CURRENTAPPUSERID, @SITEFILTERMODE, @SITESSELECTED) SITEFILTER
        inner join dbo.INTERACTIONSITE on INTERACTIONSITE.SITEID = SITEFILTER.SITEID
      )
      ) or
      (INTERACTION.INTERACTIONBASETYPE = 1 and INTERACTION.PROSPECTPLANID in
      (
        select PROSPECTPLANSITE.PROSPECTPLANID
        from dbo.UFN_SITE_BUILDDATALISTSITEFILTER (@CURRENTAPPUSERID, @SITEFILTERMODE, @SITESSELECTED) SITEFILTER
        inner join dbo.PROSPECTPLANSITE on PROSPECTPLANSITE.SITEID = SITEFILTER.SITEID
      )
      ) or
      (INTERACTION.INTERACTIONBASETYPE = 2 and INTERACTION.STEWARDSHIPPLANID in
      (
        select STEWARDSHIPPLANSITE.STEWARDSHIPPLANID
        from dbo.UFN_SITE_BUILDDATALISTSITEFILTER (@CURRENTAPPUSERID, @SITEFILTERMODE, @SITESSELECTED) SITEFILTER
        inner join dbo.STEWARDSHIPPLANSITE on STEWARDSHIPPLANSITE.SITEID = SITEFILTER.SITEID
      )
      )
    )
  )
  select
    I.ID,
    I.DATE,
    I.GROUPORPRIMARYSORTVALUE,
    I.STATUS,
    FC.ID OWNERID,
    NF.NAME FUNDRAISER,
    I.OBJECTIVE,
    INTERACTIONTYPECODE.DESCRIPTION INTERACTIONTYPE,
    I.ISMOVE ISSTEP,
    I.HASDOCUMENTATION,
    I.HASPERMISSIONS,
    min(I.GROUPORPRIMARYSORT) GROUPORPRIMARYSORT,
    I.CATEGORY NAME,
    I.SUBCATEGORY NAME,
    case
    when I.INTERACTIONBASETYPE = 1 then '6ce4b0e8-cfcf-4f57-94c3-00eea94fb499'
    when I.INTERACTIONBASETYPE = 2 then '0a9d7c4b-018d-48b5-aa14-589cf6c0d97b'
    else 'b525985b-be02-4f02-a9b8-c110411cf936'
    end as VIEWFORMID,
    case
    when I.INTERACTIONBASETYPE = 1 then dbo.UFN_STEWARDSHIPPLAN_GETSITELIST(I.STEWARDSHIPPLANID)
    when I.INTERACTIONBASETYPE = 2 then dbo.UFN_PROSPECTPLAN_GETSITELIST(I.PROSPECTPLANID)
    else dbo.UFN_CONSTITUENTINTERACTION_GETSITELIST(I.ID)
    end as SITES,
    I.ISSTEWARDSHIPSTEP,
    I.ISINDIVIDUALSTEP
  from
    INTERACTION_CTE I
  inner join
    dbo.INTERACTIONTYPECODE on I.INTERACTIONTYPECODEID = INTERACTIONTYPECODE.ID
  left outer join 
    dbo.CONSTITUENT FC on FC.ID = I.OWNERID
  outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(FC.ID) NF
  group by
    I.ID, I.DATE, I.GROUPORPRIMARYSORTVALUE, I.STATUS, FC.ID, NF.NAME, I.OBJECTIVE, I.INTERACTIONTYPECODEID,
    I.ISMOVE, I.HASDOCUMENTATION, I.HASPERMISSIONS, I.CATEGORY, I.SUBCATEGORY, I.INTERACTIONBASETYPE,
    I.PROSPECTPLANID, I.STEWARDSHIPPLANID, INTERACTIONTYPECODE.DESCRIPTION, I.ISSTEWARDSHIPSTEP, I.ISINDIVIDUALSTEP
  order by
    GROUPORPRIMARYSORT, I.DATE;

end