| 1 | <?php
|
|---|
| 2 |
|
|---|
| 3 | class PageRideList extends Page
|
|---|
| 4 | {
|
|---|
| 5 | function Show(): string
|
|---|
| 6 | {
|
|---|
| 7 | if (array_key_exists('from', $_GET)) $PlaceFrom = $_GET['from'];
|
|---|
| 8 | else $PlaceFrom = '';
|
|---|
| 9 | if (array_key_exists('to', $_GET)) $PlaceTo = $_GET['to'];
|
|---|
| 10 | else $PlaceTo = '';
|
|---|
| 11 | if (array_key_exists('time', $_GET)) $Time = $_GET['time'];
|
|---|
| 12 | else $Time = '';
|
|---|
| 13 | $Output = '<table style="width: 100%"><tr><td style="text-align: center;">'.
|
|---|
| 14 | '<form style="display: inline;" method="get" action="'.$this->System->Link('/').'">'.
|
|---|
| 15 | 'Odkud: <input type="text" name="from" value="'.$PlaceFrom.'"/> '.
|
|---|
| 16 | 'Kam: <input type="text" name="to" value="'.$PlaceTo.'"/> '.
|
|---|
| 17 | 'Čas: <input type="text" name="time" value="'.$Time.'"/> '.
|
|---|
| 18 | '<input type="submit" value="Hledat"/>'.
|
|---|
| 19 | '</form></td></tr></table>';
|
|---|
| 20 | if (array_key_exists('from', $_GET) and array_key_exists('to', $_GET)) {
|
|---|
| 21 | $Output .= $this->ShowRides($_GET['from'], $_GET['to']);
|
|---|
| 22 | } else $Output .= $this->ShowRides('', '');
|
|---|
| 23 | return $Output;
|
|---|
| 24 | }
|
|---|
| 25 |
|
|---|
| 26 | function ShowRides($PlaceFrom, $PlaceTo)
|
|---|
| 27 | {
|
|---|
| 28 | $Output = '<h3>Jízdy:</h3>';
|
|---|
| 29 | $Output .= '<table>';
|
|---|
| 30 | $Query = 'SELECT Ride.Id, Ride.SeatCount, User.Name AS DriverName, User.BirthDate, '.
|
|---|
| 31 | 'CONCAT(CarManufacturer.Name, " ", CarModel.Name) AS CarName ';
|
|---|
| 32 | if ((trim($PlaceFrom) != '') and (trim($PlaceTo != '')))
|
|---|
| 33 | $Query .= ', (SELECT COALESCE(MAX(RideStop.PassengerCount), 0) FROM RideStop '.
|
|---|
| 34 | 'WHERE (RideStop.Ride=Ride.Id) AND (RideStop.Sequence > RideStopFrom.Sequence) AND '.
|
|---|
| 35 | '(RideStop.Sequence <= RideStopTo.Sequence)) AS PassengerCount ';
|
|---|
| 36 | else
|
|---|
| 37 | $Query .= ', (SELECT COALESCE(MAX(RideStop.PassengerCount), 0) FROM RideStop '.
|
|---|
| 38 | 'WHERE (RideStop.Ride=Ride.Id)) AS PassengerCount ';
|
|---|
| 39 |
|
|---|
| 40 | $Query .= 'FROM Ride '.
|
|---|
| 41 | 'LEFT JOIN Car ON Car.Id = Ride.Car '.
|
|---|
| 42 | 'LEFT JOIN CarModel ON CarModel.Id = Car.Model '.
|
|---|
| 43 | 'LEFT JOIN CarManufacturer ON CarManufacturer.Id = CarModel.Manufacturer '.
|
|---|
| 44 | 'LEFT JOIN User ON User.Id=Ride.Driver ';
|
|---|
| 45 | if ((trim($PlaceFrom) != '') and (trim($PlaceTo != '')))
|
|---|
| 46 | $Query .= 'JOIN RideStop AS RideStopFrom ON (RideStopFrom.Ride = Ride.Id) AND (RideStopFrom.Place LIKE "%'.$PlaceFrom.'%") '.
|
|---|
| 47 | 'JOIN RideStop AS RideStopTo ON (RideStopTo.Ride = Ride.Id) AND (RideStopTo.Place LIKE "%'.$PlaceTo.'%") '.
|
|---|
| 48 | 'WHERE (RideStopFrom.Sequence < RideStopTo.Sequence)';
|
|---|
| 49 | $Query .= 'LIMIT 10';
|
|---|
| 50 | $DbResult = $this->Database->query($Query);
|
|---|
| 51 | while ($DbRow = $DbResult->fetch_assoc())
|
|---|
| 52 | {
|
|---|
| 53 | $Stops = array();
|
|---|
| 54 | $Price = 0;
|
|---|
| 55 | $DbResult2 = $this->Database->query('SELECT * FROM RideStop WHERE Ride='.$DbRow['Id'].' ORDER BY Sequence');
|
|---|
| 56 | while ($DbRow2 = $DbResult2->fetch_assoc())
|
|---|
| 57 | {
|
|---|
| 58 | $Stops[] = $DbRow2['Place'];
|
|---|
| 59 | $Price += $DbRow2['Price'];
|
|---|
| 60 | }
|
|---|
| 61 |
|
|---|
| 62 | if ($DbRow['BirthDate'] != '') $Age = ' ('.round((time() - MysqlDateToTime($DbRow['BirthDate'])) / (3600*24*364.25)).' let)';
|
|---|
| 63 | else $Age = '';
|
|---|
| 64 | $Output .= '<tr><td>Řidič:</td><td>'.$DbRow['DriverName'].$Age.'</td>'.
|
|---|
| 65 | '<td colspan="4"><a href="'.$this->System->Link('/jizda/?id='.$DbRow['Id'].'&from='.$PlaceFrom.'&to='.$PlaceTo).'">Ukázat</a></td></tr>'.
|
|---|
| 66 | '<tr><td>Trasa:</td><td>'.implode(' → ', $Stops).'</td></tr>'.
|
|---|
| 67 | '<tr><td>Cena:</td><td>'.$Price.' Kč</td></tr>'.
|
|---|
| 68 | '<tr><td>Volných míst:</td><td>'.($DbRow['SeatCount'] - $DbRow['PassengerCount']).'</td></tr>'.
|
|---|
| 69 | '<tr><td>Auto:</td><td>'.$DbRow['CarName'].'</td></tr>'.
|
|---|
| 70 | '<tr><td> </td></tr>';
|
|---|
| 71 | }
|
|---|
| 72 | $Output .= '</table>';
|
|---|
| 73 |
|
|---|
| 74 | return $Output;
|
|---|
| 75 | }
|
|---|
| 76 | }
|
|---|