UFN_QUERY_MKTCOMMUNICATIONEFFORTS

Return

Return Type
table

Parameters

Parameter Parameter Type Mode Description
@CURRENTAPPUSERID uniqueidentifier IN
@SITEFILTERMODE tinyint IN
@SITESSELECTED xml IN

Definition

Copy


CREATE function dbo.[UFN_QUERY_MKTCOMMUNICATIONEFFORTS]
(
  @CURRENTAPPUSERID uniqueidentifier,
  @SITEFILTERMODE tinyint = 0,
  @SITESSELECTED xml = null
)
returns table as
return 
(

  with [APPEALS_CTE] ([SEGMENTATIONID], [APPEALNAME]) as
  (
    select
      [MKTSEGMENTATIONACTIVATE].[SEGMENTATIONID],
      (case when [MKTSEGMENTATIONACTIVATE].[RECORDSOURCEID] = 'DFB4B8C1-5E9A-4C14-ACE3-01C096B53BA0' then [APPEAL].[NAME] else [MKTSEGMENTATIONACTIVATE].[APPEALDESCRIPTION] end) as [APPEALNAME]
    from dbo.[MKTSEGMENTATIONACTIVATE]
    left join dbo.[APPEAL] on [APPEAL].[ID] = nullif([MKTSEGMENTATIONACTIVATE].[APPEALSYSTEMID], '')
  )
  select
    [MKTSEGMENTATION].[ID],
    [MKTSEGMENTATION].[NAME],
    [PARENTTEMPLATE].[NAME] as [TEMPLATE],
    [MKTSEGMENTATION].[CHANNEL] as [CHANNEL],
    (case [EFFORTSTATUS].[STATUSCODE]
       when 1 then 'Setup started'
       when 2 then 'Counts generated'
       when 3 then 'File exported'
       when 4 then 'Activated'
       when 5 then 'Past launch date'
     end) as [STATUS],
    (case [EFFORTSTATUS].[STATUSCODE]
       when 1 then 'CATALOG:Blackbaud.AppFx.Marketing.Catalog.dll,Blackbaud.AppFx.Marketing.Catalog.status_1.png'
       when 2 then 'CATALOG:Blackbaud.AppFx.Marketing.Catalog.dll,Blackbaud.AppFx.Marketing.Catalog.status_2.png'
       when 3 then 'CATALOG:Blackbaud.AppFx.Marketing.Catalog.dll,Blackbaud.AppFx.Marketing.Catalog.status_3.png'
       when 4 then 'CATALOG:Blackbaud.AppFx.Marketing.Catalog.dll,Blackbaud.AppFx.Marketing.Catalog.status_4.png'
       when 5 then 'CATALOG:Blackbaud.AppFx.Marketing.Catalog.dll,Blackbaud.AppFx.Marketing.Catalog.status_4.png'
     end) as [STATUSIMAGE],
    [MKTSEGMENTATION].[DUEDATE],
    [MKTSEGMENTATION].[MAILDATE] as [LAUNCHDATE],
    [SITE].[NAME] as [SITE],
    [MKTSEGMENTATION].[DESCRIPTION],
    [MKTSEGMENTATION].[CODE],

    --APPEAL

    (case when (select count(*) from dbo.[MKTSEGMENTATIONACTIVATE] where [SEGMENTATIONID] = [MKTSEGMENTATION].[ID]) > 1 then
       --Get a comma delimited list of appeals

       isnull(stuff((
         select ', ' + [APPEALNAME]
         from [APPEALS_CTE]
         where [SEGMENTATIONID] = [MKTSEGMENTATION].[ID]
         for xml path(''), type
       ).value('.', 'varchar(max)'), 1, 2, ''), '')
     else
       (select top 1 [APPEALNAME] from [APPEALS_CTE] where [SEGMENTATIONID] = [MKTSEGMENTATION].[ID])
     end) as [APPEAL],

    (select count(*) from dbo.[MKTSEGMENTATIONSEGMENT] where [SEGMENTATIONID] = [MKTSEGMENTATION].[ID]) as [NUMSEGMENTS],
    (select count(*) from dbo.[MKTSEGMENTATIONPACKAGE] where [SEGMENTATIONID] = [MKTSEGMENTATION].[ID]) as [NUMPACKAGES],
    [MKTSEGMENTATION].[DATEADDED] as [CREATEDDATE],

    [EFFORTSTATUS].[CALCULATEDATE],
    [EFFORTSTATUS].[CALCULATEPROCESSID],
    [EFFORTSTATUS].[EXPORTDATE],
    [EFFORTSTATUS].[EXPORTPROCESSID],
    [EFFORTSTATUS].[ACTIVATEDATE],
    [EFFORTSTATUS].[ACTIVATEPROCESSID],
    [EFFORTSTATUS].[DATEREFRESHED],
    [EFFORTSTATUS].[REFRESHPROCESSID],

    [MKTSEGMENTATION].[ACTIVE],
    [MKTSEGMENTATION].[ISHISTORICAL],

    --ONLYHASVENDORMANAGEDLISTSEGMENTS

    cast((case when exists(select *
                      from dbo.[MKTSEGMENTATIONSEGMENT]
                      inner join dbo.[MKTSEGMENT] on [MKTSEGMENT].[ID] = [MKTSEGMENTATIONSEGMENT].[SEGMENTID]
                      inner join dbo.[MKTSEGMENTLIST] on [MKTSEGMENTLIST].[ID] = [MKTSEGMENT].[CURRENTSEGMENTLISTID]
                      where [MKTSEGMENTATIONSEGMENT].[SEGMENTATIONID] = [MKTSEGMENTATION].[ID]
                      and [MKTSEGMENTLIST].[TYPECODE] = 1)  --vendor managed only

      and not exists(select *
                     from dbo.[MKTSEGMENTATIONSEGMENT]
                     inner join dbo.[MKTSEGMENT] on [MKTSEGMENT].[ID] = [MKTSEGMENTATIONSEGMENT].[SEGMENTID]
                     left join dbo.[MKTSEGMENTLIST] on [MKTSEGMENTLIST].[ID] = [MKTSEGMENT].[CURRENTSEGMENTLISTID]
                     where [MKTSEGMENTATIONSEGMENT].[SEGMENTATIONID] = [MKTSEGMENTATION].[ID]
                     and ([MKTSEGMENT].[SEGMENTTYPECODE] <> 2 or [MKTSEGMENTLIST].[TYPECODE] = 0))  --all other segments including imported lists

      then 1 else 0 end) as bit) as [ONLYHASVENDORMANAGEDLISTSEGMENTS],

    --GIFTSOURCESDEFINED

    cast((case when [MKTSEGMENTATION].[ACTIVE] = 0 then
      (select
         (case when count(*) = 0 then 
           (case when (select count(*) from dbo.[MKTGIFTRECORDSOURCE]) > 0 then 1 else 0 end)
          else
           0
          end)
       from dbo.[MKTSEGMENTATIONSEGMENT]
       inner join dbo.[MKTSEGMENT] on [MKTSEGMENT].[ID] = [MKTSEGMENTATIONSEGMENT].[SEGMENTID]
       left outer join dbo.[MKTGIFTRECORDSOURCE] on [MKTGIFTRECORDSOURCE].[ID] = [MKTSEGMENT].[QUERYVIEWCATALOGID]
       where [MKTSEGMENTATIONSEGMENT].[SEGMENTATIONID] = [MKTSEGMENTATION].[ID]
       and [MKTGIFTRECORDSOURCE].[ID] is null
      )
     else
      1
     end
    ) as bit) as [GIFTSOURCESDEFINED],

    [EFFORTSTATUS].[ISCALCULATING],
    [EFFORTSTATUS].[ISACTIVATING],

    --RECORDCOUNTCACHEISCURRENT

    cast((case when [MKTSEGMENTATION].[ACTIVE] = 0 and exists(
      select *
      from dbo.[MKTSEGMENTATIONSEGMENT]
      inner join dbo.[MKTSEGMENT] on [MKTSEGMENT].[ID] = [MKTSEGMENTATIONSEGMENT].[SEGMENTID]
      left join dbo.[MKTSEGMENTLIST] on [MKTSEGMENTLIST].[ID] = [MKTSEGMENT].[CURRENTSEGMENTLISTID]
      left join dbo.[MKTSEGMENTATIONSEGMENTCACHEINFO] on [MKTSEGMENTATIONSEGMENTCACHEINFO].[SEGMENTID] = [MKTSEGMENTATIONSEGMENT].[ID]
      where [MKTSEGMENTATIONSEGMENT].[SEGMENTATIONID] = [MKTSEGMENTATION].[ID]
      and (
        [MKTSEGMENT].[SEGMENTTYPECODE] <> 2 -- ignore list segments, they are always current

        or
        ([MKTSEGMENT].[SEGMENTTYPECODE] = 2 and [MKTSEGMENTLIST].[TYPECODE] = 0)
      )
      and [MKTSEGMENT].[ISHISTORICAL] = 0  -- ignore historical

      and (
        [MKTSEGMENTATIONSEGMENTCACHEINFO].[RECORDCOUNTDATECACHED] is null
        or
        [MKTSEGMENTATIONSEGMENTCACHEINFO].[RECORDCOUNTDATECACHED] < [MKTSEGMENTATIONSEGMENT].[DATECHANGED]
        or
        [MKTSEGMENTATIONSEGMENTCACHEINFO].[RECORDCOUNTDATECACHED] < (
          select max([T].[DATE])
          from (
            --Get the date changed for all the selections in the universe/exclusions...

            (select max([DATECHANGED]) as [DATE] from dbo.[MKTSEGMENTATIONFILTERSELECTION] where [SEGMENTATIONID] = [MKTSEGMENTATIONSEGMENT].[SEGMENTATIONID])
            union all
            --Get the last date that a selection in the universe/exclusions was deleted...

            (select max([AUDITDATE]) as [DATE] from dbo.[MKTSEGMENTATIONFILTERSELECTIONAUDIT] where [SEGMENTATIONID] = [MKTSEGMENTATIONSEGMENT].[SEGMENTATIONID] and [AUDITTYPECODE] = 2)
            union all
            --Get the date changed for all the previous mailing exclusions...

            (select max([DATECHANGED]) as [DATE] from dbo.[MKTSEGMENTATIONFILTERSEGMENTATION] where [SEGMENTATIONID] = [MKTSEGMENTATIONSEGMENT].[SEGMENTATIONID])
            union all
            --Get the last date that a previous mailing exclusion was deleted...

            (select max([AUDITDATE]) as [DATE] from dbo.[MKTSEGMENTATIONFILTERSEGMENTATIONAUDIT] where [SEGMENTATIONID] = [MKTSEGMENTATIONSEGMENT].[SEGMENTATIONID] and [AUDITTYPECODE] = 2)
          ) as [T]
        )
      )
    ) then 0 else 1 end) as bit) as [RECORDCOUNTCACHEISCURRENT],

    [APPUSER].[DISPLAYNAME] as [OWNER],

    cast((
      select top 1
        nullif([APPEALSYSTEMID], '')
      from dbo.[MKTSEGMENTATIONACTIVATE]
      where [SEGMENTATIONID] = [MKTSEGMENTATION].[ID]
      and [RECORDSOURCEID] = 'DFB4B8C1-5E9A-4C14-ACE3-01C096B53BA0'
    ) as uniqueidentifier) as [BBECAPPEALID],

    cast((case when [MKTCOMMUNICATIONTEMPLATEDEFAULT].[RUNSEGMENTATIONSEGMENTREFRESHPROCESSLOCKED] = 1 
             and [MKTCOMMUNICATIONTEMPLATEDEFAULT].[CACHESOURCEANALYSISRULEDATALOCKED] = 1 
                and [MKTCOMMUNICATIONTEMPLATEDEFAULT].[RUNMARKETINGEXCLUSIONSREPORTLOCKED] = 1
          then 1 else 0 end) as bit) as [ALLCALCULATIONOPTIONSLOCKED],

    cast((case when [MKTCOMMUNICATIONTEMPLATEDEFAULT].[ACTIVATEOPTIONSLOCKED] = 1 
                and [MKTCOMMUNICATIONTEMPLATEDEFAULT].[APPEALLOCKED] = 1 
                and [MKTCOMMUNICATIONTEMPLATEDEFAULT].[CACHESOURCEANALYSISRULEDATAACTIVATELOCKED] = 1
                and [MKTCOMMUNICATIONTEMPLATEDEFAULT].[EXPORTAFTERACTIVATELOCKED] = 1
          then 1 else 0 end) as bit) as [ALLACTIVATEOPTIONSLOCKED],

    cast((case when [MKTCOMMUNICATIONTEMPLATEDEFAULT].[EXPORTDESCRIPTIONLOCKED] = 1 
                and [MKTCOMMUNICATIONTEMPLATEDEFAULT].[MAILEXPORTDEFINITIONIDLOCKED] = 1 
                and [MKTCOMMUNICATIONTEMPLATEDEFAULT].[EMAILEXPORTDEFINITIONIDLOCKED] = 1
                and [MKTCOMMUNICATIONTEMPLATEDEFAULT].[PHONEEXPORTDEFINITIONIDLOCKED] = 1
          then 1 else 0 end) as bit) as [ALLEXPORTOPTIONSLOCKED],

    [MKTSEGMENTATION].[IDINTEGER],

    cast((case
      when [MKTSEGMENTATION].[DATEADDED] < [PARENTTEMPLATE].[DATECHANGED]
        then 1
      else 0 end) as bit) as [TEMPLATEHASCHANGED],

    [PARENTTEMPLATE].[ISACTIVE] as [TEMPLATEISACTIVE],
    [MKTSEGMENTATION].[MARKETINGPLANITEMID],
    [PLAN].[PATH] as [PLAN]

    /*#EXTENSION*/

  from dbo.[MKTSEGMENTATION]
  left join dbo.[MKTCOMMUNICATIONTEMPLATE] on [MKTCOMMUNICATIONTEMPLATE].[MKTSEGMENTATIONID] = [MKTSEGMENTATION].[ID]
  left join dbo.[MKTCOMMUNICATIONTEMPLATE] as [PARENTTEMPLATE] on [PARENTTEMPLATE].[ID] = [MKTCOMMUNICATIONTEMPLATE].[PARENTCOMMUNICATIONTEMPLATEID]
  left join dbo.[MKTCOMMUNICATIONTEMPLATEDEFAULT] on [MKTCOMMUNICATIONTEMPLATEDEFAULT].[COMMUNICATIONTEMPLATEID] = [PARENTTEMPLATE].[ID]
  left join dbo.[SITE] on [SITE].[ID] = [MKTSEGMENTATION].[SITEID]
  left join dbo.[APPUSER] on [APPUSER].[ID] = [MKTSEGMENTATION].[OWNERID]
  left join dbo.[UFN_MKTCOMMUNICATIONEFFORT_GETSTATUSINFO_BULK]() as [EFFORTSTATUS] on [EFFORTSTATUS].[SEGMENTATIONID] = [MKTSEGMENTATION].[ID]
  outer apply dbo.[UFN_MKTMARKETINGPLANITEM_PATH_BULK]([MKTSEGMENTATION].[MARKETINGPLANITEMID], 1) as [PLAN]

  where 
    [MKTSEGMENTATION].[MAILINGTYPECODE] = 0    -- direct marketing efforts only

    and [MKTSEGMENTATION].[COMMUNICATIONTYPECODE] = 0    -- no BBEC appeal mailings

    and [MKTSEGMENTATION].[PARENTSEGMENTATIONID] is null --no test efforts


    /* Site security */
    and (
      (select [ISSYSADMIN] from dbo.[APPUSER] where [ID] = @CURRENTAPPUSERID) = 1
      or
      exists(
        select top 1 *
        from dbo.[UFN_SITESFORUSERONFEATURE](@CURRENTAPPUSERID, '09F8C47D-72B1-44A0-9049-3F1C0EEB54F1', 10)
        where [SITEID] = [MKTSEGMENTATION].[SITEID] or ([SITEID] is null and [MKTSEGMENTATION].[SITEID] is null)
      )
    )

    and
    (
      @SITEFILTERMODE = 0
      or [MKTSEGMENTATION].[SITEID] in (select [SITEID] from dbo.[UFN_SITE_BUILDDATALISTSITEFILTER] (@CURRENTAPPUSERID, @SITEFILTERMODE, @SITESSELECTED))
    )

)