FormFactory.php 13.7 KB
Newer Older
1 2 3 4 5 6
<?php

namespace App\Factory;

use App\Entity\TransactionAdherentAdherent;
use App\Entity\TransactionAdherentPrestataire;
Julien Jorry committed
7 8 9
use App\Entity\TransactionComptoirAdherent;
use App\Entity\TransactionComptoirGroupe;
use App\Entity\TransactionComptoirPrestataire;
10 11
use App\Entity\TransactionPrestataireAdherent;
use App\Entity\TransactionPrestatairePrestataire;
12
use App\Entity\TransfertComptoirGroupe;
13
use App\Entity\TransfertGroupeComptoir;
14
use App\Entity\TransfertGroupeSiege;
Julien Jorry committed
15 16
use App\Entity\TransfertPrestataireComptoir;
use App\Entity\TransfertPrestataireSiege;
17
use App\Entity\TransfertSiegeGroupe;
18 19 20 21
use App\Entity\RetraitComptoirAdherent;
use App\Entity\RetraitComptoirPrestataire;
use App\Entity\VenteComptoirAdherent;
use App\Entity\VenteComptoirPrestataire;
22
use App\Entity\Siege;
23 24
use App\Entity\AchatMonnaieAdherent;
use App\Entity\AchatMonnaiePrestataire;
25
use App\Entity\User;
Julien Jorry committed
26 27 28 29 30 31 32
use App\Enum\MoyenEnum;
use App\Form\Type\AdherentInfosFormType;
use App\Form\Type\ComptoirInfosFormType;
use App\Form\Type\GroupeInfosFormType;
use App\Form\Type\GroupePrestataireInscriptionFormType;
use App\Form\Type\PrestataireInfosFormType;
use App\Form\Type\RegistrationFormType;
33 34 35 36
use App\Form\Type\TransactionAdherentAdherentFormType;
use App\Form\Type\TransactionAdherentPrestataireFormType;
use App\Form\Type\TransactionPrestataireAdherentFormType;
use App\Form\Type\TransactionPrestatairePrestataireFormType;
37
use App\Form\Type\TransfertComptoirGroupeFormType;
38
use App\Form\Type\TransfertGroupeComptoirFormType;
39
use App\Form\Type\TransfertGroupeSiegeFormType;
Julien Jorry committed
40 41
use App\Form\Type\TransfertPrestataireComptoirFormType;
use App\Form\Type\TransfertPrestataireSiegeFormType;
42
use App\Form\Type\TransfertSiegeGroupeFormType;
43 44
use App\Form\Type\RetraitComptoirAdherentFormType;
use App\Form\Type\RetraitComptoirPrestataireFormType;
45
use App\Form\Type\SoldeSiegeFormType;
46 47
use App\Form\Type\VenteComptoirAdherentFormType;
use App\Form\Type\VenteComptoirPrestataireFormType;
48 49
use App\Form\Type\AchatMonnaieAdherentFormType;
use App\Form\Type\AchatMonnaiePrestataireFormType;
50
use App\Form\Type\UserInfosFormType;
51
use Doctrine\ORM\EntityManagerInterface;
52
use FOS\UserBundle\Form\Type\ChangePasswordFormType;
53
use Symfony\Component\Form\FormFactoryInterface as FormF;
Julien Jorry committed
54
use Symfony\Component\HttpFoundation\Session\SessionInterface;
55 56 57 58
use Symfony\Component\Routing\RouterInterface;

class FormFactory
{
59 60 61 62
    private $ff;
    private $router;
    private $session;
    private $em;
63

64
    public function __construct(FormF $ff, RouterInterface $router, SessionInterface $session, EntityManagerInterface $em)
65 66 67
    {
        $this->ff = $ff;
        $this->router = $router;
Julien Jorry committed
68
        $this->session = $session;
69
        $this->em = $em;
70 71
    }

Julien Jorry committed
72
    public function getUserInfosForm(User $user)
73 74 75 76 77 78 79 80 81 82
    {
        if (empty($user)) {
            throw new \Exception("[FORM 0] Opération impossible !");
        }
        $form = $this->ff->create(UserInfosFormType::class, $user, array('action' => $this->router->generate('user_infos')));

        return $form->createView();
    }

    public function getUserPasswordForm(User $user)
Julien Jorry committed
83 84
    {
        if (empty($user)) {
85
            throw new \Exception("[FORM 1] Opération impossible !");
Julien Jorry committed
86
        }
87
        $form = $this->ff->create(ChangePasswordFormType::class, $user, array('action' => $this->router->generate('fos_user_change_password')));
Julien Jorry committed
88 89 90 91 92 93

        return $form->createView();
    }

    public function getGroupeInfosForm(User $user)
    {
Julien Jorry committed
94
        if (empty($user) || empty($this->session->get('_groupegere'))) {
95
            throw new \Exception("[FORM 2] Opération impossible !");
Julien Jorry committed
96
        }
Julien Jorry committed
97
        $form = $this->ff->create(GroupeInfosFormType::class, $this->session->get('_groupegere'), array('action' => $this->router->generate('groupe_infos')));
Julien Jorry committed
98 99 100 101 102 103

        return $form->createView();
    }

    public function getComptoirInfosForm(User $user)
    {
Julien Jorry committed
104
        if (empty($user) || empty($this->session->get('_comptoirgere'))) {
105
            throw new \Exception("[FORM 3] Opération impossible !");
Julien Jorry committed
106
        }
Julien Jorry committed
107
        $form = $this->ff->create(ComptoirInfosFormType::class, $this->session->get('_comptoirgere'), array('action' => $this->router->generate('comptoir_infos')));
Julien Jorry committed
108 109 110 111 112 113

        return $form->createView();
    }

    public function getPrestataireInfosForm(User $user)
    {
Julien Jorry committed
114
        if (empty($user) || empty($this->session->get('_prestagere'))) {
115
            throw new \Exception("[FORM 4] Opération impossible !");
Julien Jorry committed
116
        }
Julien Jorry committed
117
        $form = $this->ff->create(PrestataireInfosFormType::class, $this->session->get('_prestagere'), array('action' => $this->router->generate('prestataire_infos')));
Julien Jorry committed
118 119 120 121 122 123 124

        return $form->createView();
    }

    public function getAdherentInfosForm(User $user)
    {
        if (empty($user) || empty($user->getAdherent())) {
125
            throw new \Exception("[FORM 5] Opération impossible !");
Julien Jorry committed
126 127 128 129 130 131 132 133
        }
        $form = $this->ff->create(AdherentInfosFormType::class, $user->getAdherent(), array('action' => $this->router->generate('adherent_infos')));

        return $form->createView();
    }

    public function getGroupePrestataireInscriptionForm(User $user)
    {
Julien Jorry committed
134
        if (empty($user) || empty($this->session->get('_prestagere'))) {
135
            throw new \Exception("[FORM 6] Opération impossible !");
Julien Jorry committed
136
        }
Julien Jorry committed
137
        $form = $this->ff->create(GroupePrestataireInscriptionFormType::class, $this->session->get('_prestagere'), array('action' => $this->router->generate('groupeprestataire_inscription')));
Julien Jorry committed
138 139 140 141

        return $form->createView();
    }

142 143 144
    public function getTransactionAdherentAdherentForm(User $user)
    {
        if (empty($user) || empty($user->getAdherent())) {
145
            throw new \Exception("[FORM 7] Opération impossible !");
146 147 148 149 150 151 152 153 154 155 156 157
        }
        $entity = new TransactionAdherentAdherent();
        $entity->setOperateur($user);
        $entity->setExpediteur($user->getAdherent());
        $form = $this->ff->create(TransactionAdherentAdherentFormType::class, $entity, array('action' => $this->router->generate('transactionAdherentAdherent')));

        return $form->createView();
    }

    public function getTransactionAdherentPrestataireForm(User $user)
    {
        if (empty($user) || empty($user->getAdherent())) {
158
            throw new \Exception("[FORM 8] Opération impossible !");
159 160 161 162 163 164 165 166 167 168 169
        }
        $entity = new TransactionAdherentPrestataire();
        $entity->setOperateur($user);
        $entity->setExpediteur($user->getAdherent());
        $form = $this->ff->create(TransactionAdherentPrestataireFormType::class, $entity, array('action' => $this->router->generate('transactionAdherentPrestataire')));

        return $form->createView();
    }

    public function getTransactionPrestataireAdherentForm(User $user)
    {
Julien Jorry committed
170
        if (empty($user) || empty($this->session->get('_prestagere'))) {
171
            throw new \Exception("[FORM] Opération impossible !");
172 173 174
        }
        $entity = new TransactionPrestataireAdherent();
        $entity->setOperateur($user);
Julien Jorry committed
175
        $entity->setExpediteur($this->session->get('_prestagere'));
176 177 178 179 180 181 182
        $form = $this->ff->create(TransactionPrestataireAdherentFormType::class, $entity, array('action' => $this->router->generate('transactionPrestataireAdherent')));

        return $form->createView();
    }

    public function getTransactionPrestatairePrestataireForm(User $user)
    {
Julien Jorry committed
183
        if (empty($user) || empty($this->session->get('_prestagere'))) {
184
            throw new \Exception("[FORM 9] Opération impossible !");
185 186 187
        }
        $entity = new TransactionPrestatairePrestataire();
        $entity->setOperateur($user);
Julien Jorry committed
188
        $entity->setExpediteur($this->session->get('_prestagere'));
189 190 191 192 193
        $form = $this->ff->create(TransactionPrestatairePrestataireFormType::class, $entity, array('action' => $this->router->generate('transactionPrestatairePrestataire')));

        return $form->createView();
    }

Julien Jorry committed
194 195
    public function getTransfertPrestataireSiegeForm(User $user)
    {
Julien Jorry committed
196
        if (empty($user) || empty($this->session->get('_prestagere'))) {
197
            throw new \Exception("[FORM 10] Opération impossible !");
Julien Jorry committed
198 199
        }
        $entity = new TransfertPrestataireSiege();
Julien Jorry committed
200
        $entity->setExpediteur($this->session->get('_prestagere'));
Julien Jorry committed
201 202 203 204 205 206 207
        $form = $this->ff->create(TransfertPrestataireSiegeFormType::class, $entity, array('action' => $this->router->generate('transactionPrestataireSiege')));

        return $form->createView();
    }

    public function getTransfertPrestataireComptoirForm(User $user)
    {
Julien Jorry committed
208
        if (empty($user) || empty($this->session->get('_comptoirgere'))) {
209
            throw new \Exception("[FORM 11] Opération impossible !");
Julien Jorry committed
210 211
        }
        $entity = new TransfertPrestataireComptoir();
Julien Jorry committed
212
        $entity->setDestinataire($this->session->get('_comptoirgere'));
Julien Jorry committed
213 214 215 216 217
        $form = $this->ff->create(TransfertPrestataireComptoirFormType::class, $entity, array('action' => $this->router->generate('transfertPrestataireComptoir')));

        return $form->createView();
    }

218
    public function getRetraitComptoirToXForm(User $user, $type)
Julien Jorry committed
219 220
    {
        $type = strtolower($type);
Julien Jorry committed
221
        if (empty($user) || empty($this->session->get('_comptoirgere')) || !($type == 'adherent' || $type == 'groupe' || $type == 'prestataire')) {
222
            throw new \Exception("[FORM 12] Opération impossible !");
Julien Jorry committed
223
        }
224
        $class = "App\Entity\RetraitComptoir".ucwords($type);
Julien Jorry committed
225 226
        $entity = new $class();
        $entity->setOperateur($user);
Julien Jorry committed
227
        $entity->setExpediteur($this->session->get('_comptoirgere'));
228
        $form = $this->ff->create('App\Form\Type\RetraitComptoir'.ucwords($type).'FormType', $entity, array('action' => $this->router->generate('retraitComptoir'.ucwords($type))));
Julien Jorry committed
229 230 231

        return $form->createView();
    }
232

233 234 235
    public function getVenteComptoirToXForm(User $user, $type)
    {
        $type = strtolower($type);
Julien Jorry committed
236
        if (empty($user) || empty($this->session->get('_comptoirgere')) || !($type == 'adherent' || $type == 'groupe' || $type == 'prestataire')) {
237 238 239 240 241
            throw new \Exception("[FORM 12] Opération impossible !");
        }
        $class = "App\Entity\VenteComptoir".ucwords($type);
        $entity = new $class();
        $entity->setOperateur($user);
Julien Jorry committed
242
        $entity->setExpediteur($this->session->get('_comptoirgere'));
243 244 245 246 247
        $form = $this->ff->create('App\Form\Type\VenteComptoir'.ucwords($type).'FormType', $entity, array('action' => $this->router->generate('venteComptoir'.ucwords($type))));

        return $form->createView();
    }

248 249
    public function getTransfertComptoirGroupeForm(User $user)
    {
Julien Jorry committed
250
        if (empty($user) || empty($this->session->get('_groupegere'))) {
251 252 253 254
            throw new \Exception("[FORM 12] Opération impossible !");
        }
        $entity = new TransfertComptoirGroupe();
        $entity->setOperateur($user);
Julien Jorry committed
255
        $entity->setDestinataire($this->session->get('_groupegere'));
256 257 258 259 260
        $form = $this->ff->create(TransfertComptoirGroupeFormType::class, $entity, array('action' => $this->router->generate('transfertComptoirGroupe')));

        return $form->createView();
    }

261 262
    public function getTransfertGroupeComptoirForm(User $user)
    {
Julien Jorry committed
263
        if (empty($user) || empty($this->session->get('_groupegere'))) {
264 265 266 267
            throw new \Exception("[FORM 13] Opération impossible !");
        }
        $entity = new TransfertGroupeComptoir();
        $entity->setOperateur($user);
Julien Jorry committed
268
        $entity->setExpediteur($this->session->get('_groupegere'));
269 270 271 272 273 274 275 276 277 278 279 280 281
        $form = $this->ff->create(TransfertGroupeComptoirFormType::class, $entity, array('action' => $this->router->generate('transfertGroupeComptoir')));

        return $form->createView();
    }

    public function getTransfertSiegeGroupeForm(User $user)
    {
        if (empty($user) || !$user->hasRole('ROLE_ADMIN_SIEGE')) {
            throw new \Exception("[FORM 14] Opération impossible !");
        }
        $entity = new TransfertSiegeGroupe();
        $entity->setOperateur($user);
        $form = $this->ff->create(TransfertSiegeGroupeFormType::class, $entity, array('action' => $this->router->generate('transfertSiegeGroupe')));
282

283 284
        return $form->createView();
    }
285

286 287 288 289 290 291 292 293
    public function getTransfertGroupeSiegeForm(User $user)
    {
        if (empty($user) || !$user->hasRole('ROLE_ADMIN_SIEGE')) {
            throw new \Exception("[FORM 15] Opération impossible !");
        }
        $entity = new TransfertGroupeSiege();
        $entity->setOperateur($user);
        $form = $this->ff->create(TransfertGroupeSiegeFormType::class, $entity, array('action' => $this->router->generate('transfertGroupeSiege')));
294

295 296
        return $form->createView();
    }
297

298 299 300 301 302 303 304 305 306 307
    public function getSoldeSiegeForm(User $user)
    {
        if (empty($user) || !$user->hasRole('ROLE_ADMIN_SIEGE')) {
            throw new \Exception("[FORM 16] Opération impossible !");
        }
        $siege = $this->em->getRepository(Siege::class)->findOneById(1);
        $form = $this->ff->create(SoldeSiegeFormType::class, $siege, array('action' => $this->router->generate('soldeSiege')));

        return $form->createView();
    }
Damien Moulard committed
308

309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331
    public function getAchatMonnaieAdherentForm(User $user)
    {
        if (empty($user) || empty($user->getAdherent())) {
            throw new \Exception("[FORM 16] Opération impossible !");
        }
        $entity = new AchatMonnaieAdherent();
        $entity->setOperateur($user);
        $form = $this->ff->create(AchatMonnaieAdherentFormType::class, $entity, array('action' => $this->router->generate('achatMonnaieAdherent')));

        return $form->createView();
    }

    public function getAchatMonnaiePrestataireForm(User $user)
    {
        if (empty($user) || empty($this->session->get('_prestagere'))) {
            throw new \Exception("[FORM 17] Opération impossible !");
        }
        $entity = new AchatMonnaiePrestataire();
        $entity->setOperateur($user);
        $form = $this->ff->create(AchatMonnaiePrestataireFormType::class, $entity, array('action' => $this->router->generate('achatMonnaiePrestataire')));

        return $form->createView();
    }
332
}