2024-05-10 09:42:09 +02:00
|
|
|
<?php
|
|
|
|
|
2024-07-29 05:06:54 +02:00
|
|
|
declare(strict_types=1);
|
|
|
|
|
2024-07-26 12:52:54 +02:00
|
|
|
namespace FireflyIII\JsonApi\V2\Accounts;
|
2024-05-10 09:42:09 +02:00
|
|
|
|
|
|
|
use FireflyIII\Models\Account;
|
|
|
|
use Illuminate\Http\Request;
|
2024-07-28 07:02:04 +02:00
|
|
|
use Illuminate\Support\Facades\Log;
|
2024-05-10 09:42:09 +02:00
|
|
|
use LaravelJsonApi\Core\Resources\JsonApiResource;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @property Account $resource
|
|
|
|
*/
|
|
|
|
class AccountResource extends JsonApiResource
|
|
|
|
{
|
2024-07-27 15:42:43 +02:00
|
|
|
/**
|
|
|
|
* Get the resource id.
|
|
|
|
*/
|
|
|
|
public function id(): string
|
|
|
|
{
|
2024-08-03 07:28:56 +02:00
|
|
|
return (string) $this->resource->id;
|
2024-07-27 15:42:43 +02:00
|
|
|
}
|
|
|
|
|
2024-05-10 09:42:09 +02:00
|
|
|
/**
|
|
|
|
* Get the resource's attributes.
|
|
|
|
*
|
2024-07-29 05:06:54 +02:00
|
|
|
* @param null|Request $request
|
2024-05-10 09:42:09 +02:00
|
|
|
*/
|
|
|
|
public function attributes($request): iterable
|
|
|
|
{
|
2024-08-03 07:28:56 +02:00
|
|
|
//Log::debug(__METHOD__);
|
2024-07-29 05:06:54 +02:00
|
|
|
|
2024-05-10 09:42:09 +02:00
|
|
|
return [
|
2024-07-28 12:23:45 +02:00
|
|
|
'created_at' => $this->resource->created_at,
|
|
|
|
'updated_at' => $this->resource->updated_at,
|
|
|
|
'name' => $this->resource->name,
|
|
|
|
'active' => $this->resource->active,
|
|
|
|
'order' => $this->resource->order,
|
2024-08-01 20:45:42 +02:00
|
|
|
'iban' => $this->resource->iban,
|
2024-07-28 12:23:45 +02:00
|
|
|
'type' => $this->resource->account_type_string,
|
|
|
|
'account_role' => $this->resource->account_role,
|
2024-07-28 07:47:54 +02:00
|
|
|
'account_number' => '' === $this->resource->account_number ? null : $this->resource->account_number,
|
|
|
|
|
2024-07-31 20:19:17 +02:00
|
|
|
// currency (if the account has a currency setting, otherwise NULL).
|
2024-07-28 07:47:54 +02:00
|
|
|
'currency_id' => $this->resource->currency_id,
|
|
|
|
'currency_name' => $this->resource->currency_name,
|
|
|
|
'currency_code' => $this->resource->currency_code,
|
|
|
|
'currency_symbol' => $this->resource->currency_symbol,
|
|
|
|
'currency_decimal_places' => $this->resource->currency_decimal_places,
|
2024-07-31 20:19:17 +02:00
|
|
|
'is_multi_currency' => '1' === $this->resource->is_multi_currency,
|
|
|
|
|
|
|
|
// balances
|
|
|
|
'balance' => $this->resource->balance,
|
|
|
|
'native_balance' => $this->resource->native_balance,
|
2024-07-28 07:47:54 +02:00
|
|
|
|
|
|
|
// liability things
|
2024-07-28 12:23:45 +02:00
|
|
|
'liability_direction' => $this->resource->liability_direction,
|
|
|
|
'interest' => $this->resource->interest,
|
|
|
|
'interest_period' => $this->resource->interest_period,
|
2024-07-31 20:19:17 +02:00
|
|
|
'current_debt' => $this->resource->current_debt, // TODO may be removed in the future.
|
|
|
|
|
|
|
|
// other things
|
2024-08-01 20:45:42 +02:00
|
|
|
'last_activity' => $this->resource->last_activity,
|
2024-07-31 20:19:17 +02:00
|
|
|
|
2024-07-28 07:47:54 +02:00
|
|
|
|
2024-07-31 20:19:17 +02:00
|
|
|
// object group
|
2024-08-01 20:45:42 +02:00
|
|
|
'object_group_id' => $this->resource->object_group_id,
|
|
|
|
'object_group_title' => $this->resource->object_group_title,
|
|
|
|
'object_group_order' => $this->resource->object_group_order,
|
2024-05-10 09:42:09 +02:00
|
|
|
];
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Get the resource's relationships.
|
|
|
|
*
|
2024-07-29 05:06:54 +02:00
|
|
|
* @param null|Request $request
|
2024-05-10 09:42:09 +02:00
|
|
|
*/
|
|
|
|
public function relationships($request): iterable
|
|
|
|
{
|
|
|
|
return [
|
2024-05-10 12:51:02 +02:00
|
|
|
$this->relation('user')->withData($this->resource->user),
|
2024-05-10 09:42:09 +02:00
|
|
|
];
|
|
|
|
}
|
|
|
|
}
|