Add bills and piggy banks

This commit is contained in:
James Cole 2021-03-06 15:00:34 +01:00
parent 84263b9ee8
commit b43ea5c108
No known key found for this signature in database
GPG Key ID: B5669F9493CDE38D
3 changed files with 48 additions and 0 deletions

View File

@ -25,6 +25,7 @@ namespace FireflyIII\Api\V1\Controllers\Models\ObjectGroup;
use FireflyIII\Api\V1\Controllers\Controller; use FireflyIII\Api\V1\Controllers\Controller;
use FireflyIII\Models\ObjectGroup; use FireflyIII\Models\ObjectGroup;
use FireflyIII\Repositories\ObjectGroup\ObjectGroupRepositoryInterface; use FireflyIII\Repositories\ObjectGroup\ObjectGroupRepositoryInterface;
use FireflyIII\Transformers\BillTransformer;
use FireflyIII\Transformers\PiggyBankTransformer; use FireflyIII\Transformers\PiggyBankTransformer;
use FireflyIII\User; use FireflyIII\User;
use Illuminate\Http\JsonResponse; use Illuminate\Http\JsonResponse;
@ -96,4 +97,36 @@ class ListController extends Controller
return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE); return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE);
} }
/**
* List all bills
*
* @param ObjectGroup $objectGroup
*
* @return JsonResponse
* @codeCoverageIgnore
*/
public function bills(ObjectGroup $objectGroup): JsonResponse
{
$manager = $this->getManager();
$pageSize = (int)app('preferences')->getForUser(auth()->user(), 'listPageSize', 50)->data;
// get list of piggy banks. Count it and split it.
$collection = $this->repository->getBills($objectGroup);
$count = $collection->count();
$bills = $collection->slice(($this->parameters->get('page') - 1) * $pageSize, $pageSize);
// make paginator:
$paginator = new LengthAwarePaginator($bills, $count, $pageSize, $this->parameters->get('page'));
$paginator->setPath(route('api.v1.currencies.bills', [$objectGroup->id]) . $this->buildParams());
/** @var BillTransformer $transformer */
$transformer = app(BillTransformer::class);
$transformer->setParameters($this->parameters);
$resource = new FractalCollection($bills, $transformer, 'bills');
$resource->setPaginator(new IlluminatePaginatorAdapter($paginator));
return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE);
}
} }

View File

@ -163,6 +163,14 @@ class ObjectGroupRepository implements ObjectGroupRepositoryInterface
return $objectGroup->piggyBanks; return $objectGroup->piggyBanks;
} }
/**
* @inheritDoc
*/
public function getBills(ObjectGroup $objectGroup): Collection
{
return $objectGroup->bills;
}
/** /**
* @inheritDoc * @inheritDoc
*/ */

View File

@ -61,6 +61,13 @@ interface ObjectGroupRepositoryInterface
*/ */
public function getPiggyBanks(ObjectGroup $objectGroup): Collection; public function getPiggyBanks(ObjectGroup $objectGroup): Collection;
/**
* @param ObjectGroup $objectGroup
*
* @return Collection
*/
public function getBills(ObjectGroup $objectGroup): Collection;
/** /**
* Sort * Sort
*/ */