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)
|
||||
|
|
|
|||
|
|
@ -25,25 +25,7 @@ class CreateBookingRooms extends Migration
|
|||
$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
|
||||
|
||||
## Run
|
||||
cd motorradig
|
||||
cd motorradig;
|
||||
docker-compose up -d --build
|
||||
Loading…
Add table
Add a link
Reference in a new issue