module WolfCore::Integrations::JobseekerApiOperations

def create_jobseeker(wolf_token:, jobseeker:, tenant:, wolf_platform_url:)

def create_jobseeker(wolf_token:, jobseeker:, tenant:, wolf_platform_url:)
  parsed_http_post(
    headers: { "Authorization" => "Bearer #{wolf_token}" },
    query: { tenant: tenant },
    url: "#{wolf_platform_url}/api/v2/jobseekers",
    body: jobseeker
  )
end

def create_jobseeker!(wolf_token:, jobseeker:, tenant:, wolf_platform_url:, error_message:, error_data: nil)

def create_jobseeker!(wolf_token:, jobseeker:, tenant:, wolf_platform_url:, error_message:, error_data: nil)
  response = create_jobseeker(
    wolf_token: wolf_token,
    jobseeker: jobseeker,
    tenant: tenant,
    wolf_platform_url: wolf_platform_url
  )
  error_data ||= {}
  validate_http_response(response: response, message: error_message, error_data: error_data.merge(jobseeker: jobseeker))
  response
end

def fetch_jobseeker(wolf_token:, jobseeker_id:, tenant:, wolf_platform_url:, query: nil)

def fetch_jobseeker(wolf_token:, jobseeker_id:, tenant:, wolf_platform_url:, query: nil)
  query ||= {}
  parsed_http_get(
    headers: { "Authorization" => "Bearer #{wolf_token}" },
    url: "#{wolf_platform_url}/api/v2/jobseekers/#{jobseeker_id}",
    query: query.merge(tenant: tenant)
  )
end

def fetch_jobseeker!(wolf_token:, jobseeker_id:, tenant:, wolf_platform_url:, error_message:, query: nil, error_data: nil)

def fetch_jobseeker!(wolf_token:, jobseeker_id:, tenant:, wolf_platform_url:, error_message:, query: nil, error_data: nil)
  response = fetch_jobseeker(
    wolf_token: wolf_token,
    jobseeker_id: jobseeker_id,
    tenant: tenant,
    wolf_platform_url: wolf_platform_url,
    query: query
  )
  error_data ||= {}
  validate_http_response(response: response, message: error_message, error_data: error_data.merge(jobseeker_id: jobseeker_id, query: query))
  response.body.dig("data", "table", "jobseeker")
end

def fetch_jobseeker_by_user_id!(wolf_token:, tenant:, wolf_platform_url:, user_id:)

def fetch_jobseeker_by_user_id!(wolf_token:, tenant:, wolf_platform_url:, user_id:)
  jobseekers = fetch_jobseekers!(
    wolf_token: wolf_token,
    tenant: tenant,
    wolf_platform_url: wolf_platform_url,
    query: { user_id: user_id }
  )
  jobseekers.first
end

def fetch_jobseekers(wolf_token:, tenant:, wolf_platform_url:, query: nil)

def fetch_jobseekers(wolf_token:, tenant:, wolf_platform_url:, query: nil)
  query ||= {}
  parsed_http_get(
    headers: { "Authorization" => "Bearer #{wolf_token}" },
    url: "#{wolf_platform_url}/api/v2/jobseekers",
    query: query.merge(tenant: tenant)
  )
end

def fetch_jobseekers!(wolf_token:, tenant:, wolf_platform_url:, error_message:, query: nil, error_data: nil)

def fetch_jobseekers!(wolf_token:, tenant:, wolf_platform_url:, error_message:, query: nil, error_data: nil)
  response = fetch_jobseekers(
    wolf_token: wolf_token,
    tenant: tenant,
    wolf_platform_url: wolf_platform_url,
    query: query
  )
  error_data ||= {}
  validate_http_response(response: response, message: error_message, error_data: error_data.merge(query: query))
  response.body.dig("data", "table", "jobseeker")
end

def update_jobseeker(wolf_token:, jobseeker:, tenant:, wolf_platform_url:, jobseeker_id:)

def update_jobseeker(wolf_token:, jobseeker:, tenant:, wolf_platform_url:, jobseeker_id:)
  parsed_http_put(
    headers: { "Authorization" => "Bearer #{wolf_token}" },
    query: { tenant: tenant },
    url: "#{wolf_platform_url}/api/v2/jobseekers/#{jobseeker_id}",
    body: jobseeker
  )
end

def update_jobseeker!(wolf_token:, jobseeker:, tenant:, wolf_platform_url:, error_message:, jobseeker_id:, error_data: nil)

def update_jobseeker!(wolf_token:, jobseeker:, tenant:, wolf_platform_url:, error_message:, jobseeker_id:, error_data: nil)
  response = update_jobseeker(
    wolf_token: wolf_token,
    jobseeker: jobseeker,
    tenant: tenant,
    wolf_platform_url: wolf_platform_url,
    jobseeker_id: jobseeker_id
  )
  error_data ||= {}
  validate_http_response(response: response, message: error_message, error_data: error_data.merge(jobseeker_id: jobseeker_id, jobseeker: jobseeker))
  response
end