CREATE OR REPLACE FUNCTION public.fn_admin_create_email_rule(p_event_type character varying, p_template_key character varying, p_email_field character varying, p_name_field character varying, p_language character varying)
 RETURNS jsonb
 LANGUAGE plpgsql
AS $function$
DECLARE
    v_id integer;
BEGIN
    INSERT INTO public.email_dispatch_rules (event_type, template_key, email_field, name_field, language, active)
    VALUES (p_event_type, p_template_key, p_email_field, p_name_field, p_language, true)
    RETURNING id INTO v_id;
    RETURN jsonb_build_object('success', true, 'id', v_id);
EXCEPTION
    WHEN unique_violation THEN
        RETURN jsonb_build_object('error', 'Ya existe una regla para este evento y plantilla.');
    WHEN foreign_key_violation THEN
        RETURN jsonb_build_object('error', 'La plantilla especificada no existe.');
END;
$function$
;
