/** * Returns a paginated list of invoices. * * @ApiDoc( * resource=true, * output={"class"="Sonata\Component\Invoice\InvoiceInterface", "groups"="sonata_api_read"} * ) * * @QueryParam(name="page", requirements="\d+", default="1", description="Page for invoices list pagination (1-indexed)") * @QueryParam(name="count", requirements="\d+", default="10", description="Number of invoices by page") * @QueryParam(name="orderBy", array=true, requirements="ASC|DESC", nullable=true, strict=true, description="Query invoices invoice by clause (key is field, value is direction") * @QueryParam(name="status", requirements="\d+", nullable=true, strict=true, description="Filter on invoice statuses") * * @View(serializerGroups="sonata_api_read", serializerEnableMaxDepthChecks=true) * * @param ParamFetcherInterface $paramFetcher * * @return InvoiceInterface[] */ public function getInvoicesAction(ParamFetcherInterface $paramFetcher) { $supportedFilters = array('status' => ""); $page = $paramFetcher->get('page') - 1; $count = $paramFetcher->get('count'); $orderBy = $paramFetcher->get('orderBy'); $filters = array_intersect_key($paramFetcher->all(), $supportedFilters); foreach ($filters as $key => $value) { if (null === $value) { unset($filters[$key]); } } return $this->invoiceManager->findBy($filters, $orderBy, $count, $page); }