Files
GSB-Construction/Modules/Labors/database/seeders/LaborsDatabaseSeeder.php

121 lines
4.3 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::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);
}
}
}
}