From 9692e0140056eb448ae3938666cc003ab5bc3e75 Mon Sep 17 00:00:00 2001 From: Baghaztra Date: Tue, 14 Oct 2025 13:06:15 +0700 Subject: [PATCH] [Refactor] Seeder [+] Panggil produk berdasarkan id di kasir --- app/Http/Controllers/ItemController.php | 10 ++- database/seeders/DataSeeder.php | 62 ++++++++++++++ database/seeders/DatabaseSeeder.php | 102 ++---------------------- database/seeders/DummySeeder.php | 56 +++++++++++++ 4 files changed, 133 insertions(+), 97 deletions(-) create mode 100644 database/seeders/DataSeeder.php create mode 100644 database/seeders/DummySeeder.php diff --git a/app/Http/Controllers/ItemController.php b/app/Http/Controllers/ItemController.php index 11f51cc..843c177 100644 --- a/app/Http/Controllers/ItemController.php +++ b/app/Http/Controllers/ItemController.php @@ -44,9 +44,13 @@ class ItemController extends Controller */ public function show(string $kode_item) { - $item = Item::with(['produk.foto', 'nampan']) - ->where('kode_item', $kode_item) - ->first(); + $query = Item::with(['produk.foto', 'nampan']); + + if (is_numeric($kode_item)) { + $item = $query->where('id', (int)$kode_item)->first(); + } else { + $item = $query->where('kode_item', $kode_item)->first(); + } if (!$item) { return response()->json(['message' => 'Item tidak ditemukan'], 404); diff --git a/database/seeders/DataSeeder.php b/database/seeders/DataSeeder.php new file mode 100644 index 0000000..0085195 --- /dev/null +++ b/database/seeders/DataSeeder.php @@ -0,0 +1,62 @@ +create([ + 'nama' => 'A' . ($i + 1) + ]); + } + } + + // Kategori + $kategoriList = ['Cincin', 'Gelang Rantai', 'Gelang Bulat', 'Kalung', 'Liontin', 'Anting', 'Giwang']; + foreach ($kategoriList as $kategori) { + Kategori::factory()->create([ + 'nama' => $kategori + ]); + } + + // Produk + $produk1 = Produk::factory()->create([ + 'nama'=>'Gelang serut daun shimmer mp (mas putih)', + 'id_kategori'=>Kategori::find(2), + 'berat'=>1.4, + 'kadar'=>8, + 'harga_per_gram'=>900000, + 'harga_jual'=>1260000, + ]); + $produk1->foto()->create([ + 'id_produk'=>$produk1->id, + 'url'=>'https://i.imgur.com/eGYHzvw.jpeg' + ]); + + $produk2 = Produk::factory()->create([ + 'nama'=>'Gelang rantai 5 buah clover merah', + 'id_kategori'=>Kategori::find(2), + 'berat'=>3.6, + 'kadar'=>8, + 'harga_per_gram'=>850000, + 'harga_jual'=>3060000, + ]); + $produk2->foto()->create([ + 'id_produk'=>$produk2->id, + 'url'=>'https://i.imgur.com/UjQzYoE.jpeg' + ]); + } +} diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index 8d7258c..6f8fdfe 100644 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -20,109 +20,23 @@ class DatabaseSeeder extends Seeder public function run(): void { User::factory()->create([ - 'nama' => 'andre', + 'nama' => 'admin', 'role' => 'owner', 'password' => bcrypt('123123'), ]); User::factory()->create([ - 'nama' => 'luis', + 'nama' => 'kasir', 'role' => 'kasir', 'password' => bcrypt('123123'), ]); - User::factory(2)->create(); - Sales::factory(5)->create(); - - for ($i=0; $i < 30; $i++) { - if ($i != 12) { - Nampan::factory()->create([ - 'nama' => 'A' . ($i + 1) - ]); - } - } - - $kategoriList = ['Cincin', 'Gelang Rantai', 'Gelang Bulat', 'Kalung', 'Liontin', 'Anting', 'Giwang']; - foreach ($kategoriList as $kategori) { - Kategori::factory()->create([ - 'nama' => $kategori - ]); - } - - // Produk::factory(10)->create()->each(function ($produk) { - // // setiap produk punya 1-3 foto - // $jumlah_foto = rand(1, 3); - // $fotoData = []; - // for ($i = 0; $i < $jumlah_foto; $i++) { - // $fotoData[] = [ - // // 'url' => 'https://random-image-pepebigotes.vercel.app/api/random-image' - // 'url' => 'https://static.promediateknologi.id/crop/0x0:0x0/0x0/webp/photo/p2/255/2024/12/10/Screenshot_2024-12-10-11-50-18-88_1c337646f29875672b5a61192b9010f9-1-1282380831.jpg' - // ]; - // } - // $produk->foto()->createMany($fotoData); - - // $jumlah_item = rand(1, 20); - // Item::factory($jumlah_item)->create([ - // 'id_produk' => $produk->id, - // ]); - // }); - - $produk1 = Produk::factory()->create([ - 'nama'=>'Gelang serut daun shimmer mp (mas putih)', - 'id_kategori'=>Kategori::find(2), - 'berat'=>1.4, - 'kadar'=>8, - 'harga_per_gram'=>900000, - 'harga_jual'=>1260000, - ]); - $produk1->foto()->create([ - 'id_produk'=>$produk1->id, - 'url'=>'https://i.imgur.com/eGYHzvw.jpeg' - ]); - - $produk2 = Produk::factory()->create([ - 'nama'=>'Gelang rantai 5 buah clover merah', - 'id_kategori'=>Kategori::find(2), - 'berat'=>3.6, - 'kadar'=>8, - 'harga_per_gram'=>850000, - 'harga_jual'=>3060000, - ]); - $produk2->foto()->create([ - 'id_produk'=>$produk2->id, - 'url'=>'https://i.imgur.com/UjQzYoE.jpeg' + Sales::factory()->create([ + 'nama' => 'Umum', + 'no_hp' => '-', + 'alamat' => '-', ]); - Item::factory(500)->create(); - - // 75% peluang item masuk nampan, sisanya di brankas - $nampans = Nampan::all()->pluck('id')->toArray(); - $jumlahNampan = count($nampans); - $counter = 0; - - foreach (Item::all() as $item) { - if (rand(1, 100) <= 75) { - $item->update([ - 'id_nampan' => $nampans[$counter % $jumlahNampan], - ]); - $counter++; - } - } - - Transaksi::factory(250)->create()->each(function ($transaksi) { - $jumlah_item = rand(1, 2); - $items = Item::with('produk')->inRandomOrder()->limit($jumlah_item)->get(); - if ($items->isEmpty()) return; - $total_harga = $transaksi->total_harga; - foreach ($items as $item) { - $transaksi->itemTransaksi()->create([ - 'id_produk' => $item->produk->id, - 'harga_deal' => $item->produk->harga_jual, - 'posisi_asal' => $item->id_nampan ? $item->nampan->nama : 'Brankas', - ]); - $item->delete(); - $total_harga += $item->produk->harga_jual; - } - $transaksi->update(['total_harga' => $total_harga]); - }); + $this->call(DataSeeder::class); + $this->call(DummySeeder::class); } } diff --git a/database/seeders/DummySeeder.php b/database/seeders/DummySeeder.php new file mode 100644 index 0000000..d2c099a --- /dev/null +++ b/database/seeders/DummySeeder.php @@ -0,0 +1,56 @@ +create(); + Sales::factory(5)->create(); + + Item::factory(500)->create(); + + // 75% peluang item masuk nampan, sisanya di brankas + $nampans = Nampan::all()->pluck('id')->toArray(); + $jumlahNampan = count($nampans); + $counter = 0; + + foreach (Item::all() as $item) { + if (rand(1, 100) <= 75) { + $item->update([ + 'id_nampan' => $nampans[$counter % $jumlahNampan], + ]); + $counter++; + } + } + + Transaksi::factory(250)->create()->each(function ($transaksi) { + $jumlah_item = rand(1, 2); + $items = Item::with('produk')->inRandomOrder()->limit($jumlah_item)->get(); + if ($items->isEmpty()) return; + $total_harga = $transaksi->total_harga; + foreach ($items as $item) { + $transaksi->itemTransaksi()->create([ + 'id_produk' => $item->produk->id, + 'harga_deal' => $item->produk->harga_jual, + 'posisi_asal' => $item->id_nampan ? $item->nampan->nama : 'Brankas', + ]); + $item->delete(); + $total_harga += $item->produk->harga_jual; + } + $transaksi->update(['total_harga' => $total_harga]); + }); + } +}