<?php
namespace App\Form;
use App\Entity\Cart;
use App\Service\TwigGlobalVariables;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Form\Extension\Core\Type\CollectionType;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use App\Form\CartProductType;
use App\Service\UserService;
use App\Form\UserLocationType;
use App\Entity\UserShippingLocation;
use App\Entity\RecurringOrder;
class CartType extends AbstractType
{
public function __construct(UserService $userServ, TwigGlobalVariables $twigGlobalVariables){
$this->userServ = $userServ;
$this->twigGlobalVariables = $twigGlobalVariables;
}
public function buildForm(FormBuilderInterface $builder, array $options)
{
$userServ = $this->userServ;
if($userServ->getUser())
$shipping = $userServ->getUser()->getShippingAddresses();
else
$shipping = null;
$builder
->add('products', CollectionType::class, array(
'entry_type' => CartProductType::class,
'allow_delete' => true,
'delete_empty' => true
)
)
->add('update', SubmitType::Class,
array(
'label' => 'Mise à jour du panier',
'attr' => array(
'class' => 'btn-secondary btn py-2 px-4 phone-fullwidth',
'onclick' => 'document.getElementById(\'se-pre-con\').style.display=\'initial\';'
)
)
)
->add('submit', SubmitType::Class,
array(
'label' => 'Passer à la Livraison / Cueillette',
'attr' => array(
'class' => 'btn-primary btn py-2 px-4 phone-fullwidth',
'onclick' => 'document.getElementById(\'se-pre-con\').style.display=\'initial\';'
)
)
)
;
if($userServ->getActiveRecurringOrders()){
$builder->add('recurring', EntityType::class, [
'mapped' => false,
'required' => false,
'class' => RecurringOrder::class,
'label' => 'Joindre a cette prochaine commande récurrente',
'placeholder' => 'Choisir...',
'query_builder' => function($er){
return $er->findActiveOrdersOfUser(false, false);
},
'choice_label' => function($c){
return (string)$c;
}
])
;
}
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'data_class' => Cart::class,
]);
}
}