<?php
namespace Plugin\PiaDocumentRequest\Controller;
use Eccube\Controller\AbstractController;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
use Plugin\PiaDocumentRequest\Form\Type\PiaDocumentRequestType;
use Eccube\Repository\PageRepository;
use Plugin\PiaDocumentRequest\Service\MailService;
/**
* Class IndexController.
*/
class IndexController extends AbstractController {
/**
* @var MailService
*/
protected $mailService;
/**
* @var PageRepository
*/
private $pageRepository;
protected $PiaDocumentRequestType;
/**
* ContactController constructor.
*
* @param MailService $mailService
* @param PageRepository $pageRepository
*/
public function __construct(
MailService $mailService, PageRepository $pageRepository, PiaDocumentRequestType $PiaDocumentRequestType) {
$this->mailService = $mailService;
$this->pageRepository = $pageRepository;
$this->PiaDocumentRequestType = $PiaDocumentRequestType;
}
/**
* 商品更新ログ一覧.
*
* @Route("/document_request", name="document_request", methods={"GET", "POST"})
* @Route("/document_request", name="document_request_confirm", methods={"GET", "POST"})
* @Template("@PiaDocumentRequest/default/document_request/index.twig")
*/
public function index(Request $request) {
$builder = $this->formFactory->createBuilder(PiaDocumentRequestType::class);
if ($this->isGranted('ROLE_USER')) {
$user = $this->getUser();
$builder->setData(
[
'name01' => $user->getName01(),
'name02' => $user->getName02(),
'kana01' => $user->getKana01(),
'kana02' => $user->getKana02(),
'postal_code' => $user->getPostalCode(),
'pref' => $user->getPref(),
'addr01' => $user->getAddr01(),
'addr02' => $user->getAddr02(),
'phone_number' => $user->getPhoneNumber(),
'email' => $user->getEmail(),
]
);
}
$form = $builder->getForm();
$form->handleRequest($request);
$htAbout = array_flip($this->PiaDocumentRequestType->getHashAbout());
$htPurpose = array_flip($this->PiaDocumentRequestType->getHashPurpose());
$htCoin = array_flip($this->PiaDocumentRequestType->getHashCoin());
$htSeminar = array_flip($this->PiaDocumentRequestType->getHashSeminar());
$htShowRoom = array_flip($this->PiaDocumentRequestType->getHashShowRoom());
$htGold = array_flip($this->PiaDocumentRequestType->getHashGold());
$htAntique = array_flip($this->PiaDocumentRequestType->getHashAntique());
$htModern = array_flip($this->PiaDocumentRequestType->getHashModern());
if ($form->isSubmitted()) {
$mode = $request->get('mode');
switch ($request->get('mode')) {
case 'confirm':
if ($form->isValid()) {
$data = $form->getData();
$params = $_POST["pia_document_request"];
$name01 = empty($data["name01"]) ? "" : $data["name01"];
$name02 = empty($data["name02"]) ? "" : $data["name02"];
$params["name_nm"] = trim($name01 . " " . $name02);
$kana01 = empty($data["kana01"]) ? "" : $data["kana01"];
$kana02 = empty($data["kana02"]) ? "" : $data["kana02"];
$params["kana_nm"] = trim($kana01 . " " . $kana02);
$params["pref"] = empty($data["pref"]) ? "" : $data["pref"]->getName();
$params["addr01"] = empty($data["addr01"]) ? "" : $data["addr01"];
$params["addr02"] = empty($data["addr02"]) ? "" : $data["addr02"];
$params["sex_nm"] = empty($data["sex"]) ? "" : $data["sex"]->getName();
$params["how_about_nm"] = empty($params["how_about"]) ? "" : $this->_makeDispCheckBox($params["how_about"], $htAbout);
$params["purpose_nm"] = empty($params["purpose"]) ? "" : $this->_makeDispCheckBox($params["purpose"], $htPurpose);
$params["coin_nm"] = empty($params["coin"]) ? "" : $this->_makeDispCheckBox($params["coin"], $htCoin);
$params["seminar_nm"] = empty($params["seminar"]) ? "" : (empty($htSeminar[$params["seminar"]]) ? "" : $htSeminar[$params["seminar"]]);
$params["show_room_nm"] = empty($params["show_room"]) ? "" : (empty($htShowRoom[$params["show_room"]]) ? "" : $htShowRoom[$params["show_room"]]);
$params["gold_nm"] = empty($params["gold"]) ? "" : (empty($htGold[$params["gold"]]) ? "" : $htGold[$params["gold"]]);
$params["antique_nm"] = empty($params["antique"]) ? "" : (empty($htAntique[$params["antique"]]) ? "" : $htAntique[$params["antique"]]);
$params["modern_nm"] = empty($params["modern"]) ? "" : (empty($htModern[$params["modern"]]) ? "" : $htModern[$params["modern"]]);
$_SESSION["params"] = serialize($params);
return $this->render('@PiaDocumentRequest/default/document_request/confirm.twig', [
'form' => $form->createView(),
'params' => $params,
'Page' => $this->pageRepository->getPageByRoute('document_request_confirm'),
]);
}
break;
case 'complete':
$params = empty($_SESSION["params"]) ? array() : unserialize($_SESSION["params"]);
$data = $form->getData();
$this->_saveSpreadSheet($params);
$this->mailService->sendDocumentRequestMail($params);
return $this->redirect($this->generateUrl('document_request_complete'));
}
}
return [
'form' => $form->createView(),
];
}
/**
* スプレッドシートに保存
* @param array $data
*/
private function _saveSpreadSheet($data) {
$key_file = __DIR__ . "/../../../Library/vendor/coinpalace-form-appraisal-d0023a2a5631.json";
$path = __DIR__ . "/../../../Library";
require_once $path . '/vendor/autoload.php';
define('SCOPES', implode(' ', array(\Google_Service_Sheets::SPREADSHEETS)));
$client = new \Google_Client();
$client->setScopes(SCOPES);
$client->setAuthConfig($key_file);
$sheet = new \Google_Service_Sheets($client);
$spreadsheet_id = '1qBc9w5NkeiwOo814TyX1cUJ8RJnQgWzGYTPfi6Np94E';
$value = array();
$value[] = date("Y-m-d H:i:s");
$value[] = empty($data["name_nm"]) ? "" : $data["name_nm"];
$value[] = empty($data["postal_code"]) ? "" : $data["postal_code"];
$value[] = empty($data["pref"]) ? "" : $data["pref"];
$addr01 = empty($data["addr01"]) ? "" : $data["addr01"];
$addr02 = empty($data["addr02"]) ? "" : $data["addr02"];
$value[] = $addr01 . $addr02;
$value[] = empty($data["phone_number"]) ? "" : $data["phone_number"];
$value[] = empty($data["email"]) ? "" : $data["email"];
$value[] = empty($data["sex_nm"]) ? "" : $data["sex_nm"];
$value[] = empty($data["how_about_nm"]) ? "" : $data["how_about_nm"];
$value[] = empty($data["purpose_nm"]) ? "" : $data["purpose_nm"];
$value[] = empty($data["coin_nm"]) ? "" : $data["coin_nm"];
$value[] = empty($data["seminar_nm"]) ? "" : $data["seminar_nm"];
$value[] = empty($data["show_room_nm"]) ? "" : $data["show_room_nm"];
$value[] = empty($data["gold_nm"]) ? "" : $data["gold_nm"];
$value[] = empty($data["antique_nm"]) ? "" : $data["antique_nm"];
$value[] = empty($data["modern_nm"]) ? "" : $data["modern_nm"];
$value[] = empty($data["contents"]) ? "" : $data["contents"];
$values = [$value];
$body = new \Google_Service_Sheets_ValueRange([
'values' => $values,
]);
$response = $sheet->spreadsheets_values->append(
$spreadsheet_id, '資料請求', $body, ["valueInputOption" => 'USER_ENTERED']
);
}
private function _makeDispCheckBox($rows, $hash) {
$ret = array();
if (is_array($rows) and count($rows) > 0) {
$tmp = array();
foreach ($rows as $k) {
if (empty($hash[$k])) {
continue;
}
$tmp[] = $hash[$k];
}
$ret = implode("、", $tmp);
}
return $ret;
}
/**
* お問い合わせ完了画面.
*
* @Route("/document_request/complete", name="document_request_complete", methods={"GET"})
* @Template("@PiaDocumentRequest/default/document_request/complete.twig")
*/
public function complete() {
return [];
}
}