'Masonry', 'description' => 'Bricklaying, plastering, tile setting, concrete block works.'], ['name' => 'Carpentry', 'description' => 'Formworks, framing, scaffolding, wood structures.'], ['name' => 'Plumbing', 'description' => 'Pipe fitting, drainage, water supply system installation.'], ['name' => 'Electrical Wiring', 'description' => 'Conduits, wiring, outlet box setup, electrical fixtures.'], ['name' => 'Welding', 'description' => 'Arc welding, structural steel welding, fabrication.'], ['name' => 'Steel Bending', 'description' => 'Rebar cutting, bending, rebar tying for structural concrete.'], ['name' => 'Concrete Mixing & Pouring', 'description' => 'Manual or machine mixing, transit concrete pouring.'], ['name' => 'General Labor', 'description' => 'Site cleanup, material carrying, basic excavation assistance.'], ]; $skills = []; foreach ($skillsData as $sData) { $skills[$sData['name']] = Skill::firstOrCreate( ['name' => $sData['name']], [ 'ulid' => (string) Str::ulid(), 'description' => $sData['description'], ] ); } // 2. Seed Labors $laborsData = [ [ 'name' => 'Construction Foreman', 'category' => 'skilled', 'hourly_rate' => 150.00, 'status' => 'active', 'skills' => ['Masonry', 'Carpentry', 'Concrete Mixing & Pouring'], ], [ 'name' => 'Lead Welder', 'category' => 'skilled', 'hourly_rate' => 110.00, 'status' => 'active', 'skills' => ['Welding'], ], [ 'name' => 'Senior Electrician', 'category' => 'skilled', 'hourly_rate' => 105.00, 'status' => 'active', 'skills' => ['Electrical Wiring'], ], [ 'name' => 'Journeyman Carpenter', 'category' => 'skilled', 'hourly_rate' => 95.00, 'status' => 'active', 'skills' => ['Carpentry'], ], [ 'name' => 'Skilled Mason', 'category' => 'skilled', 'hourly_rate' => 90.00, 'status' => 'active', 'skills' => ['Masonry', 'Concrete Mixing & Pouring'], ], [ 'name' => 'Rebar Steelman', 'category' => 'skilled', 'hourly_rate' => 90.00, 'status' => 'active', 'skills' => ['Steel Bending'], ], [ 'name' => 'General Helper', 'category' => 'unskilled', 'hourly_rate' => 65.00, 'status' => 'active', 'skills' => ['General Labor'], ], [ 'name' => 'Apprentice Helper', 'category' => 'unskilled', 'hourly_rate' => 60.00, 'status' => 'active', 'skills' => ['General Labor'], ], ]; foreach ($laborsData as $lData) { $labor = Labor::firstOrCreate( ['name' => $lData['name']], [ 'ulid' => (string) Str::ulid(), 'category' => $lData['category'], 'hourly_rate' => $lData['hourly_rate'], 'status' => $lData['status'], ] ); $skillIds = []; foreach ($lData['skills'] as $sName) { if (isset($skills[$sName])) { $skillIds[] = $skills[$sName]->id; } } if (!empty($skillIds)) { $labor->skills()->sync($skillIds); } } } }