Files
firefly-iii/app/JsonApi/V2/Accounts/AccountResource.php

86 lines
3.0 KiB
PHP
Raw Normal View History

2024-05-10 09:42:09 +02:00
<?php
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.
*
* @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-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.
*
* @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
];
}
}