/**
  * {@inheritdoc}
  */
 public function initialize()
 {
     $this->channels = $this->channelRepository->findAll();
     foreach ($this->attributeRepository->getNonIdentifierAttributes() as $attribute) {
         $this->attributes[(string) $attribute->getGroup()][] = $attribute;
         foreach ($this->channels as $channel) {
             $this->addAttributeRequirement($this->factory->createAttributeRequirement($attribute, $channel, false));
         }
     }
 }
 /**
  * @return ChannelInterface[]
  */
 protected function getChannels()
 {
     if (null === $this->channels) {
         $this->channels = $this->channelRepository->findAll();
     }
     return $this->channels;
 }
 /**
  * Get channel choices with user channel code first
  *
  * @return string[]
  */
 public function getChannelChoicesWithUserChannel()
 {
     $channels = $this->channelRepository->findAll();
     $channelChoices = $this->choicesBuilder->buildChoices($channels);
     $userChannelCode = $this->getUserChannelCode();
     if (array_key_exists($userChannelCode, $channelChoices)) {
         return [$userChannelCode => $channelChoices[$userChannelCode]] + $channelChoices;
     }
     return $channelChoices;
 }
 /**
  * Get all channels
  *
  * @return array
  */
 protected function getChannels()
 {
     if (null === $this->channels) {
         $this->channels = [];
         $channels = $this->channelRepository->findAll();
         foreach ($channels as $channel) {
             $this->channels[$channel->getCode()] = $channel;
         }
     }
     return $this->channels;
 }
 function it_initializes_attribute_requirements_with_all_channels_and_attributes_in_the_PIM(ChannelRepositoryInterface $channelRepository, ChannelInterface $ecommerceChannel, ChannelInterface $mobileChannel, AttributeRepositoryInterface $attributeRepository, AttributeInterface $nameAttribute, AttributeInterface $descriptionAttribute, AttributeRequirementFactory $factory, AttributeRequirementInterface $nameECommerceRequirement, AttributeRequirementInterface $nameMobileRequirement, AttributeRequirementInterface $descriptionECommerceRequirement, AttributeRequirementInterface $descriptionMobileRequirement)
 {
     $channelRepository->findAll()->willReturn([$ecommerceChannel, $mobileChannel]);
     $attributeRepository->getNonIdentifierAttributes()->willReturn([$nameAttribute, $descriptionAttribute]);
     $factory->createAttributeRequirement($nameAttribute, $ecommerceChannel, false)->willReturn($nameECommerceRequirement);
     $nameECommerceRequirement->getAttributeCode()->willReturn('name');
     $nameECommerceRequirement->getChannelCode()->willReturn('ecommerce');
     $factory->createAttributeRequirement($nameAttribute, $mobileChannel, false)->willReturn($nameMobileRequirement);
     $nameMobileRequirement->getAttributeCode()->willReturn('name');
     $nameMobileRequirement->getChannelCode()->willReturn('mobile');
     $factory->createAttributeRequirement($descriptionAttribute, $ecommerceChannel, false)->willReturn($descriptionECommerceRequirement);
     $descriptionECommerceRequirement->getAttributeCode()->willReturn('description');
     $descriptionECommerceRequirement->getChannelCode()->willReturn('ecommerce');
     $factory->createAttributeRequirement($descriptionAttribute, $mobileChannel, false)->willReturn($descriptionMobileRequirement);
     $descriptionMobileRequirement->getAttributeCode()->willReturn('description');
     $descriptionMobileRequirement->getChannelCode()->willReturn('mobile');
     $this->initialize();
     $this->getAttributeRequirements()->toArray()->shouldReturn(['name_ecommerce' => $nameECommerceRequirement, 'name_mobile' => $nameMobileRequirement, 'description_ecommerce' => $descriptionECommerceRequirement, 'description_mobile' => $descriptionMobileRequirement]);
 }
 function it_initializes_attribute_requirements_with_all_channels_and_attributes_in_the_PIM(ChannelRepositoryInterface $channelRepository, ChannelInterface $ecommerce, ChannelInterface $mobile, AttributeRepositoryInterface $attributeRepository, AttributeInterface $name, AttributeInterface $description, AttributeRequirementFactory $factory, AttributeRequirementInterface $r1, AttributeRequirementInterface $r2, AttributeRequirementInterface $r3, AttributeRequirementInterface $r4)
 {
     $channelRepository->findAll()->willReturn([$ecommerce, $mobile]);
     $attributeRepository->getNonIdentifierAttributes()->willReturn([$name, $description]);
     $factory->createAttributeRequirement($name, $ecommerce, false)->willReturn($r1);
     $r1->getAttributeCode()->willReturn('name');
     $r1->getChannelCode()->willReturn('ecommerce');
     $factory->createAttributeRequirement($name, $mobile, false)->willReturn($r2);
     $r2->getAttributeCode()->willReturn('name');
     $r2->getChannelCode()->willReturn('mobile');
     $factory->createAttributeRequirement($description, $ecommerce, false)->willReturn($r3);
     $r3->getAttributeCode()->willReturn('description');
     $r3->getChannelCode()->willReturn('ecommerce');
     $factory->createAttributeRequirement($description, $mobile, false)->willReturn($r4);
     $r4->getAttributeCode()->willReturn('description');
     $r4->getChannelCode()->willReturn('mobile');
     $this->initialize();
     $this->getAttributeRequirements()->toArray()->shouldReturn(['name_ecommerce' => $r1, 'name_mobile' => $r2, 'description_ecommerce' => $r3, 'description_mobile' => $r4]);
 }
 /**
  * @return JsonResponse
  */
 public function indexAction()
 {
     $channels = $this->channelRepository->findAll();
     $normalizedChannels = $this->normalizer->normalize($channels, 'json');
     return new JsonResponse($normalizedChannels);
 }