Files
openfoodnetwork/app/models/enterprise_group.rb
2015-02-12 16:36:18 +11:00

89 lines
2.6 KiB
Ruby

class EnterpriseGroup < ActiveRecord::Base
acts_as_list
has_and_belongs_to_many :enterprises
belongs_to :owner, class_name: 'Spree::User', foreign_key: :owner_id, inverse_of: :owned_groups
belongs_to :address, :class_name => 'Spree::Address'
accepts_nested_attributes_for :address
validates :address, presence: true, associated: true
before_validation :set_undefined_address_fields
before_validation :set_unused_address_fields
validates :name, presence: true
validates :description, presence: true
attr_accessible :name, :description, :long_description, :on_front_page, :enterprise_ids
attr_accessible :owner_id
attr_accessible :logo, :promo_image
attr_accessible :address_attributes
attr_accessible :email, :website, :facebook, :instagram, :linkedin, :twitter
delegate :phone, :to => :address
has_attached_file :logo,
styles: {medium: "100x100"},
url: '/images/enterprise_groups/logos/:id/:style/:basename.:extension',
path: 'public/images/enterprise_groups/logos/:id/:style/:basename.:extension'
has_attached_file :promo_image,
styles: {large: ["1200x260#", :jpg]},
url: '/images/enterprise_groups/promo_images/:id/:style/:basename.:extension',
path: 'public/images/enterprise_groups/promo_images/:id/:style/:basename.:extension'
validates_attachment_content_type :logo, :content_type => /\Aimage\/.*\Z/
validates_attachment_content_type :promo_image, :content_type => /\Aimage\/.*\Z/
include Spree::Core::S3Support
supports_s3 :logo
supports_s3 :promo_image
scope :by_position, order('position ASC')
scope :on_front_page, where(on_front_page: true)
scope :managed_by, lambda { |user|
if user.has_spree_role?('admin')
scoped
else
where('owner_id = ?', user.id);
end
}
def set_unused_address_fields
address.firstname = address.lastname = 'unused' if address.present?
end
def set_undefined_address_fields
if !address.present?
return
end
address.phone.present? || address.phone = 'undefined'
address.address1.present? || address.address1 = 'undefined'
address.city.present? || address.city = 'undefined'
address.zipcode.present? || address.zipcode = 'undefined'
end
def phone
address.andand.phone.andand.sub('undefined', '')
end
def address1
address.andand.address1.andand.sub('undefined', '')
end
def address2
address.andand.address2.andand.sub('undefined', '')
end
def city
address.andand.city.andand.sub('undefined', '')
end
def state
address.andand.state
end
def zipcode
address.andand.zipcode.andand.sub('undefined', '')
end
end