mirror of
https://github.com/pacnpal/thrilltrack-explorer.git
synced 2025-12-26 14:27:00 -05:00
feat: Implement ticket system and reply button
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
-- Add ticket number system to contact submissions
|
||||
-- Create sequence for ticket numbers starting at 100000
|
||||
CREATE SEQUENCE IF NOT EXISTS contact_ticket_number_seq START 100000;
|
||||
|
||||
-- Add ticket_number column with unique constraint
|
||||
ALTER TABLE public.contact_submissions
|
||||
ADD COLUMN IF NOT EXISTS ticket_number TEXT UNIQUE;
|
||||
|
||||
-- Create function to generate ticket number in format TW-XXXXXX
|
||||
CREATE OR REPLACE FUNCTION generate_ticket_number()
|
||||
RETURNS TEXT AS $$
|
||||
BEGIN
|
||||
RETURN 'TW-' || LPAD(nextval('contact_ticket_number_seq')::TEXT, 6, '0');
|
||||
END;
|
||||
$$ LANGUAGE plpgsql SECURITY DEFINER;
|
||||
|
||||
-- Create function to auto-set ticket number on insert
|
||||
CREATE OR REPLACE FUNCTION set_ticket_number()
|
||||
RETURNS TRIGGER AS $$
|
||||
BEGIN
|
||||
IF NEW.ticket_number IS NULL THEN
|
||||
NEW.ticket_number := generate_ticket_number();
|
||||
END IF;
|
||||
RETURN NEW;
|
||||
END;
|
||||
$$ LANGUAGE plpgsql SECURITY DEFINER;
|
||||
|
||||
-- Add trigger to auto-generate ticket numbers
|
||||
DROP TRIGGER IF EXISTS set_ticket_number_trigger ON public.contact_submissions;
|
||||
CREATE TRIGGER set_ticket_number_trigger
|
||||
BEFORE INSERT ON public.contact_submissions
|
||||
FOR EACH ROW
|
||||
EXECUTE FUNCTION set_ticket_number();
|
||||
|
||||
-- Backfill existing submissions with ticket numbers based on creation order
|
||||
DO $$
|
||||
DECLARE
|
||||
rec RECORD;
|
||||
BEGIN
|
||||
FOR rec IN
|
||||
SELECT id
|
||||
FROM public.contact_submissions
|
||||
WHERE ticket_number IS NULL
|
||||
ORDER BY created_at ASC
|
||||
LOOP
|
||||
UPDATE public.contact_submissions
|
||||
SET ticket_number = generate_ticket_number()
|
||||
WHERE id = rec.id;
|
||||
END LOOP;
|
||||
END $$;
|
||||
|
||||
-- Add index for ticket_number lookups
|
||||
CREATE INDEX IF NOT EXISTS idx_contact_submissions_ticket_number
|
||||
ON public.contact_submissions(ticket_number);
|
||||
Reference in New Issue
Block a user