Completed
Pull Request — master (#30)
by nonanerz
04:14
created

CalendarController::singleEventAction()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 15
Code Lines 10

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 6

Importance

Changes 0
Metric Value
dl 0
loc 15
ccs 0
cts 10
cp 0
rs 9.4285
c 0
b 0
f 0
cc 2
eloc 10
nc 2
nop 1
crap 6
1
<?php
2
3
namespace AppBundle\Controller\Api;
4
5
use AppBundle\Entity\DTO\DtoEvent;
6
use AppBundle\Entity\Event;
7
use AppBundle\Exception\JsonHttpException;
8
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
9
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
10
use Symfony\Component\HttpFoundation\JsonResponse;
11
use Symfony\Component\Routing\Annotation\Route;
12
13
class CalendarController extends Controller
14
{
15
    /**
16
     * @Route("/events")
17
     * @Method({"GET"})
18
     */
19
    public function userEventsAction()
20
    {
21
        $events = $this->getDoctrine()->getRepository(Event::class)
22
            ->selectNotExpiredByUser($this->getUser());
23
        $calendar = $this->get('app.google_calendar');
24
        $googleEvents = [];
25
        foreach ($events as $event) {
26
            $googleEvents[] = $calendar
27
                ->getEventById($event->getGoogleId());
28
        }
29
        $events = [];
30
        foreach ($googleEvents as $event) {
31
            if ($event) {
32
                $events[] = new DtoEvent($event);
33
            }
34
        }
35
36
        return new JsonResponse(['events' => $events]);
37
    }
38
39
    /**
40
     * @Route("/events/{id}")
41
     * @Method("GET")
42
     */
43
    public function singleEventAction($id)
44
    {
45
        /** @var Event $event */
46
        $event = $this->getDoctrine()->getRepository('AppBundle:Event')
47
            ->findByGoogleId($id);
48
        $user = $event->getUser();
49
        if (!$user) {
50
            throw new JsonHttpException(404, 'User not found.');
51
        }
52
        $googleEvent = $this->get('app.google_calendar')
53
            ->getEventById($id);
54
        $event = new DtoEvent($googleEvent);
55
56
        return new JsonResponse(['event' => $event]);
57
    }
58
}
59