Sha256: fbb920a835258baac6c44f6c3b3ab128a85b617178b4824464e8447a4a4a8aaf

Contents?: true

Size: 1.01 KB

Versions: 2

Compression:

Stored size: 1.01 KB

Contents

module RightnowOms
  class Order < ActiveRecord::Base
    REQUIRED_ATTRS = %W(
      province city district neighborhood room
      receiver payment_mode order_items user_id
    )

    has_many :order_items

    REQUIRED_ATTRS.each do |attr|
      validates attr, presence: true
    end

    validate :validates_mobile_and_tel

    def order_no
      @generator ||= OrderNoGenerator.new(self)
      @generator.generate
    end

    def delivery_address
      "#{province}#{city}#{district}#{street}#{neighborhood}#{room}"
    end

    class << self
      def new_with_items(base, items)
        Order.new(base) do |o|
          items.each do |i|
            children = i.delete(:children)

            oi = o.order_items.build(i.merge(order: o))
            children.each { |c| oi.children.build(c.merge(order: o)) } if children
          end
        end
      end
    end

    private
    def validates_mobile_and_tel
      errors[:base] = 'One of mobile and tel must be present.' unless self.mobile || self.tel
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
rightnow_oms-0.1.4 app/models/rightnow_oms/order.rb
rightnow_oms-0.1.3 app/models/rightnow_oms/order.rb