* @copyright Since 2007 PrestaShop SA and Contributors * @license https://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0) */ namespace PrestaShopBundle\Controller\Api; use PrestaShopBundle\Api\QueryStockMovementParamsCollection; use PrestaShopBundle\Entity\Repository\StockMovementRepository; use PrestaShopBundle\Exception\InvalidPaginationParamsException; use PrestaShopBundle\Security\Annotation\AdminSecurity; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpKernel\Exception\BadRequestHttpException; class StockMovementController extends ApiController { /** * @var StockMovementRepository */ public $stockMovementRepository; /** * @var QueryStockMovementParamsCollection */ public $queryParams; /** * @AdminSecurity("is_granted(['read'], request.get('_legacy_controller'))") * * @param Request $request * * @return JsonResponse */ public function listMovementsAction(Request $request) { try { $queryParamsCollection = $this->queryParams->fromRequest($request); } catch (InvalidPaginationParamsException $exception) { return $this->handleException(new BadRequestHttpException($exception->getMessage(), $exception)); } $stockMovement = $this->stockMovementRepository->getData($queryParamsCollection); $totalPages = $this->stockMovementRepository->countPages($queryParamsCollection); return $this->jsonResponse($stockMovement, $request, $queryParamsCollection, 200, ['Total-Pages' => $totalPages]); } /** * @AdminSecurity("is_granted(['read'], request.get('_legacy_controller'))") * * @param Request $request * * @return JsonResponse */ public function listMovementsEmployeesAction(Request $request) { return $this->jsonResponse($this->stockMovementRepository->getEmployees(), $request); } /** * @AdminSecurity("is_granted(['read'], request.get('_legacy_controller'))") * * @param Request $request * * @return JsonResponse */ public function listMovementsTypesAction(Request $request) { $grouped = (bool) $request->get('grouped'); return $this->jsonResponse($this->stockMovementRepository->getTypes($grouped), $request); } }