app/Customize/Service/OrderStateMachine.php line 39

Open in your IDE?
  1. <?php
  2. namespace Customize\Service;
  3. use Customize\Repository\ContractRepository;
  4. use Eccube\Entity\Order;
  5. use Eccube\Exception\ShoppingException;
  6. use Eccube\Repository\Master\OrderStatusRepository;
  7. use Eccube\Service\PurchaseFlow\Processor\{
  8.     PointProcessor,
  9.     StockReduceProcessor
  10. };
  11. use Eccube\Service\{
  12.     OrderStateMachine as BaseOrderStateMachine,
  13.     OrderStateMachineContext
  14. };
  15. use Symfony\Component\Workflow\{
  16.     Event\Event,
  17.     StateMachine
  18. };
  19. class OrderStateMachine extends BaseOrderStateMachine
  20. {
  21.     private ContractRepository $contractRepository;
  22.     public function __construct(
  23.         StateMachine $_orderStateMachine,
  24.         OrderStatusRepository $orderStatusRepository,
  25.         PointProcessor $pointProcessor,
  26.         StockReduceProcessor $stockReduceProcessor,
  27.         ContractRepository $contractRepository
  28.     )
  29.     {
  30.         parent::__construct($_orderStateMachine$orderStatusRepository$pointProcessor$stockReduceProcessor);
  31.         $this->contractRepository $contractRepository;
  32.     }
  33.     public function updatePaymentDate(Event $event): void
  34.     {
  35.         parent::updatePaymentDate($event);
  36.         /** @var OrderStateMachineContext $subject */
  37.         $subject $event->getSubject();
  38.         /** @var Order $Order */
  39.         $Order $subject->getOrder();
  40.         $contractId $Order->getContractId();
  41.         $paymentMethod $Order->getPayment()?->getBackendMethod();
  42.         $updateDate $Order->getContract()?->getUpdateDate();
  43.         if (!$contractId || !$paymentMethod || !$updateDate) {
  44.             throw new ShoppingException(trans('purchase_flow.contract_confirm_param_not_found'));
  45.         }
  46.         // 入金確認
  47.         $result $this->contractRepository->confirmPayment($contractId$paymentMethod$updateDate);
  48.         if (!$result) {
  49.             throw new ShoppingException(trans('purchase_flow.backend_over_stock'));
  50.         }
  51.     }
  52. }