CREATE OR REPLACE FUNCTION public.fn_register_tutor(p_data jsonb)
 RETURNS jsonb
 LANGUAGE plpgsql
AS $function$
DECLARE
    v_partner_id bigint := (p_data->>'partner_id')::bigint;
    v_name       text   := p_data->>'name';
    v_surname    text   := p_data->>'surname';
    v_email      text   := p_data->>'email';
    v_phone      text   := p_data->>'phone';
    v_country    text   := p_data->>'country';
    v_range      text   := p_data->>'zinzino_range';
BEGIN
    INSERT INTO public.partners (partner_id, name, surname, email, phone, country, zinzino_range)
    VALUES (v_partner_id, v_name, v_surname, v_email::valid_email, v_phone::intl_phone, v_country::iso_country, v_range)
    ON CONFLICT (partner_id) DO UPDATE
        SET name          = EXCLUDED.name,
            surname       = EXCLUDED.surname,
            zinzino_range = EXCLUDED.zinzino_range;

    INSERT INTO public.tutor_profiles (partner_id, status)
    VALUES (v_partner_id, 'ACTIVE')
    ON CONFLICT (partner_id) DO UPDATE
        SET status = 'ACTIVE', updated_at = NOW();

    RETURN jsonb_build_object('success', true, 'partner_id', v_partner_id);
END;
$function$
;
