Passed
Push — develop ( 605aab...b17d99 )
by Stone
06:54 queued 11s
created

TrickCreatedSubscriber::setFirstImageAsPrimary()   A

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