AgileVentures/osra

View on GitHub
app/models/partner.rb

Summary

Maintainability
A
0 mins
Test Coverage
class Partner < ActiveRecord::Base
  include Initializer

  self.per_page = 10
  attr_readonly :province_id

  after_initialize :default_status_to_active, :default_start_date_to_today
  before_create :generate_osra_num

  validates :name, presence: true, uniqueness: true
  validates :province_id, presence: true
  validates :status_id, presence: true
  validates :start_date, valid_date_presence: true,
                         date_not_in_future: true,
                         date_beyond_osra_establishment: true

  belongs_to :province
  belongs_to :status
  has_many :orphan_lists
  has_many :orphans

  delegate :code, to: :province, prefix: true

  acts_as_sequenced scope: :province_id

  def active?
    status && status.name == 'Active'
  end

  def self.all_names
    Partner.order(:name).map(&:name)
  end

  private

  def generate_osra_num
    self.osra_num = province.code.to_s + "%03d" % sequential_id
  end
end