add a method to get the current version
[shapado:shapado.git] / app / models / invoices / shapado_version.rb
1 class ShapadoVersion
2   include Mongoid::Document
3
4   field :token, :type => String, :index => true
5   field :price, :type => Integer
6
7   field :page_views, :type => Integer
8   field :custom_ads, :type => Boolean
9   field :custom_js, :type => Boolean
10   field :custom_domain, :type => Boolean
11   field :private, :type => Boolean
12   field :custom_themes, :type => Boolean
13   field :basic_support, :type => Boolean
14   field :phone_support, :type => Boolean
15
16
17   references_many :groups, :validate => false
18
19   validates_presence_of :token, :price
20   validates_uniqueness_of :token
21   
22   def can_use_custom_ads?
23     self.custom_ads
24   end
25   
26   def can_use_custom_js?
27     self.custom_js
28   end
29   
30   def can_use_custom_domain?
31     self.custom_domain
32   end
33   
34   def is_private?
35     self.private
36   end
37   
38   def can_use_custom_themes?
39     self.custom_themes
40   end
41   
42   def have_basic_support?
43     self.basic_support
44   end
45   
46   def have_phone_support?
47     self.phone_support
48   end
49
50   def name
51     I18n.t("versions.#{token}")
52   end
53
54   def in_dollars
55     self.price / 100.0
56   end
57   
58   def self.libre
59     @libre ||= ShapadoVersion.new(:page_views => 0, :custom_ads => true, :custom_js => true, 
60                                   :custom_domain => true, :private => false, :custom_themes => true, 
61                                   :basic_support => false, :phone_support => false)
62   end
63
64   def self.reload!
65     versions_data = YAML.load_file("#{Rails.root}/config/versions.yml")
66
67     versions_data.each do |token, data|
68       version = ShapadoVersion.where(:token => token).first
69       if version.nil?
70         version = ShapadoVersion.create!(data.merge(:token => token))
71         Stripe.api_key = PaymentsConfig['secret']
72         Stripe::Plan.create(
73           :amount => version.price,
74           :interval => 'month',
75           :name => version.token.titleize,
76           :currency => 'usd',
77           :id => version.token
78         )
79       else
80         version.update_attributes(data)
81       end
82     end
83   end
84 end