# frozen_string_literal: true class WowReputationDetailWorker < WowSidekiqWorker def perform(reputation_id) return unless (wow_reputation = WowReputation.find_by(reputation_id: reputation_id)) RBattlenet.set_options(locale: 'all') result = RBattlenet::Wow::ReputationFaction.find(reputation_id) return unless result.status_code == 200 # Global data wow_reputation.wow_reputation_tier = WowReputationTier.find_by(reputation_tier_id: result.reputation_tiers.id) wow_reputation.faction = result.player_faction.type if result.player_faction # If it's a meta faction result.factions&.each do |faction| wow_reputation.sub_wow_reputations << WowReputation.find_by(reputation_id: faction.id) end # Localisation data locales.each do |locale| Mobility.with_locale(locale[0]) do wow_reputation.description = result.description[locale[1]] if result.description wow_reputation.translated_faction = result.player_faction.name[locale[1]] if result.player_faction end end wow_reputation.save end end