<?php | |||||
namespace Lc\ShopBundle\Form\Backend\Common; | |||||
use Doctrine\ORM\EntityManagerInterface; | |||||
use Doctrine\ORM\EntityRepository; | |||||
use Lc\ShopBundle\Context\MerchantUtilsInterface; | |||||
use Lc\ShopBundle\Context\ProductInterface; | |||||
use Symfony\Bridge\Doctrine\Form\Type\EntityType; | |||||
use Symfony\Component\Form\AbstractType; | |||||
use Symfony\Component\Form\FormBuilderInterface; | |||||
use Symfony\Component\Form\FormEvent; | |||||
use Symfony\Component\Form\FormEvents; | |||||
use Symfony\Component\OptionsResolver\OptionsResolver; | |||||
class ProductType extends AbstractType | |||||
{ | |||||
protected $em; | |||||
protected $merchantUtils; | |||||
public function __construct(EntityManagerInterface $entityManager, MerchantUtilsInterface $merchantUtils) | |||||
{ | |||||
$this->em = $entityManager; | |||||
$this->merchantUtils = $merchantUtils; | |||||
} | |||||
public function buildForm(FormBuilderInterface $builder, array $options) | |||||
{ | |||||
$productClass = $this->em->getClassMetadata(ProductInterface::class); | |||||
$currentMerchant = $this->merchantUtils->getMerchantUser(); | |||||
$builder->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) use ($productClass, $options, $currentMerchant) { | |||||
$builder = $event->getForm()->getParent(); | |||||
$builder->add('product', EntityType::class, array_merge($options,[ | |||||
'class' => $productClass->name, | |||||
'query_builder' => function (EntityRepository $er) use ($currentMerchant) { | |||||
return $er->createQueryBuilder('p') | |||||
->join('p.productFamily', 'pFamily') | |||||
->where('pFamily.merchant = :currentMerchant') | |||||
->andWhere('pFamily.status = 1') | |||||
->setParameter('currentMerchant', $currentMerchant); | |||||
}, | |||||
'choice_label' => function ($product) { | |||||
return $product->getProductFamily()->getTitle() . ' - ' . $product->getTitle(); | |||||
} | |||||
])); | |||||
}); | |||||
} | |||||
public function configureOptions(OptionsResolver $resolver) | |||||
{ | |||||
$resolver->setDefaults([ | |||||
'translation_domain' => 'lcshop', | |||||
]); | |||||
} | |||||
} |
<?php | |||||
namespace Lc\ShopBundle\Form\Backend\Common; | |||||
use Doctrine\ORM\EntityManagerInterface; | |||||
use Doctrine\ORM\EntityRepository; | |||||
use Lc\ShopBundle\Context\ReductionCatalogInterface; | |||||
use Lc\ShopBundle\Context\UserInterface; | |||||
use Lc\ShopBundle\Repository\GroupUserRepository; | |||||
use Symfony\Bridge\Doctrine\Form\Type\EntityType; | |||||
use Symfony\Component\Form\AbstractType; | |||||
use Symfony\Component\Form\Extension\Core\Type\CheckboxType; | |||||
use Symfony\Component\Form\FormBuilderInterface; | |||||
use Symfony\Component\Form\FormEvent; | |||||
use Symfony\Component\Form\FormEvents; | |||||
use Symfony\Component\OptionsResolver\OptionsResolver; | |||||
class UserType extends AbstractType | |||||
{ | |||||
protected $em; | |||||
public function __construct(EntityManagerInterface $entityManager) | |||||
{ | |||||
$this->em = $entityManager; | |||||
} | |||||
public function buildForm(FormBuilderInterface $builder, array $options) | |||||
{ | |||||
$userClass = $this->em->getClassMetadata(UserInterface::class); | |||||
$builder->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) use ($userClass, $options) { | |||||
$builder = $event->getForm()->getParent(); | |||||
$builder->add('user', EntityType::class, array_merge($options,[ | |||||
'class' => $userClass->name, | |||||
'query_builder'=> function (EntityRepository $er) { | |||||
$query = $er->findByMerchantQuery(); | |||||
return $query; | |||||
}, | |||||
'expanded' => false, | |||||
'translation_domain'=>'lcshop', | |||||
])); | |||||
}); | |||||
} | |||||
public function configureOptions(OptionsResolver $resolver) | |||||
{ | |||||
$resolver->setDefaults([ | |||||
'translation_domain' => 'lcshop', | |||||
]); | |||||
} | |||||
} |
return $er->createQueryBuilder('p') | return $er->createQueryBuilder('p') | ||||
->join('p.productFamily', 'pFamily') | ->join('p.productFamily', 'pFamily') | ||||
->where('pFamily.merchant = :currentMerchant') | ->where('pFamily.merchant = :currentMerchant') | ||||
->andWhere('pFamily.status = 1') | |||||
->setParameter('currentMerchant', $currentMerchant); | ->setParameter('currentMerchant', $currentMerchant); | ||||
}, | }, | ||||
'choice_label' => function ($product) { | 'choice_label' => function ($product) { |
{ | { | ||||
name: 'address', | name: 'address', | ||||
nameDisplay: 'Adresse' | nameDisplay: 'Adresse' | ||||
}, | |||||
{ | |||||
name: 'maintenance', | |||||
nameDisplay: 'Maintenance' | |||||
} | } | ||||
] | ] | ||||
}, window.addressValues); | }, window.addressValues); |
order: Commande | order: Commande | ||||
email: Email | email: Email | ||||
delivery: Livraison | delivery: Livraison | ||||
maintenance: Maintenance | |||||
None: Aucune valeur | None: Aucune valeur |
<div v-show="currentSection == 'seo'" class="panel panel-default"> | <div v-show="currentSection == 'seo'" class="panel panel-default"> | ||||
{% include '@LcShop/backend/merchant/panel_seo.html.twig' %} | {% include '@LcShop/backend/merchant/panel_seo.html.twig' %} | ||||
</div> | </div> | ||||
<div v-show="currentSection == 'maintenance'" class="panel panel-default"> | |||||
{% include '@LcShop/backend/merchant/panel_maintenance.html.twig' %} | |||||
</div> | |||||
</div> | </div> | ||||
{% import '@LcShop/backend/default/block/macros.html.twig' as macros %} | |||||
<div class="row"> | |||||
<div class="col-8"> | |||||
{{ macros.card_start('Merchant.maintenance','light') }} | |||||
<div class="col-12"> | |||||
{% if form.merchantConfigs['maintenance'] is defined %} | |||||
{{ form_row(form.merchantConfigs['maintenance']) }} | |||||
{% endif %} | |||||
</div> | |||||
<div class="col-12"> | |||||
{% if form.merchantConfigs['maintenanceIpAuthorized'] is defined %} | |||||
{{ form_row(form.merchantConfigs['maintenanceIpAuthorized']) }} | |||||
{% endif %} | |||||
</div> | |||||
{{ macros.card_end() }} | |||||
</div> | |||||
</div> |
</span> | </span> | ||||
<span v-show="orderProduct.isRedelivery"> | <span v-show="orderProduct.isRedelivery"> | ||||
- <i class="fa fa-undo" data-toggle="tooltip" title="Ce produit fait l'objet d'une relivraison" ></i> | |||||
- <i class="fa fa-undo" data-toggle="tooltip" title="Ce produit est une relivraison" ></i> | |||||
</span> | </span> | ||||
</td> | </td> |