7.2 KiB
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_rentalyang 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 kendaraanGET /admin-rental/vehicles/create→ form tambah kendaraanPOST /admin-rental/vehicles→ simpan kendaraan baruGET /admin-rental/vehicles/{vehicle}/edit→ form edit kendaraanPUT /admin-rental/vehicles/{vehicle}→ update kendaraanDELETE /admin-rental/vehicles/{vehicle}→ hapus kendaraanDELETE /admin-rental/vehicles/gallery/{image}→ hapus gambar galeri
Route name yang dipakai:
admin-rental.vehicles.indexadmin-rental.vehicles.createadmin-rental.vehicles.storeadmin-rental.vehicles.editadmin-rental.vehicles.updateadmin-rental.vehicles.destroyadmin-rental.vehicles.gallery.destroy
File Backend yang Ditambahkan
Controller
app/Http/Controllers/AdminRental/VehicleController.php
Form Request
app/Http/Requests/StoreVehicleRequest.phpapp/Http/Requests/UpdateVehicleRequest.php
Blade Views
resources/views/admin-rental/vehicles/index.blade.phpresources/views/admin-rental/vehicles/create.blade.phpresources/views/admin-rental/vehicles/edit.blade.phpresources/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\VehicleApp\Models\VehicleImageApp\Models\RentalCompanyApp\Models\User
Alur CRUD Kendaraan
1. List Kendaraan
- Admin rental membuka halaman Data Kendaraan.
- Sistem mengambil data kendaraan berdasarkan
rental_company_idmilik 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_idtidak 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/publicdan record masuk ke tabelvehicle_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:
namewajibbrandwajibtypewajibcategorywajibyearwajib, numerik, dan masuk akaltransmissionwajibfuel_typewajibseat_capacitywajib, numerikluggage_capacitynullable, numerikcolornullableprice_per_daywajib, numerik, minimal 0descriptionnullableterms_conditionsnullablestatuswajib, hanyaactive,inactive, ataumaintenancemain_imagenullable, harus gambargallery_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_idmilik 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:
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:
nameslugbrandtypecategoryyeartransmissionfuel_typeseat_capacityluggage_capacitycolorprice_per_daydescriptionterms_conditionsstatusmain_image
Tabel vehicle_images
Field yang digunakan:
vehicle_idimage_pathis_primary
Sidebar Admin Rental
Menu sidebar admin rental sudah dihubungkan ke halaman Data Kendaraan:
DashboardData 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
- Pastikan migration sudah dijalankan.
- Pastikan role
admin_rentalsudah bisa login. - Jalankan storage link jika belum ada:
php artisan storage:link
- Buka menu admin rental.
- Masuk ke Data Kendaraan.
- 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:
- membuat detail kendaraan untuk admin rental
- menyiapkan katalog customer berdasarkan kendaraan yang approved
- membangun booking backend yang terhubung ke kendaraan ini