Delete DOKUMENTASI_KATALOG_CUSTOMER_DETAIL_MOBIL.md
This commit is contained in:
parent
d8973f663f
commit
0e905bc80c
|
|
@ -1,234 +0,0 @@
|
|||
# Dokumentasi Backend Katalog Customer + Detail Mobil
|
||||
|
||||
Dokumentasi ini menjelaskan tahap 3 backend yang sudah dibuat untuk halaman **Katalog Customer** dan **Detail Mobil**.
|
||||
|
||||
## Tujuan Fitur
|
||||
|
||||
Tahap ini dibuat agar halaman publik/customer tidak lagi memakai data dummy, melainkan membaca data kendaraan nyata dari database.
|
||||
|
||||
Fokus fitur ini:
|
||||
|
||||
- menampilkan daftar kendaraan dari database
|
||||
- menampilkan detail mobil dari database
|
||||
- menjaga filter data agar hanya kendaraan yang layak tampil yang muncul ke customer
|
||||
- tetap mempertahankan desain frontend yang sudah ada
|
||||
|
||||
## Aturan Bisnis yang Diterapkan
|
||||
|
||||
- Katalog dan detail mobil boleh dilihat publik/customer.
|
||||
- Customer wajib login sebelum booking, tetapi booking belum dibangun di tahap ini.
|
||||
- Rental yang belum diverifikasi tidak boleh tampil ke customer.
|
||||
- Hanya kendaraan dengan status `active` yang boleh tampil di katalog.
|
||||
- Detail mobil hanya boleh diakses jika kendaraan aktif dan rental company sudah `approved`.
|
||||
- Jika data tidak valid, sistem mengembalikan `404`.
|
||||
|
||||
## Route yang Dibuat
|
||||
|
||||
Route public/customer yang digunakan:
|
||||
|
||||
- `GET /katalog` → `katalog.index`
|
||||
- `GET /katalog/{vehicle:slug}` → `katalog.show`
|
||||
|
||||
Catatan:
|
||||
- Route detail mobil lama yang statis tidak lagi dipakai.
|
||||
- Detail mobil sekarang mengikuti slug kendaraan dari database.
|
||||
|
||||
## File Backend yang Ditambahkan
|
||||
|
||||
### Controller
|
||||
- `app/Http/Controllers/Customer/KatalogController.php`
|
||||
|
||||
### Model yang Disesuaikan
|
||||
- `app/Models/Vehicle.php`
|
||||
- `app/Models/RentalCompany.php`
|
||||
- `app/Models/VehicleImage.php`
|
||||
|
||||
### Route Update
|
||||
- `routes/web.php`
|
||||
|
||||
## Relasi Data yang Dipakai
|
||||
|
||||
Tahap ini membaca data dari relasi berikut:
|
||||
|
||||
- `Vehicle` belongsTo `RentalCompany`
|
||||
- `Vehicle` hasMany `VehicleImage`
|
||||
- `Vehicle` punya relasi `primaryImage` untuk foto utama
|
||||
- `RentalCompany` scope `approved()` untuk rental yang sudah diverifikasi
|
||||
- `Vehicle` scope `active()` untuk kendaraan aktif
|
||||
- `Vehicle` scope `visibleToCustomers()` untuk kendaraan yang layak tampil
|
||||
|
||||
## Alur Data Katalog
|
||||
|
||||
### 1. Halaman Katalog
|
||||
|
||||
- Customer membuka `/katalog`.
|
||||
- Controller mengambil kendaraan yang:
|
||||
- status-nya `active`
|
||||
- rental company-nya `approved`
|
||||
- Data di-load dengan eager loading untuk:
|
||||
- `rentalCompany`
|
||||
- `images`
|
||||
- Hasil ditampilkan dengan pagination.
|
||||
- Query string tetap dipertahankan saat pindah halaman.
|
||||
|
||||
### 2. Filter dan Sorting
|
||||
|
||||
Fitur filter yang disiapkan:
|
||||
|
||||
- pencarian berdasarkan nama kendaraan, brand, atau kategori
|
||||
- filter category
|
||||
- filter transmission
|
||||
- filter fuel_type
|
||||
- filter seat_capacity
|
||||
- filter harga minimum
|
||||
- filter harga maksimum
|
||||
- sorting:
|
||||
- terbaru
|
||||
- harga terendah
|
||||
- harga tertinggi
|
||||
|
||||
### 3. List Kendaraan
|
||||
|
||||
Setiap kartu kendaraan menampilkan:
|
||||
|
||||
- foto utama
|
||||
- nama kendaraan
|
||||
- nama rental
|
||||
- category
|
||||
- transmission
|
||||
- fuel_type
|
||||
- seat_capacity
|
||||
- price_per_day
|
||||
- status sederhana: `Tersedia`
|
||||
- tombol lihat detail
|
||||
|
||||
Jika belum ada gambar utama, sistem dapat memakai gambar galeri pertama sebagai fallback.
|
||||
|
||||
## Alur Detail Mobil
|
||||
|
||||
### 1. Halaman Detail
|
||||
|
||||
- Customer membuka `/katalog/{vehicle:slug}`.
|
||||
- Controller mencari kendaraan berdasarkan slug.
|
||||
- Sistem memuat relasi:
|
||||
- `rentalCompany`
|
||||
- `images`
|
||||
- Detail hanya tampil jika:
|
||||
- kendaraan status `active`
|
||||
- rental company status `approved`
|
||||
- Jika tidak valid, sistem mengembalikan `404`.
|
||||
|
||||
### 2. Informasi yang Ditampilkan
|
||||
|
||||
Halaman detail menampilkan:
|
||||
|
||||
- nama kendaraan
|
||||
- brand
|
||||
- type
|
||||
- category
|
||||
- year
|
||||
- transmission
|
||||
- fuel_type
|
||||
- seat_capacity
|
||||
- luggage_capacity
|
||||
- color
|
||||
- price_per_day
|
||||
- description
|
||||
- terms_conditions
|
||||
- main_image
|
||||
- gallery images
|
||||
- informasi rental:
|
||||
- company_name
|
||||
- city
|
||||
- phone
|
||||
- email
|
||||
- logo jika ada
|
||||
|
||||
### 3. Tombol Booking
|
||||
|
||||
- Jika guest, tombol booking diarahkan ke halaman login.
|
||||
- Jika user login sebagai customer, tombol booking diarahkan ke placeholder route booking.
|
||||
- Jika login bukan customer, tombol diarahkan ke home sebagai langkah aman.
|
||||
|
||||
## Partial Blade yang Dipakai
|
||||
|
||||
### Katalog
|
||||
- `resources/views/katalog/index.blade.php`
|
||||
- `resources/views/katalog/search-bar.blade.php`
|
||||
- `resources/views/katalog/filter-kendaraan.blade.php`
|
||||
- `resources/views/katalog/sorting.blade.php`
|
||||
- `resources/views/katalog/status-ketersediaan.blade.php`
|
||||
- `resources/views/katalog/daftar-kendaraan.blade.php`
|
||||
- `resources/views/katalog/pagination.blade.php`
|
||||
|
||||
### Detail Mobil
|
||||
- `resources/views/detail-mobil/index.blade.php`
|
||||
- `resources/views/detail-mobil/galeri-foto.blade.php`
|
||||
- `resources/views/detail-mobil/informasi-utama.blade.php`
|
||||
- `resources/views/detail-mobil/spesifikasi.blade.php`
|
||||
- `resources/views/detail-mobil/deskripsi.blade.php`
|
||||
- `resources/views/detail-mobil/syarat-dan-ketentuan.blade.php`
|
||||
- `resources/views/detail-mobil/informasi-rental.blade.php`
|
||||
- `resources/views/detail-mobil/rating-dan-ulasan.blade.php`
|
||||
- `resources/views/detail-mobil/tombol-booking.blade.php`
|
||||
|
||||
## Penyesuaian Frontend
|
||||
|
||||
Frontend yang sudah ada tetap dipakai, hanya data dummy diganti dengan data nyata dari database.
|
||||
|
||||
Penyesuaian utama:
|
||||
|
||||
- link katalog di navbar diarahkan ke route baru `katalog.index`
|
||||
- tombol lihat detail di katalog diarahkan ke route `katalog.show`
|
||||
- tombol booking di detail mobil memakai pendekatan aman berdasarkan status login
|
||||
- review tetap placeholder karena backend review belum dibuat
|
||||
|
||||
## Keamanan dan Performa
|
||||
|
||||
- Query katalog memakai eager loading agar tidak terjadi N+1 query.
|
||||
- Data customer hanya menampilkan kendaraan dari rental yang sudah approved.
|
||||
- Detail mobil yang tidak valid diblok dengan `404`.
|
||||
- Filter query dibatasi agar input tetap aman dan masuk akal.
|
||||
- Sorting dibatasi pada nilai yang diizinkan.
|
||||
|
||||
## Fungsi Reusable yang Ditambahkan
|
||||
|
||||
### Pada Model `Vehicle`
|
||||
- `scopeActive()`
|
||||
- `scopeVisibleToCustomers()`
|
||||
- `primaryImage()`
|
||||
|
||||
### Pada Model `RentalCompany`
|
||||
- `scopeApproved()`
|
||||
|
||||
Fungsi ini membuat query tahap berikutnya lebih mudah dikembangkan.
|
||||
|
||||
## Status Pengerjaan
|
||||
|
||||
- Katalog customer sudah membaca data nyata dari database.
|
||||
- Detail mobil sudah membaca data nyata dari database.
|
||||
- Filter, sorting, dan pagination sudah disiapkan.
|
||||
- Tombol detail dan booking sudah diarahkan secara aman.
|
||||
- Backend booking, pembayaran, dan review masih belum dibuat di tahap ini.
|
||||
|
||||
## Langkah Menjalankan
|
||||
|
||||
1. Pastikan migration inti sudah dijalankan.
|
||||
2. Pastikan ada data rental company dengan status `approved`.
|
||||
3. Pastikan ada kendaraan dengan status `active`.
|
||||
4. Buka halaman katalog:
|
||||
|
||||
```text
|
||||
http://127.0.0.1:8000/katalog
|
||||
```
|
||||
|
||||
5. Buka detail mobil dari tombol lihat detail di katalog.
|
||||
|
||||
## Langkah Berikutnya
|
||||
|
||||
Tahap backend berikutnya yang paling masuk akal:
|
||||
|
||||
1. membangun backend booking customer
|
||||
2. menambahkan validasi bentrok tanggal kendaraan
|
||||
3. membangun backend pembayaran dan verifikasi admin rental
|
||||
4. menambahkan review setelah booking selesai
|
||||
Loading…
Reference in New Issue