Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
Handler.php
Go to the documentation of this file.
1 <?php
7 
19 use Psr\Log\LoggerInterface;
20 
27 {
33  private static $eventTopicTest = 'cases/test';
34 
38  private $webhookRequest;
39 
43  private $logger;
44 
48  private $webhookMessageReader;
49 
53  private $caseUpdatingServiceFactory;
54 
58  private $webhookRequestValidator;
59 
63  private $caseRepository;
64 
68  private $config;
69 
80  public function __construct(
81  Context $context,
82  WebhookRequest $webhookRequest,
83  LoggerInterface $logger,
84  WebhookMessageReader $webhookMessageReader,
85  UpdatingServiceFactory $caseUpdatingServiceFactory,
86  WebhookRequestValidator $webhookRequestValidator,
87  CaseRepositoryInterface $caseRepository,
88  Config $config
89  ) {
90  parent::__construct($context);
91  $this->webhookRequest = $webhookRequest;
92  $this->logger = $logger;
93  $this->webhookMessageReader = $webhookMessageReader;
94  $this->caseUpdatingServiceFactory = $caseUpdatingServiceFactory;
95  $this->webhookRequestValidator = $webhookRequestValidator;
96  $this->caseRepository = $caseRepository;
97  $this->config = $config;
98  }
99 
105  public function execute()
106  {
107  if ($this->config->isDebugModeEnabled()) {
108  $this->logger->debug($this->webhookRequest->getEventTopic() . '|' . $this->webhookRequest->getBody());
109  }
110 
111  if (!$this->webhookRequestValidator->validate($this->webhookRequest)) {
112  $this->_redirect('noroute');
113  return;
114  }
115 
116  $webhookMessage = $this->webhookMessageReader->read($this->webhookRequest);
117  if ($webhookMessage->getEventTopic() === self::$eventTopicTest) {
118  return;
119  }
120 
121  $data = $webhookMessage->getData();
122  if (empty($data['caseId'])) {
123  $this->_redirect('noroute');
124  return;
125  }
126 
127  $case = $this->caseRepository->getByCaseId($data['caseId']);
128  if ($case === null) {
129  $this->_redirect('noroute');
130  return;
131  }
132 
133  $caseUpdatingService = $this->caseUpdatingServiceFactory->create($webhookMessage->getEventTopic());
134  try {
135  $caseUpdatingService->update($case, $data);
136  } catch (LocalizedException $e) {
137  $this->getResponse()->setHttpResponseCode(400);
138  $this->logger->critical($e);
139  }
140  }
141 
146  {
147  return null;
148  }
149 
153  public function validateForCsrf(RequestInterface $request): ?bool
154  {
155  return true;
156  }
157 }
_redirect($path, $arguments=[])
Definition: Action.php:167
$config
Definition: fraud_order.php:17
__construct(Context $context, WebhookRequest $webhookRequest, LoggerInterface $logger, WebhookMessageReader $webhookMessageReader, UpdatingServiceFactory $caseUpdatingServiceFactory, WebhookRequestValidator $webhookRequestValidator, CaseRepositoryInterface $caseRepository, Config $config)
Definition: Handler.php:80
createCsrfValidationException(RequestInterface $request)
Definition: Handler.php:145
$case
$caseRepository
$logger
validateForCsrf(RequestInterface $request)
Definition: Handler.php:153