<?php
namespace Customize\EventSubscriber\Admin;
use Customize\Repository\UserRepository;
use Eccube\Entity\Customer;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Eccube\Event\{
EccubeEvents,
EventArgs
};
class OrderEditCustomerSearchSubscriber implements EventSubscriberInterface
{
/**
* @var UserRepository
*/
private $userRepository;
/**
* @param UserRepository $userRepository
*/
public function __construct(UserRepository $userRepository)
{
$this->userRepository = $userRepository;
}
/**
* @return array<string, array<int, string|int>>
*/
public static function getSubscribedEvents(): array
{
return [
EccubeEvents::ADMIN_ORDER_EDIT_SEARCH_CUSTOMER_BY_ID_COMPLETE => ['onAdminOrderEditSearchCustomerByIdComplete', 1],
];
}
public function onAdminOrderEditSearchCustomerByIdComplete(EventArgs $event): void
{
$data = $event->getArgument('data');
/** @var Customer $Customer */
$Customer = $event->getArgument('Customer');
// APIからデータを取得
$user = $this->userRepository->get($Customer->getUserId());
$data['user_id'] = $user->getUserId();
$data['kana01'] = $user->getKana01();
$data['kana02'] = $user->getKana02();
$data['postal_code'] = $user->getPostalCode();
$data['pref'] = is_null($user->getPref()) ? null : $user->getPref()->getId();
$data['addr01'] = $user->getAddr01();
$data['addr02'] = $user->getAddr02();
$data['email'] = $user->getEmail();
$data['phone_number'] = $user->getPhoneNumber();
$data['company_name'] = $user->getCompanyName();
$data['company_phone_number'] = $user->getCompanyPhoneNumber();
$data['birth'] = $user->getBirth();
$data['religions'] = $user->getReligions();
$data['religion_other'] = $user->getReligionOther();
$data['buddhist_sects'] = $user->getBuddhistSects();
$data['buddhist_sect_other'] = $user->getBuddhistSectOther();
$data['emergency_contact'] = [
'name01' => $user->getEmergencyContact() ? $user->getEmergencyContact()->getName01() : null,
'name02' => $user->getEmergencyContact() ? $user->getEmergencyContact()->getName02() : null,
'kana01' => $user->getEmergencyContact() ? $user->getEmergencyContact()->getKana01() : null,
'kana02' => $user->getEmergencyContact() ? $user->getEmergencyContact()->getKana02() : null,
'phone_number' => $user->getEmergencyContact() ? $user->getEmergencyContact()->getPhoneNumber() : null,
'postal_code' => $user->getEmergencyContact() ? $user->getEmergencyContact()->getPostalCode() : null,
'pref' => $user->getEmergencyContact() && $user->getEmergencyContact()->getPref() ? $user->getEmergencyContact()->getPref()->getId() : null,
'addr01' => $user->getEmergencyContact() ? $user->getEmergencyContact()->getAddr01() : null,
'addr02' => $user->getEmergencyContact() ? $user->getEmergencyContact()->getAddr02() : null,
'relation' => $user->getEmergencyContact() && $user->getEmergencyContact()->getRelationship() ? $user->getEmergencyContact()->getRelationship()->getId() : null,
'relation_other' => $user->getEmergencyContact() ? $user->getEmergencyContact()->getRelationshipOther() : null,
];
// データを更新
$event->setArgument('data', $data);
}
}