UniformFlow/database/seeders/DatabaseSeeder.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']);
}
}
}
}
}