Skip to content

Instantly share code, notes, and snippets.

@Theminijohn
Created March 24, 2015 20:04
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save Theminijohn/47455c084d4494b66262 to your computer and use it in GitHub Desktop.
Save Theminijohn/47455c084d4494b66262 to your computer and use it in GitHub Desktop.
class Team < ActiveRecord::Base
# Friendly ID
extend FriendlyId
friendly_id :name
# Rolify
resourcify
# Associations
belongs_to :user
has_and_belongs_to_many :players
has_many :ranked_statistics
# Validations
validates :name, presence: true
validates :tag, presence: true
# Callbacks
after_save :send_to_mixpanel
after_create :import_ranked_statistic
# Fetch Initial Information
def fetch_and_save(team_identifier)
# Get User
owner = Player.find(player_id)
## @IF Team already exists
if Team.where(name: team_identifier, server: owner.server).present?
errors.add :base, 'This Team exists already!'
return false
else
# 1.) Connect to Perseus
client = Perseus::Client.new Settings.rito.api_key, {region: owner.server}
# 2.) Get Teams
teams = client.team.by_summoner(owner.summoner_id).values
# 3.) Find Team by Name
team = teams.first.detect{ |t| t.name == team_identifier }
if team.nil?
errors.add :base, "We couldn't find a Team with that Name"
return false
else
## Check if owner
if team.roster.owner_id == owner.summoner_id
assign_attributes(
full_id: team.full_id,
status: team.status.capitalize,
name: team.name,
tag: team.tag,
create_date: team.create_date,
modify_date: team.modify_date,
last_join_date: team.last_join_date,
second_last_join_date: team.second_last_join_date,
third_last_join_date: team.third_last_join_date,
last_joined_ranked_date: team.last_joined_ranked_team_queue_date,
owner_id: owner.id,
server: owner.server
)
## Do something with the Team Roster [Send invites etc.]
# Add and Save
players << owner
save
else
errors.add :base, "You are not the owner of #{team_identifier}!"
return false
end
end
end
rescue StandardError
errors.add :base, "We couldn't verify that you are the owner of this team, Please contact Support"
return false
end
def send_to_mixpanel
TeamMxpJob.perform_later(self, user)
end
def import_ranked_statistic
TeamRankedStatJob.perform_later(self)
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment