/**
* 非会員処理
*/
public function nonmember(Application $app, Request $request)
{
$cartService = $app['eccube.service.cart'];
// カートチェック
if (!$cartService->isLocked()) {
// カートが存在しない、カートがロックされていない時はエラー
return $app->redirect($app->url('cart'));
}
// ログイン済みの場合は, 購入画面へリダイレクト.
if ($app->isGranted('ROLE_USER')) {
return $app->redirect($app->url('shopping'));
}
// カートチェック
if (count($cartService->getCart()->getCartItems()) <= 0) {
// カートが存在しない時はエラー
return $app->redirect($app->url('cart'));
}
$form = $app['form.factory']->createBuilder('nonmember')->getForm();
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$data = $form->getData();
$Customer = new Customer();
$Customer->setName01($data['name01'])->setName02($data['name02'])->setKana01($data['kana01'])->setKana02($data['kana02'])->setCompanyName($data['company_name'])->setEmail($data['email'])->setTel01($data['tel01'])->setTel02($data['tel02'])->setTel03($data['tel03'])->setZip01($data['zip01'])->setZip02($data['zip02'])->setZipCode($data['zip01'] . $data['zip02'])->setPref($data['pref'])->setAddr01($data['addr01'])->setAddr02($data['addr02']);
// 非会員複数配送用
$CustomerAddress = new CustomerAddress();
$CustomerAddress->setCustomer($Customer)->setName01($data['name01'])->setName02($data['name02'])->setKana01($data['kana01'])->setKana02($data['kana02'])->setCompanyName($data['company_name'])->setTel01($data['tel01'])->setTel02($data['tel02'])->setTel03($data['tel03'])->setZip01($data['zip01'])->setZip02($data['zip02'])->setZipCode($data['zip01'] . $data['zip02'])->setPref($data['pref'])->setAddr01($data['addr01'])->setAddr02($data['addr02'])->setDelFlg(Constant::DISABLED);
$Customer->addCustomerAddress($CustomerAddress);
// 受注情報を取得
$Order = $app['eccube.service.shopping']->getOrder($app['config']['order_processing']);
// 初回アクセス(受注データがない)の場合は, 受注情報を作成
if (is_null($Order)) {
// 受注情報を作成
try {
// 受注情報を作成
$app['eccube.service.shopping']->createOrder($Customer);
} catch (CartException $e) {
$app->addRequestError($e->getMessage());
return $app->redirect($app->url('cart'));
}
}
// 非会員用セッションを作成
$nonMember = array();
$nonMember['customer'] = $Customer;
$nonMember['pref'] = $Customer->getPref()->getId();
$app['session']->set($this->sessionKey, $nonMember);
$customerAddresses = array();
$customerAddresses[] = $CustomerAddress;
$app['session']->set($this->sessionCustomerAddressKey, serialize($customerAddresses));
return $app->redirect($app->url('shopping'));
}
return $app->render('Shopping/nonmember.twig', array('form' => $form->createView()));
}