aonestar
.public
Tables
(current)
Columns
Constraints
Relationships
Orphan Tables
Anomalies
Routines
sp_assign_guest_document
Parameters
Name
Type
Mode
doc_id
integer
IN
register_id
integer
IN
create_new_guest
boolean
IN (DEFAULT true)
Definition
DECLARE v_result json; v_msg_text text; v_sqlstate text; v_detail text; v_hint text; v_context text; v_doc_data jsonb; v_new_guest_id integer; v_target_guest_id integer; BEGIN SELECT d.doc_data INTO v_doc_data FROM guest_document d WHERE d.id = doc_id FOR UPDATE; IF v_doc_data IS NULL THEN PERFORM sp_raise_error('99', 'Guest document not found'); END IF; IF NOT create_new_guest THEN SELECT r.guest_id INTO v_target_guest_id FROM registration r WHERE r.id = register_id FOR UPDATE; END IF; v_new_guest_id := sp_save_guest_document(v_doc_data, NULL, v_target_guest_id); UPDATE registration SET guest_id = v_new_guest_id WHERE id = register_id; UPDATE guest_document SET guest_id = v_new_guest_id, pending_assignment = false, assign_time = current_timestamp WHERE id = doc_id; UPDATE guest SET doc_id = sp_assign_guest_document.doc_id WHERE id = v_new_guest_id; RETURN fn_result_success(json_build_object('guest_id', v_new_guest_id)); EXCEPTION WHEN OTHERS THEN GET STACKED DIAGNOSTICS v_msg_text = MESSAGE_TEXT, v_sqlstate = RETURNED_SQLSTATE, v_detail = PG_EXCEPTION_DETAIL, v_hint = PG_EXCEPTION_HINT, v_context = PG_EXCEPTION_CONTEXT; RETURN fn_handle_error(v_sqlstate, v_msg_text, v_detail, v_hint, v_context, 'sp_assign_guest_document', jsonb_build_object('doc_id', doc_id, 'register_id', register_id, 'create_new_guest', create_new_guest)); END