public function delete(Application $app, Request $request, $class_name_id, $id)
{
$this->isTokenValid($app);
$ClassName = $app['eccube.repository.class_name']->find($class_name_id);
if (!$ClassName) {
throw new NotFoundHttpException('商品規格が存在しません');
}
log_info('規格分類削除開始', array($id));
$TargetClassCategory = $app['eccube.repository.class_category']->find($id);
if (!$TargetClassCategory || $TargetClassCategory->getClassName() != $ClassName) {
$app->deleteMessage();
return $app->redirect($app->url('admin_product_class_category', array('class_name_id' => $ClassName->getId())));
}
$num = $app['eccube.repository.product_class']->createQueryBuilder('pc')->select('count(pc.id)')->where('pc.ClassCategory1 = :id OR pc.ClassCategory2 = :id')->setParameter('id', $id)->getQuery()->getSingleScalarResult();
if ($num > 0) {
$app->addError('admin.class_category.delete.hasproduct', 'admin');
} else {
$status = $app['eccube.repository.class_category']->delete($TargetClassCategory);
if ($status === true) {
log_info('規格分類削除完了', array($id));
$event = new EventArgs(array('ClassName' => $ClassName, 'TargetClassCategory' => $TargetClassCategory), $request);
$app['eccube.event.dispatcher']->dispatch(EccubeEvents::ADMIN_PRODUCT_CLASS_CATEGORY_DELETE_COMPLETE, $event);
$app->addSuccess('admin.class_category.delete.complete', 'admin');
} else {
log_info('規格分類削除エラー', array($id));
$app->addError('admin.class_category.delete.error', 'admin');
}
}
return $app->redirect($app->url('admin_product_class_category', array('class_name_id' => $ClassName->getId())));
}