Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
getfitter-core / app / models / core / booking.rb
Size: Mime:
module Core
  class Booking < ActiveRecord::Base
    include TrialConcern

    STATES = %w(open completed cancelled)
    PAYMENT_TYPES = %w(unknown none card pass trial)

    belongs_to :event
    belongs_to :user

    validates :event, presence: true,
                      uniqueness: { scope: :user,
                                    message: 'can only be booked once '\
                                             'by a user' }
    validates :user, presence: true
    validates :state, inclusion: { in: STATES,
                                   message: '%{value} is not a valid state' }
    validates :payment_type, inclusion: { in: PAYMENT_TYPES,
                                          message: '%{value} is not a valid '\
                                                   'payment type' }

    default_scope { order('created_at') }
    scope :open, -> { where(state: 'open') }
    scope :completed, -> { where(state: 'completed') }
    scope :cancelled, -> { where(state: 'cancelled') }

    def self.states
      Rails.logger.warn 'Calling `Booking.states` is deprecated. '\
                        'Use `Booking::STATES` instead.'

      STATES
    end

    def self.payment_types
      Rails.logger.warn 'Calling `Booking.payment_types` is deprecated. '\
                        'Use `Booking::PAYMENT_TYPES` instead.'

      PAYMENT_TYPES
    end
  end
end