src/Controller/LidcardClubController.php line 25

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Form\RenewMembershipCartViewClubFormType;
  4. use App\Form\RenewMembershipClubFormType;
  5. use App\Services\CheckwebsitesettingService;
  6. use App\Services\GetPricesForMembershipService;
  7. use App\Services\MollieService;
  8. use App\Services\RenewMembershipFactory;
  9. use MultilingualBundle\Service\DocumentLookupService;
  10. use Pimcore\Model\DataObject\Attendees;
  11. use Pimcore\Model\DataObject\Campscourse;
  12. use Pimcore\Model\DataObject\Fieldcollection;
  13. use Pimcore\Model\DataObject\Fieldcollection\Data\Leden;
  14. use Pimcore\Model\DataObject\LidKaart;
  15. use Pimcore\Twig\Extension\Templating\PimcoreUrl;
  16. use Symfony\Component\HttpFoundation\RedirectResponse;
  17. use Symfony\Component\HttpFoundation\Request;
  18. use Symfony\Component\HttpFoundation\Response;
  19. use Symfony\Component\HttpFoundation\Session\SessionInterface;
  20. use Symfony\Component\Routing\Annotation\Route;
  21. class LidcardClubController extends BaseController
  22. {
  23.     protected $checkwebsitesettingService;
  24.     protected $inotherlang;
  25.     protected $pimcoreUrl;
  26.     public function __construct(CheckwebsitesettingService $checkwebsitesettingServiceDocumentLookupService $inotherlangPimcoreUrl $pimcoreUrl)
  27.     {
  28.         $this->checkwebsitesettingService $checkwebsitesettingService;
  29.         $this->inotherlang $inotherlang;
  30.         $this->pimcoreUrl $pimcoreUrl;
  31.     }
  32.     /**
  33.      * @Route("{_locale}/lidkaart", name="renew_membership")
  34.      */
  35.     public function renewMembership(Request $requestSessionInterface $session): Response
  36.     {
  37.         $form $this->createForm(RenewMembershipClubFormType::class);
  38.         $form->handleRequest($request);
  39.         if ($form->isSubmitted() && $form->isValid()) {
  40.             // Process form data here, for example, persist it to the database
  41.             $data $form->getData();
  42.             $session->set('membership_data'$data);
  43.             return $this->redirectToRoute("renew_membership-cart-view");
  44.         }
  45.         return $this->render('lidkaart/renew-membership.html.twig', [
  46.             'form' => $form->createView(),
  47.         ]);
  48.     }
  49.     /**
  50.      * @Route("{_locale}/lidkaart-cart-view", name="renew_membership-cart-view")
  51.      * @throws \Exception
  52.      */
  53.     public function renewMembershipCartView(Request $requestSessionInterface $session): Response
  54.     {
  55.         $memberCard = new GetPricesForMembershipService();
  56.         $prices $memberCard->getPrices();
  57.         // Retrieve the data from the session
  58.         $dataclient $session->get('membership_data');
  59.         if ($dataclient) {
  60.             $form $this->createForm(RenewMembershipCartViewClubFormType::class);
  61.             if ($dataclient['club'] === 'sailing'){
  62.                 $form->remove('loodstext');
  63.                 $form->remove('loods');
  64.                 $type "Z";
  65.             }else{
  66.                 $form->remove('parkingtext');
  67.                 $form->remove('parking');
  68.                 $type "S";
  69.             }
  70.             $form->handleRequest($request);
  71.             if ($form->isSubmitted() && $form->isValid()) {
  72.                 $data =  $form->getData();
  73.                 $dataclient += $data;
  74.                 $newsub = new RenewMembershipFactory($this->pimcoreUrl);
  75.                 $newsub->createRenewedMembership($dataclient$type);
  76.                 $session->remove('membership_data');
  77.             }
  78.             return $this->render('lidkaart/cart-view-lidcard.html.twig', [
  79.                 'form' => $form->createView(),
  80.                 'club' => $dataclient['club'],
  81.                 'membershiptype' => $dataclient['membershipType'],
  82.                 'type'=> $type,
  83.                 'members'=>  $dataclient['members'],
  84.                 'prices' => $prices
  85.             ]);
  86.         }
  87.         return $this->redirectToRoute("renew_membership");
  88.     }
  89.     /**
  90.      * Checkpayment cart page
  91.      *
  92.      * @Route("{_locale}/payconnect/checkpayment-renew", name="checkpayment-page-renew")
  93.      *
  94.      * @param Request $request
  95.      * @return Response
  96.      * @throws \Exception
  97.      */
  98.     public function checkpaymentAction(Request $request)
  99.     {
  100.         if ($request->isMethod('POST')) {
  101.             $mollie = new MollieService();
  102.             $LidKaart LidKaart::getById($request->get('id-pay'null));
  103.             $paymentId $LidKaart->getPaymentId();
  104.             $response $mollie->checkPayment($paymentId);
  105.             // Process response
  106.             if ($response) {
  107.                 $payment $response;
  108.                 $this->sendNotificationFromOrder($payment$LidKaart);
  109.             }
  110.         } else {
  111.             return $this->redirect("/" $this->language);
  112.         }
  113.         return $this->redirect("/" $this->language);
  114.     }
  115.     /**
  116.      * Redirectpayment cart page
  117.      *
  118.      * @Route("{_locale}/redirectpayment-renew", name="redirectpayment-page-renew")
  119.      *
  120.      * @param Request $request
  121.      * @return Response
  122.      * @throws \Exception
  123.      */
  124.     public function redirectpaymentAction(Request $request\Pimcore\Config\Config $websiteConfig)
  125.     {
  126.         if ($this->checkwebsitesettingService->check("payment_successfull_lid""document")) {
  127.             $paymentSuccesfullDocument $websiteConfig->get('payment_successfull_lid');
  128.         }
  129.         if ($paymentSuccesfullDocument) {
  130.             $language $request->getLocale();
  131.             $paymentObject $request->get('id-pay');
  132.             $returnAddress $this->inotherlang->getLocalizedDocument($paymentSuccesfullDocument"$language") . '?o=' $paymentObject;
  133.             return $this->redirect($returnAddress);
  134.         }
  135.     }
  136.     /**
  137.      * Redirectpayment cart page
  138.      *
  139.      * @Route("{_locale}/bedankt-lid", name="thanks-page-lid")
  140.      *
  141.      * @param Request $request
  142.      * @return Response
  143.      * @throws \Exception
  144.      */
  145.     public function redirectpaymentviewLidAction(Request $request)
  146.     {
  147.         if (!$this->editmode) {
  148.             $language $request->getLocale();
  149.             $paymentItem LidKaart::getById($request->get('o'null));
  150.             if ($paymentItem) {
  151.                 return $this->render('services/cart-redirect-payment.html.twig', [
  152.                     'paymentItem' => $paymentItem
  153.                 ]);
  154.             } else {
  155.                 return $this->redirect("/" $language);
  156.             }
  157.         } else {
  158.             $paymentItem null;
  159.             return $this->render('services/cart-redirect-payment.html.twig', [
  160.                 'paymentItem' => $paymentItem
  161.             ]);
  162.         }
  163.     }
  164.     public function sendNotificationFromOrder($payment$lidkaart)
  165.     {
  166.         try {
  167.             $order_id $payment->metadata->order_id;
  168.             $invoicenumber $payment->metadata->invoicenumber;
  169.             $paymentObject LidKaart::getById($order_id);
  170.             $orderIdPimcore $paymentObject->getKey();
  171.             $keyattendees $lidkaart->getKey();
  172.             if ($payment->isPaid() && $paymentObject) {
  173.                 if (!$paymentObject->getPayed()) {
  174.                     $dateToday \Carbon\Carbon::now();
  175.                     $paymentObject->setPayed(true);
  176.                     $paymentObject->setDatePayment($dateToday);
  177.                     $paymentObject->setPublished(true);
  178.                     $paymentObject->save();
  179.                     $mailData $this->getMailData($paymentObject);
  180.                     $emailTemplate 'lid-mail-user';
  181.                     $emailTemplateAdmin 'lid-mail-club';
  182.                     //send mail + Order voor bevestingen
  183.                     if ($this->checkwebsitesettingService->check((string)$emailTemplate"document")) {
  184.                         $getEmailTemplate \Pimcore\Model\WebsiteSetting::getByName((string)$emailTemplate);
  185.                         $getEmailTemplateConfig $getEmailTemplate->getData();
  186.                         $emailDocument $this->inotherlang->getLocalizedDocument($getEmailTemplateConfig'nl');
  187.                     }
  188.                     if ($this->checkwebsitesettingService->check((string)$emailTemplateAdmin"document")) {
  189.                         $getEmailTemplateAdmin \Pimcore\Model\WebsiteSetting::getByName((string)$emailTemplateAdmin);
  190.                         $getEmailTemplateConfigAdmin $getEmailTemplateAdmin->getData();
  191.                         $emailDocumentAdmin $this->inotherlang->getLocalizedDocument($getEmailTemplateConfigAdmin'nl');
  192.                     }
  193.                     error_log(date('l jS \of F Y h:i:s A') . " Payment for $keyattendees succesfull paid \n"3PIMCORE_LOG_DIRECTORY "/payments-lidkaart.log");
  194.                     //send email to seller
  195.                     if (!$paymentObject->getMailsend()) {
  196.                         //send email to seller
  197.                         (new \Pimcore\Mail())
  198.                             ->from('noreply@zsg.be')
  199.                             ->subject('Order lidkaart : ' $invoicenumber)
  200.                             ->setDocument($emailDocumentAdmin)
  201.                             ->setParams($mailData)
  202.                             ->send();
  203.                         // send customer e-mail confirmation
  204.                         (new \Pimcore\Mail())
  205.                             ->to($paymentObject->getEmailAddress())
  206.                             ->from('noreply@zsg.be')
  207.                             ->subject('Order  lidkaart: ' $invoicenumber)
  208.                             ->setParams($mailData)
  209.                             ->setDocument($emailDocument)
  210.                             ->send();
  211.                         $paymentObject->setMailsend(true);
  212.                         $paymentObject->save();
  213.                     }
  214.                     $paymentObject->save();
  215.                 }
  216.             } elseif ($payment->isOpen() == FALSE) {
  217.                 //send email to seller
  218. //                $mailSeller = new MailService();
  219. //                $documentSalesNotpaid = $inotherlang->getLocalizedDocument($config->payment_notice);
  220. //                $mailSeller->setSubject($translator->trans("Order ").' '.$invoicenumber.' '.$translator->trans("is not paid"));
  221. //                $mailSeller->setDocument($documentSalesNotpaid);
  222. //                $mailSeller->setParams($mailData);
  223. //                $mailSeller->send();
  224.                 /*
  225.                  * The payment isn't paid and isn't open anymore. We can assume it was aborted.
  226.                  */
  227.                 error_log(date('l jS \of F Y h:i:s A') . " Problem with $keyattendees, not paid \n"3PIMCORE_LOG_DIRECTORY "/payments-lidkaart.log");
  228.             }
  229.             $paymentObject->save();
  230.             header('HTTP/1.1 200 OK');
  231.             die();
  232.         } catch (Mollie_API_Exception $e) {
  233.             echo "API call failed: " htmlspecialchars($e->getMessage());
  234.         }
  235.     }
  236.     protected function getMemberProperties($member): array
  237.     {
  238.         $fields = [
  239.             'firstName' => 'getVoornaam',
  240.             'WWSV' => 'getWWSV_licentienummer',
  241.             'lastName' => 'getAchternaam',
  242.             'gender' => 'getGender',
  243.             'birthDate' => 'getGeboortedatum',
  244.             'email' => 'getEmail',
  245.             'nationality' => 'getNationaliteit',
  246.             'sport1' => 'getSporttakOne',
  247.             'sport2' => 'getSporttakTwo',
  248.             'telephone1' => 'getTelefoon',
  249.             'mobile' => 'getGsm',
  250.         ];
  251.         $memberData = [];
  252.         foreach ($fields as $key => $method) {
  253.             $memberData[$key] = $member->$method();
  254.         }
  255.         return $memberData;
  256.     }
  257.     private function getMailData(LidKaart $paymentObject): array
  258.     {
  259.         $mailData = [];
  260.         $mailData['Soort'] = $paymentObject->getMembershipType();
  261.         $mailData['Club'] = $paymentObject->getClub();
  262.         $mailData['countLeden'] = $paymentObject->getLedenKaart()?->getCount() ;
  263.         $mailData['kaartNummer'] = $paymentObject->getKaartnummer();
  264.         $mailData['amout'] = $paymentObject->getAmount();
  265.         $mailData['Opmerking'] = $paymentObject->getOpmerking();
  266.         $mailData['Email'] = $paymentObject->getOpmerking();
  267.         $mailData['Jaar'] = $paymentObject->getValidYear();
  268.         $mailData['Adres'] = $paymentObject->getStraat() . ' ' $paymentObject->getStraatNummer() . ' ' $paymentObject->getPostcode()  . ' ' $paymentObject->getStad()  . ' ' $paymentObject->getLand();
  269.         if($mailData['Club'] == "sailing"){
  270.             $mailData['loodsparking'] = $paymentObject->getParking();
  271.             $mailData['loodsparkingnummer'] = $paymentObject->getNummer_parking();
  272.         }else{
  273.             $mailData['loodsparking'] = $paymentObject->getLoods();
  274.             $mailData['loodsparkingnummer'] = $paymentObject->getNummer_loods();
  275.         }
  276.         $leden '';
  277.         foreach ($paymentObject->getLedenKaart() as $lid) {
  278.             /** @var $lid Fieldcollection\Data\Leden */
  279.             $infoLid $this->getMemberProperties($lid);
  280.             $leden .= '<div>';
  281.             $leden .= '<p><strong>Naam:</strong> ' $infoLid['firstName'] . ' ' $infoLid['lastName'] . '</p>';
  282.             $leden .= '<p><strong>E-mail:</strong> ' $infoLid['email'] . '</p>';
  283.             $leden .= '<p><strong>WWSV Nummer:</strong> ' $infoLid['WWSV'] . '</p>';
  284.             $leden .= '<p><strong>Geslacht:</strong> ' $infoLid['gender'] . '</p>';
  285.             $leden .= '<p><strong>Geboortedatum:</strong> ' $infoLid['birthDate'] . '</p>';
  286.             $leden .= '<p><strong>Nationaliteit:</strong> ' $infoLid['nationality'] . '</p>';
  287.             $leden .= '<p><strong>Sport 1:</strong> ' $infoLid['sport1'] . '</p>';
  288.             $leden .= '<p><strong>Sport 2:</strong> ' $infoLid['sport2'] . '</p>';
  289.             $leden .= '<p><strong>Telefoon:</strong> ' $infoLid['telephone1'] . '</p>';
  290.             $leden .= '<p><strong>Mobile:</strong> ' $infoLid['mobile'] . '</p>';
  291.             $leden .= '</div>';
  292.             $leden .= '</br>';
  293.         }
  294.         $mailData["kaarthouders"] =  $leden;
  295.         return $mailData;
  296.     }
  297. }