122 lines
3.7 KiB
Markdown
122 lines
3.7 KiB
Markdown
# Dokumentasi Fondasi Backend Rental
|
|
|
|
Bagian ini menjelaskan struktur backend inti yang sudah dibuat untuk platform rental kendaraan multi-rental, e-booking, e-commerce, dan CRM.
|
|
|
|
## Tujuan Fondasi Backend
|
|
|
|
- Menyediakan struktur database inti yang rapi dan siap dikembangkan.
|
|
- Menjaga relasi data antar customer, admin rental, super admin, rental company, kendaraan, booking, dan pembayaran.
|
|
- Menyimpan data transaksi dengan struktur yang mudah dipakai untuk fitur berikutnya.
|
|
|
|
## Tabel Inti yang Sudah Dibuat
|
|
|
|
- `users`
|
|
- Menyimpan akun customer, admin_rental, dan super_admin.
|
|
- Sudah mendukung kolom `role` dan `phone`.
|
|
- `rental_companies`
|
|
- Menyimpan data perusahaan rental milik admin rental.
|
|
- Menyimpan status verifikasi dari super admin.
|
|
- `vehicles`
|
|
- Menyimpan data kendaraan milik rental company.
|
|
- `vehicle_images`
|
|
- Menyimpan galeri gambar kendaraan.
|
|
- `bookings`
|
|
- Menyimpan transaksi booking customer.
|
|
- `payments`
|
|
- Menyimpan data pembayaran dan proses verifikasi pembayaran.
|
|
|
|
## Relasi Antar Tabel
|
|
|
|
- Satu admin rental memiliki satu rental company.
|
|
- Satu rental company memiliki banyak kendaraan.
|
|
- Satu kendaraan memiliki banyak gambar.
|
|
- Satu customer memiliki banyak booking.
|
|
- Satu booking milik satu customer, satu kendaraan, dan satu rental company.
|
|
- Satu booking memiliki satu payment.
|
|
- Satu payment diverifikasi oleh satu user admin rental.
|
|
- Satu rental company diverifikasi oleh satu user super admin.
|
|
|
|
## Status yang Digunakan
|
|
|
|
### rental_companies.status_verification
|
|
- `pending`
|
|
- `approved`
|
|
- `rejected`
|
|
|
|
### vehicles.status
|
|
- `active`
|
|
- `inactive`
|
|
- `maintenance`
|
|
|
|
### bookings.booking_status
|
|
- `pending`
|
|
- `waiting_payment`
|
|
- `waiting_verification`
|
|
- `confirmed`
|
|
- `ongoing`
|
|
- `completed`
|
|
- `cancelled`
|
|
|
|
### bookings.payment_status
|
|
- `unpaid`
|
|
- `uploaded`
|
|
- `verified`
|
|
- `rejected`
|
|
|
|
### payments.payment_status
|
|
- `unpaid`
|
|
- `uploaded`
|
|
- `verified`
|
|
- `rejected`
|
|
|
|
## File Backend yang Ditambahkan
|
|
|
|
### Model
|
|
- `app/Models/RentalCompany.php`
|
|
- `app/Models/Vehicle.php`
|
|
- `app/Models/VehicleImage.php`
|
|
- `app/Models/Booking.php`
|
|
- `app/Models/Payment.php`
|
|
- Update model user: `app/Models/User.php`
|
|
|
|
### Migration
|
|
- `database/migrations/2026_04_21_000004_add_phone_to_users_table.php`
|
|
- `database/migrations/2026_04_21_000005_create_rental_companies_table.php`
|
|
- `database/migrations/2026_04_21_000006_create_vehicles_table.php`
|
|
- `database/migrations/2026_04_21_000007_create_vehicle_images_table.php`
|
|
- `database/migrations/2026_04_21_000008_create_bookings_table.php`
|
|
- `database/migrations/2026_04_21_000009_create_payments_table.php`
|
|
|
|
## Urutan Migration
|
|
|
|
Urutan migration dibuat agar foreign key aman saat dijalankan:
|
|
|
|
1. Tambah kolom `role` pada `users`
|
|
2. Tambah kolom `phone` pada `users`
|
|
3. Buat `rental_companies`
|
|
4. Buat `vehicles`
|
|
5. Buat `vehicle_images`
|
|
6. Buat `bookings`
|
|
7. Buat `payments`
|
|
|
|
## Aturan Bisnis yang Sudah Siap Ditangani
|
|
|
|
- Customer wajib login sebelum booking.
|
|
- Satu kendaraan tidak boleh dibooking pada tanggal yang sama.
|
|
- Pembayaran diverifikasi oleh admin rental.
|
|
- Customer hanya bisa memberi ulasan jika booking sudah completed.
|
|
- Rental yang belum diverifikasi tidak boleh tampil di platform customer.
|
|
|
|
## Status Pengerjaan
|
|
|
|
- Migration sudah dijalankan dan tabel inti sudah terbentuk.
|
|
- Model dan relasi dasar sudah disiapkan.
|
|
- Fondasi ini siap dipakai untuk controller, service, middleware, dan fitur frontend berikutnya.
|
|
|
|
## Langkah Berikutnya
|
|
|
|
1. Buat seeder data contoh rental company, kendaraan, dan booking.
|
|
2. Tambahkan validasi booking agar tanggal kendaraan tidak bentrok.
|
|
3. Tambahkan query/filter agar customer hanya melihat rental company yang sudah approved.
|
|
4. Bangun controller dan halaman admin/customer di atas struktur data ini.
|