glhd/laravel-addressing

View on GitHub
src/Collection/SubdivisionCollection.php

Summary

Maintainability
A
0 mins
Test Coverage
F
47%
<?php

namespace Galahad\LaravelAddressing\Collection;

use Galahad\LaravelAddressing\Entity\Country;
use Galahad\LaravelAddressing\Entity\Subdivision;
use Illuminate\Support\Collection;

class SubdivisionCollection extends Collection
{
    /**
     * @var \Galahad\LaravelAddressing\Entity\Country
     */
    protected $country;

    /**
     * @var \Galahad\LaravelAddressing\Entity\Subdivision
     */
    protected $parent;

    public function getCountry(): Country
    {
        return $this->country;
    }

    public function setCountry(Country $country): self
    {
        $this->country = $country;

        return $this;
    }

    public function getParent(): ?Subdivision
    {
        return $this->parent;
    }

    public function setParent(Subdivision $parent): self
    {
        $this->parent = $parent;

        return $this;
    }

    /**
     * @return \Galahad\LaravelAddressing\Entity\Subdivision[]
     */
    public function all(): array
    {
        return parent::all();
    }

    public function get($key, $default = null): ?Subdivision
    {
        return parent::get($key, $default);
    }

    public function keys(): Collection
    {
        return new Collection(array_keys($this->items));
    }

    public function last(callable $callback = null, $default = null): ?Subdivision
    {
        return parent::last($callback, $default);
    }
    
    /**
     * @param int $count
     * @return \Galahad\LaravelAddressing\Entity\Subdivision|\Galahad\LaravelAddressing\Entity\Subdivision[]|\Galahad\LaravelAddressing\Collection\SubdivisionCollection|null
     */
    public function pop($count = 1)
    {
        return parent::pop($count);
    }

    /**
     * @param \Galahad\LaravelAddressing\Entity\Subdivision $value
     * @param null $key
     * @return \Galahad\LaravelAddressing\Collection\SubdivisionCollection
     */
    public function prepend($value, $key = null): self
    {
        return parent::prepend($value, $key);
    }

    public function pull($key, $default = null): ?Subdivision
    {
        return parent::pull($key, $default);
    }

    /**
     * @param mixed $key
     * @param Subdivision $value
     * @return \Galahad\LaravelAddressing\Collection\SubdivisionCollection
     */
    public function put($key, $value): self
    {
        return parent::put($key, $value);
    }

    /**
     * @return \Galahad\LaravelAddressing\Entity\Subdivision[]
     */
    public function toArray(): array
    {
        return parent::toArray();
    }

    public function toSelectArray(): array
    {
        return $this->mapWithKeys(static function(Subdivision $subdivision) {
            return [$subdivision->getCode() => $subdivision->getName()];
        })->toArray();
    }

    public function offsetGet($key): ?Subdivision
    {
        return parent::offsetGet($key);
    }

    /**
     * @param mixed $key
     * @param \Galahad\LaravelAddressing\Entity\Subdivision $value
     */
    public function offsetSet($key, $value): void
    {
        parent::offsetSet($key, $value);
    }
}