Add ACMCC app source, Supabase backend, and project config

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-01 20:19:26 -04:00
parent 313b51b412
commit 183fe0a93c
1422 changed files with 259271 additions and 0 deletions
@@ -0,0 +1,106 @@
CREATE OR REPLACE FUNCTION public.create_form_inbox_entry_from_owner_registration_request()
RETURNS trigger
LANGUAGE plpgsql
SECURITY DEFINER
SET search_path TO 'public'
AS $$
DECLARE
v_owner_name text;
v_owner_email text;
v_title text;
v_summary text;
BEGIN
IF NEW.owner_id IS NOT NULL THEN
SELECT
NULLIF(trim(concat_ws(' ', o.first_name, o.last_name)), ''),
o.email
INTO v_owner_name, v_owner_email
FROM public.owners o
WHERE o.id = NEW.owner_id;
END IF;
v_owner_name := COALESCE(v_owner_name, NULLIF(NEW.last_name, ''));
v_owner_email := COALESCE(v_owner_email, NEW.email);
v_title := 'Registration Request - ' || COALESCE(v_owner_name, NEW.email, 'Homeowner');
v_summary := concat_ws(' | ',
'Email: ' || NEW.email,
CASE WHEN NEW.unit_identifier IS NOT NULL THEN 'Unit: ' || NEW.unit_identifier END,
CASE WHEN NEW.account_number IS NOT NULL THEN 'Account: ' || NEW.account_number END,
CASE WHEN NEW.status IS NOT NULL THEN 'Status: ' || NEW.status END
);
INSERT INTO public.form_inbox (
source_type,
source_id,
association_id,
title,
submitter_name,
submitter_email,
summary
)
VALUES (
'registration_request',
NEW.id,
NEW.association_id,
v_title,
v_owner_name,
v_owner_email,
LEFT(v_summary, 200)
);
RETURN NEW;
END;
$$;
CREATE OR REPLACE FUNCTION public.notify_staff_on_owner_registration_request()
RETURNS trigger
LANGUAGE plpgsql
SECURITY DEFINER
SET search_path TO 'public'
AS $$
DECLARE
staff_user record;
v_display_name text;
v_message text;
BEGIN
v_display_name := COALESCE(NULLIF(NEW.last_name, ''), NEW.email, 'A homeowner');
v_message := v_display_name || ' submitted a registration request';
IF NEW.unit_identifier IS NOT NULL THEN
v_message := v_message || ' for unit ' || NEW.unit_identifier;
END IF;
FOR staff_user IN
SELECT DISTINCT user_id
FROM public.user_roles
WHERE role IN ('admin'::public.app_role, 'manager'::public.app_role)
AND user_id IS NOT NULL
LOOP
INSERT INTO public.in_app_notifications
(user_id, type, title, message, related_item_id, related_item_type, link)
VALUES (
staff_user.user_id,
'owner_registration_submitted',
'New Registration Request',
v_message,
NEW.id,
'owner_registration_request',
'/dashboard/form-inbox'
);
END LOOP;
RETURN NEW;
END;
$$;
DROP TRIGGER IF EXISTS trg_owner_registration_request_form_inbox ON public.owner_registration_requests;
CREATE TRIGGER trg_owner_registration_request_form_inbox
AFTER INSERT ON public.owner_registration_requests
FOR EACH ROW
EXECUTE FUNCTION public.create_form_inbox_entry_from_owner_registration_request();
DROP TRIGGER IF EXISTS trg_owner_registration_request_notify_staff ON public.owner_registration_requests;
CREATE TRIGGER trg_owner_registration_request_notify_staff
AFTER INSERT ON public.owner_registration_requests
FOR EACH ROW
EXECUTE FUNCTION public.notify_staff_on_owner_registration_request();