123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Signifyd\Model\Guarantee;
- use Magento\Framework\Exception\InputException;
- use Magento\Framework\Exception\NoSuchEntityException;
- use Magento\Sales\Api\Data\OrderInterface;
- use Magento\Sales\Api\OrderRepositoryInterface;
- use Magento\Signifyd\Model\CaseManagement;
- /**
- * Checks if is possible to cancel Guarantee for order.
- */
- class CancelGuaranteeAbility
- {
- /**
- * @var CaseManagement
- */
- private $caseManagement;
- /**
- * @var OrderRepositoryInterface
- */
- private $orderRepository;
- /**
- * @param CaseManagement $caseManagement
- * @param OrderRepositoryInterface $orderRepository
- */
- public function __construct(
- CaseManagement $caseManagement,
- OrderRepositoryInterface $orderRepository
- ) {
- $this->caseManagement = $caseManagement;
- $this->orderRepository = $orderRepository;
- }
- /**
- * Checks if it is possible to create Guarantee for order and case.
- *
- * @param int $orderId
- * @return bool
- */
- public function isAvailable($orderId)
- {
- $case = $this->caseManagement->getByOrderId($orderId);
- if ($case === null) {
- return false;
- }
- if (in_array($case->getGuaranteeDisposition(), [null, $case::GUARANTEE_CANCELED])) {
- return false;
- }
- $order = $this->getOrder($orderId);
- if (null === $order) {
- return false;
- }
- return true;
- }
- /**
- * Returns order by id
- *
- * @param int $orderId
- * @return OrderInterface|null
- */
- private function getOrder($orderId)
- {
- try {
- $order = $this->orderRepository->get($orderId);
- } catch (InputException $e) {
- return null;
- } catch (NoSuchEntityException $e) {
- return null;
- }
- return $order;
- }
- }
|