Jacek Kowalski
2019-06-30 bcd661488de087afab096c18aa55eda42e8c5226
lib/Output.php
New file
@@ -0,0 +1,64 @@
<?php
class Output {
   static function createMapping($db, VehicleTypes $vehicleTypes, $saveConfig = FALSE) {
      $mapping = [];
      foreach($db->getAll() as $vehicle) {
         $mapping[$vehicle['id']] = $vehicleTypes->getByNumber($vehicle['num']);
      }
      if($saveConfig) {
         $json = json_encode($mapping);
         if(!file_put_contents($saveConfig['result_temp'], $json)) {
            throw new Exception('Result save failed');
         }
         rename($saveConfig['result_temp'], $saveConfig['result']);
      }
      return $mapping;
   }
   function createVehiclesList($trips, $mapping, $saveConfig = FALSE) {
      $lines = [];
      $vehicles = [];
      foreach($trips as $trip) {
         $vehicle = $mapping[$trip['id']] ?? [];
         $vehicle += ['trip' => $trip['id']];
         $lines[$trip['line']][] = [
            'trip' => $trip,
            'vehicle' => $vehicle,
         ];
         $vehicles[$vehicle['type'] ?? '?'][] = $vehicle;
      }
      foreach($lines as &$line) {
         usort($line, function($a, $b) {
            return (substr($a['vehicle']['num'] ?? '', 2) <=> substr($b['vehicle']['num'] ?? '', 2));
         });
      }
      unset($line);
      ksort($lines);
      foreach($vehicles as &$vehicle) {
         usort($vehicle, function($a, $b) {
            return (substr($a['num'] ?? '', 2) <=> substr($b['num'] ?? '', 2));
         });
      }
      unset($vehicle);
      ksort($vehicles);
      if($saveConfig) {
         $twigLoader = new \Twig\Loader\FilesystemLoader(__DIR__.'/../templates');
         $twig = new \Twig\Environment($twigLoader);
         $vehiclesHtml = $twig->render('vehicles.html', [
            'lines' => $lines,
            'vehicles' => $vehicles,
            'prefix' => $saveConfig['prefix'],
         ]);
         if(!file_put_contents($saveConfig['result_vehicles_temp'], $vehiclesHtml)) {
            throw new Exception('Vehicles save failed');
         }
         rename($saveConfig['result_vehicles_temp'], $saveConfig['result_vehicles']);
      }
      return $lines;
   }
}