Move Location validation rules to single method.

This commit is contained in:
James Cole
2019-12-31 14:01:53 +01:00
parent 96aa42b513
commit c193284471
7 changed files with 35 additions and 21 deletions

View File

@@ -24,6 +24,7 @@ declare(strict_types=1);
namespace FireflyIII\Api\V1\Requests; namespace FireflyIII\Api\V1\Requests;
use FireflyIII\Models\Location;
use FireflyIII\Rules\IsBoolean; use FireflyIII\Rules\IsBoolean;
/** /**
@@ -77,10 +78,8 @@ class AccountStoreRequest extends Request
'interest' => 'required_if:type,liability|between:0,100|numeric', 'interest' => 'required_if:type,liability|between:0,100|numeric',
'interest_period' => 'required_if:type,liability|in:daily,monthly,yearly', 'interest_period' => 'required_if:type,liability|in:daily,monthly,yearly',
'notes' => 'min:0|max:65536', '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; return $rules;
} }

View File

@@ -24,6 +24,7 @@ declare(strict_types=1);
namespace FireflyIII\Api\V1\Requests; namespace FireflyIII\Api\V1\Requests;
use FireflyIII\Models\Location;
use FireflyIII\Rules\IsBoolean; use FireflyIII\Rules\IsBoolean;
/** /**
@@ -134,10 +135,8 @@ class AccountUpdateRequest extends Request
'interest' => 'required_if:type,liability|between:0,100|numeric', 'interest' => 'required_if:type,liability|between:0,100|numeric',
'interest_period' => 'required_if:type,liability|in:daily,monthly,yearly', 'interest_period' => 'required_if:type,liability|in:daily,monthly,yearly',
'notes' => 'min:0|max:65536', '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; return $rules;
} }

View File

@@ -23,6 +23,8 @@ declare(strict_types=1);
namespace FireflyIII\Api\V1\Requests; namespace FireflyIII\Api\V1\Requests;
use FireflyIII\Models\Location;
/** /**
* Class TagStoreRequest * Class TagStoreRequest
* *
@@ -73,13 +75,12 @@ class TagStoreRequest extends Request
*/ */
public function rules(): array public function rules(): array
{ {
return [ $rules = [
'tag' => 'required|min:1|uniqueObjectForUser:tags,tag', 'tag' => 'required|min:1|uniqueObjectForUser:tags,tag',
'description' => 'min:1|nullable', 'description' => 'min:1|nullable',
'date' => 'date|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);
} }
} }

View File

@@ -24,6 +24,8 @@ declare(strict_types=1);
namespace FireflyIII\Api\V1\Requests; namespace FireflyIII\Api\V1\Requests;
use FireflyIII\Models\Location;
/** /**
* Class TagUpdateRequest * Class TagUpdateRequest
* *
@@ -76,13 +78,12 @@ class TagUpdateRequest extends Request
{ {
$tag = $this->route()->parameter('tagOrId'); $tag = $this->route()->parameter('tagOrId');
return [ $rules = [
'tag' => 'required|min:1|uniqueObjectForUser:tags,tag,' . $tag->id, 'tag' => 'required|min:1|uniqueObjectForUser:tags,tag,' . $tag->id,
'description' => 'min:1|nullable', 'description' => 'min:1|nullable',
'date' => 'date|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);
} }
} }

View File

@@ -23,6 +23,7 @@ declare(strict_types=1);
namespace FireflyIII\Http\Requests; namespace FireflyIII\Http\Requests;
use FireflyIII\Models\Account; use FireflyIII\Models\Account;
use FireflyIII\Models\Location;
use FireflyIII\Rules\UniqueIban; use FireflyIII\Rules\UniqueIban;
/** /**
@@ -114,10 +115,8 @@ class AccountFormRequest extends Request
'amount_currency_id_virtual_balance' => 'exists:transaction_currencies,id', 'amount_currency_id_virtual_balance' => 'exists:transaction_currencies,id',
'what' => 'in:' . $types, 'what' => 'in:' . $types,
'interest_period' => 'in:daily,monthly,yearly', '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')) { if ('liabilities' === $this->get('objectType')) {
$rules['opening_balance'] = ['numeric', 'required','max:1000000000']; $rules['opening_balance'] = ['numeric', 'required','max:1000000000'];

View File

@@ -22,6 +22,7 @@ declare(strict_types=1);
namespace FireflyIII\Http\Requests; namespace FireflyIII\Http\Requests;
use FireflyIII\Models\Location;
use FireflyIII\Models\Tag; use FireflyIII\Models\Tag;
/** /**
@@ -86,14 +87,12 @@ class TagFormRequest extends Request
$tagRule = 'required|min:1|uniqueObjectForUser:tags,tag,' . $tag->id; $tagRule = 'required|min:1|uniqueObjectForUser:tags,tag,' . $tag->id;
} }
return [ $rules= [
'tag' => $tagRule, 'tag' => $tagRule,
'id' => $idRule, 'id' => $idRule,
'description' => 'min:1|nullable', 'description' => 'min:1|nullable',
'date' => 'date|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);
} }
} }

View File

@@ -70,4 +70,20 @@ class Location extends Model
return $this->morphTo(); 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;
}
} }