OSDN Git Service

Merge branch 'v06' of git.sourceforge.jp:/gitroot/pettanr/pettanr into v06
[pettanr/pettanr.git] / app / models / provider_status.rb
index bad08fd..f49a98e 100644 (file)
@@ -9,6 +9,7 @@ class ProviderStatus < ActiveRecord::Base
   
   before_save do |r|
     r.token = r.token.gsub(/\s/, '') if r.token
+    r.token = nil if r.token.blank?
   end
   
   def supply_default
@@ -76,6 +77,14 @@ class ProviderStatus < ActiveRecord::Base
     ProviderStatus.find(:all, opt)
   end
   
+  def self.approve_list page = 1, page_size = self.default_page_size
+    opt = {}
+    opt.merge!(ProviderStatus.list_opt)
+    opt.merge!({:limit => page_size, :offset => (page -1) * page_size}) if page_size > 0
+    opt.merge!({:conditions => ['provider_statuses.token is not null'], :order => 'providers.name'})
+    ProviderStatus.find(:all, opt)
+  end
+  
   def self.list_opt
     {:include => {:provider => {}} }
   end
@@ -114,12 +123,19 @@ class ProviderStatus < ActiveRecord::Base
   end
   
   def ymd_to_time ymd_str
-    return nil if ymd_str.blank?
     date = nil
-    begin
-      date = Time.parse(ymd_str[0..3] + '/' + ymd_str[4..5] + '/' + ymd_str[6..7])
-    rescue
-      date = nil
+    if ymd_str.blank?
+      date = if self.received_at
+        self.received_at
+      else
+        nil
+      end
+    else
+      begin
+        date = Time.parse(ymd_str[0..3] + '/' + ymd_str[4..5] + '/' + ymd_str[6..7])
+      rescue
+        date = nil
+      end
     end
     date
   end
@@ -150,41 +166,56 @@ class ProviderStatus < ActiveRecord::Base
   
   def licenses_import date
     licenses = self.export_by('licenses_export', date)
-    return nil unless licenses
-    ProviderLicense.import self.provider.id, licenses
+    if  licenses
+      ProviderLicense.import self.provider.id, licenses
+    else
+      LicenseImportResult.new nil
+    end
   end
   
   def artists_import date
     artists = self.export_by('artists_export', date)
-    return nil unless artists
-    ProviderArtist.import self.provider.id, artists
+    if artists
+      ProviderArtist.import self.provider.id, artists
+    else
+      ArtistImportResult.new nil
+    end
   end
   
   def original_pictures_import date
     original_pictures = self.export_by('original_pictures_export', date)
-    return nil unless original_pictures
     pictures = self.export_by('pictures_export', date)
-    return nil unless pictures
-    ProviderOriginalPicture.import self.provider.id, original_pictures, pictures
-  end
-  
-  def port
-    exports = export_by('export', @provider_status, params[:date])
-    return nil unless exports
-    ProviderStatus.import @provider_status.provider.id, exports
+    if original_pictures and pictures
+      ProviderOriginalPicture.import self.provider.id, original_pictures, pictures
+    else
+      OriginalPictureImportResult.new nil
+    end
   end
   
-  def self.import pid, exports
-    res = {}
+  def import date
+    import_result = nil
     ProviderStatus.transaction do
-      res[:licenses] = ProviderLicense.import pid, exports['licenses']
-      raise ActiveRecord::Rollback if res[:licenses].any?
-      res[:artists] = ProviderArtist.import pid, exports['artists']
-      raise ActiveRecord::Rollback if res[:artists].any?
-      res[:original_pictures] = ProviderOriginalPicture.import pid, exports['original_pictures'], exports['pictures']
-      raise ActiveRecord::Rollback if res[:original_pictures][:original_pictures].any? or res[:original_pictures][:resource_pictures].any? or res[:original_pictures][:pictures].any?
+      import_result = self.licenses_import date
+      raise ActiveRecord::Rollback unless import_result.success?
+      import_result = self.artists_import date
+      raise ActiveRecord::Rollback unless import_result.success?
+      import_result = self.original_pictures_import date
+      raise ActiveRecord::Rollback unless import_result.success?
+      self.received_at = Time.now
+      self.save
     end
-    res
+    import_result
   end
   
+  def self.import_all date = nil
+    failures = {}
+    ProviderStatus.approve_list.each do |provider_status|
+      import_result = provider_status.import date
+      next if import_result.success?
+      failures[provider_status.provider.name] = import_result
+    end
+    failures.each do |name, import_result|
+      puts name
+    end
+  end
 end