app/Plugin/PiaDocumentRequest/Controller/IndexController.php line 49

Open in your IDE?
  1. <?php
  2. namespace Plugin\PiaDocumentRequest\Controller;
  3. use Eccube\Controller\AbstractController;
  4. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
  5. use Symfony\Component\HttpFoundation\Request;
  6. use Symfony\Component\Routing\Annotation\Route;
  7. use Plugin\PiaDocumentRequest\Form\Type\PiaDocumentRequestType;
  8. use Eccube\Repository\PageRepository;
  9. use Plugin\PiaDocumentRequest\Service\MailService;
  10. /**
  11.  * Class IndexController.
  12.  */
  13. class IndexController extends AbstractController {
  14.   /**
  15.    * @var MailService
  16.    */
  17.   protected $mailService;
  18.   /**
  19.    * @var PageRepository
  20.    */
  21.   private $pageRepository;
  22.   protected $PiaDocumentRequestType;
  23.   /**
  24.    * ContactController constructor.
  25.    *
  26.    * @param MailService $mailService
  27.    * @param PageRepository $pageRepository
  28.    */
  29.   public function __construct(
  30.   MailService $mailServicePageRepository $pageRepositoryPiaDocumentRequestType $PiaDocumentRequestType) {
  31.     $this->mailService $mailService;
  32.     $this->pageRepository $pageRepository;
  33.     $this->PiaDocumentRequestType $PiaDocumentRequestType;
  34.   }
  35.   /**
  36.    * 商品更新ログ一覧.
  37.    *
  38.    * @Route("/document_request", name="document_request", methods={"GET", "POST"})
  39.    * @Route("/document_request", name="document_request_confirm", methods={"GET", "POST"})
  40.    * @Template("@PiaDocumentRequest/default/document_request/index.twig")
  41.    */
  42.   public function index(Request $request) {
  43.     $builder $this->formFactory->createBuilder(PiaDocumentRequestType::class);
  44.     if ($this->isGranted('ROLE_USER')) {
  45.       $user $this->getUser();
  46.       $builder->setData(
  47.         [
  48.           'name01' => $user->getName01(),
  49.           'name02' => $user->getName02(),
  50.           'kana01' => $user->getKana01(),
  51.           'kana02' => $user->getKana02(),
  52.           'postal_code' => $user->getPostalCode(),
  53.           'pref' => $user->getPref(),
  54.           'addr01' => $user->getAddr01(),
  55.           'addr02' => $user->getAddr02(),
  56.           'phone_number' => $user->getPhoneNumber(),
  57.           'email' => $user->getEmail(),
  58.         ]
  59.       );
  60.     }
  61.     $form $builder->getForm();
  62.     $form->handleRequest($request);
  63.     $htAbout array_flip($this->PiaDocumentRequestType->getHashAbout());
  64.     $htPurpose array_flip($this->PiaDocumentRequestType->getHashPurpose());
  65.     $htCoin array_flip($this->PiaDocumentRequestType->getHashCoin());
  66.     $htSeminar array_flip($this->PiaDocumentRequestType->getHashSeminar());
  67.     $htShowRoom array_flip($this->PiaDocumentRequestType->getHashShowRoom());
  68.     $htGold array_flip($this->PiaDocumentRequestType->getHashGold());
  69.     $htAntique array_flip($this->PiaDocumentRequestType->getHashAntique());
  70.     $htModern array_flip($this->PiaDocumentRequestType->getHashModern());
  71.     if ($form->isSubmitted()) {
  72.         $mode $request->get('mode');
  73.       switch ($request->get('mode')) {
  74.         case 'confirm':
  75.           if ($form->isValid()) {
  76.             $data $form->getData();
  77.             $params $_POST["pia_document_request"];
  78.             $name01 = empty($data["name01"]) ? "" $data["name01"];
  79.             $name02 = empty($data["name02"]) ? "" $data["name02"];
  80.             $params["name_nm"] = trim($name01 " " $name02);
  81.             $kana01 = empty($data["kana01"]) ? "" $data["kana01"];
  82.             $kana02 = empty($data["kana02"]) ? "" $data["kana02"];
  83.             $params["kana_nm"] = trim($kana01 " " $kana02);
  84.             $params["pref"] = empty($data["pref"]) ? "" $data["pref"]->getName();
  85.             $params["addr01"] = empty($data["addr01"]) ? "" $data["addr01"];
  86.             $params["addr02"] = empty($data["addr02"]) ? "" $data["addr02"];
  87.             $params["sex_nm"] = empty($data["sex"]) ? "" $data["sex"]->getName();
  88.             $params["how_about_nm"] = empty($params["how_about"]) ? "" $this->_makeDispCheckBox($params["how_about"], $htAbout);
  89.             $params["purpose_nm"] = empty($params["purpose"]) ? "" $this->_makeDispCheckBox($params["purpose"], $htPurpose);
  90.             $params["coin_nm"] = empty($params["coin"]) ? "" $this->_makeDispCheckBox($params["coin"], $htCoin);
  91.             $params["seminar_nm"] = empty($params["seminar"]) ? "" : (empty($htSeminar[$params["seminar"]]) ? "" $htSeminar[$params["seminar"]]);
  92.             $params["show_room_nm"] = empty($params["show_room"]) ? "" : (empty($htShowRoom[$params["show_room"]]) ? "" $htShowRoom[$params["show_room"]]);
  93.             $params["gold_nm"] = empty($params["gold"]) ? "" : (empty($htGold[$params["gold"]]) ? "" $htGold[$params["gold"]]);
  94.             $params["antique_nm"] = empty($params["antique"]) ? "" : (empty($htAntique[$params["antique"]]) ? "" $htAntique[$params["antique"]]);
  95.             $params["modern_nm"] = empty($params["modern"]) ? "" : (empty($htModern[$params["modern"]]) ? "" $htModern[$params["modern"]]);
  96.             $_SESSION["params"] = serialize($params);
  97.             return $this->render('@PiaDocumentRequest/default/document_request/confirm.twig', [
  98.                 'form' => $form->createView(),
  99.                 'params' => $params,
  100.                 'Page' => $this->pageRepository->getPageByRoute('document_request_confirm'),
  101.             ]);
  102.           }
  103.           break;
  104.         case 'complete':
  105.           $params = empty($_SESSION["params"]) ? array() : unserialize($_SESSION["params"]);
  106.           $data $form->getData();
  107.           $this->_saveSpreadSheet($params);
  108.           $this->mailService->sendDocumentRequestMail($params);
  109.           return $this->redirect($this->generateUrl('document_request_complete'));
  110.       }
  111.     }
  112.     return [
  113.       'form' => $form->createView(),
  114.     ];
  115.   }
  116.   /**
  117.    * スプレッドシートに保存
  118.    * @param array $data
  119.    */
  120.   private function _saveSpreadSheet($data) {
  121.     $key_file __DIR__ "/../../../Library/vendor/coinpalace-form-appraisal-d0023a2a5631.json";
  122.     $path __DIR__ "/../../../Library";
  123.     require_once $path '/vendor/autoload.php';
  124.     define('SCOPES'implode(' ', array(\Google_Service_Sheets::SPREADSHEETS)));
  125.     $client = new \Google_Client();
  126.     $client->setScopes(SCOPES);
  127.     $client->setAuthConfig($key_file);
  128.     $sheet = new \Google_Service_Sheets($client);
  129.     $spreadsheet_id '1qBc9w5NkeiwOo814TyX1cUJ8RJnQgWzGYTPfi6Np94E';
  130.     $value = array();
  131.     $value[] = date("Y-m-d H:i:s");
  132.     $value[] = empty($data["name_nm"]) ? "" $data["name_nm"];
  133.     $value[] = empty($data["postal_code"]) ? "" $data["postal_code"];
  134.     $value[] = empty($data["pref"]) ? "" $data["pref"];
  135.     $addr01 = empty($data["addr01"]) ? "" $data["addr01"];
  136.     $addr02 = empty($data["addr02"]) ? "" $data["addr02"];
  137.     $value[] = $addr01 $addr02;
  138.     $value[] = empty($data["phone_number"]) ? "" $data["phone_number"];
  139.     $value[] = empty($data["email"]) ? "" $data["email"];
  140.     $value[] = empty($data["sex_nm"]) ? "" $data["sex_nm"];
  141.     $value[] = empty($data["how_about_nm"]) ? "" $data["how_about_nm"];
  142.     $value[] = empty($data["purpose_nm"]) ? "" $data["purpose_nm"];
  143.     $value[] = empty($data["coin_nm"]) ? "" $data["coin_nm"];
  144.     $value[] = empty($data["seminar_nm"]) ? "" $data["seminar_nm"];
  145.     $value[] = empty($data["show_room_nm"]) ? "" $data["show_room_nm"];
  146.     $value[] = empty($data["gold_nm"]) ? "" $data["gold_nm"];
  147.     $value[] = empty($data["antique_nm"]) ? "" $data["antique_nm"];
  148.     $value[] = empty($data["modern_nm"]) ? "" $data["modern_nm"];
  149.     $value[] = empty($data["contents"]) ? "" $data["contents"];
  150.     $values = [$value];
  151.     $body = new \Google_Service_Sheets_ValueRange([
  152.       'values' => $values,
  153.     ]);
  154.     $response $sheet->spreadsheets_values->append(
  155.       $spreadsheet_id'資料請求'$body, ["valueInputOption" => 'USER_ENTERED']
  156.     );
  157.   }
  158.   private function _makeDispCheckBox($rows$hash) {
  159.     $ret = array();
  160.     if (is_array($rows) and count($rows) > 0) {
  161.       $tmp = array();
  162.       foreach ($rows as $k) {
  163.         if (empty($hash[$k])) {
  164.           continue;
  165.         }
  166.         $tmp[] = $hash[$k];
  167.       }
  168.       $ret implode("、"$tmp);
  169.     }
  170.     return $ret;
  171.   }
  172.   /**
  173.    * お問い合わせ完了画面.
  174.    *
  175.    * @Route("/document_request/complete", name="document_request_complete", methods={"GET"})
  176.    * @Template("@PiaDocumentRequest/default/document_request/complete.twig")
  177.    */
  178.   public function complete() {
  179.     return [];
  180.   }
  181. }