Completed
Push — master ( 80844b...2235ec )
by
unknown
10s
created

UserExtraBetting::index()   B

Complexity

Conditions 4
Paths 2

Size

Total Lines 23
Code Lines 15

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 23
rs 8.7972
c 0
b 0
f 0
cc 4
eloc 15
nc 2
nop 0
1
<?php
2
3
namespace App\GameExtraBetting\Communication\Controller;
4
5
6
use App\GameCore\Persistence\Entity\Team;
7
use App\GameExtraBetting\Business\Form\UserExtraBettingType;
8
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
9
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
10
use Symfony\Component\HttpFoundation\Request;
11
use Symfony\Component\Routing\Annotation\Route;
12
13
class UserExtraBetting extends Controller
14
{
15
    const TIPP_DATE = '14.06.2018';
16
    /**
17
     * @Route("/gamebetextra/", name="game_bet_extra")
18
     */
19
    public function index()
20
    {
21
        $user = $this->getUser();
22
        
23
        $teams = $this->getTeams();
24
        /** @var \App\GameExtraBetting\Persistence\Entity\UserExtraBetting[] $userExtraBets */
25
        $userExtraBets = $this->getUserExtraBet($user);
26
        foreach ($userExtraBets as $userExtraBet) {
27
            $bets[$userExtraBet->getType()] = $userExtraBet;
28
        }
29
30
        $bet = new \App\GameExtraBetting\Persistence\Entity\UserExtraBetting();
31
        $forms[1] = $this->createForm(UserExtraBettingType::class, $bet,
0 ignored issues
show
Comprehensibility Best Practice introduced by
$forms was never initialized. Although not strictly required by PHP, it is generally a good practice to add $forms = array(); before regardless.
Loading history...
32
                ['teams' => $teams, 'extrabet' => array_key_exists(1, $bets) ? $bets[1] : null , 'label' => 'Tipp 1', 'type' => 1]
0 ignored issues
show
Comprehensibility Best Practice introduced by
The variable $bets seems to be defined by a foreach iteration on line 26. Are you sure the iterator is never empty, otherwise this variable is not defined?
Loading history...
33
                )->createView();
34
        $forms[2] =  $this->createForm(UserExtraBettingType::class, $bet,
35
                ['teams' => $teams, 'extrabet' => array_key_exists(2, $bets) ? $bets[2] : null, 'label' => 'Tipp 2', 'type' => 2]
36
                )->createView();
37
38
        return $this->render(
39
            'gameextrabetting/user_extra_betting/widget.html.twig',
40
            [
41
                'forms' => $forms,
42
            ]
43
        );
44
    }
45
46
    /**
47
     * @Route("/saveextrabet/", name="save_extra_bet")
48
     * @Method({"POST"})
49
     */
50
    public function saveExtraBet(Request $request)
51
    {
52
        $params = $request->get('user_extra_betting');
53
54
        $userExtraBetting = new \App\GameExtraBetting\Persistence\Entity\UserExtraBetting();
55
        $form = $this->createForm(UserExtraBettingType::class, $userExtraBetting);
56
        $form->handleRequest($request);
57
        if (!$form->isSubmitted() && !$form->isValid()) {
58
            return $this->redirectToRoute('game_bet_list', array(), 302);
59
        }
60
61
        $entityManager = $this->getDoctrine()->getManager();
62
        $userExtraBetting = $entityManager->getRepository(\App\GameExtraBetting\Persistence\Entity\UserExtraBetting::class)
63
            ->find($params['betId']);
64
65
        if (!$userExtraBetting instanceof \App\GameExtraBetting\Persistence\Entity\UserExtraBetting) {
66
            $userExtraBetting = new \App\GameExtraBetting\Persistence\Entity\UserExtraBetting();
67
            $userExtraBetting->setUser($this->getUser());
68
            $userExtraBetting->setType($params['type']);
69
        }
70
71
        $userExtraBetting->setDate(new \DateTime("now"));
72
        $userExtraBetting->setText($params['text']);
73
74
        $entityManager->persist($userExtraBetting);
75
        $entityManager->flush();
76
77
        return $this->redirectToRoute('game_bet_list');
78
    }
79
80
    private function getTeams()
81
    {
82
        $result = [];
83
        $teams = $this->getDoctrine()->getRepository(Team::class)
84
                      ->findAll();
85
86
        foreach ($teams as $team) {
87
            $result[$team->getName()] = $team->getId();
88
        }
89
90
        return $result;
91
    }
92
93
    private function getUserExtraBet($user)
94
    {
95
        return $this->getDoctrine()->getRepository(\App\GameExtraBetting\Persistence\Entity\UserExtraBetting::class)
96
                    ->findBy(['user' => $user->getId()]);
97
    }
98
}
99