Filter by promo type
This commit is contained in:
@@ -11,17 +11,22 @@ final class PromosController extends BaseController
|
|||||||
#[Route('/promos/{promo?}', name: 'app_promos')]
|
#[Route('/promos/{promo?}', name: 'app_promos')]
|
||||||
public function __invoke(?string $promo): Response
|
public function __invoke(?string $promo): Response
|
||||||
{
|
{
|
||||||
if($this->cache->getItem('list_promos')->isHit()) {
|
if ($this->cache->getItem('list_promos')->isHit()) {
|
||||||
return $this->render('productList.html.twig', ['listType' => 'promos'.$promo]);
|
return $this->render('productList.html.twig', ['listType' => 'promos' . $promo]);
|
||||||
}
|
}
|
||||||
|
|
||||||
$products = Product::when(is_null($promo), fn($q) => $q->whereRaw('priceCurrent < productStandardPrice'))
|
$products = Product::when(is_null($promo), fn($q) => $q->whereRaw('priceCurrent < productStandardPrice'))
|
||||||
->orderByDesc('starred')
|
->orderByDesc('starred')
|
||||||
->orderByDesc('created_by')
|
->orderByDesc('created_by')
|
||||||
->with(['currentPrice', 'lowestPrice'])
|
->with(['currentPrice', 'lowestPrice'])
|
||||||
->when(!is_null($promo), fn ($q) => $q->whereRaw("json_extract(promotions, '$.slug') LIKE ?", $promo))
|
->when(!is_null($promo), fn($q) => $q->whereRaw("json_extract(promotions, '$.slug') LIKE ?", $promo))
|
||||||
->get();
|
->get();
|
||||||
|
|
||||||
return $this->render('productList.html.twig', ['products' => $products, 'listType' => 'promos'.$promo]);
|
|
||||||
|
$promos = Product::select($this->database->getConnection()->raw("distinct json_extract(promotions, '$.slug') as slug, json_extract(promotions, '$.tag') as tag"))
|
||||||
|
->whereRaw("json_extract(promotions, '$.tag') is not null")
|
||||||
|
->get();
|
||||||
|
|
||||||
|
return $this->render('productList.html.twig', ['products' => $products, 'listType' => 'promos' . $promo, 'promos' => $promos->toArray()]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,6 +7,12 @@
|
|||||||
{{ renderCategoryTree(categoryTree, category) | raw }}
|
{{ renderCategoryTree(categoryTree, category) | raw }}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
{% if listType starts with 'promos' %}
|
||||||
|
{% for promo in promos %}
|
||||||
|
<a href="{{ path('app_promos', {'promo': promo.slug}) }}"><span class="badge bg-info">PROMO: {{ promo.tag }}</span></a>
|
||||||
|
{% endfor %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
|
||||||
{% if (listType starts with 'category_' and category == null) or not (listType starts with 'category_') or (listType starts with 'category_' and category is not null) %}
|
{% if (listType starts with 'category_' and category == null) or not (listType starts with 'category_') or (listType starts with 'category_' and category is not null) %}
|
||||||
<div class="table-responsive">
|
<div class="table-responsive">
|
||||||
|
|||||||
Reference in New Issue
Block a user