OSDN Git Service

v07
[pettanr/pettanr.git] / app / models / provider_license.rb
1 class ProviderLicense < ActiveRecord::Base
2   belongs_to :provider
3   belongs_to :license, :foreign_key => :demanders_license_id
4   
5   validates :provider_id, :presence => true, :numericality => true, :existence => true
6   validates :providers_license_id, :presence => true, :numericality => true
7   validates :demanders_license_id, :presence => true, :numericality => true
8   
9   def self.get_one pid, plid
10     ProviderLicense.find_by_provider_id_and_providers_license_id(pid, plid) || ProviderLicense.new
11   end
12   
13   def self.exist_license pid, plid
14     ProviderLicense.find_by_provider_id_and_providers_license_id(pid, plid) != nil
15   end
16   
17   def self.import pid, providers_licenses
18     res = []
19     ProviderLicense.transaction do
20       providers_licenses.each do |providers_license|
21         if ProviderLicense.exist_license(pid, providers_license['id'])
22         else
23           if demander_license = License.find_by_name(providers_license['name'])
24             pl = ProviderLicense.new :provider_id => pid, :providers_license_id => providers_license['id'], :demanders_license_id => demander_license.id
25             unless pl.save
26               res << providers_license
27             end
28           else
29             res << providers_license
30           end
31         end
32       end
33       raise ActiveRecord::Rollback if res.any?
34     end
35     LicenseImportResult.new res
36   end
37   
38 end