> For the complete documentation index, see [llms.txt](https://learn.devlabss.my.id/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://learn.devlabss.my.id/laravel/bab-11-logika-transaksi-peminjaman/11.5-checkpoint-uji-pemahamanmu-sebelum-lanjut.md).

# 11.5 Checkpoint: Uji Pemahamanmu Sebelum Lanjut!

## Checkpoint akhir BAB 11

Sebelum masuk ke API, pastikan logika transaksi peminjaman Anda sudah benar-benar masuk akal.

Di BAB 11, aplikasi E-Library mulai bergerak dari sekadar CRUD menjadi aplikasi yang punya aturan bisnis.

Sekarang data tidak hanya ditambah, diubah, atau dihapus.

Sekarang data juga harus diproses dengan aturan tertentu.

{% hint style="success" %}
Kalau mayoritas poin di halaman ini sudah bisa Anda jelaskan dan praktikkan, berarti Anda siap masuk ke BAB 12.
{% endhint %}

### Ringkasan besar BAB 11

Di BAB 11, Anda sudah belajar alur penting berikut:

```
pengguna memilih buku -> sistem mengecek stok -> data peminjaman disimpan -> stok buku berkurang -> tombol pinjam menyesuaikan kondisi stok
```

Kalau alur ini sudah terasa masuk akal, berarti Anda mulai paham bagaimana aturan bisnis bekerja di dalam aplikasi.

Dan ini penting sekali.

Karena aplikasi nyata hampir selalu punya proses bisnis yang harus dijaga logikanya.

### Yang seharusnya sudah Anda pahami

Setelah menyelesaikan BAB 11, Anda seharusnya sudah paham hal berikut:

* apa itu alur bisnis peminjaman buku
* kenapa transaksi peminjaman tidak cukup hanya menyimpan satu data
* kenapa stok buku harus ikut diperbarui
* kapan sistem boleh menerima peminjaman
* kapan tombol pinjam harus dinonaktifkan
* cara mengecek stok sebelum menyimpan transaksi
* cara menyimpan data ke tabel `peminjaman`
* cara mengurangi stok pada tabel `buku`
* alasan satu aksi bisa memanipulasi dua tabel sekaligus
* risiko jika urutan logika ditulis sembarangan

### Bukti hasil praktik yang seharusnya sudah ada

Hasil praktik minimal yang seharusnya sudah bisa Anda tunjukkan:

* tabel `peminjaman` berhasil dibuat
* kolom `stok` sudah ada pada tabel `buku`
* form atau tombol pinjam sudah tersedia
* data peminjaman berhasil tersimpan ke database
* stok buku berkurang setelah peminjaman berhasil
* tombol pinjam nonaktif saat stok habis
* buku dengan stok `0` tidak bisa dipinjam lagi

### Checklist mandiri

Coba jawab pertanyaan berikut tanpa melihat subbab sebelumnya.

#### Pemahaman konsep

* Kenapa transaksi peminjaman harus mengecek stok lebih dulu.
* Kenapa penyimpanan data peminjaman harus diikuti pengurangan stok.
* Kenapa buku dengan stok `0` tidak boleh tetap menampilkan tombol pinjam aktif.
* Kenapa satu request bisa memengaruhi dua tabel sekaligus.
* Kenapa urutan proses sangat penting pada logika transaksi.

#### Pemahaman alur

* Saat tombol pinjam ditekan, data apa yang perlu disimpan.
* Dari mana sistem tahu buku masih tersedia atau tidak.
* Apa yang terjadi pada stok setelah transaksi berhasil.
* Kenapa tampilan perlu menyesuaikan kondisi stok.
* Apa dampaknya kalau stok dikurangi tanpa validasi lebih dulu.

Kalau Anda masih ragu menjawab bagian ini, sebaiknya ulangi lagi subbab 11.1 sampai 11.4.

### Indikator kesiapan akhir BAB 11

#### Pemahaman konsep

* Saya paham alur bisnis peminjaman buku.
* Saya paham hubungan antara transaksi dan stok.
* Saya paham alasan buku tidak boleh dipinjam saat stok habis.
* Saya paham satu aksi bisa memanipulasi lebih dari satu tabel.
* Saya paham urutan logika memengaruhi hasil transaksi.

#### Kesiapan praktik

* Saya bisa menambahkan kolom `stok` ke tabel `buku`.
* Saya bisa membuat tabel `peminjaman`.
* Saya bisa menyimpan data peminjaman dari controller.
* Saya bisa mengurangi stok buku setelah transaksi berhasil.
* Saya bisa membuat tombol pinjam nonaktif saat stok habis.

#### Kesiapan troubleshooting

* Saya tahu penyebab stok tidak berkurang setelah peminjaman.
* Saya tahu penyebab data peminjaman tersimpan tetapi tombol masih aktif.
* Saya tahu kapan harus mengecek route, controller, model, dan view.
* Saya tahu risiko jika data peminjaman tersimpan tetapi stok gagal diperbarui.
* Saya tahu kenapa logika bisnis tidak cukup hanya ditulis di tampilan.

### Troubleshooting cepat BAB 11

Kalau peminjaman belum aman, cek tiga hal ini lebih dulu:

* pastikan stok dicek sebelum transaksi disimpan
* pastikan data peminjaman dan pengurangan stok berjalan berurutan
* pastikan tombol pinjam membaca kondisi stok terbaru

### Jika masih ada yang belum siap

{% hint style="warning" %}
Jangan buru-buru masuk ke BAB 12 jika alur transaksi peminjaman masih terasa kabur. API akan lebih mudah dipahami kalau logika data di sisi web sudah kuat.
{% endhint %}

Bagian yang paling sering perlu diulang biasanya:

* alur bisnis peminjaman di 11.1
* logika pengurangan stok di 11.2
* penguncian tombol saat stok habis di 11.3
* manipulasi dua tabel di 11.4

### Mini tugas mandiri

Sebelum masuk BAB 12, coba lakukan tantangan kecil ini:

1. siapkan satu buku dengan stok `1`
2. lakukan satu kali peminjaman
3. cek apakah stok berubah menjadi `0`
4. pastikan tombol pinjam tidak bisa dipakai lagi

Kalau tantangan ini bisa Anda kerjakan tanpa panik, berarti logika transaksi peminjaman Anda sudah cukup kuat.

### Lanjut ke bab berikutnya

Jika semuanya sudah siap, lanjut ke [12.1 Pengenalan API & Format JSON](/laravel/bab-12-laravel-api-dasar/12.1-pengenalan-api-and-format-json.md).


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://learn.devlabss.my.id/laravel/bab-11-logika-transaksi-peminjaman/11.5-checkpoint-uji-pemahamanmu-sebelum-lanjut.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
