db = $db; $this->mapper = $mapper; $this->vehicleTypes = $vehicleTypes; } function createMapping($saveConfig = FALSE) { $mapping = []; foreach($this->db->getAllById() as $vehicle) { $mapping[$vehicle['id']] = $this->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($fullMapping, $saveConfig = FALSE) { $trips = $this->mapper->getTTSSTrips(); $lines = []; $vehicles = []; foreach($trips as $trip) { $vehicle = $fullMapping[$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); $dbMapping = $this->db->getAllByNum(); ksort($dbMapping); if($saveConfig) { $twigLoader = new \Twig\Loader\FilesystemLoader(__DIR__.'/../templates'); $twig = new \Twig\Environment($twigLoader); $twig->addExtension(new Twig_Extensions_Extension_Date()); $vehiclesHtml = $twig->render('vehicles.html', [ 'lines' => $lines, 'vehicles' => $vehicles, 'prefix' => $saveConfig['prefix'], 'mapping' => $dbMapping, ]); 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; } }