diff --git a/app/Models/Anggota.php b/app/Models/Anggota.php new file mode 100644 index 0000000..1261267 --- /dev/null +++ b/app/Models/Anggota.php @@ -0,0 +1,30 @@ + 'date', + ]; + + public function peminjamans() + { + return $this->hasMany(Peminjaman::class); + } +} diff --git a/app/Models/Buku.php b/app/Models/Buku.php new file mode 100644 index 0000000..a74d102 --- /dev/null +++ b/app/Models/Buku.php @@ -0,0 +1,35 @@ +belongsTo(Kategori::class); + } + + public function peminjamans() + { + return $this->hasMany(Peminjaman::class); + } +} diff --git a/app/Models/Kategori.php b/app/Models/Kategori.php new file mode 100644 index 0000000..645f0b0 --- /dev/null +++ b/app/Models/Kategori.php @@ -0,0 +1,21 @@ +hasMany(Buku::class); + } +} diff --git a/app/Models/Peminjaman.php b/app/Models/Peminjaman.php new file mode 100644 index 0000000..59929b8 --- /dev/null +++ b/app/Models/Peminjaman.php @@ -0,0 +1,38 @@ + 'date', + 'tanggal_kembali_rencana' => 'date', + 'tanggal_kembali_aktual' => 'date', + ]; + + public function anggota() + { + return $this->belongsTo(Anggota::class); + } + + public function buku() + { + return $this->belongsTo(Buku::class); + } +} diff --git a/database/migrations/2026_03_17_121230_create_anggotas_table.php b/database/migrations/2026_03_17_121230_create_anggotas_table.php new file mode 100644 index 0000000..2e56bbe --- /dev/null +++ b/database/migrations/2026_03_17_121230_create_anggotas_table.php @@ -0,0 +1,34 @@ +id(); + $table->string('nama'); + $table->string('email')->unique(); + $table->string('no_telepon', 15)->nullable(); + $table->text('alamat')->nullable(); + $table->date('tanggal_bergabung'); + $table->enum('status', ['aktif', 'nonaktif'])->default('aktif'); + $table->timestamps(); + $table->softDeletes(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('anggotas'); + } +}; diff --git a/database/migrations/2026_03_17_121328_create_kategoris_table.php b/database/migrations/2026_03_17_121328_create_kategoris_table.php new file mode 100644 index 0000000..15e3592 --- /dev/null +++ b/database/migrations/2026_03_17_121328_create_kategoris_table.php @@ -0,0 +1,23 @@ +id(); + $table->string('nama_kategori'); + $table->text('deskripsi')->nullable(); + $table->timestamps(); + }); + } + + public function down(): void + { + Schema::dropIfExists('kategoris'); + } +}; diff --git a/database/migrations/2026_03_17_121408_create_bukus_table.php b/database/migrations/2026_03_17_121408_create_bukus_table.php new file mode 100644 index 0000000..52404ac --- /dev/null +++ b/database/migrations/2026_03_17_121408_create_bukus_table.php @@ -0,0 +1,32 @@ +id(); + $table->foreignId('kategori_id')->constrained('kategoris')->onDelete('cascade'); + $table->string('judul'); + $table->string('pengarang'); + $table->string('penerbit'); + $table->year('tahun_terbit'); + $table->string('isbn', 20)->unique(); + $table->integer('stok')->default(0); + $table->integer('stok_tersedia')->default(0); + $table->text('sinopsis')->nullable(); + $table->string('cover')->nullable(); + $table->timestamps(); + $table->softDeletes(); + }); + } + + public function down(): void + { + Schema::dropIfExists('bukus'); + } +}; diff --git a/database/migrations/2026_03_17_121447_create_peminjamen_table.php b/database/migrations/2026_03_17_121447_create_peminjamen_table.php new file mode 100644 index 0000000..b97282b --- /dev/null +++ b/database/migrations/2026_03_17_121447_create_peminjamen_table.php @@ -0,0 +1,29 @@ +id(); + $table->foreignId('anggota_id')->constrained('anggotas')->onDelete('cascade'); + $table->foreignId('buku_id')->constrained('bukus')->onDelete('cascade'); + $table->date('tanggal_pinjam'); + $table->date('tanggal_kembali_rencana'); + $table->date('tanggal_kembali_aktual')->nullable(); + $table->enum('status', ['dipinjam', 'dikembalikan', 'terlambat'])->default('dipinjam'); + $table->integer('denda')->default(0); + $table->text('catatan')->nullable(); + $table->timestamps(); + }); + } + + public function down(): void + { + Schema::dropIfExists('peminjamans'); + } +};