DROP TRIGGER IF EXISTS trg_auto_close_ticket ON public.crm_tickets;
CREATE OR REPLACE FUNCTION public.trg_fn_manage_ticket_closed_at()
RETURNS trigger
LANGUAGE plpgsql
AS $$
BEGIN
    IF NEW.status = 'closed' THEN
        NEW.closed_at := COALESCE(NEW.closed_at, CURRENT_TIMESTAMP);
    ELSE
        NEW.closed_at := NULL;
    END IF;
    RETURN NEW;
END;
$$;

CREATE TRIGGER trg_auto_close_ticket
BEFORE INSERT OR UPDATE ON public.crm_tickets
FOR EACH ROW
EXECUTE FUNCTION public.trg_fn_manage_ticket_closed_at();
