src/Form/Mobile/BankMouvementType.php line 36
<?phpnamespace App\Form\Mobile;use App\Entity\AdminFinance\Bank\BankCompte;use App\Entity\AdminFinance\Bank\BankMouvement;use App\Entity\AdminFinance\Bank\BankMouvementCategorie;use App\Repository\AdminFinance\Bank\BankCompteRepository;use App\Repository\AdminFinance\Bank\BankMouvementCategorieRepository;use Symfony\Component\Form\AbstractType;use Symfony\Component\Form\FormBuilderInterface;use Symfony\Component\OptionsResolver\OptionsResolver;use Symfony\Component\Form\Extension\Core\Type\ChoiceType;use Symfony\Component\Form\Extension\Core\Type\SubmitType;use Symfony\Component\Form\Extension\Core\Type\TextType;use Symfony\Component\Form\Extension\Core\Type\NumberType;class BankMouvementType extends AbstractType{public function __construct(private BankCompteRepository $compteRepository,private BankMouvementCategorieRepository $categorieRepository){}public function buildForm(FormBuilderInterface $builder, array $options){$comptes = $this->fullListeComptes();$categories = $this->fullListeCategories();$builder->add('compteDebit', ChoiceType::class, ['label'=> 'Compte Débit', 'choices'=> $comptes,'choice_label' => function(BankCompte $compte, $key, $value) {return $compte->getNom();}])->add('compteCredit', ChoiceType::class, ['label'=> 'Compte Crédit', 'choices'=> $comptes,'choice_label' => function(BankCompte $compte, $key, $value) {return $compte->getNom();}])->add('categorie', ChoiceType::class, ['choices'=> $categories,'choice_label' => function($categorie, $key, $value) {if($categorie instanceof BankMouvementCategorie) {return $categorie->getLibelle();}}])->add('description', TextType::class)->add('montant', NumberType::class, ['html5' => true,'scale' => 2,'attr' => ['min' => 0, 'step' => 'any']])->add('save', SubmitType::class);}public function configureOptions(OptionsResolver $resolver){$resolver->setDefaults(['data_class' => BankMouvement::class,]);}private function fullListeComptes() {$comptes = [ '' => new BankCompte()];foreach ($this->compteRepository->findAll() as $key => $value) {$comptes[] = $value;}return $comptes;}private function fullListeCategories() {$depenses = $revenus = [];$listes = $this->categorieRepository->findBy(['parent' => null, 'selection' => true], ['libelle' => 'ASC']);foreach ($listes as $cat) {if($cat->getParent() === null) {if($cat->getType() == BankMouvementCategorie::TYPE_DEBIT) {$sousListes = $this->categorieRepository->findBy(['parent' => $cat->getId()], ['libelle' => 'ASC']);foreach($sousListes as $ss) {$depenses[$cat->getLibelle()][] = $ss;}} elseif ($cat->getType() == BankMouvementCategorie::TYPE_CREDIT) {$sousListes = $this->categorieRepository->findBy(['parent' => $cat->getId()], ['libelle' => 'ASC']);foreach($sousListes as $ss) {$revenus[$cat->getLibelle()][] = $ss;}}}}return ['' => '', 'Dépenses' => $depenses, 'Revenus' => $revenus];}}