<?php
namespace App\Form\UserSurvey;
use App\Entity\Order;
use App\Entity\UserSurvey;
use App\Entity\UserSurveyStatus;
use App\Form\Type\SwitchType;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Form\Extension\Core\Type\MoneyType;
use Symfony\Component\Form\Extension\Core\Type\NumberType;
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
class CMUResultType extends AbstractType
{
private EntityManagerInterface $em;
public function __construct(EntityManagerInterface $em)
{
$this->em = $em;
}
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$status = $this->em->getRepository(UserSurveyStatus::class)->findOneBy(['code' => 'OFFER_PENDING'])->getName();
$builder
->add('cmuResultType', ChoiceType::class, [
'label' => 'Compte rendu',
'required' => true,
'row_attr' => [
'class' => 'input-group input-group-static my-3',
],
'empty_data' => '',
'placeholder' => '',
'choices' => [
'Remboursement' => 'REPAYMENT',
'Correcte' => 'CORRECT',
'Redressement' => 'ADJUSTMENT',
],
])
->add('cmuResultN3', NumberType::class, [
'label' => 'Résultat ' . strval(intval(date('Y')) - 3),
'required' => false,
'row_attr' => [
'class' => 'input-group input-group-static my-3',
],
])
->add('cmuResultN2', NumberType::class, [
'label' => 'Résultat ' . strval(intval(date('Y')) - 2),
'required' => false,
'row_attr' => [
'class' => 'input-group input-group-static my-3',
],
])
->add('cmuResultN1', NumberType::class, [
'label' => 'Résultat ' . strval(intval(date('Y')) - 1),
'required' => false,
'row_attr' => [
'class' => 'input-group input-group-static my-3',
],
])
->add('cmuResultN', NumberType::class, [
'label' => 'Résultat ' . date('Y'),
'required' => false,
'row_attr' => [
'class' => 'input-group input-group-static my-3',
],
])
->add('resultAFCComment', TextareaType::class, [
'label' => false,
'required' => false,
'row_attr' => [
'class' => 'input-group input-group-dynamic my-3',
],
'attr' => [
'placeholder' => 'Commentaires sur résultat AFC',
],
])
->add('amount', MoneyType::class, [
'label' => 'Montant de la proposition',
'required' => true,
'attr' => ['min' => 0, 'class' => 'h-40'],
'row_attr' => [
'class' => 'input-group input-group-static mb-4 ',
],
'setter' => function (UserSurvey $userSurvey, $value) {
if (is_null($userSurvey->getOrder())) {
$order = new Order($value, $userSurvey);
$userSurvey->setOrder($order);
}
$userSurvey->getOrder()->updateAmounts($value);
},
'getter' => function (UserSurvey $userSurvey) {
if (!is_null($userSurvey->getOrder())) {
return $userSurvey->getOrder()->getAmountNoDiscount();
}
return $userSurvey->getPrice();
},
])
->add('statusChange', SwitchType::class, [
'mapped' => false,
'required' => false,
'label' => 'Changer le statut en "' . $status . '"',
'value' => true,
])
->add('sendMail', SwitchType::class, [
'mapped' => false,
'required' => false,
'label' => 'Prévenir Le client',
'value' => true,
]);
}
public function configureOptions(OptionsResolver $resolver): void
{
$resolver->setDefaults([
'with_afc_request' => true,
'data_class' => UserSurvey::class,
'csrf_protection' => true,
'csrf_token_id' => 'front_update_item',
'csrf_field_name' => 'front_update_token',
]);
}
}