septian_airpanaswebsite/flowcharts/full-sistem-flowchart.md

505 lines
70 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Flowchart - Full Sistem Banyu Biru (SATU KESELURUHAN)
```
┌─────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ BANYU BIRU TICKETING & BOOKING SYSTEM │
│ FULL SYSTEM UNIFIED FLOWCHART │
├─────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────┐ │
│ │ START │ │
│ └────────┬────────┘ │
│ │ │
│ ▼ │
│ ┌───────────────────────────┐ │
│ │ USER ACCESSES WEBSITE │ │
│ │ (Buka browser, ketik URL) │ │
│ └───────────────┬───────────┘ │
│ │ │
│ ▼ │
│ ┌────────────────────────────┐ │
│ │ {USER LOGGED IN?} │ │
│ │ (Cek Session) │ │
│ └─────────────┬──────────────┘ │
│ │ │
│ ┌─────────┴─────────┐ │
│ │ │ │
│ NO YES │
│ │ │ │
│ ▼ ▼ │
│ ┌─────────────────────────┐ │ ┌─────────────────────────────┐ │
│ │ SHOW HOME PAGE │ │ │ {CHECK ROLE} │ │
│ │ (Public Content) │ │ └─────────────┬─────────────┘ │
│ │ - Banner │ │ │ │
│ │ - Info Tempat │ │ ┌────────┴────────┐ │
│ │ - Layanan │ │ │ │ │
│ └────────────┬────────────┘ │ ADMIN USER │
│ │ │ │ │ │
│ ▼ │ ▼ ▼ │
│ ┌─────────────────────────┐ │ ┌─────────┐ ┌─────────────┐ │
│ │ USER CLICKS: │ │ │DASHBOARD│ │HOME PAGE │ │
│ │ - LOGIN │ │ │(Admin) │ │(User) │ │
│ │ - REGISTER │ │ └────┬────┘ └──────┬──────┘ │
│ │ - LIHAT TIKET │ │ │ │ │
│ │ - LIHAT BOOKING │ │ │ │ │
│ └────────────┬────────────┘ │ │ │ │
│ │ │ │ │ │
│ ▼ │ │ │ │
│ ┌─────────────────────────┐ │ ┌────┴────┐ ┌────┴──────┐ │
│ │ {ACTION SELECTED?} │ │ │ │ │ │ │
│ └────────────┬────────────┘ │ │ │ │ │ │
│ │ │ ▼ ▼ ▼ ▼ │
│ ┌────────────────────┼────────────────────┐ │ │ │ │ │
│ │ │ │ │ │ │ │ │
│ ▼ ▼ ▼ │ │ │ │ │
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ │ │ │ │
│ │ LOGIN │ │ REGISTER │ │ LOGOUT │ │ │ │ │ │
│ └────────┬────────┘ └────────┬────────┘ └────────┬────────┘ │ │ │ │ │
│ │ │ │ │ │ │ │ │
│ ▼ ▼ ▼ │ │ │ │ │
│ ┌───────────────────┐ ┌───────────────────┐ ┌───────────────────┐ │ │ │ │ │
│ │ INPUT EMAIL & │ │ INPUT: NAME, │ │ DESTROY SESSION │ │ │ │ │ │
│ │ PASSWORD │ │ EMAIL, PASSWORD │ │ CLEAR AUTH │ │ │ │ │ │
│ └────────┬──────────┘ └────────┬──────────┘ └────────┬──────────┘ │ │ │ │ │
│ │ │ │ │ │ │ │ │
│ ▼ ▼ ▼ │ │ │ │ │
│ ┌───────────────────┐ ┌───────────────────┐ ┌───────────────────┐ │ │ │ │ │
│ │ VALIDATE & │ │ VALIDATE & │ │ REDIRECT TO │ │ │ │ │ │
│ │ CHECK CREDENTIAL │ │ CHECK EMAIL │ │ HOME PAGE │ │ │ │ │ │
│ └────────┬──────────┘ └────────┬──────────┘ └───────────────────┘ │ │ │ │ │
│ │ │ │ │ │ │ │
│ ▼ ▼ │ │ │ │ │
│ ┌───────────────────┐ ┌───────────────────┐ │ │ │ │ │
│ │ {VALID?} │ │ {VALID?} │ │ │ │ │ │
│ └────────┬──────────┘ └────────┬──────────┘ │ │ │ │ │
│ │ │ │ │ │ │ │
│ ┌──────┴──────┐ ┌──────┴──────┐ │ │ │ │ │
│ NO YES NO YES │ │ │ │ │
│ │ │ │ │ │ │ │ │ │
│ ▼ ▼ ▼ ▼ │ │ │ │ │
│ ┌──────┐ ┌───────────────────┐ ┌──────┐ ┌───────────────────┐ │ │ │ │ │
│ │ERROR │ │ CREATE SESSION │ │ERROR │ │ HASH PASSWORD │ │ │ │ │ │
│ └──┬───┘ └────────┬──────────┘ └──┬───┘ └────────┬──────────┘ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │
│ │ ▼ │ ▼ │ │ │ │ │
│ │ ┌───────────────────┐ │ ┌───────────────────┐ │ │ │ │ │
│ │ │ {ROLE = ADMIN?} │ │ │ INSERT TO DB │ │ │ │ │ │
│ │ └────────┬──────────┘ │ │ CREATE SESSION │ │ │ │ │ │
│ │ │ │ └────────┬──────────┘ │ │ │ │ │
│ │ ┌──────┴──────┐ │ │ │ │ │ │ │
│ │ YES NO │ │ │ │ │ │ │
│ │ │ │ │ ▼ │ │ │ │ │
│ │ ▼ ▼ │ ┌───────────────────┐ │ │ │ │ │
│ │ ┌────────┐ ┌────────┐ │ │ REDIRECT TO │ │ │ │ │ │
│ │ │DASHBOARD│ │ HOME │ │ │ HOME │ │ │ │ │ │
│ │ └────────┘ └────────┘ │ └───────────────────┘ │ │ │ │ │
│ │ │ │ │ │ │ │
│ └────────────────────────────┴───────────────────────────────────┘ │ │ │ │
│ │ │ │ │ │
│ │ │ │ │ │
│ ▼ ▼ ▼ ▼ │
│ ┌────────────────────────────────────────┐ │
│ │ ADMIN MENU OPTIONS │ │
│ │ ┌──────┬──────┬──────┬──────┬────┐ │ │
│ │ │ Tiket│ Bank │ Order│Book │QR │ │ │
│ │ │ Mgmt │ Akun │ Verif│ing │Scan│ │ │
│ │ └──┬───┴──┬───┴──┬───┴────┴────┘ │ │
│ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │
│ │ ▼ ▼ ▼ ▼ ▼ │ │
│ │ ┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐│ │
│ │ │CRUD │ │CRUD │ │Verif│ │Verif│ │Scan││ │
│ │ │Tiket│ │Bank │ │Tiket│ │Book │ │QR ││ │
│ │ └─────┘ └─────┘ └─────┘ └─────┘ └─────┘│ │
│ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │
│ └─────┼──────┼──────┼─────┼─────┼─────┘ │
│ │ │ │ │ │ │
│ │ │ │ │ │ │
│ ▼ ▼ ▼ ▼ ▼ │
│ ┌────────────────────────────────────────┐ │
│ │ USER MENU OPTIONS │ │
│ │ ┌──────┬──────┬──────┬──────┬────┐ │ │
│ │ │Beli │Upload│Downld│Book │Prof│ │ │
│ │ │Tiket│Bukti │Tiket│ing │ile │ │ │
│ │ └──┬───┴──┬───┴──┬───┴────┴────┘ │ │
│ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │
│ │ ▼ ▼ ▼ ▼ ▼ │ │
│ │ ┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐│ │
│ │ │Buy │ │Upload│ │Print│ │Book │ │Edit ││ │
│ │ │Ticket│ │Proof │ │PDF │ │Date │ │Prof ││ │
│ │ └─────┘ └─────┘ └─────┘ └─────┘ └─────┘│ │
│ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │
│ └─────┼──────┼──────┼─────┼─────┼─────┘ │
│ │ │ │ │ │ │
│ │ │ │ │ │ │
│ ▼ ▼ ▼ ▼ ▼ │
│ ┌────────────────────────────────────────────┐ │
│ │ SHARED DATABASE │ │
│ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ │
│ │ │ users │ │tickets │ │places │ │ │
│ │ │bank_acc│ │ticket_ │ │bookings │ │ │
│ │ │ │ │orders │ │ │ │ │
│ │ └─────────┘ └─────────┘ └─────────┘ │ │
│ └────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
```
---
## UNIFIED FLOW - DETAIL
```
START
┌─────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ USER OPENS WEBSITE │
│ (URL: domain.com) │
└────────────────────────────────────────────────────────┬────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ {IS USER LOGGED IN?} │
│ (Check session/auth cookie) │
└──────────────────────────┬───────────────────────────────────────────────────────────────────────────────────┘
┌──────────────┴──────────────┐
│ │
NO YES
│ │
▼ ▼
┌─────────────────────┐ ┌───────────────────────────────────────────────────────────────────────────────┐
│ SHOW PUBLIC PAGE │ │ {WHAT IS THE USER ROLE?} │
│ - Home banner │ └────────────────────────────┬────────────────────────────────────────────────────┘
│ - Info tempat │ │
│ - Menu: Login │ ┌────────────────┴────────────────┐
│ Register │ │ │
│ │ ▼ ▼
│ ┌─────────────────┴─────────┐ │
│ │ USER CLICKS: │ │
│ │ - Login │ │
│ │ - Register │ │
│ └────────────┬────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────┐ │ ┌──────────────────────┐ ┌──────────────────────┐
│ │ LOGIN PROCESS: │ │ │ ADMIN USER │ │ REGULAR USER │
│ │ 1. Show login form │ │ │ │ │ │
│ │ 2. Input email/pass │ │ │ ┌──────────────┐ │ │ ┌──────────────┐ │
│ │ 3. Validate │ │ │ │ ADMIN │ │ │ │ USER │ │
│ │ 4. Check DB │ │ │ │ DASHBOARD │ │ │ │ HOME PAGE │ │
│ │ 5. Create session │ │ │ │ │ │ │ │ │ │
│ │ 6. Redirect │ │ │ │ ┌────────┐ │ │ │ │ ┌────────┐ │ │
│ └───────────┬───────────┘ │ │ │ │Statistics│ │ │ │ │ │MyTicket│ │ │
│ │ │ │ │ │ - Total │ │ │ │ │ │MyBookg │ │ │
│ │ │ │ │ │ - Revenue│ │ │ │ │ │Profile │ │ │
│ │ │ │ │ └────────┘ │ │ │ │ │Logout │ │ │
│ │ │ │ │ │ │ │ │ └────────┘ │ │
│ ▼ │ │ │ ┌────────┐ │ │ │ │ │ │
│ ┌─────────────────────────┐ │ │ │ │CRUD │ │ │ │ │ ┌────────┐ │ │
│ │ REGISTER PROCESS: │ │ │ │ │Tikets │ │ │ │ │ │BUY │ │ │
│ │ 1. Show register form │ │ │ │ └────────┘ │ │ │ │ │TICKET │ │ │
│ │ 2. Input data │ │ │ │ │ │ │ │ └────────┘ │ │
│ │ 3. Validate │ │ │ │ ┌────────┐ │ │ │ │ │ │
│ │ 4. Hash password │ │ │ │ │CRUD │ │ │ │ │ ┌────────┐ │ │
│ │ 5. Insert DB │ │ │ │ │Bank │ │ │ │ │ │BOOKING │ │ │
│ │ 6. Create session │ │ │ │ └────────┘ │ │ │ │ │PENDOPO │ │ │
│ │ 7. Redirect │ │ │ │ │ │ │ │ └────────┘ │ │
│ └───────────┬───────────┘ │ │ │ ┌────────┐ │ │ │ │ │ │
│ │ │ │ │ │VERIFY │ │ │ │ │ │ │
│ │ │ │ │ │Orders │ │ │ │ │ │ │
│ │ │ │ │ └────────┘ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ ┌────────┐ │ │ │ │ │ │
│ │ │ │ │ │VERIFY │ │ │ │ │ │ │
│ │ │ │ │ │Bookings│ │ │ │ │ │ │
│ │ │ │ │ └────────┘ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ ┌────────┐ │ │ │ │ │ │
│ │ │ │ │ │QR │ │ │ │ │ │ │
│ │ │ │ │ │Scanner │ │ │ │ │ │ │
│ │ │ │ │ └────────┘ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ ┌────────┐ │ │ │ │ │ │
│ │ │ │ │ │CRUD │ │ │ │ │ │ │
│ │ │ │ │ │Admins │ │ │ │ │ │ │
│ │ │ │ │ └────────┘ │ │ │ │ │ │
│ │ │ │ └──────┬───────┘ │ └──┼──────────────┘ │
│ │ │ │ │ │ │ │
│ └───────────────┼───┴───────────┴───────────┘ │ │
│ │ │ │
│ ▼ │ │
│ ┌─────────────────────────────────────────────────────────────┴────────────────────┘
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ │ BUY TICKET FLOW │
│ │ ┌─────────────────────────────────────────────────────────────────────────────────────────────┐ │
│ │ │ 1. USER SELECTS: Visit Date, Ticket Type, Quantity (1-20) │ │
│ │ │ 2. SYSTEM CALCULATES: Total Price = qty × ticket_price │ │
│ │ │ 3. USER CLICKS: "Lanjutkan Pembayaran" │ │
│ │ │ 4. SYSTEM GENERATES: Order Code (AT-XXXXX), Ticket Codes (AT-XXXXX), QR Codes │ │
│ │ │ 5. SYSTEM SAVES: ticket_order + ticket_order_items to DB │ │
│ │ │ 6. USER SEES: Payment page with bank account info │ │
│ │ │ 7. USER TRANSFERS: Money to bank account │ │
│ │ │ 8. USER UPLOADS: Payment proof (jpg/png/pdf, max 5MB) │ │
│ │ │ 9. SYSTEM SAVES: Payment proof to /public/payment-proofs/ │ │
│ │ │ 10. USER WAITS: For admin verification │ │
│ │ └─────────────────────────────────────────────────────────────────────────────────────────────┘ │
│ │ │ │
│ │ ▼ │
│ │ ┌─────────────────────────────────────────────────────────────────────────────────────────────┐ │
│ │ │ BOOKING FLOW │ │
│ │ │ ┌─────────────────────────────────────────────────────────────────────────────────────┐ │ │
│ │ │ │ 1. USER SELECTS: Booking Date │ │ │
│ │ │ │ 2. SYSTEM CHECKS: Is date available? (AJAX) │ │ │
│ │ │ │ 3. USER FILLS: Visitor Name, Phone, Address, Notes │ │ │
│ │ │ │ 4. USER CLICKS: "Booking Sekarang" │ │ │
│ │ │ │ 5. SYSTEM GENERATES: Booking Code (AB-XXXXX) │ │ │
│ │ │ │ 6. SYSTEM SAVES: booking to DB (status=pending) │ │ │
│ │ │ │ 7. USER SEES: Payment page with bank account info │ │ │
│ │ │ │ 8. USER TRANSFERS: Money to bank account │ │ │
│ │ │ │ 9. USER UPLOADS: Payment proof │ │ │
│ │ │ │ 10. USER WAITS: For admin verification │ │ │
│ │ │ └─────────────────────────────────────────────────────────────────────────────────────┘ │ │
│ │ └─────────────────────────────────────────────────────────────────────────────────────────────┘ │
│ │ │ │
│ │ ▼ │
│ │ ┌─────────────────────────────────────────────────────────────────────────────────────────────┐ │
│ │ │ ADMIN VERIFICATION FLOW │ │
│ │ │ ┌─────────────────────────────────────────────────────────────────────────────────────┐ │ │
│ │ │ │ 1. ADMIN OPENS: Order Tiket / Booking menu │ │ │
│ │ │ │ 2. ADMIN SEES: List of pending payments │ │ │
│ │ │ │ 3. ADMIN CLICKS: "Detail" on an order │ │ │
│ │ │ │ 4. ADMIN SEES: Customer info, items, payment proof │ │ │
│ │ │ │ 5. ADMIN DECIDES: │ │ │
│ │ │ │ ┌────────────────┬────────────────┐ │ │ │
│ │ │ │ │ KONFIRMASI │ TOLAK │ │ │ │
│ │ │ │ ├────────────────┼────────────────┤ │ │ │
│ │ │ │ │ - Update status│ - Input reason │ │ │ │
│ │ │ │ │ = 'confirmed'│ - Update status│ │ │ │
│ │ │ │ │ - Set confirm │ = 'rejected' │ │ │ │
│ │ │ │ │ _at = now() │ │ │ │ │
│ │ │ │ └────────────────┴────────────────┘ │ │ │
│ │ │ └─────────────────────────────────────────────────────────────────────────────────────┘ │ │
│ │ └─────────────────────────────────────────────────────────────────────────────────────────────┘ │
│ │ │ │
│ │ ▼ │
│ │ ┌─────────────────────────────────────────────────────────────────────────────────────────────┐ │
│ │ │ QR SCANNER FLOW (Admin) │ │
│ │ │ ┌─────────────────────────────────────────────────────────────────────────────────────┐ │ │
│ │ │ │ 1. ADMIN OPENS: Verifikasi Tiket page │ │ │
│ │ │ │ 2. ADMIN CHOOSES: Scan QR / Input Manual │ │ │
│ │ │ │ 3. SYSTEM READS: QR Code / Manual Input │ │ │
│ │ │ │ 4. SYSTEM QUERIES: ticket_order_items by ticket_code │ │ │
│ │ │ │ 5. SYSTEM CHECKS: Is ticket valid? (not used) │ │ │
│ │ │ │ 6. SYSTEM SHOWS: Ticket info + Valid/Used status │ │ │
│ │ │ │ 7. ADMIN CLICKS: "Tandai Sudah Dipakai" (if valid) │ │ │
│ │ │ │ 8. SYSTEM UPDATES: is_used = true, used_at = now() │ │ │
│ │ │ └─────────────────────────────────────────────────────────────────────────────────────┘ │ │
│ │ └─────────────────────────────────────────────────────────────────────────────────────────────┘ │
│ │ │ │
│ │ ▼ │
│ │ ┌─────────────────────────────────────────────────────────────────────────────────────────────┐ │
│ │ │ DOWNLOAD TICKET FLOW (User after confirmed) │ │
│ │ │ ┌─────────────────────────────────────────────────────────────────────────────────────┐ │ │
│ │ │ │ 1. USER OPENS: My Tickets / Download page │ │ │
│ │ │ │ 2. USER CLICKS: Download/Print button │ │ │
│ │ │ │ 3. SYSTEM GENERATES: PDF with QR Code │ │ │
│ │ │ │ 4. USER DOWNLOADS/PRINTS: Ticket PDF │ │ │
│ │ │ └─────────────────────────────────────────────────────────────────────────────────────┘ │ │
│ │ └─────────────────────────────────────────────────────────────────────────────────────────────┘ │
│ │ │ │
│ │ ▼ │
│ │ ┌─────────────────────────────────────────────────────────────────────────────────────────────┐ │
│ │ │ PROFILE & HISTORY FLOW │ │
│ │ │ ┌─────────────────────────────────────────────────────────────────────────────────────┐ │ │
│ │ │ │ USER CAN: View/Edit Profile, Change Password, View Ticket History, View Booking │ │ │
│ │ │ └─────────────────────────────────────────────────────────────────────────────────────┘ │ │
│ │ └─────────────────────────────────────────────────────────────────────────────────────────────┘ │
│ │ │ │
│ │ ▼ │
│ │ ┌─────────────────────────────────────────────┐ │
│ │ │ LOGOUT PROCESS │ │
│ │ │ 1. User clicks Logout │ │
│ │ │ 2. System destroys session │ │
│ │ │ 3. System redirects to home page │ │
│ │ └─────────────────────┬───────────────────────┘ │
│ │ │ │
│ └────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌────────┐ │
│ │ END │ │
│ └────────┘ │
└─────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
```
---
## SUPER SIMPLE UNIFIED FLOW (One Page)
```
┌─────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ SISTEM PARKIRAN & BOOKING WISATA BANYU BIRU │
│ (FULL FLOWCHART) │
├─────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ │
│ ┌───────┐ │
│ │ START │ │
│ └───┬───┘ │
│ │ │
│ ▼ │
│ ┌──────────────────────┐ │
│ │ USER BUKA WEBSITE │ │
│ └──────────┬───────────┘ │
│ │ │
│ ▼ │
│ ┌───────────────────────────┐ │
│ │ SUDAH LOGIN? │ │
│ │ (Cek Session) │ │
│ └─────┬──────────────┬──────┘ │
│ ┌───────┴──────┐ ┌───────┴────────┐ │
│ NO │ NO │YES │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────────┐ │
│ │ TAMPILKAN HAL. │ │TAMPILKAN HAL. │ │ CEK ROLE: │ │
│ │ PUBLIK │ │ LOGIN/REGISTER │ │ ADMIN / USER │ │
│ │ (Banner, Info) │ │ │ └─────────┬───────────┘ │
│ └────────┬────────┘ └────────┬────────┘ │ │
│ │ │ ┌───┴───┐ │
│ │ │ │ │ │
│ │ │ ADMIN USER │
│ │ │ │ │ │
│ │ │ ▼ ▼ │
│ │ │ ┌─────────┐ ┌─────────┐ │
│ │ │ │DASHBOARD│ │HOME │ │
│ │ │ │ADMIN │ │USER │ │
│ │ │ └────┬────┘ └────┬────┘ │
│ │ │ │ │ │
│ │ │ ┌───────┴───────┴───────┐ │
│ │ │ │ │ │
│ │ │ ▼ ▼ │
│ │ │ ┌──────────┐ ┌──────────┐ │
│ │ │ │ADMIN MENU│ │USER MENU │ │
│ │ │ │──────────│ │──────────│ │
│ │ │ │•Tiket │ │•Beli Tiket│ │
│ │ │ │•Bank │ │•Booking │ │
│ │ │ │•Order │ │•My Tiket │ │
│ │ │ │•Booking │ │•My Book │ │
│ │ │ │•QR Scan │ │•Profile │ │
│ │ │ │•Admin │ │•Logout │ │
│ │ │ │•Logout │ │ │ │
│ │ │ └────┬─────┘ └────┬─────┘ │
│ │ │ │ │ │
│ │ │ │ ┌─────────────┘ │
│ │ │ │ │ │
│ │ │ ▼ ▼ │
│ │ │ ┌─────────────────────────┐ │
│ │ │ │ DATABASE (MySQL) │ │
│ │ │ │ ─────────────────────│ │
│ │ │ │ • users │ │
│ │ │ │ • tickets │ │
│ │ │ │ • ticket_orders │ │
│ │ │ │ • ticket_order_items │ │
│ │ │ │ • places │ │
│ │ │ │ • bookings │ │
│ │ │ │ • bank_accounts │ │
│ │ │ └─────────────────────────┘ │
│ │ │ │ │
│ │ │ │ │
│ └────────────────────┴────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────────────────────────────────────────────┐ │
│ │ ALUR LENGKAP (Dari Login sampai Logout): │ │
│ │ │ │
│ │ 1. USER LOGIN → 2. PILIH MENU → 3. LAKUKAN AKSI → 4. ADMIN VERIFIKASI → 5. SELESAI → LOGOUT │ │
│ │ │ │
│ │ ┌─────────────────────────────────────────────────────────────────────────────────────────┐ │ │
│ │ │ JIKA USER MEMILIH "BELI TIKET": │ │ │
│ │ │ ───────────────────────────────────────────────────────────────────────────────────────── │ │
│ │ │ User Pilih Tanggal → Pilih Tiket → Pilih Jumlah → Hitung Total → Bayar → Upload Bukti │ │
│ │ │ ↓ │ │
│ │ │ Admin Verifikasi (Terima/Tolak) → User Download Tiket → Scan QR saat datang │ │
│ │ └────────────────────────────────────────────────────────────────────────────────────────────┘ │ │
│ │ │ │
│ │ ┌─────────────────────────────────────────────────────────────────────────────────────────┐ │ │
│ │ │ JIKA USER MEMILIH "BOOKING PENDOPO": │ │ │
│ │ │ ───────────────────────────────────────────────────────────────────────────────────────── │ │
│ │ │ User Pilih Tanggal → Cek Ketersediaan → Isi Data → Booking → Bayar → Upload Bukti │ │
│ │ │ ↓ │ │
│ │ │ Admin Verifikasi (Terima/Tolak) → BookingConfirmed │ │
│ │ └────────────────────────────────────────────────────────────────────────────────────────────┘ │ │
│ │ │ │
│ │ ┌─────────────────────────────────────────────────────────────────────────────────────────┐ │ │
│ │ │ JIKA ADMIN MEMILIH "VERIFIKASI": │ │ │
│ │ │ ───────────────────────────────────────────────────────────────────────────────────────── │ │
│ │ │ Admin Lihat Daftar Pending → Klik Detail → Periksa Bukti → Konfirmasi / Tolak │ │
│ │ │ ↓ │ │
│ │ │ Status diUpdate → User Dapat/notifikasi │ │
│ │ └────────────────────────────────────────────────────────────────────────────────────────────┘ │ │
│ │ │ │
│ │ ┌─────────────────────────────────────────────────────────────────────────────────────────┐ │ │
│ │ │ JIKA ADMIN MEMILIH "QR SCANNER": │ │ │
│ │ │ ───────────────────────────────────────────────────────────────────────────────────────── │ │
│ │ │ Admin Scan QR / Input Manual → Sistem Cek Validitas → Tampilkan Hasil (Valid/Used) │ │
│ │ │ ↓ │ │
│ │ │ Jika Valid → Tandai Sudah Dipakai │ │
│ │ └────────────────────────────────────────────────────────────────────────────────────────────┘ │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────────────────────────────────┘ │
│ │
│ │ │
│ ▼ │
│ ┌───────┐ │
│ │ END │ │
│ └───────┘ │
└─────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
```
---
## KETERANGAN:
### Aktor:
- **GUEST** = Pengunjung yang belum login
- **USER** = Pengunjung yang sudah login (membeli tiket/booking)
- **ADMIN** = Petugas yang mengelola sistem
### Menu Admin:
| Menu | Fungsi |
|------|--------|
| Dashboard | Lihat statistik & chart |
| Tiket | CRUD data tiket |
| Rekening Bank | CRUD rekening bank |
| Order Tiket | Verifikasi pembayaran tiket |
| Booking | Verifikasi pembayaran booking |
| QR Scanner | Scan & verifikasi ticket |
| Admin | CRUD admin lain |
### Menu User:
| Menu | Fungsi |
|------|--------|
| Beli Tiket | Pembelian tiket masuk |
| Booking | Pemesanan pendopo |
| Tiket Saya | Lihat riwayat & download |
| Booking Saya | Lihat riwayat booking |
| Profil | Edit profil & password |
### Status:
- **pending** = Menunggu verifikasi
- **confirmed** = Diterima/confirmed
- **rejected** = Ditolak
---
**Dibuat**: 9 Maret 2026
**Sistem**: Banyu Biru Ticketing & Booking System
**Tipe**: Unified Flowchart (Semua jadi satu)