<?php
namespace Plugin\PiaAdminLog;
use Doctrine\ORM\EntityManagerInterface;
use Eccube\Event\EccubeEvents;
use Eccube\Event\EventArgs;
use Plugin\PiaAdminLog\Entity\PiaAdminLog;
use Plugin\PiaAdminLog\Repository\PiaAdminLogRepository;
use Plugin\CustomerRank42\Repository\CustomerPriceRepository;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
class Event implements EventSubscriberInterface {
/**
* @var EntityManagerInterface
*/
protected $entityManager;
protected $PiaAdminLogRepository;
protected $CustomerPriceRepository;
public function __construct(
EntityManagerInterface $entityManager,
PiaAdminLogRepository $PiaAdminLogRepository,
CustomerPriceRepository $CustomerPriceRepository) {
$this->entityManager = $entityManager;
$this->PiaAdminLogRepository = $PiaAdminLogRepository;
$this->CustomerPriceRepository = $CustomerPriceRepository;
}
/**
* @return array
*/
public static function getSubscribedEvents() {
return [
EccubeEvents::ADMIN_PRODUCT_EDIT_COMPLETE => 'onAdminProductEditComplete',
];
}
/**
* 商品更新ログの登録
* @param EventArgs $event
*/
public function onAdminProductEditComplete(EventArgs $event) {
$htPrice = $this->CustomerPriceRepository->getHashPrice();
$datetime = new \DateTime();
$Product = $event->getArgument('Product');
$product_id = $Product->getId();
$product_name = $Product->getName();
$product_price = $Product->getPrice02IncTaxMax();
$product_price_member = empty($htPrice[$product_id]) ? "" : $htPrice[$product_id];
$product_stock = $Product->getStockMax();
$product_status = $Product->getStatus()->getName();
$type = "編集";
if(empty($product_id)){
$type = "登録";
}elseif($product_status == "廃止"){
$type = "廃止";
}
$Creator = $Product->getCreator();
$member_id = $Creator->getId();
$member_name = $Creator->getName();
$repository = $this->PiaAdminLogRepository;
$row = new PiaAdminLog();
$row->setProductId($product_id);
$row->setProductName($product_name);
$row->setProductPrice($product_price);
$row->setProductPriceMenber($product_price_member);
$row->setProductStock($product_stock);
$row->setProductStatus($product_status);
$row->setType($type);
$row->setMemberId($member_id);
$row->setMemberName($member_name);
$row->setRegistDate($datetime);
$row->setCreateDate($datetime);
$repository->save($row);
}
}