Hide a round trip's return leg from the Bookings list
Showing both legs as separate rows read as two unrelated bookings rather than one round trip. The list now only queries outbound/primary legs; the return leg is still reachable via the outbound leg's existing "Linked Leg" link on the detail page.
This commit is contained in:
@@ -28,9 +28,16 @@ class BookingsTable
|
|||||||
public static function configure(Table $table): Table
|
public static function configure(Table $table): Table
|
||||||
{
|
{
|
||||||
return $table
|
return $table
|
||||||
->modifyQueryUsing(fn (Builder $query) => $query->with([
|
->modifyQueryUsing(fn (Builder $query) => $query
|
||||||
'route.company', 'route.fromDestination', 'route.toDestination', 'timeSlot', 'vehicleOptions',
|
// A round trip's return leg is its own Booking row, but
|
||||||
]))
|
// showing both legs side by side in one list reads as two
|
||||||
|
// unrelated bookings rather than one round trip — hide it
|
||||||
|
// here; it's still reachable via the primary leg's "Linked
|
||||||
|
// Leg" link on the detail page (view its own row directly).
|
||||||
|
->where('is_return_leg', false)
|
||||||
|
->with([
|
||||||
|
'route.company', 'route.fromDestination', 'route.toDestination', 'timeSlot', 'vehicleOptions',
|
||||||
|
]))
|
||||||
->defaultSort('created_at', 'desc')
|
->defaultSort('created_at', 'desc')
|
||||||
->columns([
|
->columns([
|
||||||
TextColumn::make('booking_ref')
|
TextColumn::make('booking_ref')
|
||||||
|
|||||||
@@ -344,6 +344,22 @@ test('a soft-deleted booking is hidden from the default list but visible via the
|
|||||||
->assertCanSeeTableRecords([$active, $deleted]);
|
->assertCanSeeTableRecords([$active, $deleted]);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('a round trip\'s return leg has no row of its own in the list, only its outbound leg', function () {
|
||||||
|
$outbound = Booking::factory()->create(['is_return_leg' => false]);
|
||||||
|
$return = Booking::factory()->create([
|
||||||
|
'is_return_leg' => true,
|
||||||
|
'linked_booking_id' => $outbound->id,
|
||||||
|
]);
|
||||||
|
$outbound->update(['linked_booking_id' => $return->id]);
|
||||||
|
|
||||||
|
// Showing both legs as separate rows read as two unrelated bookings
|
||||||
|
// rather than one round trip — the return leg is still reachable via
|
||||||
|
// the outbound leg's "Linked Leg" link on the detail page.
|
||||||
|
Livewire::test(ListBookings::class)
|
||||||
|
->assertCanSeeTableRecords([$outbound])
|
||||||
|
->assertCanNotSeeTableRecords([$return]);
|
||||||
|
});
|
||||||
|
|
||||||
test('the restore action is only visible for a trashed booking', function () {
|
test('the restore action is only visible for a trashed booking', function () {
|
||||||
$active = Booking::factory()->create();
|
$active = Booking::factory()->create();
|
||||||
$deleted = Booking::factory()->create();
|
$deleted = Booking::factory()->create();
|
||||||
|
|||||||
Reference in New Issue
Block a user