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);
|
||||
array_push($users, $user);
|
||||
}
|
||||
if($tour->start<Carbon::now()) {
|
||||
|
||||
// Alte Tour anzeigen
|
||||
if($tour->start < Carbon::now()) {
|
||||
$tour->start = Tour::toGermanDate($tour->start);
|
||||
$tour->deadline = Tour::toGermanDate($tour->deadline);
|
||||
return view('tour.show_old')
|
||||
|
|
@ -128,19 +130,7 @@ class TourController extends Controller
|
|||
->with('creator', $creator);
|
||||
}
|
||||
|
||||
$sql="SELECT bookings.room_id as room_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);
|
||||
|
||||
$rooms=$this->fetch_rooms($tour->id);
|
||||
|
||||
$tour->start = Tour::toGermanDate($tour->start);
|
||||
$tour->deadline = Tour::toGermanDate($tour->deadline);
|
||||
|
|
@ -157,6 +147,31 @@ class TourController extends Controller
|
|||
* @param \App\Tour $tour
|
||||
* @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)
|
||||
{
|
||||
error_log("Tour:edit");
|
||||
|
|
@ -167,18 +182,7 @@ class TourController extends Controller
|
|||
$tour->start = Tour::toGermanDate($tour->start);
|
||||
$tour->deadline = Tour::toGermanDate($tour->deadline);
|
||||
|
||||
$sql="SELECT bookings.room_id as room_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);
|
||||
$rooms = $this->fetch_rooms($tour->id);
|
||||
|
||||
return view('tour.edit')
|
||||
->with('tour', $tour)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue