MIF_E31232103/DOKUMENTASI_BACKEND_RENTAL.md

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.