app/Plugin/NZMailSystem42/Controller/Admin/MailController.php line 46

Open in your IDE?
  1. <?php
  2. namespace Plugin\NZMailSystem42\Controller\Admin;
  3. use Eccube\Controller\AbstractController;
  4. use Eccube\Repository\OrderRepository;
  5. use Symfony\Component\HttpFoundation\Request;
  6. use Symfony\Component\HttpFoundation\JsonResponse;
  7. use Symfony\Component\Routing\Annotation\Route;
  8. use Symfony\Component\EventDispatcher\GenericEvent;
  9. class MailController extends AbstractController
  10. {
  11.     private $orderRepository;
  12.     public function __construct(OrderRepository $orderRepository)
  13.     {
  14.         $this->orderRepository $orderRepository;
  15.     }
  16.     /**
  17.      * @Route("/%eccube_admin_route%/nz_mail/payment_confirm/{id}", name="nz_mail_payment_confirm", methods={"POST"})
  18.      */
  19.     public function sendPaymentConfirm(Request $request$id)
  20.     {
  21.         $this->isTokenValid();
  22.         $Order $this->orderRepository->find($id);
  23.         
  24.         if (!$Order) {
  25.             return new JsonResponse(['success' => false'message' => '注文情報が見つかりませんでした'], 404);
  26.         }
  27.         try {
  28.             $event = new GenericEvent(null, ['Order' => $Order]);
  29.             $this->eventDispatcher->dispatch($event'nz.mail.payment.confirm');
  30.             return new JsonResponse(['success' => true'message' => '決済確認メールを送信しました']);
  31.         } catch (\Exception $e) {
  32.             log_error('NZMailSystem42: 決済確認メール送信エラー', ['order_id' => $Order->getId(), 'error' => $e->getMessage()]);
  33.             return new JsonResponse(['success' => false'message' => 'エラー: ' $e->getMessage()], 500);
  34.         }
  35.     }
  36.     /**
  37.      * @Route("/%eccube_admin_route%/nz_mail/payment_received/{id}", name="nz_mail_payment_received", methods={"POST"})
  38.      */
  39.     public function sendPaymentReceived(Request $request$id)
  40.     {
  41.         $this->isTokenValid();
  42.         $Order $this->orderRepository->find($id);
  43.         
  44.         if (!$Order) {
  45.             return new JsonResponse(['success' => false'message' => '注文情報が見つかりませんでした'], 404);
  46.         }
  47.         try {
  48.             $event = new GenericEvent(null, ['Order' => $Order]);
  49.             $this->eventDispatcher->dispatch($event'nz.mail.payment.received');
  50.             log_info('NZMailSystem42: 入金確認済みメール送信', ['order_id' => $Order->getId()]);
  51.             return new JsonResponse(['success' => true'message' => '入金確認済みメールを送信しました']);
  52.         } catch (\Exception $e) {
  53.             log_error('NZMailSystem42: 入金確認済みメール送信エラー', ['order_id' => $Order->getId(), 'error' => $e->getMessage(), 'trace' => $e->getTraceAsString()]);
  54.             return new JsonResponse(['success' => false'message' => 'エラー: ' $e->getMessage() . ' (行: ' $e->getLine() . ')'], 500);
  55.         }
  56.     }
  57.     /**
  58.      * @Route("/%eccube_admin_route%/nz_mail/cancel/{id}", name="nz_mail_cancel", methods={"POST"})
  59.      */
  60.     public function sendCancel(Request $request$id)
  61.     {
  62.         $this->isTokenValid();
  63.         $Order $this->orderRepository->find($id);
  64.         
  65.         if (!$Order) {
  66.             return new JsonResponse(['success' => false'message' => '注文情報が見つかりませんでした'], 404);
  67.         }
  68.         try {
  69.             $event = new GenericEvent(null, ['Order' => $Order]);
  70.             $this->eventDispatcher->dispatch($event'nz.mail.order.cancel');
  71.             log_info('NZMailSystem42: キャンセルメール送信', ['order_id' => $Order->getId()]);
  72.             return new JsonResponse(['success' => true'message' => 'キャンセルメールを送信しました']);
  73.         } catch (\Exception $e) {
  74.             log_error('NZMailSystem42: キャンセルメール送信エラー', ['order_id' => $Order->getId(), 'error' => $e->getMessage(), 'trace' => $e->getTraceAsString()]);
  75.             return new JsonResponse(['success' => false'message' => 'エラー: ' $e->getMessage() . ' (行: ' $e->getLine() . ')'], 500);
  76.         }
  77.     }
  78.     /**
  79.      * @Route("/%eccube_admin_route%/nz_mail/test/{id}/{type}", name="nz_mail_test", methods={"POST"})
  80.      */
  81.     public function sendTestMail(Request $request$id$type)
  82.     {
  83.         $this->isTokenValid();
  84.         $Order $this->orderRepository->find($id);
  85.         
  86.         if (!$Order) {
  87.             return new JsonResponse(['success' => false'message' => '注文情報が見つかりませんでした'], 404);
  88.         }
  89.         try {
  90.             $event = new GenericEvent(null, ['Order' => $Order'mail_type' => $type]);
  91.             $this->eventDispatcher->dispatch($event'nz.mail.test');
  92.             return new JsonResponse(['success' => true'message' => 'テストメールを送信しました']);
  93.         } catch (\Exception $e) {
  94.             log_error('NZMailSystem42: テストメール送信エラー', ['order_id' => $Order->getId(), 'error' => $e->getMessage()]);
  95.             return new JsonResponse(['success' => false'message' => 'エラー: ' $e->getMessage()], 500);
  96.         }
  97.     }
  98. }