<?php
namespace Plugin\SoftbankPayment42\Controller\Admin;
use Eccube\Controller\AbstractController;
use Plugin\SoftbankPayment42\Form\Type\Admin\SbpsConfigType;
use Plugin\SoftbankPayment42\Repository\ConfigRepository;
use Plugin\SoftbankPayment42\Service\WebCvsApiService;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
class ConfigController extends AbstractController
{
/**
* @var ConfigRepository
*/
private $configRepository;
private $webCvsApiService;
public function __construct(
ConfigRepository $configRepository,
WebCvsApiService $webCvsApiService
)
{
$this->configRepository = $configRepository;
$this->webCvsApiService = $webCvsApiService;
}
/**
* @Route("/%eccube_admin_route%/softbank_payment42/config", name="softbank_payment42_admin_config")
* @Template("@SoftbankPayment42/admin/config.twig")
*
* @param Request $request
* @return array|RedirectResponse
*/
public function index(Request $request)
{
$Config = $this->configRepository->get();
$webCvsApiConfig = $this->webCvsApiService->getWebCvsApiConfig();
$form = $this->createForm(SbpsConfigType::class, [
'config' => $Config,
'webcvsapi' => $webCvsApiConfig
]);
$form['webcvsapi']['enable_webcvstype']->setData($webCvsApiConfig->getEnableWebcvstypeAsArray());
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$data = $form->getData();
$Config = $data['config'];
$webCvsApiConfig = $data['webcvsapi'];
$webCvsApiConfig->setEnableWebcvstypeByArray($form['webcvsapi']['enable_webcvstype']->getData());
$cvsPayDataConfigs = $webCvsApiConfig->getCvsPayDataConfigs();
foreach ($cvsPayDataConfigs as $one) {
$one->setParent($webCvsApiConfig);
}
$this->entityManager->persist($Config);
$this->entityManager->persist($webCvsApiConfig);
$this->entityManager->flush();
$this->addSuccess('登録しました。', 'admin');
return $this->redirectToRoute('softbank_payment42_admin_config');
}
return [
'form' => $form->createView(),
'webCvsApiConfig' => $webCvsApiConfig,
];
}
}