Add Departure Time Slot and Catalog read API (T2.4, T2.5)

Adds the shared DepartureTimeSlot catalog entity with its Filament
resource, and public GET /api/v1/companies + /api/v1/destinations
endpoints (auth:sanctum + throttled) for the mini app/mobile/agent
clients to consume.
This commit is contained in:
Nyan Lin Paing
2026-08-06 21:18:52 +07:00
parent bf5d2c676a
commit 7872105f2f
16 changed files with 474 additions and 0 deletions
@@ -0,0 +1,29 @@
<?php
namespace Modules\Catalog\Database\Factories;
use Carbon\Carbon;
use Illuminate\Database\Eloquent\Factories\Factory;
use Modules\Catalog\Models\DepartureTimeSlot;
/**
* @extends Factory<DepartureTimeSlot>
*/
class DepartureTimeSlotFactory extends Factory
{
/**
* Define the model's default state.
*
* @return array<string, mixed>
*/
public function definition(): array
{
$time = Carbon::createFromTime(fake()->numberBetween(0, 23), fake()->randomElement([0, 15, 30, 45]));
return [
'label' => $time->format('h:i A'),
'time' => $time->format('H:i'),
'is_active' => true,
];
}
}
@@ -0,0 +1,30 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('departure_time_slots', function (Blueprint $table) {
$table->id();
$table->string('label');
$table->time('time');
$table->boolean('is_active')->default(true);
$table->timestamps();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('departure_time_slots');
}
};