VSVverkeerskunde/gvq-api

View on GitHub
src/Company/Models/TranslatedAliases.php

Summary

Maintainability
A
0 mins
Test Coverage
<?php declare(strict_types=1);

namespace VSV\GVQ_API\Company\Models;

use VSV\GVQ_API\Common\ValueObjects\Collection;
use VSV\GVQ_API\Common\ValueObjects\Language;

class TranslatedAliases implements Collection
{
    /**
     * @var TranslatedAlias[]
     */
    private $translatedAliases;

    /**
     * @param TranslatedAlias ...$translatedAliases
     */
    public function __construct(TranslatedAlias ...$translatedAliases)
    {
        $this->translatedAliases = $translatedAliases;
    }

    /**
     * @inheritdoc
     */
    public function getIterator(): \ArrayIterator
    {
        return new \ArrayIterator($this->translatedAliases);
    }

    /**
     * @inheritdoc
     */
    public function count(): int
    {
        return count($this->translatedAliases);
    }

    /**
     * @return TranslatedAlias[]
     */
    public function toArray(): array
    {
        return $this->translatedAliases;
    }

    /**
     * @param Language $language
     * @return TranslatedAlias
     */
    public function getByLanguage(Language $language): TranslatedAlias
    {
        $foundAlias = $this->translatedAliases[0];

        foreach ($this->translatedAliases as $translatedAlias) {
            if ($translatedAlias->getLanguage()->equals($language)) {
                $foundAlias = $translatedAlias;
            }
        }

        return $foundAlias;
    }
}