TrickCreatedSubscriber::setFirstImageAsPrimary()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 8
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 6
dl 0
loc 8
rs 10
c 0
b 0
f 0
cc 2
nc 2
nop 1
1
<?php
2
3
namespace App\EventSubscriber\Trick;
4
5
use App\Entity\Image;
6
use App\Event\Trick\AbstractTrickEvent;
7
use App\Event\Trick\TrickAddPrimaryImageEvent;
8
use App\Event\Trick\TrickCreatedEvent;
9
use App\Event\Trick\TrickEditedEvent;
10
use App\FlashMessage\FlashMessageCategory;
11
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
12
13
class TrickCreatedSubscriber extends AbstractTrickSubscriber implements EventSubscriberInterface
14
{
15
16
    /**
17
     * Setting the first image as primary as specified in the wireframes
18
     * @param AbstractTrickEvent $event
19
     */
20
    public function setFirstImageAsPrimary(AbstractTrickEvent $event){
21
        $trick = $event->getEntity();
22
        if($trick->getImages()->count() >0){
23
            /** @var Image $primImage */
24
            $primImage = $trick->getImages()->first();
25
            $primImage->setPrimaryImage(true);
26
            $this->em->persist($primImage);
27
            $this->em->flush();
28
        }
29
    }
30
31
    /**
32
     * Send trick to the database and set a flash message
33
     * @param AbstractTrickEvent $event
34
     */
35
    public function registerTrickToDatabase(AbstractTrickEvent $event)
36
    {
37
        $trick = $event->getEntity();
38
        $this->sendToDatabase($event);
39
        $this->addFlashMessage(FlashMessageCategory::SUCCESS, 'Trick ' . $trick->getName() . ' saved');
40
    }
41
42
    /**
43
     * @return array The event names to listen to
44
     */
45
    public static function getSubscribedEvents()
46
    {
47
        return [
48
            TrickCreatedEvent::NAME => [
49
                ['setFirstImageAsPrimary', 50],
50
                ['registerTrickToDatabase', 30],
51
            ],
52
            TrickEditedEvent::NAME => [
53
                ['registerTrickToDatabase', 30],
54
            ],
55
            TrickAddPrimaryImageEvent::NAME => [
56
                ['setFirstImageAsPrimary', 50],
57
            ],
58
        ];
59
    }
60
}