USP_DATALIST_APPUSERWORKSPACEDONOR

Returns a list of donors for the application user's workspace.

Parameters

Parameter Parameter Type Mode Description
@CURRENTAPPUSERID uniqueidentifier IN Input parameter indicating the ID of the current user.
@DATEFILTER tinyint IN Show giving
@AMOUNT money IN Greater than

Definition

Copy


CREATE procedure dbo.USP_DATALIST_APPUSERWORKSPACEDONOR
(
    @CURRENTAPPUSERID uniqueidentifier,
    @DATEFILTER tinyint = 0,
    @AMOUNT money = 0
)
as
    set nocount on;

    declare @ISSYSADMIN bit = dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID);
    declare @SITEREQUIREDFORUSER bit;
    declare @USERSITES table (SITEID uniqueidentifier);

    if @ISSYSADMIN = 0
    begin
        set @SITEREQUIREDFORUSER = dbo.UFN_SITEREQUIREDFORUSER(@CURRENTAPPUSERID);

        if @SITEREQUIREDFORUSER = 1
        begin
            insert into @USERSITES
            select SITEID from dbo.UFN_SITESFORUSER(@CURRENTAPPUSERID);
        end
    end

    declare @DATE datetime;
    set @DATE = getDate();

    declare @STARTDATE datetime;
    declare @ENDDATE datetime;

    if @DATEFILTER = 0    -- today

    begin
        set @STARTDATE = dbo.UFN_DATE_GETEARLIESTTIME(@DATE);
        set @ENDDATE = dbo.UFN_DATE_GETLATESTTIME(@DATE);
    end
    if @DATEFILTER = 1    -- yesterday

    begin
        set @STARTDATE = dbo.UFN_DATE_GETEARLIESTTIME(dateadd(day, -1, @DATE));
        set @ENDDATE = dbo.UFN_DATE_GETLATESTTIME(dateadd(day, -1, @DATE));
    end
    if @DATEFILTER = 2    -- this week

    begin
        set @STARTDATE = dbo.UFN_DATE_THISWEEK_FIRSTDAY(@DATE, 0);
        set @ENDDATE = dbo.UFN_DATE_THISWEEK_LASTDAY(@DATE, 1);
    end
    if @DATEFILTER = 3    -- this month

    begin
        set @STARTDATE = dbo.UFN_DATE_THISMONTH_FIRSTDAY(@DATE, 0);
        set @ENDDATE = dbo.UFN_DATE_THISMONTH_LASTDAY(@DATE, 1);
    end
    if @DATEFILTER = 4    -- last month

    begin
        set @STARTDATE = dbo.UFN_DATE_LASTMONTH_FIRSTDAY(@DATE, 0);
        set @ENDDATE = dbo.UFN_DATE_LASTMONTH_LASTDAY(@DATE, 1);
    end

    select
        REVENUE.ID,
        REVENUE.CONSTITUENTID,
        REVENUE.DATE,
        NF.NAME,
        REVENUESPLIT.AMOUNT,
        DESIGNATION.NAME,
        REVENUE.TRANSACTIONTYPE,
        REVENUESPLIT.BASECURRENCYID
    from
        dbo.REVENUE
    inner join
        dbo.REVENUESPLIT on REVENUESPLIT.REVENUEID = REVENUE.ID
    cross apply dbo.UFN_CONSTITUENT_DISPLAYNAME(REVENUE.CONSTITUENTID) NF
    inner join
        dbo.DESIGNATION on DESIGNATION.ID = REVENUESPLIT.DESIGNATIONID
    where
        (REVENUE.TRANSACTIONTYPECODE in (0, 1, 3, 4) and REVENUESPLIT.APPLICATIONCODE in (0, 2, 3, 6, 7))
        and REVENUESPLIT.AMOUNT > @AMOUNT
        and (REVENUE.DATE between @STARTDATE and @ENDDATE)
        and
        (
            @ISSYSADMIN = 1
            or
            (
                dbo.UFN_SECURITY_APPUSER_GRANTED_DATALIST_FORCONSTIT(@CURRENTAPPUSERID,'1d812f19-dce2-4fea-ae33-b16e47c29ae6', REVENUE.CONSTITUENTID) = 1
                and
                (
                    @SITEREQUIREDFORUSER = 0
                    or
                    exists(select 1 from dbo.UFN_SITEID_MAPFROM_CONSTITUENTID(REVENUE.CONSTITUENTID) CONSTITSITES
                            inner join @USERSITES USERSITES on CONSTITSITES.SITEID = USERSITES.SITEID)
                )
            )
        )
    order by
        REVENUESPLIT.AMOUNT desc, NF.NAME;

    return 0;