Files
econom-calculator/app/Support/MedicalReport/DepartmentSlugger.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

63 lines
1.4 KiB
PHP

<?php
namespace App\Support\MedicalReport;
use Illuminate\Support\Str;
class DepartmentSlugger
{
/**
* @var list<string>
*/
private array $ignoredFragments = [
'всего',
'итого',
'строка',
'январ',
'феврал',
'март',
'апрел',
'май',
'июн',
'июл',
'август',
'сентябр',
'октябр',
'ноябр',
'декабр',
'квартал',
'полугод',
'год',
'оплата',
'расход',
'выписано',
'койко',
'медикамент',
'перевяз',
'без бюджета',
'сумма',
'наименование',
];
public function slug(?string $departmentName): ?string
{
$departmentName = trim((string) $departmentName);
if ($departmentName === '' || preg_match('/^\d+\.?$/', $departmentName) === 1) {
return null;
}
$normalized = mb_strtolower($departmentName);
foreach ($this->ignoredFragments as $fragment) {
if (str_contains($normalized, $fragment)) {
return null;
}
}
$slug = Str::slug(Str::ascii($departmentName));
return $slug !== '' ? $slug : null;
}
}