34 lines
831 B
PHP
34 lines
831 B
PHP
<?php
|
|
|
|
namespace App\Service\Upload;
|
|
|
|
use App\Entity\Teamer;
|
|
use App\Entity\Upload;
|
|
use Symfony\Component\String\Slugger\AsciiSlugger;
|
|
|
|
class DownloadNamer
|
|
{
|
|
public function nameForTeamer(Upload $upload, Teamer $teamer): string
|
|
{
|
|
$pattern = match ($upload->getType()) {
|
|
Upload::TYPE_INVOICE => 'hn-%d-%s-%s.pdf',
|
|
Upload::TYPE_CONTRACT => 'hv-%d-%s-%s.pdf',
|
|
default => null,
|
|
};
|
|
|
|
if (null === $pattern) {
|
|
return $upload->getOriginalFilename();
|
|
}
|
|
|
|
$slugger = new AsciiSlugger('de');
|
|
$teamerName = strtolower($slugger->slug($teamer->getFullName(true), '_'));
|
|
|
|
return sprintf(
|
|
$pattern,
|
|
$upload->getId(),
|
|
$teamerName,
|
|
$upload->getCreatedAt()->format('Ymd')
|
|
);
|
|
}
|
|
}
|