USP_DATALIST_EXPIRINGTRAIT
This datalist returns all expiring traits for volunteers.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@TRAITTYPE | tinyint | IN | Type |
@VERIFIEDONLY | bit | IN | Verified Only |
@DAYSOUT | tinyint | IN | Expires in |
Definition
Copy
CREATE procedure dbo.USP_DATALIST_EXPIRINGTRAIT (@TRAITTYPE tinyint = null, @VERIFIEDONLY bit = 1, @DAYSOUT tinyint = null)
as
set nocount on;
declare @CURRENTDATE datetime;
set @CURRENTDATE = getdate();
declare @UPPERBOUND datetime;
set @UPPERBOUND = dbo.UFN_DATE_GETLATESTTIME(@CURRENTDATE);
declare @LOWERBOUND datetime;
set @LOWERBOUND = dbo.UFN_DATE_GETEARLIESTTIME(@CURRENTDATE);
declare @STARTDATE datetime;
declare @ENDDATE datetime;
declare @TRAITS table
(
ID uniqueidentifier,
VOLUNTEERID uniqueidentifier,
TRAITTYPEID tinyint,
TRAITTYPE nvarchar(25),
CERTIFICATION nvarchar(100),
CERTIFICATE nvarchar(25),
COURSE nvarchar(100),
LICENSE nvarchar(100),
LICENSENUMBER nvarchar(25),
MEDICAL nvarchar(100),
ADMINISTRATIVE nvarchar(100),
EXPIRESON datetime,
VERIFIED bit default(0)
);
set @DAYSOUT = coalesce(@DAYSOUT, 0);
set @STARTDATE = @LOWERBOUND;
if @DAYSOUT = 0 --Expired
begin
set @STARTDATE = null;
end
select @ENDDATE =
case @DAYSOUT
when 1 then --week
dateadd(d, 7, @UPPERBOUND)
when 2 then --month
dateadd(m, 1, @UPPERBOUND)
when 3 then --6 months
dateadd(m, 6, @UPPERBOUND)
when 4 then --1 year
dateadd(yy, 1, @UPPERBOUND)
else --Expired
null
end
--Administrative
if coalesce(@TRAITTYPE, 0) = 0
insert into @TRAITS(ID, VOLUNTEERID, TRAITTYPEID, TRAITTYPE, ADMINISTRATIVE,EXPIRESON,VERIFIED)
select VA.ID,
VA.VOLUNTEERID,
0,
'Administrative',
ADMINISTRATIVE.DESCRIPTION,
VA.EXPIRESON,
VA.VERIFIED
from VOLUNTEERADMINISTRATIVE VA
inner join VOLUNTEERADMINISTRATIVECODE ADMINISTRATIVE on ADMINISTRATIVE.ID = VA.ADMINISTRATIVECODEID
where
((@STARTDATE is null and VA.EXPIRESON <= @UPPERBOUND)
or (VA.EXPIRESON between @STARTDATE and @ENDDATE))
and
1 = case when @VERIFIEDONLY = 0 then 1 else VA.VERIFIED end;
--Certification
if coalesce(@TRAITTYPE, 1) = 1
insert into @TRAITS(ID, VOLUNTEERID, TRAITTYPEID, TRAITTYPE, CERTIFICATION, CERTIFICATE,EXPIRESON,VERIFIED)
select VC.ID,
VC.VOLUNTEERID,
1,
'Certification',
CERTIFICATION.DESCRIPTION,
VC.CERTIFICATE,
VC.EXPIRESON,
VC.VERIFIED
from VOLUNTEERCERTIFICATION VC
inner join VOLUNTEERCERTIFICATIONCODE CERTIFICATION on CERTIFICATION.ID = VC.CERTIFICATIONCODEID
where
((@STARTDATE is null and VC.EXPIRESON <= @UPPERBOUND)
or (VC.EXPIRESON between @STARTDATE and @ENDDATE))
and
1 = case when @VERIFIEDONLY = 0 then 1 else VC.VERIFIED end;
--Course
if coalesce(@TRAITTYPE, 2) = 2
insert into @TRAITS(ID, VOLUNTEERID, TRAITTYPEID, TRAITTYPE, COURSE,EXPIRESON,VERIFIED)
select VC.ID,
VC.VOLUNTEERID,
2,
'Course',
COURSE.DESCRIPTION,
VC.EXPIRESON,
VC.VERIFIED
from VOLUNTEERCOURSE VC
inner join VOLUNTEERCOURSECODE COURSE on COURSE.ID = VC.COURSECODEID
where
((@STARTDATE is null and VC.EXPIRESON <= @UPPERBOUND)
or (VC.EXPIRESON between @STARTDATE and @ENDDATE))
and
1 = case when @VERIFIEDONLY = 0 then 1 else VC.VERIFIED end;
--License
if coalesce(@TRAITTYPE, 4) = 4
insert into @TRAITS(ID, VOLUNTEERID, TRAITTYPEID, TRAITTYPE, LICENSE, LICENSENUMBER,EXPIRESON,VERIFIED)
select VL.ID,
VL.VOLUNTEERID,
4,
'License',
LICENSE.DESCRIPTION,
VL.LICENSENUMBER,
VL.EXPIRESON,
VL.VERIFIED
from VOLUNTEERLICENSE VL
inner join VOLUNTEERLICENSECODE LICENSE on LICENSE.ID = VL.LICENSECODEID
where
((@STARTDATE is null and VL.EXPIRESON <= @UPPERBOUND)
or (VL.EXPIRESON between @STARTDATE and @ENDDATE))
and
1 = case when @VERIFIEDONLY = 0 then 1 else VL.VERIFIED end;
--Medical
if coalesce(@TRAITTYPE, 5) = 5
insert into @TRAITS(ID, VOLUNTEERID, TRAITTYPEID, TRAITTYPE, MEDICAL,EXPIRESON,VERIFIED)
select VM.ID,
VM.VOLUNTEERID,
5,
'Medical',
MEDICAL.DESCRIPTION,
VM.EXPIRESON,
VM.VERIFIED
from VOLUNTEERMEDICAL VM
inner join VOLUNTEERMEDICALCODE MEDICAL on MEDICAL.ID = VM.MEDICALCODEID
where
((@STARTDATE is null and VM.EXPIRESON <= @UPPERBOUND)
or (VM.EXPIRESON between @STARTDATE and @ENDDATE))
and
1 = case when @VERIFIEDONLY = 0 then 1 else VM.VERIFIED end;
--Select final results
select
TRAITS.ID,
TRAITS.VOLUNTEERID,
CONSTITUENT.NAME,
TRAITS.TRAITTYPEID,
TRAITS.TRAITTYPE,
coalesce(TRAITS.ADMINISTRATIVE,TRAITS.CERTIFICATION,TRAITS.COURSE,TRAITS.LICENSE,TRAITS.MEDICAL),
coalesce(TRAITS.CERTIFICATE,TRAITS.LICENSENUMBER),
TRAITS.EXPIRESON,
TRAITS.VERIFIED
from @TRAITS TRAITS
inner join dbo.CONSTITUENT
on CONSTITUENT.ID = TRAITS.VOLUNTEERID
inner join dbo.VOLUNTEERDATERANGE
on VOLUNTEERDATERANGE.CONSTITUENTID = CONSTITUENT.ID
where CONSTITUENT.ISINACTIVE = 0
and (VOLUNTEERDATERANGE.DATEFROM <= @UPPERBOUND or VOLUNTEERDATERANGE.DATEFROM is null)
and (VOLUNTEERDATERANGE.DATETO >= @LOWERBOUND or VOLUNTEERDATERANGE.DATETO is null)
order by TRAITS.EXPIRESON, coalesce(TRAITS.CERTIFICATION,TRAITS.COURSE,TRAITS.LICENSE,TRAITS.MEDICAL);