diff --git a/app/Api/V1/Requests/TagStoreRequest.php b/app/Api/V1/Requests/TagStoreRequest.php index 6fbd31f085..02fa2fd7b3 100644 --- a/app/Api/V1/Requests/TagStoreRequest.php +++ b/app/Api/V1/Requests/TagStoreRequest.php @@ -24,6 +24,7 @@ declare(strict_types=1); namespace FireflyIII\Api\V1\Requests; use FireflyIII\Models\Location; +use FireflyIII\Support\Request\AppendsLocationData; use FireflyIII\Support\Request\ChecksLogin; use FireflyIII\Support\Request\ConvertsDataTypes; use Illuminate\Foundation\Http\FormRequest; @@ -35,8 +36,7 @@ use Illuminate\Foundation\Http\FormRequest; */ class TagStoreRequest extends FormRequest { - use ConvertsDataTypes, ChecksLogin; - + use ConvertsDataTypes, ChecksLogin, AppendsLocationData; /** @@ -46,20 +46,15 @@ class TagStoreRequest extends FormRequest */ public function getAll(): array { - $hasLocation = false; - if ($this->has('longitude') && $this->has('latitude') && $this->has('zoom_level')) { - $hasLocation = true; - } - - return [ + $data = [ 'tag' => $this->string('tag'), 'date' => $this->date('date'), 'description' => $this->string('description'), - 'has_location' => $hasLocation, - 'longitude' => $this->string('longitude'), - 'latitude' => $this->string('latitude'), - 'zoom_level' => $this->integer('zoom_level'), + 'has_location' => true, ]; + $data = $this->appendLocationData($data, null); + + return $data; } /** diff --git a/app/Api/V1/Requests/TagUpdateRequest.php b/app/Api/V1/Requests/TagUpdateRequest.php index 177f5e16e2..d247837d18 100644 --- a/app/Api/V1/Requests/TagUpdateRequest.php +++ b/app/Api/V1/Requests/TagUpdateRequest.php @@ -25,6 +25,7 @@ declare(strict_types=1); namespace FireflyIII\Api\V1\Requests; use FireflyIII\Models\Location; +use FireflyIII\Support\Request\AppendsLocationData; use FireflyIII\Support\Request\ChecksLogin; use FireflyIII\Support\Request\ConvertsDataTypes; use Illuminate\Foundation\Http\FormRequest; @@ -36,8 +37,7 @@ use Illuminate\Foundation\Http\FormRequest; */ class TagUpdateRequest extends FormRequest { - use ConvertsDataTypes, ChecksLogin; - + use ConvertsDataTypes, ChecksLogin, AppendsLocationData; /** @@ -47,20 +47,15 @@ class TagUpdateRequest extends FormRequest */ public function getAll(): array { - $updateLocation = false; - if ($this->has('longitude') && $this->has('latitude') && $this->has('zoom_level')) { - $updateLocation = true; - } - - return [ + $data = [ 'tag' => $this->string('tag'), 'date' => $this->date('date'), 'description' => $this->string('description'), - 'has_location' => $updateLocation, - 'longitude' => '' === $this->string('longitude') ? null : $this->string('longitude'), - 'latitude' => '' === $this->string('latitude') ? null : $this->string('latitude'), - 'zoom_level' => '' === $this->string('zoom_level') ? null : $this->integer('zoom_level'), + 'has_location' => true, // pretend location is present. ]; + $data = $this->appendLocationData($data, null); + + return $data; } /** diff --git a/app/Services/Internal/Update/AccountUpdateService.php b/app/Services/Internal/Update/AccountUpdateService.php index b26e7ebb5f..8b345a2790 100644 --- a/app/Services/Internal/Update/AccountUpdateService.php +++ b/app/Services/Internal/Update/AccountUpdateService.php @@ -108,9 +108,6 @@ class AccountUpdateService */ private function updateLocation(Account $account, array $data): void { $updateLocation = $data['update_location'] ?? false; - - - // location must be updated? if (true === $updateLocation) { // if all set to NULL, delete diff --git a/app/Support/Request/AppendsLocationData.php b/app/Support/Request/AppendsLocationData.php index c6e19a5a23..34ef3c87eb 100644 --- a/app/Support/Request/AppendsLocationData.php +++ b/app/Support/Request/AppendsLocationData.php @@ -87,7 +87,7 @@ trait AppendsLocationData $latitudeKey = $this->getLocationKey($prefix, 'latitude'); $zoomLevelKey = $this->getLocationKey($prefix, 'zoom_level'); $hasLocationKey = $this->getLocationKey($prefix, 'has_location'); - $hasLocation = $this->boolean($hasLocationKey); + $hasLocation = $this->boolean($hasLocationKey) || true === ($data['has_location'] ?? false); // for a POST (store), all fields must be present and accounted for: if ( @@ -115,6 +115,10 @@ trait AppendsLocationData } if (false === $hasLocation || null === $data['longitude'] || null === $data['latitude'] || null === $data['zoom_level']) { Log::debug('One of the fields is NULL or hasLocation is false, wont save.'); + Log::debug(sprintf('Longitude : %s', var_export($data['longitude'], true))); + Log::debug(sprintf('Latitude : %s', var_export($data['latitude'], true))); + Log::debug(sprintf('Zoom level : %s', var_export($data['zoom_level'], true))); + Log::debug(sprintf('Has location: %s', var_export($hasLocation, true))); $data['store_location'] = false; $data['update_location'] = true; // update is always true, but the values are null: $data['longitude'] = null;