Improved Room Booking selection SQL (outer join for unbooked, including computed sort order)
This commit is contained in:
parent
ce73dcf565
commit
7c09ad0a04
3 changed files with 32 additions and 46 deletions
|
|
@ -119,7 +119,9 @@ class TourController extends Controller
|
||||||
$user=User::find($booking->user_id);
|
$user=User::find($booking->user_id);
|
||||||
array_push($users, $user);
|
array_push($users, $user);
|
||||||
}
|
}
|
||||||
if($tour->start<Carbon::now()) {
|
|
||||||
|
// Alte Tour anzeigen
|
||||||
|
if($tour->start < Carbon::now()) {
|
||||||
$tour->start = Tour::toGermanDate($tour->start);
|
$tour->start = Tour::toGermanDate($tour->start);
|
||||||
$tour->deadline = Tour::toGermanDate($tour->deadline);
|
$tour->deadline = Tour::toGermanDate($tour->deadline);
|
||||||
return view('tour.show_old')
|
return view('tour.show_old')
|
||||||
|
|
@ -128,19 +130,7 @@ class TourController extends Controller
|
||||||
->with('creator', $creator);
|
->with('creator', $creator);
|
||||||
}
|
}
|
||||||
|
|
||||||
$sql="SELECT bookings.room_id as room_id,
|
$rooms=$this->fetch_rooms($tour->id);
|
||||||
booking_rooms.name as room_name,
|
|
||||||
bookings.user_id as user_id,
|
|
||||||
users.name as user_name
|
|
||||||
FROM
|
|
||||||
bookings, booking_rooms, users
|
|
||||||
WHERE bookings.user_id=users.id AND bookings.room_id=booking_rooms.id AND bookings.tour_id=".$tour->id
|
|
||||||
." ORDER BY booking_rooms.name;";
|
|
||||||
Log::info("Fetch sql: ".$sql);
|
|
||||||
$rooms=DB::select($sql);
|
|
||||||
Log::info("Rooms query result:");
|
|
||||||
Log::info($rooms);
|
|
||||||
|
|
||||||
|
|
||||||
$tour->start = Tour::toGermanDate($tour->start);
|
$tour->start = Tour::toGermanDate($tour->start);
|
||||||
$tour->deadline = Tour::toGermanDate($tour->deadline);
|
$tour->deadline = Tour::toGermanDate($tour->deadline);
|
||||||
|
|
@ -157,6 +147,31 @@ class TourController extends Controller
|
||||||
* @param \App\Tour $tour
|
* @param \App\Tour $tour
|
||||||
* @return \Illuminate\Http\Response
|
* @return \Illuminate\Http\Response
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
private function fetch_rooms($tour_id) {
|
||||||
|
$sql="SELECT qry.tour_id,
|
||||||
|
qry.room_id,
|
||||||
|
qry.user_id,
|
||||||
|
qry.user_name,
|
||||||
|
COALESCE(br.name,'Ungebucht') room_name,
|
||||||
|
COALESCE(br.name,'ZZZZZZZZZ') room_sort_order
|
||||||
|
FROM (
|
||||||
|
SELECT
|
||||||
|
bookings.tour_id,
|
||||||
|
bookings.room_id as room_id,
|
||||||
|
bookings.user_id as user_id,
|
||||||
|
users.name as user_name
|
||||||
|
FROM
|
||||||
|
bookings, users
|
||||||
|
WHERE bookings.user_id = users.id AND bookings.tour_id = ".$tour_id."
|
||||||
|
) qry LEFT JOIN booking_rooms as br
|
||||||
|
ON br.id = qry.room_id
|
||||||
|
ORDER BY 6,4;";
|
||||||
|
|
||||||
|
$rooms=DB::select($sql);
|
||||||
|
return($rooms);
|
||||||
|
}
|
||||||
|
|
||||||
public function edit(Tour $tour)
|
public function edit(Tour $tour)
|
||||||
{
|
{
|
||||||
error_log("Tour:edit");
|
error_log("Tour:edit");
|
||||||
|
|
@ -167,18 +182,7 @@ class TourController extends Controller
|
||||||
$tour->start = Tour::toGermanDate($tour->start);
|
$tour->start = Tour::toGermanDate($tour->start);
|
||||||
$tour->deadline = Tour::toGermanDate($tour->deadline);
|
$tour->deadline = Tour::toGermanDate($tour->deadline);
|
||||||
|
|
||||||
$sql="SELECT bookings.room_id as room_id,
|
$rooms = $this->fetch_rooms($tour->id);
|
||||||
booking_rooms.name as room_name,
|
|
||||||
bookings.user_id as user_id,
|
|
||||||
users.name as user_name
|
|
||||||
FROM
|
|
||||||
bookings, booking_rooms, users
|
|
||||||
WHERE bookings.user_id=users.id AND bookings.room_id=booking_rooms.id AND bookings.tour_id=".$tour->id
|
|
||||||
." ORDER BY booking_rooms.name;";
|
|
||||||
Log::info("Fetch sql: ".$sql);
|
|
||||||
$rooms=DB::select($sql);
|
|
||||||
Log::info("Rooms query result:");
|
|
||||||
Log::info($rooms);
|
|
||||||
|
|
||||||
return view('tour.edit')
|
return view('tour.edit')
|
||||||
->with('tour', $tour)
|
->with('tour', $tour)
|
||||||
|
|
|
||||||
|
|
@ -25,25 +25,7 @@ class CreateBookingRooms extends Migration
|
||||||
$table->integer('room_id')->after('user_id');
|
$table->integer('room_id')->after('user_id');
|
||||||
});
|
});
|
||||||
|
|
||||||
// 1.) Dummy Räume für jede Tour erstellen
|
|
||||||
$result=DB::select("SELECT DISTINCT tour_id FROM bookings;");
|
|
||||||
foreach ($result as $row) {
|
|
||||||
$sql="INSERT INTO booking_rooms(name,tour_id,capacity,created_at,updated_at) VALUES ('Dummy-Raum',".$row->tour_id.",100,CURRENT_TIMESTAMP,CURRENT_TIMESTAMP);";
|
|
||||||
|
|
||||||
DB::insert($sql);
|
|
||||||
}
|
|
||||||
|
|
||||||
// 2.) room_id in bookings für jeden Teilnehmer nachtragen
|
|
||||||
$tours=DB::select("SELECT id from tours;");
|
|
||||||
foreach($tours as $tour) {
|
|
||||||
$tour_users=DB::select("SELECT user_id FROM bookings WHERE tour_id=".$tour->id.";");
|
|
||||||
$room=DB::select("SELECT id FROM booking_rooms WHERE tour_id=".$tour->id.";");
|
|
||||||
foreach($tour_users as $tour_user) {
|
|
||||||
$sql="UPDATE bookings SET room_id=".$room[0]->id." WHERE tour_id=".$tour->id." and user_id=".$tour_user->user_id.";";
|
|
||||||
print($sql."\n");
|
|
||||||
DB::update($sql);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
# MotorradIG Website
|
# MotorradIG Website
|
||||||
|
|
||||||
## Run
|
## Run
|
||||||
cd motorradig
|
cd motorradig;
|
||||||
docker-compose up -d --build
|
docker-compose up -d --build
|
||||||
Loading…
Add table
Add a link
Reference in a new issue