Skip to content

Instantly share code, notes, and snippets.

@dealingwith
Created June 21, 2013 02:19
Show Gist options
  • Save dealingwith/5828402 to your computer and use it in GitHub Desktop.
Save dealingwith/5828402 to your computer and use it in GitHub Desktop.
class PlayerMove < ActiveRecord::Base
module Moves
COMMUNITY_REWARDS = %w(desktop-referral-cr desktop-auth-cr desktop-fblike-cr desktop-fblike-cr-temp desktop-fbshare-cr
desktop-fbshare-cr-temp desktop-fbshare2-cr desktop-rating-cr desktop-review-cr
desktop-tweet-cr desktop-twitterfollow-cr desktop-twitterfollow-cr-temp mobile-fblike-cr
desktop-instagram-post-cr desktop-scratchoff-share-cr)
LEASE_UP = %w(desktop-fbshare-leaseup lu-fblike-leaseup lu-fbshare-leaseup lu-mobile-fbshare-leaseup
lu-referral-friend-share-fb lu-referral-friend-share-tweet lu-referral-friend-vote lu-tweet-leaseup lu-twitterfollow-leaseup)
SCRATCHOFF = %w(scratchoff)
INITIAL_MOVES = %w(initial_score)
LEGACY = %w(twitterfollow googleplus fblike facebookshare desktop-fbshare2 desktop-fbshare)
# CATEGORIZED
RATINGS = %w(desktop-rating-cr)
REVIEWS = %w(desktop-review-cr)
SOCIAL_MOVES = %w(desktop-fblike-cr desktop-fblike-cr-temp desktop-fbshare-cr
desktop-fbshare-cr-temp desktop-fbshare2-cr desktop-tweet-cr
desktop-twitterfollow-cr desktop-twitterfollow-cr-temp
mobile-fblike-cr desktop-instagram-post-cr) # desktop-fbshare-leaseup
# lu-fblike-leaseup lu-fbshare-leaseup lu-mobile-fbshare-leaseup
# lu-referral-friend-share-fb lu-referral-friend-share-tweet lu-tweet-leaseup lu-twitterfollow-leaseup)
LIKES = %w(desktop-fblike-cr desktop-fblike-cr-temp mobile-fblike-cr)
FB_SHARES = %w(desktop-fbshare-cr desktop-fbshare-cr-temp desktop-fbshare2-cr)
end
belongs_to :player
belongs_to :campaign
attr_accessible :score, :move, :campaign_id, :content, :client_id, :sourceIp
scope :opinions, where("move='desktop-review-cr' OR (move='desktop-rating-cr' AND CONVERT(content,decimal) >= 3.5)")
scope :others, where("move NOT IN ('desktop-review-cr','desktop-rating-cr','initial_score')")
scope :for_widget, includes(:player).group(:player_id).limit(50).order("player_moves.created_at")
scope :for, lambda {|thing|
case thing
when Campaign
where(:campaign_id => thing.id)
when Property
where(:campaign_id => thing.campaigns.collect{|c| c.id })
when Player
where(:player_id => thing.id)
end
}
scope :ratings, lambda { where(:move => Moves::RATINGS) }
scope :reviews, lambda { where(:move => Moves::REVIEWS) }
scope :social_moves, lambda { where(:move => Moves::SOCIAL_MOVES) }
scope :likes, lambda { where(:move => Moves::LIKES) }
scope :facebook_shares, lambda { where(:move => Moves::FB_SHARES) }
def t_move
I18n.t(move, :scope => :move_types)
end
def self.widget_json
{:include => {:player => {:only => :uid, :methods => :shortname}}, :only => [:content, :created_at, :move], :methods => [:t_move]}
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment