<?php
namespace Customize\EventListener;
use Customize\Util;
use Doctrine\ORM\EntityManagerInterface;
use Eccube\Entity\Customer;
use Eccube\Entity\Order;
use Eccube\Entity\OrderItem;
use Eccube\Entity\Shipping;
use Eccube\Event\EccubeEvents;
use Eccube\Event\EventArgs;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
class EntryCompleteOutputCSVListener implements EventSubscriberInterface
{
public static function getSubscribedEvents()
{
return [
EccubeEvents::FRONT_ENTRY_INDEX_COMPLETE => 'entryCompleteOutputCSV'
];
}
/**
* ユーザ登録が完了したらCSVを出力する
* @param EventArgs $event
* @return void
*/
public function entryCompleteOutputCSV(EventArgs $event)
{
/** @var $Customer Customer */
$Customer = $event->getArgument("Customer");
$header = [
// 顧客情報
'id',
'sex_id',
'job_id',
'pref_id',
'name01',
'name02',
'kana01',
'kana02',
'company_name',
'postal_code',
'addr01',
'addr02',
'email',
'phone_number',
'birth',
'', // 身長データ
'', // 足の大きさデータ
'create_date',
'update_date'
];
$customerRow = [
// 顧客情報
$Customer->getId()??'', // 'id',
$Customer->getSex()??'', //'sex_id',
' ', //'job_id',
' ', //'pref_id',
$Customer->getName01()??'', //'name01',
$Customer->getName02()??'', //'name02',
$Customer->getKana01()??'', //'kana01',
$Customer->getKana02()??'', //'kana02',
$Customer->getCompanyName()??'', //'company_name',
$Customer->getPostalCode()??'', //'postal_code',
$Customer->getAddr01()??'', //'addr01',
$Customer->getAddr02()??'', //'addr02',
$Customer->getEmail()??'', //'email',
$Customer->getPhoneNumber()??'', //'phone_number',
'', //$Customer->getBirth()->format('Y-m-d H:i:s')??'', //'birth',
$Customer->getCreateDate()->format('Y-m-d H:i:s')??'', //'create_date',
$Customer->getUpdateDate()->format('Y-m-d H:i:s')??'', //'update_date'
];
$fp = fopen('var/customerfile.csv', 'w');
fputcsv($fp, $header);
$json = \GuzzleHttp\json_encode($customerRow);
log_info($json);
fputcsv($fp, $customerRow);
fclose($fp);
$output_json = [
// 顧客情報
'customer_id' => $Customer->getId()??'', //id
//'sex_id' => $Customer->getSex()??'', //sex_id
//'job_id'x3 => $Customer->getJob()->getId()??'', //job_id
'pref_id' => $Customer->getPref()->getId()??'', //pref_id
'name01' => $Customer->getName01()??'', //name01
'name02' => $Customer->getName02()??'', //name02
'kana01' => $Customer->getKana01()??'', //'kana01',
'kana02' => $Customer->getKana02()??'', //'kana02',
//'company_name' => $Customer->getCompanyName()??'', //'company_name'
'postal_code' => $Customer->getPostalCode()??'', //'postal_code'
'addr01' => $Customer->getAddr01()??'', //'addr01'
'addr02' => $Customer->getAddr02()??'', //'addr02'
'email' => $Customer->getEmail()??'', //'email',
'phone_number' => $Customer->getPhoneNumber()??'', //'phone_number'
//'birth' => $Customer->getBirth()->format('Y-m-d')??'',
//$Customer->getBirth()->format('Y-m-d H:i:s')??'',
//$Customer->getHeight(), // 身長データ
//$Customer->getLegSize(), // 足の大きさデータ
//'create_date' => $Customer->getCreateDate()->format('Y-m-d H:i:s')??'',
//'update_date' => $Customer->getUpdateDate()->format('Y-m-d H:i:s')??'',
];
// FileMakerにデータを送信する
$token = Util::getFMToken();
$postdata = [
'fieldData' => $output_json
];
Util::postFM($postdata, $token);
log_info(json_encode($postdata, JSON_UNESCAPED_UNICODE));
}
}