61 lines
2.0 KiB
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;
|
|
}
|
|
}
|