diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index 5279cac..f92d9ad 100644 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -2,6 +2,8 @@ namespace Database\Seeders; +use Database\Seeders\New\BrandsSeeder; +use Database\Seeders\New\CustomersTableSeeder; use Database\Seeders\New\SellersTableSeeder; use Illuminate\Database\Console\Seeds\WithoutModelEvents; use Illuminate\Database\Seeder; @@ -17,9 +19,9 @@ class DatabaseSeeder extends Seeder { $this->call([ // UsersTableSeeder::class, - BrandsSeeder::class, + // BrandsSeeder::class, // CustomersTableSeeder::class, - // SellersTableSeeder::class, + SellersTableSeeder::class, // InventoriesTableSeeder::class, ]); } diff --git a/database/seeders/new/BrandsSeeder.php b/database/seeders/new/BrandsSeeder.php index 0386acc..3534f07 100644 --- a/database/seeders/new/BrandsSeeder.php +++ b/database/seeders/new/BrandsSeeder.php @@ -11,7 +11,7 @@ class BrandsSeeder extends Seeder { public function run() { - $datas = json_decode(File::get('database/seeders/new/data/brands.json')); + $datas = json_decode(File::get('database/data/brands.json')); $table = 'brands'; DB::table($table)->truncate(); diff --git a/database/seeders/new/CustomersTableSeeder.php b/database/seeders/new/CustomersTableSeeder.php index 60d4e8d..4d34112 100644 --- a/database/seeders/new/CustomersTableSeeder.php +++ b/database/seeders/new/CustomersTableSeeder.php @@ -16,7 +16,7 @@ class CustomersTableSeeder extends Seeder DB::table($table)->truncate(); $items = Items::fromFile( - database_path('seeders/new/data/customers.json'), + database_path('data/customers.json'), ['decoder' => new ExtJsonDecoder(true)] ); diff --git a/database/seeders/new/InventoriesTableSeeder.php b/database/seeders/new/InventoriesTableSeeder.php deleted file mode 100644 index 36cb72a..0000000 --- a/database/seeders/new/InventoriesTableSeeder.php +++ /dev/null @@ -1,38 +0,0 @@ -truncate(); - - // foreach ($datas as $data) { - // DB::table($table)->insertOrIgnore([ - - // "id": 2, - // "code": "maruf_5469008", - // "name": "Maruf", - // "address": "5858 Billie Plains Apt. 231\nDaxmouth, NH 94147-9694", - // "phone": "99362440390", - // "is_blocked": true, - // "seller_id": 2, - // "created_at": "2025-01-10 07:59:05", - // "updated_at": "2025-01-10 07:59:05", - // "is_main": false - // ]); - // } - - // DB::statement(" - // SELECT setval('{$table}_id_seq', (SELECT MAX(id) from {$table})) - // "); - } -} diff --git a/database/seeders/new/SellersTableSeeder.php b/database/seeders/new/SellersTableSeeder.php index ce639d5..085ae47 100644 --- a/database/seeders/new/SellersTableSeeder.php +++ b/database/seeders/new/SellersTableSeeder.php @@ -2,6 +2,7 @@ namespace Database\Seeders\New; +use App\Models\Ecommerce\Product\Inventory\Inventory; use App\Models\User; use Illuminate\Database\Seeder; use Illuminate\Support\Facades\DB; @@ -13,33 +14,54 @@ class SellersTableSeeder extends Seeder { public function run() { - $datas = json_decode(File::get('database/data/sellers.json')); - $table = 'users'; + DB::transaction(function () { + $datas = json_decode(File::get('database/data/sellers.json')); + $warehouses = json_decode(File::get('database/data/warehouses.json')); + $table = 'users'; - // First we create user by this data, and attach `vendor` role. Then we create channel for this user. + foreach ($datas as $data) { + $user = User::create([ + 'first_name' => $data->firstname, + 'last_name' => $data->lastname, + 'email' => $data->email, + 'phone_number' => Str::after($data->phone, '993'), + 'password' => Hash::make('12345678'), + ]); - foreach ($datas as $data) { - $user = User::create([ - 'first_name' => $data->firstname, - 'last_name' => $data->lastname, - 'email' => $data->email, - 'phone_number' => str_replace('+993', '', $data->phone), - 'password' => Hash::make('12345678'), - ]); + $user->assignRole('vendor'); - $user->assignRole('vendor'); + $user->channels()->create([ + 'name' => $data->firstname.' '.$data->lastname, + 'slug' => Str::slug($data->firstname.' '.$data->lastname) . '_'. random_int(10000, 9999999), + ]); - $user->channels()->create([ - 'name' => $data->first_name.' '.$data->last_name, - 'slug' => Str::slug($data->first_name.' '.$data->last_name), + $this->createWarehouses(warehouses: $warehouses, user: $user, old_user_id: $data->id); + } + + DB::statement(" + SELECT setval('{$table}_id_seq', (SELECT MAX(id) from {$table})) + "); + DB::statement(" + SELECT setval('channels_id_seq', (SELECT MAX(id) from channels)) + "); + }); + } + + private function createWarehouses(array $warehouses, User $user, int $old_user_id) + { + $warehouses = array_filter($warehouses, function ($warehouse) use ($old_user_id) { + return $warehouse->seller_id == $old_user_id; + }); + + foreach ($warehouses as $warehouse) { + Inventory::create([ + 'id' => $warehouse->id, + 'code' => $warehouse->code, + 'name' => $warehouse->name, + 'region' => 'ag', + 'phone_number' => Str::after($warehouse->phone, '993'), + 'channel_id' => $user->channels()->first()->id, ]); } - - DB::statement(" - SELECT setval('{$table}_id_seq', (SELECT MAX(id) from {$table})) - "); - DB::statement(" - SELECT setval('channels_id_seq', (SELECT MAX(id) from channels)) - "); } }