Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- namespace Lojas\Controller;
- use Lojas\Model\Loja;
- use Lojas\Model\Aplicativo;
- use Symfony\Component\HttpFoundation\JsonResponse;
- class ResourceController extends \Mix\Controller\Controller
- {
- protected $loja = null;
- protected $lojaUrl = null;
- public function init()
- {
- parent::init();
- $this->lojaUrl = $this->getRequest()->attributes->get('loja');
- $this->loja = Loja::findLojaByUrl($this->lojaUrl);
- }
- public function before($action, $loja, $application)
- {
- $lojaId = $this->loja->id();
- $request = $this->getRequest();
- $accessToken = $request->query->get('access_token');
- $appSecret = $request->query->get('app_secret');
- $isValidAccessToken = Aplicativo::isValidAccessToken($accessToken, $lojaId, $appSecret);
- if (!$isValidAccessToken) {
- // ERROR RESPONSE
- return new JsonResponse([
- 'error' => 'invalid_request',
- 'error_description' => 'Requisição não é válida'
- ], 400);
- }
- }
- public function pedidosAction()
- {
- $lojaId = $this->loja->id();
- $request = $this->getRequest();
- $page = intval($request->query->get('page', 1));
- $perPage = intval($request->query->get('per_page', 10));
- $connection = \Mix\Model\Model::getConnection();
- $query = $connection->createQueryBuilder();
- $query->select('lp.*');
- $query->from('lojas_pedidos', 'lp');
- $query->where('lp.loja_id=:loja_id');
- $query->leftJoin('lp', 'lojas_pedidos_produtos', 'lpp', 'lpp.pedido_id=lp.id');
- $query->setParameter('loja_id', $lojaId);
- $query->orderBy('lp.data_hora_pedido', 'DESC');
- $count = clone $query;
- $count->resetQueryPart('select');
- $count->resetQueryPart('groupBy');
- $count->select('COUNT(DISTINCT lp.id) AS total');
- $count = $count->execute()->fetch();
- $total = intval($count['total']);
- $offset = ($page - 1) * $perPage;
- $query->setFirstResult($offset);
- $query->setMaxResults($perPage);
- $data = $query->execute()->fetchAll();
- $totalPages = ceil($total / $perPage);
- return new JsonResponse([
- 'page' => $page,
- 'per_page' => $perPage,
- 'total_pages' => $totalPages,
- 'total_items' => $total,
- 'items' => $data
- ]);
- }
- public function pedidosItemsAction($pedidoId)
- {
- $lojaId = $this->loja->id();
- $connection = \Mix\Model\Model::getConnection();
- $query = $connection->createQueryBuilder();
- $query->select('lpp.*');
- $query->from('lojas_pedidos_produtos', 'lpp');
- $query->where('lpp.pedido_id=:pedido_id');
- $query->join('lpp', 'lojas_pedidos', 'lp', 'lp.id=lpp.pedido_id AND lp.loja_id=:loja_id');
- $query->setParameter('pedido_id', $pedidoId);
- $query->setParameter('loja_id', $lojaId);
- $query->orderBy('lpp.id', 'DESC');
- $data = $query->execute()->fetchAll();
- return new JsonResponse([
- 'items' => $data
- ]);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement