src/Controller/DefaultController.php line 85

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\DailyAccount;
  4. use App\Entity\Sms;
  5. use App\Entity\Station;
  6. use App\Entity\Transaction;
  7. use App\Messages\SMSFestiveMessage;
  8. use App\Messages\SMSMessage;
  9. use App\Service\ActionMatrix;
  10. use Doctrine\DBAL\Driver\PDOException;
  11. use Doctrine\Persistence\ManagerRegistry;
  12. use Doctrine\Persistence\ObjectManager;
  13. use JMS\Serializer\SerializationContext;
  14. use JMS\Serializer\SerializerBuilder;
  15. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
  16. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  17. use Symfony\Component\HttpFoundation\Request;
  18. use Symfony\Component\HttpFoundation\Response;
  19. use Symfony\Component\Messenger\MessageBusInterface;
  20. use Symfony\Component\Routing\Annotation\Route;
  21. class DefaultController extends AbstractController {
  22.     private MessageBusInterface $messageBus;
  23.     private ObjectManager $em;
  24.     private ManagerRegistry $managerRegistry;
  25.     public function __construct(MessageBusInterface $messageBusManagerRegistry $managerRegistry)
  26.     {
  27.         $this->messageBus $messageBus;
  28.         $this->em $managerRegistry->getManager();
  29.         $this->managerRegistry $managerRegistry;
  30.     }
  31.     /**
  32.      * @Route("/", name="homepage")
  33.      */
  34.     public function indexAction(Request $request) {
  35. //        $this->messageBus->dispatch(new SMSFestiveMessage());
  36.         // replace this example code with whatever you need
  37.         $em $this->getDoctrine()->getManager();
  38.         $station $request->getSession()->get('STATION');
  39. //        $date = new \DateTime("-11days");
  40.         $date = new \DateTime();
  41.             $date $date->format('Y-m-d');
  42.         /** @var DailyAccount $dailyAccount */
  43.         $dailyAccount $em->getRepository(DailyAccount::class)->getDashTotals($date);
  44. //        dump($dailyAccount); die;
  45.         $transactions $dailyAccount['transactions'];
  46.         $amount $dailyAccount['amount'];
  47.         $expenses $dailyAccount['expenses'];
  48.         return $this->render('dashboard/dash.html.twig',[
  49.             'transactions' => $transactions,
  50.             'amount' => $amount,
  51.             'expenses' => $expenses
  52.         ]);
  53.     }
  54.     /**
  55.      * @Route("/sign-up", name="new-sacco")
  56.      */
  57.     public function createSacco(Request $request) {
  58.     }
  59.     /**
  60.      * @Route("/barcode", name="create_barcode")
  61.      */
  62.     public function createBarcode() {
  63.         // For demonstration purposes, get pararameters that are passed in through $_GET or set to the default value
  64.         $filepath = (isset($_GET["filepath"])?$_GET["filepath"]:"");
  65.         $text = (isset($_GET["text"])?$_GET["text"]:"0");
  66.         $size = (isset($_GET["size"])?$_GET["size"]:"20");
  67.         $orientation = (isset($_GET["orientation"])?$_GET["orientation"]:"horizontal");
  68.         $code_type = (isset($_GET["codetype"])?$_GET["codetype"]:"code128");
  69.         $print = (isset($_GET["print"])&&$_GET["print"]=='true'?true:false);
  70.         $sizefactor = (isset($_GET["sizefactor"])?$_GET["sizefactor"]:"1");
  71. // This function call can be copied into your project and can be made from anywhere in your code
  72.         return new Response($this->barcode$filepath$text$size$orientation$code_type$print$sizefactor ));
  73.     }
  74.     function barcode($filepath=""$text="0"$size="20"$orientation="horizontal"$code_type="code128"$print=false$SizeFactor=) {
  75.         $code_string "";
  76.         // Translate the $text into barcode the correct $code_type
  77.         if ( in_array(strtolower($code_type), array("code128""code128b")) ) {
  78.             $chksum 104;
  79.             // Must not change order of array elements as the checksum depends on the array's key to validate final code
  80.             $code_array = array(" "=>"212222","!"=>"222122","\""=>"222221","#"=>"121223","$"=>"121322","%"=>"131222","&"=>"122213","'"=>"122312","("=>"132212",")"=>"221213","*"=>"221312","+"=>"231212",","=>"112232","-"=>"122132","."=>"122231","/"=>"113222","0"=>"123122","1"=>"123221","2"=>"223211","3"=>"221132","4"=>"221231","5"=>"213212","6"=>"223112","7"=>"312131","8"=>"311222","9"=>"321122",":"=>"321221",";"=>"312212","<"=>"322112","="=>"322211",">"=>"212123","?"=>"212321","@"=>"232121","A"=>"111323","B"=>"131123","C"=>"131321","D"=>"112313","E"=>"132113","F"=>"132311","G"=>"211313","H"=>"231113","I"=>"231311","J"=>"112133","K"=>"112331","L"=>"132131","M"=>"113123","N"=>"113321","O"=>"133121","P"=>"313121","Q"=>"211331","R"=>"231131","S"=>"213113","T"=>"213311","U"=>"213131","V"=>"311123","W"=>"311321","X"=>"331121","Y"=>"312113","Z"=>"312311","["=>"332111","\\"=>"314111","]"=>"221411","^"=>"431111","_"=>"111224","\`"=>"111422","a"=>"121124","b"=>"121421","c"=>"141122","d"=>"141221","e"=>"112214","f"=>"112412","g"=>"122114","h"=>"122411","i"=>"142112","j"=>"142211","k"=>"241211","l"=>"221114","m"=>"413111","n"=>"241112","o"=>"134111","p"=>"111242","q"=>"121142","r"=>"121241","s"=>"114212","t"=>"124112","u"=>"124211","v"=>"411212","w"=>"421112","x"=>"421211","y"=>"212141","z"=>"214121","{"=>"412121","|"=>"111143","}"=>"111341","~"=>"131141","DEL"=>"114113","FNC 3"=>"114311","FNC 2"=>"411113","SHIFT"=>"411311","CODE C"=>"113141","FNC 4"=>"114131","CODE A"=>"311141","FNC 1"=>"411131","Start A"=>"211412","Start B"=>"211214","Start C"=>"211232","Stop"=>"2331112");
  81.             $code_keys array_keys($code_array);
  82.             $code_values array_flip($code_keys);
  83.             for ( $X 1$X <= strlen($text); $X++ ) {
  84.                 $activeKey substr$text, ($X-1), 1);
  85.                 $code_string .= $code_array[$activeKey];
  86.                 $chksum=($chksum + ($code_values[$activeKey] * $X));
  87.             }
  88.             $code_string .= $code_array[$code_keys[($chksum - (intval($chksum 103) * 103))]];
  89.             $code_string "211214" $code_string "2331112";
  90.         } elseif ( strtolower($code_type) == "code128a" ) {
  91.             $chksum 103;
  92.             $text strtoupper($text); // Code 128A doesn't support lower case
  93.             // Must not change order of array elements as the checksum depends on the array's key to validate final code
  94.             $code_array = array(" "=>"212222","!"=>"222122","\""=>"222221","#"=>"121223","$"=>"121322","%"=>"131222","&"=>"122213","'"=>"122312","("=>"132212",")"=>"221213","*"=>"221312","+"=>"231212",","=>"112232","-"=>"122132","."=>"122231","/"=>"113222","0"=>"123122","1"=>"123221","2"=>"223211","3"=>"221132","4"=>"221231","5"=>"213212","6"=>"223112","7"=>"312131","8"=>"311222","9"=>"321122",":"=>"321221",";"=>"312212","<"=>"322112","="=>"322211",">"=>"212123","?"=>"212321","@"=>"232121","A"=>"111323","B"=>"131123","C"=>"131321","D"=>"112313","E"=>"132113","F"=>"132311","G"=>"211313","H"=>"231113","I"=>"231311","J"=>"112133","K"=>"112331","L"=>"132131","M"=>"113123","N"=>"113321","O"=>"133121","P"=>"313121","Q"=>"211331","R"=>"231131","S"=>"213113","T"=>"213311","U"=>"213131","V"=>"311123","W"=>"311321","X"=>"331121","Y"=>"312113","Z"=>"312311","["=>"332111","\\"=>"314111","]"=>"221411","^"=>"431111","_"=>"111224","NUL"=>"111422","SOH"=>"121124","STX"=>"121421","ETX"=>"141122","EOT"=>"141221","ENQ"=>"112214","ACK"=>"112412","BEL"=>"122114","BS"=>"122411","HT"=>"142112","LF"=>"142211","VT"=>"241211","FF"=>"221114","CR"=>"413111","SO"=>"241112","SI"=>"134111","DLE"=>"111242","DC1"=>"121142","DC2"=>"121241","DC3"=>"114212","DC4"=>"124112","NAK"=>"124211","SYN"=>"411212","ETB"=>"421112","CAN"=>"421211","EM"=>"212141","SUB"=>"214121","ESC"=>"412121","FS"=>"111143","GS"=>"111341","RS"=>"131141","US"=>"114113","FNC 3"=>"114311","FNC 2"=>"411113","SHIFT"=>"411311","CODE C"=>"113141","CODE B"=>"114131","FNC 4"=>"311141","FNC 1"=>"411131","Start A"=>"211412","Start B"=>"211214","Start C"=>"211232","Stop"=>"2331112");
  95.             $code_keys array_keys($code_array);
  96.             $code_values array_flip($code_keys);
  97.             for ( $X 1$X <= strlen($text); $X++ ) {
  98.                 $activeKey substr$text, ($X-1), 1);
  99.                 $code_string .= $code_array[$activeKey];
  100.                 $chksum=($chksum + ($code_values[$activeKey] * $X));
  101.             }
  102.             $code_string .= $code_array[$code_keys[($chksum - (intval($chksum 103) * 103))]];
  103.             $code_string "211412" $code_string "2331112";
  104.         } elseif ( strtolower($code_type) == "code39" ) {
  105.             $code_array = array("0"=>"111221211","1"=>"211211112","2"=>"112211112","3"=>"212211111","4"=>"111221112","5"=>"211221111","6"=>"112221111","7"=>"111211212","8"=>"211211211","9"=>"112211211","A"=>"211112112","B"=>"112112112","C"=>"212112111","D"=>"111122112","E"=>"211122111","F"=>"112122111","G"=>"111112212","H"=>"211112211","I"=>"112112211","J"=>"111122211","K"=>"211111122","L"=>"112111122","M"=>"212111121","N"=>"111121122","O"=>"211121121","P"=>"112121121","Q"=>"111111222","R"=>"211111221","S"=>"112111221","T"=>"111121221","U"=>"221111112","V"=>"122111112","W"=>"222111111","X"=>"121121112","Y"=>"221121111","Z"=>"122121111","-"=>"121111212","."=>"221111211"," "=>"122111211","$"=>"121212111","/"=>"121211121","+"=>"121112121","%"=>"111212121","*"=>"121121211");
  106.             // Convert to uppercase
  107.             $upper_text strtoupper($text);
  108.             for ( $X 1$X<=strlen($upper_text); $X++ ) {
  109.                 $code_string .= $code_array[substr$upper_text, ($X-1), 1)] . "1";
  110.             }
  111.             $code_string "1211212111" $code_string "121121211";
  112.         } elseif ( strtolower($code_type) == "code25" ) {
  113.             $code_array1 = array("1","2","3","4","5","6","7","8","9","0");
  114.             $code_array2 = array("3-1-1-1-3","1-3-1-1-3","3-3-1-1-1","1-1-3-1-3","3-1-3-1-1","1-3-3-1-1","1-1-1-3-3","3-1-1-3-1","1-3-1-3-1","1-1-3-3-1");
  115.             for ( $X 1$X <= strlen($text); $X++ ) {
  116.                 for ( $Y 0$Y count($code_array1); $Y++ ) {
  117.                     if ( substr($text, ($X-1), 1) == $code_array1[$Y] )
  118.                         $temp[$X] = $code_array2[$Y];
  119.                 }
  120.             }
  121.             for ( $X=1$X<=strlen($text); $X+=) {
  122.                 if ( isset($temp[$X]) && isset($temp[($X 1)]) ) {
  123.                     $temp1 explode"-"$temp[$X] );
  124.                     $temp2 explode"-"$temp[($X 1)] );
  125.                     for ( $Y 0$Y count($temp1); $Y++ )
  126.                         $code_string .= $temp1[$Y] . $temp2[$Y];
  127.                 }
  128.             }
  129.             $code_string "1111" $code_string "311";
  130.         } elseif ( strtolower($code_type) == "codabar" ) {
  131.             $code_array1 = array("1","2","3","4","5","6","7","8","9","0","-","$",":","/",".","+","A","B","C","D");
  132.             $code_array2 = array("1111221","1112112","2211111","1121121","2111121","1211112","1211211","1221111","2112111","1111122","1112211","1122111","2111212","2121112","2121211","1121212","1122121","1212112","1112122","1112221");
  133.             // Convert to uppercase
  134.             $upper_text strtoupper($text);
  135.             for ( $X 1$X<=strlen($upper_text); $X++ ) {
  136.                 for ( $Y 0$Y<count($code_array1); $Y++ ) {
  137.                     if ( substr($upper_text, ($X-1), 1) == $code_array1[$Y] )
  138.                         $code_string .= $code_array2[$Y] . "1";
  139.                 }
  140.             }
  141.             $code_string "11221211" $code_string "1122121";
  142.         }
  143.         // Pad the edges of the barcode
  144.         $code_length 20;
  145.         if ($print) {
  146.             $text_height 30;
  147.         } else {
  148.             $text_height 0;
  149.         }
  150.         for ( $i=1$i <= strlen($code_string); $i++ ){
  151.             $code_length $code_length + (integer)(substr($code_string,($i-1),1));
  152.         }
  153.         if ( strtolower($orientation) == "horizontal" ) {
  154.             $img_width $code_length*$SizeFactor;
  155.             $img_height $size;
  156.         } else {
  157.             $img_width $size;
  158.             $img_height $code_length*$SizeFactor;
  159.         }
  160.         $image imagecreate($img_width$img_height $text_height);
  161.         $black imagecolorallocate ($image000);
  162.         $white imagecolorallocate ($image255255255);
  163.         imagefill$image00$white );
  164.         if ( $print ) {
  165.             imagestring($image531$img_height$text$black );
  166.         }
  167.         $location 10;
  168.         for ( $position $position <= strlen($code_string); $position++ ) {
  169.             $cur_size $location + ( substr($code_string, ($position-1), 1) );
  170.             if ( strtolower($orientation) == "horizontal" )
  171.                 imagefilledrectangle$image$location*$SizeFactor0$cur_size*$SizeFactor$img_height, ($position == $white $black) );
  172.             else
  173.                 imagefilledrectangle$image0$location*$SizeFactor$img_width$cur_size*$SizeFactor, ($position == $white $black) );
  174.             $location $cur_size;
  175.         }
  176.         // Draw barcode to the screen or save in a file
  177.         if ( $filepath=="" ) {
  178.             header ('Content-type: image/png');
  179.             imagepng($image);
  180.             imagedestroy($image);
  181.         } else {
  182.             imagepng($image,$filepath);
  183.             imagedestroy($image);
  184.         }
  185.     }
  186.     /**
  187.      * @Method("get")
  188.      * @Route("/form/stations", name="form_stations")
  189.      */
  190.     public function getStations(Request $request){
  191.         $queryTerm $request->get('q');
  192.         $em $this->getDoctrine()->getManager();
  193.         $towns $em->getRepository(Station::class)->findFormTown($queryTerm);
  194.         $serializer SerializerBuilder::create()->build();
  195.         $town = new Station();
  196.         $town->setStationName('ALL STATIONS');
  197.         $town->setId(-1);
  198.         array_push($towns$town);
  199.         $data $serializer->serialize($towns,'json');
  200.         return new Response($dataResponse::HTTP_OK);
  201.     }
  202.     /**
  203.      * @Route("/sendsms/{id}",  name="sms_sender")
  204.      * @param Transaction $transaction
  205.      * @return Response
  206.      */
  207.     public function sendSms(Transaction $transaction) {
  208.         $em $this->getDoctrine()->getManager();
  209.         $waybill $transaction->getWayBill();
  210.         $userStation $transaction->getWayBill()->getToStation();
  211.         $smsMessage = new Sms();
  212.         $smsMessage->setTransaction($transaction);
  213.         $smsMessage->setRecepient('0716308459');
  214.         $smsMessage->setCreatedAt(new \DateTime());
  215.         $smsMessage->setCreatedBy($this->getUser());
  216.         $smsMessage->setSms("HELLO ".strtoupper($waybill->getReceiverName())." 1 of {$waybill->getPercelCount()} parcels from {$waybill->getFromStation()->getStationName()} sent by ".strtoupper($waybill->getSenderName())." has arrived at {$waybill->getToStation()->getStationName()} NENO COURIER OFFICES kindly come collect, we are located {$waybill->getToStation()->getStationAddress()}");
  217.         $smsMessage->setOrganization($userStation->getOrganization());
  218.         $smsMessage->setAmount(0);
  219.         try{
  220.             $em->persist($smsMessage);
  221.             $em->flush();
  222.             $sender = new SendSms();
  223.             $sender->sendMessage($smsMessage);
  224.         }catch (PDOException $exception){
  225.             dump($exception);
  226.         }
  227.         return new Response("OK"Response::HTTP_OK, [
  228.             'content-type' => 'text/html'
  229.         ]);
  230.     }
  231.     /**
  232.      * @Route("/sendsms/response/{id}",  name="sms_sender_response")
  233.      * @param Sms $sms
  234.      * @param Request $request
  235.      * @return Response
  236.      */
  237.     public function responseSmsData(Sms $smsRequest $request) {
  238.         $em $this->getDoctrine()->getManager();
  239.         $context = new SerializationContext();
  240.         $context->setSerializeNull(true);
  241.         $serializer SerializerBuilder::create()->build();
  242.         $data json_decode($request->getContent(),true);
  243. //        dump($data);
  244.         $sms->setAmount($data['amount']);
  245.         $sms->setStatus($data['status']);
  246.         $sms->setStatusCode($data['statusCode']);
  247.         $em->flush();
  248.         return new Response('ok'Response::HTTP_OK);
  249.     }
  250.     /**
  251.      * @Route("/sendsms/response/testing/ground",  name="sms_sender_response_tester")
  252.      * @param Sms $sms
  253.      * @param Request $request
  254.      * @return Response
  255.      */
  256.     public function sendTestSms(Request $request) {
  257.         $em $this->getDoctrine()->getManager();
  258.         $context = new SerializationContext();
  259.         $context->setSerializeNull(true);
  260.         $message = new SendSms();
  261.         $sms = new Sms();
  262.         $sms->setSms("Hello");
  263.         $sms->setRecepient('0716308459');
  264.         $message->sendSms(new Sms());
  265.         return new Response('ok'Response::HTTP_OK);
  266.     }
  267. }