CreationService.php 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Signifyd\Model\Guarantee;
  7. use Magento\Framework\Exception\AlreadyExistsException;
  8. use Magento\Framework\Exception\NotFoundException;
  9. use Magento\Signifyd\Api\CaseManagementInterface;
  10. use Magento\Signifyd\Api\GuaranteeCreationServiceInterface;
  11. use Magento\Signifyd\Model\CaseServices\UpdatingServiceFactory;
  12. use Magento\Signifyd\Model\SignifydGateway\Gateway;
  13. use Magento\Signifyd\Model\SignifydGateway\GatewayException;
  14. use Psr\Log\LoggerInterface;
  15. /**
  16. * Register guarantee at Signifyd and updates case entity
  17. */
  18. class CreationService implements GuaranteeCreationServiceInterface
  19. {
  20. /**
  21. * @var CaseManagementInterface
  22. */
  23. private $caseManagement;
  24. /**
  25. * @var UpdatingServiceFactory
  26. */
  27. private $caseUpdatingServiceFactory;
  28. /**
  29. * @var Gateway
  30. */
  31. private $gateway;
  32. /**
  33. * @var CreateGuaranteeAbility
  34. */
  35. private $createGuaranteeAbility;
  36. /**
  37. * @var LoggerInterface
  38. */
  39. private $logger;
  40. /**
  41. * CreationService constructor.
  42. *
  43. * @param CaseManagementInterface $caseManagement
  44. * @param UpdatingServiceFactory $caseUpdatingServiceFactory
  45. * @param Gateway $gateway
  46. * @param CreateGuaranteeAbility $createGuaranteeAbility
  47. * @param LoggerInterface $logger
  48. */
  49. public function __construct(
  50. CaseManagementInterface $caseManagement,
  51. UpdatingServiceFactory $caseUpdatingServiceFactory,
  52. Gateway $gateway,
  53. CreateGuaranteeAbility $createGuaranteeAbility,
  54. LoggerInterface $logger
  55. ) {
  56. $this->caseManagement = $caseManagement;
  57. $this->caseUpdatingServiceFactory = $caseUpdatingServiceFactory;
  58. $this->gateway = $gateway;
  59. $this->createGuaranteeAbility = $createGuaranteeAbility;
  60. $this->logger = $logger;
  61. }
  62. /**
  63. * @inheritdoc
  64. */
  65. public function createForOrder($orderId)
  66. {
  67. if (!$this->createGuaranteeAbility->isAvailable($orderId)) {
  68. return false;
  69. }
  70. $caseEntity = $this->caseManagement->getByOrderId($orderId);
  71. try {
  72. $disposition = $this->gateway->submitCaseForGuarantee($caseEntity->getCaseId());
  73. } catch (GatewayException $e) {
  74. $this->logger->error($e->getMessage());
  75. return false;
  76. }
  77. $updatingService = $this->caseUpdatingServiceFactory->create('guarantees/creation');
  78. $data = [
  79. 'caseId' => $caseEntity->getCaseId(),
  80. 'guaranteeDisposition' => $disposition
  81. ];
  82. $updatingService->update($caseEntity, $data);
  83. return true;
  84. }
  85. }