Files
GSB-Construction/Modules/Equipments/database/seeders/EquipmentsDatabaseSeeder.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);
}
}
}
}