/**
  * @param FamilyInterface $family
  *
  * @return string[]
  */
 protected function getMissingChannelCodes(FamilyInterface $family)
 {
     $requirements = $family->getAttributeRequirements();
     $identifierCode = $this->attributeRepository->getIdentifierCode();
     $currentChannelCodes = [];
     foreach ($requirements as $requirement) {
         if ($requirement->getAttributeCode() === $identifierCode) {
             $currentChannelCodes[] = $requirement->getChannelCode();
         }
     }
     $expectedChannelCodes = $this->channelRepository->getChannelCodes();
     $missingChannelCodes = array_diff($expectedChannelCodes, $currentChannelCodes);
     return $missingChannelCodes;
 }
 /**
  * Return a list of attributes to export
  *
  * @param JobParameters $parameters
  *
  * @return array
  */
 protected function getAttributesToFilter(JobParameters $parameters)
 {
     $attributes = $parameters->get('filters')['structure']['attributes'];
     $identifierCode = $this->attributeRepository->getIdentifierCode();
     if (!in_array($identifierCode, $attributes)) {
         $attributes[] = $identifierCode;
     }
     return $attributes;
 }
 /**
  * @param string $code
  *
  * @return bool
  */
 protected function isAttribute($code)
 {
     return null !== $this->attributeRepository->getIdentifierCode($code);
 }
 /**
  * {@inheritdoc}
  */
 public function getIdentifierProperties()
 {
     return [$this->attributeRepository->getIdentifierCode()];
 }