HEX
Server: Microsoft-IIS/8.5
System: Windows NT YDAWBH120 6.3 build 9600 (Windows Server 2012 R2 Standard Edition) AMD64
User: tentjecom_web (0)
PHP: 7.4.14
Disabled: NONE
Upload Files
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();
    }
}