Commit e7899e6f by Damien Moulard

Adhérer par le kohinos

parent 8798f1ce
......@@ -14,6 +14,7 @@ use App\Entity\Prestataire;
use App\Entity\Siege;
use App\Entity\User;
use App\Entity\Usergroup;
use App\Entity\Payment;
use App\Enum\MoyenEnum;
use App\Form\Type\AdhererFormType;
use App\Form\Type\ContactFormType;
......@@ -49,6 +50,7 @@ use Symfony\Component\Security\Core\Security as Secur;
use Symfony\Component\Security\Csrf\CsrfTokenManagerInterface;
use Symfony\Component\Security\Guard\GuardAuthenticatorHandler;
use Symfony\Component\Templating\EngineInterface;
use Symfony\Component\Serializer\Normalizer\AbstractNormalizer;
class IndexController extends AbstractController
{
......@@ -202,47 +204,30 @@ class IndexController extends AbstractController
*/
public function adhererAction(Request $request)
{
// @TODO : formulaire d'adhésion sans cotisation ? à valider après ?
$adherent = new Adherent();
$user = $this->userManager->createUser();
$groupe = $this->em->getRepository(Usergroup::class)->findOneByName('Adherent');
$user->setEnabled(false);
$user->addPossiblegroup($groupe);
$user->addGroup($groupe);
$user->addRole('ROLE_ADHERENT');
$adherent->setEcompte('0');
$user->setAdherent($adherent);
$adherent->setUser($user);
// @TODO : ajouter le moyen de payer sa cotisation en CB directement
// if (count($adherent->getUser()->getCotisations()) <= 0) {
// $cotisation = new Cotisation();
// $cotisation->setMontant(floatval($this->em->getRepository(GlobalParameter::class)->val(GlobalParameter::COTISATION_ADHERENT)));
// $cotisation->setOperateur($adherent->getUser());
// $cotisation->setExpediteur($adherent);
// $cotisation->setMoyen(MoyenEnum::MOYEN_AUTRE);
// $cotisation->setDebut(new \DateTime());
// $cotisation->setFin(new \DateTime('+ 1 year'));
// $adherent->getUser()->addCotisation($cotisation);
// }
if ($adherent->getGeoloc() == null) {
$adherent->setGeoloc(new Geoloc());
}
$form = $this->createForm(AdhererFormType::class, $adherent);
$form->handleRequest($request);
if ($form->isSubmitted()) {
if ($form->isValid()) {
$adherentNew = $form->getData();
// @TODO : redirect to paiement page
// $this->em->persist($adherentNew);
// $this->em->flush();
// $this->addFlash(
// 'success',
// 'Adhésion bien pris en compte, vous recevrez un email très bientôt !'
// );
return $this->redirectToRoute('index');
// Store form data in session to deal with it at payment callback
$serializer = $this->container->get('serializer');
$data = $serializer->normalize($adherentNew, null,
[AbstractNormalizer::ATTRIBUTES => ['user' => ['username', 'email', 'firstname', 'lastname', 'plainPassword'],
'groupe' => ['id'],
'geoloc' => ['adresse', 'cpostal', 'ville']]]);
$jsondata = $serializer->serialize($data, 'json');
$this->session->set('new_adherent', $jsondata);
// Redirect to payment page
return $this->forward('App\Controller\FluxController::preparePaymentAction', [
'form' => $form,
'type' => Payment::TYPE_ADHESION
]);
} else {
$this->addFlash(
'error',
......
......@@ -122,12 +122,14 @@ class Adherent
public function __toString(): string
{
if (!empty($this->getUser())) {
if (!empty($this->getUser()->getLastname().$this->getUser()->getFirstname())) {
return $this->getUser()->getLastname().' '.$this->getUser()->getFirstname();
}
if (!empty($this->getUser()->getUsername())) {
return $this->getUser()->getUsername();
}
}
return 'Adhérent ['.$this->getId().']';
}
}
......@@ -14,6 +14,7 @@ class Payment extends BasePayment
const TYPE_ACHAT_MONNAIE_PRESTA = 'achat_monnaie_presta';
const TYPE_COTISATION_ADHERENT = 'cotisation_adherent';
const TYPE_COTISATION_PRESTA = 'cotisation_presta';
const TYPE_ADHESION = 'adhesion';
/**
......
......@@ -3,18 +3,17 @@
namespace App\Form\Type;
use App\Entity\Cotisation;
use App\Entity\GlobalParameter;
use App\Enum\MoyenEnum;
use App\Form\Type\CotisationInfosFormType;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Form\Extension\Core\Type\HiddenType;
use Symfony\Component\Form\Extension\Core\Type\MoneyType;
use Symfony\Component\Form\Extension\Core\Type\IntegerType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\FormEvent;
use Symfony\Component\Form\FormEvents;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Security\Core\Security;
use Symfony\Component\Validator\Constraints\NotBlank;
class AddCotisationFormType extends AbstractType
{
......@@ -30,29 +29,22 @@ class AddCotisationFormType extends AbstractType
public function buildForm(FormBuilderInterface $builder, array $options)
{
$now = new \DateTime();
$flux = $options['data'];
if (empty($this->security) || empty($this->security->getUser())) {
throw new \Exception("Opération impossible ! Utilisateur non connecté !");
}
$builder
->add('operateur', HiddenType::class, array(
'entity_class' => User::class,
'em' => $this->em,
'data_class' => null,
'data' => $this->security->getUser()
))
->add('reference', HiddenType::class, array(
'label' => 'Reference :',
'required' => true,
'data' => 'Cotisation '.$now->format('Y')
'data' => 'Adhésion '.$now->format('d/m/Y')
))
->add('montant', HiddenType::class, array(
->add('montant', IntegerType::class, array(
'data' => intval($this->em->getRepository(GlobalParameter::class)->val(GlobalParameter::COTISATION_ADHERENT)),
'constraints' => [
new NotBlank()
],
))
->add('moyen', HiddenType::class, array(
'data' => MoyenEnum::MOYEN_AUTRE,
'data' => MoyenEnum::MOYEN_CB,
))
;
;
}
/**
......
......@@ -8,7 +8,6 @@ use App\Entity\Prestataire;
use App\Entity\User;
use App\Enum\MoyenEnum;
use App\Form\Type\GeolocFormType;
use App\Form\Type\RegistrationFormType;
use App\Form\Type\UserInfosFormType;
use Doctrine\DBAL\Types\FloatType;
use Doctrine\ORM\EntityManager;
......
......@@ -4,26 +4,16 @@ namespace App\Form\Type;
use App\Entity\Adherent;
use App\Entity\Groupe;
use App\Entity\Prestataire;
use App\Entity\User;
use App\Enum\MoyenEnum;
use App\Form\Type\GeolocFormType;
use App\Form\Type\RegistrationFormType;
use Doctrine\DBAL\Types\FloatType;
use Doctrine\ORM\EntityManager;
use Doctrine\ORM\EntityManagerInterface;
use Doctrine\ORM\EntityRepository;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\DependencyInjection\ContainerAwareTrait;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Form\Extension\Core\Type\HiddenType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\FormEvent;
use Symfony\Component\Form\FormEvents;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Security\Core\Security;
......@@ -46,28 +36,27 @@ class AdhererFormType extends AbstractType
$builder
->add('user', RegistrationFormType::class, array(
'label' => false,
'required' => false
'required' => true
))
->add('groupe', ChoiceType::class, array(
'required' => true,
'label' => 'Groupe local',
'choices' => $this->container->get('doctrine')->getRepository(Groupe::class)->findAll(),
'choice_label' => 'name',
'placeholder' => 'Choisir un groupe',
))
// ->add('groupe', ChoiceType::class, array(
// 'required' => true,
// 'label' => 'GROUPE LOCAL',
// 'choices' => $this->container->get('doctrine')->getRepository(Groupe::class)->findAll(),
// 'choice_label' => 'name',
// 'placeholder' => 'Choisir un groupe',
// ))
->add('geoloc', GeolocFormType::class, array(
'label' => false,
'required' => true,
'with_geoloc' => false,
'with_latlon' => false
))
// ->add('cotisation', AddCotisationFormType::class, array(
// 'label' => false,
// 'required' => false,
// 'mapped' => false,
// 'data' => $adherent->getUser()->getCotisations()->last()
// ))
// ->add('save', SubmitType::class, ['label' => "Valider l'adhésion"])
->add('cotisation', AddCotisationFormType::class, array(
'label' => false,
'required' => true,
'mapped' => false,
'data_class' => null
))
->add('save', SubmitType::class, ['label' => "Payer en CB"]);
;
}
......
......@@ -39,11 +39,11 @@ class RegistrationFormType extends AbstractType
))
->add('firstname', TextType::class, array(
'label' => 'Prénom',
'required' => false,
'required' => true,
))
->add('lastname', TextType::class, array(
'label' => 'Nom',
'required' => false,
'required' => true,
))
->add('plainPassword', RepeatedType::class, array(
'type' => PasswordType::class,
......
......@@ -2,7 +2,9 @@
{% block content %}
<div class='container' style='max-width:800px;'>
<h4 class='mt-3'>{{'Adhérer'|trans }} :</h4>
<div class='text-center mb-5 mt-2'>
<h4 class='mt-3'><b>{{'Adhérer'|trans }}</b></h4>
</div>
<p>
{{form_start(form)}}
{{ form_row(form.user) }}
......@@ -11,7 +13,10 @@
{% endif %}
{{ form_row(form.geoloc) }}
<div class='text-center mb-5 mt-2'>
<h5>{{ 'Montant de la cotisation'|trans }} : <b>{{ KOH_COTISATION_ADHERENT|default('') }}</b></h5>
<h5><b>{{ 'Cotisation'|trans }}</b></h5>
</div>
{{ form_row(form.cotisation) }}
<div class='text-center mb-5 mt-2'>
{{ form_row(form.save) }}
</div>
{{form_end(form)}}
......
......@@ -889,6 +889,18 @@
<source>Infos du prestataire modifiées !</source>
<target>Infos du prestataire modifiées !</target>
</trans-unit>
<trans-unit id="JkNHITX" resname="Une erreur est survenue due à la configuration du paiement dans l'application. Il est pour l'instant impossible de payer par CB, merci de contacter votre monnaie locale.">
<source>Une erreur est survenue due à la configuration du paiement dans l'application. Il est pour l'instant impossible de payer par CB, merci de contacter votre monnaie locale.</source>
<target>Une erreur est survenue due à la configuration du paiement dans l'application. Il est pour l'instant impossible de payer par CB, merci de contacter votre monnaie locale.</target>
</trans-unit>
<trans-unit id="FXJP8R7" resname="Cotisation">
<source>Cotisation</source>
<target>Cotisation</target>
</trans-unit>
<trans-unit id="QZ19VOy" resname="Votre adhésion a bien été prise en compte, bienvenue !">
<source>Votre adhésion a bien été prise en compte, bienvenue !</source>
<target>Votre adhésion a bien été prise en compte, bienvenue !</target>
</trans-unit>
</body>
</file>
</xliff>
......@@ -905,6 +905,18 @@
<source>Infos du prestataire modifiées !</source>
<target>Infos du prestataire modifiées !</target>
</trans-unit>
<trans-unit id="JkNHITX" resname="Une erreur est survenue due à la configuration du paiement dans l'application. Il est pour l'instant impossible de payer par CB, merci de contacter votre monnaie locale.">
<source>Une erreur est survenue due à la configuration du paiement dans l'application. Il est pour l'instant impossible de payer par CB, merci de contacter votre monnaie locale.</source>
<target>Une erreur est survenue due à la configuration du paiement dans l'application. Il est pour l'instant impossible de payer par CB, merci de contacter votre monnaie locale.</target>
</trans-unit>
<trans-unit id="FXJP8R7" resname="Cotisation">
<source>Cotisation</source>
<target>Cotisation</target>
</trans-unit>
<trans-unit id="QZ19VOy" resname="Votre adhésion a bien été prise en compte, bienvenue !">
<source>Votre adhésion a bien été prise en compte, bienvenue !</source>
<target>Votre adhésion a bien été prise en compte, bienvenue !</target>
</trans-unit>
</body>
</file>
</xliff>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment