| 1 | <?php
|
|---|
| 2 |
|
|---|
| 3 | class PageNewRide extends Page
|
|---|
| 4 | {
|
|---|
| 5 | function Show(): string
|
|---|
| 6 | {
|
|---|
| 7 | if (!array_key_exists('step', $_GET))
|
|---|
| 8 | {
|
|---|
| 9 | $Output = '<script>
|
|---|
| 10 | function insertAfter(referenceNode, newNode)
|
|---|
| 11 | {
|
|---|
| 12 | referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling);
|
|---|
| 13 | }
|
|---|
| 14 |
|
|---|
| 15 | function add_before(name)
|
|---|
| 16 | {
|
|---|
| 17 | var objTo = document.getElementById(name)
|
|---|
| 18 | var divtest = document.createElement("div");
|
|---|
| 19 | divtest.innerHTML = \'<tr><td>Zastávka:</td><td><input type="text" name="ridestop1"/></td></tr>\';
|
|---|
| 20 |
|
|---|
| 21 | objTo.parentNode.insertBefore(divtest, objTo.childNodes[0])
|
|---|
| 22 | }
|
|---|
| 23 |
|
|---|
| 24 | function add_after(name)
|
|---|
| 25 | {
|
|---|
| 26 | var objTo = document.getElementById(name)
|
|---|
| 27 | var divtest = document.createElement("div");
|
|---|
| 28 | divtest.innerHTML = \'<tr><td>Zastávka:</td><td><input type="text" name="ridestop1"/></td></tr>\';
|
|---|
| 29 |
|
|---|
| 30 | insertAfter(objTo, divtest)
|
|---|
| 31 | }
|
|---|
| 32 | </script>'.
|
|---|
| 33 | '<form method="get" action="'.$this->System->Link('/nova-jizda/').'">'.
|
|---|
| 34 | '<table>'.
|
|---|
| 35 | '<tr><td colspan="2"><strong>Trasa:</strong></td></tr>'.
|
|---|
| 36 |
|
|---|
| 37 | '<tr><td>Počátek:</td><td><input type="text" name="from"/></td></tr>'.
|
|---|
| 38 | '<tr><td>Zastávka:</td><td><input type="text" name="middle"/></td></tr>'.
|
|---|
| 39 | '<tr><td>Konec:</td><td><input type="text" name="to"/></td></tr>'.
|
|---|
| 40 |
|
|---|
| 41 | '<tr><td colspan="2"><br><strong>Parametry jízdy:</strong></td></tr>'.
|
|---|
| 42 | '<tr><td>Čas odjezdu:</td><td><input type="text" name="time-from"/></td></tr>'.
|
|---|
| 43 | '<tr><td>Počet míst pro cestující:</td><td><input type="text" name="seats"/></td></tr>'.
|
|---|
| 44 | '</table>'.
|
|---|
| 45 | '<input type="hidden" name="step" value="2"/><br/>'.
|
|---|
| 46 | '<input type="submit" value="Pokračovat"/>'.
|
|---|
| 47 | '</form>';
|
|---|
| 48 | } else {
|
|---|
| 49 | if ($_GET['step'] == '2') {
|
|---|
| 50 | $TimeFrom = strtotime($_GET['time-from']);
|
|---|
| 51 | $Output = '<table style="width: 100%"><tr><td>';
|
|---|
| 52 | $Output .= '<form method="post" action="'.$this->System->Link('/nova-jizda/?step=3').'">'.
|
|---|
| 53 | '<input type="hidden" name="from" value="'.$_GET['from'].'"/><br/>'.
|
|---|
| 54 | '<input type="hidden" name="to" value="'.$_GET['to'].'"/><br/>'.
|
|---|
| 55 | '<input type="hidden" name="time-from" value="'.$_GET['time-from'].'"/><br/>'.
|
|---|
| 56 | '<input type="hidden" name="seats" value="'.$_GET['seats'].'"/><br/>'.
|
|---|
| 57 | '<input type="hidden" name="step" value="3"/><br/>'.
|
|---|
| 58 | 'Popis:<br/><textarea name="desc"></textarea><br/>'.
|
|---|
| 59 | 'Auto: <select name="car">';
|
|---|
| 60 | $DbResult = $this->Database->query('SELECT Car.Id, CONCAT(CarManufacturer.Name, " ", CarModel.Name) AS ModelName FROM Car '.
|
|---|
| 61 | 'LEFT JOIN CarModel ON CarModel.Id=Car.Model '.
|
|---|
| 62 | 'LEFT JOIN CarManufacturer ON CarManufacturer.Id = CarModel.Manufacturer '.
|
|---|
| 63 | 'WHERE Car.Owner='.Core::Cast($this->System)->User->User['Id']);
|
|---|
| 64 | while ($DbRow = $DbResult->fetch_assoc())
|
|---|
| 65 | {
|
|---|
| 66 | $Output .= '<option value="'.$DbRow['Id'].'"/>'.$DbRow['ModelName'].'</option>';
|
|---|
| 67 | }
|
|---|
| 68 | $Output .= '</select>'.
|
|---|
| 69 | '<input type="submit" value="Vytvořit"/>'.
|
|---|
| 70 | '</form>';
|
|---|
| 71 | $Map = new MapGoogle($this->System);
|
|---|
| 72 | $Map->Key = 'AIzaSyDQ-tOjP9mO8ZpSEuBc5_oCRg30rpQZiBI';
|
|---|
| 73 | $Map->Width = 400;
|
|---|
| 74 | $Map->Height = 300;
|
|---|
| 75 | $Map->Path = array($_GET['from'], $_GET['to']);
|
|---|
| 76 | //$Map->Path = array('Praha', 'Brno', 'Zlín', 'Vsetín');
|
|---|
| 77 | $Track = $Map->Route();
|
|---|
| 78 | $Output .= '<h3>Trasa</h3>';
|
|---|
| 79 | $PricePerKm = 0.8;
|
|---|
| 80 | $Output .= '<table class="WideTable"><tr><th>Úsek</th><th>Odjezd</th><th>Trvání</th><th>Vzdálenost [km]</th><th>Cena [Kč]</th></tr>';
|
|---|
| 81 | foreach ($Track as $Index => $TrackItem)
|
|---|
| 82 | {
|
|---|
| 83 | if ($Index > 0)
|
|---|
| 84 | {
|
|---|
| 85 | $Track[$Index]['Time'] = $TimeFrom + $Track[$Index - 1]['Duration'];
|
|---|
| 86 | $RelDistance = $TrackItem['Distance'] - $Track[$Index - 1]['Distance'];
|
|---|
| 87 | $RelDuration = $TrackItem['Duration'] - $Track[$Index - 1]['Duration'];
|
|---|
| 88 | $Track[$Index]['Price'] = round($PricePerKm * $RelDistance / 1000);
|
|---|
| 89 | $Output .= '<tr><td>'.$Map->Path[$Index - 1].' → '.$TrackItem['Destination'].'</td>'.
|
|---|
| 90 | '<td>'.TimeToMysqlDateTime($Track[$Index]['Time']).'</td>'.
|
|---|
| 91 | '<td>'.time_elapsed($RelDuration).'</td>'.
|
|---|
| 92 | '<td>'.round($RelDistance / 1000).'</td>'.
|
|---|
| 93 | '<td>'.$Track[$Index]['Price'].'</td></tr>';
|
|---|
| 94 |
|
|---|
| 95 | } else {
|
|---|
| 96 | $Track[$Index]['Time'] = $TimeFrom;
|
|---|
| 97 | $Track[$Index]['Price'] = 0;
|
|---|
| 98 | }
|
|---|
| 99 | }
|
|---|
| 100 | $Output .= '<tr><td>'.$Map->Path[0].' → '.$Map->Path[count($Map->Path) - 1].'</td>'.
|
|---|
| 101 | '<td>'.TimeToMysqlDateTime($Track[0]['Time']).'</td>'.
|
|---|
| 102 | '<td>'.time_elapsed($Track[count($Track) - 1]['Duration']).'</td>'.
|
|---|
| 103 | '<td>'.round($Track[count($Track) - 1]['Distance'] / 1000).'</td>'.
|
|---|
| 104 | '<td>'.round($PricePerKm * $Track[count($Track) - 1]['Distance'] / 1000).'</td></tr>';
|
|---|
| 105 | $Output .= '</table><br/>';
|
|---|
| 106 | $Output .= 'Vzdálenost: '.round($Track[count($Track) - 1]['Distance'] / 1000, 1).' km<br/>';
|
|---|
| 107 | $Output .= 'Délka jízdy: '.time_elapsed($Track[count($Track) - 1]['Duration']).'<br/>';
|
|---|
| 108 | $Output .= '</td><td>';
|
|---|
| 109 | $Map->Key = 'AIzaSyDwKYuEdkXAl9Y2RyDLf5m03n-ItHaqdKs';
|
|---|
| 110 | $Output .= $Map->Show();
|
|---|
| 111 | $Output .= '</td></tr></table>';
|
|---|
| 112 | $_SESSION['Track'] = $Track;
|
|---|
| 113 | $_SESSION['SeatCount'] = $_GET['seats'];
|
|---|
| 114 | } else
|
|---|
| 115 | if ($_GET['step'] == '3') {
|
|---|
| 116 | $this->Database->insert('Ride', array(
|
|---|
| 117 | 'Driver' => Core::Cast($this->System)->User->User['Id'],
|
|---|
| 118 | 'SeatCount' => $_POST['seats'],
|
|---|
| 119 | 'Car' => $_POST['car'],
|
|---|
| 120 | 'Details' => $_POST['desc'],
|
|---|
| 121 | ));
|
|---|
| 122 | $RideId = $this->Database->insert_id;
|
|---|
| 123 | foreach ($_SESSION['Track'] as $Index => $TrackItem)
|
|---|
| 124 | {
|
|---|
| 125 | $this->Database->insert('RideStop', array(
|
|---|
| 126 | 'Ride' => $RideId,
|
|---|
| 127 | 'Place' => $TrackItem['Destination'],
|
|---|
| 128 | 'Time' => TimeToMysqlDateTime($TrackItem['Time']),
|
|---|
| 129 | 'Price' => $TrackItem['Price'],
|
|---|
| 130 | 'Sequence' => $Index,
|
|---|
| 131 | 'PassengerCount' => 0,
|
|---|
| 132 | ));
|
|---|
| 133 | }
|
|---|
| 134 | $Output = 'Nová jízda přidána.';
|
|---|
| 135 | }
|
|---|
| 136 | }
|
|---|
| 137 | return $Output;
|
|---|
| 138 | }
|
|---|
| 139 | }
|
|---|