From 9e4afab8b66d7824528c203430a76826256e64ce Mon Sep 17 00:00:00 2001 From: Rina Date: Thu, 16 Jul 2026 10:58:05 +0700 Subject: [PATCH] Delete DOKUMENTASI_TAHAP7_BACKEND_REVIEW_ULASAN_CUSTOMER.md --- ...I_TAHAP7_BACKEND_REVIEW_ULASAN_CUSTOMER.md | 275 ------------------ 1 file changed, 275 deletions(-) delete mode 100644 DOKUMENTASI_TAHAP7_BACKEND_REVIEW_ULASAN_CUSTOMER.md diff --git a/DOKUMENTASI_TAHAP7_BACKEND_REVIEW_ULASAN_CUSTOMER.md b/DOKUMENTASI_TAHAP7_BACKEND_REVIEW_ULASAN_CUSTOMER.md deleted file mode 100644 index 053f157..0000000 --- a/DOKUMENTASI_TAHAP7_BACKEND_REVIEW_ULASAN_CUSTOMER.md +++ /dev/null @@ -1,275 +0,0 @@ -# DOKUMENTASI TAHAP 7 -## Backend Review/Ulasan Customer - -Tanggal: 21 April 2026 -Project: WebRental (Laravel) - ---- - -## 1. Tujuan Tahap Ini -Tahap ini fokus pada alur: -completed booking -> customer membuat review -> review tampil di detail mobil. - -Cakupan yang dikerjakan: -1. Customer bisa membuat ulasan hanya untuk booking miliknya yang sudah completed. -2. Satu booking hanya boleh punya satu review. -3. Riwayat booking customer menampilkan status review dan tombol Beri Ulasan saat memenuhi syarat. -4. Halaman detail mobil menampilkan data review nyata dari database (rata-rata, jumlah, daftar ulasan). -5. Admin rental bisa melihat daftar review yang masuk untuk rental miliknya (list sederhana). - -Cakupan yang tidak dikerjakan: -1. Promo/CRM. -2. Super admin module review. -3. Balas review. -4. Edit/hapus review. - ---- - -## 2. Implementasi Database - -### 2.1 Migration Baru -Dibuat tabel reviews dengan relasi kuat ke booking, customer, vehicle, rental_company. - -File: -- database/migrations/2026_04_21_000010_create_reviews_table.php - -Struktur penting: -1. booking_id dibuat unique untuk menjamin satu booking maksimal satu review. -2. rating disimpan sebagai unsignedTinyInteger. -3. review dibuat nullable agar customer tetap bisa memberi rating walau tanpa komentar. -4. Index tambahan untuk query listing dan ringkasan rating. - ---- - -## 3. Model dan Relasi - -### 3.1 Model Baru -File: -- app/Models/Review.php - -Relasi: -1. Review belongsTo Booking -2. Review belongsTo User sebagai customer -3. Review belongsTo Vehicle -4. Review belongsTo RentalCompany - -### 3.2 Penyesuaian Model Existing - -File: -- app/Models/Booking.php - - Tambah relasi hasOne review() - -- app/Models/Vehicle.php - - Tambah relasi hasMany reviews() - -- app/Models/RentalCompany.php - - Tambah relasi hasMany reviews() - -- app/Models/User.php - - Tambah relasi hasMany reviews() dengan foreign key customer_id - ---- - -## 4. Controller dan Request - -### 4.1 Customer Review Controller -File: -- app/Http/Controllers/Customer/ReviewController.php - -Method: -1. create(Booking $booking) -2. store(StoreReviewRequest $request, Booking $booking) - -Aturan yang ditegakkan di controller: -1. Booking harus milik customer login. Jika bukan, response 404. -2. Booking harus status completed. -3. Booking tidak boleh sudah punya review. -4. Data relasi review diambil dari booking valid di server, bukan dari input frontend. - -Setelah store sukses: -- Redirect ke detail booking customer dengan flash success. - -### 4.2 Form Request -File: -- app/Http/Requests/StoreReviewRequest.php - -Validasi: -1. rating: required, integer, min 1, max 5. -2. review: nullable, string, max 1000. - -Alasan review nullable: -- User bisa cepat memberikan rating tanpa wajib menulis komentar panjang. - -### 4.3 Admin Rental Review Controller -File: -- app/Http/Controllers/AdminRental/ReviewController.php - -Method: -1. index() - -Fungsi: -1. Menampilkan review yang hanya milik rental company dari admin login. -2. Query menggunakan filter rental_company_id agar admin tidak melihat data rental lain. - ---- - -## 5. Routing - -File: -- routes/web.php - -Route customer review: -1. GET /my-bookings/{booking:booking_code}/review -> customer.reviews.create -2. POST /my-bookings/{booking:booking_code}/review -> customer.reviews.store - -Proteksi: -- middleware auth + role:customer - -Route admin rental review: -1. GET /admin-rental/reviews -> admin-rental.reviews.index - -Proteksi: -- middleware auth + role:admin_rental - ---- - -## 6. Perubahan Query Data - -### 6.1 Detail Mobil -File: -- app/Http/Controllers/Customer/KatalogController.php - -Pada method show(Vehicle $vehicle): -1. Ambil hanya review kendaraan yang terkait booking completed. -2. Hitung average rating. -3. Hitung total review. -4. Hitung breakdown jumlah bintang 1 sampai 5. -5. Ambil daftar review terbaru dengan eager loading customer. - -Hasil dikirim ke view detail mobil: -- reviews -- averageRating -- totalReviews -- ratingBreakdown - -### 6.2 Riwayat Booking Customer -File: -- app/Http/Controllers/Customer/MyBookingController.php - -Perubahan: -1. Eager load relasi review pada index. -2. Eager load relasi review pada show. - -Tujuan: -- Menghindari N+1 saat cek status sudah direview atau belum. - ---- - -## 7. Perubahan Blade - -### 7.1 Halaman Form Review Customer -File baru: -- resources/views/customer/reviews/create.blade.php - -Isi utama: -1. Info kendaraan, rental, booking code, tanggal sewa. -2. Input rating 1-5. -3. Textarea komentar (opsional). -4. Submit ke customer.reviews.store. - -### 7.2 Riwayat Booking Customer (Index) -File: -- resources/views/customer/bookings/index.blade.php - -Perubahan: -1. Tambah kolom Ulasan. -2. Jika completed + belum direview -> status Belum Direview. -3. Jika completed + sudah direview -> status Sudah Direview. -4. Tombol Beri Ulasan tampil hanya jika completed dan belum direview. - -### 7.3 Detail Booking Customer (Show) -File: -- resources/views/customer/bookings/show.blade.php - -Perubahan: -1. Jika completed + belum direview -> tampil CTA Beri Ulasan. -2. Jika completed + sudah direview -> tampil ringkasan ulasan yang sudah dibuat. - -### 7.4 Detail Mobil - Section Ulasan -File: -- resources/views/detail-mobil/rating-dan-ulasan.blade.php - -Perubahan: -1. Ganti placeholder menjadi data review nyata. -2. Tampil rata-rata rating dan total review. -3. Tampil breakdown bintang. -4. Tampil daftar review terbaru dengan nama customer disamarkan sebagian. -5. Tampil empty state jika belum ada review. - -Catatan teknis: -- Untuk menghindari error kompilasi style dinamis pada Blade, visual bar distribusi memakai elemen progress. - -### 7.5 Detail Mobil - Informasi Utama -File: -- resources/views/detail-mobil/informasi-utama.blade.php - -Perubahan: -1. Tambah ringkasan rating sederhana (avg dan jumlah review). - -### 7.6 Admin Rental - List Ulasan -File baru: -- resources/views/admin-rental/reviews/index.blade.php - -Perubahan: -1. Tabel sederhana berisi tanggal, kendaraan, customer, booking, rating, cuplikan ulasan. - -### 7.7 Sidebar Admin Rental -File: -- resources/views/components/admin-rental-sidebar.blade.php - -Perubahan: -1. Tambah menu Data Ulasan ke halaman admin-rental.reviews.index. - ---- - -## 8. Validasi Aturan Bisnis yang Dipenuhi - -1. Customer hanya bisa review booking miliknya sendiri. -2. Customer hanya bisa review jika booking completed. -3. Satu booking hanya satu review (double guard: unique DB + guard controller). -4. Data review terhubung ke booking, vehicle, rental_company, customer. -5. Detail mobil menampilkan review nyata dari database. -6. Admin rental hanya melihat review rental miliknya. - ---- - -## 9. Verifikasi yang Dilakukan - -Perintah yang dijalankan: -1. php artisan route:list --path=my-bookings; php artisan route:list --path=review; php artisan route:list --path=admin-rental/reviews -2. php artisan route:list --path=admin-rental/reviews - -Hasil: -1. Route customer review create/store terdaftar. -2. Route admin rental reviews index terdaftar. -3. Pemeriksaan error file penting tidak menemukan error setelah perbaikan akhir. - ---- - -## 10. Ringkasan Alur End-to-End - -1. Booking customer mencapai status completed. -2. Di riwayat booking/detail booking muncul tombol Beri Ulasan. -3. Customer submit rating dan komentar opsional. -4. Backend validasi kepemilikan booking, status completed, dan review belum ada. -5. Review disimpan dan terhubung ke booking, vehicle, rental_company, customer. -6. Detail mobil otomatis menampilkan ringkasan dan daftar ulasan terbaru. -7. Admin rental melihat ulasan masuk pada menu Data Ulasan. - ---- - -## 11. Langkah Lanjutan yang Disarankan - -1. Tambah unit/feature test untuk skenario akses review (ownership, completed, duplicate). -2. Tambah endpoint agregasi rating jika nanti dipakai modul promo/CRM. -3. Tambah moderation sederhana untuk kualitas konten ulasan sebelum tahap promo.