src/Helper/Helpers.php line 45

Open in your IDE?
  1. <?php
  2. // src/Helper/Helpers.php
  3. namespace App\Helper;
  4. use App\Entity\Ticket;
  5. use Symfony\Component\Security\Core\Authorization\AuthorizationChecker;
  6. use DateInterval;
  7. /**
  8.  *
  9.  */
  10. class Helpers
  11. {
  12.     public static $password '3sc3RLrpd17';
  13.     public static $method 'aes-256-cbc';
  14.     public static function encrypt($value '')
  15.     {
  16.         // Must be exact 32 chars (256 bit)
  17.         $iv chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0);
  18.         $password substr(hash('sha256'self::$passwordtrue), 032);
  19.         // IV must be exact 16 chars (128 bit)
  20.         // av3DYGLkwBsErphcyYp+imUW4QKs19hUnFyyYcXwURU=
  21.         $encrypted urlencode(base64_encode(openssl_encrypt($valueself::$method$passwordOPENSSL_RAW_DATA$iv)));
  22.         return $encrypted;
  23.     }
  24.     public static function decrypt($value '')
  25.     {
  26.         // Must be exact 32 chars (256 bit)
  27.         $iv chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0);
  28.         $password substr(hash('sha256'self::$passwordtrue), 032);
  29.         // My secret message 1234
  30.         $decrypted urldecode(openssl_decrypt(base64_decode($value), self::$method$passwordOPENSSL_RAW_DATA$iv));
  31.         return $decrypted;
  32.     }
  33.     public static function checkCrendentials($role$event ''$userAuthorizationChecker $security)
  34.     {
  35.         $ret false;
  36.         if ($security->isGranted($role) && ($user->getEvents()->contains($event) || $event == '')) {
  37.             $ret true;
  38.         }
  39.         return $ret;
  40.     }
  41.     public static function checkTicket(Ticket $ticket)
  42.     {
  43.         date_default_timezone_set('Europe/Madrid');
  44.         $last_used $ticket->getUsed();
  45.         $entrada $ticket->getEntradaType();
  46.         $result "ok";
  47.         $now = new \DateTime();
  48.         $startToday = new \DateTime();
  49.         $startToday->setTime(00);
  50.         $beforeStartDate = clone $entrada->getStartDate();
  51.         $interval = new DateInterval("PT30M");
  52.         $beforeStartDate->sub($interval);
  53.         if ($last_used) {
  54.             $result "used";
  55.             if ($last_used $startToday && $entrada->getDaily()) {
  56.                 if ($beforeStartDate $now && $beforeStartDate $now) {
  57.                     $result 'ok';
  58.                 } else {
  59.                     $result 'outatime';
  60.                 }
  61.             }
  62.         } else {
  63.             if ($beforeStartDate $now) {
  64.                 if ($entrada->getEndDate() > $now) {
  65.                     $result 'ok';
  66.                 } else {
  67.                     $result 'outatime';
  68.                 }
  69.             } else {
  70.                 $result 'time_early';
  71.             }
  72.         }
  73.         return $result;
  74.     }
  75.     public static function getServerTime()
  76.     {
  77.         return (new \DateTime())->format(\DateTimeInterface::ISO8601);
  78.     }
  79.     public static function sendInvoice($tickets = [], $bundle ''$doctrine null)
  80.     {
  81.         $entityManager $doctrine->getManager();
  82.         $repository $doctrine->getRepository(Ticket::class);
  83.         $tickets $repository->findByBundle($bundle);
  84.         $ticket $tickets[0];
  85.         $buyer $ticket->getBuyer(); 
  86.         $email $buyer->getEmail(); 
  87.         $name $buyer->getName();
  88.         $surname $buyer->getSurname();
  89.         $buydate $ticket->getBuyDate()->format('d/m/Y');
  90.         $total 0;
  91.         $pdf Helpers::createInvoicePDF($tickets);
  92.         $pdfdoc $pdf->Output($bundle ".pdf""S");
  93.         $separator md5(time());
  94.         $eol PHP_EOL;
  95.         $filename "./pdf/" $bundle ".pdf";
  96.         $to $email;
  97.         $from 'admin@entradasytickets.com';
  98.         $subject 'Recibo de EntradasyTickets';
  99.         $attachment chunk_split(base64_encode($pdfdoc));
  100.         // main header
  101.         $headers "From: " $from $eol;
  102.         $headers .= "MIME-Version: 1.0" $eol;
  103.         $headers .= "Content-Type: multipart/mixed; boundary=\"" $separator "\"";
  104.         $message file_get_contents('./partials/invoice1.html');
  105.         $message .= "<br/>" $name " " $surname;
  106.         $message .= "<br/>" "<p style='color: #777777'>" $email "<p>";
  107.         $message .= "<br/>";
  108.         $message .= file_get_contents('./partials/invoice2.html');
  109.         $message .= "<br/>" $buydate;
  110.         $message .= "<br/>";
  111.         $message .= "<br/>";
  112.         $message .= '<span class="header-sm">Orden</span><br/>' $bundle;
  113.         $message .= file_get_contents('./partials/invoice3.html');
  114.         foreach ($tickets as $ticket) {
  115.             $nombreEvento $ticket->getEntradaType()->getEvent()->getName();
  116.             $nombreEntrada $ticket->getEntradaType()->getName();
  117.             $identifier $ticket->getIdentifier();
  118.             $total += $ticket->getEntradaType()->getPrice();
  119.             $message .= '<tr>
  120.                             <td class="item-col item">
  121.                                 <table cellspacing="0" cellpadding="0" width="100%">
  122.                                     <tr>
  123.                                         <td class="mobile-hide-img">
  124.                                             <a href=""><img width="200" height="200" src="https://chart.googleapis.com/chart?chs=300x300&cht=qr&chl=' $identifier '&choe=UTF-8" alt="item1"></a>
  125.                                         </td>
  126.                                         <td class="product">
  127.                                             <span style="color: #4d4d4d; font-weight:bold;">' $nombreEntrada '</span>
  128.                                             <br /> <p style="color: #777777">' $nombreEvento '<p>
  129.                                             <br /> ' $identifier '
  130.                                         </td>
  131.                                     </tr>
  132.                                 </table>
  133.                             </td>
  134.                             <td class="item-col quantity">
  135.                                 1
  136.                             </td>
  137.                             <td class="item-col">
  138.                                 ' $ticket->getEntradaType()->getPrice() . '€
  139.                             </td>
  140.                         </tr>';
  141.         }
  142.         $message .= file_get_contents('./partials/invoice4.html');
  143.         $message .= '<tr>
  144.                         <td class="item-col item">
  145.                         </td>
  146.                         <td class="item-col quantity" style="text-align:right; padding-right: 10px; border-top: 1px solid #cccccc;">
  147.                             <br />
  148.                             <span class="total-space" style="font-weight: bold; color: #4d4d4d">Total</span>
  149.                         </td>
  150.                         <td class="item-col price" style="text-align: left; border-top: 1px solid #cccccc;">
  151.                             <br />
  152.                             <span class="total-space" style="font-weight:bold; color: #4d4d4d">' $total '€</span>
  153.                             <br />
  154.                         </td>
  155.                     </tr>';
  156.         $message .= file_get_contents('./partials/invoice5.html');
  157.         $body "";
  158.         // message
  159.         $body .= "--" $separator $eol;
  160.         $body .= "Content-Type: text/html; charset=\"iso-8859-1\"" $eol;
  161.         $body .= "Content-Transfer-Encoding: 8bit" $eol $eol;
  162.         $body .= $message $eol;
  163.         // message
  164.         $body .= "--" $separator $eol;
  165.         $body .= "Content-Type: text/plain; charset=\"iso-8859-1\"" $eol;
  166.         $body .= "Content-Transfer-Encoding: 8bit" $eol $eol;
  167.         $body .= "*Este mensaje se envia con HTML si no lo ves bien por favor configure su navegador" $eol;
  168.         // attachment
  169.         $body .= "--" $separator $eol;
  170.         $body .= "Content-Type: application/octet-stream; name=\"" $filename "\"" $eol;
  171.         $body .= "Content-Transfer-Encoding: base64" $eol;
  172.         $body .= "Content-Disposition: attachment" $eol $eol;
  173.         $body .= $attachment $eol;
  174.         $body .= "--" $separator "--";
  175.         mail($to$subject$body$headers);
  176.         // unlink($filename);
  177.     }
  178.     public static function createInvoicePDF($tickets = [])
  179.     {
  180.         $user $tickets[0]->getBuyer();
  181.         $bundle $tickets[0]->getBundle();
  182.         $pdf = new TCPDF();
  183.         foreach ($tickets as $ticket) {
  184.             $entrada $ticket->getEntradaType();
  185.             $event $entrada->getEvent();
  186.             $pdf->SetPrintHeader(false);
  187.             $pdf->SetPrintFooter(false);
  188.             $pdf->AddPage();
  189.             $html $this->renderView('buy_ticket/pdf_invoice.html.twig', [
  190.                 'ticket' => $ticket,
  191.                 'entrada' => $entrada,
  192.                 'event' => $event,
  193.             ]);
  194.             $ticketURL '<img src="https://chart.googleapis.com/chart?chs=300x300&cht=qr&chl=' $ticket->getIdentifier() . '&choe=UTF-8"  width="300" height="300">';
  195.             $html str_replace('%qr%'$ticketURL$html);
  196.             $pdf->writeHTML($htmltruefalsetruefalse'');
  197.         }
  198.         return $pdf;
  199.     }
  200. }