Skip to content
Snippets Groups Projects
Unverified Commit e88f8c75 authored by Tom Ashe's avatar Tom Ashe Committed by Tom Ashe
Browse files

Issue #3271739 by rszrama, TomTech: Add configuration to Group bundles to...

Issue #3271739 by rszrama, TomTech: Add configuration to Group bundles to identify them as Commerce Groups
parent 61412206
No related branches found
No related tags found
No related merge requests found
......@@ -19,6 +19,7 @@ class GroupCartEventSubscriber implements EventSubscriberInterface {
* @var \Drupal\group\GroupMembershipLoaderInterface
*/
protected $membershipLoader;
/**
* The gcommerce settings configuration.
*
......
......@@ -3,6 +3,7 @@
namespace Drupal\gcommerce_profile;
use Drupal\commerce_order\AddressBook as CoreAddressBook;
use Drupal\Core\Config\ConfigFactoryInterface;
use Drupal\Core\Entity\EntityTypeBundleInfo;
use Drupal\Core\Entity\EntityTypeManagerInterface;
use Drupal\group\GroupMembershipLoaderInterface;
......@@ -21,6 +22,13 @@ class AddressBook extends CoreAddressBook {
*/
protected $membershipLoader;
/**
* The gcommerce settings configuration.
*
* @var \Drupal\Core\Config\Config
*/
protected $config;
/**
* Constructs a new AddressBook object.
*
......@@ -30,11 +38,14 @@ class AddressBook extends CoreAddressBook {
* The entity type manager.
* @param \Drupal\group\GroupMembershipLoaderInterface $membership_loader
* The group membership loader service.
* @param \Drupal\Core\Config\ConfigFactoryInterface $config_factory
* The config factory.
*/
public function __construct(EntityTypeBundleInfo $entity_type_bundle_info, EntityTypeManagerInterface $entity_type_manager, GroupMembershipLoaderInterface $membership_loader) {
public function __construct(EntityTypeBundleInfo $entity_type_bundle_info, EntityTypeManagerInterface $entity_type_manager, GroupMembershipLoaderInterface $membership_loader, ConfigFactoryInterface $config_factory) {
parent::__construct($entity_type_bundle_info, $entity_type_manager);
$this->membershipLoader = $membership_loader;
$this->config = $config_factory->get('gcommerce.settings');
}
/**
......@@ -88,15 +99,13 @@ class AddressBook extends CoreAddressBook {
if ($profile->getData('address_book_profile_id')) {
$addressbook_profile = $this->profileStorage->load($profile->getData('address_book_profile_id'));
// @todo Add functionality that will load allowed groups.
// Allowed groups for which can be added card entity.
$allowedGroupTypeIds = ['company'];
$allowed_group_type_ids = $this->config->get('allowed_group_types');
$groups = $this->membershipLoader->loadByUser($customer);
foreach ($groups as $membership) {
$group = $membership->getGroup();
$groupType = $group->getGroupType();
if (!in_array($groupType->id(), $allowedGroupTypeIds, TRUE)) {
if (!in_array($groupType->id(), $allowed_group_type_ids, TRUE)) {
continue;
}
$plugin_id = 'group_profile:' . $addressbook_profile->bundle();
......
......@@ -9,7 +9,7 @@ use Symfony\Component\DependencyInjection\Reference;
/**
* Group commerce service provider.
*/
class GcommerceServiceProvider extends ServiceProviderBase {
class GcommerceProfileServiceProvider extends ServiceProviderBase {
/**
* {@inheritdoc}
......@@ -23,7 +23,8 @@ class GcommerceServiceProvider extends ServiceProviderBase {
if (isset($modules['commerce_order'])) {
$container->getDefinition('commerce_order.address_book')
->setClass(AddressBook::class)
->addArgument(new Reference('group.membership_loader'));
->addArgument(new Reference('group.membership_loader'))
->addArgument(new Reference('config.factory'));
}
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment