Delete DOKUMENTASI_ADMIN_RENTAL_VEHICLE_CRUD.md
This commit is contained in:
parent
6db3c09f78
commit
f9216b7d8e
|
|
@ -1,262 +0,0 @@
|
||||||
# Dokumentasi CRUD Data Kendaraan Admin Rental
|
|
||||||
|
|
||||||
Dokumentasi ini menjelaskan tahap 2 backend yang sudah dibuat untuk fitur **Data Kendaraan** milik admin rental.
|
|
||||||
|
|
||||||
## Tujuan Fitur
|
|
||||||
|
|
||||||
Fitur ini dibuat agar admin rental dapat mengelola kendaraan milik rental company-nya sendiri dengan aman dan terstruktur.
|
|
||||||
|
|
||||||
## Ruang Lingkup
|
|
||||||
|
|
||||||
Fitur yang sudah dibuat mencakup:
|
|
||||||
|
|
||||||
- list kendaraan
|
|
||||||
- tambah kendaraan
|
|
||||||
- simpan kendaraan
|
|
||||||
- edit kendaraan
|
|
||||||
- update kendaraan
|
|
||||||
- hapus kendaraan
|
|
||||||
- upload foto utama kendaraan
|
|
||||||
- upload banyak foto galeri kendaraan
|
|
||||||
- hapus foto galeri satu per satu
|
|
||||||
|
|
||||||
Fitur ini khusus untuk role:
|
|
||||||
|
|
||||||
- `admin_rental`
|
|
||||||
|
|
||||||
## Aturan Akses
|
|
||||||
|
|
||||||
- Hanya user dengan role `admin_rental` yang bisa mengakses CRUD kendaraan.
|
|
||||||
- Admin rental hanya bisa melihat kendaraan milik rental company miliknya sendiri.
|
|
||||||
- Admin rental hanya bisa membuat, mengubah, dan menghapus kendaraan milik rental company miliknya sendiri.
|
|
||||||
- Jika admin belum punya rental company, sistem menampilkan pesan yang jelas.
|
|
||||||
- Jika kendaraan bukan milik rental admin login, sistem mengembalikan `404`.
|
|
||||||
|
|
||||||
## Route yang Dibuat
|
|
||||||
|
|
||||||
Route kendaraan admin rental sudah ditambahkan di bawah prefix `/admin-rental`.
|
|
||||||
|
|
||||||
- `GET /admin-rental/vehicles` → list kendaraan
|
|
||||||
- `GET /admin-rental/vehicles/create` → form tambah kendaraan
|
|
||||||
- `POST /admin-rental/vehicles` → simpan kendaraan baru
|
|
||||||
- `GET /admin-rental/vehicles/{vehicle}/edit` → form edit kendaraan
|
|
||||||
- `PUT /admin-rental/vehicles/{vehicle}` → update kendaraan
|
|
||||||
- `DELETE /admin-rental/vehicles/{vehicle}` → hapus kendaraan
|
|
||||||
- `DELETE /admin-rental/vehicles/gallery/{image}` → hapus gambar galeri
|
|
||||||
|
|
||||||
Route name yang dipakai:
|
|
||||||
|
|
||||||
- `admin-rental.vehicles.index`
|
|
||||||
- `admin-rental.vehicles.create`
|
|
||||||
- `admin-rental.vehicles.store`
|
|
||||||
- `admin-rental.vehicles.edit`
|
|
||||||
- `admin-rental.vehicles.update`
|
|
||||||
- `admin-rental.vehicles.destroy`
|
|
||||||
- `admin-rental.vehicles.gallery.destroy`
|
|
||||||
|
|
||||||
## File Backend yang Ditambahkan
|
|
||||||
|
|
||||||
### Controller
|
|
||||||
- `app/Http/Controllers/AdminRental/VehicleController.php`
|
|
||||||
|
|
||||||
### Form Request
|
|
||||||
- `app/Http/Requests/StoreVehicleRequest.php`
|
|
||||||
- `app/Http/Requests/UpdateVehicleRequest.php`
|
|
||||||
|
|
||||||
### Blade Views
|
|
||||||
- `resources/views/admin-rental/vehicles/index.blade.php`
|
|
||||||
- `resources/views/admin-rental/vehicles/create.blade.php`
|
|
||||||
- `resources/views/admin-rental/vehicles/edit.blade.php`
|
|
||||||
- `resources/views/admin-rental/vehicles/form.blade.php`
|
|
||||||
|
|
||||||
### Route Update
|
|
||||||
- `routes/web.php`
|
|
||||||
|
|
||||||
### Sidebar Update
|
|
||||||
- `resources/views/components/admin-rental-sidebar.blade.php`
|
|
||||||
|
|
||||||
## Model yang Dipakai
|
|
||||||
|
|
||||||
Fitur ini menggunakan model yang sudah ada:
|
|
||||||
|
|
||||||
- `App\Models\Vehicle`
|
|
||||||
- `App\Models\VehicleImage`
|
|
||||||
- `App\Models\RentalCompany`
|
|
||||||
- `App\Models\User`
|
|
||||||
|
|
||||||
## Alur CRUD Kendaraan
|
|
||||||
|
|
||||||
### 1. List Kendaraan
|
|
||||||
|
|
||||||
- Admin rental membuka halaman Data Kendaraan.
|
|
||||||
- Sistem mengambil data kendaraan berdasarkan `rental_company_id` milik user login.
|
|
||||||
- Data ditampilkan dengan pagination.
|
|
||||||
- Bisa melakukan pencarian sederhana berdasarkan nama, brand, atau kategori.
|
|
||||||
|
|
||||||
### 2. Tambah Kendaraan
|
|
||||||
|
|
||||||
- Admin klik tombol tambah kendaraan.
|
|
||||||
- Form tampil dengan input field kendaraan.
|
|
||||||
- `rental_company_id` tidak dipilih manual, tetapi diambil otomatis dari user login.
|
|
||||||
- Slug dibuat otomatis dari nama kendaraan.
|
|
||||||
- Jika upload foto utama dilakukan, file disimpan ke `storage/public`.
|
|
||||||
- Jika upload galeri dilakukan, file disimpan ke `storage/public` dan record masuk ke tabel `vehicle_images`.
|
|
||||||
|
|
||||||
### 3. Edit Kendaraan
|
|
||||||
|
|
||||||
- Admin membuka form edit kendaraan.
|
|
||||||
- Sistem memastikan kendaraan tersebut milik rental company milik admin login.
|
|
||||||
- Data lama ditampilkan kembali di form.
|
|
||||||
- Admin bisa mengganti data utama.
|
|
||||||
- Admin bisa mengganti foto utama.
|
|
||||||
- Admin bisa menambah gambar galeri baru.
|
|
||||||
- Admin bisa menghapus gambar galeri lama.
|
|
||||||
|
|
||||||
### 4. Update Kendaraan
|
|
||||||
|
|
||||||
- Validasi dilakukan ulang.
|
|
||||||
- Slug diperbarui dari nama baru dan dijaga tetap unik.
|
|
||||||
- Jika foto utama diganti, file lama dihapus dari storage bila ada.
|
|
||||||
- Jika gambar galeri dihapus, file dan record juga dihapus.
|
|
||||||
|
|
||||||
### 5. Hapus Kendaraan
|
|
||||||
|
|
||||||
- Sistem memastikan kendaraan yang dihapus masih berada dalam lingkup rental company milik admin login.
|
|
||||||
- File main image dihapus jika ada.
|
|
||||||
- Semua gallery image juga dihapus dari storage dan database.
|
|
||||||
- Record kendaraan dihapus.
|
|
||||||
|
|
||||||
### 6. Hapus Gambar Galeri
|
|
||||||
|
|
||||||
- Admin bisa menghapus satu gambar galeri saja dari halaman edit.
|
|
||||||
- Sistem akan menghapus file gambar dan record database-nya.
|
|
||||||
|
|
||||||
## Validasi Input
|
|
||||||
|
|
||||||
### Store Vehicle
|
|
||||||
|
|
||||||
Validasi yang diterapkan:
|
|
||||||
|
|
||||||
- `name` wajib
|
|
||||||
- `brand` wajib
|
|
||||||
- `type` wajib
|
|
||||||
- `category` wajib
|
|
||||||
- `year` wajib, numerik, dan masuk akal
|
|
||||||
- `transmission` wajib
|
|
||||||
- `fuel_type` wajib
|
|
||||||
- `seat_capacity` wajib, numerik
|
|
||||||
- `luggage_capacity` nullable, numerik
|
|
||||||
- `color` nullable
|
|
||||||
- `price_per_day` wajib, numerik, minimal 0
|
|
||||||
- `description` nullable
|
|
||||||
- `terms_conditions` nullable
|
|
||||||
- `status` wajib, hanya `active`, `inactive`, atau `maintenance`
|
|
||||||
- `main_image` nullable, harus gambar
|
|
||||||
- `gallery_images.*` nullable, harus gambar
|
|
||||||
|
|
||||||
### Update Vehicle
|
|
||||||
|
|
||||||
Validasi update sama seperti create, ditambah:
|
|
||||||
|
|
||||||
- `delete_gallery_images[]` untuk memilih gambar galeri yang akan dihapus
|
|
||||||
|
|
||||||
## Keamanan Data
|
|
||||||
|
|
||||||
Pengamanan yang diterapkan:
|
|
||||||
|
|
||||||
- Akses route diproteksi dengan middleware `auth` + `role:admin_rental`.
|
|
||||||
- Query kendaraan dibatasi berdasarkan `rental_company_id` milik user login.
|
|
||||||
- Akses ke kendaraan milik rental lain ditolak dengan `404`.
|
|
||||||
- Upload gambar disimpan ke `storage/public`.
|
|
||||||
- Hapus kendaraan juga membersihkan file gambar terkait.
|
|
||||||
|
|
||||||
## Storage Gambar
|
|
||||||
|
|
||||||
Karena file gambar disimpan di `storage/public`, jalankan perintah berikut jika belum dilakukan:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
php artisan storage:link
|
|
||||||
```
|
|
||||||
|
|
||||||
## Flash Message yang Dipakai
|
|
||||||
|
|
||||||
Fitur ini sudah menampilkan flash message sederhana untuk:
|
|
||||||
|
|
||||||
- berhasil tambah kendaraan
|
|
||||||
- berhasil update kendaraan
|
|
||||||
- berhasil hapus kendaraan
|
|
||||||
- gagal akses karena rental company belum ada
|
|
||||||
|
|
||||||
## Struktur Data Kendaraan
|
|
||||||
|
|
||||||
### Tabel `vehicles`
|
|
||||||
|
|
||||||
Field yang digunakan:
|
|
||||||
|
|
||||||
- `name`
|
|
||||||
- `slug`
|
|
||||||
- `brand`
|
|
||||||
- `type`
|
|
||||||
- `category`
|
|
||||||
- `year`
|
|
||||||
- `transmission`
|
|
||||||
- `fuel_type`
|
|
||||||
- `seat_capacity`
|
|
||||||
- `luggage_capacity`
|
|
||||||
- `color`
|
|
||||||
- `price_per_day`
|
|
||||||
- `description`
|
|
||||||
- `terms_conditions`
|
|
||||||
- `status`
|
|
||||||
- `main_image`
|
|
||||||
|
|
||||||
### Tabel `vehicle_images`
|
|
||||||
|
|
||||||
Field yang digunakan:
|
|
||||||
|
|
||||||
- `vehicle_id`
|
|
||||||
- `image_path`
|
|
||||||
- `is_primary`
|
|
||||||
|
|
||||||
## Sidebar Admin Rental
|
|
||||||
|
|
||||||
Menu sidebar admin rental sudah dihubungkan ke halaman Data Kendaraan:
|
|
||||||
|
|
||||||
- `Dashboard`
|
|
||||||
- `Data Kendaraan`
|
|
||||||
|
|
||||||
## Catatan Teknis
|
|
||||||
|
|
||||||
- Slug dibuat otomatis dari nama kendaraan.
|
|
||||||
- Slug update dibuat tetap unik agar aman dipakai di URL atau relasi data berikutnya.
|
|
||||||
- Main image dan gallery image dipisahkan agar lebih fleksibel untuk tahap katalog customer nanti.
|
|
||||||
- Sistem ini disiapkan supaya nanti gampang disambungkan ke fitur booking dan katalog customer.
|
|
||||||
|
|
||||||
## Langkah Menjalankan
|
|
||||||
|
|
||||||
1. Pastikan migration sudah dijalankan.
|
|
||||||
2. Pastikan role `admin_rental` sudah bisa login.
|
|
||||||
3. Jalankan storage link jika belum ada:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
php artisan storage:link
|
|
||||||
```
|
|
||||||
|
|
||||||
4. Buka menu admin rental.
|
|
||||||
5. Masuk ke **Data Kendaraan**.
|
|
||||||
6. Tambah kendaraan dan upload gambar sesuai kebutuhan.
|
|
||||||
|
|
||||||
## Status Pengerjaan
|
|
||||||
|
|
||||||
- CRUD kendaraan admin rental sudah selesai.
|
|
||||||
- Akses data sudah dibatasi per rental company.
|
|
||||||
- Upload gambar utama dan galeri sudah siap.
|
|
||||||
- Fitur ini siap dipakai sebagai dasar untuk tahap katalog customer dan booking.
|
|
||||||
|
|
||||||
## Langkah Berikutnya
|
|
||||||
|
|
||||||
Tahap berikutnya yang paling masuk akal:
|
|
||||||
|
|
||||||
1. membuat detail kendaraan untuk admin rental
|
|
||||||
2. menyiapkan katalog customer berdasarkan kendaraan yang approved
|
|
||||||
3. membangun booking backend yang terhubung ke kendaraan ini
|
|
||||||
Loading…
Reference in New Issue