Passed
Pull Request — master (#81)
by
unknown
04:18
created

CreateNewWishlistHandler   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 40
Duplicated Lines 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
eloc 19
c 2
b 0
f 0
dl 0
loc 40
rs 10
wmc 5

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __invoke() 0 18 4
A __construct() 0 10 1
1
<?php
2
3
/*
4
 * This file was created by developers working at BitBag
5
 * Do you need more information about us and what we do? Visit our https://bitbag.io website!
6
 * We are hiring developers from all over the world. Join us and start your new, exciting adventure and become part of us: https://bitbag.io/career
7
*/
8
9
declare(strict_types=1);
10
11
namespace BitBag\SyliusWishlistPlugin\CommandHandler\Wishlist;
12
13
use BitBag\SyliusWishlistPlugin\Command\Wishlist\CreateNewWishlist;
14
use BitBag\SyliusWishlistPlugin\Factory\WishlistFactoryInterface;
15
use BitBag\SyliusWishlistPlugin\Repository\WishlistRepositoryInterface;
16
use BitBag\SyliusWishlistPlugin\Resolver\WishlistCookieTokenResolverInterface;
17
use Sylius\Component\Core\Model\ShopUserInterface;
18
use Symfony\Component\Messenger\Handler\MessageHandlerInterface;
19
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
20
21
final class CreateNewWishlistHandler implements MessageHandlerInterface
22
{
23
    private WishlistRepositoryInterface $wishlistRepository;
24
25
    private TokenStorageInterface $tokenStorage;
26
27
    private WishlistFactoryInterface $wishlistFactory;
28
29
    private WishlistCookieTokenResolverInterface $wishlistCookieTokenResolver;
30
31
    public function __construct(
32
        WishlistRepositoryInterface $wishlistRepository,
33
        TokenStorageInterface $tokenStorage,
34
        WishlistFactoryInterface $wishlistFactory,
35
        WishlistCookieTokenResolverInterface $wishlistCookieTokenResolver
36
    ) {
37
        $this->wishlistRepository = $wishlistRepository;
38
        $this->tokenStorage = $tokenStorage;
39
        $this->wishlistFactory = $wishlistFactory;
40
        $this->wishlistCookieTokenResolver = $wishlistCookieTokenResolver;
41
    }
42
43
    public function __invoke(CreateNewWishlist $createNewWishlist): void
44
    {
45
        $user = $this->tokenStorage->getToken() ? $this->tokenStorage->getToken()->getUser() : null;
46
47
        if ($user instanceof ShopUserInterface) {
48
            $wishlist = $this->wishlistFactory->createForUser($user);
49
        } else {
50
            $wishlist = $this->wishlistFactory->createNew();
51
        }
52
53
        $wishlistCookieToken = $this->wishlistCookieTokenResolver->resolve();
54
55
        if ($wishlistCookieToken) {
56
            $wishlist->setToken($wishlistCookieToken);
57
        }
58
59
        $wishlist->setName($createNewWishlist->getName());
60
        $this->wishlistRepository->add($wishlist);
61
    }
62
}
63