105 lines
3.8 KiB
PHP
105 lines
3.8 KiB
PHP
<?php
|
|
|
|
namespace Modules\Equipments\Database\Seeders;
|
|
|
|
use Illuminate\Database\Seeder;
|
|
use Modules\Equipments\Models\Equipment;
|
|
use Modules\Equipments\Models\EquipmentSpecification;
|
|
use Illuminate\Support\Str;
|
|
|
|
class EquipmentsDatabaseSeeder extends Seeder
|
|
{
|
|
public function run(): void
|
|
{
|
|
// 1. Seed Specifications
|
|
$specsData = [
|
|
['name' => 'Heavy Machinery', 'description' => 'Large earthmovers, cranes, and transport trucks.'],
|
|
['name' => 'Light Machinery', 'description' => 'Mixers, compactors, generators, and pumps.'],
|
|
['name' => 'Power Tools', 'description' => 'Drills, saws, jackhammers, and grinders.'],
|
|
['name' => 'Hand Tools', 'description' => 'Shovels, hammers, wrenches, and layout tools.'],
|
|
['name' => 'Diesel Powered', 'description' => 'Equipment running on diesel engines.'],
|
|
['name' => 'Electric Powered', 'description' => 'Equipment running on AC mains or battery packs.'],
|
|
];
|
|
|
|
$specs = [];
|
|
foreach ($specsData as $sData) {
|
|
$specs[$sData['name']] = EquipmentSpecification::firstOrCreate(
|
|
['name' => $sData['name']],
|
|
[
|
|
'ulid' => (string) Str::ulid(),
|
|
'description' => $sData['description'],
|
|
]
|
|
);
|
|
}
|
|
|
|
// 2. Seed Equipments
|
|
$equipmentsData = [
|
|
[
|
|
'name' => 'Caterpillar 320 Excavator',
|
|
'owner_name' => 'Company Owned',
|
|
'hourly_rate' => 1500.00,
|
|
'status' => 'active',
|
|
'specs' => ['Heavy Machinery', 'Diesel Powered'],
|
|
],
|
|
[
|
|
'name' => '10-Wheeler Dump Truck',
|
|
'owner_name' => 'Company Owned',
|
|
'hourly_rate' => 1200.00,
|
|
'status' => 'active',
|
|
'specs' => ['Heavy Machinery', 'Diesel Powered'],
|
|
],
|
|
[
|
|
'name' => 'Generac 50kW Generator',
|
|
'owner_name' => 'ABC Rentals',
|
|
'hourly_rate' => 800.00,
|
|
'status' => 'active',
|
|
'specs' => ['Light Machinery', 'Diesel Powered'],
|
|
],
|
|
[
|
|
'name' => 'Concrete Mixer (One-bagger)',
|
|
'owner_name' => 'Company Owned',
|
|
'hourly_rate' => 350.00,
|
|
'status' => 'active',
|
|
'specs' => ['Light Machinery', 'Electric Powered'],
|
|
],
|
|
[
|
|
'name' => 'Hilti TE-3000 Jackhammer',
|
|
'owner_name' => 'Company Owned',
|
|
'hourly_rate' => 150.00,
|
|
'status' => 'active',
|
|
'specs' => ['Power Tools', 'Electric Powered'],
|
|
],
|
|
[
|
|
'name' => 'Stihl Concrete Saw',
|
|
'owner_name' => 'XYZ Subcontractor',
|
|
'hourly_rate' => 200.00,
|
|
'status' => 'active',
|
|
'specs' => ['Power Tools', 'Diesel Powered'],
|
|
],
|
|
];
|
|
|
|
foreach ($equipmentsData as $eqData) {
|
|
$equipment = Equipment::firstOrCreate(
|
|
['name' => $eqData['name']],
|
|
[
|
|
'ulid' => (string) Str::ulid(),
|
|
'owner_name' => $eqData['owner_name'],
|
|
'hourly_rate' => $eqData['hourly_rate'],
|
|
'status' => $eqData['status'],
|
|
]
|
|
);
|
|
|
|
$specIds = [];
|
|
foreach ($eqData['specs'] as $specName) {
|
|
if (isset($specs[$specName])) {
|
|
$specIds[] = $specs[$specName]->id;
|
|
}
|
|
}
|
|
|
|
if (!empty($specIds)) {
|
|
$equipment->specifications()->sync($specIds);
|
|
}
|
|
}
|
|
}
|
|
}
|