<?php
namespace CioOrderExportPerMail;
use Shopware\Core\Framework\Context;
use Shopware\Core\Framework\DataAbstractionLayer\EntityRepositoryInterface;
use Shopware\Core\Framework\DataAbstractionLayer\Search\Criteria;
use Shopware\Core\Framework\DataAbstractionLayer\Search\Filter\EqualsFilter;
use Shopware\Core\Framework\Plugin;
use Shopware\Core\Framework\Plugin\Context\InstallContext;
class CioOrderExportPerMail extends Plugin
{
const FIELDSET_MANUFACTURER = 'custom_manufacturer';
const FIELDNAME_MANUFACTURER_MAIL = 'custom_manufacturer_mail';
const FIELDNAME_MANUFACTURER_DO_EXPORT_PER_MAIL = 'custom_manufacturer_do_export_per_mail';
public function install(InstallContext $installContext): void
{
parent::install($installContext);
$this->createManufacturerCustomFields();
}
protected function createManufacturerCustomFields()
{
/** @var EntityRepositoryInterface $customFieldRepository */
$customFieldRepository = $this->container->get('custom_field.repository');
/** @var EntityRepositoryInterface $customFieldSetRepository */
$customFieldSetRepository = $this->container->get('custom_field_set.repository');
/** @var EntityRepositoryInterface $customFieldSetRelationRepository */
$customFieldSetRelationRepository = $this->container->get('custom_field_set_relation.repository');
$customFieldSetEntity = $customFieldSetRepository->search((new Criteria())->addFilter(new EqualsFilter('name', self::FIELDSET_MANUFACTURER)), Context::createDefaultContext())->first();
if (is_null($customFieldSetEntity)) {
$customFieldSetRepository->create([[
'name' => self::FIELDSET_MANUFACTURER,
'config' => [
'type' => 'text',
'label' => [
'de-DE' => 'Zusatzfelder Hersteller',
'en-GB' => null
],
'translated' => true,
],
'active' => true
]], Context::createDefaultContext());
$customFieldSetEntity = $customFieldSetRepository->search((new Criteria())->addFilter(new EqualsFilter('name', self::FIELDSET_MANUFACTURER)), Context::createDefaultContext())->first();
$customFieldSetRelationRepository->create([[
'customFieldSetId' => $customFieldSetEntity->getId(),
'entityName' => 'product_manufacturer',
]], Context::createDefaultContext());
}
$customFieldEntity = $customFieldRepository->search((new Criteria())->addFilter(new EqualsFilter('name', self::FIELDNAME_MANUFACTURER_MAIL))->addFilter(new EqualsFilter('customFieldSetId', $customFieldSetEntity->getId())), Context::createDefaultContext())->first();
if (is_null($customFieldEntity)) {
$customFieldRepository->create([
[
'name' => self::FIELDNAME_MANUFACTURER_MAIL,
'type' => 'text',
'config' => [
'type' => 'text',
'label' => [
'de-DE' => 'E-Mail-Addresse',
'en-GB' => null
],
'placeholder' => [
'en-GB' => null,
'de-DE' => 'E-Mail-Addresse des Herstellers'
],
'helpText' => [
'en-GB' => null,
'de-DE' => 'E-Mail-Addresse des Herstellers'
],
'componentName' => 'sw-field',
'customFieldType' => 'text',
'customFieldPosition' => 2
],
'active' => true,
'customFieldSetId' => $customFieldSetEntity->getId()
]
], Context::createDefaultContext());
}
$customFieldEntity = $customFieldRepository->search((new Criteria())->addFilter(new EqualsFilter('name', self::FIELDNAME_MANUFACTURER_DO_EXPORT_PER_MAIL))->addFilter(new EqualsFilter('customFieldSetId', $customFieldSetEntity->getId())), Context::createDefaultContext())->first();
if (is_null($customFieldEntity)) {
$customFieldRepository->create([
[
'name' => self::FIELDNAME_MANUFACTURER_DO_EXPORT_PER_MAIL,
'type' => 'switch',
'config' => [
'type' => 'switch',
'label' => [
'de-DE' => 'Bestellung per Mail',
'en-GB' => null
],
'helpText' => [
'en-GB' => null,
'de-DE' => 'Bestellung soll per Mail an Hersteller geschickt werden'
],
'componentName' => 'sw-field',
'customFieldType' => 'switch',
'customFieldPosition' => 2
],
'active' => true,
'customFieldSetId' => $customFieldSetEntity->getId()
]
], Context::createDefaultContext());
}
}
}