8.0 KiB
8.0 KiB
Flowchart - Fitur Booking Pendopo
Daftar Isi
- Lihat Halaman Booking
- Cek Ketersediaan Tanggal
- Buat Booking
- Upload Bukti Pembayaran Booking
- Lihat Status Booking
1. Lihat Halaman Booking
Deskripsi
Flowchart untuk mengakses halaman booking pendopo.
Flowchart
START
↓
{User sudah login?}
├─ NO → [Redirect ke halaman login] → END
└─ YES ↓
↓
{User adalah admin?}
├─ YES → [Tampilkan SweetAlert: "Admin tidak dapat melakukan booking"]
│ ↓
│ [Redirect ke dashboard admin]
│ ↓
│ END
└─ NO ↓
↓
[Query database: cari place dengan name = 'pendopo']
↓
{Place 'pendopo' ditemukan?}
├─ NO → [Query: ambil place aktif pertama]
│ ↓
│ [Gunakan place tersebut]
└─ YES ↓
↓
[Ambil data place pendopo]
↓
[Tampilkan halaman booking]
↓
[Tampilkan informasi pendopo:]
- Nama tempat
- Harga per hari
- Deskripsi
↓
[Tampilkan form booking]
↓
END
2. Cek Ketersediaan Tanggal
Deskripsi
Flowchart untuk mengecek apakah tanggal sudah dibooking atau masih tersedia.
Flowchart
START
↓
[User memilih tanggal booking]
↓
[Trigger event onchange pada input tanggal]
↓
[Kirim AJAX request ke server]
↓
[Server: validasi format tanggal]
↓
{Format tanggal valid?}
├─ NO → [Return error: "Format tanggal tidak valid"] → END
└─ YES ↓
↓
[Query database: cari booking dengan tanggal tersebut]
↓
[Query: WHERE place_id = pendopo_id]
↓
[Query: AND booking_date = tanggal_dipilih]
↓
{Booking ditemukan?}
├─ YES → [Return JSON: available = false]
│ ↓
│ [Tampilkan pesan: "Tanggal sudah dibooking"]
│ ↓
│ [Disable tombol submit]
│ ↓
│ [Tampilkan alert merah]
│ ↓
│ END
│
└─ NO → [Return JSON: available = true]
↓
[Tampilkan pesan: "Tanggal tersedia"]
↓
[Enable tombol submit]
↓
[Tampilkan alert hijau]
↓
END
3. Buat Booking
Deskripsi
Flowchart untuk proses pembuatan booking pendopo.
Flowchart
START
↓
[User di halaman booking]
↓
[User mengisi form:]
- Tanggal booking
- Nama pengunjung
- Nomor telepon
- Alamat
- Catatan (opsional)
↓
[User klik tombol "Booking Sekarang"]
↓
<Validasi input>
↓
{Tanggal >= hari ini?}
├─ NO → [Error: "Tanggal harus hari ini atau setelahnya"] → [Kembali ke form] → END
└─ YES ↓
↓
{Nama pengunjung terisi?}
├─ NO → [Error: "Nama wajib diisi"] → [Kembali ke form] → END
└─ YES ↓
↓
{Nomor telepon terisi?}
├─ NO → [Error: "Nomor telepon wajib diisi"] → [Kembali ke form] → END
└─ YES ↓
↓
{Alamat terisi?}
├─ NO → [Error: "Alamat wajib diisi"] → [Kembali ke form] → END
└─ YES ↓
↓
[Query database: cek tanggal sudah dibooking]
↓
{Tanggal sudah dibooking?}
├─ YES → [Error: "Tanggal sudah dibooking, pilih tanggal lain"]
│ ↓
│ [Kembali ke form dengan input tersimpan]
│ ↓
│ END
└─ NO ↓
↓
[Generate kode booking unik (AB-XXXXX)]
↓
[Hitung total harga = price_per_day dari place]
↓
[Simpan data ke tabel bookings:]
- user_id = user yang login
- place_id = pendopo_id
- booking_code = AB-XXXXX
- booking_date = tanggal dipilih
- visitor_name
- visitor_phone
- visitor_address
- num_persons = 1
- total_price
- notes
- status = 'pending'
↓
[Tampilkan notifikasi sukses]
↓
[Redirect ke halaman pembayaran]
↓
END
4. Upload Bukti Pembayaran Booking
Deskripsi
Flowchart untuk upload bukti transfer pembayaran booking.
Flowchart
START
↓
[User di halaman pembayaran booking]
↓
[Tampilkan informasi booking:]
- Kode booking
- Tanggal booking
- Nama pengunjung
- Total harga
↓
[Query database: ambil daftar rekening bank aktif]
↓
[Tampilkan nomor rekening bank]
↓
[User melakukan transfer ke rekening]
↓
[User klik "Upload Bukti Pembayaran"]
↓
[User pilih file bukti transfer]
↓
<Validasi file>
↓
{File dipilih?}
├─ NO → [Error: "File wajib dipilih"] → [Kembali ke form] → END
└─ YES ↓
↓
{Format file valid (jpg, jpeg, png, pdf)?}
├─ NO → [Error: "Format file tidak valid"] → [Kembali ke form] → END
└─ YES ↓
↓
{Ukuran file <= 5MB?}
├─ NO → [Error: "Ukuran file terlalu besar"] → [Kembali ke form] → END
└─ YES ↓
↓
[Generate nama file unik:]
Format: YYYYMMDDHHMMSS_uniqid.ext
↓
[Simpan file ke /public/payment-proofs/]
↓
[Update tabel bookings:]
- payment_proof = path file
- status tetap 'pending'
↓
[Tampilkan notifikasi sukses]
↓
[Redirect ke halaman status booking]
↓
END
5. Lihat Status Booking
Deskripsi
Flowchart untuk melihat status booking setelah upload bukti pembayaran.
Flowchart
START
↓
[User mengakses halaman status booking]
↓
[Query database: ambil booking berdasarkan booking_code]
↓
{Booking ditemukan?}
├─ NO → [Error 404: Booking tidak ditemukan] → END
└─ YES ↓
↓
{Booking milik user yang login?}
├─ NO → [Error 403: Unauthorized] → END
└─ YES ↓
↓
[Ambil data booking dengan relasi place]
↓
[Cek status booking]
↓
{Status = 'confirmed'?}
├─ YES → [Tampilkan halaman status]
│ ↓
│ [Tampilkan alert sukses:]
│ "Pembayaran berhasil diverifikasi"
│ ↓
│ [Tampilkan informasi booking:]
│ - Kode booking
│ - Status: Confirmed
│ - Tanggal booking
│ - Nama pengunjung
│ - Total harga
│ ↓
│ [Tampilkan tombol "Kembali ke Beranda"]
│ ↓
│ END
│
├─ Status = 'pending' → [Tampilkan halaman status]
│ ↓
│ [Tampilkan alert warning:]
│ "Menunggu verifikasi admin"
│ ↓
│ [Tampilkan informasi booking]
│ ↓
│ [Tampilkan pesan:]
│ "Bukti pembayaran sedang diverifikasi"
│ ↓
│ END
│
└─ Status = 'rejected' → [Tampilkan halaman status]
↓
[Tampilkan alert danger:]
"Pembayaran ditolak"
↓
[Tampilkan alasan penolakan]
↓
[Tampilkan tombol "Upload Ulang Bukti"]
↓
END
Panduan Membuat di Draw.io
Simbol Flowchart
- Terminator (Oval) - START/END
- Process (Rectangle) - Proses/aksi
- Decision (Diamond) - Kondisi/percabangan
- Data (Parallelogram) - Input/Output
- Database (Cylinder) - Operasi database
- Document (Rectangle with wavy bottom) - File/dokumen
Warna yang Disarankan
- START/END: Hijau teal (#14B8A6)
- Process: Biru muda (#E3F2FD)
- Decision: Kuning (#FFF59D)
- Database Operation: Ungu muda (#E1BEE7)
- File Operation: Oranye muda (#FFE0B2)
- Error: Merah muda (#FFCDD2)
- Success: Hijau muda (#C8E6C9)
- Warning: Kuning muda (#FFF9C4)
Tips
- Gunakan swimlane untuk memisahkan User, System, dan Database
- Tandai proses AJAX dengan warna berbeda
- Gunakan connector yang jelas untuk decision branch
- Tambahkan notes untuk validasi kompleks
Dibuat: 25 Februari 2026
Fitur: Booking Pendopo
Sistem: Banyu Biru Ticketing & Booking System