LMIV-SNACKAUTOMAT/database/seeders/UpdateVendingMachineNumbers.php

61 lines
2.0 KiB
PHP

<?php
namespace Database\Seeders;
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder;
use App\Models\VendingMachine;
class UpdateVendingMachineNumbers extends Seeder
{
/**
* Run the database seeds.
*/
public function run(): void
{
$machines = VendingMachine::all();
foreach ($machines as $machine) {
if (empty($machine->machine_number)) {
// Generiere machine_number basierend auf dem Namen oder einem Pattern
$machineNumber = $this->generateMachineNumber($machine);
$machine->machine_number = $machineNumber;
$machine->save();
echo "Updated {$machine->name} with machine_number: {$machineNumber}\n";
}
}
}
private function generateMachineNumber(VendingMachine $machine): string
{
// Spezielle Mappings für bessere machine_numbers
$name = strtolower($machine->name);
if (str_contains($name, 'bürogebäude') || str_contains($name, 'burogebaude')) {
$baseNumber = 'automat-burogebaude-a';
} elseif (str_contains($name, 'snack')) {
$baseNumber = 'snackost';
} else {
// Generiere aus dem Namen
$baseNumber = str_replace([' ', 'ä', 'ö', 'ü', 'ß'], ['-', 'ae', 'oe', 'ue', 'ss'], $name);
$baseNumber = preg_replace('/[^a-z0-9-]/', '', $baseNumber);
$baseNumber = trim($baseNumber, '-');
}
// Stelle sicher, dass machine_number eindeutig pro Mandant ist
$counter = 1;
$machineNumber = $baseNumber;
while (VendingMachine::where('tenant_id', $machine->tenant_id)
->where('machine_number', $machineNumber)
->where('id', '!=', $machine->id)
->exists()) {
$machineNumber = $baseNumber . '-' . $counter;
$counter++;
}
return $machineNumber;
}
}