src\Form\UserSurvey\CMUResultType.php line 91

Open in your IDE?
  1. <?php
  2. namespace App\Form\UserSurvey;
  3. use App\Entity\Order;
  4. use App\Entity\UserSurvey;
  5. use App\Entity\UserSurveyStatus;
  6. use App\Form\Type\SwitchType;
  7. use Doctrine\ORM\EntityManagerInterface;
  8. use Symfony\Component\Form\AbstractType;
  9. use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
  10. use Symfony\Component\Form\Extension\Core\Type\MoneyType;
  11. use Symfony\Component\Form\Extension\Core\Type\NumberType;
  12. use Symfony\Component\Form\Extension\Core\Type\TextareaType;
  13. use Symfony\Component\Form\FormBuilderInterface;
  14. use Symfony\Component\OptionsResolver\OptionsResolver;
  15. class CMUResultType extends AbstractType
  16. {
  17.     private EntityManagerInterface $em;
  18.     public function __construct(EntityManagerInterface $em)
  19.     {
  20.         $this->em $em;
  21.     }
  22.     public function buildForm(FormBuilderInterface $builder, array $options): void
  23.     {
  24.         $status $this->em->getRepository(UserSurveyStatus::class)->findOneBy(['code' => 'OFFER_PENDING'])->getName();
  25.         $builder
  26.             ->add('cmuResultType'ChoiceType::class, [
  27.                 'label' => 'Compte rendu',
  28.                 'required' => true,
  29.                 'row_attr' => [
  30.                     'class' => 'input-group input-group-static my-3',
  31.                 ],
  32.                 'empty_data' => '',
  33.                 'placeholder' => '',
  34.                 'choices' => [
  35.                     'Remboursement' => 'REPAYMENT',
  36.                     'Correcte' => 'CORRECT',
  37.                     'Redressement' => 'ADJUSTMENT',
  38.                 ],
  39.             ])
  40.             ->add('cmuResultN3'NumberType::class, [
  41.                 'label' => 'Résultat ' strval(intval(date('Y')) - 3),
  42.                 'required' => false,
  43.                 'row_attr' => [
  44.                     'class' => 'input-group input-group-static my-3',
  45.                 ],
  46.             ])
  47.             ->add('cmuResultN2'NumberType::class, [
  48.                 'label' => 'Résultat ' strval(intval(date('Y')) - 2),
  49.                 'required' => false,
  50.                 'row_attr' => [
  51.                     'class' => 'input-group input-group-static my-3',
  52.                 ],
  53.             ])
  54.             ->add('cmuResultN1'NumberType::class, [
  55.                 'label' => 'Résultat ' strval(intval(date('Y')) - 1),
  56.                 'required' => false,
  57.                 'row_attr' => [
  58.                     'class' => 'input-group input-group-static my-3',
  59.                 ],
  60.             ])
  61.             ->add('cmuResultN'NumberType::class, [
  62.                 'label' => 'Résultat ' date('Y'),
  63.                 'required' => false,
  64.                 'row_attr' => [
  65.                     'class' => 'input-group input-group-static my-3',
  66.                 ],
  67.             ])
  68.             ->add('resultAFCComment'TextareaType::class, [
  69.                 'label' => false,
  70.                 'required' => false,
  71.                 'row_attr' => [
  72.                     'class' => 'input-group input-group-dynamic my-3',
  73.                 ],
  74.                 'attr' => [
  75.                     'placeholder' => 'Commentaires sur résultat AFC',
  76.                 ],
  77.             ])
  78.             ->add('amount'MoneyType::class, [
  79.                 'label' => 'Montant de la proposition',
  80.                 'required' => true,
  81.                 'attr' => ['min' => 0'class' => 'h-40'],
  82.                 'row_attr' => [
  83.                     'class' => 'input-group input-group-static mb-4 ',
  84.                 ],
  85.                 'setter' => function (UserSurvey $userSurvey$value) {
  86.                     if (is_null($userSurvey->getOrder())) {
  87.                         $order = new Order($value$userSurvey);
  88.                         $userSurvey->setOrder($order);
  89.                     }
  90.                     $userSurvey->getOrder()->updateAmounts($value);
  91.                 },
  92.                 'getter' => function (UserSurvey $userSurvey) {
  93.                     if (!is_null($userSurvey->getOrder())) {
  94.                         return $userSurvey->getOrder()->getAmountNoDiscount();
  95.                     }
  96.                     return $userSurvey->getPrice();
  97.                 },
  98.             ])
  99.             ->add('statusChange'SwitchType::class, [
  100.                 'mapped' => false,
  101.                 'required' => false,
  102.                 'label' => 'Changer le statut en "' $status '"',
  103.                 'value' => true,
  104.             ])
  105.             ->add('sendMail'SwitchType::class, [
  106.                 'mapped' => false,
  107.                 'required' => false,
  108.                 'label' => 'Prévenir Le client',
  109.                 'value' => true,
  110.             ]);
  111.     }
  112.     public function configureOptions(OptionsResolver $resolver): void
  113.     {
  114.         $resolver->setDefaults([
  115.             'with_afc_request' => true,
  116.             'data_class' => UserSurvey::class,
  117.             'csrf_protection' => true,
  118.             'csrf_token_id' => 'front_update_item',
  119.             'csrf_field_name' => 'front_update_token',
  120.         ]);
  121.     }
  122. }