Files
kupshop/bundles/KupShop/SalesBundle/View/SalesListView.php
2025-08-02 16:30:27 +02:00

82 lines
1.9 KiB
PHP

<?php
declare(strict_types=1);
namespace KupShop\SalesBundle\View;
use KupShop\KupShopBundle\Context\UserContext;
use KupShop\KupShopBundle\Exception\RedirectException;
use KupShop\KupShopBundle\Util\Contexts;
use KupShop\KupShopBundle\Views\View;
use KupShop\SalesBundle\SaleList\SaleList;
use KupShop\SalesBundle\Util\SalesUtil;
use Query\Operator;
use Symfony\Component\HttpFoundation\Request;
class SalesListView extends View
{
protected string $smartyFallback = 'account';
protected string $entrypoint = 'account';
protected $template = 'sales/sales.tpl';
private int $page = 1;
public function __construct(
private readonly SaleList $saleList,
) {
}
public function setPage(int $page): self
{
$this->page = $page;
return $this;
}
public function getTitle()
{
return translate('sales', 'sales');
}
public function getResponse(?Request $request = null)
{
if (!$this->getUserId()) {
throw new RedirectException(path('kupshop_user_login_login'));
}
return parent::getResponse($request);
}
public function getBodyVariables()
{
$vars = parent::getBodyVariables();
$pager = $vars['pager'] = $this->createPager();
$saleList = clone $this->saleList;
$saleList->orderBy('s.date_created', 'DESC');
$saleList->andSpec(Operator::equals(['s.id_user' => $this->getUserId()]));
$saleList->andSpec($pager->getSpec());
$vars['sales'] = SalesUtil::wrapSales($saleList->getSales($totalSales)->toArray());
$pager->setTotal($totalSales);
return $vars;
}
private function getUserId(): ?int
{
return Contexts::get(UserContext::class)->getActiveId();
}
private function createPager(): \Pager
{
$pager = new \Pager();
$pager->setOnPage(20);
$pager->setPageNumber($this->page);
return $pager;
}
}