caseRepository = $caseRepository; $this->caseFactory = $caseFactory; $this->searchCriteriaBuilder = $searchCriteriaBuilder; $this->filterBuilder = $filterBuilder; } /** * @inheritdoc */ public function create($orderId) { /** @var \Magento\Signifyd\Api\Data\CaseInterface $case */ $case = $this->caseFactory->create(); $case->setOrderId($orderId) ->setStatus(CaseInterface::STATUS_PENDING) ->setGuaranteeDisposition(CaseInterface::GUARANTEE_PENDING); try { return $this->caseRepository->save($case); } catch (DuplicateException $e) { throw new AlreadyExistsException(__('This order already has associated case entity'), $e); } } /** * @inheritdoc */ public function getByOrderId($orderId) { $filters = [ $this->filterBuilder->setField('order_id') ->setValue($orderId) ->create() ]; $searchCriteria = $this->searchCriteriaBuilder->addFilters($filters)->create(); $items = $this->caseRepository->getList($searchCriteria)->getItems(); return !empty($items) ? array_pop($items) : null; } }