1+ DECLARE @delinquentDate DATE ;
2+ SET @delinquentDate = (SELECT CAST (GETDATE () - 10 AS DATE ));
3+
4+ SELECT
5+ tp .PeopleId ,
6+ COALESCE (p .Nickname , p .FirstName ) as GoesBy,
7+ p .LastName ,
8+
9+ CASE WHEN p .Age IS NOT NULL AND p .Age < 18 THEN DATEADD (year , 18 , p .BDate ) ELSE NULL END AS Minor,
10+
11+ DATEADD (year , 5 , CAHC .ExpDate ) as CAHC,
12+ DATEADD (year , 5 , PATCH .ExpDate ) as PATCH,
13+ DATEADD (year , 5 , FBI .ExpDate ) as FBI,
14+ DATEADD (year , 5 , Aff .ExpDate ) as Aff,
15+ DATEADD (year , 2 , LastTraining .TrainingDate ) as Training,
16+ AssignedTraining .TrainingAssignedDate as TrainAssign,
17+ IIF (t .Name = ' F51' , ' Employee' , ' ' ) as Employee,
18+ InProgress .InProgressSince as InProgressLastUpdate
19+
20+ INTO #t1
21+
22+ FROM People p
23+ LEFT JOIN TagPerson tp ON p .PeopleId = tp .PeopleId
24+ LEFT JOIN Tag t on tp .Id = t .Id
25+
26+ LEFT JOIN (
27+ SELECT PeopleId, max (Date ) as ExpDate FROM (
28+ SELECT PeopleId, TRY_CAST (RIGHT (vfv1 .Name ,CHARINDEX (' ' , (REVERSE (vfv1 .Name ))) - 1 ) as Date ) as Date
29+ FROM VolunteerForm vfv1 WHERE UPPER (LEFT (vfv1 .Name , LEN (' CAHC' ))) = CONCAT (' CAHC' , ' ' )
30+ UNION
31+ SELECT PeopleId, DateValue as Date
32+ FROM PeopleExtra WHERE Field = ' Background Check: Latest CAHC'
33+ ) CAHCa
34+ GROUP BY PeopleId
35+ ) as CAHC ON p .PeopleId = CAHC .PeopleId
36+
37+ LEFT JOIN (
38+ SELECT PeopleId, max (Date ) as ExpDate FROM (
39+ SELECT PeopleId, TRY_CAST (RIGHT (vfv1 .Name ,CHARINDEX (' ' , (REVERSE (vfv1 .Name ))) - 1 ) as Date ) as Date
40+ FROM VolunteerForm vfv1 WHERE UPPER (LEFT (vfv1 .Name , LEN (' PATCH' ))) = CONCAT (' PATCH' , ' ' )
41+ UNION
42+ SELECT PeopleId, DateValue as Date
43+ FROM PeopleExtra WHERE Field = ' Background Check: Latest PATCH'
44+ ) PATCHa
45+ GROUP BY PeopleId
46+ ) as PATCH ON p .PeopleId = PATCH .PeopleId
47+
48+ LEFT JOIN (
49+ SELECT PeopleId, max (Date ) as ExpDate FROM (
50+ SELECT PeopleId, TRY_CAST (RIGHT (vfv1 .Name ,CHARINDEX (' ' , (REVERSE (vfv1 .Name ))) - 1 ) as Date ) as Date
51+ FROM VolunteerForm vfv1 WHERE UPPER (LEFT (vfv1 .Name , LEN (' FBI' ))) = CONCAT (' FBI' , ' ' )
52+ UNION
53+ SELECT PeopleId, DateValue as Date
54+ FROM PeopleExtra WHERE Field = ' Background Check: Latest FBI'
55+ ) FBIa
56+ GROUP BY PeopleId
57+ ) as FBI ON p .PeopleId = FBI .PeopleId
58+
59+ LEFT JOIN (
60+ SELECT PeopleId, max (Date ) as ExpDate FROM (
61+ SELECT PeopleId, TRY_CAST (RIGHT (vfv1 .Name ,CHARINDEX (' ' , (REVERSE (vfv1 .Name ))) - 1 ) as Date ) as Date
62+ FROM VolunteerForm vfv1 WHERE UPPER (LEFT (vfv1 .Name , LEN (' Aff' ))) = CONCAT (' Aff' , ' ' )
63+ UNION
64+ SELECT PeopleId, DateValue as Date
65+ FROM PeopleExtra WHERE Field = ' ds-Resident Affidavit Date' OR Field = ' ds-FBI Waiver Affidavit Date'
66+ ) Affa
67+ GROUP BY PeopleId
68+ ) as Aff ON p .PeopleId = Aff .PeopleId
69+
70+ LEFT JOIN (
71+ SELECT PeopleId, CONVERT (date , MAX (Updated)) as InProgressSince
72+ FROM BackgroundChecks
73+ WHERE Updated > DATEADD (month , - 3 , GETDATE ())
74+ AND ReportTypeID = 1
75+ AND ApprovalStatus = ' Pending'
76+ GROUP BY PeopleId
77+ ) as InProgress ON p .PeopleId = InProgress .PeopleId
78+
79+ LEFT JOIN (
80+ SELECT PeopleId, CONVERT (date , MAX (Updated)) as TrainingDate
81+ FROM BackgroundChecks
82+ WHERE ReportTypeID = 3
83+ AND Score > 80
84+ GROUP BY PeopleId
85+ ) as LastTraining ON p .PeopleId = LastTraining .PeopleId
86+
87+ LEFT JOIN (
88+ SELECT PeopleId, CONVERT (date , MAX (Updated)) as TrainingAssignedDate
89+ FROM BackgroundChecks
90+ WHERE ReportTypeID = 3
91+ GROUP BY PeopleId
92+ ) as AssignedTraining ON p .PeopleId = AssignedTraining .PeopleId
93+
94+ WHERE t .Name = ' F50' OR t .Name = ' F51' ;
95+
96+
97+ -- get combined Aff/FBI expiration
98+ SELECT s.* ,
99+ (SELECT MAX (expiration)
100+ FROM (VALUES
101+ (s .FBI ),
102+ (CASE WHEN s .Employee <> ' Employee' THEN s .Aff ELSE NULL END )
103+ ) AS ExpirationDates(expiration)
104+ ) as ActionRequiredA
105+ INTO #t2
106+ FROM #t1 as s;
107+
108+
109+ -- get combined CAHC/PATCH/(FBI/Aff) Expiration and coalesce with delinquents
110+ SELECT s.* ,
111+ (SELECT MIN (expiration)
112+ FROM (VALUES
113+ (COALESCE (s .CAHC , @delinquentDate)),
114+ (COALESCE (s .PATCH , @delinquentDate)),
115+ (COALESCE (s .ActionRequiredA , @delinquentDate))
116+ ) AS ExpirationDates(expiration)
117+ ) as ActionRequiredB
118+ INTO #t3
119+ FROM #t2 as s;
120+
121+
122+ -- combine existing expiration with Minor status
123+ SELECT s.* ,
124+ (SELECT MAX (expiration)
125+ FROM (VALUES
126+ (s .Minor ),
127+ (s .ActionRequiredB )
128+ ) AS ExpirationDates(expiration)
129+ ) as ActionRequired
130+ INTO #t4
131+ FROM #t3 as s;
132+
133+
134+
135+ ALTER TABLE #t4
136+ DROP COLUMN ActionRequiredA, ActionRequiredB;
137+
1138SELECT s.* ,
2- IIF(s .Minor >= GETDATE() OR (
3- s .CAHC >= GETDATE() AND
4- s .PATCH >= GETDATE() AND (
5- s .FBI > GETDATE() OR (
6- s .Aff >= GETDATE() AND
7- s .Employee <> ' Employee'
8- )
9- )
10- ), ' ' , ' Invalid' ) as Status
11-
12- FROM (
13- SELECT
14- tp .PeopleId ,
15- COALESCE(p .Nickname , p .FirstName ) as GoesBy,
16- p .LastName ,
17-
18- CASE WHEN p .Age IS NOT NULL AND p .Age < 18 THEN DATEADD(year, 18 , p .BDate ) ELSE NULL END AS Minor,
19-
20- DATEADD(year, 5 , CAHC .ExpDate ) as CAHC,
21- DATEADD(year, 5 , PATCH .ExpDate ) as PATCH,
22- DATEADD(year, 5 , FBI .ExpDate ) as FBI,
23- DATEADD(year, 5 , Aff .ExpDate ) as Aff,
24- DATEADD(year, 2 , LastTraining .TrainingDate ) as Training,
25- IIF(t .Name = ' F51' , ' Employee' , ' ' ) as Employee,
26- InProgress .InProgressSince as InProgressLastUpdate
27-
28- FROM People p
29- LEFT JOIN TagPerson tp ON p .PeopleId = tp .PeopleId
30- LEFT JOIN Tag t on tp .Id = t .Id
31-
32- LEFT JOIN (
33- SELECT PeopleId, max (Date ) as ExpDate FROM (
34- SELECT PeopleId, TRY_CAST(RIGHT(vfv1 .Name ,CHARINDEX(' ' , (REVERSE(vfv1 .Name ))) - 1 ) as Date ) as Date
35- FROM VolunteerForm vfv1 WHERE UPPER (LEFT(vfv1 .Name , LEN(' CAHC' ))) = CONCAT(' CAHC' , ' ' )
36- UNION
37- SELECT PeopleId, DateValue as Date
38- FROM PeopleExtra WHERE Field = ' Background Check: Latest CAHC'
39- ) CAHCa
40- GROUP BY PeopleId
41- ) as CAHC ON p .PeopleId = CAHC .PeopleId
42-
43- LEFT JOIN (
44- SELECT PeopleId, max (Date ) as ExpDate FROM (
45- SELECT PeopleId, TRY_CAST(RIGHT(vfv1 .Name ,CHARINDEX(' ' , (REVERSE(vfv1 .Name ))) - 1 ) as Date ) as Date
46- FROM VolunteerForm vfv1 WHERE UPPER (LEFT(vfv1 .Name , LEN(' PATCH' ))) = CONCAT(' PATCH' , ' ' )
47- UNION
48- SELECT PeopleId, DateValue as Date
49- FROM PeopleExtra WHERE Field = ' Background Check: Latest PATCH'
50- ) PATCHa
51- GROUP BY PeopleId
52- ) as PATCH ON p .PeopleId = PATCH .PeopleId
53-
54- LEFT JOIN (
55- SELECT PeopleId, max (Date ) as ExpDate FROM (
56- SELECT PeopleId, TRY_CAST(RIGHT(vfv1 .Name ,CHARINDEX(' ' , (REVERSE(vfv1 .Name ))) - 1 ) as Date ) as Date
57- FROM VolunteerForm vfv1 WHERE UPPER (LEFT(vfv1 .Name , LEN(' FBI' ))) = CONCAT(' FBI' , ' ' )
58- UNION
59- SELECT PeopleId, DateValue as Date
60- FROM PeopleExtra WHERE Field = ' Background Check: Latest FBI'
61- ) FBIa
62- GROUP BY PeopleId
63- ) as FBI ON p .PeopleId = FBI .PeopleId
64-
65- LEFT JOIN (
66- SELECT PeopleId, max (Date ) as ExpDate FROM (
67- SELECT PeopleId, TRY_CAST(RIGHT(vfv1 .Name ,CHARINDEX(' ' , (REVERSE(vfv1 .Name ))) - 1 ) as Date ) as Date
68- FROM VolunteerForm vfv1 WHERE UPPER (LEFT(vfv1 .Name , LEN(' Aff' ))) = CONCAT(' Aff' , ' ' )
69- UNION
70- SELECT PeopleId, DateValue as Date
71- FROM PeopleExtra WHERE Field = ' ds-Resident Affidavit Date' OR Field = ' ds-FBI Waiver Affidavit Date'
72- ) Affa
73- GROUP BY PeopleId
74- ) as Aff ON p .PeopleId = Aff .PeopleId
75-
76- LEFT JOIN (
77- SELECT PeopleId, CONVERT (date , MAX (Updated)) as InProgressSince
78- FROM BackgroundChecks
79- WHERE Updated > DATEADD(month, - 3 , GETDATE())
80- AND ReportTypeID = 1
81- AND ApprovalStatus = ' Pending'
82- GROUP BY PeopleId
83- ) as InProgress ON p .PeopleId = InProgress .PeopleId
84-
85- LEFT JOIN (
86- SELECT PeopleId, CONVERT (date , MAX (Updated)) as TrainingDate
87- FROM BackgroundChecks
88- WHERE ReportTypeID = 3
89- AND Score > 80
90- GROUP BY PeopleId
91- ) as LastTraining ON p .PeopleId = LastTraining .PeopleId
92-
93- WHERE t .Name = ' F50' OR t .Name = ' F51'
94-
95- ) s
139+ DATEDIFF (day , GetDate (), s .ActionRequired ) as DaysToAction,
140+ IIF (s .ActionRequired > GETDATE (), ' ' , ' Invalid' ) as Status
141+ -- INTO #status
142+ FROM #t4 as s
0 commit comments