File: D:/HostingSpaces/SBogers10/ste.komma.pro/app/SteLanguages/SteLanguageService.php
<?php
namespace App\SteLanguages;
use App\Base\Service;
use App\C4\C4;
use App\SteLanguages\Models\SteLanguage;
use App\Types\TrainingFilter;
use App\Types\TrainingFilterOption;
use Illuminate\Support\Collection;
final class SteLanguageService extends Service
{
/**
* Base query for get ste language from DB
*
* @return \Illuminate\Database\Eloquent\Relations\BelongsToMany
*/
private function baseSteLanguageQuery()
{
return SteLanguage::where('active', 1)
->whereHas('translation')
->with('translation')
->orderBy('lft', 'asc');
}
/**
* Get all ste languages
*
* @return \Illuminate\Database\Eloquent\Collection
*/
public function getSteLanguages()
{
return $this->baseSteLanguageQuery()->get();
}
/**
* Get STE Language by iso_2
*
* @param string $iso2
* @return SteLanguage|null
*/
public function getSteLanguageByIso2(string $iso2): ?SteLanguage
{
return SteLanguage::where('active', 1)
->where('iso_2', $iso2)
->first();
}
/**
* Get STE Language by the C4 code
*
* @param string $iso2
* @return SteLanguage|null
*/
public function getSteLanguageByC4Code(string $c4Code): ?SteLanguage
{
if(! isset(C4::LANGUAGES[$c4Code])) return null;
$iso2 = C4::LANGUAGES[$c4Code];
return SteLanguage::where('active', 1)
->where('iso_2', $iso2)
->with('translations')
->first();
}
/**
* Get an amount of ste languages
*
* @param int $amount
* @return \Illuminate\Database\Eloquent\Collection|Collection
*/
public function getAmountOfSteLanguages(int $amount = 5)
{
return $this->baseSteLanguageQuery()
->take($amount)
->get();
}
}