create([ 'nama' => 'Test', 'role' => 'owner', 'password' => bcrypt('123123'), ]); User::factory(2)->create(); Sales::factory(5)->create(); $kodeNampan = ['A', 'B']; foreach ($kodeNampan as $kode) { for ($i=0; $i < 4; $i++) { Nampan::factory()->create([ 'nama' => $kode . ($i + 1) // A1, A2, ... B4 ]); } } $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, 'is_sold' => false, ]); }); // 30% 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) <= 30) { $item->update([ 'id_nampan' => $nampans[$counter % $jumlahNampan], ]); $counter++; } } Transaksi::factory(40)->create()->each(function ($transaksi) { $jumlah_item = rand(1, 2); $items = Item::where('is_sold', false)->inRandomOrder()->limit($jumlah_item)->get(); if ($items->isEmpty()) return; $total_harga = $transaksi->total_harga; foreach ($items as $item) { $transaksi->itemTransaksi()->create([ 'id_item' => $item->id, 'harga_deal' => $item->produk->harga_jual, 'posisi_asal' => $item->id_nampan ? 'Nampan ' . $item->nampan->nama : 'Brankas', ]); $item->update([ 'id_nampan' => null, 'is_sold' => true, ]); $total_harga += $item->produk->harga_jual; } $transaksi->update(['total_harga' => $total_harga]); }); } }