diff --git a/app/Api/V1/Requests/AccountStoreRequest.php b/app/Api/V1/Requests/AccountStoreRequest.php index 74c3bc5f96..39b4e44039 100644 --- a/app/Api/V1/Requests/AccountStoreRequest.php +++ b/app/Api/V1/Requests/AccountStoreRequest.php @@ -24,6 +24,7 @@ declare(strict_types=1); namespace FireflyIII\Api\V1\Requests; +use FireflyIII\Models\Location; use FireflyIII\Rules\IsBoolean; /** @@ -77,10 +78,8 @@ class AccountStoreRequest extends Request 'interest' => 'required_if:type,liability|between:0,100|numeric', 'interest_period' => 'required_if:type,liability|in:daily,monthly,yearly', 'notes' => 'min:0|max:65536', - 'latitude' => 'numeric|min:-90|max:90|nullable|required_with:longitude', - 'longitude' => 'numeric|min:-180|max:180|nullable|required_with:latitude', - 'zoom_level' => 'numeric|min:0|max:80|nullable|required_with:latitude', ]; + $rules = Location::requestRules($rules); return $rules; } diff --git a/app/Api/V1/Requests/AccountUpdateRequest.php b/app/Api/V1/Requests/AccountUpdateRequest.php index 2d7a782c7e..26cc659f77 100644 --- a/app/Api/V1/Requests/AccountUpdateRequest.php +++ b/app/Api/V1/Requests/AccountUpdateRequest.php @@ -24,6 +24,7 @@ declare(strict_types=1); namespace FireflyIII\Api\V1\Requests; +use FireflyIII\Models\Location; use FireflyIII\Rules\IsBoolean; /** @@ -134,10 +135,8 @@ class AccountUpdateRequest extends Request 'interest' => 'required_if:type,liability|between:0,100|numeric', 'interest_period' => 'required_if:type,liability|in:daily,monthly,yearly', 'notes' => 'min:0|max:65536', - 'latitude' => 'numeric|min:-90|max:90|nullable|required_with:longitude', - 'longitude' => 'numeric|min:-180|max:180|nullable|required_with:latitude', - 'zoom_level' => 'numeric|min:0|max:80|nullable|required_with:latitude', ]; + $rules = Location::requestRules($rules); return $rules; } diff --git a/app/Api/V1/Requests/TagStoreRequest.php b/app/Api/V1/Requests/TagStoreRequest.php index 82411df7bb..cc3fa7bc86 100644 --- a/app/Api/V1/Requests/TagStoreRequest.php +++ b/app/Api/V1/Requests/TagStoreRequest.php @@ -23,6 +23,8 @@ declare(strict_types=1); namespace FireflyIII\Api\V1\Requests; +use FireflyIII\Models\Location; + /** * Class TagStoreRequest * @@ -73,13 +75,12 @@ class TagStoreRequest extends Request */ public function rules(): array { - return [ + $rules = [ 'tag' => 'required|min:1|uniqueObjectForUser:tags,tag', 'description' => 'min:1|nullable', 'date' => 'date|nullable', - 'latitude' => 'numeric|min:-90|max:90|nullable|required_with:longitude', - 'longitude' => 'numeric|min:-180|max:180|nullable|required_with:latitude', - 'zoom_level' => 'numeric|min:0|max:80|nullable', ]; + + return Location::requestRules($rules); } } diff --git a/app/Api/V1/Requests/TagUpdateRequest.php b/app/Api/V1/Requests/TagUpdateRequest.php index 2e3829e19b..0ae5066ae7 100644 --- a/app/Api/V1/Requests/TagUpdateRequest.php +++ b/app/Api/V1/Requests/TagUpdateRequest.php @@ -24,6 +24,8 @@ declare(strict_types=1); namespace FireflyIII\Api\V1\Requests; +use FireflyIII\Models\Location; + /** * Class TagUpdateRequest * @@ -76,13 +78,12 @@ class TagUpdateRequest extends Request { $tag = $this->route()->parameter('tagOrId'); - return [ + $rules = [ 'tag' => 'required|min:1|uniqueObjectForUser:tags,tag,' . $tag->id, 'description' => 'min:1|nullable', 'date' => 'date|nullable', - 'latitude' => 'numeric|min:-90|max:90|nullable|required_with:longitude', - 'longitude' => 'numeric|min:-180|max:180|nullable|required_with:latitude', - 'zoom_level' => 'numeric|min:0|max:80|nullable', ]; + + return Location::requestRules($rules); } } diff --git a/app/Http/Requests/AccountFormRequest.php b/app/Http/Requests/AccountFormRequest.php index a5df985ee0..365fe14e25 100644 --- a/app/Http/Requests/AccountFormRequest.php +++ b/app/Http/Requests/AccountFormRequest.php @@ -23,6 +23,7 @@ declare(strict_types=1); namespace FireflyIII\Http\Requests; use FireflyIII\Models\Account; +use FireflyIII\Models\Location; use FireflyIII\Rules\UniqueIban; /** @@ -114,10 +115,8 @@ class AccountFormRequest extends Request 'amount_currency_id_virtual_balance' => 'exists:transaction_currencies,id', 'what' => 'in:' . $types, 'interest_period' => 'in:daily,monthly,yearly', - 'latitude' => 'numeric|min:-90|max:90|nullable|required_with:longitude', - 'longitude' => 'numeric|min:-180|max:180|nullable|required_with:latitude', - 'zoom_level' => 'numeric|min:0|max:80|nullable', ]; + $rules = Location::requestRules($rules); if ('liabilities' === $this->get('objectType')) { $rules['opening_balance'] = ['numeric', 'required','max:1000000000']; diff --git a/app/Http/Requests/TagFormRequest.php b/app/Http/Requests/TagFormRequest.php index ed40f2ff89..7bcfd0e9d5 100644 --- a/app/Http/Requests/TagFormRequest.php +++ b/app/Http/Requests/TagFormRequest.php @@ -22,6 +22,7 @@ declare(strict_types=1); namespace FireflyIII\Http\Requests; +use FireflyIII\Models\Location; use FireflyIII\Models\Tag; /** @@ -86,14 +87,12 @@ class TagFormRequest extends Request $tagRule = 'required|min:1|uniqueObjectForUser:tags,tag,' . $tag->id; } - return [ + $rules= [ 'tag' => $tagRule, 'id' => $idRule, 'description' => 'min:1|nullable', 'date' => 'date|nullable', - 'latitude' => 'numeric|min:-90|max:90|nullable', - 'longitude' => 'numeric|min:-180|max:180|nullable', - 'zoom_level' => 'numeric|min:0|max:80|nullable', ]; + return Location::requestRules($rules); } } diff --git a/app/Models/Location.php b/app/Models/Location.php index 34dffc2da0..8d9602351e 100644 --- a/app/Models/Location.php +++ b/app/Models/Location.php @@ -70,4 +70,20 @@ class Location extends Model return $this->morphTo(); } + /** + * Add rules for locations. + * + * @param array $rules + * + * @return array + */ + public static function requestRules(array $rules): array + { + $rules['latitude'] = 'numeric|min:-90|max:90|nullable|required_with:longitude'; + $rules['longitude'] = 'numeric|min:-180|max:180|nullable|required_with:latitude'; + $rules['zoom_level'] = 'numeric|min:0|max:80|nullable|required_with:latitude'; + + return $rules; + } + }