OSDN Git Service

fix: fetch fail
[pettanr/pettanr.git] / app / models / provider_status.rb
index e9dc46d..e95f979 100644 (file)
@@ -1,7 +1,7 @@
 class ProviderStatus < ActiveRecord::Base
   has_one :provider
   
-  validates :token, :format => {:with => /^[a-zA-Z0-9]+$/, :allow_blank => true}
+  validates :token, :format => {:with => /\a[a-zA-Z0-9]+\z/, :allow_blank => true}
   validates :receive_hour1, :numericality => {:allow_blank => true}
   validates :receive_hour2, :numericality => {:allow_blank => true}
 #  validates :received_at
@@ -123,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
@@ -159,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