Class: IqAccessoryFilter

Inherits:
ApplicationRecord show all
Defined in:
app/models/iq_accessory_filter.rb

Overview

== Schema Information

Table name: iq_accessory_filters
Database name: primary

id :integer not null, primary key
comment :string
created_at :datetime not null
updated_at :datetime not null
creator_id :integer
customer_filter_id :integer
exclusive_item_group_id :integer
item_id :integer
updater_id :integer

Indexes

idx_iq_accessory_filters_unique (item_id,exclusive_item_group_id,customer_filter_id) UNIQUE
iq_accessory_filters_customer_filter_id_idx (customer_filter_id)
iq_accessory_filters_exclusive_item_group_id_idx (exclusive_item_group_id)

Foreign Keys

fk_rails_... (customer_filter_id => customer_filters.id)
fk_rails_... (exclusive_item_group_id => exclusive_item_groups.id)
fk_rails_... (item_id => items.id)

Belongs to collapse

Class Method Summary collapse

Methods inherited from ApplicationRecord

ransackable_associations, ransackable_attributes, ransackable_scopes, ransortable_attributes, #to_relation

Methods included from Models::EventPublishable

#publish_event

Class Method Details

.create_single_customer_iq_accessory_filter(customer, item_or_exclusive_item_group, comment) ⇒ Object



44
45
46
47
48
49
50
51
52
53
54
# File 'app/models/iq_accessory_filter.rb', line 44

def self.create_single_customer_iq_accessory_filter(customer, item_or_exclusive_item_group, comment)
  iqaf = nil
  cf = CustomerFilter.create_single_customer_filter(customer)
  if cf.present? # first need customer filter
    party_criteria = {customer_filter_id: cf.id}
    item_or_exclusive_item_group_criteria = item_or_exclusive_item_group.class.to_s.underscore == 'item' ? {item_id: item_or_exclusive_item_group.id} : {exclusive_item_group_id: item_or_exclusive_item_group.id}
    criteria = party_criteria.merge(item_or_exclusive_item_group_criteria)
    iqaf = IqAccessoryFilter.where(criteria).first_or_create(criteria.merge({comment: comment}))
  end
  return iqaf
end

.for_customerActiveRecord::Relation<IqAccessoryFilter>

A relation of IqAccessoryFilters that are for customer. Active Record Scope

Returns:

See Also:



41
# File 'app/models/iq_accessory_filter.rb', line 41

scope :for_customer, ->(customer) { where(customer_filter_id: CustomerFilter::QueryBuilder.filter_ids_for_customer(customer)) }

.for_item_or_exclusive_item_groupActiveRecord::Relation<IqAccessoryFilter>

A relation of IqAccessoryFilters that are for item or exclusive item group. Active Record Scope

Returns:

See Also:



40
# File 'app/models/iq_accessory_filter.rb', line 40

scope :for_item_or_exclusive_item_group, ->(item_or_exclusive_item_group) { item_or_exclusive_item_group.class.to_s.underscore == 'item' ? where(["iq_accessory_filters.item_id = ?", item_or_exclusive_item_group.id]) : where(["iq_accessory_filters.exclusive_item_group_id = ?", item_or_exclusive_item_group.id]) }

.is_auto_generated_onlyActiveRecord::Relation<IqAccessoryFilter>

A relation of IqAccessoryFilters that are is auto generated only. Active Record Scope

Returns:

See Also:



42
# File 'app/models/iq_accessory_filter.rb', line 42

scope :is_auto_generated_only, -> { joins(:customer_filter).where(customer_filters: {is_auto_generated: true}) }

Instance Method Details

#customer_filterCustomerFilter

This filter excludes the IQ accessory or exclusive item group for matching customers, that is if there are any matching iq_accesory_filters, then that item is excluded from instant quoted accessories for that customer



32
# File 'app/models/iq_accessory_filter.rb', line 32

belongs_to :customer_filter, optional: true

#exclusive_item_groupExclusiveItemGroup



34
# File 'app/models/iq_accessory_filter.rb', line 34

belongs_to :exclusive_item_group, optional: true

#itemItem

Returns:

See Also:



33
# File 'app/models/iq_accessory_filter.rb', line 33

belongs_to :item, optional: true