src/Form/Mobile/VehiculeMouvementType.php line 25

  1. <?php
  2. namespace App\Form\Mobile;
  3. use App\Entity\AdminFinance\Vehicule\VehiculeMouvement;
  4. use App\Entity\AdminFinance\Vehicule\Voiture;
  5. use App\Entity\AdminFinance\Bank\BankCompte;
  6. use App\Entity\AdminFinance\Bank\BankMouvementCategorie;
  7. use App\Repository\AdminFinance\Bank\BankCompteRepository;
  8. use App\Repository\AdminFinance\Vehicule\VoitureRepository;
  9. use App\Repository\AdminFinance\Bank\BankMouvementCategorieRepository;
  10. use Symfony\Component\Form\AbstractType;
  11. use Symfony\Component\Form\FormBuilderInterface;
  12. use Symfony\Component\OptionsResolver\OptionsResolver;
  13. use Symfony\Component\Form\Extension\Core\Type\DateType;
  14. use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
  15. use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
  16. use Symfony\Component\Form\Extension\Core\Type\NumberType;
  17. use Symfony\Component\Form\Extension\Core\Type\SubmitType;
  18. use Symfony\Component\Form\Extension\Core\Type\TextType;
  19. class VehiculeMouvementType extends AbstractType
  20. {
  21.     public function __construct(
  22.         private VoitureRepository $voitureRepository
  23.         private BankCompteRepository $compteRepository
  24.         private BankMouvementCategorieRepository $categorieRepository
  25.     )
  26.     {
  27.         $this->compteRepository $compteRepository;
  28.         $this->voitureRepository $voitureRepository;
  29.         $this->categorieRepository $categorieRepository;
  30.     }
  31.     
  32.             
  33.     public function buildForm(FormBuilderInterface $builder, array $options)
  34.     {
  35.         $comptes $this->fullListeComptes();
  36.         $voitures $this->voitureRepository->findAll();
  37.         $categories $this->categorieRepository->findBy(['parent' => VehiculeMouvement::CATEGORY_PARENT], ['libelle' => 'ASC']);
  38.         
  39.         $builder
  40.         ->add('compteDebit'ChoiceType::class, [ 
  41.             'label'=> 'Compte Débit''choices'=> $comptes,
  42.             'choice_label' => function(BankCompte $compte$key$value) {
  43.                     return $compte->getNom();    
  44.             }
  45.         ])
  46.         ->add('categorie'ChoiceType::class, [ 
  47.             'choices'=> $categories
  48.             'choice_label' => function($categorie$key$value) {
  49.                 if($categorie instanceof BankMouvementCategorie) {
  50.                     return $categorie->getLibelle();
  51.                 }
  52.             }
  53.         ])
  54.         ->add('km'NumberType::class, [
  55.             'html5' => true,
  56.             'scale' => 2,
  57.             'attr' => ['min' => 0'step' => 'any''class' => 'form-control'],
  58.             'required' => true
  59.         ])
  60.         ->add('litre'NumberType::class, [
  61.             'html5' => true,
  62.             'scale' => 2,
  63.             'attr' => ['min' => 0'step' => 'any''class' => 'form-control'],
  64.             'required' => false
  65.         ])
  66.         ->add('prixLitre'NumberType::class, [
  67.             'html5' => true,
  68.             'scale' => 3,
  69.             'attr' => ['min' => 0'step' => 'any''class' => 'form-control'],
  70.             'required' => false
  71.         ])
  72.         ->add('montant'NumberType::class, [
  73.             'html5' => true,
  74.             'scale' => 2,
  75.             'attr' => ['min' => 0'step' => 'any''class' => 'form-control'],
  76.             'required' => true
  77.         ])
  78.         ->add('commentaire'TextType::class, [
  79.             'attr' => [
  80.                 'class' => 'form-control'
  81.             ],
  82.             'required' => false
  83.         ])
  84.         ->add('voiture'ChoiceType::class, [
  85.             'attr' => ['class' => 'form-control'], 
  86.             'choices' => $voitures,
  87.             'choice_label' => function(Voiture $voiture$key$value) {
  88.                 return $voiture->getLibelle();
  89.             },
  90.             'required' => true
  91.         ])
  92.         ->add('save'SubmitType::class, [
  93.             'attr' => ['class' => 'form-control save'],
  94.             'label' => 'Enregistrer'
  95.         ])
  96.         ;
  97.     }
  98.     public function configureOptions(OptionsResolver $resolver)
  99.     {
  100.         $resolver->setDefaults([
  101.             'data_class' => VehiculeMouvement::class,
  102.         ]);
  103.     }
  104.     
  105.     private function fullListeComptes() {
  106.         $comptes = [ '' => new BankCompte()];
  107.         foreach ($this->compteRepository->findAll() as $key => $value) {
  108.             $comptes[] = $value;
  109.         }
  110.         return $comptes;
  111.     }
  112. }