USP_DATALIST_CONSTITUENT_SURVEYS
Displays a list of surveys for a given constituent record.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@CONSTITUENTID | uniqueidentifier | IN | Input parameter indicating the context ID for the data list. |
@SENTDATEFILTER | tinyint | IN | Send date |
@SENTSTARTDATE | datetime | IN | Start date |
@SENTENDDATE | datetime | IN | End date |
@RESPONSEDATEFILTER | tinyint | IN | Response date |
@RESPONSESTARTDATE | datetime | IN | Start date |
@RESPONSEENDDATE | datetime | IN | End date |
Definition
Copy
CREATE procedure dbo.USP_DATALIST_CONSTITUENT_SURVEYS
(
@CONSTITUENTID uniqueidentifier,
@SENTDATEFILTER tinyint = 0,
@SENTSTARTDATE datetime = null,
@SENTENDDATE datetime = null,
@RESPONSEDATEFILTER tinyint = 0,
@RESPONSESTARTDATE datetime = null,
@RESPONSEENDDATE datetime = null
)
as
begin
set nocount on;
declare @DATE datetime;
set @DATE= getdate();
if @SENTDATEFILTER = 0 -- all
begin
set @SENTSTARTDATE = null;
set @SENTENDDATE = null;
end
if @SENTDATEFILTER = 1 -- this year
begin
set @SENTSTARTDATE = dbo.UFN_DATE_THISCALENDARYEAR_FIRSTDAY(@DATE, 0);
set @SENTENDDATE = dbo.UFN_DATE_THISCALENDARYEAR_LASTDAY(@DATE, 0);
end
if @SENTDATEFILTER = 2 -- this quarter
begin
set @SENTSTARTDATE = dbo.UFN_DATE_THISQUARTER_FIRSTDAY(@DATE, 0);
set @SENTENDDATE = dbo.UFN_DATE_THISQUARTER_LASTDAY(@DATE, 0);
end
if @SENTDATEFILTER = 3 -- this month
begin
set @SENTSTARTDATE = dbo.UFN_DATE_THISMONTH_FIRSTDAY(@DATE, 0);
set @SENTENDDATE = dbo.UFN_DATE_THISMONTH_LASTDAY(@DATE, 0);
end
if @SENTDATEFILTER = 4 -- this week
begin
set @SENTSTARTDATE = dbo.UFN_DATE_THISWEEK_FIRSTDAY(@DATE, 0);
set @SENTENDDATE = dbo.UFN_DATE_THISWEEK_LASTDAY(@DATE, 0);
end
if @SENTDATEFILTER = 5 -- next week
begin
set @SENTSTARTDATE = dbo.UFN_DATE_NEXTWEEK_FIRSTDAY(@DATE, 0);
set @SENTENDDATE = dbo.UFN_DATE_NEXTWEEK_LASTDAY(@DATE, 0);
end
if @SENTDATEFILTER = 6 -- next month
begin
set @SENTSTARTDATE = dbo.UFN_DATE_NEXTMONTH_FIRSTDAY(@DATE, 0);
set @SENTENDDATE = dbo.UFN_DATE_NEXTMONTH_LASTDAY(@DATE, 0);
end
if @SENTDATEFILTER = 7 -- next quarter
begin
set @SENTSTARTDATE = dbo.UFN_DATE_NEXTQUARTER_FIRSTDAY(@DATE, 0);
set @SENTENDDATE = dbo.UFN_DATE_NEXTQUARTER_LASTDAY(@DATE, 0);
end
if @SENTDATEFILTER = 8 -- next year
begin
set @SENTSTARTDATE = dbo.UFN_DATE_NEXTCALENDARYEAR_FIRSTDAY(@DATE, 0);
set @SENTENDDATE = dbo.UFN_DATE_NEXTCALENDARYEAR_LASTDAY(@DATE, 0);
end;
if @RESPONSEDATEFILTER = 0 -- all
begin
set @RESPONSESTARTDATE = null;
set @RESPONSEENDDATE = null;
end
if @RESPONSEDATEFILTER = 1 -- this year
begin
set @RESPONSESTARTDATE = dbo.UFN_DATE_THISCALENDARYEAR_FIRSTDAY(@DATE, 0);
set @RESPONSEENDDATE = dbo.UFN_DATE_THISCALENDARYEAR_LASTDAY(@DATE, 0);
end
if @RESPONSEDATEFILTER = 2 -- this quarter
begin
set @RESPONSESTARTDATE = dbo.UFN_DATE_THISQUARTER_FIRSTDAY(@DATE, 0);
set @RESPONSEENDDATE = dbo.UFN_DATE_THISQUARTER_LASTDAY(@DATE, 0);
end
if @RESPONSEDATEFILTER = 3 -- this month
begin
set @RESPONSESTARTDATE = dbo.UFN_DATE_THISMONTH_FIRSTDAY(@DATE, 0);
set @RESPONSEENDDATE = dbo.UFN_DATE_THISMONTH_LASTDAY(@DATE, 0);
end
if @RESPONSEDATEFILTER = 4 -- this week
begin
set @RESPONSESTARTDATE = dbo.UFN_DATE_THISWEEK_FIRSTDAY(@DATE, 0);
set @RESPONSEENDDATE = dbo.UFN_DATE_THISWEEK_LASTDAY(@DATE, 0);
end
if @RESPONSEDATEFILTER = 5 -- next week
begin
set @RESPONSESTARTDATE = dbo.UFN_DATE_NEXTWEEK_FIRSTDAY(@DATE, 0);
set @RESPONSEENDDATE = dbo.UFN_DATE_NEXTWEEK_LASTDAY(@DATE, 0);
end
if @RESPONSEDATEFILTER = 6 -- next month
begin
set @RESPONSESTARTDATE = dbo.UFN_DATE_NEXTMONTH_FIRSTDAY(@DATE, 0);
set @RESPONSEENDDATE = dbo.UFN_DATE_NEXTMONTH_LASTDAY(@DATE, 0);
end
if @RESPONSEDATEFILTER = 7 -- next quarter
begin
set @RESPONSESTARTDATE = dbo.UFN_DATE_NEXTQUARTER_FIRSTDAY(@DATE, 0);
set @RESPONSEENDDATE = dbo.UFN_DATE_NEXTQUARTER_LASTDAY(@DATE, 0);
end
if @RESPONSEDATEFILTER = 8 -- next year
begin
set @RESPONSESTARTDATE = dbo.UFN_DATE_NEXTCALENDARYEAR_FIRSTDAY(@DATE, 0);
set @RESPONSEENDDATE = dbo.UFN_DATE_NEXTCALENDARYEAR_LASTDAY(@DATE, 0);
end;
set @SENTSTARTDATE = dbo.UFN_DATE_GETEARLIESTTIME(@SENTSTARTDATE);
set @SENTENDDATE = dbo.UFN_DATE_GETLATESTTIME(@SENTENDDATE);
set @RESPONSESTARTDATE = dbo.UFN_DATE_GETEARLIESTTIME(@RESPONSESTARTDATE);
set @RESPONSEENDDATE = dbo.UFN_DATE_GETLATESTTIME(@RESPONSEENDDATE);
select
SURVEY.ID,
SURVEY.DATESENT,
SURVEY.DATERESPONDED,
SURVEY.NAME,
dbo.UFN_SURVEYCATEGORYCODE_GETDESCRIPTION(SURVEY.SURVEYCATEGORYCODEID) as SURVEYCATEGORYCODE,
(select count(ID) from dbo.SURVEYRESPONSE where SURVEYRESPONSE.SURVEYID = SURVEY.ID) as QUESTIONCOUNT
from
dbo.SURVEY
where
SURVEY.CONSTITUENTID = @CONSTITUENTID
and
(
(SURVEY.DATESENT between @SENTSTARTDATE and @SENTENDDATE)
or
(@SENTSTARTDATE is null and @SENTENDDATE is null)
or
(SURVEY.DATESENT >= @SENTSTARTDATE and @SENTENDDATE is null)
or
(@SENTSTARTDATE is null and SURVEY.DATESENT <= @SENTENDDATE)
)
and
(
(SURVEY.DATERESPONDED between @RESPONSESTARTDATE and @RESPONSEENDDATE)
or
(@RESPONSESTARTDATE is null and @RESPONSEENDDATE is null)
or
(SURVEY.DATERESPONDED >= @RESPONSESTARTDATE and @RESPONSEENDDATE is null)
or
(@RESPONSESTARTDATE is null and SURVEY.DATERESPONDED <= @RESPONSEENDDATE)
)
order by
SURVEY.DATESENT, SURVEY.NAME
end