src/Controller/Frontend/MemberController.php line 65

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Frontend;
  3. use App\Entity\MainSlider;
  4. use App\Entity\Talent;
  5. use App\Entity\TalentRole;
  6. use App\Entity\RoleType;
  7. use App\Entity\ProductMeta;
  8. use App\Entity\PageInformation;
  9. use App\Entity\Transaction;
  10. use App\Services\Helper;
  11. use App\Services\ManagerMail;
  12. use Exception;
  13. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  14. use Symfony\Component\HttpFoundation\JsonResponse;
  15. use Symfony\Component\HttpFoundation\Request;
  16. use Symfony\Component\Routing\Annotation\Route;
  17. use Sermepa\Tpv\Tpv;
  18. class MemberController extends AbstractController
  19. {
  20.     /**
  21.      * @Route("/{_locale}/recover-password")
  22.      */
  23.     public function recoveryPasswordAction(){
  24.         return $this->render('security/forgot_password.html.twig');
  25.     }
  26.     /**
  27.      * @Route("/{_locale}", name="homepage" , defaults={"_locale": "en"})
  28.      */
  29.     public function indexAction(Request $request)
  30.     {
  31.         if ($request->get('_locale') == "login") {
  32.             return $this->redirectToRoute('app_login', ['_locale' => 'en']);
  33.         }
  34.         $em $this->getDoctrine()->getManager();
  35.         $talentRoles $em->getRepository(TalentRole::class)->findBy([],['orderTalentRole' => 'ASC']);
  36.         $slider $em->getRepository(MainSlider::class)->findBy([],['orderSlider' => 'ASC']);
  37.         $tempArray = [];
  38.         foreach($talentRoles as $key => $talentRole){
  39.             $tempArray[$key]['role'] = $talentRole;
  40.             $tempArray[$key]['talent'] = false;
  41.             $talents $em->getRepository(Talent::class)->findBy(['idTalentRole' => $talentRole'newTalent' => 1]);
  42.             if($talents || $talentRole->getName() == 'ROLE_PRODUCTION_DESSIGN'){
  43.                 $tempArray[$key]['talent'] = true;
  44.             }
  45.             
  46.         }
  47.         $talentRoles $tempArray;
  48.         return $this->render('frontend/homepage.html.twig',array(
  49.             'talentRoles' => $talentRoles,
  50.             'images' => $slider
  51.         ));
  52.     }
  53.     /**
  54.      * @Route("/{_locale}/about", name="about")
  55.      */
  56.     public function aboutAction(){
  57.         $em $this->getDoctrine()->getManager();
  58.         $talentRoles $em->getRepository(TalentRole::class)->findBy([],['orderTalentRole' => 'ASC']);
  59.         $tempArray = [];
  60.         foreach($talentRoles as $key => $talentRole){
  61.             $tempArray[$key]['role'] = $talentRole;
  62.             $tempArray[$key]['talent'] = false;
  63.             $talents $em->getRepository(Talent::class)->findBy(['idTalentRole' => $talentRole'newTalent' => 1]);
  64.             if($talents || $talentRole->getName() == 'ROLE_PRODUCTION_DESSIGN'){
  65.                 $tempArray[$key]['talent'] = true;
  66.             }
  67.             
  68.         }
  69.         $page $em->getRepository(PageInformation::class)->findOneBy(['pageName' => 'about']);
  70.         $talentRoles $tempArray;
  71.         return $this->render('frontend/about.html.twig',array(
  72.             'talentRoles' => $talentRoles,
  73.             'page' => $page,
  74.         ));
  75.     }
  76.     /**
  77.      * @Route("/{_locale}/contact", name="contact")
  78.      */
  79.     public function contactUsAction(){
  80.         $em $this->getDoctrine()->getManager();
  81.         $talentRoles $em->getRepository(TalentRole::class)->findBy([],['orderTalentRole' => 'ASC']);
  82.         $tempArray = [];
  83.         foreach($talentRoles as $key => $talentRole){
  84.             $tempArray[$key]['role'] = $talentRole;
  85.             $tempArray[$key]['talent'] = false;
  86.             $talents $em->getRepository(Talent::class)->findBy(['idTalentRole' => $talentRole'newTalent' => 1]);
  87.             if($talents || $talentRole->getName() == 'ROLE_PRODUCTION_DESSIGN'){
  88.                 $tempArray[$key]['talent'] = true;
  89.             }
  90.             
  91.         }
  92.         $talentRoles $tempArray;
  93.         return $this->render('frontend/contact.html.twig',array(
  94.             'talentRoles' => $talentRoles
  95.         ));
  96.     }
  97.     /**
  98.      * @Route("/{_locale}/join", name="join")
  99.      */
  100.     public function joinUsAction(){
  101.         $em $this->getDoctrine()->getManager();
  102.         $talentRoles $em->getRepository(TalentRole::class)->findBy([],['orderTalentRole' => 'ASC']);
  103.         $tempArray = [];
  104.         foreach($talentRoles as $key => $talentRole){
  105.             $tempArray[$key]['role'] = $talentRole;
  106.             $tempArray[$key]['talent'] = false;
  107.             $talents $em->getRepository(Talent::class)->findBy(['idTalentRole' => $talentRole'newTalent' => 1]);
  108.             if($talents || $talentRole->getName() == 'ROLE_PRODUCTION_DESSIGN'){
  109.                 $tempArray[$key]['talent'] = true;
  110.             }
  111.             
  112.         }
  113.         $page $em->getRepository(PageInformation::class)->findOneBy(['pageName' => 'join']);
  114.         $talentRoles $tempArray;
  115.         return $this->render('frontend/join.html.twig',array(
  116.             'talentRoles' => $talentRoles,
  117.             'page' => $page
  118.         ));
  119.     }
  120.     /**
  121.      * @Route("/{_locale}/submit", name="submit")
  122.      */
  123.     public function submitAction(){
  124.         $em $this->getDoctrine()->getManager();
  125.         $talentRoles $em->getRepository(TalentRole::class)->findBy([],['orderTalentRole' => 'ASC']);
  126.         $tempArray = [];
  127.         foreach($talentRoles as $key => $talentRole){
  128.             $tempArray[$key]['role'] = $talentRole;
  129.             $tempArray[$key]['talent'] = false;
  130.             $talents $em->getRepository(Talent::class)->findBy(['idTalentRole' => $talentRole]);
  131.             if($talents || $talentRole->getName() == 'ROLE_PRODUCTION_DESSIGN'){
  132.                 $tempArray[$key]['talent'] = true;
  133.             }
  134.             
  135.         }
  136.         $page $em->getRepository(ProductMeta::class)->findOneBy(['url' => 'worksubmit']);
  137.         $talentRoles $tempArray;
  138.         return $this->render('frontend/library/submit.html.twig',array(
  139.             'talentRoles' => $talentRoles,
  140.             'page' => $page
  141.         ));
  142.     }
  143.     /**
  144.      * @Route("/{_locale}/library/librarysubmit")
  145.      */
  146.     public function librarySubmit(Request $requestManagerMail $manager_mail){
  147.         $em $this->getDoctrine()->getManager();
  148.         $helper = new Helper();
  149.         $talentRoles $em->getRepository(TalentRole::class)->findBy([],['orderTalentRole' => 'ASC']);
  150.         $tempArray = [];
  151.         $response = new JsonResponse();
  152.         /* TPV VARIABLES */
  153.         $dsMerchantMerchantCode $this->getParameter('merchant_code');
  154.         $dsMerchantCurrency $this->getParameter('merchant_currency');
  155.         $dsMerchantTerminal $this->getParameter('merchant_terminal');
  156.         $dsSecretKey $this->getParameter('merchant_key');
  157.         
  158.         $total=25;
  159.         $time time();
  160.         $idOrder $time;
  161.         $tradeName"We are Productive";
  162.         $session $request->getSession();
  163.         $formHasError 0;
  164.         $formMsgError "";
  165.         $formInputError "";
  166.         $parameters = [];
  167.         foreach ($request->request->all() as $key => $item) {
  168.             if ($key != '_csrf_token') {
  169.                 $parameters[$key] = $helper->sanitize($item);
  170.             }
  171.         };
  172.         try {
  173.             $name $parameters['name'];
  174.             $vimeourl $parameters['vimeourl'];
  175.             $email $parameters['email'];
  176.             $role $parameters['role'];
  177.             $nomname $parameters['nomname'];
  178.             $nomrole $parameters['nomrole'];
  179.             $director $parameters['director'];
  180.             $prodcompany $parameters['prodcompany'];
  181.             $brand $parameters['brand'];
  182.             $country $parameters['country'];
  183.             $subject 'Productive Network Work Submit';
  184.             $message $parameters['description'];
  185.             
  186.             $disclaimerAccept filter_var($parameters['acceptconditions'], FILTER_VALIDATE_BOOLEAN);
  187.             if(!$country){
  188.                 $formHasError 1;
  189.                 $formMsgError 'Please provide a valid country';
  190.                 $formInputError 'country';
  191.             }
  192.             if(!$name){
  193.                 $formHasError 1;
  194.                 $formMsgError 'Please provide a name';
  195.                 $formInputError 'name';
  196.             }
  197.             if(!$role){
  198.                 $formHasError 1;
  199.                 $formMsgError 'Please provide a role';
  200.                 $formInputError 'role';
  201.             }
  202.             if(!$nomname){
  203.                 $formHasError 1;
  204.                 $formMsgError 'Please provide a nominated name';
  205.                 $formInputError 'name';
  206.             }
  207.             if(!$nomrole){
  208.                 $formHasError 1;
  209.                 $formMsgError 'Please provide a nominated role';
  210.                 $formInputError 'name';
  211.             }
  212.             if(!$vimeourl){
  213.                 $formHasError 1;
  214.                 $formMsgError 'Please provide a Vimeo URL';
  215.                 $formInputError 'vimeourl';
  216.             }
  217.             if(!filter_var($emailFILTER_VALIDATE_EMAIL)){
  218.                 $formHasError 1;
  219.                 $formMsgError 'Please provide a valid email';
  220.                 $formInputError 'email';
  221.             }
  222.             if(!$subject){
  223.                 $formHasError 1;
  224.                 $formMsgError 'Please provide a valid subject';
  225.                 $formInputError 'subject';
  226.             }
  227.             
  228.             if(!$disclaimerAccept){
  229.                 $formHasError 1;
  230.                 $formMsgError 'Please accept the terms and conditions';
  231.                 $formInputError 'acceptconditions';
  232.             }
  233.             if($formHasError){
  234.                 $response->setStatusCode(500);
  235.                 $response->setData(array(
  236.                     'response' => 'error',
  237.                     'msg' => $formMsgError,
  238.                     'input' => $formInputError
  239.                 ));
  240.                 return $response;
  241.             }
  242.             /* SAVE DATA TO TRANSACTION */
  243.             $transaction = new Transaction();
  244.             $transaction->setIdOrder($idOrder);
  245.             $transaction->setCreationDate($time);
  246.             $transaction->setDetailsMember(json_encode($parameters));
  247.             $transaction->setTotal($total);
  248.             $transaction->setFinished(0);
  249.             $em->persist($transaction);
  250.             $em->flush();
  251.             
  252.             /* PAYMENT GATEWAY */
  253.             
  254.             $session->set('idOrder'$idOrder);
  255.             $redsys = new Tpv();
  256.             $redsys->setAmount($total);
  257.             $redsys->setOrder($time);
  258.             $redsys->setMerchantcode($dsMerchantMerchantCode);
  259.             $redsys->setCurrency($dsMerchantCurrency);
  260.             $redsys->setTransactiontype('0');
  261.             $redsys->setTerminal($dsMerchantTerminal);
  262.             $redsys->setMethod('C');
  263.             $redsys->setNotification($this->generateUrl('app_frontend_member_tpvnotification', [], 0));
  264.             $redsys->setUrlOk($this->generateUrl('transactionsuccess', [], 0));
  265.             $redsys->setUrlKo($this->generateUrl('transactionerror', [], 0));
  266.             $redsys->setVersion('HMAC_SHA256_V1');
  267.             $redsys->setTitular($name);
  268.             $redsys->setTradeName($tradeName);
  269.             $redsys->setProductDescription('Productive Network work submission');
  270.             $redsys->setLanguage('002');
  271.             $redsys->setAttributesSubmit('btn_submit''finishBoughtRedsys''Pay''display:none;');
  272.             $redsys->setEnvironment('live');
  273.             $signature $redsys->generateMerchantSignature($dsSecretKey);
  274.             $redsys->setMerchantSignature($signature);
  275.             $form $redsys->createForm();
  276.             
  277.             $response->setStatusCode(200);
  278.             $response->setData(array(
  279.                 'response' => 'success',
  280.                 'html' => $form,
  281.             ));
  282.             return $response;
  283.         } catch(Exception $e){
  284.             $session->set('idOrder'null);
  285.             $response->setStatusCode(500);
  286.             $response->setData(array(
  287.                 'response' => 'error',
  288.                 'msg' => 'Unexpected error',
  289.             ));
  290.             return $response;
  291.         }
  292.     }
  293.     /**
  294.      * @Route("/{_locale}/submit/tpvnotification")
  295.      */
  296.     public function tpvNotification(Request $requestManagerMail $manager_mail){
  297.         $em $this->getDoctrine()->getManager();
  298.         $response = new JsonResponse();
  299.         $adminMailAddress='kate@productive.es';
  300.         $subject 'Productive Network Work Submission';
  301.         $session $request->getSession();
  302.         try{
  303.             $redsys = new Tpv();
  304.             $key $this->getParameter('merchant_key');
  305.         
  306.             $parameters $redsys->getMerchantParameters($_POST["Ds_MerchantParameters"]);
  307.             $DsResponse $parameters["Ds_Response"];
  308.             $DsResponse += 0;
  309.             if ($redsys->check($key$_POST) && $DsResponse <= 99) {
  310.                 $idOrder $parameters['Ds_Order'];
  311.                 $transaction $em->getRepository(Transaction::class)->findOneBy(['idOrder' => $idOrder]);
  312.                 $transaction->setFinished(1);
  313.                 
  314.                 $em->persist($transaction);
  315.                 $em->flush();
  316.                 $detailsMember json_decode($transaction->getDetailsMember(), true);
  317.                 /* DETAILS MEMBER */
  318.                 $name $detailsMember['name'];
  319.                 $email $detailsMember['email'];
  320.                 $role $detailsMember['role'];
  321.                 $nomname $detailsMember['nomname'];
  322.                 $nomrole $detailsMember['nomrole'];
  323.                 $director $detailsMember['director'];
  324.                 $prodcompany $detailsMember['prodcompany'];
  325.                 $brand $detailsMember['brand'];
  326.                 $serviceprodcompany $detailsMember['serviceprodcompany'];
  327.                 $subject $detailsMember['name'];
  328.                 $message $detailsMember['description'];
  329.                 $vimeourl $detailsMember['vimeourl'];
  330.                 $country $detailsMember['country'];
  331.                 
  332.                 $manager_mail->templeteOne([
  333.                     'to' => $adminMailAddress,
  334.                     'subject' => $subject,
  335.                     'cco' => null,
  336.                     'body' =>
  337.                         $this->renderView('templates/emails/library/contact_mail.html.twig', array(
  338.                             'name' => $name,
  339.                             'email' => $email,
  340.                             'role' => $role,
  341.                             'nomname' => $nomname,
  342.                             'nomrole' => $nomrole,
  343.                             'director' => $role,
  344.                             'prodcompany' => $prodcompany,
  345.                             'brand' => $brand,
  346.                             'serviceprodcompany' => $serviceprodcompany,
  347.                             'subject' => $subject,
  348.                             'message' => $message,
  349.                             'vimeourl' => $vimeourl,
  350.                             'country' => $country,
  351.                     ))
  352.                 ]);
  353.                 $manager_mail->templeteOne([
  354.                     'to' => $email,
  355.                     'subject' => $subject,
  356.                     'cco' => $adminMailAddress,
  357.                     'body' =>
  358.                         $this->renderView('templates/emails/library/contact_client_mail.html.twig', array())
  359.                 ]);
  360.                 
  361.                 $response->setStatusCode(200);
  362.                 $response->setData(array(
  363.                     'response' => 'success',
  364.                     'msg' => 'The message has been sent successfully.'
  365.                 ));
  366.                 return $response;
  367.             
  368.             } else {
  369.                 //acciones a realizar si ha sido erroneo
  370.             }
  371.         } catch (TpvException $e) {
  372.             echo $e->getMessage();
  373.         }
  374.         return $response;
  375.     }
  376.     /**
  377.      * @Route("/{_locale}/transaction/success", name="transactionsuccess")
  378.      */
  379.     public function transactionSuccess(){
  380.         $em $this->getDoctrine()->getManager();
  381.         $talentRoles $em->getRepository(TalentRole::class)->findBy([],['orderTalentRole' => 'ASC']);
  382.         $tempArray = [];
  383.         foreach($talentRoles as $key => $talentRole){
  384.             $tempArray[$key]['role'] = $talentRole;
  385.             $tempArray[$key]['talent'] = false;
  386.             $talents $em->getRepository(Talent::class)->findBy(['idTalentRole' => $talentRole]);
  387.             
  388.         }
  389.         $talentRoles $tempArray;
  390.         return $this->render('frontend/library/transactionsuccess.html.twig',array(
  391.             'talentRoles' => $talentRoles
  392.         ));
  393.     }
  394.     /**
  395.      * @Route("/{_locale}/transaction/error", name="transactionerror")
  396.      */
  397.     public function transactionerror(){
  398.         $em $this->getDoctrine()->getManager();
  399.         $talentRoles $em->getRepository(TalentRole::class)->findBy([],['orderTalentRole' => 'ASC']);
  400.         $tempArray = [];
  401.         foreach($talentRoles as $key => $talentRole){
  402.             $tempArray[$key]['role'] = $talentRole;
  403.             $tempArray[$key]['talent'] = false;
  404.             $talents $em->getRepository(Talent::class)->findBy(['idTalentRole' => $talentRole]);
  405.             
  406.         }
  407.         $talentRoles $tempArray;
  408.         return $this->render('frontend/library/transactionerror.html.twig',array(
  409.             'talentRoles' => $talentRoles
  410.         ));
  411.     }
  412.     /**
  413.      * @Route("/{_locale}/consultancy", name="consultancy")
  414.      */
  415.     public function consultancyAction(){
  416.         $em $this->getDoctrine()->getManager();
  417.         $talentRoles $em->getRepository(TalentRole::class)->findBy([],['orderTalentRole' => 'ASC']);
  418.         $tempArray = [];
  419.         foreach($talentRoles as $key => $talentRole){
  420.             $tempArray[$key]['role'] = $talentRole;
  421.             $tempArray[$key]['talent'] = false;
  422.             $talents $em->getRepository(Talent::class)->findBy(['idTalentRole' => $talentRole'newTalent' => 1]);
  423.             if($talents || $talentRole->getName() == 'ROLE_PRODUCTION_DESSIGN'){
  424.                 $tempArray[$key]['talent'] = true;
  425.             }
  426.             
  427.         }
  428.         $page $em->getRepository(PageInformation::class)->findOneBy(['pageName' => 'consultancy']);
  429.         $talentRoles $tempArray;
  430.         return $this->render('frontend/consultancy.html.twig',array(
  431.             'talentRoles' => $talentRoles,
  432.             'page' => $page
  433.         ));
  434.     }
  435.     /**
  436.      * @Route("/{_locale}/page/{slug}")
  437.      */
  438.     public function customPageAction(Request $request){
  439.         $em $this->getDoctrine()->getManager();
  440.         $helper = new Helper();
  441.         $talentRoles $em->getRepository(TalentRole::class)->findBy([],['orderTalentRole' => 'ASC']);
  442.         $tempArray = [];
  443.         $slug $helper->sanitize($request->get('slug'));
  444.         foreach($talentRoles as $key => $talentRole){
  445.             $tempArray[$key]['role'] = $talentRole;
  446.             $tempArray[$key]['talent'] = false;
  447.             $talents $em->getRepository(Talent::class)->findBy(['idTalentRole' => $talentRole]);
  448.             
  449.         }
  450.         $page $em->getRepository(PageInformation::class)->findOneBy(['pageName' => $slug]);
  451.         $talentRole $em->getRepository(TalentRole::class)->findOneBy(['idRolePage' => $page->getIdPageInformation()]);
  452.         $talentRoles $tempArray;
  453.         return $this->render('frontend/custompagetext.html.twig',array(
  454.             'talentRoles' => $talentRoles,
  455.             'talentRole' => $talentRole,
  456.             'page' => $page
  457.         ));
  458.     }
  459.     /**
  460.      * @Route("/{_locale}/legal-advice", name="legaladvice")
  461.      */
  462.     public function legalAdviceAction(){
  463.         $em $this->getDoctrine()->getManager();
  464.         $talentRoles $em->getRepository(TalentRole::class)->findBy([],['orderTalentRole' => 'ASC']);
  465.         $tempArray = [];
  466.         foreach($talentRoles as $key => $talentRole){
  467.             $tempArray[$key]['role'] = $talentRole;
  468.             $tempArray[$key]['talent'] = false;
  469.             $talents $em->getRepository(Talent::class)->findBy(['idTalentRole' => $talentRole'newTalent' => 1]);
  470.             if($talents || $talentRole->getName() == 'ROLE_PRODUCTION_DESSIGN'){
  471.                 $tempArray[$key]['talent'] = true;
  472.             }
  473.             
  474.         }
  475.         $talentRoles $tempArray;
  476.         return $this->render('frontend/legalwarning.html.twig',array(
  477.             'talentRoles' => $talentRoles
  478.         ));
  479.     }
  480.     /**
  481.      * @Route("/{_locale}/api/contact")
  482.      */
  483.     public function apiContactAction(Request $requestHelper $helperManagerMail $manager_mail){
  484.         $em $this->getDoctrine()->getManager();
  485.         $response = new JsonResponse();
  486.         try {
  487.             $name $helper->sanitize($request->request->get('name'));
  488.             $surname $helper->sanitize($request->request->get('surname'));
  489.             $email $helper->sanitize($request->request->get('email'));
  490.             $subject $helper->sanitize($request->request->get('subject'));
  491.             $message $helper->sanitize($request->request->get('message'));
  492.             if(!$name){
  493.                 $response->setStatusCode(500);
  494.                 $response->setData(array(
  495.                     'response' => 'error',
  496.                     'msg' => 'Please provide a valid name',
  497.                     'input' => 'name'
  498.                 ));
  499.                 return $response;
  500.             }
  501.             if(!$surname){
  502.                 $response->setStatusCode(500);
  503.                 $response->setData(array(
  504.                     'response' => 'error',
  505.                     'msg' => 'Please provide a valid surname',
  506.                     'input' => 'surname'
  507.                 ));
  508.                 return $response;
  509.             }
  510.             if(!filter_var($emailFILTER_VALIDATE_EMAIL)){
  511.                 $response->setStatusCode(500);
  512.                 $response->setData(array(
  513.                     'response' => 'error',
  514.                     'msg' => 'Please provide a valid email',
  515.                     'input' => 'email'
  516.                 ));
  517.                 return $response;
  518.             }
  519.             if(!$subject){
  520.                 $response->setStatusCode(500);
  521.                 $response->setData(array(
  522.                     'response' => 'error',
  523.                     'msg' => 'Please provide a valid subject',
  524.                     'input' => 'subject'
  525.                 ));
  526.                 return $response;
  527.             }
  528.             if(!$message){
  529.                 $response->setStatusCode(500);
  530.                 $response->setData(array(
  531.                     'response' => 'error',
  532.                     'msg' => 'Please provide a valid message',
  533.                     'input' => 'message'
  534.                 ));
  535.                 return $response;
  536.             }
  537.             $manager_mail->templeteOne([
  538.                 'to' => 'kate@productive.es',
  539.                 'subject' => $subject,
  540.                 'cco' => null,
  541.                 'body' =>
  542.                     $this->renderView('templates/emails/member/contact_mail.html.twig', array(
  543.                         'subject' => $subject,
  544.                         'message' => $message,
  545.                         'name' => $name,
  546.                         'surname' => $surname,
  547.                         'email' => $email
  548.                 ))
  549.             ]);
  550.             $response->setStatusCode(200);
  551.             $response->setData(array(
  552.                 'response' => 'error',
  553.                 'msg' => 'The message has been sent successfully'
  554.             ));
  555.             return $response;
  556.         } catch(Exception $e){
  557.             $response->setStatusCode(500);
  558.             $response->setData(array(
  559.                 'response' => 'error',
  560.                 'msg' => 'The message couldn\'t be sent, please try again later'
  561.             ));
  562.             return $response;
  563.         }
  564.     }
  565. }