Sha256: 0e686f19a52c45ba90e4e521b83fcc242892504df4eaf3728b85c6519d3cac7a

Contents?: true

Size: 1.8 KB

Versions: 1

Compression:

Stored size: 1.8 KB

Contents

module SimpleCart
  class Order < ActiveRecord::Base
    include AASM
    belongs_to :delivery
    
    has_many :order_items, dependent: :destroy
    has_one :credit_card, dependent: :destroy
    has_one :billing_address, dependent: :destroy
    has_one :shipping_address, dependent: :destroy

    accepts_nested_attributes_for :shipping_address
    accepts_nested_attributes_for :billing_address
    accepts_nested_attributes_for :credit_card
    

    validates :total_price, :completed_date, :aasm_state, presence: true
    validates :total_price, numericality: true  

    aasm do
      state :in_progress, :initial => true
      state :in_queue
      state :in_delivery
      state :delivered
      state :canceled

      event :queued do
        transitions :from => :in_progress, :to => :in_queue
      end
    end

    ['billing_address', 'shipping_address', 'credit_card'].each do |method|
      define_method("build_or_find_#{method}") do
        self.instance_eval(method).nil? ? instance_eval("build_#{method}") : instance_eval(method)
        # return instance_eval(method) unless self.instance_eval(method).nil?
        # return instance_eval("build_#{method}(user.instance_eval(method).attributes.except('id', 'user_id'))") unless user.instance_eval(method).nil?
        # return instance_eval("build_#{method}") if self.instance_eval(method).nil? && user.instance_eval(method).nil?
      end
    end

    # rails_admin do
    #   edit do
    #     include_all_fields
    #   end
    #   list do
    #     field :id
    #     field :aasm_state
    #     field :total_price
    #     include_all_fields
    #   end
    # end

    def subtotal
      order_items.inject(0) { |n, order_item| n += order_item.price * order_item.qty }
    end

    # def aasm_state_enum
    #   self.class.aasm.states_for_select
    # end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
simple_cart-0.0.3 app/models/simple_cart/order.rb