Jacek Kowalski
2019-06-22 51c6b4f563d195a634039cf5b4d9ba83004e1a52
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<?php
function createMapping($db, $mapFunction, $saveConfig = FALSE) {
    $mapping = [];
    foreach($db->getAll() as $vehicle) {
        $mapping[$vehicle['id']] = $mapFunction($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);
    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;
}