module WolfCore::Integrations::ContractApiOperations
def extract_ids_from_contract_id(contract_id)
def extract_ids_from_contract_id(contract_id) match = contract_id.match(CONTRACT_ID_REGEX) raise_service_error(message: "Invalid contract_id format", data: { contract_id: contract_id }) unless match order_id = match[1] jobseeker_id = match[2] [order_id, jobseeker_id] end
def fetch_contract(wolf_token:, tenant:, wolf_platform_url:, contract_id:, query: nil)
def fetch_contract(wolf_token:, tenant:, wolf_platform_url:, contract_id:, query: nil) order_id, jobseeker_id = extract_ids_from_contract_id(contract_id) query ||= {} parsed_http_get( headers: { "Authorization" => "Bearer #{wolf_token}" }, url: "#{wolf_platform_url}/api/v2/contracts/#{order_id}/#{jobseeker_id}", query: query.merge(tenant: tenant) ) end
def fetch_contract!(wolf_token:, tenant:, wolf_platform_url:, contract_id:, error_message:, error_data: nil, query: nil)
def fetch_contract!(wolf_token:, tenant:, wolf_platform_url:, contract_id:, error_message:, error_data: nil, query: nil) response = fetch_contract( wolf_token: wolf_token, tenant: tenant, wolf_platform_url: wolf_platform_url, contract_id: contract_id, query: query ) order_id, jobseeker_id = extract_ids_from_contract_id(contract_id) error_data ||= {} validate_http_response( response: response, message: error_message, error_data: error_data.merge(contract_id: contract_id, order_id: order_id, jobseeker_id: jobseeker_id, query: query) ) response.body.dig("data", "table", "contract") end
def update_contract(wolf_token:, tenant:, wolf_platform_url:, contract_id:, contract:)
def update_contract(wolf_token:, tenant:, wolf_platform_url:, contract_id:, contract:) order_id, jobseeker_id = extract_ids_from_contract_id(contract_id) parsed_http_put( headers: { "Authorization" => "Bearer #{wolf_token}" }, url: "#{wolf_platform_url}/api/v2/contracts/#{order_id}/#{jobseeker_id}", query: { tenant: tenant }, body: contract ) end
def update_contract!(wolf_token:, tenant:, wolf_platform_url:, contract_id:, contract:, error_message:, error_data: nil)
def update_contract!(wolf_token:, tenant:, wolf_platform_url:, contract_id:, contract:, error_message:, error_data: nil) response = update_contract( wolf_token: wolf_token, tenant: tenant, wolf_platform_url: wolf_platform_url, contract_id: contract_id, contract: contract ) order_id, jobseeker_id = extract_ids_from_contract_id(contract_id) error_data ||= {} validate_http_response( response: response, message: error_message, error_data: error_data.merge(contract_id: contract_id, order_id: order_id, jobseeker_id: jobseeker_id, contract: contract) ) response end