diff --git a/app/Member/Member.php b/app/Member/Member.php index 0e135dcc..0cdb50c4 100644 --- a/app/Member/Member.php +++ b/app/Member/Member.php @@ -24,10 +24,11 @@ use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Notifications\Notifiable; use Laravel\Scout\Attributes\SearchUsingFullText; +use Laravel\Scout\Searchable; use Sabre\VObject\Component\VCard; use Sabre\VObject\Reader; use Spatie\LaravelData\Lazy; -use Laravel\Scout\Searchable; +use Zoomyboy\Phone\HasPhoneNumbers; /** * @property string $subscription_name @@ -40,6 +41,7 @@ class Member extends Model use HasFactory; use Sluggable; use Searchable; + use HasPhoneNumbers; /** * @var array @@ -77,6 +79,14 @@ class Member extends Model 'mitgliedsnr' => 'integer', ]; + /** + * @return array + */ + public function phoneNumbers(): array + { + return ['main_phone', 'mobile_phone', 'work_phone', 'children_phone', 'fax']; + } + /** * @return array}> */ @@ -283,6 +293,7 @@ class Member extends Model // ---------------------------------- Scopes ----------------------------------- /** * @param Builder $query + * * @return Builder */ public function scopeOrdered(Builder $query): Builder @@ -292,6 +303,7 @@ class Member extends Model /** * @param Builder $query + * * @return Builder */ public function scopeWithPendingPayment(Builder $query): Builder @@ -307,6 +319,7 @@ class Member extends Model /** * @param Builder $query + * * @return Builder */ public function scopeWhereHasPendingPayment(Builder $query): Builder @@ -318,6 +331,7 @@ class Member extends Model /** * @param Builder $query + * * @return Builder */ public function scopeWhereAusstand(Builder $query): Builder @@ -329,6 +343,7 @@ class Member extends Model /** * @param Builder $query + * * @return Builder */ public function scopePayable(Builder $query): Builder @@ -338,6 +353,7 @@ class Member extends Model /** * @param Builder $query + * * @return Builder */ public function scopeWhereNoPayment(Builder $query, int $year): Builder @@ -349,6 +365,7 @@ class Member extends Model /** * @param Builder $query + * * @return Builder */ public function scopeForDashboard(Builder $query): Builder @@ -358,8 +375,10 @@ class Member extends Model /** * @todo refactor this to an actual filter model - * @param Builder $query + * + * @param Builder $query * @param array $filter + * * @return Builder */ public function scopeFilter(Builder $query, array $filter): Builder @@ -387,6 +406,7 @@ class Member extends Model /** * @param Builder $query + * * @return Builder */ public function scopeWhereCurrentGroup(Builder $query): Builder diff --git a/app/Member/MemberRequest.php b/app/Member/MemberRequest.php index 8d7d32ad..d5515eed 100644 --- a/app/Member/MemberRequest.php +++ b/app/Member/MemberRequest.php @@ -11,6 +11,7 @@ use App\Subactivity; use Illuminate\Foundation\Http\FormRequest; use Illuminate\Support\Str; use Illuminate\Validation\Rule; +use Zoomyboy\Phone\ValidPhoneRule; class MemberRequest extends FormRequest { @@ -69,14 +70,14 @@ class MemberRequest extends FormRequest 'multiply_pv' => 'boolean', 'multiply_more_pv' => 'boolean', 'send_newspaper' => 'boolean', - 'main_phone' => '', - 'mobile_phone' => '', + 'main_phone' => ['nullable', new ValidPhoneRule('Telefon (Eltern)')], + 'mobile_phone' => ['nullable', new ValidPhoneRule('Handy (Eltern)')], 'letter_address' => '', 'gender_id' => 'nullable|exists:genders,id', 'region_id' => 'nullable|exists:regions,id', 'nationality_id' => 'required|exists:nationalities,id', - 'children_phone' => '', - 'fax' => '', + 'children_phone' => ['nullable', new ValidPhoneRule('Telefon (Kind)')], + 'fax' => ['nullable', new ValidPhoneRule('Fax')], 'other_country' => '', 'salutation' => '', 'comment' => '', @@ -85,10 +86,12 @@ class MemberRequest extends FormRequest public function persistCreate(NamiSettings $settings): void { - $member = Member::create([ + $member = new Member([ ...$this->validated(), 'group_id' => Group::where('nami_id', $settings->default_group_id)->firstOrFail()->id, ]); + $member->updatePhoneNumbers()->save(); + if ($this->input('has_nami')) { NamiPutMemberAction::run( $member, @@ -100,7 +103,7 @@ class MemberRequest extends FormRequest public function persistUpdate(Member $member): void { - $member->fill($this->validated()); + $member->fill($this->validated())->updatePhoneNumbers(); $namiSync = $member->isDirty(Member::$namiFields); diff --git a/composer.json b/composer.json index 87bace71..cdcd2b1b 100644 --- a/composer.json +++ b/composer.json @@ -46,6 +46,7 @@ "spatie/laravel-settings": "^2.2", "worksome/request-factories": "^2.5", "zoomyboy/laravel-nami": "dev-master", + "zoomyboy/phone": "^1.0", "zoomyboy/tex": "dev-main as 1.0" }, "require-dev": { diff --git a/composer.lock b/composer.lock index ece74438..cc3a0818 100644 --- a/composer.lock +++ b/composer.lock @@ -4,559 +4,8 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "f43fe5529405b4aeb18cdac45386f4f6", + "content-hash": "0b1ef2c8dbb80fed5f32017b3ea53955", "packages": [ - { - "name": "amphp/amp", - "version": "v2.6.2", - "source": { - "type": "git", - "url": "https://github.com/amphp/amp.git", - "reference": "9d5100cebffa729aaffecd3ad25dc5aeea4f13bb" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/amphp/amp/zipball/9d5100cebffa729aaffecd3ad25dc5aeea4f13bb", - "reference": "9d5100cebffa729aaffecd3ad25dc5aeea4f13bb", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "require-dev": { - "amphp/php-cs-fixer-config": "dev-master", - "amphp/phpunit-util": "^1", - "ext-json": "*", - "jetbrains/phpstorm-stubs": "^2019.3", - "phpunit/phpunit": "^7 | ^8 | ^9", - "psalm/phar": "^3.11@dev", - "react/promise": "^2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.x-dev" - } - }, - "autoload": { - "files": [ - "lib/functions.php", - "lib/Internal/functions.php" - ], - "psr-4": { - "Amp\\": "lib" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Daniel Lowrey", - "email": "rdlowrey@php.net" - }, - { - "name": "Aaron Piotrowski", - "email": "aaron@trowski.com" - }, - { - "name": "Bob Weinand", - "email": "bobwei9@hotmail.com" - }, - { - "name": "Niklas Keller", - "email": "me@kelunik.com" - } - ], - "description": "A non-blocking concurrency framework for PHP applications.", - "homepage": "https://amphp.org/amp", - "keywords": [ - "async", - "asynchronous", - "awaitable", - "concurrency", - "event", - "event-loop", - "future", - "non-blocking", - "promise" - ], - "support": { - "irc": "irc://irc.freenode.org/amphp", - "issues": "https://github.com/amphp/amp/issues", - "source": "https://github.com/amphp/amp/tree/v2.6.2" - }, - "funding": [ - { - "url": "https://github.com/amphp", - "type": "github" - } - ], - "time": "2022-02-20T17:52:18+00:00" - }, - { - "name": "amphp/byte-stream", - "version": "v1.8.1", - "source": { - "type": "git", - "url": "https://github.com/amphp/byte-stream.git", - "reference": "acbd8002b3536485c997c4e019206b3f10ca15bd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/amphp/byte-stream/zipball/acbd8002b3536485c997c4e019206b3f10ca15bd", - "reference": "acbd8002b3536485c997c4e019206b3f10ca15bd", - "shasum": "" - }, - "require": { - "amphp/amp": "^2", - "php": ">=7.1" - }, - "require-dev": { - "amphp/php-cs-fixer-config": "dev-master", - "amphp/phpunit-util": "^1.4", - "friendsofphp/php-cs-fixer": "^2.3", - "jetbrains/phpstorm-stubs": "^2019.3", - "phpunit/phpunit": "^6 || ^7 || ^8", - "psalm/phar": "^3.11.4" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "files": [ - "lib/functions.php" - ], - "psr-4": { - "Amp\\ByteStream\\": "lib" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Aaron Piotrowski", - "email": "aaron@trowski.com" - }, - { - "name": "Niklas Keller", - "email": "me@kelunik.com" - } - ], - "description": "A stream abstraction to make working with non-blocking I/O simple.", - "homepage": "http://amphp.org/byte-stream", - "keywords": [ - "amp", - "amphp", - "async", - "io", - "non-blocking", - "stream" - ], - "support": { - "irc": "irc://irc.freenode.org/amphp", - "issues": "https://github.com/amphp/byte-stream/issues", - "source": "https://github.com/amphp/byte-stream/tree/v1.8.1" - }, - "funding": [ - { - "url": "https://github.com/amphp", - "type": "github" - } - ], - "time": "2021-03-30T17:13:30+00:00" - }, - { - "name": "amphp/parallel", - "version": "v1.4.2", - "source": { - "type": "git", - "url": "https://github.com/amphp/parallel.git", - "reference": "75853e1623efa5aa5e65e986ec9a97db573a5267" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/amphp/parallel/zipball/75853e1623efa5aa5e65e986ec9a97db573a5267", - "reference": "75853e1623efa5aa5e65e986ec9a97db573a5267", - "shasum": "" - }, - "require": { - "amphp/amp": "^2", - "amphp/byte-stream": "^1.6.1", - "amphp/parser": "^1", - "amphp/process": "^1", - "amphp/serialization": "^1", - "amphp/sync": "^1.0.1", - "php": ">=7.1" - }, - "require-dev": { - "amphp/php-cs-fixer-config": "dev-master", - "amphp/phpunit-util": "^1.1", - "phpunit/phpunit": "^8 || ^7" - }, - "type": "library", - "autoload": { - "files": [ - "lib/Context/functions.php", - "lib/Sync/functions.php", - "lib/Worker/functions.php" - ], - "psr-4": { - "Amp\\Parallel\\": "lib" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Aaron Piotrowski", - "email": "aaron@trowski.com" - }, - { - "name": "Stephen Coakley", - "email": "me@stephencoakley.com" - } - ], - "description": "Parallel processing component for Amp.", - "homepage": "https://github.com/amphp/parallel", - "keywords": [ - "async", - "asynchronous", - "concurrent", - "multi-processing", - "multi-threading" - ], - "support": { - "issues": "https://github.com/amphp/parallel/issues", - "source": "https://github.com/amphp/parallel/tree/v1.4.2" - }, - "funding": [ - { - "url": "https://github.com/amphp", - "type": "github" - } - ], - "time": "2022-12-30T00:21:42+00:00" - }, - { - "name": "amphp/parallel-functions", - "version": "v1.1.0", - "source": { - "type": "git", - "url": "https://github.com/amphp/parallel-functions.git", - "reference": "04e92fcacfc921a56dfe12c23b3265e62593a7cb" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/amphp/parallel-functions/zipball/04e92fcacfc921a56dfe12c23b3265e62593a7cb", - "reference": "04e92fcacfc921a56dfe12c23b3265e62593a7cb", - "shasum": "" - }, - "require": { - "amphp/amp": "^2.0.3", - "amphp/parallel": "^1.4", - "amphp/serialization": "^1.0", - "laravel/serializable-closure": "^1.0", - "php": ">=7.4" - }, - "require-dev": { - "amphp/php-cs-fixer-config": "v2.x-dev", - "amphp/phpunit-util": "^2.0", - "phpunit/phpunit": "^9.5.11" - }, - "type": "library", - "autoload": { - "files": [ - "src/functions.php" - ], - "psr-4": { - "Amp\\ParallelFunctions\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Niklas Keller", - "email": "me@kelunik.com" - } - ], - "description": "Parallel processing made simple.", - "support": { - "issues": "https://github.com/amphp/parallel-functions/issues", - "source": "https://github.com/amphp/parallel-functions/tree/v1.1.0" - }, - "funding": [ - { - "url": "https://github.com/amphp", - "type": "github" - } - ], - "time": "2022-02-03T19:32:41+00:00" - }, - { - "name": "amphp/parser", - "version": "v1.1.0", - "source": { - "type": "git", - "url": "https://github.com/amphp/parser.git", - "reference": "ff1de4144726c5dad5fab97f66692ebe8de3e151" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/amphp/parser/zipball/ff1de4144726c5dad5fab97f66692ebe8de3e151", - "reference": "ff1de4144726c5dad5fab97f66692ebe8de3e151", - "shasum": "" - }, - "require": { - "php": ">=7.4" - }, - "require-dev": { - "amphp/php-cs-fixer-config": "^2", - "phpunit/phpunit": "^9", - "psalm/phar": "^5.4" - }, - "type": "library", - "autoload": { - "psr-4": { - "Amp\\Parser\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Aaron Piotrowski", - "email": "aaron@trowski.com" - }, - { - "name": "Niklas Keller", - "email": "me@kelunik.com" - } - ], - "description": "A generator parser to make streaming parsers simple.", - "homepage": "https://github.com/amphp/parser", - "keywords": [ - "async", - "non-blocking", - "parser", - "stream" - ], - "support": { - "issues": "https://github.com/amphp/parser/issues", - "source": "https://github.com/amphp/parser/tree/v1.1.0" - }, - "funding": [ - { - "url": "https://github.com/amphp", - "type": "github" - } - ], - "time": "2022-12-30T18:08:47+00:00" - }, - { - "name": "amphp/process", - "version": "v1.1.4", - "source": { - "type": "git", - "url": "https://github.com/amphp/process.git", - "reference": "76e9495fd6818b43a20167cb11d8a67f7744ee0f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/amphp/process/zipball/76e9495fd6818b43a20167cb11d8a67f7744ee0f", - "reference": "76e9495fd6818b43a20167cb11d8a67f7744ee0f", - "shasum": "" - }, - "require": { - "amphp/amp": "^2", - "amphp/byte-stream": "^1.4", - "php": ">=7" - }, - "require-dev": { - "amphp/php-cs-fixer-config": "dev-master", - "amphp/phpunit-util": "^1", - "phpunit/phpunit": "^6" - }, - "type": "library", - "autoload": { - "files": [ - "lib/functions.php" - ], - "psr-4": { - "Amp\\Process\\": "lib" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Bob Weinand", - "email": "bobwei9@hotmail.com" - }, - { - "name": "Aaron Piotrowski", - "email": "aaron@trowski.com" - }, - { - "name": "Niklas Keller", - "email": "me@kelunik.com" - } - ], - "description": "Asynchronous process manager.", - "homepage": "https://github.com/amphp/process", - "support": { - "issues": "https://github.com/amphp/process/issues", - "source": "https://github.com/amphp/process/tree/v1.1.4" - }, - "funding": [ - { - "url": "https://github.com/amphp", - "type": "github" - } - ], - "time": "2022-07-06T23:50:12+00:00" - }, - { - "name": "amphp/serialization", - "version": "v1.0.0", - "source": { - "type": "git", - "url": "https://github.com/amphp/serialization.git", - "reference": "693e77b2fb0b266c3c7d622317f881de44ae94a1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/amphp/serialization/zipball/693e77b2fb0b266c3c7d622317f881de44ae94a1", - "reference": "693e77b2fb0b266c3c7d622317f881de44ae94a1", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "require-dev": { - "amphp/php-cs-fixer-config": "dev-master", - "phpunit/phpunit": "^9 || ^8 || ^7" - }, - "type": "library", - "autoload": { - "files": [ - "src/functions.php" - ], - "psr-4": { - "Amp\\Serialization\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Aaron Piotrowski", - "email": "aaron@trowski.com" - }, - { - "name": "Niklas Keller", - "email": "me@kelunik.com" - } - ], - "description": "Serialization tools for IPC and data storage in PHP.", - "homepage": "https://github.com/amphp/serialization", - "keywords": [ - "async", - "asynchronous", - "serialization", - "serialize" - ], - "support": { - "issues": "https://github.com/amphp/serialization/issues", - "source": "https://github.com/amphp/serialization/tree/master" - }, - "time": "2020-03-25T21:39:07+00:00" - }, - { - "name": "amphp/sync", - "version": "v1.4.2", - "source": { - "type": "git", - "url": "https://github.com/amphp/sync.git", - "reference": "85ab06764f4f36d63b1356b466df6111cf4b89cf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/amphp/sync/zipball/85ab06764f4f36d63b1356b466df6111cf4b89cf", - "reference": "85ab06764f4f36d63b1356b466df6111cf4b89cf", - "shasum": "" - }, - "require": { - "amphp/amp": "^2.2", - "php": ">=7.1" - }, - "require-dev": { - "amphp/php-cs-fixer-config": "dev-master", - "amphp/phpunit-util": "^1.1", - "phpunit/phpunit": "^9 || ^8 || ^7" - }, - "type": "library", - "autoload": { - "files": [ - "src/functions.php", - "src/ConcurrentIterator/functions.php" - ], - "psr-4": { - "Amp\\Sync\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Aaron Piotrowski", - "email": "aaron@trowski.com" - }, - { - "name": "Stephen Coakley", - "email": "me@stephencoakley.com" - } - ], - "description": "Mutex, Semaphore, and other synchronization tools for Amp.", - "homepage": "https://github.com/amphp/sync", - "keywords": [ - "async", - "asynchronous", - "mutex", - "semaphore", - "synchronization" - ], - "support": { - "issues": "https://github.com/amphp/sync/issues", - "source": "https://github.com/amphp/sync/tree/v1.4.2" - }, - "funding": [ - { - "url": "https://github.com/amphp", - "type": "github" - } - ], - "time": "2021-10-25T18:29:10+00:00" - }, { "name": "beyondcode/laravel-dump-server", "version": "1.9.0", @@ -994,16 +443,16 @@ }, { "name": "doctrine/dbal", - "version": "3.6.0", + "version": "3.6.1", "source": { "type": "git", "url": "https://github.com/doctrine/dbal.git", - "reference": "85b98cb23c8af471a67abfe14485da696bcabc2e" + "reference": "57815c7bbcda3cd18871d253c1dd8cbe56f8526e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/85b98cb23c8af471a67abfe14485da696bcabc2e", - "reference": "85b98cb23c8af471a67abfe14485da696bcabc2e", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/57815c7bbcda3cd18871d253c1dd8cbe56f8526e", + "reference": "57815c7bbcda3cd18871d253c1dd8cbe56f8526e", "shasum": "" }, "require": { @@ -1019,11 +468,11 @@ "doctrine/coding-standard": "11.1.0", "fig/log-test": "^1", "jetbrains/phpstorm-stubs": "2022.3", - "phpstan/phpstan": "1.9.14", - "phpstan/phpstan-strict-rules": "^1.4", - "phpunit/phpunit": "9.6.3", + "phpstan/phpstan": "1.10.3", + "phpstan/phpstan-strict-rules": "^1.5", + "phpunit/phpunit": "9.6.4", "psalm/plugin-phpunit": "0.18.4", - "squizlabs/php_codesniffer": "3.7.1", + "squizlabs/php_codesniffer": "3.7.2", "symfony/cache": "^5.4|^6.0", "symfony/console": "^4.4|^5.4|^6.0", "vimeo/psalm": "4.30.0" @@ -1086,7 +535,7 @@ ], "support": { "issues": "https://github.com/doctrine/dbal/issues", - "source": "https://github.com/doctrine/dbal/tree/3.6.0" + "source": "https://github.com/doctrine/dbal/tree/3.6.1" }, "funding": [ { @@ -1102,7 +551,7 @@ "type": "tidelift" } ], - "time": "2023-02-07T22:52:03+00:00" + "time": "2023-03-02T19:26:24+00:00" }, { "name": "doctrine/deprecations", @@ -1746,6 +1195,132 @@ ], "time": "2022-02-20T15:07:15+00:00" }, + { + "name": "giggsey/libphonenumber-for-php", + "version": "8.13.6", + "source": { + "type": "git", + "url": "https://github.com/giggsey/libphonenumber-for-php.git", + "reference": "5631645d2ca28e4f62daea7baddcba8c90f4bcbf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/giggsey/libphonenumber-for-php/zipball/5631645d2ca28e4f62daea7baddcba8c90f4bcbf", + "reference": "5631645d2ca28e4f62daea7baddcba8c90f4bcbf", + "shasum": "" + }, + "require": { + "giggsey/locale": "^1.7|^2.0", + "php": ">=5.3.2", + "symfony/polyfill-mbstring": "^1.17" + }, + "require-dev": { + "pear/pear-core-minimal": "^1.9", + "pear/pear_exception": "^1.0", + "pear/versioncontrol_git": "^0.5", + "phing/phing": "^2.7", + "php-coveralls/php-coveralls": "^1.0|^2.0", + "symfony/console": "^2.8|^3.0|^v4.4|^v5.2", + "symfony/phpunit-bridge": "^4.2 || ^5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "8.x-dev" + } + }, + "autoload": { + "psr-4": { + "libphonenumber\\": "src/" + }, + "exclude-from-classmap": [ + "/src/data/", + "/src/carrier/data/", + "/src/geocoding/data/", + "/src/timezone/data/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Joshua Gigg", + "email": "giggsey@gmail.com", + "homepage": "https://giggsey.com/" + } + ], + "description": "PHP Port of Google's libphonenumber", + "homepage": "https://github.com/giggsey/libphonenumber-for-php", + "keywords": [ + "geocoding", + "geolocation", + "libphonenumber", + "mobile", + "phonenumber", + "validation" + ], + "support": { + "issues": "https://github.com/giggsey/libphonenumber-for-php/issues", + "source": "https://github.com/giggsey/libphonenumber-for-php" + }, + "time": "2023-02-10T10:33:16+00:00" + }, + { + "name": "giggsey/locale", + "version": "2.3", + "source": { + "type": "git", + "url": "https://github.com/giggsey/Locale.git", + "reference": "5f035523740be40d40ac768a123c9bcc1ae12f56" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/giggsey/Locale/zipball/5f035523740be40d40ac768a123c9bcc1ae12f56", + "reference": "5f035523740be40d40ac768a123c9bcc1ae12f56", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "require-dev": { + "ext-json": "*", + "pear/pear-core-minimal": "^1.9", + "pear/pear_exception": "^1.0", + "pear/versioncontrol_git": "^0.5", + "phing/phing": "^2.7", + "php-coveralls/php-coveralls": "^2.0", + "phpunit/phpunit": "^8.5|^9.5", + "symfony/console": "^5.0|^6.0", + "symfony/filesystem": "^5.0|^6.0", + "symfony/finder": "^5.0|^6.0", + "symfony/process": "^5.0|^6.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Giggsey\\Locale\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Joshua Gigg", + "email": "giggsey@gmail.com", + "homepage": "https://giggsey.com/" + } + ], + "description": "Locale functions required by libphonenumber-for-php", + "support": { + "issues": "https://github.com/giggsey/Locale/issues", + "source": "https://github.com/giggsey/Locale/tree/2.3" + }, + "time": "2022-10-19T20:03:30+00:00" + }, { "name": "graham-campbell/result-type", "version": "v1.1.1", @@ -6138,16 +5713,16 @@ }, { "name": "spatie/ignition", - "version": "1.4.3", + "version": "1.4.5", "source": { "type": "git", "url": "https://github.com/spatie/ignition.git", - "reference": "2cf3833220cfe8fcf639544f8d7067b6469a00b0" + "reference": "cc09114b7057bd217b676f047544b33f5b6247e6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/ignition/zipball/2cf3833220cfe8fcf639544f8d7067b6469a00b0", - "reference": "2cf3833220cfe8fcf639544f8d7067b6469a00b0", + "url": "https://api.github.com/repos/spatie/ignition/zipball/cc09114b7057bd217b676f047544b33f5b6247e6", + "reference": "cc09114b7057bd217b676f047544b33f5b6247e6", "shasum": "" }, "require": { @@ -6169,7 +5744,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.2.x-dev" + "dev-main": "1.4.x-dev" } }, "autoload": { @@ -6208,7 +5783,7 @@ "type": "github" } ], - "time": "2023-01-23T15:28:32+00:00" + "time": "2023-02-28T16:49:47+00:00" }, { "name": "spatie/image", @@ -6281,16 +5856,16 @@ }, { "name": "spatie/image-optimizer", - "version": "1.6.2", + "version": "1.6.3", "source": { "type": "git", "url": "https://github.com/spatie/image-optimizer.git", - "reference": "6db75529cbf8fa84117046a9d513f277aead90a0" + "reference": "9ed7a80f92310d162adb39f8ffe2622b5ae05d91" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/image-optimizer/zipball/6db75529cbf8fa84117046a9d513f277aead90a0", - "reference": "6db75529cbf8fa84117046a9d513f277aead90a0", + "url": "https://api.github.com/repos/spatie/image-optimizer/zipball/9ed7a80f92310d162adb39f8ffe2622b5ae05d91", + "reference": "9ed7a80f92310d162adb39f8ffe2622b5ae05d91", "shasum": "" }, "require": { @@ -6300,6 +5875,7 @@ "symfony/process": "^4.2|^5.0|^6.0" }, "require-dev": { + "pestphp/pest": "^1.21", "phpunit/phpunit": "^8.5.21|^9.4.4", "symfony/var-dumper": "^4.2|^5.0|^6.0" }, @@ -6329,22 +5905,22 @@ ], "support": { "issues": "https://github.com/spatie/image-optimizer/issues", - "source": "https://github.com/spatie/image-optimizer/tree/1.6.2" + "source": "https://github.com/spatie/image-optimizer/tree/1.6.3" }, - "time": "2021-12-21T10:08:05+00:00" + "time": "2023-02-28T16:56:09+00:00" }, { "name": "spatie/laravel-data", - "version": "3.1.0", + "version": "3.1.1", "source": { "type": "git", "url": "https://github.com/spatie/laravel-data.git", - "reference": "419167479715cc17813c60de2c342bb3f2d3c6d9" + "reference": "ef671d7c96d383b0ce4e0e22b34d271d98430f79" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-data/zipball/419167479715cc17813c60de2c342bb3f2d3c6d9", - "reference": "419167479715cc17813c60de2c342bb3f2d3c6d9", + "url": "https://api.github.com/repos/spatie/laravel-data/zipball/ef671d7c96d383b0ce4e0e22b34d271d98430f79", + "reference": "ef671d7c96d383b0ce4e0e22b34d271d98430f79", "shasum": "" }, "require": { @@ -6405,7 +5981,7 @@ ], "support": { "issues": "https://github.com/spatie/laravel-data/issues", - "source": "https://github.com/spatie/laravel-data/tree/3.1.0" + "source": "https://github.com/spatie/laravel-data/tree/3.1.1" }, "funding": [ { @@ -6413,7 +5989,7 @@ "type": "github" } ], - "time": "2023-02-10T09:31:12+00:00" + "time": "2023-03-02T11:00:33+00:00" }, { "name": "spatie/laravel-ignition", @@ -6675,39 +6251,38 @@ }, { "name": "spatie/laravel-settings", - "version": "2.8.0", + "version": "2.8.1", "source": { "type": "git", "url": "https://github.com/spatie/laravel-settings.git", - "reference": "e594ac01a54cc04c74524c0a3c5904becf74d3cb" + "reference": "8334892904d31fe9d00c85d334e31a285741b8cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-settings/zipball/e594ac01a54cc04c74524c0a3c5904becf74d3cb", - "reference": "e594ac01a54cc04c74524c0a3c5904becf74d3cb", + "url": "https://api.github.com/repos/spatie/laravel-settings/zipball/8334892904d31fe9d00c85d334e31a285741b8cf", + "reference": "8334892904d31fe9d00c85d334e31a285741b8cf", "shasum": "" }, "require": { "doctrine/dbal": "^2.13|^3.2", "ext-json": "*", - "illuminate/database": "^9.0|^10.0", - "php": "^8.1", + "illuminate/database": "^8.73|^9.0|^10.0", + "php": "^7.4|^8.0", "phpdocumentor/type-resolver": "^1.5", - "spatie/php-structure-discoverer": "^1.0.1", "spatie/temporary-directory": "^1.3|^2.0" }, "require-dev": { "ext-redis": "*", "mockery/mockery": "^1.4", "nunomaduro/larastan": "^2.0", - "orchestra/testbench": "^7.0|^8.0", + "orchestra/testbench": "^6.23|^7.0|^8.0", "pestphp/pest": "^1.21", "pestphp/pest-plugin-laravel": "^1.2", "phpstan/extension-installer": "^1.1", "phpstan/phpstan-deprecation-rules": "^1.0", "phpstan/phpstan-phpunit": "^1.0", "phpunit/phpunit": "^9.5", - "spatie/laravel-data": "^1.0|^2.0|^3.0", + "spatie/laravel-data": "^1.0.0|^2.0.0", "spatie/pest-plugin-snapshots": "^1.1", "spatie/phpunit-snapshot-assertions": "^4.2", "spatie/ray": "^1.36" @@ -6748,7 +6323,7 @@ ], "support": { "issues": "https://github.com/spatie/laravel-settings/issues", - "source": "https://github.com/spatie/laravel-settings/tree/2.8.0" + "source": "https://github.com/spatie/laravel-settings/tree/2.8.1" }, "funding": [ { @@ -6760,87 +6335,7 @@ "type": "github" } ], - "time": "2023-02-10T14:36:06+00:00" - }, - { - "name": "spatie/php-structure-discoverer", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/php-structure-discoverer.git", - "reference": "660423fc002c96b5eab4348d725450cf8f6edc3b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/php-structure-discoverer/zipball/660423fc002c96b5eab4348d725450cf8f6edc3b", - "reference": "660423fc002c96b5eab4348d725450cf8f6edc3b", - "shasum": "" - }, - "require": { - "amphp/amp": "^2.6.2", - "amphp/parallel": "^1.4.1", - "amphp/parallel-functions": "^1.1", - "illuminate/collections": "^9.30|^10.0", - "php": "^8.1", - "spatie/laravel-package-tools": "^1.4.3" - }, - "require-dev": { - "illuminate/console": "^9.30|^10.0", - "laravel/pint": "^1.0", - "nunomaduro/collision": "^6.0", - "nunomaduro/larastan": "^2.0.1", - "orchestra/testbench": "^7.0|^8.0", - "pestphp/pest": "^1.21", - "pestphp/pest-plugin-laravel": "^1.1", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "phpunit/phpunit": "^9.5", - "spatie/laravel-ray": "^1.26" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Spatie\\StructureDiscoverer\\StructureDiscovererServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Spatie\\StructureDiscoverer\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Ruben Van Assche", - "email": "ruben@spatie.be", - "role": "Developer" - } - ], - "description": "Automatically discover structures within your PHP application", - "homepage": "https://github.com/spatie/php-structure-discoverer", - "keywords": [ - "discover", - "laravel", - "php", - "php-structure-discoverer" - ], - "support": { - "issues": "https://github.com/spatie/php-structure-discoverer/issues", - "source": "https://github.com/spatie/php-structure-discoverer/tree/1.0.1" - }, - "funding": [ - { - "url": "https://github.com/LaravelAutoDiscoverer", - "type": "github" - } - ], - "time": "2023-02-10T14:31:08+00:00" + "time": "2023-03-02T08:26:11+00:00" }, { "name": "spatie/temporary-directory", @@ -6905,16 +6400,16 @@ }, { "name": "symfony/console", - "version": "v6.2.5", + "version": "v6.2.7", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "3e294254f2191762c1d137aed4b94e966965e985" + "reference": "cbad09eb8925b6ad4fb721c7a179344dc4a19d45" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/3e294254f2191762c1d137aed4b94e966965e985", - "reference": "3e294254f2191762c1d137aed4b94e966965e985", + "url": "https://api.github.com/repos/symfony/console/zipball/cbad09eb8925b6ad4fb721c7a179344dc4a19d45", + "reference": "cbad09eb8925b6ad4fb721c7a179344dc4a19d45", "shasum": "" }, "require": { @@ -6981,7 +6476,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.2.5" + "source": "https://github.com/symfony/console/tree/v6.2.7" }, "funding": [ { @@ -6997,20 +6492,20 @@ "type": "tidelift" } ], - "time": "2023-01-01T08:38:09+00:00" + "time": "2023-02-25T17:00:03+00:00" }, { "name": "symfony/css-selector", - "version": "v6.2.5", + "version": "v6.2.7", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "bf1b9d4ad8b1cf0dbde8b08e0135a2f6259b9ba1" + "reference": "aedf3cb0f5b929ec255d96bbb4909e9932c769e0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/bf1b9d4ad8b1cf0dbde8b08e0135a2f6259b9ba1", - "reference": "bf1b9d4ad8b1cf0dbde8b08e0135a2f6259b9ba1", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/aedf3cb0f5b929ec255d96bbb4909e9932c769e0", + "reference": "aedf3cb0f5b929ec255d96bbb4909e9932c769e0", "shasum": "" }, "require": { @@ -7046,7 +6541,7 @@ "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/v6.2.5" + "source": "https://github.com/symfony/css-selector/tree/v6.2.7" }, "funding": [ { @@ -7062,20 +6557,20 @@ "type": "tidelift" } ], - "time": "2023-01-01T08:38:09+00:00" + "time": "2023-02-14T08:44:56+00:00" }, { "name": "symfony/deprecation-contracts", - "version": "v3.2.0", + "version": "v3.2.1", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "1ee04c65529dea5d8744774d474e7cbd2f1206d3" + "reference": "e2d1534420bd723d0ef5aec58a22c5fe60ce6f5e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/1ee04c65529dea5d8744774d474e7cbd2f1206d3", - "reference": "1ee04c65529dea5d8744774d474e7cbd2f1206d3", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e2d1534420bd723d0ef5aec58a22c5fe60ce6f5e", + "reference": "e2d1534420bd723d0ef5aec58a22c5fe60ce6f5e", "shasum": "" }, "require": { @@ -7113,7 +6608,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.2.0" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.2.1" }, "funding": [ { @@ -7129,20 +6624,20 @@ "type": "tidelift" } ], - "time": "2022-11-25T10:21:52+00:00" + "time": "2023-03-01T10:25:55+00:00" }, { "name": "symfony/error-handler", - "version": "v6.2.5", + "version": "v6.2.7", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "0092696af0be8e6124b042fbe2890ca1788d7b28" + "reference": "61e90f94eb014054000bc902257d2763fac09166" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/0092696af0be8e6124b042fbe2890ca1788d7b28", - "reference": "0092696af0be8e6124b042fbe2890ca1788d7b28", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/61e90f94eb014054000bc902257d2763fac09166", + "reference": "61e90f94eb014054000bc902257d2763fac09166", "shasum": "" }, "require": { @@ -7184,7 +6679,7 @@ "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/v6.2.5" + "source": "https://github.com/symfony/error-handler/tree/v6.2.7" }, "funding": [ { @@ -7200,20 +6695,20 @@ "type": "tidelift" } ], - "time": "2023-01-01T08:38:09+00:00" + "time": "2023-02-14T08:44:56+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v6.2.5", + "version": "v6.2.7", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "f02d108b5e9fd4a6245aa73a9d2df2ec060c3e68" + "reference": "404b307de426c1c488e5afad64403e5f145e82a5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/f02d108b5e9fd4a6245aa73a9d2df2ec060c3e68", - "reference": "f02d108b5e9fd4a6245aa73a9d2df2ec060c3e68", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/404b307de426c1c488e5afad64403e5f145e82a5", + "reference": "404b307de426c1c488e5afad64403e5f145e82a5", "shasum": "" }, "require": { @@ -7267,7 +6762,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v6.2.5" + "source": "https://github.com/symfony/event-dispatcher/tree/v6.2.7" }, "funding": [ { @@ -7283,20 +6778,20 @@ "type": "tidelift" } ], - "time": "2023-01-01T08:38:09+00:00" + "time": "2023-02-14T08:44:56+00:00" }, { "name": "symfony/event-dispatcher-contracts", - "version": "v3.2.0", + "version": "v3.2.1", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "0782b0b52a737a05b4383d0df35a474303cabdae" + "reference": "0ad3b6f1e4e2da5690fefe075cd53a238646d8dd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/0782b0b52a737a05b4383d0df35a474303cabdae", - "reference": "0782b0b52a737a05b4383d0df35a474303cabdae", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/0ad3b6f1e4e2da5690fefe075cd53a238646d8dd", + "reference": "0ad3b6f1e4e2da5690fefe075cd53a238646d8dd", "shasum": "" }, "require": { @@ -7346,7 +6841,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.2.0" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.2.1" }, "funding": [ { @@ -7362,20 +6857,20 @@ "type": "tidelift" } ], - "time": "2022-11-25T10:21:52+00:00" + "time": "2023-03-01T10:32:47+00:00" }, { "name": "symfony/finder", - "version": "v6.2.5", + "version": "v6.2.7", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "c90dc446976a612e3312a97a6ec0069ab0c2099c" + "reference": "20808dc6631aecafbe67c186af5dcb370be3a0eb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/c90dc446976a612e3312a97a6ec0069ab0c2099c", - "reference": "c90dc446976a612e3312a97a6ec0069ab0c2099c", + "url": "https://api.github.com/repos/symfony/finder/zipball/20808dc6631aecafbe67c186af5dcb370be3a0eb", + "reference": "20808dc6631aecafbe67c186af5dcb370be3a0eb", "shasum": "" }, "require": { @@ -7410,7 +6905,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v6.2.5" + "source": "https://github.com/symfony/finder/tree/v6.2.7" }, "funding": [ { @@ -7426,20 +6921,20 @@ "type": "tidelift" } ], - "time": "2023-01-20T17:45:48+00:00" + "time": "2023-02-16T09:57:23+00:00" }, { "name": "symfony/http-foundation", - "version": "v6.2.6", + "version": "v6.2.7", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "e8dd1f502bc2b3371d05092aa233b064b03ce7ed" + "reference": "5fc3038d4a594223f9ea42e4e985548f3fcc9a3b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/e8dd1f502bc2b3371d05092aa233b064b03ce7ed", - "reference": "e8dd1f502bc2b3371d05092aa233b064b03ce7ed", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/5fc3038d4a594223f9ea42e4e985548f3fcc9a3b", + "reference": "5fc3038d4a594223f9ea42e4e985548f3fcc9a3b", "shasum": "" }, "require": { @@ -7488,7 +6983,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v6.2.6" + "source": "https://github.com/symfony/http-foundation/tree/v6.2.7" }, "funding": [ { @@ -7504,20 +6999,20 @@ "type": "tidelift" } ], - "time": "2023-01-30T15:46:28+00:00" + "time": "2023-02-21T10:54:55+00:00" }, { "name": "symfony/http-kernel", - "version": "v6.2.6", + "version": "v6.2.7", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "7122db07b0d8dbf0de682267c84217573aee3ea7" + "reference": "ca0680ad1e2d678536cc20e0ae33f9e4e5d2becd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/7122db07b0d8dbf0de682267c84217573aee3ea7", - "reference": "7122db07b0d8dbf0de682267c84217573aee3ea7", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/ca0680ad1e2d678536cc20e0ae33f9e4e5d2becd", + "reference": "ca0680ad1e2d678536cc20e0ae33f9e4e5d2becd", "shasum": "" }, "require": { @@ -7526,7 +7021,7 @@ "symfony/deprecation-contracts": "^2.1|^3", "symfony/error-handler": "^6.1", "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", + "symfony/http-foundation": "^5.4.21|^6.2.7", "symfony/polyfill-ctype": "^1.8" }, "conflict": { @@ -7599,7 +7094,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v6.2.6" + "source": "https://github.com/symfony/http-kernel/tree/v6.2.7" }, "funding": [ { @@ -7615,20 +7110,20 @@ "type": "tidelift" } ], - "time": "2023-02-01T08:32:25+00:00" + "time": "2023-02-28T13:26:41+00:00" }, { "name": "symfony/mailer", - "version": "v6.2.5", + "version": "v6.2.7", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "29729ac0b4e5113f24c39c46746bd6afb79e0aaa" + "reference": "e4f84c633b72ec70efc50b8016871c3bc43e691e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/29729ac0b4e5113f24c39c46746bd6afb79e0aaa", - "reference": "29729ac0b4e5113f24c39c46746bd6afb79e0aaa", + "url": "https://api.github.com/repos/symfony/mailer/zipball/e4f84c633b72ec70efc50b8016871c3bc43e691e", + "reference": "e4f84c633b72ec70efc50b8016871c3bc43e691e", "shasum": "" }, "require": { @@ -7648,7 +7143,7 @@ }, "require-dev": { "symfony/console": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2|^3", + "symfony/http-client": "^5.4|^6.0", "symfony/messenger": "^6.2", "symfony/twig-bridge": "^6.2" }, @@ -7678,7 +7173,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/v6.2.5" + "source": "https://github.com/symfony/mailer/tree/v6.2.7" }, "funding": [ { @@ -7694,20 +7189,20 @@ "type": "tidelift" } ], - "time": "2023-01-10T18:53:53+00:00" + "time": "2023-02-21T10:35:38+00:00" }, { "name": "symfony/mime", - "version": "v6.2.5", + "version": "v6.2.7", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "4b7b349f67d15cd0639955c8179a76c89f6fd610" + "reference": "62e341f80699badb0ad70b31149c8df89a2d778e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/4b7b349f67d15cd0639955c8179a76c89f6fd610", - "reference": "4b7b349f67d15cd0639955c8179a76c89f6fd610", + "url": "https://api.github.com/repos/symfony/mime/zipball/62e341f80699badb0ad70b31149c8df89a2d778e", + "reference": "62e341f80699badb0ad70b31149c8df89a2d778e", "shasum": "" }, "require": { @@ -7761,7 +7256,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v6.2.5" + "source": "https://github.com/symfony/mime/tree/v6.2.7" }, "funding": [ { @@ -7777,7 +7272,7 @@ "type": "tidelift" } ], - "time": "2023-01-10T18:53:53+00:00" + "time": "2023-02-24T10:42:00+00:00" }, { "name": "symfony/polyfill-ctype", @@ -8439,16 +7934,16 @@ }, { "name": "symfony/process", - "version": "v6.2.5", + "version": "v6.2.7", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "9ead139f63dfa38c4e4a9049cc64a8b2748c83b7" + "reference": "680e8a2ea6b3f87aecc07a6a65a203ae573d1902" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/9ead139f63dfa38c4e4a9049cc64a8b2748c83b7", - "reference": "9ead139f63dfa38c4e4a9049cc64a8b2748c83b7", + "url": "https://api.github.com/repos/symfony/process/zipball/680e8a2ea6b3f87aecc07a6a65a203ae573d1902", + "reference": "680e8a2ea6b3f87aecc07a6a65a203ae573d1902", "shasum": "" }, "require": { @@ -8480,7 +7975,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v6.2.5" + "source": "https://github.com/symfony/process/tree/v6.2.7" }, "funding": [ { @@ -8496,20 +7991,20 @@ "type": "tidelift" } ], - "time": "2023-01-01T08:38:09+00:00" + "time": "2023-02-24T10:42:00+00:00" }, { "name": "symfony/routing", - "version": "v6.2.5", + "version": "v6.2.7", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "589bd742d5d03c192c8521911680fe88f61712fe" + "reference": "fa643fa4c56de161f8bc8c0492a76a60140b50e4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/589bd742d5d03c192c8521911680fe88f61712fe", - "reference": "589bd742d5d03c192c8521911680fe88f61712fe", + "url": "https://api.github.com/repos/symfony/routing/zipball/fa643fa4c56de161f8bc8c0492a76a60140b50e4", + "reference": "fa643fa4c56de161f8bc8c0492a76a60140b50e4", "shasum": "" }, "require": { @@ -8568,7 +8063,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v6.2.5" + "source": "https://github.com/symfony/routing/tree/v6.2.7" }, "funding": [ { @@ -8584,20 +8079,20 @@ "type": "tidelift" } ], - "time": "2023-01-01T08:38:09+00:00" + "time": "2023-02-14T08:53:37+00:00" }, { "name": "symfony/service-contracts", - "version": "v3.2.0", + "version": "v3.2.1", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "aac98028c69df04ee77eb69b96b86ee51fbf4b75" + "reference": "a8c9cedf55f314f3a186041d19537303766df09a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/aac98028c69df04ee77eb69b96b86ee51fbf4b75", - "reference": "aac98028c69df04ee77eb69b96b86ee51fbf4b75", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/a8c9cedf55f314f3a186041d19537303766df09a", + "reference": "a8c9cedf55f314f3a186041d19537303766df09a", "shasum": "" }, "require": { @@ -8653,7 +8148,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.2.0" + "source": "https://github.com/symfony/service-contracts/tree/v3.2.1" }, "funding": [ { @@ -8669,20 +8164,20 @@ "type": "tidelift" } ], - "time": "2022-11-25T10:21:52+00:00" + "time": "2023-03-01T10:32:47+00:00" }, { "name": "symfony/string", - "version": "v6.2.5", + "version": "v6.2.7", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "b2dac0fa27b1ac0f9c0c0b23b43977f12308d0b0" + "reference": "67b8c1eec78296b85dc1c7d9743830160218993d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/b2dac0fa27b1ac0f9c0c0b23b43977f12308d0b0", - "reference": "b2dac0fa27b1ac0f9c0c0b23b43977f12308d0b0", + "url": "https://api.github.com/repos/symfony/string/zipball/67b8c1eec78296b85dc1c7d9743830160218993d", + "reference": "67b8c1eec78296b85dc1c7d9743830160218993d", "shasum": "" }, "require": { @@ -8739,7 +8234,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v6.2.5" + "source": "https://github.com/symfony/string/tree/v6.2.7" }, "funding": [ { @@ -8755,20 +8250,20 @@ "type": "tidelift" } ], - "time": "2023-01-01T08:38:09+00:00" + "time": "2023-02-24T10:42:00+00:00" }, { "name": "symfony/translation", - "version": "v6.2.5", + "version": "v6.2.7", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "60556925a703cfbc1581cde3b3f35b0bb0ea904c" + "reference": "90db1c6138c90527917671cd9ffa9e8b359e3a73" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/60556925a703cfbc1581cde3b3f35b0bb0ea904c", - "reference": "60556925a703cfbc1581cde3b3f35b0bb0ea904c", + "url": "https://api.github.com/repos/symfony/translation/zipball/90db1c6138c90527917671cd9ffa9e8b359e3a73", + "reference": "90db1c6138c90527917671cd9ffa9e8b359e3a73", "shasum": "" }, "require": { @@ -8837,7 +8332,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v6.2.5" + "source": "https://github.com/symfony/translation/tree/v6.2.7" }, "funding": [ { @@ -8853,20 +8348,20 @@ "type": "tidelift" } ], - "time": "2023-01-05T07:00:27+00:00" + "time": "2023-02-24T10:42:00+00:00" }, { "name": "symfony/translation-contracts", - "version": "v3.2.0", + "version": "v3.2.1", "source": { "type": "git", "url": "https://github.com/symfony/translation-contracts.git", - "reference": "68cce71402305a015f8c1589bfada1280dc64fe7" + "reference": "dfec258b9dd17a6b24420d464c43bffe347441c8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/68cce71402305a015f8c1589bfada1280dc64fe7", - "reference": "68cce71402305a015f8c1589bfada1280dc64fe7", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/dfec258b9dd17a6b24420d464c43bffe347441c8", + "reference": "dfec258b9dd17a6b24420d464c43bffe347441c8", "shasum": "" }, "require": { @@ -8918,7 +8413,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/translation-contracts/tree/v3.2.0" + "source": "https://github.com/symfony/translation-contracts/tree/v3.2.1" }, "funding": [ { @@ -8934,20 +8429,20 @@ "type": "tidelift" } ], - "time": "2022-11-25T10:21:52+00:00" + "time": "2023-03-01T10:32:47+00:00" }, { "name": "symfony/uid", - "version": "v6.2.5", + "version": "v6.2.7", "source": { "type": "git", "url": "https://github.com/symfony/uid.git", - "reference": "8ace895bded57d6496638c9b2d3b788e05b7395b" + "reference": "d30c72a63897cfa043e1de4d4dd2ffa9ecefcdc0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/uid/zipball/8ace895bded57d6496638c9b2d3b788e05b7395b", - "reference": "8ace895bded57d6496638c9b2d3b788e05b7395b", + "url": "https://api.github.com/repos/symfony/uid/zipball/d30c72a63897cfa043e1de4d4dd2ffa9ecefcdc0", + "reference": "d30c72a63897cfa043e1de4d4dd2ffa9ecefcdc0", "shasum": "" }, "require": { @@ -8992,7 +8487,7 @@ "uuid" ], "support": { - "source": "https://github.com/symfony/uid/tree/v6.2.5" + "source": "https://github.com/symfony/uid/tree/v6.2.7" }, "funding": [ { @@ -9008,20 +8503,20 @@ "type": "tidelift" } ], - "time": "2023-01-01T08:38:09+00:00" + "time": "2023-02-14T08:44:56+00:00" }, { "name": "symfony/var-dumper", - "version": "v6.2.5", + "version": "v6.2.7", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "44b7b81749fd20c1bdf4946c041050e22bc8da27" + "reference": "cf8d4ca1ddc1e3cc242375deb8fc23e54f5e2a1e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/44b7b81749fd20c1bdf4946c041050e22bc8da27", - "reference": "44b7b81749fd20c1bdf4946c041050e22bc8da27", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/cf8d4ca1ddc1e3cc242375deb8fc23e54f5e2a1e", + "reference": "cf8d4ca1ddc1e3cc242375deb8fc23e54f5e2a1e", "shasum": "" }, "require": { @@ -9080,7 +8575,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v6.2.5" + "source": "https://github.com/symfony/var-dumper/tree/v6.2.7" }, "funding": [ { @@ -9096,7 +8591,7 @@ "type": "tidelift" } ], - "time": "2023-01-20T17:45:48+00:00" + "time": "2023-02-24T10:42:00+00:00" }, { "name": "thecodingmachine/safe", @@ -9508,30 +9003,29 @@ }, { "name": "worksome/request-factories", - "version": "v2.5.0", + "version": "v2.6.0", "source": { "type": "git", "url": "https://github.com/worksome/request-factories.git", - "reference": "59016791b5fb9cf77eb777bfaeef7b47d21ebcdc" + "reference": "ea20f3a73c63334d543636aa7464583d62faa71b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/worksome/request-factories/zipball/59016791b5fb9cf77eb777bfaeef7b47d21ebcdc", - "reference": "59016791b5fb9cf77eb777bfaeef7b47d21ebcdc", + "url": "https://api.github.com/repos/worksome/request-factories/zipball/ea20f3a73c63334d543636aa7464583d62faa71b", + "reference": "ea20f3a73c63334d543636aa7464583d62faa71b", "shasum": "" }, "require": { - "illuminate/contracts": "^8.0 || ^9.0", - "php": "^8.0 || ^8.1" + "illuminate/contracts": "^8.0 || ^9.0 || ^10.0", + "php": "^8.0" }, "require-dev": { "nunomaduro/collision": "^5.10 || ^6.0", "nunomaduro/larastan": "^1.0 || ^2.0", - "orchestra/testbench": "^6.22 || ^7.0", + "orchestra/testbench": "^6.22 || ^7.0 || ^8.0", "pestphp/pest": "^1.21", - "pestphp/pest-plugin-laravel": "^1.1", - "worksome/coding-style": "0.17.0", - "worksome/pest-plugin-silence": "^0.1" + "pestphp/pest-plugin-laravel": "^1.4", + "worksome/coding-style": "0.17.0" }, "type": "library", "extra": { @@ -9570,7 +9064,7 @@ ], "support": { "issues": "https://github.com/worksome/request-factories/issues", - "source": "https://github.com/worksome/request-factories/tree/v2.5.0" + "source": "https://github.com/worksome/request-factories/tree/v2.6.0" }, "funding": [ { @@ -9578,7 +9072,7 @@ "type": "github" } ], - "time": "2022-09-15T11:48:41+00:00" + "time": "2023-03-01T11:17:26+00:00" }, { "name": "zoomyboy/laravel-nami", @@ -9630,6 +9124,36 @@ "relative": true } }, + { + "name": "zoomyboy/phone", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://git.zoomyboy.de/zoomyboy/phone", + "reference": "2e56f4d305905e44cf2681bd1b1ceea3bd4b545f" + }, + "require": { + "giggsey/libphonenumber-for-php": "^8.13" + }, + "type": "library", + "autoload": { + "psr-4": { + "Zoomyboy\\Phone\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Philipp Lang", + "email": "philipp@zoomyboy.de" + } + ], + "description": "Phone number formatting", + "time": "2023-03-02T23:22:08+00:00" + }, { "name": "zoomyboy/tex", "version": "dev-main", @@ -9785,16 +9309,16 @@ }, { "name": "laravel/sail", - "version": "v1.21.0", + "version": "v1.21.1", "source": { "type": "git", "url": "https://github.com/laravel/sail.git", - "reference": "758a914fc4da41f3f6ca5522c85902181b228bd1" + "reference": "fd8d04bc546457b504aa2b3c2d541840551f836f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/sail/zipball/758a914fc4da41f3f6ca5522c85902181b228bd1", - "reference": "758a914fc4da41f3f6ca5522c85902181b228bd1", + "url": "https://api.github.com/repos/laravel/sail/zipball/fd8d04bc546457b504aa2b3c2d541840551f836f", + "reference": "fd8d04bc546457b504aa2b3c2d541840551f836f", "shasum": "" }, "require": { @@ -9804,6 +9328,10 @@ "php": "^7.3|^8.0", "symfony/yaml": "^6.0" }, + "require-dev": { + "orchestra/testbench": "^6.0|^7.0|^8.0", + "phpstan/phpstan": "^1.10" + }, "bin": [ "bin/sail" ], @@ -9842,7 +9370,7 @@ "issues": "https://github.com/laravel/sail/issues", "source": "https://github.com/laravel/sail" }, - "time": "2023-02-16T19:16:27+00:00" + "time": "2023-03-01T23:07:57+00:00" }, { "name": "mockery/mockery", @@ -10793,16 +10321,16 @@ }, { "name": "phpunit/phpunit", - "version": "9.6.3", + "version": "9.6.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "e7b1615e3e887d6c719121c6d4a44b0ab9645555" + "reference": "9125ee085b6d95e78277dc07aa1f46f9e0607b8d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/e7b1615e3e887d6c719121c6d4a44b0ab9645555", - "reference": "e7b1615e3e887d6c719121c6d4a44b0ab9645555", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/9125ee085b6d95e78277dc07aa1f46f9e0607b8d", + "reference": "9125ee085b6d95e78277dc07aa1f46f9e0607b8d", "shasum": "" }, "require": { @@ -10875,7 +10403,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.3" + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.4" }, "funding": [ { @@ -10891,7 +10419,7 @@ "type": "tidelift" } ], - "time": "2023-02-04T13:37:15+00:00" + "time": "2023-02-27T13:06:37+00:00" }, { "name": "pimple/pimple", @@ -11926,16 +11454,16 @@ }, { "name": "symfony/stopwatch", - "version": "v6.2.5", + "version": "v6.2.7", "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", - "reference": "00b6ac156aacffc53487c930e0ab14587a6607f6" + "reference": "f3adc98c1061875dd2edcd45e5b04e63d0e29f8f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/00b6ac156aacffc53487c930e0ab14587a6607f6", - "reference": "00b6ac156aacffc53487c930e0ab14587a6607f6", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/f3adc98c1061875dd2edcd45e5b04e63d0e29f8f", + "reference": "f3adc98c1061875dd2edcd45e5b04e63d0e29f8f", "shasum": "" }, "require": { @@ -11968,7 +11496,7 @@ "description": "Provides a way to profile code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/stopwatch/tree/v6.2.5" + "source": "https://github.com/symfony/stopwatch/tree/v6.2.7" }, "funding": [ { @@ -11984,20 +11512,20 @@ "type": "tidelift" } ], - "time": "2023-01-01T08:36:55+00:00" + "time": "2023-02-14T08:44:56+00:00" }, { "name": "symfony/yaml", - "version": "v6.2.5", + "version": "v6.2.7", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "2bbfbdacc8a15574f8440c4838ce0d7bb6c86b19" + "reference": "e8e6a1d59e050525f27a1f530aa9703423cb7f57" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/2bbfbdacc8a15574f8440c4838ce0d7bb6c86b19", - "reference": "2bbfbdacc8a15574f8440c4838ce0d7bb6c86b19", + "url": "https://api.github.com/repos/symfony/yaml/zipball/e8e6a1d59e050525f27a1f530aa9703423cb7f57", + "reference": "e8e6a1d59e050525f27a1f530aa9703423cb7f57", "shasum": "" }, "require": { @@ -12042,7 +11570,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v6.2.5" + "source": "https://github.com/symfony/yaml/tree/v6.2.7" }, "funding": [ { @@ -12058,7 +11586,7 @@ "type": "tidelift" } ], - "time": "2023-01-10T18:53:53+00:00" + "time": "2023-02-16T09:57:23+00:00" }, { "name": "theseer/tokenizer", diff --git a/resources/lang/de/validation.php b/resources/lang/de/validation.php index dcde9b53..385db1eb 100644 --- a/resources/lang/de/validation.php +++ b/resources/lang/de/validation.php @@ -116,6 +116,7 @@ return [ 'uploaded' => ':attribute konnte nicht hochgeladen werden.', 'url' => ':attribute muss eine URL sein.', 'uuid' => ':attribute muss ein UUID sein.', + 'phone_number' => ':attribute ist keine valide Nummer.', /* |-------------------------------------------------------------------------- diff --git a/tests/Feature/Member/StoreTest.php b/tests/Feature/Member/StoreTest.php index 96e8911e..8deaf70e 100644 --- a/tests/Feature/Member/StoreTest.php +++ b/tests/Feature/Member/StoreTest.php @@ -55,7 +55,7 @@ class StoreTest extends TestCase 'address' => 'Bavert 50', 'bill_kind' => 'Post', 'birthday' => '2013-02-19', - 'children_phone' => '+49 123 44444', + 'children_phone' => '+49 176 8574112', 'country_id' => $country->id, 'email_parents' => 'osloot@aol.com', 'firstname' => 'Joe', @@ -65,13 +65,13 @@ class StoreTest extends TestCase 'letter_address' => null, 'location' => 'Solingen', 'main_phone' => '+49 212 2334322', - 'mobile_phone' => '+49 157 53180451', + 'mobile_phone' => '+49 176 3033053', 'nationality_id' => $nationality->id, 'region_id' => $region->id, 'send_newspaper' => '1', 'subscription_id' => $subscription->id, 'zip' => '42719', - 'fax' => '+49 666', + 'fax' => '+49 212 4732223', 'salutation' => 'Doktor', 'comment' => 'Lorem bla', ]); @@ -102,6 +102,44 @@ class StoreTest extends TestCase NamiPutMemberAction::spy()->shouldNotHaveReceived('handle'); } + public function testItUpdatesPhoneNumber(): void + { + $this->withoutExceptionHandling()->login()->loginNami(); + + $this->post('/member', $this->attributes([ + 'has_nami' => false, + 'main_phone' => '02103 4455129', + 'fax' => '02103 4455130', + 'children_phone' => '02103 4455130', + ])); + + $this->assertDatabaseHas('members', [ + 'main_phone' => '+49 2103 4455129', + 'fax' => '+49 2103 4455130', + 'children_phone' => '+49 2103 4455130', + ]); + } + + public function testItHasErrorWhenPhoneNumberIsInvalid(): void + { + $this->login()->loginNami(); + + $response = $this->post('/member', $this->attributes([ + 'has_nami' => false, + 'main_phone' => '1111111111111111', + 'mobile_phone' => '1111111111111111', + 'fax' => '1111111111111111', + 'children_phone' => '1111111111111111', + ])); + + $response->assertSessionHasErrors([ + 'main_phone' => 'Telefon (Eltern) ist keine valide Nummer.', + 'mobile_phone' => 'Handy (Eltern) ist keine valide Nummer.', + 'children_phone' => 'Telefon (Kind) ist keine valide Nummer.', + 'fax' => 'Fax ist keine valide Nummer.', + ]); + } + public function testItRequiresFields(): void { $this->login()->loginNami(); @@ -138,11 +176,11 @@ class StoreTest extends TestCase return [ 'address' => 'Bavert 50', 'birthday' => '2013-02-19', - 'children_phone' => '+49 123 44444', + 'children_phone' => '+49 176 8574112', 'efz' => '', 'email' => '', 'email_parents' => 'osloot@aol.com', - 'fax' => '+49 666', + 'fax' => '+49 212 4732223', 'firstname' => 'Joe', 'further_address' => '', 'has_nami' => true, @@ -153,7 +191,7 @@ class StoreTest extends TestCase 'letter_address' => '', 'location' => 'Solingen', 'main_phone' => '+49 212 2334322', - 'mobile_phone' => '+49 157 53180451', + 'mobile_phone' => '+49 176 3033053', 'more_ps_at' => '', 'multiply_more_pv' => false, 'multiply_pv' => false, diff --git a/tests/Feature/Member/UpdateTest.php b/tests/Feature/Member/UpdateTest.php index 08ca4dbf..854e8fb9 100644 --- a/tests/Feature/Member/UpdateTest.php +++ b/tests/Feature/Member/UpdateTest.php @@ -15,7 +15,6 @@ use App\Subactivity; use Illuminate\Foundation\Testing\DatabaseTransactions; use Illuminate\Support\Facades\Http; use Tests\TestCase; -use Zoomyboy\LaravelNami\Backend\FakeBackend; class UpdateTest extends TestCase { @@ -53,6 +52,27 @@ class UpdateTest extends TestCase $response->assertRedirect("/member/{$member->id}/edit?conflict=1"); } + public function testItUpdatesPhoneNumber(): void + { + $this->withoutExceptionHandling()->login()->loginNami(); + $member = $this->member(); + $this->fakeRequest(); + NamiPutMemberAction::allowToRun(); + + $this->patch("/member/{$member->id}", array_merge($member->getAttributes(), [ + 'main_phone' => '02103 4455129', + 'fax' => '02103 4455130', + 'children_phone' => '02103 4455130', + 'has_nami' => true, + ])); + + $this->assertDatabaseHas('members', [ + 'main_phone' => '+49 2103 4455129', + 'fax' => '+49 2103 4455130', + 'children_phone' => '+49 2103 4455130', + ]); + } + public function testItUpdatesContact(): void { $this->withoutExceptionHandling()->login()->loginNami();