DROP VIEW pc.opportunity_extract;
CREATE OR REPLACE VIEW pc.opportunity_extract AS
SELECT
id,
notif_source,
NULLIF(notif_date,'')::DATE notif_date,
notif_url::TEXT, --'Link' notif_url,
notif_details,
oppty_desc,
oppty_source,
NULLIF(oppty_date,'')::DATE oppty_date,
oppty_url::TEXT, --'Link' oppty_url,
(oppty_details::jsonb->'data'->>'naics')::jsonb->0->'code'->>0 naics,
(oppty_details::jsonb->'data'->>'placeOfPerformance')::jsonb->'state'->>'code' pop,
(oppty_details::jsonb->'data'->>'solicitation')::jsonb->>'setAside' setaside,
(oppty_details::jsonb->'data'->>'pointOfContact')::jsonb->0->>'fullName' primary_poc_name,
(oppty_details::jsonb->'data'->>'pointOfContact')::jsonb->0->>'email' primary_poc_email,
(oppty_details::jsonb->'data'->>'pointOfContact')::jsonb->1->>'fullName' secondary_poc_fullname,
(oppty_details::jsonb->'data'->>'pointOfContact')::jsonb->1->>'email' secondary_poc_email,
FROM pc.opportunity o
LEFT JOIN pc.naics n ON ( ((oppty_details::jsonb->'data'->>'naics')::jsonb->0->'code'->>0)::INTEGER = n.naics_code)
/*WHERE CASE WHEN match = 'MATCH' THEN 1
WHEN n.naics_code IS NOT NULL THEN 1
WHEN (oppty_details::jsonb->'data'->>'placeOfPerformance')::jsonb->'state'->>'code' IN ('NY', 'CT', 'MA', 'RI') THEN 1
ELSE 0 END = 1*/
ORDER BY notif_date DESC
CREATE TABLE opportunity_report AS
SELECT * FROM pc.opportunity_extract;
INSERT INTO opportunity_report
SELECT 1, e.* FROM pc.opportunity_extract e LEFT JOIN pc.opportunity_report r USING (id)
WHERE r.id IS NULL
INSERT INTO match_type (match_type)
SELECT DISTINCT match FROM opportunity_report;
UPDATE opportunity_report o SET match_id = m.id
FROM match_type m
WHERE m.match_type = o.match_id
UPDATE opportunity_report SET match_id = 1 WHERE notif_date = '2019-12-22'
WITH comb AS (
SELECT primary_poc_name AS name, lower(primary_poc_email) AS email
FROM pc.opportunity_report
UNION ALL
SELECT secondary_poc_fullname, lower(secondary_poc_email)
FROM pc.opportunity_report
) SELECT DISTINCT email FROM comb
WITH omit AS(
SELECT oppty_details::jsonb->'opportunityId' o FROM pc.opportunity WHERE match = 'SKIP')
UPDATE pc.opportunity
SET match = 'SKIP'
WHERE match IS NULL AND oppty_details::jsonb->'opportunityId' IN (SELECT * FROM omit)
WITH omit AS(
SELECT COALESCE(oppty_details::jsonb->'parent'->>'opportunityId' , oppty_details::jsonb->>'opportunityId') o, oppty_details::jsonb->>'modifiedDate' d FROM pc.opportunity WHERE NULLIF(match,'') IS NULL),
rec AS (SELECT o, COUNT(*) c, MAX(d) m FROM omit GROUP BY o HAVING COUNT(*) > 1)
UPDATE pc.opportunity o
SET --match = 'SKIP'
match = CASE WHEN oppty_details::jsonb->>'modifiedDate' != rec.m THEN 'SKIP' END
-- SELECT *
FROM rec
WHERE COALESCE(oppty_details::jsonb->'parent'->>'opportunityId' , oppty_details::jsonb->>'opportunityId') = rec.o
-- AND match IS NULL
-- AND oppty_details::jsonb->>'modifiedDate' != rec.m
WITH omit AS(
SELECT COALESCE(oppty_details::jsonb->'parent'->>'opportunityId' , oppty_details::jsonb->>'opportunityId') o, oppty_details::jsonb->>'status' d, match
FROM pc.opportunity WHERE NULLIF(match,'') IS NULL),
rec AS (SELECT o, COUNT(*) c, MAX(d) m FROM omit GROUP BY o HAVING COUNT(*) > 1)
SELECT *
FROM pc.opportunity, rec
WHERE COALESCE(oppty_details::jsonb->'parent'->>'opportunityId' , oppty_details::jsonb->>'opportunityId') = rec.o
--AND match IS NULL
--AND oppty_details::jsonb->>'modifiedDate' != rec.m
UPDATE pc.opportunity
SET match = 'SKIP'
WHERE notif_source = 'Sources Sought' AND NULLIF(match, '') IS NULL
SELECT jsonb_pretty(oppty_details::jsonb) FROM pc.opportunity
SELECT oppty_details::jsonb->'description'->0->>'body' FROM pc.opportunity
WHERE oppty_details::jsonb->'description'->0->>'body' ~* 'hardware'
SELECT oppty_details::jsonb->'parent'->>'opportunityId'
FROM pc.opportunity
WHERE notif_details ~ 'Enterprise Administrative Support Services'