36 lines
1.2 KiB
PHP
36 lines
1.2 KiB
PHP
<?php declare(strict_types=1);
|
|
|
|
namespace App\Repositories;
|
|
|
|
use App\Models\ProjectTranslationService;
|
|
use App\Services\Search\CreateSearchInstanceCommand;
|
|
use App\Services\Search\Search;
|
|
use Illuminate\Database\Eloquent\Builder;
|
|
|
|
final readonly class ProjectTranslationServiceRepository
|
|
{
|
|
public function __construct(
|
|
private CreateSearchInstanceCommand $createSearchInstanceCommand,
|
|
) { }
|
|
|
|
public function getLanguagesBySourceLanguage(int $sourceLanguage, ?array $excludeLanguages = null): Search
|
|
{
|
|
$query = ProjectTranslationService::query()
|
|
->select('language_id', 'code')
|
|
->where('source_language_id', $sourceLanguage)
|
|
->when($excludeLanguages, function (Builder $query) use ($excludeLanguages) {
|
|
$query->whereNotIn('language_id', $excludeLanguages);
|
|
});
|
|
|
|
return $this->createSearchInstanceCommand->execute($query);
|
|
}
|
|
|
|
public function getLanguageCodeByLanguageId(int $languageId): ?string
|
|
{
|
|
return ProjectTranslationService::query()
|
|
->select('code')
|
|
->where('language_id', $languageId)
|
|
->first()?->code ?? null;
|
|
}
|
|
}
|