USP_REPORT_VOLUNTEERSCHEDULE

Stored procedure as datasource for volunteer schedule report.

Parameters

Parameter Parameter Type Mode Description
@VOLUNTEERID uniqueidentifier IN
@RANGE int IN
@FROM datetime IN
@TO datetime IN
@CURRENTAPPUSERID uniqueidentifier IN

Definition

Copy


            CREATE procedure dbo.USP_REPORT_VOLUNTEERSCHEDULE(
                @VOLUNTEERID uniqueidentifier = null,
                @RANGE int,
                @FROM datetime = null,
                @TO datetime = null,
                @CURRENTAPPUSERID uniqueidentifier = null
            )
            as
                set nocount on;

                begin try
                    declare @ISADMIN bit;
                    declare @APPUSER_IN_NONRACROLE bit;
                    declare @APPUSER_IN_NOSECGROUPROLE bit;
                    declare @APPUSER_IN_NONSITEROLE bit;
                    declare @APPUSER_IN_NOSITEROLE bit;

                    set @ISADMIN = dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID);
                    set @APPUSER_IN_NONRACROLE = dbo.UFN_SECURITY_APPUSER_IN_NONRACROLE(@CURRENTAPPUSERID);
                    set @APPUSER_IN_NOSECGROUPROLE = dbo.UFN_SECURITY_APPUSER_IN_NO_SECURITY_GROUP_ROLE(@CURRENTAPPUSERID);
                    set @APPUSER_IN_NONSITEROLE = dbo.UFN_SECURITY_APPUSER_IN_NONSITEROLE(@CURRENTAPPUSERID);
                    set @APPUSER_IN_NOSITEROLE = dbo.UFN_SECURITY_APPUSER_IN_NO_SITE_ROLE(@CURRENTAPPUSERID);

                    /* @RANGE is a legacy field left to allow for backwards compatibility*/
                    /* if @RANGE is null then use the dates passed in */

                    if @RANGE = 1 --this month

                    begin
                        select @FROM = dbo.UFN_DATE_THISMONTH_FIRSTDAY(getdate(), 0);
                        select @TO = dbo.UFN_DATE_THISMONTH_LASTDAY(getdate(), 0);
                    end

                    if @RANGE = 2 --next month

                    begin
                        select @FROM = dbo.UFN_DATE_NEXTMONTH_FIRSTDAY(getdate(), 0);
                        select @TO = dbo.UFN_DATE_NEXTMONTH_LASTDAY(getdate(), 0);
                    end

                    if @RANGE = 3 --this week

                    begin
                        select @FROM = dbo.UFN_DATE_THISWEEK_FIRSTDAY(getdate(), 0);
                        select @TO = dbo.UFN_DATE_THISWEEK_LASTDAY(getdate(), 0);
                    end

                    if @RANGE = 4 --next week

                    begin
                        select @FROM = dbo.UFN_DATE_NEXTWEEK_FIRSTDAY(getdate(), 0);
                        select @TO = dbo.UFN_DATE_NEXTWEEK_LASTDAY(getdate(), 0);
                    end

                    select    JOB.NAME as JOBNAME, 
                            JOBOCCURRENCE.DESCRIPTION as JOBOCCURRENCEDESCRIPTION, 
                            '' STARTTIME, --No longer used

                            '' ENDTIME,   --No longer used

                            VOLUNTEERLOCATIONCODE.DESCRIPTION as LOCATION, 
                            VOLUNTEERASSIGNMENT.DATE
                            NF.NAME as VOLUNTEERNAME,
                            case when len(JOBOCCURRENCE.STARTTIME)=4 then convert(datetime, left(JOBOCCURRENCE.STARTTIME, 2) + ':' + right(JOBOCCURRENCE.STARTTIME, 2)) else null end STARTTIMEDATE,
                            case when len(JOBOCCURRENCE.ENDTIME)=4 then convert(datetime, left(JOBOCCURRENCE.ENDTIME, 2) + ':' + right(JOBOCCURRENCE.ENDTIME, 2)) else null end ENDTIMEDATE
                    from VOLUNTEERASSIGNMENT 
                    inner join JOBOCCURRENCE on VOLUNTEERASSIGNMENT.JOBOCCURRENCEID = JOBOCCURRENCE.ID 
                    inner join JOB on JOBOCCURRENCE.JOBID = JOB.ID 
                    outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(VOLUNTEERASSIGNMENT.VOLUNTEERID) NF
                    left outer join VOLUNTEERLOCATIONCODE on JOBOCCURRENCE.LOCATIONCODEID = VOLUNTEERLOCATIONCODE.ID 
                    left outer join PHONE on PHONE.CONSTITUENTID = VOLUNTEERASSIGNMENT.VOLUNTEERID and PHONE.ISPRIMARY = 1
                    where (VOLUNTEERASSIGNMENT.VOLUNTEERID = @VOLUNTEERID and VOLUNTEERASSIGNMENT.DATE between @FROM and @TO)
                    and (@CURRENTAPPUSERID is null or dbo.UFN_SITEALLOWEDFORUSER(@CURRENTAPPUSERID,JOBOCCURRENCE.SITEID)=1)
                    and (@CURRENTAPPUSERID is null or dbo.UFN_SITEALLOWEDFORUSER(@CURRENTAPPUSERID,JOB.SITEID)=1)
                    and (@ISADMIN = 1 or 
                            (
                                (@APPUSER_IN_NONRACROLE = 1 or
                                dbo.UFN_SECURITY_APPUSER_GRANTED_CONSTITID_FORREPORT(@CURRENTAPPUSERID, VOLUNTEERASSIGNMENT.VOLUNTEERID, @APPUSER_IN_NOSECGROUPROLE) = 1)
                                and
                                (@APPUSER_IN_NONSITEROLE = 1 or
                                dbo.UFN_SECURITY_APPUSER_GRANTED_CONSTITID_FORREPORT_BYSITE(@CURRENTAPPUSERID, VOLUNTEERASSIGNMENT.VOLUNTEERID, @APPUSER_IN_NOSITEROLE) = 1)
                            )
                        )
                    order by DATE, STARTTIMEDATE, ENDTIMEDATE asc
                end try

                begin catch
                    exec dbo.USP_RAISE_ERROR;
                    return 1;
                end catch

                return 0;