OSDN Git Service

Merge branch 'v05dev' of git.sourceforge.jp:/gitroot/pettanr/pettanr into v05
[pettanr/pettanr.git] / app / models / provider_status.rb
1 class ProviderStatus < ActiveRecord::Base
2   has_one :provider
3   
4   validates :token, :format => {:with => /^[a-zA-Z0-9]+$/, :allow_blank => true}
5   validates :receive_hour1, :numericality => {:allow_blank => true}
6   validates :receive_hour2, :numericality => {:allow_blank => true}
7 #  validates :received_at
8 #  validates :stopped_at
9   
10   before_save do |r|
11     r.token = r.token.gsub(/\s/, '') if r.token
12   end
13   
14   def supply_default
15   end
16   
17   def overwrite
18   end
19   
20   def own? ad
21     return false unless ad
22     ad.is_a?(Admin)
23   end
24   
25   def visible? ad
26     return false unless ad
27     ad.is_a?(Admin)
28   end
29   
30   def status
31     self.token.blank? ? 0 : 1
32   end
33   
34   def self.default_page_size
35     25
36   end
37   
38   def self.max_page_size
39     100
40   end
41   
42   def self.default_panel_size
43     30
44   end
45   
46   def self.max_panel_size
47     200
48   end
49   
50   def self.page prm = nil
51     page = prm.to_i
52     page = 1 if page < 1
53     page
54   end
55   
56   def self.page_size prm = self.default_page_size
57     page_size = prm.to_i
58     page_size = self.max_page_size if page_size > self.max_page_size
59     page_size = self.default_page_size if page_size < 1
60     page_size
61   end
62   
63   def self.list page = 1, page_size = self.default_page_size
64     opt = {}
65     opt.merge!(ProviderStatus.list_opt)
66     opt.merge!({:limit => page_size, :offset => (page -1) * page_size}) if page_size > 0
67     opt.merge!({:order => 'providers.name'})
68     ProviderStatus.find(:all, opt)
69   end
70   
71   def self.available_list page = 1, page_size = self.default_page_size
72     opt = {}
73     opt.merge!(ProviderStatus.list_opt)
74     opt.merge!({:limit => page_size, :offset => (page -1) * page_size}) if page_size > 0
75     opt.merge!({:conditions => ['provider_statuses.token is null'], :order => 'providers.name'})
76     ProviderStatus.find(:all, opt)
77   end
78   
79   def self.list_opt
80     {:include => {:provider => {}} }
81   end
82   
83   def self.list_json_opt
84     {:include => {:provider => {}} }
85   end
86   
87   def self.show pid, ad
88     opt = {}
89     opt.merge!(ProviderStatus.show_opt)
90     res = ProviderStatus.find(pid, opt)
91     raise ActiveRecord::Forbidden unless res.visible?(ad)
92     res
93   end
94   
95   def self.edit pid, ad
96     opt = {}
97     opt.merge!(ProviderStatus.show_opt)
98     res = ProviderStatus.find(pid, opt)
99     raise ActiveRecord::Forbidden unless res.own?(ad)
100     res
101   end
102   
103   def self.show_opt
104     {:include => {:provider => {}} }
105   end
106   
107   def self.show_json_opt
108     {:include => {:provider => {}} }
109   end
110   
111   def stop
112     self.token = nil
113     self.save
114   end
115   
116   def self.import pid, exports
117     res = {}
118     ProviderStatus.transaction do
119       res[:licenses] = ProviderLicense.import pid, exports['licenses']
120       raise ActiveRecord::Rollback if res[:licenses].any?
121       res[:artists] = ProviderArtist.import pid, exports['artists']
122       raise ActiveRecord::Rollback if res[:artists].any?
123       res[:original_pictures] = ProviderOriginalPicture.import pid, exports['original_pictures'], exports['pictures']
124       raise ActiveRecord::Rollback if res[:original_pictures][:original_pictures].any? or res[:original_pictures][:resource_pictures].any? or res[:original_pictures][:pictures].any?
125     end
126     res
127   end
128   
129 end