Compare commits

...

4 Commits

Author SHA1 Message Date
Mekan1206
de1d7fbed8 wip 2026-02-08 21:34:32 +05:00
Mekan1206
d3156e228f seed sellers and warehouses 2026-02-08 21:26:06 +05:00
Mekan1206
299abeecbf needed 2026-02-08 20:32:40 +05:00
Mekan1206
201e112085 needed 2026-02-08 20:32:33 +05:00
6 changed files with 138 additions and 55 deletions

View File

@@ -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;
@@ -16,10 +18,11 @@ class DatabaseSeeder extends Seeder
public function run(): void
{
$this->call([
// BrandsSeeder::class,
// CustomersTableSeeder::class,
SellersTableSeeder::class,
// InventoriesTableSeeder::class,
// UsersTableSeeder::class,
// BrandsSeeder::class,
// CustomersTableSeeder::class,
SellersTableSeeder::class,
// InventoriesTableSeeder::class,
]);
}
}

View File

@@ -0,0 +1,79 @@
<?php
namespace Database\Seeders;
use App\Models\System\Roles\Role;
use App\Models\User;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
class UsersTableSeeder extends Seeder
{
/**
* Run the database seeds.
*/
public function run(): void
{
$this->seedStarterKit();
}
/**
* Starter kit data
*/
public function seedStarterKit(): void
{
$this->seedRoles();
collect([
[
'first_name' => 'Nurmuhammet',
'last_name' => 'Allanov',
'email' => 'nurmuhammet@mail.com',
'password' => bcrypt('payload10'),
],
])->each(function ($data) {
$user = User::create($data);
$user->assignRole('admin');
});
}
public function seedRoles(): void
{
$roles = [
[
'id' => 1,
'name' => 'admin',
'guard_name' => 'web',
],
[
'id' => 2,
'name' => 'manager',
'guard_name' => 'web',
],
[
'id' => 3,
'name' => 'user',
'guard_name' => 'web',
],
[
'id' => 4,
'name' => 'vendor',
'guard_name' => 'web',
],
[
'id' => 5,
'name' => 'viewer',
'guard_name' => 'web',
],
];
foreach ($roles as $role) {
Role::forceCreate($role);
}
DB::statement("
SELECT setval('roles_id_seq', (SELECT MAX(id) from roles))
");
}
}

View File

@@ -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();

View File

@@ -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)]
);

View File

@@ -1,39 +0,0 @@
<?php
namespace Database\Seeders\New;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\File;
use Illuminate\Support\Str;
class InventoriesTableSeeder extends Seeder
{
public function run()
{
// $datas = json_decode(File::get('database/seeders/new/data/warehouses.json'));
// $table = 'inventories';
// DB::table($table)->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}))
// ");
}
}

View File

@@ -2,26 +2,66 @@
namespace Database\Seeders\New;
use App\Models\Ecommerce\Product\Inventory\Inventory;
use App\Models\User;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\File;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Str;
class SellersTableSeeder extends Seeder
{
public function run()
{
$datas = json_decode(File::get('database/seeders/new/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, then we remove
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->assignRole('vendor');
DB::statement("
SELECT setval('{$table}_id_seq', (SELECT MAX(id) from {$table}))
")
$user->channels()->create([
'name' => $data->firstname.' '.$data->lastname,
'slug' => Str::slug($data->firstname.' '.$data->lastname).'_'.random_int(10000, 9999999),
]);
$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,
]);
}
}
}