GitHub Access Token became invalid

It seems like the GitHub access token used for retrieving details about this repository from GitHub became invalid. This might prevent certain types of inspections from being run (in particular, everything related to pull requests).
Please ask an admin of your repository to re-new the access token on this website.
Completed
Push — master ( ad4463...4d14c7 )
by Andreas
03:15
created

CreateUpdateContactService::executeWithCustomer()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 15
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 9
nc 2
nop 1
dl 0
loc 15
rs 9.9666
c 0
b 0
f 0
1
<?php
2
declare(strict_types=1);
3
/**
4
 */
5
6
namespace CommerceLeague\ActiveCampaign\Service\Contact;
7
8
use CommerceLeague\ActiveCampaign\Api\ContactRepositoryInterface;
9
use CommerceLeague\ActiveCampaign\Gateway\Request\ContactRequestBuilder;
10
use CommerceLeague\ActiveCampaign\Logger\Logger;
11
use CommerceLeague\ActiveCampaign\MessageQueue\Contact\CreateUpdateMessage;
12
use CommerceLeague\ActiveCampaign\MessageQueue\Contact\CreateUpdatePublisher;
13
use Magento\Customer\Model\Customer;
14
use Magento\Framework\Exception\CouldNotSaveException;
15
use Magento\Newsletter\Model\Subscriber;
16
17
/**
18
 * Class CreateUpdateContactService
19
 */
20
class CreateUpdateContactService
21
{
22
    /**
23
     * @var ContactRepositoryInterface
24
     */
25
    private $contactRepository;
26
27
    /**
28
     * @var Logger
29
     */
30
    private $logger;
31
32
    /**
33
     * @var ContactRequestBuilder
34
     */
35
    private $contactRequestBuilder;
36
37
    /**
38
     * @var CreateUpdatePublisher
39
     */
40
    private $createUpdatePublisher;
41
42
    /**
43
     * @param ContactRepositoryInterface $contactRepository
44
     * @param Logger $logger
45
     * @param ContactRequestBuilder $contactRequestBuilder
46
     * @param CreateUpdatePublisher $createUpdatePublisher
47
     */
48
    public function __construct(
49
        ContactRepositoryInterface $contactRepository,
50
        Logger $logger,
51
        ContactRequestBuilder $contactRequestBuilder,
52
        CreateUpdatePublisher $createUpdatePublisher
53
    ) {
54
        $this->contactRepository = $contactRepository;
55
        $this->logger = $logger;
56
        $this->contactRequestBuilder = $contactRequestBuilder;
57
        $this->createUpdatePublisher = $createUpdatePublisher;
58
    }
59
60
    /**
61
     * @param Customer $customer
62
     */
63
    public function executeWithCustomer(Customer $customer): void
64
    {
65
        try {
66
            $contact = $this->contactRepository->getOrCreateByCustomer($customer);
67
        } catch (CouldNotSaveException $e) {
68
            $this->logger->critical($e);
69
            return;
70
        }
71
72
        $message = CreateUpdateMessage::build(
73
            (int)$contact->getId(),
74
            $this->contactRequestBuilder->buildWithCustomer($customer)
75
        );
76
77
        $this->createUpdatePublisher->publish($message);
78
    }
79
80
    /**
81
     * @param Subscriber $subscriber
82
     */
83
    public function executeWithSubscriber(Subscriber $subscriber): void
84
    {
85
        try {
86
            $contact = $this->contactRepository->getOrCreateBySubscriber($subscriber);
87
        } catch (CouldNotSaveException $e) {
88
            $this->logger->critical($e);
89
            return;
90
        }
91
92
        $message = CreateUpdateMessage::build(
93
            (int)$contact->getId(),
94
            $this->contactRequestBuilder->buildWithSubscriber($subscriber)
95
        );
96
97
        $this->createUpdatePublisher->publish($message);
98
    }
99
}
100