src/Form/Stock/StockExitSlipType.php line 17

Open in your IDE?
  1. <?php
  2. namespace App\Form\Stock;
  3. use App\Entity\StockProduct;
  4. use App\Entity\StockExitSlip;
  5. use App\Entity\StockWarehouse;
  6. use Doctrine\ORM\EntityRepository;
  7. use Symfony\Component\Form\AbstractType;
  8. use Symfony\Component\Security\Core\Security;
  9. use App\Entity\RegistrationStudentRegistration;
  10. use Symfony\Component\Form\FormBuilderInterface;
  11. use Symfony\Bridge\Doctrine\Form\Type\EntityType;
  12. use Symfony\Component\OptionsResolver\OptionsResolver;
  13. use Symfony\Component\Form\Extension\Core\Type\DateType;
  14. class StockExitSlipType extends AbstractType
  15. {
  16.     private $security;
  17.     public function __construct(Security $security)
  18.     {
  19.         $this->security $security;
  20.     }
  21.     public function getUser()
  22.     {
  23.         /** @var User $user */
  24.         $user $this->security->getUser();
  25.         return $user;
  26.     }
  27.     public function buildForm(FormBuilderInterface $builder, array $options): void
  28.     {
  29.         $builder
  30.             ->add('quantity')
  31.             ->add('reason')
  32.             ->add('create_date'DateType::class, [
  33.                 'widget' => 'single_text',
  34.                 'html5' => true,
  35.                 'input' => 'datetime_immutable'
  36.             ])
  37.             ->add('stockWarehouse'EntityType::class, [
  38.                 'class' => StockWarehouse::class,
  39.                 'query_builder' => function (EntityRepository $er) {
  40.                     return $er->createQueryBuilder('s')
  41.                         ->where('s.type = :type')
  42.                         ->setParameter('type'StockWarehouse::TYPE_DISTRIBUTION);
  43.                 },
  44.             ])
  45.             ->add('stockProduct'EntityType::class, [
  46.                 'class' => StockProduct::class,
  47.                 'query_builder' => function (EntityRepository $er) {
  48.                     return $er->createQueryBuilder('s')
  49.                         ->where('s.establishment = :establishment')
  50.                         ->setParameter('establishment'$this->getUser()->getEstablishment());
  51.                 },
  52.             ])
  53.             ->add('registrationStudentRegistration'EntityType::class, [
  54.                 'class' => RegistrationStudentRegistration::class,
  55.                 'query_builder' => function (EntityRepository $er) {
  56.                     return $er->createQueryBuilder('r')
  57.                         ->innerJoin('r.student''s')
  58.                         ->addSelect('s')
  59.                         ->where('r.establishment = :establishment')
  60.                         ->setParameter('establishment'$this->getUser()->getEstablishment())
  61.                         ->andWhere('r.schoolYear = :schoolYear')
  62.                         ->setParameter('schoolYear'$this->getUser()->getSchoolYear())
  63.                         ->orderBy('s.last_name''ASC')
  64.                         ->addOrderBy('s.first_name''ASC');
  65.                 },
  66.                 'required' => false,
  67.             ])
  68.         ;
  69.     }
  70.     public function configureOptions(OptionsResolver $resolver): void
  71.     {
  72.         $resolver->setDefaults([
  73.             'data_class' => StockExitSlip::class,
  74.         ]);
  75.     }
  76. }