Files
2026-09-15 10:26:34 +08:00

126 lines
5.2 KiB
PHP

<?php
namespace Stemcell\Checkout\Block\Cart\Item;
use Magento\Catalog\Model\Product\Configuration\Item\ItemResolverInterface;
use Magento\Customer\Model\Session;
use Magento\Framework\Data\Collection;
use Magento\Framework\Data\CollectionFactory;
use Magento\Framework\Exception\LocalizedException;
use Magento\Framework\Pricing\PriceCurrencyInterface;
use Magento\Framework\View\Element\Message\InterpretationStrategyInterface;
use Stemcell\Customer\Model\Lab;
use Stemcell\Customer\Model\LabFactory;
use Stemcell\Customer\Model\LabRepository;
use Stemcell\Customer\Model\Salesperson;
use Stemcell\Customer\Model\ResourceModel;
use Stemcell\Customer\Model\SalespersonRepository;
class Renderer extends \Magento\Checkout\Block\Cart\Item\Renderer
{
protected ResourceModel\Lab\Collection $labCollection;
protected ResourceModel\Salesperson\Collection $salespersonCollection;
protected Session $customerSession;
protected CollectionFactory $baseCollectionFactory;
protected ?Lab $lab = null;
/**
* @param \Magento\Framework\View\Element\Template\Context $context
* @param \Magento\Catalog\Helper\Product\Configuration $productConfig
* @param \Magento\Checkout\Model\Session $checkoutSession
* @param \Magento\Catalog\Block\Product\ImageBuilder $imageBuilder
* @param \Magento\Framework\Url\Helper\Data $urlHelper
* @param \Magento\Framework\Message\ManagerInterface $messageManager
* @param PriceCurrencyInterface $priceCurrency
* @param \Magento\Framework\Module\Manager $moduleManager
* @param InterpretationStrategyInterface $messageInterpretationStrategy
* @param ResourceModel\Lab\Collection $labCollection
* @param ResourceModel\Salesperson\Collection $salespersonCollection
* @param array $data
* @param ItemResolverInterface|null $itemResolver
*/
public function __construct(
\Magento\Framework\View\Element\Template\Context $context,
\Magento\Catalog\Helper\Product\Configuration $productConfig,
\Magento\Checkout\Model\Session $checkoutSession,
\Magento\Catalog\Block\Product\ImageBuilder $imageBuilder,
\Magento\Framework\Url\Helper\Data $urlHelper,
\Magento\Framework\Message\ManagerInterface $messageManager,
PriceCurrencyInterface $priceCurrency,
\Magento\Framework\Module\Manager $moduleManager,
InterpretationStrategyInterface $messageInterpretationStrategy,
ResourceModel\Lab\Collection $labCollection,
ResourceModel\Salesperson\Collection $salespersonCollection,
CollectionFactory $baseCollectionFactory,
Session $customerSession,
array $data = [],
ItemResolverInterface $itemResolver = null
)
{
parent::__construct(
$context,
$productConfig,
$checkoutSession,
$imageBuilder,
$urlHelper,
$messageManager,
$priceCurrency,
$moduleManager,
$messageInterpretationStrategy,
$data,
$itemResolver
);
$this->customerSession = $customerSession;
$this->baseCollectionFactory = $baseCollectionFactory;
$this->labCollection = $labCollection;
$this->salespersonCollection = $salespersonCollection;
}
public function getLabs(): Collection|ResourceModel\Lab\Collection
{
if ($this->customerSession->getCustomerId()) {
$this->labCollection->addFieldToFilter('main_table.customer_id', $this->customerSession->getCustomerId())
->getSelect()
->joinLeft('salesperson', 'salesperson.salesperson_id=main_table.salesperson_id', ['salesperson'=>'salesperson.name']);
return $this->labCollection;
}
return $this->baseCollectionFactory->create()->setItemObjectClass(Lab::class);
}
/**
* @return \Stemcell\Customer\Api\Data\LabInterface|Lab
*/
public function getLab()
{
try {
if ($labId = $this->_item->getData('lab_id')) {
/* @var $labRepository LabRepository */
$labRepository = \Magento\Framework\App\ObjectManager::getInstance()->get(LabRepository::class);
/* @var $salespersonRepository SalespersonRepository */
$salespersonRepository = \Magento\Framework\App\ObjectManager::getInstance()->get(SalespersonRepository::class);
$this->lab = $labRepository->get($labId);
$salesperson = $salespersonRepository->get($this->lab->getSalespersonId());
$this->lab->setData('salesperson', $salesperson->getName());
return $this->lab;
}
} catch (LocalizedException $e) {
}
/* @var $labFactory LabFactory */
$labFactory = \Magento\Framework\App\ObjectManager::getInstance()->get(LabFactory::class);
return $labFactory->create();
}
public function getSalesperson() {
if ($this->customerSession->getCustomerId()) {
$this->salespersonCollection->addFieldToFilter('customer_id', $this->customerSession->getCustomerId());
return $this->salespersonCollection;
}
return $this->baseCollectionFactory->create()->setItemObjectClass(Salesperson::class);
}
}