/home/mip/www/img/credit/datatables/Casts.tar
RawPhoneNumberCast.php000064400000002077151521006130010764 0ustar00<?php

namespace Propaganistas\LaravelPhone\Casts;

use InvalidArgumentException;
use Propaganistas\LaravelPhone\PhoneNumber;

class RawPhoneNumberCast extends PhoneNumberCast
{
    public function get($model, string $key, $value, array $attributes)
    {
        if (! $value) {
            return null;
        }

        $phone = new PhoneNumber($value,
            $this->getPossibleCountries($key, $attributes)
        );

        $country = $phone->getCountry();

        if ($country === null) {
            throw new InvalidArgumentException('Missing country specification for '.$key.' attribute cast');
        }

        return new PhoneNumber($value, $country);
    }

    public function set($model, string $key, $value, array $attributes)
    {
        if ($value instanceof PhoneNumber) {
            return $value->getRawNumber();
        }

        return (string) $value;
    }

    public function serialize($model, string $key, $value, array $attributes)
    {
        if (! $value) {
            return null;
        }

        return $value->getRawNumber();
    }
}
PhoneNumberCast.php000064400000001727151521006130010313 0ustar00<?php

namespace Propaganistas\LaravelPhone\Casts;

use Illuminate\Contracts\Database\Eloquent\CastsAttributes;
use Illuminate\Contracts\Database\Eloquent\SerializesCastableAttributes;
use Illuminate\Support\Arr;
use Propaganistas\LaravelPhone\Aspects\PhoneNumberCountry;

abstract class PhoneNumberCast implements CastsAttributes, SerializesCastableAttributes
{
    protected array $parameters;

    public function __construct()
    {
        $this->parameters = func_get_args();
    }

    protected function getPossibleCountries($key, array $attributes): array
    {
        $parameters = array_map(function ($parameter) use ($attributes) {
            if ($value = Arr::get($attributes, $parameter)) {
                return $value;
            }

            return $parameter;
        }, [...$this->parameters, $key.'_country']);

        return array_filter($parameters, function ($parameter) {
            return PhoneNumberCountry::isValid($parameter);
        });
    }
}
E164PhoneNumberCast.php000064400000002123151521006130010642 0ustar00<?php

namespace Propaganistas\LaravelPhone\Casts;

use Propaganistas\LaravelPhone\PhoneNumber;
use UnexpectedValueException;

class E164PhoneNumberCast extends PhoneNumberCast
{
    public function get($model, string $key, $value, array $attributes)
    {
        if (! $value) {
            return null;
        }

        $phone = new PhoneNumber($value);

        if ($phone->getCountry() === null) {
            throw new UnexpectedValueException('Queried value for '.$key.' is not in international format');
        }

        return $phone;
    }

    public function set($model, string $key, $value, array $attributes)
    {
        if (! $value) {
            return null;
        }

        if (! $value instanceof PhoneNumber) {
            $value = new PhoneNumber($value,
                $this->getPossibleCountries($key, $attributes)
            );
        }

        return $value->formatE164();
    }

    public function serialize($model, string $key, $value, array $attributes)
    {
        if (! $value) {
            return null;
        }

        return $value->formatE164();
    }
}