Sha256: 4497e3e0ab664d8feabcc4400cefe49d5172e78da23f86a9777582de9d97cc9e
Contents?: true
Size: 1.92 KB
Versions: 2
Compression:
Stored size: 1.92 KB
Contents
class Exchange include ActiveModel::Validations attr_accessor :order, :items, :tickets validates_presence_of :order validates_length_of :items, :minimum => 1 validates_length_of :tickets, :minimum => 1 validate :items_are_exchangeable validate :tickets_match_items validate :tickets_are_available validate :tickets_belong_to_organization def initialize(order, items, tickets = []) self.order = order self.items = items self.tickets = tickets end def items_are_exchangeable errors.add(:items, "are not available to exchange") unless items.all?(&:exchangeable?) end def tickets_match_items errors.add(:tickets, "must match the items to exchange") unless tickets.length == items.length end def tickets_are_available errors.add(:tickets, "are not available to exchange") if tickets.any?(&:committed?) end def tickets_belong_to_organization errors.add(:tickets, "do not belong to this organization") unless tickets.all? { |ticket| order.organization.can? :manage, ticket } end def submit return_items sell_new_items end def return_items items.map(&:return!) end def sell_new_items exchange_order_timestamp = Time.now tickets.each { |ticket| ticket.exchange_to(order.person, exchange_order_timestamp) } create_order(exchange_order_timestamp) end def create_order(time=Time.now) ::Rails.logger.debug("CREATING EXCHANGE ORDER") exchange_order = ApplicationOrder.new.tap do |exchange_order| exchange_order.person = order.person exchange_order.parent = order exchange_order.created_at = time exchange_order.for_organization order.organization exchange_order << tickets end ::Rails.logger.debug("RECORDING EXCHANGE") exchange_order.record_exchange! ::Rails.logger.debug("SAVING ORDER") exchange_order.save! ::Rails.logger.debug("ORDER SAV'D: " + exchange_order.to_s) end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
artfully_ose-1.0.0.rc4 | app/models/exchange.rb |
artfully_ose-1.0.0.rc3 | app/models/exchange.rb |