<?php

namespace App\Packages\Core\Models;

use App\Packages\Core\Repository\LocalizationRepository;
use App\Packages\Core\Traits\RepositoryTrait;
use Illuminate\Database\Eloquent\Model;

/**
 * Class Localization
 * @package App\Packages\Core\Models
 *
 * @property int $id
 * @property string $title
 * @property string $code
 * @property string $script
 * @property string $native
 * @property string $regional
 *
 * @property $created_at
 * @property $updated_at
 *
 * @method static LocalizationRepository repository()
 */
class Localization extends Model
{
	use RepositoryTrait;

	/** @var string */
	public static $repositoryClass = LocalizationRepository::class;

	/** @var string */
	protected $table = 'table_localization';

	/** @var array */
	protected $fillable = [
		'code',
		'title',
		'script',
		'native',
		'regional',
	];

	/**
	 * @return array
	 */
	public static function getSimpleList()
	{
		$localizations = (new static())->repository()->all();

		return $localizations->mapWithKeys(function ($element) {
			/** @var static $element */
			return [$element->code => $element->native];
		});
	}

	/**
	 * @param VacancyLocalization[] $vacLocs
	 *
	 * @return array
	 */
	public static function getMissingSimpleList($vacLocs)
	{
		$employeeCount = (new static())->repository()->needToAdd($vacLocs);

		return $employeeCount->mapWithKeys(function ($element) {
			/** @var static $element */
			return [$element->code => $element->native];
		});
	}
}
