Files
econom-calculator/database/seeders/HospitalUnitSeeder.php
brusnitsyn 3edc8e667e
Some checks failed
tests / ci (8.5) (push) Has been cancelled
linter / quality (push) Has been cancelled
tests / ci (8.3) (push) Has been cancelled
tests / ci (8.4) (push) Has been cancelled
first commit
2026-04-03 17:20:05 +09:00

44 lines
1.7 KiB
PHP

<?php
namespace Database\Seeders;
use App\Models\HospitalUnit;
use App\Models\Profile;
use Illuminate\Database\Seeder;
use Illuminate\Support\Str;
class HospitalUnitSeeder extends Seeder
{
/**
* Run the database seeds.
*/
public function run(): void
{
$reportingUnits = collect(config('medical-report.reporting_units', []))
->filter(fn (mixed $value): bool => is_string($value) && trim($value) !== '')
->values();
$reportInputTypes = config('medical-report.reporting_unit_input_types', []);
collect(config('medical-report.finance_profiles', []))
->each(function (array $profile) use ($reportingUnits, $reportInputTypes): void {
$profileModel = Profile::query()->where('name', $profile['name'])->firstOrFail();
collect($profile['units'] ?? [])
->filter(fn (mixed $value): bool => is_string($value) && trim($value) !== '')
->values()
->each(function (string $unitName) use ($profileModel, $reportingUnits, $reportInputTypes): void {
HospitalUnit::query()->updateOrCreate(
['slug' => Str::slug(Str::ascii($unitName))],
[
'profile_id' => $profileModel->id,
'name' => $unitName,
'is_reporting_unit' => $reportingUnits->contains($unitName),
'report_input_type' => $reportInputTypes[$unitName] ?? null,
'is_active' => true,
],
);
});
});
}
}