117 lines
4.2 KiB
PHP
117 lines
4.2 KiB
PHP
<?php
|
|
|
|
namespace Modules\Labors\Database\Seeders;
|
|
|
|
use Illuminate\Database\Seeder;
|
|
use Modules\Labors\Models\Labor;
|
|
use Modules\Labors\Models\Skill;
|
|
use Illuminate\Support\Str;
|
|
|
|
class LaborsDatabaseSeeder extends Seeder
|
|
{
|
|
public function run(): void
|
|
{
|
|
// 1. Seed Skills
|
|
$skillsData = [
|
|
['name' => '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::create([
|
|
'ulid' => (string) Str::ulid(),
|
|
'name' => $sData['name'],
|
|
'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::create([
|
|
'ulid' => (string) Str::ulid(),
|
|
'name' => $lData['name'],
|
|
'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);
|
|
}
|
|
}
|
|
}
|
|
}
|