Sha256: 09cbfb8de5a208c224d6844c51f5148b0cf48d45c4fb2888c9b642cabad418ee

Contents?: true

Size: 1.1 KB

Versions: 8

Compression:

Stored size: 1.1 KB

Contents

module Comee
  module Core
    class ClientPrice < ApplicationRecord
      enum :status, {old: 0, current: 1, future: 2}
      belongs_to :product
      belongs_to :client
      belongs_to :previous_price, class_name: "Comee::Core::ClientPrice", optional: true

      validates :valid_from, :valid_to, :price, :status, presence: true
      validates :price, numericality: {greater_than: 0}
      validates :discount, presence: true, numericality: {greater_than_or_equal_to: 0, less_than_or_equal_to: 100}
      validates :product_id, uniqueness: {scope: %i[client_id previous_price_id]}
      validate :validate_price_validity_dates

      def validate_price_validity_dates
        return unless valid_from && valid_to

        period = Period.new(valid_from, valid_to)
        errors.add(:base, "Price validity date range is not correct.") unless period.valid?
      end

      def self.ransackable_attributes(_auth_object = nil)
        %w[valid_from valid_to price status product_id client_id previous_price_id]
      end

      def self.ransackable_associations(_auth_object = nil)
        []
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
comee_core-0.1.31 app/models/comee/core/client_price.rb
comee_core-0.1.30 app/models/comee/core/client_price.rb
comee_core-0.1.29 app/models/comee/core/client_price.rb
comee_core-0.1.28 app/models/comee/core/client_price.rb
comee_core-0.1.27 app/models/comee/core/client_price.rb
comee_core-0.1.26 app/models/comee/core/client_price.rb
comee_core-0.1.25 app/models/comee/core/client_price.rb
comee_core-0.1.24 app/models/comee/core/client_price.rb