Adapt enterprise_relationship permitting and permitted_by scopes to rails 4

This commit is contained in:
luisramos0
2019-04-06 21:06:09 +01:00
parent 951787d456
commit 5184fa540c
5 changed files with 10 additions and 9 deletions

View File

@@ -25,8 +25,8 @@ class EnterpriseRelationship < ActiveRecord::Base
where('parent_id IN (?) OR child_id IN (?)', enterprises, enterprises)
}
scope :permitting, ->(enterprises) { where('child_id IN (?)', enterprises) }
scope :permitted_by, ->(enterprises) { where('parent_id IN (?)', enterprises) }
scope :permitting, ->(enterprise_ids) { where('child_id IN (?)', enterprise_ids) }
scope :permitted_by, ->(enterprise_ids) { where('parent_id IN (?)', enterprise_ids) }
scope :with_permission, ->(permission) {
joins(:permissions).

View File

@@ -118,7 +118,7 @@ Spree::Product.class_eval do
scope :stockable_by, lambda { |enterprise|
return where('1=0') if enterprise.blank?
permitted_producer_ids = EnterpriseRelationship.joins(:parent).permitting(enterprise)
permitted_producer_ids = EnterpriseRelationship.joins(:parent).permitting(enterprise.id)
.with_permission(:add_to_order_cycle).where(enterprises: { is_primary_producer: true }).pluck(:parent_id)
return where('spree_products.supplier_id IN (?)', [enterprise.id] | permitted_producer_ids)
}

View File

@@ -24,7 +24,7 @@ class SubscriptionVariantsService
def self.permitted_producer_ids(distributor)
other_permitted_producer_ids = EnterpriseRelationship.joins(:parent)
.permitting(distributor).with_permission(:add_to_order_cycle)
.permitting(distributor.id).with_permission(:add_to_order_cycle)
.merge(Enterprise.is_primary_producer)
.pluck(:parent_id)

View File

@@ -90,8 +90,8 @@ module OpenFoodNetwork
Spree::Variant.joins(:product).where('spree_products.supplier_id = (?)', producer)
else
# All variants of the producer if it has granted P-OC to any of my managed hubs that are in this order cycle
permitted = EnterpriseRelationship.permitting(managed_participating_hubs).
permitted_by(producer).with_permission(:add_to_order_cycle).present?
permitted = EnterpriseRelationship.permitting(managed_participating_hubs.select(:id)).
permitted_by(producer.id).with_permission(:add_to_order_cycle).present?
if permitted
Spree::Variant.joins(:product).where('spree_products.supplier_id = (?)', producer)
else

View File

@@ -43,7 +43,7 @@ module OpenFoodNetwork
# Permissions granted by create_variant_overrides relationship from producer to hub
permissions = Hash[
EnterpriseRelationship.
permitting(hubs).
permitting(hubs.select(:id)).
with_permission(:create_variant_overrides).
group_by(&:child_id).
map { |child_id, ers| [child_id, ers.map(&:parent_id)] }
@@ -183,7 +183,8 @@ module OpenFoodNetwork
def related_enterprises_granting(permission, options = {})
parent_ids = EnterpriseRelationship.
permitting(options[:to] || managed_enterprises).
# this options[:to].id needs to be verified/tested
permitting(options[:to].select(:id) || managed_enterprises.select(:id)).
with_permission(permission).
pluck(:parent_id)
@@ -192,7 +193,7 @@ module OpenFoodNetwork
def related_enterprises_granted(permission, options = {})
child_ids = EnterpriseRelationship.
permitted_by(options[:by] || managed_enterprises).
permitted_by(options[:by].select(:id) || managed_enterprises.select(:id)).
with_permission(permission).
pluck(:child_id)