82 lines
1.9 KiB
PHP
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;
|
|
}
|
|
}
|