vendor/shopware/platform/src/Core/System/Country/CountryCollection.php line 16

Open in your IDE?
  1. <?php declare(strict_types=1);
  2. namespace Shopware\Core\System\Country;
  3. use Shopware\Core\Framework\DataAbstractionLayer\EntityCollection;
  4. /**
  5.  * @method void               add(CountryEntity $entity)
  6.  * @method void               set(string $key, CountryEntity $entity)
  7.  * @method CountryEntity[]    getIterator()
  8.  * @method CountryEntity[]    getElements()
  9.  * @method CountryEntity|null get(string $key)
  10.  * @method CountryEntity|null first()
  11.  * @method CountryEntity|null last()
  12.  */
  13. class CountryCollection extends EntityCollection
  14. {
  15.     public function sortCountryAndStates(): void
  16.     {
  17.         $this->sortByPositionAndName();
  18.         foreach ($this->getIterator() as $country) {
  19.             if ($country->getStates()) {
  20.                 $country->getStates()->sortByPositionAndName();
  21.             }
  22.         }
  23.     }
  24.     public function sortByPositionAndName(): void
  25.     {
  26.         uasort($this->elements, function (CountryEntity $aCountryEntity $b) {
  27.             if ($a->getPosition() !== $b->getPosition()) {
  28.                 return $a->getPosition() <=> $b->getPosition();
  29.             }
  30.             if ($a->getTranslation('name') !== $b->getTranslation('name')) {
  31.                 return strnatcasecmp($a->getTranslation('name'), $b->getTranslation('name'));
  32.             }
  33.             return 0;
  34.         });
  35.     }
  36.     public function getApiAlias(): string
  37.     {
  38.         return 'country_collection';
  39.     }
  40.     protected function getExpectedClass(): string
  41.     {
  42.         return CountryEntity::class;
  43.     }
  44. }