USP_DATALIST_CONSTITUENTGROUPAPPEAL

List of appeals for a constituent group and its members.

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN Input parameter indicating the context ID for the data list.
@CURRENTAPPUSERID uniqueidentifier IN Input parameter indicating the ID of the current user.

Definition

Copy


                CREATE procedure dbo.USP_DATALIST_CONSTITUENTGROUPAPPEAL 
        (
          @ID uniqueidentifier,
          @CURRENTAPPUSERID uniqueidentifier
        )
                as
                  set nocount on;

          declare @DATALISTID uniqueidentifier;
          set @DATALISTID = 'c15d0dc5-4dc0-45a5-a8e4-dfefceb24337';

          with APPEALS_CTE as
          (
            select
                CONSTITUENTAPPEAL.ID,
                CONSTITUENTAPPEAL.APPEALID,
                APPEAL.NAME APPEALNAME,
                APPEAL.DESCRIPTION,
                CONSTITUENTAPPEAL.DATESENT,
                CONSTITUENTAPPEAL.SOURCECODE,
                case 
                    when CONSTITUENTAPPEAL.FINDERNUMBER = 0 then null 
                    else CONSTITUENTAPPEAL.FINDERNUMBER 
                end as FINDERNUMBER,
                CONSTITUENTAPPEAL.COMMENTS,
                CONSTITUENTAPPEAL.MKTSEGMENTATIONID,
                CONSTITUENTAPPEAL.MKTSEGMENTATIONSEGMENTID,
                MKTPACKAGE.NAME as PACKAGE,
                MKTSEGMENTATION.NAME as MAILING,
                dbo.UFN_MKTSEGMENTATIONSEGMENT_GETNAME(CONSTITUENTAPPEAL.MKTSEGMENTATIONSEGMENTID) as SEGMENT,
                dbo.UFN_MKTSEGMENTATIONTESTSEGMENT_GETNAME(CONSTITUENTAPPEAL.MKTSEGMENTATIONTESTSEGMENTID) as TESTSEGMENT,
                CONSTITUENTAPPEAL.CONSTITUENTID as CONSTITUENTID,
                case 
                    when exists(
                            select 1 
                            from dbo.CONSTITUENTAPPEALRESPONSE 
                            where CONSTITUENTAPPEALRESPONSE.CONSTITUENTAPPEALID=CONSTITUENTAPPEAL.ID
                        )
                        then convert(bit,1
                    else convert(bit,0
                end as HASRESPONSES,
                case
                    when MAILLETTER.ID is not null then MAILLETTER.NAME + ' (Mail)'
                    when EMAILLETTER.ID is not null then EMAILLETTER.NAME + ' (Email)'
                    else ''
                end    LETTER
            from dbo.CONSTITUENTAPPEAL
                inner join dbo.APPEAL on APPEAL.ID = CONSTITUENTAPPEAL.APPEALID
                left join dbo.MKTPACKAGE on MKTPACKAGE.ID = CONSTITUENTAPPEAL.MKTPACKAGEID
                left join dbo.MKTSEGMENTATION on MKTSEGMENTATION.ID = CONSTITUENTAPPEAL.MKTSEGMENTATIONID 
                inner join dbo.GROUPMEMBER GM on CONSTITUENTAPPEAL.CONSTITUENTID = GM.MEMBERID
                left join dbo.GROUPMEMBERDATERANGE GMDR on GM.ID = GMDR.GROUPMEMBERID
                left join dbo.APPEALMAILINGSETUPLETTER MAILLETTER
                    on CONSTITUENTAPPEAL.MKTSEGMENTATIONID = MAILLETTER.APPEALMAILINGSETUPID
                        and CONSTITUENTAPPEAL.MKTPACKAGEID = MAILLETTER.MAILPACKAGEID
                left join dbo.APPEALMAILINGSETUPLETTER EMAILLETTER
                    on CONSTITUENTAPPEAL.MKTSEGMENTATIONID = EMAILLETTER.APPEALMAILINGSETUPID
                        and CONSTITUENTAPPEAL.MKTPACKAGEID = EMAILLETTER.EMAILPACKAGEID
            where GM.GROUPID = @ID
                and ((GMDR.DATEFROM is null and (GMDR.DATETO is null or GMDR.DATETO >= CONSTITUENTAPPEAL.DATESENT))
                    or (GMDR.DATETO is null and (GMDR.DATEFROM is null or GMDR.DATEFROM <= CONSTITUENTAPPEAL.DATESENT)) 
                    or (GMDR.DATEFROM <= CONSTITUENTAPPEAL.DATESENT and GMDR.DATETO >= CONSTITUENTAPPEAL.DATESENT))

            union all

            select
            CONSTITUENTAPPEAL.ID,
            CONSTITUENTAPPEAL.APPEALID,
            APPEAL.NAME APPEALNAME,
            APPEAL.DESCRIPTION,
            CONSTITUENTAPPEAL.DATESENT,
            CONSTITUENTAPPEAL.SOURCECODE,
            case 
                when CONSTITUENTAPPEAL.FINDERNUMBER = 0 then null 
                else CONSTITUENTAPPEAL.FINDERNUMBER 
            end as FINDERNUMBER,
            CONSTITUENTAPPEAL.COMMENTS,
            CONSTITUENTAPPEAL.MKTSEGMENTATIONID,
            CONSTITUENTAPPEAL.MKTSEGMENTATIONSEGMENTID,
            MKTPACKAGE.NAME as PACKAGE,
            MKTSEGMENTATION.NAME as MAILING,
            dbo.UFN_MKTSEGMENTATIONSEGMENT_GETNAME(CONSTITUENTAPPEAL.MKTSEGMENTATIONSEGMENTID) as SEGMENT,
            dbo.UFN_MKTSEGMENTATIONTESTSEGMENT_GETNAME(CONSTITUENTAPPEAL.MKTSEGMENTATIONTESTSEGMENTID) as TESTSEGMENT,
            CONSTITUENTAPPEAL.CONSTITUENTID as CONSTITUENTID,
            case 
                when exists(
                        select 1 
                        from dbo.CONSTITUENTAPPEALRESPONSE 
                        where CONSTITUENTAPPEALRESPONSE.CONSTITUENTAPPEALID=CONSTITUENTAPPEAL.ID
                    )
                    then convert(bit,1
                else convert(bit,0
            end as HASRESPONSES,
            case
                when MAILLETTER.ID is not null then MAILLETTER.NAME + ' (Mail)'
                when EMAILLETTER.ID is not null then EMAILLETTER.NAME + ' (Email)'
                else ''
            end    LETTER
            from dbo.CONSTITUENTAPPEAL
                inner join dbo.APPEAL on APPEAL.ID = CONSTITUENTAPPEAL.APPEALID
                left join dbo.MKTPACKAGE on MKTPACKAGE.ID = CONSTITUENTAPPEAL.MKTPACKAGEID
                left join dbo.MKTSEGMENTATION on MKTSEGMENTATION.ID = CONSTITUENTAPPEAL.MKTSEGMENTATIONID 
                left join dbo.APPEALMAILINGSETUPLETTER MAILLETTER
                    on CONSTITUENTAPPEAL.MKTSEGMENTATIONID = MAILLETTER.APPEALMAILINGSETUPID
                        and CONSTITUENTAPPEAL.MKTPACKAGEID = MAILLETTER.MAILPACKAGEID
                left join dbo.APPEALMAILINGSETUPLETTER EMAILLETTER
                    on CONSTITUENTAPPEAL.MKTSEGMENTATIONID = EMAILLETTER.APPEALMAILINGSETUPID
                        and CONSTITUENTAPPEAL.MKTPACKAGEID = EMAILLETTER.EMAILPACKAGEID
            where CONSTITUENTAPPEAL.CONSTITUENTID = @ID
          )
          select
            ID,
            APPEALID,
            APPEALNAME,
            NF.NAME CONSTITUENTNAME,
            DESCRIPTION,
            MAILING,
            LETTER,
            DATESENT,
            PACKAGE,
            SOURCECODE,
            SEGMENT,
            TESTSEGMENT,
            FINDERNUMBER,
            COMMENTS,
            MKTSEGMENTATIONID,
            MKTSEGMENTATIONSEGMENTID,
            case
                when C.DATESENT >= dbo.UFN_DATE_THISMONTH_FIRSTDAY(getdate(), 0) then 'This month'
                when C.DATESENT >= dateadd(month, -1, dbo.UFN_DATE_THISMONTH_FIRSTDAY(getdate(), 0)) then 'Last month'
                when C.DATESENT >= dateadd(month, -2, dbo.UFN_DATE_THISMONTH_FIRSTDAY(getdate(), 0)) then 'Two months ago'
                else 'Older'
            end TIMEFRAMETEXT,
            case
                when C.DATESENT >= dbo.UFN_DATE_THISMONTH_FIRSTDAY(getdate(), 0) then '0'
                when C.DATESENT >= dateadd(month, -1, dbo.UFN_DATE_THISMONTH_FIRSTDAY(getdate(), 0)) then '2'
                when C.DATESENT >= dateadd(month, -2, dbo.UFN_DATE_THISMONTH_FIRSTDAY(getdate(), 0)) then '4'
                else '6'
            end TIMEFRAMEGROUPSORT,
            case when dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID) = 1 then 1 else 
              dbo.UFN_SECURITY_APPUSER_GRANTED_DATALIST_FORCONSTIT(@CURRENTAPPUSERID, @DATALISTID, C.CONSTITUENTID)
            end as 'HASPERMISSIONS',
            HASRESPONSES
            from APPEALS_CTE C
                outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(C.CONSTITUENTID) NF
            order by
                  TIMEFRAMEGROUPSORT asc, APPEALNAME asc;