47 lines
2.2 KiB
PHP
47 lines
2.2 KiB
PHP
<?php
|
|
|
|
namespace Database\Seeders;
|
|
|
|
use App\Models\Employee;
|
|
use App\Models\StockMovement;
|
|
use App\Models\UniformItem;
|
|
use App\Models\User;
|
|
// use Illuminate\Database\Console\Seeds\WithoutModelEvents;
|
|
use Illuminate\Database\Seeder;
|
|
|
|
class DatabaseSeeder extends Seeder
|
|
{
|
|
/**
|
|
* Seed the application's database.
|
|
*/
|
|
public function run(): void
|
|
{
|
|
User::updateOrCreate(
|
|
['email' => env('ADMIN_EMAIL', 'admin@uniformflow.local')],
|
|
['name' => 'System Administrator', 'password' => env('ADMIN_PASSWORD', 'Admin@12345'), 'is_admin' => true, 'email_verified_at' => now()]
|
|
);
|
|
|
|
$employees = collect([
|
|
['employee_no' => 'EMP-001', 'name' => 'Nadeesha Perera', 'department' => 'Operations', 'designation' => 'Operations Executive', 'joined_at' => '2024-02-12'],
|
|
['employee_no' => 'EMP-002', 'name' => 'Kasun Silva', 'department' => 'Warehouse', 'designation' => 'Store Assistant', 'joined_at' => '2023-08-21'],
|
|
['employee_no' => 'EMP-003', 'name' => 'Tharushi Fernando', 'department' => 'Front Office', 'designation' => 'Receptionist', 'joined_at' => '2025-01-15'],
|
|
])->map(fn ($data) => Employee::create($data));
|
|
|
|
$catalogue = [
|
|
['code' => 'SHIRT-NVY', 'name' => 'Navy Work Shirt', 'sizes' => ['S' => 8, 'M' => 14, 'L' => 9, 'XL' => 3]],
|
|
['code' => 'TROUSER-GRY', 'name' => 'Grey Work Trouser', 'sizes' => ['28' => 4, '30' => 9, '32' => 12, '34' => 6, '36' => 2]],
|
|
['code' => 'POLO-WHT', 'name' => 'White Polo Shirt', 'sizes' => ['S' => 7, 'M' => 10, 'L' => 5, 'XL' => 0]],
|
|
];
|
|
|
|
foreach ($catalogue as $data) {
|
|
$item = UniformItem::create(['code' => $data['code'], 'name' => $data['name']]);
|
|
foreach ($data['sizes'] as $size => $quantity) {
|
|
$variant = $item->variants()->create(['size' => $size, 'quantity' => $quantity, 'reorder_level' => 4]);
|
|
if ($quantity) {
|
|
StockMovement::create(['stock_variant_id' => $variant->id, 'type' => 'opening_stock', 'quantity_change' => $quantity, 'notes' => 'Opening stock balance']);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|