File size: 1,757 Bytes
d2897cd
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<?php

declare(strict_types=1);

namespace Mautic\IntegrationsBundle\Sync\Notification\Helper;

use Mautic\IntegrationsBundle\Sync\Exception\ObjectNotSupportedException;
use Symfony\Contracts\Translation\TranslatorInterface;

class UserNotificationBuilder
{
    public function __construct(
        private UserHelper $userHelper,
        private OwnerProvider $ownerProvider,
        private RouteHelper $routeHelper,
        private TranslatorInterface $translator
    ) {
    }

    /**
     * @return int[]
     *
     * @throws ObjectNotSupportedException
     */
    public function getUserIds(string $mauticObject, int $id): array
    {
        $owners = $this->ownerProvider->getOwnersForObjectIds($mauticObject, [$id]);

        if (!empty($owners[0]['owner_id'])) {
            return [(int) $owners[0]['owner_id']];
        }

        return $this->userHelper->getAdminUsers();
    }

    public function buildLink(string $mauticObject, int $id, string $linkText): string
    {
        return $this->routeHelper->getLink($mauticObject, $id, $linkText);
    }

    public function formatHeader(string $integrationDisplayName, string $objectDisplayName): string
    {
        return $this->translator->trans(
            'mautic.integration.sync.user_notification.header',
            [
                '%integration%' => $integrationDisplayName,
                '%object%'      => $objectDisplayName,
            ]
        );
    }

    public function formatMessage(string $message, string $link): string
    {
        return $this->translator->trans(
            'mautic.integration.sync.user_notification.sync_error',
            [
                '%name%'    => $link,
                '%message%' => $message,
            ]
        );
    }
}