<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Security\Http\Authentication\AuthenticationUtils;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
use Symfony\Component\HttpFoundation\JsonResponse;
use Doctrine\Common\Collections\ArrayCollection;
use Symfony\Component\String\Slugger\SluggerInterface;
use App\Services\RoleService;
use App\Services\Utils;
use App\Services\FileUploader;
use App\Form\DicType;
use App\Form\SepaType;
use App\Form\retraite\FicTypeRetraite;
use App\Form\retraite\BaTypeRetraite;
use App\Form\epargne\FicTypeEpargne;
use App\Form\epargne\BaTypeEpargne;
use App\Entity\User;
use App\Entity\Dic;
use App\Entity\Fic;
use App\Entity\Ba;
use App\Entity\FileSend;
use App\Entity\Membership;
use App\Entity\OtherContract;
use App\Entity\Beneficiaire;
use GuzzleHttp\Client;
class MembershipController extends AbstractController
{
protected $em;
private $targetDirectory;
public function __construct(EntityManagerInterface $entityManager, \Swift_Mailer $mailer, Utils $utils, FileUploader $fileUploader, RoleService $roleService) {
$this->em = $entityManager;
$this->mailer = $mailer;
$this->utils = $utils;
$this->fileUploader = $fileUploader;
$this->roleService = $roleService;
}
/**
* @Route("/customer/{userID}/memberships", name="membership_list")
*/
public function listByCustomer($userID): Response
{
$userCurrent = $this->get('security.token_storage')->getToken()->getUser();
if($userID == "me"){
$userID = $userCurrent->getId();
}
$memberships = $this->em
->getRepository(Membership::class)
->findBy(['user' => $userID]);
$customer = $this->em
->getRepository(User::class)
->findOneBy(['id' => $userID]);
if(!$customer){
$this->addFlash('danger', 'Cette adhésion n\'existe pas.');
return $this->redirectToRoute('app_login');
}
if(count($memberships) == 1){
//redirect if single
if($this->roleService->isGranted('ROLE_CUSTOMER', $userCurrent)){
return $this->redirectToRoute('membership_view', array("userID" => "me", "membershipID" => $memberships[0]->getId()));
}
else{
$numberProduct = 0;
if($userCurrent->isSellerCanRetraite()){
$numberProduct++;
}
if($userCurrent->isSellerCanEpargne()){
$numberProduct++;
}
if($numberProduct > 2){
return $this->redirectToRoute('membership_view', array("userID" => $customer->getId(), "membershipID" => $memberships[0]->getId()));
}
}
}
return $this->render('membership/list.html.twig', [
'menu' => 'customer',
'memberships' => $memberships,
'customer' => $customer
]);
}
/**
* @Route("/customer/{userID}/membership/{membershipID}/view/{productType}", name="membership_view")
*/
public function view(Request $request, SluggerInterface $slugger, $userID, $membershipID, $productType = null): Response
{
$userCurrent = $this->get('security.token_storage')->getToken()->getUser();
if($userID == "me"){
$userID = $userCurrent->getId();
}
$customer = $this->em
->getRepository(User::class)
->findOneBy(['id' => $userID]);
if(!$customer){
$this->addFlash('danger', 'Le client n\'existe pas.');
return $this->redirectToRoute('customer_list');
}
if($membershipID == "new"){
if($productType != "epargne" && $productType != "retraite"){
$this->addFlash('danger', 'Le produit n\'existe pas.');
return $this->redirectToRoute('customer_list');
}
$membershipExist = $this->em
->getRepository(Membership::class)
->findOneBy(['user' => $customer, 'product' => $productType]);
if($membershipExist){
$this->addFlash('danger', 'Il existe déjà une adhésion pour ce prospect, avec le même produit');
return $this->redirectToRoute('customer_list');
}
//If no membership
$membershipCurrent = $this->utils->createMembershipByProduct($customer, $productType, $userCurrent);
if($membershipCurrent->getFic()){
$membershipCurrent->getFic()->setAcceptRecevoirDocumentGarantieEmail($customer->isAcceptRecevoirDocumentGarantieEmail());
$membershipCurrent->getFic()->setAcceptPropositionCommercialEmail($customer->isAcceptPropositionCommercialEmail());
$membershipCurrent->getFic()->setAcceptPropositionCommercialTelephone($customer->isAcceptPropositionCommercialTelephone());
}
$membershipCurrent->getBa()->setAcceptRecevoirDocumentGarantieEmail($customer->isAcceptRecevoirDocumentGarantieEmail());
$membershipCurrent->getBa()->setAcceptPropositionCommercialEmail($customer->isAcceptPropositionCommercialEmail());
$membershipCurrent->getBa()->setAcceptPropositionCommercialTelephone($customer->isAcceptPropositionCommercialTelephone());
//Create unique number for yousign, systempay
$membershipCurrent->setNumberMembershipFolder(date("Ymd").$membershipCurrent->getId());
//Set the seller -> IN utils.php
/*
if($this->roleService->isGranted('ROLE_SELLER', $userCurrent)){
$membershipCurrent->setSeller($userCurrent);
}
*/
$this->em->persist($membershipCurrent);
$this->em->flush();
}
else{
$membershipCurrent = $this->em
->getRepository(Membership::class)
->findOneBy(['id' => $membershipID]);
if(!$membershipCurrent){
$this->addFlash('danger', 'Le produit n\'existe pas.');
return $this->redirectToRoute('customer_list');
}
if (!$membershipCurrent->getSeller()) {
$this->addFlash('danger', 'Cette page n\'existe pas');
return $this->redirectToRoute('customer_list');
}
if(!$this->roleService->isGranted('ROLE_ADMIN', $userCurrent)){
if($this->roleService->isGranted('ROLE_SELLER', $userCurrent)){
if ($membershipCurrent->getSeller()->getId() != $userCurrent->getId()) {
$this->addFlash('danger', 'Vous ne pouvez pas accéder à cette page');
return $this->redirectToRoute('customer_list');
}
}
else if($this->roleService->isGranted('ROLE_CUSTOMER', $userCurrent)){
if ($customer->getId() != $userCurrent->getId()) {
$this->addFlash('danger', 'Vous ne pouvez pas accéder à cette page');
return $this->redirectToRoute('app_login');
}
}
else{
$this->addFlash('danger', 'Vous ne pouvez pas accéder à cette page');
return $this->redirectToRoute('app_login');
}
}
}
//Configure BIC and BA
$baId = $membershipCurrent->getBa()->getId();
if($membershipCurrent->getFic()){
$ficId = $membershipCurrent->getFic()->getId();
}
else{
$ficId = null;
}
if($this->roleService->isGranted('ROLE_SELLER', $userCurrent) || $this->roleService->isGranted('ROLE_ADMIN', $userCurrent)){
return $this->render('membership/view.html.twig', [
'menu' => 'customer',
"customer" => $customer,
"baId" => $baId,
"ficId" => $ficId,
"membership" => $membershipCurrent
]);
}
else if($this->roleService->isGranted('ROLE_CUSTOMER', $userCurrent)){
//V2 PLATFORM (FIC AND NOT DIC)
return $this->render('membership/view-me.html.twig', [
'menu' => 'customer',
"customer" => $customer,
"baId" => $baId,
"ficId" => $ficId,
"membership" => $membershipCurrent
]);
}
else{
$this->addFlash('danger', 'Vous ne pouvez pas accéder à cette page');
return $this->redirectToRoute('app_login');
}
}
/**
* @Route("/customer/{userID}/membership/dic/{dicID}/update", name="membership_dic_update")
*/
public function dicUpdate(Request $request, $userID, $dicID): Response
{
$userCurrent = $this->get('security.token_storage')->getToken()->getUser();
$customer = $this->em
->getRepository(User::class)
->findOneBy(['id' => $userID]);
if(!$customer){
$this->addFlash('danger', 'Le client n\'existe pas.');
return $this->redirectToRoute('customer_list');
}
if (!$customer->getSeller()) {
$this->addFlash('danger', 'Cette page n\'existe pas');
return $this->redirectToRoute('customer_list');
}
if ($customer->getSeller()->getId() != $userCurrent->getId()) {
$this->addFlash('danger', 'Vous ne pouvez pas accéder à cette page');
return $this->redirectToRoute('customer_list');
}
//If no membership
$membershipCurrent = $this->utils->getMembershipByCustomer($customer);
if($dicID == "new-dic"){
$typeForm = "Ajouter";
$dic = new Dic;
}
else{
$dic = $this->em
->getRepository(Dic::class)
->findOneBy(['id' => $dicID]);
if(!$dic){
$this->addFlash('danger', 'Ce document n\'existe pas');
return $this->redirectToRoute('customer_view', ["userID" => $customer->getId()]);
}
if(!$dic->getMembership()){
$this->addFlash('danger', 'Ce client n\'a pas d\'adhésion en cours');
return $this->redirectToRoute('customer_view', ["userID" => $customer->getId()]);
}
if($membershipCurrent->getUser()->getId() != $dic->getMembership()->getUser()->getId()){
$this->addFlash('danger', 'Ce document ne correspond pas au bon client');
return $this->redirectToRoute('customer_view', ["userID" => $customer->getId()]);
}
$typeForm = "Modifier";
}
if ( $typeForm == 'Ajouter' ) {
$form = $this->createForm(DicType::class, $dic, Array("validation_groups" => "update"));
} else {
$form = $this->createForm(DicType::class, $dic, Array("validation_groups" => "update"));
}
$form->handleRequest($request);
if($form->isSubmitted() && $form->isValid()) {
if($dic->getDateDeNaissance()){
$dateDeNaissance = str_replace("/", "-", $dic->getDateDeNaissance());
$dic->setDateDeNaissance(new \DateTime(date("Y-m-d", strtotime($dateDeNaissance))));
} else{
$dic->setDateDeNaissance(null);
}
if($dic->getNePasRepondreACeQuestionnaire() == true){
$this->em->remove($dic);
$dic = new Dic;
$dic->setNePasRepondreACeQuestionnaire(true);
}
$dic->setStatus(null);
$dic->setCodeConseiller($customer->getSeller()->getCodeConseiller());
$dic->setNomConseiller($customer->getSeller()->getFirstName()." ".$customer->getSeller()->getLastName());
$dic->setTelConseiller($customer->getSeller()->getPhone());
$dic->setNumeroSiren($customer->getSeller()->getNumeroSiren());
$dic->setAdherentDistributeur($customer->getAdherentDistributeur());
$dic->setSex($customer->getSex());
$dic->setNom($customer->getLastName());
$dic->setPrenom($customer->getFirstName());
$dic->setDateDeNaissance($customer->getDateDeNaissance());
$dic->setAdresseFiscale($customer->getNumeroDeVoie());
$dic->setAdresseFiscaleCodePostal($customer->getCodePostal());
$dic->setAdresseFiscaleVille($customer->getVille());
$dic->setAdresseFiscalePays($customer->getPays());
$membershipCurrent->setDic($dic);
$membershipCurrent->setStatus("DRAFT");
$this->em->persist($dic);
$this->em->persist($membershipCurrent);
$this->em->flush();
$andContinue = false;
if($form->get('saveAndContinue')->isClicked()){
$andContinue = true;
}
if($andContinue){
$dic->setStatus("VALID");
$membershipCurrent->setValidatedDicStatus(null);
$membershipCurrent->setValidatedbaStatus(null);
$membershipCurrent->setValidatedSepaStatus(null);
$membershipCurrent->setValidatedStatusStatus(null);
$membershipCurrent->getBa()->setStatus(null);
$membershipCurrent->getBa()->setSepaStatus(null);
$membershipCurrent->setValidatedFolderBySeller(null);
$this->em->persist($membershipCurrent);
$this->em->persist($dic);
$this->em->flush();
$this->addFlash('success', "Le document d’information et de conseil a été modifié.");
return $this->redirectToRoute('membership_dic_view', ["userID" => $membershipCurrent->getUser()->getId() , "dicID" => $dic->getId()]);
}
else{
if($request->get('dic')['validDocument'] == "true"){
$dic->setStatus("VALID");
$membershipCurrent->setValidatedFolderBySeller(null);
$this->em->persist($membershipCurrent);
$this->em->persist($dic);
$this->em->flush();
}
else{
$membershipCurrent->getDic()->setStatus(null);
$membershipCurrent->getBa()->setStatus(null);
$membershipCurrent->getBa()->setSepaStatus(null);
$membershipCurrent->setValidatedFolderBySeller(null);
$this->em->persist($membershipCurrent);
$this->em->flush();
}
$this->addFlash('success', "Le document d’information et de conseil a été modifié.");
return $this->redirectToRoute('customer_view', ["userID" => $customer->getId()]);
}
}
return $this->render('membership/retraite/dicUpdate.html.twig', [
'menu' => 'customer',
'form' => $form->createView(),
'customer' => $customer,
"seller" => $userCurrent,
'dic' => $dic,
'typeForm' => $typeForm
]);
}
/**
* @Route("/customer/{userID}/membership/dic/{dicID}/view", name="membership_dic_view")
*/
public function dicView(Request $request, $userID, $dicID){
$userCurrent = $this->get('security.token_storage')->getToken()->getUser();
$customer = $this->em
->getRepository(User::class)
->find($userID);
if(!$customer){
$this->addFlash('danger', 'Le client n\'existe pas.');
return $this->redirectToRoute('customer_list');
}
if (!$customer->getSeller()) {
$this->addFlash('danger', 'Cette page n\'existe pas');
return $this->redirectToRoute('customer_list');
}
if ($customer->getSeller()->getId() != $userCurrent->getId()) {
$this->addFlash('danger', 'Vous ne pouvez pas accéder à cette page');
return $this->redirectToRoute('customer_list');
}
//If no membership
$membershipCurrent = $this->utils->getMembershipByCustomer($customer);
$dic = $this->em
->getRepository(Dic::class)
->findOneBy(['id' => $dicID]);
if(!$dic){
$this->addFlash('danger', 'Ce document n\'existe pas');
return $this->redirectToRoute('customer_list');
}
if(!$dic->getMembership()){
$this->addFlash('danger', 'Ce client n\'a pas d\'adhésion en cours');
return $this->redirectToRoute('customer_list');
}
if($membershipCurrent->getUser()->getId() != $dic->getMembership()->getUser()->getId()){
$this->addFlash('danger', 'Ce document ne correspond pas au bon client');
return $this->redirectToRoute('customer_list');
}
//Generate dic file
$dicName = $this->utils->generateDic($customer);
$dic->setUrlPdf($dicName);
$this->em->persist($dic);
$this->em->flush();
return $this->render('membership/dicView.html.twig', [
'menu' => 'customer',
'dic' => $dic,
'membership' => $membershipCurrent,
'customer' => $customer
]);
}
/**
* @Route("/customer/{userID}/membership/fic/{ficID}/update", name="membership_fic_update")
*/
public function ficUpdate(Request $request, $userID, $ficID): Response
{
$userCurrent = $this->get('security.token_storage')->getToken()->getUser();
$customer = $this->em
->getRepository(User::class)
->findOneBy(['id' => $userID]);
if(!$customer){
$this->addFlash('danger', 'Le client n\'existe pas.');
return $this->redirectToRoute('customer_list');
}
$fic = $this->em
->getRepository(Fic::class)
->findOneBy(['id' => $ficID]);
if(!$fic){
$this->addFlash('danger', 'Ce document n\'existe pas');
return $this->redirectToRoute('customer_list');
}
if(!$fic->getMembership()){
$this->addFlash('danger', 'Ce client n\'a pas d\'adhésion en cours');
return $this->redirectToRoute('customer_list');
}
$membershipCurrent = $fic->getMembership();
if($membershipCurrent->getUser()->getId() != $fic->getMembership()->getUser()->getId()){
$this->addFlash('danger', 'Ce document ne correspond pas au bon client');
return $this->redirectToRoute('customer_list');
}
if (!$membershipCurrent->getSeller()) {
$this->addFlash('danger', 'Cette page n\'existe pas');
return $this->redirectToRoute('customer_list');
}
if ($membershipCurrent->getSeller()->getId() != $userCurrent->getId()) {
$this->addFlash('danger', 'Vous ne pouvez pas accéder à cette page');
return $this->redirectToRoute('customer_list');
}
$typeForm = "Modifier";
$productType = $membershipCurrent->getProduct();
if ( $membershipCurrent->getProduct() == 'retraite' ) {
$form = $this->createForm(FicTypeRetraite::class, $fic, Array("validation_groups" => "update"));
}
else if($membershipCurrent->getProduct() == 'epargne') {
$form = $this->createForm(FicTypeEpargne::class, $fic, Array("validation_groups" => "update"));
}
$form->handleRequest($request);
if($form->isSubmitted() && $form->isValid()) {
$useLegal1 = false;
if($fic->getDateDeNaissance()){
$dateDeNaissance = str_replace("/", "-", $fic->getDateDeNaissance());
$fic->setDateDeNaissance(new \DateTime(date("Y-m-d", strtotime($dateDeNaissance))));
if($this->isMineur($fic->getDateDeNaissance()->format("d/m/Y"))){
$useLegal1 = true;
}
} else{
$fic->setDateDeNaissance(null);
}
if($fic->getRepLegal1DateDeNaissance()){
$dateDeNaissanceRepLeg1 = str_replace("/", "-", $fic->getRepLegal1DateDeNaissance());
$fic->setRepLegal1DateDeNaissance(new \DateTime(date("Y-m-d", strtotime($dateDeNaissanceRepLeg1))));
} else{
$fic->setRepLegal1DateDeNaissance(null);
}
if($fic->getRepLegal2DateDeNaissance()){
$dateDeNaissanceRepLeg2 = str_replace("/", "-", $fic->getRepLegal2DateDeNaissance());
$fic->setRepLegal2DateDeNaissance(new \DateTime(date("Y-m-d", strtotime($dateDeNaissanceRepLeg2))));
} else{
$fic->setRepLegal2DateDeNaissance(null);
}
if($fic->isBeneficiezProtectionJuridique() == "0"){
$useLegal1 = true;
}
if($fic->getGarantieDateSouhaite()){
//$dateSouhaite = str_replace("/", "-", $fic->getGarantieDateSouhaite());
$fic->setGarantieDateSouhaite(new \DateTime("now"));
} else{
$fic->setGarantieDateSouhaite(null);
}
$fic->setStatus(null);
$fic->setSex($customer->getSex());
$fic->setNom($customer->getLastName());
$fic->setPrenom($customer->getFirstName());
$fic->setDateDeNaissance($customer->getDateDeNaissance());
$fic->setAdresseFiscale($customer->getNumeroDeVoie());
$fic->setAdresseFiscaleCodePostal($customer->getCodePostal());
$fic->setAdresseFiscaleVille($customer->getVille());
$fic->setAdresseFiscalePays($customer->getPays());
//Legal 1 and 2
$fic->setRepLegal1Use($useLegal1);
$membershipCurrent->setWithRepresentantLegal1($fic->isRepLegal1Use());
$membershipCurrent->setWithRepresentantLegal2($fic->isRepLegal2Use());
//getDateReconnaisanceNation
if($fic->getDateReconnaisanceNation()){
$dateReconnaisanceNation = str_replace("/", "-", $fic->getDateReconnaisanceNation());
$dateReconnaisanceNation = $dateReconnaisanceNation."-01-01";
$fic->setDateReconnaisanceNation(new \DateTime(date("Y-m-d", strtotime($dateReconnaisanceNation))));
} else{
$fic->setDateReconnaisanceNation(null);
}
//getGarantieDateSouhaite
/*
if($fic->getGarantieDateSouhaite()){
$garantieDateSouhaite = str_replace("/", "-", $fic->getGarantieDateSouhaite());
$fic->setGarantieDateSouhaite(new \DateTime(date("Y-m-d", strtotime($garantieDateSouhaite))));
} else{
$fic->setGarantieDateSouhaite(null);
}
*/
$fic->setJacceptePreconisation(true);
$membershipCurrent->setFic($fic);
$membershipCurrent->setStatus("DRAFT");
$this->em->persist($fic);
$this->em->persist($membershipCurrent);
if($productType == "epargne"){
$ba = $membershipCurrent->getBa();
$ba->setBeneficiezProtectionJuridique($fic->isBeneficiezProtectionJuridique());
$ba->setProtectionJuridique($fic->getProtectionJuridique());
$ba->setProtectionJuridiqueOther($fic->getProtectionJuridiqueOther());
$ba->setProtectionJuridiqueMineur($fic->getProtectionJuridiqueMineur());
//LEGAL 1 ///////////////
$ba->setRepLegal1Use($fic->isRepLegal1Use());
//Sexe
$ba->setRepLegal1Sex($fic->getRepLegal1Sex());
//Name
$ba->setRepLegal1Nom($fic->getRepLegal1Nom());
$ba->setRepLegal1Prenoms($fic->getRepLegal1Prenoms());
//Naissance année
$ba->setRepLegal1DateDeNaissance($fic->getRepLegal1DateDeNaissance());
//Lieu naissance
$ba->setRepLegal1LieuDeNaissance($fic->getRepLegal1LieuDeNaissance());
//Nationalité
$ba->setRepLegal1Nationalite($fic->getRepLegal1Nationalite());
//GreenCard
$ba->setRepLegal1GreenCard($fic->isRepLegal1GreenCard());
//Résidence fiscal FR
$ba->setRepLegal1ResidanceFiscalFrance($fic->isRepLegal1ResidanceFiscalFrance());
//adresse fiscale
$ba->setRepLegal1FiscalAdresse($fic->getRepLegal1FiscalAdresse());
//code postale fiscal
$ba->setRepLegal1FiscalCodePostal($fic->getRepLegal1FiscalCodePostal());
//ville fiscal
$ba->setRepLegal1FiscalVille($fic->getRepLegal1FiscalVille());
//pays fiscal
$ba->setRepLegal1FiscalPays($fic->getRepLegal1FiscalPays());
//adresse postale
$ba->setRepLegal1PostaleAdresse($fic->getRepLegal1PostaleAdresse());
//code postale
$ba->setRepLegal1PostaleCodePostal($fic->getRepLegal1PostaleCodePostal());
//ville
$ba->setRepLegal1PostaleVille($fic->getRepLegal1PostaleVille());
//pays
$ba->setRepLegal1PostalePays($fic->getRepLegal1PostalePays());
//email
$ba->setRepLegal1Email($fic->getRepLegal1Email());
//téléphone
$ba->setRepLegal1TelephonePortablePrefix($fic->getRepLegal1TelephonePortablePrefix());
$ba->setRepLegal1TelephonePortable($fic->getRepLegal1TelephonePortable());
//téléphone fixe
$ba->setRepLegal1TelephonePrefix($fic->getRepLegal1TelephonePrefix());
$ba->setRepLegal1Telephone($fic->getRepLegal1Telephone());
//Agissant en qualite de
$ba->setRepLegal1QualiteDe($fic->getRepLegal1QualiteDe());
//J'accepte 1
$ba->setRepLegal1AcceptRecevoirDocumentGarantieEmail($fic->isRepLegal1AcceptRecevoirDocumentGarantieEmail());
$ba->setRepLegal1AcceptPropositionCommercialEmail($fic->isRepLegal1AcceptPropositionCommercialEmail());
$ba->setRepLegal1AcceptPropositionCommercialTelephone($fic->isRepLegal1AcceptPropositionCommercialTelephone());
//LEGAL 2 ///////////////
$ba->setRepLegal2Use($fic->isRepLegal2Use());
//Sexe
$ba->setRepLegal2Sex($fic->getRepLegal2Sex());
//Name
$ba->setRepLegal2Nom($fic->getRepLegal2Nom());
$ba->setRepLegal2Prenoms($fic->getRepLegal2Prenoms());
//Naissance année
$ba->setRepLegal2DateDeNaissance($fic->getRepLegal2DateDeNaissance());
//Lieu naissance
$ba->setRepLegal2LieuDeNaissance($fic->getRepLegal2LieuDeNaissance());
//Nationalité
$ba->setRepLegal2Nationalite($fic->getRepLegal2Nationalite());
//GreenCard
$ba->setRepLegal2GreenCard($fic->isRepLegal2GreenCard());
//Résidence fiscal FR
$ba->setRepLegal2ResidanceFiscalFrance($fic->isRepLegal2ResidanceFiscalFrance());
//adresse fiscale
$ba->setRepLegal2FiscalAdresse($fic->getRepLegal2FiscalAdresse());
//code postale fiscal
$ba->setRepLegal2FiscalCodePostal($fic->getRepLegal2FiscalCodePostal());
//ville fiscal
$ba->setRepLegal2FiscalVille($fic->getRepLegal2FiscalVille());
//pays fiscal
$ba->setRepLegal2FiscalPays($fic->getRepLegal2FiscalPays());
//adresse postale
$ba->setRepLegal2PostaleAdresse($fic->getRepLegal2PostaleAdresse());
//code postale
$ba->setRepLegal2PostaleCodePostal($fic->getRepLegal2PostaleCodePostal());
//ville
$ba->setRepLegal2PostaleVille($fic->getRepLegal2PostaleVille());
//pays
$ba->setRepLegal2PostalePays($fic->getRepLegal2PostalePays());
//email
$ba->setRepLegal2Email($fic->getRepLegal2Email());
//téléphone
$ba->setRepLegal2TelephonePortablePrefix($fic->getRepLegal2TelephonePortablePrefix());
$ba->setRepLegal2TelephonePortable($fic->getRepLegal2TelephonePortable());
//téléphone fixe
$ba->setRepLegal2TelephonePrefix($fic->getRepLegal2TelephonePrefix());
$ba->setRepLegal2Telephone($fic->getRepLegal2Telephone());
//Agissant en qualite de
$ba->setRepLegal2QualiteDe($fic->getRepLegal2QualiteDe());
//J'accepte 1
$ba->setRepLegal2AcceptRecevoirDocumentGarantieEmail($fic->isRepLegal2AcceptRecevoirDocumentGarantieEmail());
$ba->setRepLegal2AcceptPropositionCommercialEmail($fic->isRepLegal2AcceptPropositionCommercialEmail());
$ba->setRepLegal2AcceptPropositionCommercialTelephone($fic->isRepLegal2AcceptPropositionCommercialTelephone());
}
$this->em->flush();
$andContinue = false;
if($form->get('saveAndContinue')->isClicked()){
$andContinue = true;
}
if($andContinue){
$fic->setStatus("VALID");
$membershipCurrent->setValidatedFicStatus(null);
$membershipCurrent->setValidatedbaStatus(null);
$membershipCurrent->setValidatedSepaStatus(null);
$membershipCurrent->setValidatedStatusStatus(null);
$membershipCurrent->getBa()->setStatus(null);
$membershipCurrent->getBa()->setSepaStatus(null);
$membershipCurrent->setValidatedFolderBySeller(null);
$this->em->persist($membershipCurrent);
$this->em->persist($fic);
$this->em->flush();
$this->addFlash('success', "La fiche d’information et de conseil a été modifiée.");
return $this->redirectToRoute('membership_fic_view', ["userID" => $membershipCurrent->getUser()->getId() , "ficID" => $fic->getId()]);
}
else{
if($request->get('fic')['validDocument'] == "true"){
$fic->setStatus("VALID");
$membershipCurrent->setValidatedFolderBySeller(null);
$this->em->persist($membershipCurrent);
$this->em->persist($fic);
$this->em->flush();
}
else{
$membershipCurrent->getFic()->setStatus(null);
$membershipCurrent->getBa()->setStatus(null);
$membershipCurrent->getBa()->setSepaStatus(null);
$membershipCurrent->setValidatedFolderBySeller(null);
$this->em->persist($membershipCurrent);
$this->em->flush();
}
$this->addFlash('success', "La fiche d’information et de conseil a été modifiée.");
return $this->redirectToRoute('membership_view', ["userID" => $customer->getId(), "membershipID" => $membershipCurrent->getId()]);
}
}
return $this->render('membership/'.$membershipCurrent->getProduct().'/ficUpdate.html.twig', [
'menu' => 'customer',
'form' => $form->createView(),
'customer' => $customer,
"seller" => $userCurrent,
'fic' => $fic,
'membership' => $membershipCurrent,
'typeForm' => $typeForm
]);
}
/**
* @Route("/customer/{userID}/membership/fic/{ficID}/view", name="membership_fic_view")
*/
public function ficView(Request $request, $userID, $ficID){
$userCurrent = $this->get('security.token_storage')->getToken()->getUser();
$customer = $this->em
->getRepository(User::class)
->findOneBy(['id' => $userID]);
if(!$customer){
$this->addFlash('danger', 'Le client n\'existe pas.');
return $this->redirectToRoute('customer_list');
}
$fic = $this->em
->getRepository(Fic::class)
->findOneBy(['id' => $ficID]);
if(!$fic){
$this->addFlash('danger', 'Ce document n\'existe pas');
return $this->redirectToRoute('customer_list');
}
if(!$fic->getMembership()){
$this->addFlash('danger', 'Ce client n\'a pas d\'adhésion en cours');
return $this->redirectToRoute('customer_list');
}
$membershipCurrent = $fic->getMembership();
if($membershipCurrent->getUser()->getId() != $fic->getMembership()->getUser()->getId()){
$this->addFlash('danger', 'Ce document ne correspond pas au bon client');
return $this->redirectToRoute('customer_list');
}
if (!$membershipCurrent->getSeller()) {
$this->addFlash('danger', 'Cette page n\'existe pas');
return $this->redirectToRoute('customer_list');
}
if ($membershipCurrent->getSeller()->getId() != $userCurrent->getId()) {
$this->addFlash('danger', 'Vous ne pouvez pas accéder à cette page');
return $this->redirectToRoute('customer_list');
}
//Generate fic file
$ficName = $this->utils->generateFic($customer, $fic);
$fic->setUrlPdf($ficName);
$this->em->persist($fic);
$this->em->flush();
return $this->render('membership/ficView.html.twig', [
'menu' => 'customer',
'fic' => $fic,
'membership' => $membershipCurrent,
'customer' => $customer
]);
}
/**
* @Route("/customer/{userID}/membership/fic/{ficID}/test", name="membership_fic_test")
*/
public function ficTest(Request $request, $userID, $ficID){
$userCurrent = $this->get('security.token_storage')->getToken()->getUser();
$customer = $this->em
->getRepository(User::class)
->find($userID);
if(!$customer){
$this->addFlash('danger', 'Le client n\'existe pas.');
return $this->redirectToRoute('customer_list');
}
if (!$customer->getSeller() && !$customer->isIsAutoSignup()) {
$this->addFlash('danger', 'Cette page n\'existe pas');
return $this->redirectToRoute('customer_list');
}
if (!$customer->isIsAutoSignup() && $customer->getSeller()->getId() != $userCurrent->getId()) {
$this->addFlash('danger', 'Vous ne pouvez pas accéder à cette page');
return $this->redirectToRoute('customer_list');
}
//If no membership
$membershipCurrent = $this->utils->getMembershipByCustomer($customer);
$fic = $this->em
->getRepository(Fic::class)
->findOneBy(['id' => $ficID]);
return $this->render('membership/pdf/ficView.html.twig', [
'menu' => 'customer',
'fic' => $fic,
'membership' => $membershipCurrent,
'customer' => $customer
]);
}
/**
* @Route("/customer/{userID}/membership/ba/{baID}/update", name="membership_ba_update")
*/
public function baUpdate(Request $request, $userID, $baID): Response
{
$userCurrent = $this->get('security.token_storage')->getToken()->getUser();
$customer = $this->em
->getRepository(User::class)
->findOneBy(['id' => $userID]);
if(!$customer){
$this->addFlash('danger', 'Le client n\'existe pas.');
return $this->redirectToRoute('customer_list');
}
$ba = $this->em
->getRepository(Ba::class)
->findOneBy(['id' => $baID]);
if(!$ba){
$this->addFlash('danger', 'Ce document n\'existe pas');
return $this->redirectToRoute('customer_list');
}
if(!$ba->getMembership()){
$this->addFlash('danger', 'Ce client n\'a pas d\'adhésion en cours');
return $this->redirectToRoute('customer_list');
}
$membershipCurrent = $ba->getMembership();
$productType = $membershipCurrent->getProduct();
if($membershipCurrent->getUser()->getId() != $ba->getMembership()->getUser()->getId()){
$this->addFlash('danger', 'Ce document ne correspond pas au bon client');
return $this->redirectToRoute('customer_list');
}
if (!$membershipCurrent->getSeller()) {
$this->addFlash('danger', 'Cette page n\'existe pas');
return $this->redirectToRoute('customer_list');
}
if ($membershipCurrent->getSeller()->getId() != $userCurrent->getId()) {
$this->addFlash('danger', 'Vous ne pouvez pas accéder à cette page');
return $this->redirectToRoute('customer_list');
}
$typeForm = "Modifier";
//OTHER CONTRACTS FORM
$originalOtherContracts = new ArrayCollection();
// Create an ArrayCollection of the current Tag objects in the database
foreach ($ba->getOtherContracts() as $otherContract) {
$originalOtherContracts->add($otherContract);
}
//BENEFICIAIRES FORM
$originalBeneficiaires = new ArrayCollection();
// Create an ArrayCollection of the current Tag objects in the database
foreach ($ba->getBeneficiaires() as $beneficiaire) {
$originalBeneficiaires->add($beneficiaire);
}
// Create form
$typeProductForm = "ba_type_retraite";
if ( $membershipCurrent->getProduct() == 'retraite' ) {
$form = $this->createForm(BaTypeRetraite::class, $ba, Array("validation_groups" => "update"));
$typeProductForm = "ba_type_retraite";
}
else if($membershipCurrent->getProduct() == 'epargne') {
$form = $this->createForm(BaTypeEpargne::class, $ba, Array("validation_groups" => "update"));
$typeProductForm = "ba_type_epargne";
}
// Send data in form
$form->handleRequest($request);
if($form->isSubmitted() && $form->isValid()) {
//getDateDeNaissance
if($ba->getDateDeNaissance()){
$dateDeNaissance = str_replace("/", "-", $ba->getDateDeNaissance());
$ba->setDateDeNaissance(new \DateTime(date("Y-m-d", strtotime($dateDeNaissance))));
} else{
$ba->setDateDeNaissance(null);
}
if($ba->getRepLegal1DateDeNaissance()){
$dateDeNaissanceRepLeg1 = str_replace("/", "-", $ba->getRepLegal1DateDeNaissance());
$ba->setRepLegal1DateDeNaissance(new \DateTime(date("Y-m-d", strtotime($dateDeNaissanceRepLeg1))));
} else{
$ba->setRepLegal1DateDeNaissance(null);
}
if($ba->getRepLegal2DateDeNaissance()){
$dateDeNaissanceRepLeg2 = str_replace("/", "-", $ba->getRepLegal2DateDeNaissance());
$ba->setRepLegal2DateDeNaissance(new \DateTime(date("Y-m-d", strtotime($dateDeNaissanceRepLeg2))));
} else{
$ba->setRepLegal2DateDeNaissance(null);
}
if($ba->isBeneficiezProtectionJuridique() == "0"){
$useLegal1 = true;
}
//getDateEffetAdhesion
if($productType == "epargne"){
$ba->setDateEffetAdhesion(new \DateTime("now"));
}
else{
if($ba->getDateEffetAdhesion()){
$dateEffetAdhesion = str_replace("/", "-", $ba->getDateEffetAdhesion());
$ba->setDateEffetAdhesion(new \DateTime(date("Y-m-d", strtotime($dateEffetAdhesion))));
} else{
$ba->setDateEffetAdhesion(null);
}
}
//getDateDeLiquidation
if($ba->getDateDeLiquidation()){
$dateDeLiquidation = str_replace("/", "-", $ba->getDateDeLiquidation());
$ba->setDateDeLiquidation(new \DateTime(date("Y-m-d", strtotime($dateDeLiquidation))));
} else{
$ba->setDateDeLiquidation(null);
}
//getDateACompterDu
if($ba->getDateACompterDu()){
if($ba->getVersementProgrammePeriodiciteJourDuMois() == "0"){
$dateStartProgramme = "01";
}
else{
$dateStartProgramme = "10";
}
$dateACompterDu = str_replace("/", "-", $ba->getDateACompterDu());
$dateACompterDu = $dateStartProgramme."-".$dateACompterDu;
$ba->setDateACompterDu(new \DateTime(date("Y-m-d", strtotime($dateACompterDu))));
} else{
$ba->setDateACompterDu(null);
}
//getDateCarteCombattant
if($ba->getDateCarteCombattant()){
$dateCarteCombattant = str_replace("/", "-", $ba->getDateCarteCombattant());
$ba->setDateCarteCombattant(new \DateTime(date("Y-m-d", strtotime($dateCarteCombattant))));
} else{
$ba->setDateCarteCombattant(null);
}
//getDateReconnaisanceNation
if($ba->getDateReconnaisanceNation()){
$dateReconnaisanceNation = str_replace("/", "-", $ba->getDateReconnaisanceNation());
$ba->setDateReconnaisanceNation(new \DateTime(date("Y-m-d", strtotime($dateReconnaisanceNation))));
} else{
$ba->setDateReconnaisanceNation(null);
}
//getDateTranscriptionMention
if($ba->getDateTranscriptionMention()){
$dateTranscriptionMention = str_replace("/", "-", $ba->getDateTranscriptionMention());
$ba->setDateTranscriptionMention(new \DateTime(date("Y-m-d", strtotime($dateTranscriptionMention))));
} else{
$ba->setDateTranscriptionMention(null);
}
//Origine fond
//getFondContratEpargneDate
if($ba->getFondContratEpargneDate()){
$fondContratEpargneDate = str_replace("/", "-", $ba->getFondContratEpargneDate());
$ba->setFondContratEpargneDate(new \DateTime(date("Y-m-d", strtotime($fondContratEpargneDate))));
} else{
$ba->setFondContratEpargneDate(null);
}
//getFondContratPartSocieteDate
if($ba->getFondContratPartSocieteDate()){
$fondContratPartSocieteDate = str_replace("/", "-", $ba->getFondContratPartSocieteDate());
$ba->setFondContratPartSocieteDate(new \DateTime(date("Y-m-d", strtotime($fondContratPartSocieteDate))));
} else{
$ba->setFondContratPartSocieteDate(null);
}
//getFondContratHeritageDate
if($ba->getFondContratHeritageDate()){
$fondContratHeritageDate = str_replace("/", "-", $ba->getFondContratHeritageDate());
$ba->setFondContratHeritageDate(new \DateTime(date("Y-m-d", strtotime($fondContratHeritageDate))));
} else{
$ba->setFondContratHeritageDate(null);
}
//getFondContratHeritageDate
if($ba->getFondContratImmobilierDate()){
$fondContratImmobilierDate = str_replace("/", "-", $ba->getFondContratImmobilierDate());
$ba->setFondContratImmobilierDate(new \DateTime(date("Y-m-d", strtotime($fondContratImmobilierDate))));
} else{
$ba->setFondContratImmobilierDate(null);
}
//getFondContratHeritageDate
if($ba->getFondContratRevenuProDate()){
$fondContratRevenuProDate = str_replace("/", "-", $ba->getFondContratRevenuProDate());
$ba->setFondContratRevenuProDate(new \DateTime(date("Y-m-d", strtotime($fondContratRevenuProDate))));
} else{
$ba->setFondContratRevenuProDate(null);
}
//getFondContratHeritageDate
if($ba->getFondContratAutreDate()){
$fondContratAutreDate = str_replace("/", "-", $ba->getFondContratAutreDate());
$ba->setFondContratAutreDate(new \DateTime(date("Y-m-d", strtotime($fondContratAutreDate))));
} else{
$ba->setFondContratAutreDate(null);
}
if($productType == "retraite"){
if($request->get($typeProductForm)['dateCarteCombattant'] == ""){
$ba->setDateCarteCombattant(null);
}
if($request->get($typeProductForm)['dateReconnaisanceNation'] == ""){
$ba->setDateReconnaisanceNation(null);
}
if($request->get($typeProductForm)['dateTranscriptionMention'] == ""){
$ba->setDateTranscriptionMention(null);
}
}
if($request->get($typeProductForm)['fondContratEpargneDate'] == ""){
$ba->setFondContratEpargneDate(null);
}
if($request->get($typeProductForm)['fondContratPartSocieteDate'] == ""){
$ba->setFondContratPartSocieteDate(null);
}
if($request->get($typeProductForm)['fondContratHeritageDate'] == ""){
$ba->setFondContratHeritageDate(null);
}
if($request->get($typeProductForm)['fondContratImmobilierDate'] == ""){
$ba->setFondContratImmobilierDate(null);
}
if($request->get($typeProductForm)['fondContratRevenuProDate'] == ""){
$ba->setFondContratRevenuProDate(null);
}
if($request->get($typeProductForm)['fondContratAutreDate'] == ""){
$ba->setFondContratAutreDate(null);
}
if($request->get($typeProductForm)['typeBeneficiaires'] == 2){
$ba->setTypeBeneficiairesClauseNotariee(true);
}
else{
$ba->setTypeBeneficiairesClauseNotariee(false);
$ba->setTypeBeneficiairesClauseNotarieeCoordonnees(null);
}
$ba->setStatus(null);
$ba->setSex($customer->getSex());
//accept conditions
$ba->setReconnaisEtreInforme(true);
$ba->setReconnaisAvoirPrisConnaissance(true);
if($productType == "epargne"){
$ba->setPrendsActeEvolutionPerso(true);
}
$ba->setTelPhonePrefix($customer->getPhonePrefix());
$membershipCurrent->setBa($ba);
$membershipCurrent->setStatus("DRAFT");
// remove the relationship between the OtherContract and the BA
foreach ($originalOtherContracts as $otherContract) {
if (false === $ba->getOtherContracts()->contains($otherContract)) {
// To delete the Tag entirely
$this->em->remove($otherContract);
}
}
// remove the relationship between the Beneficiaire and the BA
foreach ($originalBeneficiaires as $beneficiaire) {
if (false === $ba->getBeneficiaires()->contains($beneficiaire)) {
// To delete the Tag entirely
$this->em->remove($beneficiaire);
}
}
//Update date fro the OtherContract
foreach ($ba->getOtherContracts() as $otherContract) {
if($otherContract->getDateAdhesion()){
$dateAdhesion = str_replace("/", "-", $otherContract->getDateAdhesion());
$otherContract->setDateAdhesion(new \DateTime(date("Y-m-d", strtotime($dateAdhesion))));
} else{
$otherContract->setDateAdhesion(null);
}
$this->em->persist($otherContract);
}
//Update date fro the Beneficiaire
foreach ($ba->getBeneficiaires() as $beneficiaire) {
if($beneficiaire->getDateDeNaissance()){
$dateAdhesion = str_replace("/", "-", $beneficiaire->getDateDeNaissance());
$beneficiaire->setDateDeNaissance(new \DateTime(date("Y-m-d", strtotime($dateAdhesion))));
} else{
$beneficiaire->setDateDeNaissance(null);
}
$this->em->persist($beneficiaire);
}
if($membershipCurrent->getPlatformVersion() == 1){
//V1 DIC
if($membershipCurrent->getDic()->getSouscrireRetraiteMutualistePourConstituer() != null){
$ba->setOptionCapital($membershipCurrent->getDic()->getSouscrireRetraiteMutualistePourConstituer());
}
} else{
//V2 FIC
if($membershipCurrent->getFic()->getSouscrireRetraiteMutualistePourConstituer() != null){
$ba->setOptionCapital($membershipCurrent->getFic()->getSouscrireRetraiteMutualistePourConstituer());
}
}
$ba->setAdherentDistributeur($customer->getAdherentDistributeur());
if($productType == "epargne"){
//Legal 1 and 2
$ba->setRepLegal1Use($membershipCurrent->getFic()->isRepLegal1Use());
$membershipCurrent->setWithRepresentantLegal1($ba->isRepLegal1Use());
$membershipCurrent->setWithRepresentantLegal2($ba->isRepLegal2Use());
}
$this->em->persist($ba);
$this->em->persist($membershipCurrent);
$this->em->flush();
$andContinue = false;
if($form->get('saveAndContinue')->isClicked()){
$andContinue = true;
}
if($andContinue){
$ba->setStatus("VALID");
$membershipCurrent->setValidatedDicStatus(null);
$membershipCurrent->setValidatedbaStatus(null);
$membershipCurrent->setValidatedSepaStatus(null);
$membershipCurrent->setValidatedStatusStatus(null);
$membershipCurrent->getBa()->setSepaStatus(null);
$membershipCurrent->setValidatedFolderBySeller(null);
$this->em->persist($membershipCurrent);
$this->em->persist($ba);
$this->em->flush();
$this->addFlash('success', "La demande d'adhésion a été modifié.");
//return $this->redirectToRoute('membership_ba_update', ["userID" => $membershipCurrent->getUser()->getId() , "baID" => $membershipCurrent->getBa()->getId()]);
return $this->redirectToRoute('membership_ba_view', ["userID" => $membershipCurrent->getUser()->getId() , "baID" => $ba->getId()]);
}
else{
if($request->get('ba')['validDocument'] == "true"){
$ba->setStatus("VALID");
$membershipCurrent->setValidatedFolderBySeller(null);
//Generate ba file
$baName = $this->utils->generateBa($customer);
$ba->setUrlPdf($baName);
$this->em->persist($membershipCurrent);
$this->em->persist($ba);
$this->em->flush();
}
else{
$membershipCurrent->getBa()->setStatus(null);
$membershipCurrent->getBa()->setSepaStatus(null);
$membershipCurrent->setValidatedFolderBySeller(null);
$this->em->persist($membershipCurrent);
$this->em->flush();
}
$this->addFlash('success', "La demande d'adhésion a été modifié.");
return $this->redirectToRoute('membership_view', ["userID" => $customer->getId(), "membershipID" => $membershipCurrent->getId()]);
}
return $this->redirectToRoute('membership_view', ["userID" => $customer->getId(), "membershipID" => $membershipCurrent->getId()]);
}
return $this->render('membership/'.$productType.'/baUpdate.html.twig', [
'menu' => 'customer',
'form' => $form->createView(),
'customer' => $customer,
"seller" => $userCurrent,
'ba' => $ba,
'membership' => $membershipCurrent,
'typeForm' => $typeForm
]);
}
/**
* @Route("/customer/{userID}/membership/ba/{baID}/view", name="membership_ba_view")
*/
public function baView(Request $request, $userID, $baID){
$userCurrent = $this->get('security.token_storage')->getToken()->getUser();
$customer = $this->em
->getRepository(User::class)
->findOneBy(['id' => $userID]);
if(!$customer){
$this->addFlash('danger', 'Le client n\'existe pas.');
return $this->redirectToRoute('customer_list');
}
$ba = $this->em
->getRepository(Ba::class)
->findOneBy(['id' => $baID]);
if(!$ba){
$this->addFlash('danger', 'Ce document n\'existe pas');
return $this->redirectToRoute('customer_list');
}
if(!$ba->getMembership()){
$this->addFlash('danger', 'Ce client n\'a pas d\'adhésion en cours');
return $this->redirectToRoute('customer_list');
}
$membershipCurrent = $ba->getMembership();
if($membershipCurrent->getUser()->getId() != $ba->getMembership()->getUser()->getId()){
$this->addFlash('danger', 'Ce document ne correspond pas au bon client');
return $this->redirectToRoute('customer_list');
}
if (!$membershipCurrent->getSeller()) {
$this->addFlash('danger', 'Cette page n\'existe pas');
return $this->redirectToRoute('customer_list');
}
if ($membershipCurrent->getSeller()->getId() != $userCurrent->getId()) {
$this->addFlash('danger', 'Vous ne pouvez pas accéder à cette page');
return $this->redirectToRoute('customer_list');
}
//Generate ba file
$baName = $this->utils->generateBa($customer, $ba);
$ba->setUrlPdf($baName);
$this->em->persist($ba);
$this->em->flush();
return $this->render('membership/baView.html.twig', [
'menu' => 'customer',
'ba' => $ba,
'membership' => $membershipCurrent,
'customer' => $customer
]);
}
/**
* @Route("/customer/{userID}/membership/ba/{baID}/test", name="membership_ba_test")
*/
public function baTest(Request $request, $userID, $baID){
$userCurrent = $this->get('security.token_storage')->getToken()->getUser();
$customer = $this->em
->getRepository(User::class)
->find($userID);
if(!$customer){
$this->addFlash('danger', 'Le client n\'existe pas.');
return $this->redirectToRoute('customer_list');
}
if (!$customer->getSeller()) {
$this->addFlash('danger', 'Cette page n\'existe pas');
return $this->redirectToRoute('customer_list');
}
if ($customer->getSeller()->getId() != $userCurrent->getId()) {
$this->addFlash('danger', 'Vous ne pouvez pas accéder à cette page');
return $this->redirectToRoute('customer_list');
}
//If no membership
$membershipCurrent = $this->utils->getMembershipByCustomer($customer);
$ba = $this->em
->getRepository(Ba::class)
->findOneBy(['id' => $baID]);
return $this->render('membership/pdf/baView.html.twig', [
'menu' => 'customer',
'ba' => $ba,
'membership' => $membershipCurrent,
'customer' => $customer
]);
}
/**
* @Route("/customer/{userID}/membership/sepa/{baID}/update", name="membership_sepa_update")
*/
public function sepaUpdate(Request $request, $userID, $baID): Response
{
$userCurrent = $this->get('security.token_storage')->getToken()->getUser();
if($userID == "me"){
$userID = $userCurrent->getId();
}
$customer = $this->em
->getRepository(User::class)
->findOneBy(['id' => $userID]);
if(!$customer){
$this->addFlash('danger', 'Le client n\'existe pas.');
return $this->redirectToRoute('customer_list');
}
$ba = $this->em
->getRepository(Ba::class)
->findOneBy(['id' => $baID]);
if(!$ba){
$this->addFlash('danger', 'Ce document n\'existe pas');
return $this->redirectToRoute('customer_list');
}
if(!$ba->getMembership()){
$this->addFlash('danger', 'Ce client n\'a pas d\'adhésion en cours');
return $this->redirectToRoute('customer_list');
}
$membershipCurrent = $ba->getMembership();
if($membershipCurrent->getUser()->getId() != $ba->getMembership()->getUser()->getId()){
$this->addFlash('danger', 'Ce document ne correspond pas au bon client');
return $this->redirectToRoute('customer_list');
}
if (!$membershipCurrent->getSeller()) {
$this->addFlash('danger', 'Cette page n\'existe pas');
return $this->redirectToRoute('customer_list');
}
if($this->roleService->isGranted('ROLE_SELLER', $userCurrent)){
if ($membershipCurrent->getSeller()->getId() != $userCurrent->getId()) {
$this->addFlash('danger', 'Vous ne pouvez pas accéder à cette page');
return $this->redirectToRoute('customer_list');
}
}
$typeForm = "Modifier";
// Create form
if ( $typeForm == 'Ajouter' ) {
$form = $this->createForm(SepaType::class, $ba, Array("validation_groups" => "update"));
} else {
$form = $this->createForm(SepaType::class, $ba, Array("validation_groups" => "update"));
}
// Send data in form
$form->handleRequest($request);
if($form->isSubmitted() && $form->isValid()) {
$ba->setSepaStatus(null);
$iban = $ba->getSepaCodeIban();
$iban = str_replace(" ", "", $iban);
$bic = $ba->getSepaCodeBic();
$bic = str_replace(" ", "", $bic);
$ba->setSepaCodeIban($iban);
$ba->setSepaCodeBic($bic);
$membershipCurrent->setBa($ba);
//Generate ba file
$sepaName = $this->utils->generateSepa($customer);
$ba->setSepaUrlPdf($sepaName);
$this->em->persist($ba);
$this->em->flush();
$this->em->persist($ba);
$this->em->persist($membershipCurrent);
$this->em->flush();
$andContinue = false;
if($form->get('saveAndContinue')->isClicked()){
$andContinue = true;
}
if($this->roleService->isGranted('ROLE_CUSTOMER', $userCurrent)){
$userID = "me";
}
else{
$userID = $customer->getId();
}
if($andContinue){
//if($this->roleService->isGranted('ROLE_CUSTOMER', $userCurrent)){
$ba->setSepaStatus("VALID");
//}
$membershipCurrent->setValidatedDicStatus(null);
$membershipCurrent->setValidatedbaStatus(null);
$membershipCurrent->setValidatedSepaStatus(null);
$membershipCurrent->setValidatedStatusStatus(null);
if($this->roleService->isGranted('ROLE_SELLER', $userCurrent)){
$membershipCurrent->setValidatedFolderBySeller(null);
}
$this->em->persist($membershipCurrent);
$this->em->persist($ba);
$this->em->flush();
$this->addFlash('success', 'Le sepa a été modifié.');
//return $this->redirectToRoute('membership_ba_update', ["userID" => $membershipCurrent->getUser()->getId() , "baID" => $membershipCurrent->getBa()->getId()]);
//return $this->redirectToRoute('membership_sepa_view', ["userID" => $membershipCurrent->getUser()->getId() , "baID" => $ba->getId()]);
return $this->redirectToRoute('membership_view', ["userID" => $userID, "membershipID" => $membershipCurrent->getId()]);
}
else{
if($request->get('sepa')['validDocument'] == "true"){
if($this->roleService->isGranted('ROLE_SELLER', $userCurrent)){
$membershipCurrent->setValidatedFolderBySeller(null);
}
$this->em->persist($membershipCurrent);
//if($this->roleService->isGranted('ROLE_CUSTOMER', $userCurrent)){
$ba->setSepaStatus("VALID");
//}
$this->em->persist($ba);
$this->em->flush();
}
else{
if($this->roleService->isGranted('ROLE_SELLER', $userCurrent)){
$membershipCurrent->setValidatedFolderBySeller(null);
}
$this->em->persist($membershipCurrent);
$this->em->flush();
}
$this->addFlash('success', 'Le sepa a été modifié.');
return $this->redirectToRoute('membership_view', ["userID" => $userID, "membershipID" => $membershipCurrent->getId()]);
}
return $this->redirectToRoute('membership_view', ["userID" => $userID, "membershipID" => $membershipCurrent->getId()]);
}
return $this->render('membership/sepaUpdate.html.twig', [
'menu' => 'customer',
'form' => $form->createView(),
'customer' => $customer,
"seller" => $userCurrent,
'membership' => $membershipCurrent,
'ba' => $ba,
'typeForm' => $typeForm
]);
}
/**
* @Route("/customer/{userID}/membership/sepa/{baID}/view", name="membership_sepa_view")
*/
public function sepaView(Request $request, $userID, $baID){
$userCurrent = $this->get('security.token_storage')->getToken()->getUser();
$customer = $this->em
->getRepository(User::class)
->findOneBy(['id' => $userID]);
if(!$customer){
$this->addFlash('danger', 'Le client n\'existe pas.');
return $this->redirectToRoute('customer_list');
}
$ba = $this->em
->getRepository(Ba::class)
->findOneBy(['id' => $baID]);
if(!$ba){
$this->addFlash('danger', 'Ce document n\'existe pas');
return $this->redirectToRoute('customer_list');
}
if(!$ba->getMembership()){
$this->addFlash('danger', 'Ce client n\'a pas d\'adhésion en cours');
return $this->redirectToRoute('customer_list');
}
$membershipCurrent = $ba->getMembership();
if($membershipCurrent->getUser()->getId() != $ba->getMembership()->getUser()->getId()){
$this->addFlash('danger', 'Ce document ne correspond pas au bon client');
return $this->redirectToRoute('customer_list');
}
if (!$membershipCurrent->getSeller()) {
$this->addFlash('danger', 'Cette page n\'existe pas');
return $this->redirectToRoute('customer_list');
}
if ($membershipCurrent->getSeller()->getId() != $userCurrent->getId()) {
$this->addFlash('danger', 'Vous ne pouvez pas accéder à cette page');
return $this->redirectToRoute('customer_list');
}
//Generate sepa file
$sepaName = $this->utils->generateSepa($customer, $ba);
$ba->setSepaUrlPdf($sepaName);
$this->em->persist($ba);
$this->em->flush();
return $this->render('membership/sepaView.html.twig', [
'menu' => 'customer',
'sepa' => $ba,
'membership' => $membershipCurrent,
'customer' => $customer
]);
}
/**
* @Route("/customer/{userID}/membership/files/{membershipID}/update", name="membership_files_update")
*/
public function filesUpdate(Request $request, $userID, $membershipID): Response
{
$userCurrent = $this->get('security.token_storage')->getToken()->getUser();
if($userID == "me"){
$userID = $userCurrent->getId();
}
$customer = $this->em
->getRepository(User::class)
->findOneBy(['id' => $userID]);
if(!$customer){
//$this->addFlash('danger', 'Le client n\'existe pas.');
return new JsonResponse(array("status" => false, "message" => 'Le client n\'existe pas.'));
}
$membershipCurrent = $this->em
->getRepository(Membership::class)
->findOneBy(['id' => $membershipID]);
if(!$membershipCurrent){
//$this->addFlash('danger', 'Le client n\'existe pas.');
return new JsonResponse(array("status" => false, "message" => 'Cette adhésion n\'existe pas.'));
}
if($this->roleService->isGranted('ROLE_SELLER', $userCurrent)){
if (!$membershipCurrent->getSeller()) {
return new JsonResponse(array("status" => false, "message" => 'Cette page n\'existe pas'));
}
if ($membershipCurrent->getSeller()->getId() != $userCurrent->getId()) {
return new JsonResponse(array("status" => false, "message" => 'Vous ne pouvez pas accéder à cette page'));
}
}
else if($this->roleService->isGranted('ROLE_CUSTOMER', $userCurrent)){
if ($customer->getId() != $userCurrent->getId()) {
return new JsonResponse(array("status" => false, "message" => 'Vous ne pouvez pas accéder à cette page'));
}
}
else{
return new JsonResponse(array("status" => false, "message" => 'Vous ne pouvez pas accéder à cette page'));
}
$file = $_FILES['file'];
$type = $request->get("type");
if($file) {
$name = $type;
if($type == "idIdentityRecto"){
$name = "ci_recto";
}
else if($type == "idIdentityVerso"){
$name = "ci_verso";
}
else if($type == "idPassportRecto"){
$name = "pass";
}
else if($type == "idPassportVerso"){
$name = "pass_verso";
}
else if($type == "idTitreSejourRecto"){
$name = "tds_recto";
}
else if($type == "idTitreSejourVerso"){
$name = "tds_verso";
}
else if($type == "rib"){
$name = "rib";
}
else if($type == "carteCombattantRecto"){
$name = "cc_recto";
}
else if($type == "carteCombattantVerso"){
$name = "cc_verso";
}
else if($type == "titreReconnaissanceRecto"){
$name = "rn_recto";
}
else if($type == "titreReconnaissanceVerso"){
$name = "rn_verso";
}
else if($type == "reportMentionRecto"){
$name = "mpf";
}
else if($type == "justificatifFondsGainJeux"){
$name = "justificatif_gains_aux_jeux";
}
else if($type == "idJustificatifAutreFacultatif"){
$name = "justificatif_autre_facultatif";
}
else if($type == "other-file"){
$numberOtherFile = (count($membershipCurrent->getOtherFile()) + 1);
$name = "pièce-jointe-".$numberOtherFile;
}
else if($type == "other-file-origine-fond"){
$numberOtherFile = (count($membershipCurrent->getOtherFileOrigineFond()) + 1);
$name = "origine-fond-".$numberOtherFile;
}
if($type == "dic-custom"){
$name = $membershipCurrent->getNumberMembershipFolder().'_'.strtoupper($membershipCurrent->getUser()->getLastName()).'_'.strtoupper($membershipCurrent->getUser()->getFirstName()).'_'.'CERTIFICAT';
}
else{
$name = $membershipCurrent->getNumberMembershipFolder()."_".$membershipCurrent->getUser()->getLastName()."_".$membershipCurrent->getUser()->getFirstName()."_".$name;
}
$fileArray = $this->fileUploader->upload($file, $membershipCurrent, $name);
$fileSend = new FileSend();
$fileSend->setFilename($fileArray['fileName']);
$fileSend->setExtension($fileArray['extension']);
$fileSend->setType($type);
$fileSend->setWeigth($fileArray['weight']);
$fileSend->setMembership($membershipCurrent);
$this->em->persist($fileSend);
if($type == "dic-custom"){
if($membershipCurrent->getPlatformVersion() == 1){
//Active Dic
$dic = $membershipCurrent->getDic();
$dic->setStatus("VALID");
$this->em->persist($dic);
}
else{
//Active Dic
$fic = $membershipCurrent->getFic();
$fic->setStatus("VALID");
$this->em->persist($fic);
}
$membershipCurrent->setValidatedDicStatus(null);
$membershipCurrent->setValidatedbaStatus(null);
$membershipCurrent->setValidatedSepaStatus(null);
$membershipCurrent->setValidatedStatusStatus(null);
$membershipCurrent->getBa()->setStatus(null);
$membershipCurrent->getBa()->setSepaStatus(null);
$membershipCurrent->setValidatedFolderBySeller(null);
$this->em->persist($membershipCurrent);
}
$this->em->flush();
if($this->roleService->isGranted('ROLE_CUSTOMER', $userCurrent)){
$userIdTemp = 'me';
}
else{
$userIdTemp = $customer->getId();
}
$urlDelete = $this->generateUrl('membership_files_delete',
array(
'userID' => $userIdTemp,
'fileID' => $fileSend->getId()
),
UrlGeneratorInterface::ABSOLUTE_URL);
$data = array(
"status" => true,
"file" => array(
"fileName" => $fileSend->getFilename(),
"urlDelete" => $urlDelete,
"urlView" => "/files/".$customer->getId()."/".$fileSend->getFilename(),
"extension" => $fileSend->getExtension(),
"info" => $this->utils->formatSizeUnits($fileSend->getWeigth()),
"type" => $fileSend->getType(),
)
);
}
else{
$data = array(
"status" => false
);
}
return new JsonResponse($data);
}
/**
* @Route("/customer/{userID}/membership/files/{fileID}/delete", name="membership_files_delete")
*/
public function filesDelete(Request $request, $userID, $fileID): Response
{
$userCurrent = $this->get('security.token_storage')->getToken()->getUser();
if($userID == "me"){
$userID = $userCurrent->getId();
}
$customer = $this->em
->getRepository(User::class)
->findOneBy(['id' => $userID]);
if(!$customer){
//$this->addFlash('danger', 'Le client n\'existe pas.');
return new JsonResponse(array("status" => false, "message" => 'Le client n\'existe pas.'));
}
$file = $this->em
->getRepository(FileSend::class)
->findOneBy(['id' => $fileID]);
if(!$file){
//$this->addFlash('danger', 'Le client n\'existe pas.');
return new JsonResponse(array("status" => false, "message" => 'Le fichier n\'existe pas.'));
}
$membershipCurrent = $file->getMembership();
if($this->roleService->isGranted('ROLE_SELLER', $userCurrent)){
if (!$membershipCurrent->getSeller()) {
return new JsonResponse(array("status" => false, "message" => 'Cette page n\'existe pas'));
}
if ($membershipCurrent->getSeller()->getId() != $userCurrent->getId()) {
return new JsonResponse(array("status" => false, "message" => 'Vous ne pouvez pas accéder à cette page'));
}
}
else if($this->roleService->isGranted('ROLE_CUSTOMER', $userCurrent)){
if ($customer->getId() != $userCurrent->getId()) {
return new JsonResponse(array("status" => false, "message" => 'Vous ne pouvez pas accéder à cette page'));
}
}
else{
return new JsonResponse(array("status" => false, "message" => 'Vous ne pouvez pas accéder à cette page'));
}
$type = "";
if($file){
$type = $file->getType();
if($type == "dic-custom"){
//Active Dic
$dic = $membershipCurrent->getDic();
$dic->setStatus(null);
$membershipCurrent->setValidatedDicStatus(null);
$membershipCurrent->setValidatedbaStatus(null);
$membershipCurrent->setValidatedSepaStatus(null);
$membershipCurrent->setValidatedStatusStatus(null);
$membershipCurrent->getBa()->setStatus(null);
$membershipCurrent->getBa()->setSepaStatus(null);
$membershipCurrent->setValidatedFolderBySeller(null);
$this->em->persist($dic);
$this->em->persist($membershipCurrent);
}
$this->em->remove($file);
$this->em->flush();
}
$data = array(
"status" => true,
"file" => array(
"type" => $type
)
);
return new JsonResponse($data);
}
/**
* @Route("/customer/{userID}/membership/{membershipID}/files/{fileID}/view/{fileName}", name="membership_files_view")
*/
public function filesView(Request $request, $userID, $membershipID, $fileID, $fileName = null): Response
{
$userCurrent = $this->get('security.token_storage')->getToken()->getUser();
if($userID == "me"){
$userIDTemp = $userCurrent->getId();
}
else{
$userIDTemp = $userID;
}
$customer = $this->em
->getRepository(User::class)
->findOneBy(['id' => $userIDTemp]);
if(!$customer){
$this->addFlash('danger', 'Le client n\'existe pas.');
return $this->redirectToRoute('customer_list');
}
$membershipCurrent = $this->em
->getRepository(Membership::class)
->findOneBy(['id' => $membershipID]);
if(!$membershipCurrent){
//$this->addFlash('danger', 'Le client n\'existe pas.');
return new JsonResponse(array("status" => false, "message" => 'Le fichier n\'existe pas.'));
}
$productType = $membershipCurrent->getProduct();
if($this->roleService->isGranted('ROLE_SELLER', $userCurrent)){
if (!$membershipCurrent->getSeller()) {
$this->addFlash('danger', 'Cette page n\'existe pas');
return $this->redirectToRoute('customer_list');
}
if ($membershipCurrent->getSeller()->getId() != $userCurrent->getId()) {
$this->addFlash('danger', 'Vous ne pouvez pas accéder à cette page');
return $this->redirectToRoute('customer_list');
}
}
else if($this->roleService->isGranted('ROLE_CUSTOMER', $userCurrent)){
if ($customer->getId() != $userCurrent->getId()) {
$this->addFlash('danger', 'Vous ne pouvez pas accéder à cette page');
return $this->redirectToRoute('app_login');
}
}
else{
$this->addFlash('danger', 'Vous ne pouvez pas accéder à cette page');
return $this->redirectToRoute('app_login');
}
if($fileID == "dic-view"){
$urlDic = $this->generateUrl('membership_files_view',
array(
'userID' => $userID,
'fileID' => 'dic'
),
UrlGeneratorInterface::ABSOLUTE_URL);
return new Response("<object type='application/pdf' data='".$urlDic."' width='100%' height='100%'></object>");
}
else if($fileID == "dic"){
header("Content-type: application/pdf");
header('Content-disposition: inline; filename="Document d’information et de conseil.pdf"');
if($membershipCurrent->getDic()->getUrlPdfSign()){
readfile($this->fileUploader->getTargetDirectory()."/".$customer->getId()."/".$membershipCurrent->getDic()->getUrlPdfSign());
}
else{
readfile($this->fileUploader->getTargetDirectory()."/".$customer->getId()."/".$membershipCurrent->getDic()->getUrlPdf());
}
exit();
}
else if($fileID == "fic"){
header("Content-type: application/pdf");
header('Content-disposition: inline; filename="Fiche d’information et de conseil.pdf"');
if($membershipCurrent->getFic()->getUrlPdfSign()){
readfile($this->fileUploader->getTargetDirectory()."/".$customer->getId()."/".$membershipCurrent->getFic()->getUrlPdfSign());
}
else{
readfile($this->fileUploader->getTargetDirectory()."/".$customer->getId()."/".$membershipCurrent->getFic()->getUrlPdf());
}
exit();
}
else if($fileID == "ba-view"){
$urlBa = $this->generateUrl('membership_files_view',
array(
'userID' => $userID,
'fileID' => 'ba'
),
UrlGeneratorInterface::ABSOLUTE_URL);
return new Response("<object type='application/pdf' data='".$urlBa."' width='100%' height='100%'></object>");
}
else if($fileID == "ba"){
header ("Content-type: application/pdf");
header('Content-disposition: inline; filename="Demande d’adhésion.pdf"');
if($membershipCurrent->getBa()->getUrlPdfSign()){
readfile($this->fileUploader->getTargetDirectory()."/".$customer->getId()."/".$membershipCurrent->getBa()->getUrlPdfSign());
}
else{
readfile($this->fileUploader->getTargetDirectory()."/".$customer->getId()."/".$membershipCurrent->getBa()->getUrlPdf());
}
exit();
}
else if($fileID == "sepa-view"){
$urlSepa = $this->generateUrl('membership_files_view',
array(
'userID' => $userID,
'fileID' => 'sepa'
),
UrlGeneratorInterface::ABSOLUTE_URL);
return new Response("<object type='application/pdf' data='".$urlSepa."' width='100%' height='100%'></object>");
}
else if($fileID == "sepa"){
header ("Content-type: application/pdf");
header('Content-disposition: inline; filename="Mandat de prélèvement SEPA.pdf"');
if($membershipCurrent->getBa()->getSepaUrlPdfSign()){
readfile($this->fileUploader->getTargetDirectory()."/".$customer->getId()."/".$membershipCurrent->getBa()->getSepaUrlPdfSign());
}
else{
readfile($this->fileUploader->getTargetDirectory()."/".$customer->getId()."/".$membershipCurrent->getBa()->getSepaUrlPdf());
}
exit();
}
else if($fileID == "status-view"){
$urlStatus = $this->generateUrl('membership_files_view',
array(
'userID' => $userID,
'fileID' => 'status'
),
UrlGeneratorInterface::ABSOLUTE_URL);
return new Response("<object type='application/pdf' data='".$urlStatus."' width='100%' height='100%'></object>");
}
else if($fileID == "status"){
header ("Content-type: application/pdf");
readfile($this->fileUploader->getTargetDirectory()."/../img/Statuts_mer_2022.pdf");
exit();
}
else if($fileID == "reglement"){
header ("Content-type: application/pdf");
readfile($this->fileUploader->getTargetDirectory()."/../default/".$productType."/REGLEMENT.pdf");
exit();
}
else if($fileID == "dicPublic"){
header ("Content-type: application/pdf");
readfile($this->fileUploader->getTargetDirectory()."/../default/".$productType."/DIC.pdf");
exit();
}
else{
if($membershipCurrent->getFileById($fileID)->getExtension() == "pdf"){
header ("Content-type: application/pdf");
}
else{
header ("Content-type: image/".$membershipCurrent->getFileById($fileID)->getExtension());
}
readfile($this->fileUploader->getTargetDirectory()."/".$customer->getId()."/".$membershipCurrent->getFileById($fileID)->getFileName());
exit();
}
}
/**
* @Route("/customer/{userID}/membership/{membershipID}/validate-folder", name="membership_validate_folder")
*/
public function validateFolder(Request $request, $userID, $membershipID){
$userCurrent = $this->get('security.token_storage')->getToken()->getUser();
$customer = $this->em
->getRepository(User::class)
->find($userID);
if ( !$customer ) {
$this->addFlash('danger', 'Cet utilisateur n\'existe pas');
return $this->redirectToRoute('customer_list');
}
// STEP 1 - Controls
$dicControl = false;
$ficControl = false;
$baControl = false;
$filesControle = false;
/* SCRIPT VALIDATION DIC + BA + FILES
******
******
******
******
******
******
******
******
******
******
******
******
*/
$dicControl = true;
$ficControl = true;
$baControl = true;
$filesControle = true;
if((!$dicControl && !$ficControl) || !$baControl || !$filesControle){
$this->addFlash('danger', 'Le dossier n\'a pas pu être validé');
return $this->redirectToRoute('customer_list');
}
//STEP 2 - Create PDF for customer & YouSign
/* ********** CREATE DIC START ********** */
//Generate dic file
//$this->utils->generateDic($customer);
/* ********** CREATE DIC END ********** */
//If no membership
$membershipCurrent = $this->utils->getMembershipByCustomer($customer);
//STEP 3 - Create account and send signin-end mail
if ( $customer->getStatus() == "CREATE" ) {
$this->utils->sendEmailEndSigninCustomer($customer, $membershipCurrent);
$customer->setStatus('SIGNINEND');
$this->em->persist($customer);
$this->addFlash('success', 'Un mail d\'inscription a été envoyé à l\'adresse '.$customer->getEmail());
}
else{
$this->addFlash('warning', 'Cet utilisateur a déjà terminé son inscription, il peut déjà se connecter via l\'adresse '.$customer->getEmail());
}
$membershipCurrent->setStatus("VALIDBYSELLER");
$membershipCurrent->setValidatedFilesBySeller(true);
$membershipCurrent->setValidatedFilesBySellerDate(new \DateTime("now"));
$membershipCurrent->setValidatedFolderBySeller(true);
$membershipCurrent->setValidatedFolderBySellerDate(new \DateTime("now"));
$membershipCurrent->setValidatedDicStatus(null);
$membershipCurrent->setValidatedFicStatus(null);
$membershipCurrent->setValidatedbaStatus(null);
$membershipCurrent->setValidatedSepaStatus(null);
$membershipCurrent->setValidatedStatusStatus(null);
$membershipCurrent->setValidatedReglementStatus(null);
$this->em->persist($membershipCurrent);
$this->em->flush();
$this->addFlash('success', 'Le dossier a bien été validé et envoyé');
return $this->redirectToRoute('customer_list');
}
/**
* @Route("/customer/{userID}/membership/{membershipID}/validate-folder-by-customer/{folder}", name="membership_validate_folder_by_customer")
*/
public function validateFolderByCustomer(Request $request, $userID, $membershipID, $folder = null){
$userCurrent = $this->get('security.token_storage')->getToken()->getUser();
if($userID == "me"){
$userID = $userCurrent->getId();
}
$customer = $this->em
->getRepository(User::class)
->find($userCurrent->getId());
if ( !$customer ) {
$this->addFlash('danger', 'Cet utilisateur n\'existe pas');
return $this->redirectToRoute('customer_list');
}
$membershipCurrent = $this->em
->getRepository(Membership::class)
->find($membershipID);
if ( !$membershipCurrent ) {
$this->addFlash('danger', 'Cette adhésion n\'existe pas');
return $this->redirectToRoute('customer_list');
}
if ( $userCurrent->getId() != $membershipCurrent->getUser()->getId() ) {
$this->addFlash('danger', 'Cette adhésion n\'existe pas');
return $this->redirectToRoute('customer_list');
}
if($folder != null){
if($folder == "dic"){
$membershipCurrent->setValidatedDicStatus("VALID");
$membershipCurrent->setValidatedDicDate(new \DateTime("now"));
$membershipCurrent->setValidatedDicAccept(true);
}
else if($folder == "fic"){
$membershipCurrent->setValidatedFicStatus("VALID");
$membershipCurrent->setValidatedFicDate(new \DateTime("now"));
$membershipCurrent->setValidatedFicAccept(true);
$membershipCurrent->getFic()->setJacceptePreconisation(true);
$membershipCurrent->getFic()->setReconnaisConnaissanceFic(true);
$membershipCurrent->getFic()->setAttesteRecuInformationDetaillee(true);
$membershipCurrent->getFic()->setAttesteRecuDicEtReglement(true);
$membershipCurrent->getFic()->setReconnaisPreconisationsAdaptees(true);
//Update effet date BA
$membershipCurrent->getBa()->setDateEffetAdhesion(new \DateTime("now"));
$this->em->persist($membershipCurrent->getBa());
$this->em->flush();
$baName = $this->utils->generateBa($customer, $membershipCurrent->getBa());
}
else if($folder == "ba"){
$membershipCurrent->setValidatedbaStatus("VALID");
$membershipCurrent->setValidatedbaDate(new \DateTime("now"));
$membershipCurrent->setValidatedbaAccept(true);
$membershipCurrent->setValidatedbaAccept(true);
$membershipCurrent->getBa()->setConnaissanceDesStatuts(true);
$membershipCurrent->getBa()->setReconnaisRenoncer30Jours(true);
if(($membershipCurrent->getBa()->getVersementProgramme() != 1 && $membershipCurrent->getBa()->getMoyenDeVersement() != 3) || $membershipCurrent->getBa()->getSepaOriginVersmement() == 2){
$membershipCurrent->setValidatedSepaStatus("VALID");
$membershipCurrent->setValidatedSepaDate(new \DateTime("now"));
$membershipCurrent->setValidatedSepaAccept(true);
}
}
else if($folder == "sepa"){
$membershipCurrent->setValidatedSepaStatus("VALID");
$membershipCurrent->setValidatedSepaDate(new \DateTime("now"));
$membershipCurrent->setValidatedSepaAccept(true);
}
else if($folder == "status"){
$membershipCurrent->setValidatedStatusStatus("VALID");
$membershipCurrent->setValidatedStatusDate(new \DateTime("now"));
$membershipCurrent->setValidatedStatusAccept(true);
}
else if($folder == "reglement"){
$membershipCurrent->setValidatedReglementStatus("VALID");
$membershipCurrent->setValidatedReglementDate(new \DateTime("now"));
$membershipCurrent->setValidatedReglementAccept(true);
$membershipCurrent->setStatus("VALIDBYCUSTOMER");
$baName = $this->utils->generateBa($customer, $membershipCurrent->getBa());
if($membershipCurrent->getPlatformVersion() == 1){
if(!$membershipCurrent->getDicIsFile()){
//V1 DIC
$membershipCurrent->getDic()->setJeCertifieSurHonneur(true);
$this->em->persist($membershipCurrent->getDic());
}
}
else{
//V2 FIC
$membershipCurrent->getFic()->setJeCertifieSurHonneur(true);
$this->em->persist($membershipCurrent->getFic());
}
$membershipCurrent->getBa()->setUrlPdf($baName);
$this->em->persist($membershipCurrent->getBa());
}
$this->em->persist($membershipCurrent);
$this->em->flush();
if($folder == "reglement"){
$this->utils->generateBa($customer);
if($membershipCurrent->getPlatformVersion() == 1){
//V1 DIC
$this->utils->generateDic($customer);
}
else{
//V2 FIC
$this->utils->generateFic($customer, $membershipCurrent->getFic());
}
}
}
if($membershipCurrent->getDicIsFile() == true){
$membershipCurrent->setValidatedDicStatus("VALID");
$membershipCurrent->setValidatedDicDate(new \DateTime("now"));
$membershipCurrent->setValidatedDicAccept(true);
$this->em->persist($membershipCurrent);
$this->em->flush();
}
if($membershipCurrent->getPlatformVersion() == 1 && $membershipCurrent->getValidatedDicStatus() != "VALID"){
return $this->render('membership/validated/dicValidated.html.twig', [
'dic' => $customer->getCurrentMemberships()->getDic(),
'customer' => $customer,
'membership' => $membershipCurrent
]);
}
else if($membershipCurrent->getPlatformVersion() == 2 && $membershipCurrent->getValidatedFicStatus() != "VALID"){
return $this->render('membership/validated/ficValidated.html.twig', [
'fic' => $customer->getCurrentMemberships()->getFic(),
'customer' => $customer,
'membership' => $membershipCurrent
]);
}
else if($membershipCurrent->getValidatedBaStatus() != "VALID"){
return $this->render('membership/validated/baValidated.html.twig', [
'ba' => $customer->getCurrentMemberships()->getBa(),
'customer' => $customer,
'membership' => $membershipCurrent
]);
}
else if($membershipCurrent->getValidatedSepaStatus() != "VALID" && ($customer->getCurrentMemberships()->getBa()->getVersementProgramme() == 1 || $customer->getCurrentMemberships()->getBa()->getMoyenDeVersement() == 3) && $membershipCurrent->getBa()->getSepaOriginVersmement() != 2){
return $this->render('membership/validated/sepaValidated.html.twig', [
'sepa' => $customer->getCurrentMemberships()->getBa(),
'customer' => $customer,
'membership' => $membershipCurrent
]);
}
else if($membershipCurrent->getValidatedStatusStatus() != "VALID"){
return $this->render('membership/validated/statusValidated.html.twig', [
'customer' => $customer,
'membership' => $membershipCurrent
]);
}
else if($membershipCurrent->getValidatedReglementStatus() != "VALID"){
return $this->render('membership/validated/reglementValidated.html.twig', [
'customer' => $customer,
'membership' => $membershipCurrent
]);
}
else{
$this->addFlash('success', 'Les documents ont bien été validés');
return $this->redirectToRoute('membership_view', ["userID" => "me", "membershipID" => $membershipCurrent->getId()]);
}
}
/**
* @Route("/customer/{userID}/membership/{membershipID}/sign-by-seller", name="membership_sign_seller")
*/
public function member_sign_seller(Request $request, $userID, $membershipID){
$userCurrent = $this->get('security.token_storage')->getToken()->getUser();
$yousignUrlLink = $this->getParameter('yousign_url_link');
if($userID == "me"){
$userIDTemp = $userCurrent->getId();
}
else{
$userIDTemp = $userID;
}
$customer = $this->em
->getRepository(User::class)
->find($userIDTemp);
if ( !$customer ) {
$this->addFlash('danger', 'Cet utilisateur n\'existe pas');
return $this->redirectToRoute('app_login');
}
$membershipCurrent = $this->em
->getRepository(Membership::class)
->find($membershipID);
if ( !$membershipCurrent ) {
$this->addFlash('danger', 'Cette adhésion n\'existe pas');
return $this->redirectToRoute('app_login');
}
//Generate (re)
if($membershipCurrent->getPlatformVersion() == 2){
$this->utils->generateFic($customer, $membershipCurrent->getFic());
}
$this->utils->generateBa($customer, $membershipCurrent->getBa());
if(!$membershipCurrent->getUrlSignSeller()){
$responseProcedure = $this->utils->addSign($customer, $membershipCurrent, "seller");
if($responseProcedure && !$responseProcedure['responseErrorTab']){
$membershipCurrent->setUrlSign($responseProcedure['signerCustomerUrl']);
$membershipCurrent->setUrlSignSeller($responseProcedure['signerSellerUrl']);
$membershipCurrent->setMemberId($responseProcedure['signerCustomerId']);
$membershipCurrent->setSellerMemberId($responseProcedure['signerSellerId']);
$membershipCurrent->setMemberLegal1Id($responseProcedure['signerCustomerLegal1Id']);
$membershipCurrent->setMemberLegal2Id($responseProcedure['signerCustomerLegal2Id']);
$membershipCurrent->setYousignVersion(3);
//$membershipCurrent->setMemberId($memberCustomerId);
$urlSignSeller = $membershipCurrent->getUrlSignSeller();
$membershipCurrent->setProcedureId($responseProcedure['responseProcedure']->id);
//$membershipCurrent->setSignedSeller(1);
if($membershipCurrent->getPlatformVersion() == 1){
//V1 DIC
$membershipCurrent->getDic()->setIdYouSign($responseProcedure['dicFileId']);
$this->em->persist($membershipCurrent->getDic());
} else {
//V2 FIC
$membershipCurrent->getFic()->setIdYouSign($responseProcedure['ficFileId']);
$this->em->persist($membershipCurrent->getFic());
}
$membershipCurrent->getBa()->setIdYouSign($responseProcedure['baFileId']);
$membershipCurrent->getBa()->setSepaIdYouSign($responseProcedure['sepaFileId']);
$membershipCurrent->setStartProcedureSignDate(new \DateTime());
//Save current membership for redirection
$userCurrent->setCurrentSign($membershipCurrent->getId());
$this->em->persist($userCurrent);
$this->em->persist($membershipCurrent->getBa());
$this->em->persist($membershipCurrent);
$this->em->flush();
}
else{
//Set error Yousign
$membershipCurrent->setErrorYouSign(json_encode($responseProcedure));
$this->em->persist($membershipCurrent);
$this->em->flush();
$this->addFlash('danger', "Une erreur est survenue, veuillez contacter le support de l'application");
return $this->redirectToRoute('app_login');
}
}
else {
$urlSignSeller = $membershipCurrent->getUrlSignSeller();
}
$this->em->persist($membershipCurrent);
$this->em->flush();
sleep(2);
header('Location: '.$urlSignSeller);
exit();
}
/**
* @Route("/customer/{userID}/membership/{membershipID}/sign", name="membership_sign")
*/
public function member_sign(Request $request, $userID, $membershipID){
$userCurrent = $this->get('security.token_storage')->getToken()->getUser();
$yousignUrlLink = $this->getParameter('yousign_url_link');
$customer = $this->em
->getRepository(User::class)
->find($userCurrent->getId());
if ( !$customer ) {
$this->addFlash('danger', 'Cet utilisateur n\'existe pas');
return $this->redirectToRoute('app_login');
}
//If no membership
$membershipCurrent = $this->utils->getMembershipByCustomer($customer);
//Generate (re)
if($membershipCurrent->getPlatformVersion() == 2){
//$this->utils->generateFic($customer);
}
//Set date now
$membershipCurrent->getBa()->setDateEffetAdhesion(new \DateTime());
$this->em->persist($membershipCurrent->getBa());
$this->em->persist($membershipCurrent);
$this->em->flush();
//Get Update customer membership
$customer = $this->em
->getRepository(User::class)
->find($userCurrent->getId());
if($customer->isIsAutoSignup()){
$this->utils->generateBaFullweb($customer);
}
else{
$this->utils->generateBa($customer);
}
if($membershipCurrent->getPlatformVersion() == 1 || $customer->isIsAutoSignup()){
$responseProcedure = $this->utils->addSign($customer, $membershipCurrent, "customer");
if($responseProcedure && !$responseProcedure['responseErrorTab']){
$membershipCurrent->setUrlSign($responseProcedure['signerCustomerUrl']);
$membershipCurrent->setUrlSignSeller($responseProcedure['signerSellerUrl']);
$membershipCurrent->setMemberId($responseProcedure['signerCustomerId']);
$membershipCurrent->setSellerMemberId($responseProcedure['signerSellerId']);
$membershipCurrent->setProcedureId($responseProcedure['responseProcedure']->id);
$membershipCurrent->setYousignVersion(3);
$membershipCurrent->setValidatedFolderByCustomer(1);
if($membershipCurrent->getPlatformVersion() == 1){
if(!$membershipCurrent->getDicIsFile()){
//V1 DIC
$membershipCurrent->getDic()->setIdYouSign($responseProcedure['dicFileId']);
$this->em->persist($membershipCurrent->getDic());
}
} else {
//V2 FIC
$membershipCurrent->getFic()->setIdYouSign($responseProcedure['ficFileId']);
$this->em->persist($membershipCurrent->getFic());
}
$membershipCurrent->getBa()->setIdYouSign($responseProcedure['baFileId']);
$membershipCurrent->getBa()->setSepaIdYouSign($responseProcedure['sepaFileId']);
$membershipCurrent->setStartProcedureSignDate(new \DateTime());
$this->em->persist($membershipCurrent->getBa());
$this->em->persist($membershipCurrent);
$this->em->flush();
sleep(3);
$urlSign = $responseProcedure['signerCustomerUrl'];
}
else{
//Set error Yousign
$membershipCurrent->setErrorYouSign(json_encode($responseProcedure));
$this->em->persist($membershipCurrent);
$this->em->flush();
$this->addFlash('danger', "Une erreur est survenue, veuillez contacter le support de l'application");
return $this->redirectToRoute('app_login');
}
} else{
/*
$responseMember = $this->utils->updateBaSign($customer, $membershipCurrent);
$membershipCurrent->setErrorYouSign(json_encode($responseMember['responseMember']));
$membershipCurrent->getBa()->setIdYouSign($responseMember['baFileId']);
$membershipCurrent->getBa()->setSepaIdYouSign($responseProcedure['sepaFileId']);
$this->em->persist($membershipCurrent);
$this->em->flush();
*/
/* CREATE NEW SIGN URL - 48 hours */
// Fetch the signature link for the second Signer once the first one has signed
$client = new Client();
$yousignUrl = $this->getParameter('yousign_url');
$yousignApi = $this->getParameter('yousign_api');
$newSignatureId = $membershipCurrent->getProcedureId();
$customerSignatureResponse = $client->request('GET', $yousignUrl .'/signature_requests/'.$newSignatureId.'/signers/'.$membershipCurrent->getMemberId(),
[
'headers' => [
'accept' => 'application/json',
'content-type' => 'application/json',
'Authorization' => 'Bearer ' . $yousignApi
],
]
);
//201 for create
$customerSignatureResponseBody = json_decode($customerSignatureResponse->getBody());
$signatureLink = $customerSignatureResponseBody->signature_link;
$membershipCurrent->setUrlSign($signatureLink);
$this->em->persist($membershipCurrent);
$this->em->flush();
$urlSign = $signatureLink;
}
header('Location: '.$urlSign);
exit();
}
/**
* @Route("/customer/{userID}/sign/success", name="customer_sign_success")
*/
public function member_sign_success(Request $request, $userID){
$userCurrent = $this->get('security.token_storage')->getToken()->getUser();
if($userID == "me"){
$userID = $userCurrent->getId();
}
$user = $this->em
->getRepository(User::class)
->find($userID);
if ( !$user ) {
$this->addFlash('danger', 'Cet utilisateur n\'existe pas');
return $this->redirectToRoute('app_login');
}
sleep(2);
//V2 (SELLER + CUSTOMER)
if($this->roleService->isGranted('ROLE_SELLER', $user)){
$membershipCurrentId = $user->getCurrentSign();
if($membershipCurrentId){
$membershipCurrent = $this->em
->getRepository(Membership::class)
->find($membershipCurrentId);
$membershipCurrent->setSignedSeller(1);
$user->setCurrentSign(null);
$this->em->persist($membershipCurrent);
$this->em->persist($user);
$this->em->flush();
$this->addFlash('success', 'Votre signature a bien été prise en compte, vous pouvez valider et transmettre votre dossier.');
return $this->redirectToRoute('membership_view', ["userID" => $membershipCurrent->getUser()->getId(), "membershipID" => $membershipCurrent->getId()]);
}
else{
$this->addFlash('success', 'Votre signature a bien été prise en compte, vous pouvez valider et transmettre votre dossier.');
return $this->redirectToRoute('customer_list');
}
}
else{
//If no membership
$membershipCurrent = $this->utils->getMembershipByCustomer($user);
$membershipCurrent->setValidatedFolderByCustomer(1);
if($membershipCurrent->getBa()->getMoyenDeVersement() == "0"){
$membershipCurrent->setStatus("SIGNBYCUSTOMER");
}
else{
$membershipCurrent->setStatus("PAYBYCUSTOMER");
}
//$this->member_sign_end($request, $membershipCurrent->getId());
$this->em->persist($membershipCurrent);
$this->em->flush();
if($membershipCurrent->getUser()->isIsAutoSignup()){
//Set end step
$userCurrent->setStepSignup("end");
$this->em->persist($userCurrent);
$this->em->flush();
$this->addFlash('success', 'Votre signature a bien été prise en compte, vous allez recevoir les documents par email.');
return $this->redirectToRoute('member_signup', ["token" => $userCurrent->getTokenSignupContinue()]);
}
$this->addFlash('success', 'Votre signature a bien été prise en compte, vous allez recevoir les documents par email.');
return $this->redirectToRoute('membership_view', ["userID" => 'me', "membershipID" => $membershipCurrent->getId()]);
}
}
/**
* @Route("/customer/{userID}/membership/{membershipID}/payment", name="customer_payment")
*/
public function member_payment(Request $request, $userID, $membershipID){
$userCurrent = $this->get('security.token_storage')->getToken()->getUser();
if($userID == "me"){
$userID = $userCurrent->getId();
}
$customer = $this->em
->getRepository(User::class)
->find($userID);
if ( !$customer ) {
$this->addFlash('danger', 'Cet utilisateur n\'existe pas');
return $this->redirectToRoute('app_login');
}
$systemPayUser = $this->getParameter('system_pay_user');
$systemPayPassword = $this->getParameter('system_pay_password');
$systemPayUrl = $this->getParameter('system_pay_url');
//If no membership
$membershipCurrent = $this->utils->getMembershipByCustomer($customer);
//Name client description
//$membershipCurrent->getNumberMembershipFolder().'-'.$membershipCurrent->getUser()->getFirstName().'-'.$membershipCurrent->getUser()->getFirstName()
$urlIPn = $this->generateUrl('yousign_payment_end',
array(
'membershipID' => $membershipCurrent->getId()
),
UrlGeneratorInterface::ABSOLUTE_URL);
$client = new \Lyra\Client();
$client->setUsername($systemPayUser);
$client->setPassword($systemPayPassword);
$client->setEndpoint($systemPayUrl);
$price = $membershipCurrent->getBa()->getVersementInitial();
if(strpos($price, ".") == true) {
$price = str_replace(".", "", $price);
}
else{
$price = strval($price)."00";
$price = intval($price);
}
$store = array("amount" => $price,
"currency" => "EUR",
"orderId" => $customer->getId()."-".$membershipCurrent->getId(),
"ipnTargetUrl" => $urlIPn,
"customer" => array(
"email" => $customer->getEmail(),
"reference" => $membershipCurrent->getNumberMembershipFolder(),
));
$response = $client->post("V4/Charge/CreatePayment", $store);
$tokenPayment = $response['answer']['formToken'];
//If no membership
$membershipCurrent = $this->utils->getMembershipByCustomer($customer);
return $this->render('membership/payment/payment.html.twig', [
'menu' => 'customer',
'membership' => $membershipCurrent,
'customer' => $customer,
"tokenPayment" => $tokenPayment
]);
}
/**
* @Route("/customer/{userID}/payment/success", name="customer_payment_success")
*/
public function member_payment_success(Request $request, $userID){
$userCurrent = $this->get('security.token_storage')->getToken()->getUser();
if($userID == "me"){
$userID = $userCurrent->getId();
}
$customer = $this->em
->getRepository(User::class)
->find($userID);
if ( !$customer ) {
$this->addFlash('danger', 'Cet utilisateur n\'existe pas');
return $this->redirectToRoute('app_login');
}
//If no membership
$membershipCurrent = $this->utils->getMembershipByCustomer($customer);
$membershipCurrent->setStatus("PAYBYCUSTOMER");
$this->em->persist($membershipCurrent);
//$this->em->flush();
$this->addFlash('success', 'Votre paiement a bien été pris en compte.');
return $this->redirectToRoute('membership_view', ["userID" => 'me', "membershipID" => $membershipCurrent->getId()]);
}
/**
* @Route("/customer/{userID}/membership/reset-sign/{membershipID}", name="yousign_reset_sign")
*/
public function member_reset_sign(Request $request, $userID, $membershipID){
//$userCurrent = $this->get('security.token_storage')->getToken()->getUser();
$membershipCurrent = $this->em
->getRepository(Membership::class)
->find($membershipID);
if ( !$membershipCurrent ) {
$this->addFlash('danger', 'Ce dossier n\'existe pas');
return $this->redirectToRoute('app_login');
}
if ( $userID != $membershipCurrent->getUser()->getId() ) {
$this->addFlash('danger', 'Cet utilisateur n\'existe pas');
return $this->redirectToRoute('app_login');
}
//Ba and Membership
$membershipCurrent->setMailSendCustomer(null);
$membershipCurrent->setMailSendSeller(null);
$membershipCurrent->setMailSendGestion(null);
$membershipCurrent->setMemberLegal1Sign(null);
$membershipCurrent->setMemberLegal2Sign(null);
$membershipCurrent->setUrlSign(null);
$membershipCurrent->setUrlSignSeller(null);
$membershipCurrent->setSignedSeller(null);
$membershipCurrent->setSignedSellerHooks(null);
$membershipCurrent->getBa()->setSepaIdYouSign(null);
$membershipCurrent->getBa()->setSepaUrlPdfSign(null);
$membershipCurrent->getBa()->setIdYouSign(null);
$membershipCurrent->getBa()->setUrlPdfSign(null);
$this->em->persist($membershipCurrent->getBa());
if($membershipCurrent->getPlatformVersion() == 1){
//No fic, just one sign
$membershipCurrent->setStatus("VALIDBYCUSTOMER");
}
else{
//With FIC, 2 signs
$membershipCurrent->setStatus("DRAFT");
$membershipCurrent->setValidatedFolderBySeller(null);
$membershipCurrent->getFic()->setIdYouSign(null);
$membershipCurrent->getFic()->setUrlPdfSign(null);
$this->em->persist($membershipCurrent->getFic());
}
$this->em->persist($membershipCurrent);
$this->em->flush();
$this->addFlash('success', 'La signature a bien été rénitialisé');
return $this->redirectToRoute('membership_view', ["userID" => $userID, "membershipID" => $membershipCurrent->getId()]);
}
/**
* @Route("/yousignv3/sign", name="yousignv3_sign_end")
*/
public function member_sign_end_v3(Request $request){
//$userCurrent = $this->get('security.token_storage')->getToken()->getUser();
$requestHook = json_decode($request->getContent());
$yousignUrl = $this->getParameter('yousign_url');
$yousignApi = $this->getParameter('yousign_api');
$newSignatureId = $requestHook->data->signature_request->id;
/*
TEST RESPONSE POST HOOK
*/
/*
$myfile = fopen("newfile.txt", "w") or die("Unable to open file!");
$txt = "Data : ".json_encode($requestHook);
fwrite($myfile, $txt);
fclose($myfile);
$myfile = fopen("signatureId.txt", "w") or die("Unable to open file!");
$txt = "Signature ID : ".$newSignatureId;
fwrite($myfile, $txt);
fclose($myfile);
*/
//Get metadata
$client = new Client();
$metaDatas = $client->request('GET', $yousignUrl .'/signature_requests/'.$newSignatureId.'/metadata',
[
'headers' => [
'accept' => 'application/json',
'content-type' => 'application/json',
'Authorization' => 'Bearer ' . $yousignApi
],
]
);
//201 for create
$metaDatasBody = json_decode($metaDatas->getBody());
$datas = $metaDatasBody->data;
$membershipID = $datas->membershipId;
$membershipCurrent = $this->em
->getRepository(Membership::class)
->find($membershipID);
/* Note : Check procedure id $requestHook->procedure-id and save in database */
if($membershipCurrent->getPlatformVersion() == 1 || $membershipCurrent->getUser()->isIsAutoSignup()){
//It's not for seller (no seller sign in V1)
//Postion 2, it's for Customer
$this->member_sign_end($request, $membershipID);
return new Response(true);
}
else{
if($requestHook->data->signer->id == $membershipCurrent->getSellerMemberId()){
//Save files
$this->utils->saveFilesYouSignV3($membershipCurrent, "seller");
$membershipCurrent->setSignedSeller(1);
$membershipCurrent->setSignedSellerHooks(1);
// Fetch the signature link for the second Signer once the first one has signed
$customerSignatureResponse = $client->request('GET', $yousignUrl .'/signature_requests/'.$newSignatureId.'/signers/'.$membershipCurrent->getMemberId(),
[
'headers' => [
'accept' => 'application/json',
'content-type' => 'application/json',
'Authorization' => 'Bearer ' . $yousignApi
],
]
);
//201 for create
$customerSignatureResponseBody = json_decode($customerSignatureResponse->getBody());
$signatureLink = $customerSignatureResponseBody->signature_link;
$membershipCurrent->setUrlSign($signatureLink);
$this->em->persist($membershipCurrent);
$this->em->flush();
return new Response(true);
} else {
$isLegal1 = $membershipCurrent->getBa()->isRepLegal1Use();
$isLegal2 = $membershipCurrent->getBa()->isRepLegal2Use();
//Postion 2, it's for Customer
if($requestHook->data->signer->id == $membershipCurrent->getMemberId()){
if($isLegal1){
$this->utils->saveFilesYouSignV3($membershipCurrent, "customer");
}
else{
$this->member_sign_end($request, $membershipID);
}
}
if($isLegal1){
if($requestHook->data->signer->id == $membershipCurrent->getMemberLegal1Id()){
$membershipCurrent->setMemberLegal1Sign(true);
$this->em->persist($membershipCurrent);
$this->em->flush();
$this->utils->saveFilesYouSignV3($membershipCurrent, "customer");
if(!$isLegal2){
$this->member_sign_end($request, $membershipID);
}
}
}
if($isLegal2){
if($requestHook->data->signer->id == $membershipCurrent->getMemberLegal2Id()){
$membershipCurrent->setMemberLegal2Sign(true);
$this->em->persist($membershipCurrent);
$this->em->flush();
$this->member_sign_end($request, $membershipID);
}
}
return new Response(true);
}
}
}
/**
* @Route("/yousign/sign/{membershipID}", name="yousign_sign_end_seller")
*/
public function member_sign_end_seller(Request $request, $membershipID){
//$userCurrent = $this->get('security.token_storage')->getToken()->getUser();
$requestHook = json_decode($request->getContent());
/*
TEST RESPONSE POST HOOK
*/
/*
$myfile = fopen("newfile.txt", "w") or die("Unable to open file!");
$txt = "Data : ".json_encode($requestHook);
fwrite($myfile, $txt);
fclose($myfile);
die;
*/
/* Note : Check procedure id $requestHook->procedure-id and save in database */
$membershipCurrent = $this->em
->getRepository(Membership::class)
->find($membershipID);
if($membershipCurrent->getPlatformVersion() == 1){
//It's not for seller (no seller sign in V1)
//Postion 2, it's for Customer
$this->member_sign_end($request, $membershipID);
return new Response(true);
}
else{
if($requestHook->member->position == 1){
$membershipCurrent = $this->em
->getRepository(Membership::class)
->find($membershipID);
//Save files
$this->utils->saveFilesYouSign($membershipCurrent, "seller");
$membershipCurrent->setSignedSeller(1);
$membershipCurrent->setSignedSellerHooks(1);
$this->em->persist($membershipCurrent);
$this->em->flush();
return new Response(true);
} else {
//Postion 2, it's for Customer
if($requestHook->member->position == 2){
$this->member_sign_end($request, $membershipID);
}
return new Response(true);
}
}
}
/**
* @Route("/yousign/sign-customer/{membershipID}", name="yousign_sign_end")
*/
public function member_sign_end(Request $request, $membershipID){
//$userCurrent = $this->get('security.token_storage')->getToken()->getUser();
$membershipCurrent = $this->em
->getRepository(Membership::class)
->find($membershipID);
if($membershipCurrent->getBa()->getMoyenDeVersement() == "0"){
$membershipCurrent->setStatus("SIGNBYCUSTOMER");
}
else{
$membershipCurrent->setStatus("PAYBYCUSTOMER");
}
$membershipCurrent->setSignDate(new \DateTime());
$this->em->persist($membershipCurrent);
$this->em->flush();
$customer = $membershipCurrent->getUser();
//Save files
if($membershipCurrent->getYousignVersion() == 3){
$this->utils->saveFilesYouSignV3($membershipCurrent, "customer");
}
else{
$this->utils->saveFilesYouSign($membershipCurrent, "customer");
}
//Send files (customer + seller)
$mailNoReply = $this->getParameter('mail_no_reply');
$senderName = $this->getParameter('sender_name');
$mailGestion = $this->getParameter('mail_gestion');
$urlLogin = $this->generateUrl('app_login',
array(
),
UrlGeneratorInterface::ABSOLUTE_URL);
if($membershipCurrent->getUser()->isIsAutoSignup()){
$bodyEmail = $this->renderView(
'email/sendFilesSignFullweb.html.twig',
array('membership' => $membershipCurrent, 'urlLogin' => $urlLogin)
);
} else {
$bodyEmail = $this->renderView(
'email/sendFilesSign.html.twig',
array('membership' => $membershipCurrent, 'urlLogin' => $urlLogin)
);
}
if(!$membershipCurrent->getUser()->isIsAutoSignup()){
$bodyEmailSeller = $this->renderView(
'email/sendFilesSignSeller.html.twig',
array('membership' => $membershipCurrent, 'urlLogin' => $urlLogin)
);
}
$bodyEmailGestion = $this->renderView(
'email/sendFilesSignGestion.html.twig',
array('membership' => $membershipCurrent)
);
$weight = 0;
$attachmentDic = true;
$attachmentFraisPdf = null;
if($membershipCurrent->getDicIsFile() == true){
/* FOR SEND CUSTOM DIC */
if($membershipCurrent->getFileByType("dic-custom")){
if($membershipCurrent->getFileByType("dic-custom")->getExtension() == "pdf"){
$contentType = "application/pdf";
}
else{
$contentType = "image/".$membershipCurrent->getFileByType("dic-custom")->getExtension();
}
$attachmentDic = \Swift_Attachment::fromPath($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$membershipCurrent->getFileByType("dic-custom")->getFileName(), $contentType);
$weight = $weight + filesize($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$membershipCurrent->getFileByType("dic-custom")->getFileName());
}
else{
$attachmentDic = false;
}
//$attachmentDic = false;
}
else{
if($membershipCurrent->getPlatformVersion() == 1){
//V1 DIC
$attachmentDic = \Swift_Attachment::fromPath($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$membershipCurrent->getDic()->getUrlPdfSign(), "application/pdf");
$weight = $weight + filesize($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$membershipCurrent->getDic()->getUrlPdfSign());
} else {
//V2 FIC
$attachmentDic = \Swift_Attachment::fromPath($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$membershipCurrent->getFic()->getUrlPdfSign(), "application/pdf");
$weight = $weight + filesize($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$membershipCurrent->getFic()->getUrlPdfSign());
}
}
$attachmentBa = \Swift_Attachment::fromPath($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$membershipCurrent->getBa()->getUrlPdfSign(), "application/pdf");
$weight = $weight + filesize($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$membershipCurrent->getBa()->getUrlPdfSign());
if(!$membershipCurrent->getUser()->isIsAutoSignup()){
$attachmentStatus = \Swift_Attachment::fromPath($this->fileUploader->getTargetDirectory()."/../img/Statuts_mer_2022.pdf", "application/pdf");
$weight = $weight + filesize($this->fileUploader->getTargetDirectory()."/../img/Statuts_mer_2022.pdf");
$attachmentReglement = \Swift_Attachment::fromPath($this->fileUploader->getTargetDirectory()."/../default/".$membershipCurrent->getProduct()."/REGLEMENT.pdf", "application/pdf");
$weight = $weight + filesize($this->fileUploader->getTargetDirectory()."/../default/".$membershipCurrent->getProduct()."/REGLEMENT.pdf");
$attachmentDicPdf = \Swift_Attachment::fromPath($this->fileUploader->getTargetDirectory()."/../default/".$membershipCurrent->getProduct()."/DIC.pdf", "application/pdf");
$weight = $weight + filesize($this->fileUploader->getTargetDirectory()."/../default/".$membershipCurrent->getProduct()."/DIC.pdf");
if($membershipCurrent->getProduct() == "retraite"){
//Frais
$attachmentFraisPdf = \Swift_Attachment::fromPath($this->fileUploader->getTargetDirectory()."/../default/".$membershipCurrent->getProduct()."/FRAIS.pdf", "application/pdf");
$weight = $weight + filesize($this->fileUploader->getTargetDirectory()."/../default/".$membershipCurrent->getProduct()."/FRAIS.pdf");
}
}
$title = "Merci pour votre signature";
$subject = "Merci pour votre signature";
//For CUSTOMER
if(($membershipCurrent->getBa()->getVersementProgramme() == 1 || $membershipCurrent->getBa()->getMoyenDeVersement() == 3) && $membershipCurrent->getBa()->getSepaOriginVersmement() != 2){
$attachmentSepa = \Swift_Attachment::fromPath($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$membershipCurrent->getBa()->getSepaUrlPdfSign(), "application/pdf");
if($attachmentDic != false){
if($membershipCurrent->getPlatformVersion() == 1){
//V1 DIC
$message = (new \Swift_Message("Vos documents signés électroniquement"))
->setSubject("Vos documents signés électroniquement")
->setFrom(array($mailNoReply => $senderName))
->setTo(array($customer->getEmail() => $senderName))
->setBody($bodyEmail,'text/html')
->attach($attachmentDic)
->attach($attachmentBa)
->attach($attachmentSepa)
->attach($attachmentStatus)
->attach($attachmentReglement)
;
if($attachmentFraisPdf){
$message->attach($attachmentFraisPdf);
}
} else {
//V2 FIC
if($membershipCurrent->getUser()->isIsAutoSignup()){
$message = (new \Swift_Message("Vos documents signés électroniquement"))
->setSubject("Vos documents signés électroniquement")
->setFrom(array($mailNoReply => $senderName))
->setTo(array($customer->getEmail() => $senderName))
->setBody($bodyEmail,'text/html')
->attach($attachmentDic)
->attach($attachmentBa)
->attach($attachmentSepa)
;
} else {
$message = (new \Swift_Message("Vos documents signés électroniquement"))
->setSubject("Vos documents signés électroniquement")
->setFrom(array($mailNoReply => $senderName))
->setTo(array($customer->getEmail() => $senderName))
->setBody($bodyEmail,'text/html')
->attach($attachmentDic)
->attach($attachmentBa)
->attach($attachmentSepa)
->attach($attachmentStatus)
->attach($attachmentReglement)
->attach($attachmentDicPdf)
;
if($attachmentFraisPdf){
$message->attach($attachmentFraisPdf);
}
}
}
} else {
$message = (new \Swift_Message("Vos documents signés électroniquement"))
->setSubject("Vos documents signés électroniquement")
->setFrom(array($mailNoReply => $senderName))
->setTo(array($customer->getEmail() => $senderName))
->setBody($bodyEmail,'text/html')
->attach($attachmentBa)
->attach($attachmentSepa)
->attach($attachmentStatus)
->attach($attachmentReglement)
;
if($attachmentFraisPdf){
$message->attach($attachmentFraisPdf);
}
}
}
else{
if($attachmentDic != false){
if($membershipCurrent->getUser()->isIsAutoSignup()){
$message = (new \Swift_Message("Vos documents signés électroniquement"))
->setSubject("Vos documents signés électroniquement")
->setFrom(array($mailNoReply => $senderName))
->setTo(array($customer->getEmail() => $senderName))
->setBody($bodyEmail,'text/html')
->attach($attachmentDic)
->attach($attachmentBa)
;
} else {
$message = (new \Swift_Message("Vos documents signés électroniquement"))
->setSubject("Vos documents signés électroniquement")
->setFrom(array($mailNoReply => $senderName))
->setTo(array($customer->getEmail() => $senderName))
->setBody($bodyEmail,'text/html')
->attach($attachmentDic)
->attach($attachmentBa)
->attach($attachmentStatus)
->attach($attachmentReglement)
;
if($attachmentFraisPdf){
$message->attach($attachmentFraisPdf);
}
}
} else {
$message = (new \Swift_Message("Vos documents signés électroniquement"))
->setSubject("Vos documents signés électroniquement")
->setFrom(array($mailNoReply => $senderName))
->setTo(array($customer->getEmail() => $senderName))
->setBody($bodyEmail,'text/html')
->attach($attachmentBa)
->attach($attachmentStatus)
->attach($attachmentReglement)
;
if($attachmentFraisPdf){
$message->attach($attachmentFraisPdf);
}
}
}
if(!$membershipCurrent->getMailSendCustomer()){
$this->mailer->send($message);
$membershipCurrent->setMailSendCustomer(true);
$this->em->persist($membershipCurrent);
$this->em->flush();
}
//For SELLER
if(!$membershipCurrent->getUser()->isIsAutoSignup()){
if($membershipCurrent->getBa()->getVersementProgramme() == 1 || $membershipCurrent->getBa()->getMoyenDeVersement() == 3){
$attachmentSepa = \Swift_Attachment::fromPath($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$membershipCurrent->getBa()->getSepaUrlPdfSign(), "application/pdf");
$message = (new \Swift_Message("Une adhésion a été signée électroniquement"))
->setSubject("Une adhésion a été signée électroniquement")
->setFrom(array($mailNoReply => $senderName))
->setTo(array($membershipCurrent->getSeller()->getEmail() => $senderName))
->setBody($bodyEmailSeller,'text/html')
//->attach($attachmentDic)
//->attach($attachmentBa)
//->attach($attachmentSepa)
;
}
else{
$message = (new \Swift_Message("Une adhésion a été signée électroniquement"))
->setSubject("Une adhésion a été signée électroniquement")
->setFrom(array($mailNoReply => $senderName))
->setTo(array($membershipCurrent->getSeller()->getEmail() => $senderName))
->setBody($bodyEmailSeller,'text/html')
//->attach($attachmentDic)
//->attach($attachmentBa)
;
}
if(!$membershipCurrent->getMailSendSeller()){
$this->mailer->send($message);
$membershipCurrent->setMailSendSeller(true);
$this->em->persist($membershipCurrent);
$this->em->flush();
}
}
//For GESTION
if(($membershipCurrent->getBa()->getVersementProgramme() == 1 || $membershipCurrent->getBa()->getMoyenDeVersement() == 3) && $membershipCurrent->getBa()->getSepaOriginVersmement() != 2){
$attachmentSepa = \Swift_Attachment::fromPath($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$membershipCurrent->getBa()->getSepaUrlPdfSign(), "application/pdf");
$message = (new \Swift_Message("Une adhésion a été signée électroniquement"))
->setSubject("Une adhésion a été signée électroniquement - ".$membershipCurrent->getProduct())
->setFrom(array($mailNoReply => $senderName))
->setTo(array($mailGestion => $senderName))
->setBody($bodyEmailGestion,'text/html')
->attach($attachmentBa)
->attach($attachmentSepa)
;
}
else{
$message = (new \Swift_Message("Une adhésion a été signée électroniquement"))
->setSubject("Une adhésion a été signée électroniquement - ".$membershipCurrent->getProduct())
->setFrom(array($mailNoReply => $senderName))
->setTo(array($mailGestion => $senderName))
->setBody($bodyEmailGestion,'text/html')
->attach($attachmentBa)
;
}
if($attachmentDic){
$message->attach($attachmentDic);
}
if(date('Ymd', strtotime($membershipCurrent->getBa()->getDateDeNaissance()->format("Y-m-d") . ' +18 years')) > date("Ymd")){
if($membershipCurrent->getFileByType("justificatifRepresentantLegalRecto")){
$attachment = \Swift_Attachment::fromPath($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$membershipCurrent->getFileByType("justificatifRepresentantLegalRecto")->getFileName(), "image/".$membershipCurrent->getFileByType("justificatifRepresentantLegalRecto")->getExtension());
//$message->attach($attachment);
$weight = $weight + filesize($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$membershipCurrent->getFileByType("justificatifRepresentantLegalRecto")->getFileName());
$returnMessage = $this->sendMailNext($weight, $message, $bodyEmailGestion, $membershipCurrent, $attachment);
$message = $returnMessage['message'];
if($returnMessage['newMail']){
$weight = 0;
}
}
if($membershipCurrent->getFileByType("justificatifRepresentantLegalVerso")){
$attachment = \Swift_Attachment::fromPath($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$membershipCurrent->getFileByType("justificatifRepresentantLegalVerso")->getFileName(), "image/".$membershipCurrent->getFileByType("justificatifRepresentantLegalVerso")->getExtension());
//$message->attach($attachment);
$weight = $weight + filesize($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$membershipCurrent->getFileByType("justificatifRepresentantLegalVerso")->getFileName());
$returnMessage = $this->sendMailNext($weight, $message, $bodyEmailGestion, $membershipCurrent, $attachment);
$message = $returnMessage['message'];
if($returnMessage['newMail']){
$weight = 0;
}
}
}
if($membershipCurrent->getBa()->getTypeDePieceIdentite() == 0){
if($membershipCurrent->getFileByType("idIdentityRecto")){
$attachment = \Swift_Attachment::fromPath($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$membershipCurrent->getFileByType("idIdentityRecto")->getFileName(), "image/".$membershipCurrent->getFileByType("idIdentityRecto")->getExtension());
//$message->attach($attachment);
$weight = $weight + filesize($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$membershipCurrent->getFileByType("idIdentityRecto")->getFileName());
$returnMessage = $this->sendMailNext($weight, $message, $bodyEmailGestion, $membershipCurrent, $attachment);
$message = $returnMessage['message'];
if($returnMessage['newMail']){
$weight = 0;
}
}
if($membershipCurrent->getFileByType("idIdentityVerso")){
$attachment = \Swift_Attachment::fromPath($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$membershipCurrent->getFileByType("idIdentityVerso")->getFileName(), "image/".$membershipCurrent->getFileByType("idIdentityVerso")->getExtension());
//$message->attach($attachment);
$weight = $weight + filesize($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$membershipCurrent->getFileByType("idIdentityVerso")->getFileName());
$returnMessage = $this->sendMailNext($weight, $message, $bodyEmailGestion, $membershipCurrent, $attachment);
$message = $returnMessage['message'];
if($returnMessage['newMail']){
$weight = 0;
}
}
}
if($membershipCurrent->getBa()->getTypeDePieceIdentite() == 1){
if($membershipCurrent->getFileByType("idPassportRecto")){
$attachment = \Swift_Attachment::fromPath($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$membershipCurrent->getFileByType("idPassportRecto")->getFileName(), "image/".$membershipCurrent->getFileByType("idPassportRecto")->getExtension());
//$message->attach($attachment);
$weight = $weight + filesize($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$membershipCurrent->getFileByType("idPassportRecto")->getFileName());
$returnMessage = $this->sendMailNext($weight, $message, $bodyEmailGestion, $membershipCurrent, $attachment);
$message = $returnMessage['message'];
if($returnMessage['newMail']){
$weight = 0;
}
}
}
if($membershipCurrent->getFileByType("idJustificatifFonds")){
$attachment = \Swift_Attachment::fromPath($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$membershipCurrent->getFileByType("idJustificatifFonds")->getFileName(), "image/".$membershipCurrent->getFileByType("idJustificatifFonds")->getExtension());
//$message->attach($attachment);
$weight = $weight + filesize($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$membershipCurrent->getFileByType("idJustificatifFonds")->getFileName());
$returnMessage = $this->sendMailNext($weight, $message, $bodyEmailGestion, $membershipCurrent, $attachment);
$message = $returnMessage['message'];
if($returnMessage['newMail']){
$weight = 0;
}
}
if($membershipCurrent->getFileByType("avisImposition")){
$attachment = \Swift_Attachment::fromPath($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$membershipCurrent->getFileByType("avisImposition")->getFileName(), "image/".$membershipCurrent->getFileByType("avisImposition")->getExtension());
//$message->attach($attachment);
$weight = $weight + filesize($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$membershipCurrent->getFileByType("avisImposition")->getFileName());
$returnMessage = $this->sendMailNext($weight, $message, $bodyEmailGestion, $membershipCurrent, $attachment);
$message = $returnMessage['message'];
if($returnMessage['newMail']){
$weight = 0;
}
}
if($membershipCurrent->getFileByType("idJustificatifDomicile")){
$attachment = \Swift_Attachment::fromPath($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$membershipCurrent->getFileByType("idJustificatifDomicile")->getFileName(), "image/".$membershipCurrent->getFileByType("idJustificatifDomicile")->getExtension());
//$message->attach($attachment);
$weight = $weight + filesize($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$membershipCurrent->getFileByType("idJustificatifDomicile")->getFileName());
$returnMessage = $this->sendMailNext($weight, $message, $bodyEmailGestion, $membershipCurrent, $attachment);
$message = $returnMessage['message'];
if($returnMessage['newMail']){
$weight = 0;
}
}
if($membershipCurrent->getBa()->getTypeDePieceIdentite() == 2){
if($membershipCurrent->getFileByType("idTitreSejourRecto")){
$attachment = \Swift_Attachment::fromPath($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$membershipCurrent->getFileByType("idTitreSejourRecto")->getFileName(), "image/".$membershipCurrent->getFileByType("idTitreSejourRecto")->getExtension());
//$message->attach($attachment);
$weight = $weight + filesize($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$membershipCurrent->getFileByType("idTitreSejourRecto")->getFileName());
$returnMessage = $this->sendMailNext($weight, $message, $bodyEmailGestion, $membershipCurrent, $attachment);
$message = $returnMessage['message'];
if($returnMessage['newMail']){
$weight = 0;
}
}
if($membershipCurrent->getFileByType("idTitreSejourVerso")){
$attachment = \Swift_Attachment::fromPath($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$membershipCurrent->getFileByType("idTitreSejourVerso")->getFileName(), "image/".$membershipCurrent->getFileByType("idTitreSejourVerso")->getExtension());
//$message->attach($attachment);
$weight = $weight + filesize($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$membershipCurrent->getFileByType("idTitreSejourVerso")->getFileName());
$returnMessage = $this->sendMailNext($weight, $message, $bodyEmailGestion, $membershipCurrent, $attachment);
$message = $returnMessage['message'];
if($returnMessage['newMail']){
$weight = 0;
}
}
}
if($membershipCurrent->getBa()->getVersementProgramme() == 1 || $membershipCurrent->getBa()->getMoyenDeVersement() == 3){
if($membershipCurrent->getFileByType("rib")){
$attachment = \Swift_Attachment::fromPath($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$membershipCurrent->getFileByType("rib")->getFileName(), "image/".$membershipCurrent->getFileByType("rib")->getExtension());
//$message->attach($attachment);
$weight = $weight + filesize($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$membershipCurrent->getFileByType("rib")->getFileName());
$returnMessage = $this->sendMailNext($weight, $message, $bodyEmailGestion, $membershipCurrent, $attachment);
$message = $returnMessage['message'];
if($returnMessage['newMail']){
$weight = 0;
}
}
}
if($membershipCurrent->getBa()->getDateCarteCombattant()){
if($membershipCurrent->getFileByType("carteCombattantRecto")){
$attachment = \Swift_Attachment::fromPath($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$membershipCurrent->getFileByType("carteCombattantRecto")->getFileName(), "image/".$membershipCurrent->getFileByType("carteCombattantRecto")->getExtension());
//$message->attach($attachment);
$weight = $weight + filesize($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$membershipCurrent->getFileByType("carteCombattantRecto")->getFileName());
$returnMessage = $this->sendMailNext($weight, $message, $bodyEmailGestion, $membershipCurrent, $attachment);
$message = $returnMessage['message'];
if($returnMessage['newMail']){
$weight = 0;
}
}
if($membershipCurrent->getFileByType("carteCombattantVerso")){
$attachment = \Swift_Attachment::fromPath($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$membershipCurrent->getFileByType("carteCombattantVerso")->getFileName(), "image/".$membershipCurrent->getFileByType("carteCombattantVerso")->getExtension());
//$message->attach($attachment);
$weight = $weight + filesize($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$membershipCurrent->getFileByType("carteCombattantVerso")->getFileName());
$returnMessage = $this->sendMailNext($weight, $message, $bodyEmailGestion, $membershipCurrent, $attachment);
$message = $returnMessage['message'];
if($returnMessage['newMail']){
$weight = 0;
}
}
}
if($membershipCurrent->getBa()->getDateReconnaisanceNation()){
if($membershipCurrent->getFileByType("titreReconnaissanceRecto")){
$attachment = \Swift_Attachment::fromPath($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$membershipCurrent->getFileByType("titreReconnaissanceRecto")->getFileName(), "image/".$membershipCurrent->getFileByType("titreReconnaissanceRecto")->getExtension());
//$message->attach($attachment);
$weight = $weight + filesize($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$membershipCurrent->getFileByType("titreReconnaissanceRecto")->getFileName());
$returnMessage = $this->sendMailNext($weight, $message, $bodyEmailGestion, $membershipCurrent, $attachment);
$message = $returnMessage['message'];
if($returnMessage['newMail']){
$weight = 0;
}
}
if($membershipCurrent->getFileByType("titreReconnaissanceVerso")){
$attachment = \Swift_Attachment::fromPath($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$membershipCurrent->getFileByType("titreReconnaissanceVerso")->getFileName(), "image/".$membershipCurrent->getFileByType("titreReconnaissanceVerso")->getExtension());
//$message->attach($attachment);
$weight = $weight + filesize($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$membershipCurrent->getFileByType("titreReconnaissanceVerso")->getFileName());
$returnMessage = $this->sendMailNext($weight, $message, $bodyEmailGestion, $membershipCurrent, $attachment);
$message = $returnMessage['message'];
if($returnMessage['newMail']){
$weight = 0;
}
}
}
if($membershipCurrent->getBa()->getDateTranscriptionMention()){
if($membershipCurrent->getFileByType("reportMentionRecto")){
$attachment = \Swift_Attachment::fromPath($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$membershipCurrent->getFileByType("reportMentionRecto")->getFileName(), "image/".$membershipCurrent->getFileByType("reportMentionRecto")->getExtension());
//$message->attach($attachment);
$weight = $weight + filesize($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$membershipCurrent->getFileByType("reportMentionRecto")->getFileName());
$returnMessage = $this->sendMailNext($weight, $message, $bodyEmailGestion, $membershipCurrent, $attachment);
$message = $returnMessage['message'];
if($returnMessage['newMail']){
$weight = 0;
}
}
}
//Facultatif file
if($membershipCurrent->getFileByType("idJustificatifAutreFacultatif")){
$attachment = \Swift_Attachment::fromPath($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$membershipCurrent->getFileByType("idJustificatifAutreFacultatif")->getFileName(), "image/".$membershipCurrent->getFileByType("idJustificatifAutreFacultatif")->getExtension());
//$message->attach($attachment);
$weight = $weight + filesize($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$membershipCurrent->getFileByType("idJustificatifAutreFacultatif")->getFileName());
$returnMessage = $this->sendMailNext($weight, $message, $bodyEmailGestion, $membershipCurrent, $attachment);
$message = $returnMessage['message'];
if($returnMessage['newMail']){
$weight = 0;
}
}
//Justificatif gain jeux
if($membershipCurrent->getFileByType("justificatifFondsGainJeux")){
$attachment = \Swift_Attachment::fromPath($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$membershipCurrent->getFileByType("justificatifFondsGainJeux")->getFileName(), "image/".$membershipCurrent->getFileByType("justificatifFondsGainJeux")->getExtension());
//$message->attach($attachment);
$weight = $weight + filesize($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$membershipCurrent->getFileByType("justificatifFondsGainJeux")->getFileName());
$returnMessage = $this->sendMailNext($weight, $message, $bodyEmailGestion, $membershipCurrent, $attachment);
$message = $returnMessage['message'];
if($returnMessage['newMail']){
$weight = 0;
}
}
//OtherFilesOrigineFond
$numberFile = 1;
foreach ($membershipCurrent->getFileSends() as $file) {
if($file->getType() == "other-file-origine-fond"){
$attachment = \Swift_Attachment::fromPath($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$file->getFileName(), "image/".$file->getExtension());
//$message->attach($attachment);
$weight = $weight + filesize($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$file->getFileName());
$returnMessage = $this->sendMailNext($weight, $message, $bodyEmailGestion, $membershipCurrent, $attachment);
$message = $returnMessage['message'];
if($returnMessage['newMail']){
$weight = 0;
}
$numberFile++;
}
}
//OtherFiles
$numberFile = 1;
foreach ($membershipCurrent->getFileSends() as $file) {
if($file->getType() == "other-file"){
$attachment = \Swift_Attachment::fromPath($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$file->getFileName(), "image/".$file->getExtension());
//$message->attach($attachment);
$weight = $weight + filesize($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$file->getFileName());
$returnMessage = $this->sendMailNext($weight, $message, $bodyEmailGestion, $membershipCurrent, $attachment);
$message = $returnMessage['message'];
if($returnMessage['newMail']){
$weight = 0;
}
$numberFile++;
}
}
if(!$membershipCurrent->getMailSendGestion()){
$this->mailer->send($message);
$membershipCurrent->setMailSendGestion(true);
$this->em->persist($membershipCurrent);
$this->em->flush();
}
return new Response(true);
}
function sendMailNext($weight, $message, $bodyEmailGestion, $membershipCurrent, $attachment){
if($weight < 5000000){
$message->attach($attachment);
return array(
"message" => $message,
"newMail" => false
);
}
else{
if(!$membershipCurrent->getMailSendGestion()){
$this->mailer->send($message);
}
$mailNoReply = $this->getParameter('mail_no_reply');
$senderName = $this->getParameter('sender_name');
$mailGestion = $this->getParameter('mail_gestion');
$bodyEmailGestion = $this->renderView(
'email/sendFilesSignGestion.html.twig',
array('membership' => $membershipCurrent)
);
$message = (new \Swift_Message("Une adhésion a été signée électroniquement - Suite"))
->setSubject("Une adhésion a été signée électroniquement - Suite")
->setFrom(array($mailNoReply => $senderName))
->setTo(array($mailGestion => $senderName))
->setBody($bodyEmailGestion,'text/html')
;
$message->attach($attachment);
return array(
"message" => $message,
"newMail" => true
);
}
}
/**
* @Route("/systempay/payment/{membershipID}", name="yousign_payment_end")
*/
public function member_payment_end(Request $request, $membershipID){
//$userCurrent = $this->get('security.token_storage')->getToken()->getUser();
$membershipCurrent = $this->em
->getRepository(Membership::class)
->find($membershipID);
$membershipCurrent->setStatus("PAYBYCUSTOMER");
$this->em->persist($membershipCurrent);
$this->em->flush();
$supportedHashAlgorithm = array('sha256_hmac');
/* check if the hash algorithm is supported */
if (!in_array($_POST['kr-hash-algorithm'], $supportedHashAlgorithm)) {
return "Error 1.1";
exit;
}
/* on some servers, / can be escaped */
$krAnswer = str_replace('\/', '/', $_POST['kr-answer']);
/* if key is not defined, we use kr-hash-key POST parameter to choose it */
if (is_null($key)) {
if ($_POST['kr-hash-key'] == "sha256_hmac") {
$key = $this->_hashKey;
} elseif ($_POST['kr-hash-key'] == "password") {
$key = $this->_password;
} else {
return "Error 1.2";
}
}
$calculatedHash = hash_hmac('sha256', $krAnswer, $key);
$this->_lastCalculatedHash = $calculatedHash;
/* return true if calculated hash and sent hash are the same */
//return new JsonResponse(($calculatedHash == $_POST['kr-hash']));
$mailNoReply = $this->getParameter('mail_no_reply');
$senderName = $this->getParameter('sender_name');
$urlLogin = $this->generateUrl('app_login',
array(
),
UrlGeneratorInterface::ABSOLUTE_URL);
//Customer
$bodyEmail = $this->renderView(
'email/paymentEndSuccess.html.twig',
array('membership' => $membershipCurrent, "urlLogin" => $urlLogin)
);
$message = (new \Swift_Message("Paiement"))
->setSubject("Paiement")
->setFrom(array($mailNoReply => $senderName))
->setTo(array($membershipCurrent->getUser()->getEmail() => $senderName))
->setBody($bodyEmail,'text/html');
$this->mailer->send($message);
//For GESTION
$mailGestion = $this->getParameter('mail_gestion');
$bodyEmail = $this->renderView(
'email/paymentEndGestionSuccess.html.twig',
array('membership' => $membershipCurrent, "urlLogin" => $urlLogin)
);
$message = (new \Swift_Message("Nouveau paiement"))
->setSubject("Nouveau paiement")
->setFrom(array($mailNoReply => $senderName))
->setTo(array($mailGestion => $senderName))
->setBody($bodyEmail,'text/html');
$this->mailer->send($message);
return new Response(
"true"
);
}
/**
* @Route("customer/{userID}/dic-view-html", name="customer_dic_view_html")
*/
public function dicViewHtml(Request $request, $userID){
$customer = $this->em
->getRepository(User::class)
->find($userID);
if ( !$customer ) {
$this->addFlash('danger', 'Cet utilisateur n\'existe pas');
return $this->redirectToRoute('customer_list');
}
$this->utils->generateDic($customer);
return $this->render('membership/pdf/dicView.html.twig', [
'dic' => $customer->getCurrentMemberships()->getDic(),
]);
}
/**
* @Route("customer/{userID}/fic-view-html", name="customer_fic_view_html")
*/
public function ficViewHtml(Request $request, $userID){
$customer = $this->em
->getRepository(User::class)
->find($userID);
if ( !$customer ) {
$this->addFlash('danger', 'Cet utilisateur n\'existe pas');
return $this->redirectToRoute('customer_list');
}
$this->utils->generateFic($customer);
return $this->render('membership/pdf/ficView.html.twig', [
'fic' => $customer->getCurrentMemberships()->getFic(),
]);
}
/**
* @Route("customer/{userID}/ba-view-html", name="customer_ba_view_html")
*/
public function baViewHtml(Request $request, $userID){
$customer = $this->em
->getRepository(User::class)
->find($userID);
if ( !$customer ) {
$this->addFlash('danger', 'Cet utilisateur n\'existe pas');
return $this->redirectToRoute('customer_list');
}
//$this->utils->generateBa($customer);
return $this->render('membership/pdf/baView.html.twig', [
'ba' => $customer->getCurrentMemberships()->getBa(),
]);
}
/**
* @Route("customer/{userID}/sepa-view-html", name="customer_sepa_view_html")
*/
public function sepaViewHtml(Request $request, $userID){
$customer = $this->em
->getRepository(User::class)
->find($userID);
if ( !$customer ) {
$this->addFlash('danger', 'Cet utilisateur n\'existe pas');
return $this->redirectToRoute('customer_list');
}
$this->utils->generateSepa($customer);
return $this->render('membership/pdf/sepaView.html.twig', [
'ba' => $customer->getCurrentMemberships()->getBa(),
]);
}
/**
* Vérifie si une personne est mineure en fonction de sa date de naissance
* @param string $dateNaissance Date de naissance au format "JJ/MM/AAAA"
* @return bool true si la personne est mineure, false sinon
*/
function isMineur($dateNaissance) {
// Découpage de la chaîne de caractères
$parts = explode('/', $dateNaissance);
// Vérification du format
if (count($parts) !== 3) {
throw new Exception("Format de date incorrect. Utilisez JJ/MM/AAAA");
}
// Récupération des composants de la date
$jour = (int)$parts[0];
$mois = (int)$parts[1];
$annee = (int)$parts[2];
// Création d'un objet DateTime pour la date de naissance
$dateNaissanceObj = \DateTime::createFromFormat('d/m/Y', $dateNaissance);
// Date actuelle
$dateActuelle = new \DateTime();
// Calcul de la différence entre les deux dates
$difference = $dateNaissanceObj->diff($dateActuelle);
$age = $difference->y;
// En France et dans la plupart des pays, on est mineur si on a moins de 18 ans
return $age < 18;
}
}