CardController::deckShuffle()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 7
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
cc 1
eloc 5
c 0
b 0
f 0
nc 1
nop 1
dl 0
loc 7
rs 10
ccs 0
cts 3
cp 0
crap 2
1
<?php
2
3
namespace App\Controller;
4
5
# Generic use statements
6
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
7
use Symfony\Component\HttpFoundation\Response;
8
use Symfony\Component\Routing\Attribute\Route;
9
use Symfony\Component\HttpFoundation\Request;
10
use App\Model\CardHand;
11
use App\Model\DeckShuffler;
12
use App\Model\FrenchSuitedDeck;
13
use App\Observer\SessionSavingObserver;
14
use Random\Randomizer;
0 ignored issues
show
Bug introduced by
The type Random\Randomizer was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
15
16
class CardController extends AbstractController
17
{
18
    public function getInstansiatedDeck(Request $request, string $deckName): FrenchSuitedDeck
19
    {
20
        $sessionObserver = new SessionSavingObserver($request, $deckName);
21
        $observers = [
22
            $sessionObserver
23
        ];
24
        return FrenchSuitedDeck::createFromSession($request->getSession()->get($deckName), $observers);
25
    }
26
27
    #[Route('/card', name: 'app_card', defaults: ['deck_needed' => true ])]
28
    public function index(): Response
29
    {
30
        return $this->render('card/index.html.twig');
31
    }
32
33
    #[Route('/session')]
34
    #[Route('/card/session_view', name: 'app_session_view')]
35
    public function sessionView(Request $request): Response
36
    {
37
        $session = $request->getSession();
38
        return $this->render('card/session_view.html.twig', ['session' => $session]);
39
    }
40
41
    #[Route('/session/delete')]
42
    #[Route('/card/session_destroy', name: 'app_session_destroy')]
43
    public function sessionDestroy(Request $request): Response
44
    {
45
        $session = $request->getSession();
46
        $session->clear();
47
        $this->addFlash(
48
            'notice',
49
            'Session data was deleted!'
50
        );
51
52
        return $this->redirect($this->generateUrl('app_card'));
53
    }
54
55
    #[Route('/card/deck', name: 'app_deck', defaults: ['deck_needed' => true ])]
56
    public function deck(Request $request): Response
57
    {
58
        $deck = $this->getInstansiatedDeck($request, 'deck_2');
59
        $deck->sort();
60
        return $this->render('card/cards.html.twig', ['cards' => $deck->getDeck()]);
61
    }
62
63
    #[Route('/card/deck/shuffle', name: 'app_deck_shuffle', defaults: ['deck_needed' => true ])]
64
    public function deckShuffle(Request $request): Response
65
    {
66
        $deck = $this->getInstansiatedDeck($request, 'deck_2');
67
        $shuffler = new DeckShuffler(new Randomizer());
68
        $shuffler->shuffle($deck);
69
        return $this->render('card/cards.html.twig', ['cards' => $deck->getDeck()]);
70
    }
71
72
    #[Route('/card/deck/draw/{number}', name: 'app_deck_draw', defaults: ['deck_needed' => true ])]
73
    public function deckDraw(Request $request, int $number = 1): Response
74
    {
75
        $deck = $this->getInstansiatedDeck($request, 'deck_2');
76
77
        return $this->render('card/cards.html.twig', ['cards' => $deck->cardCollection->drawCards($number)]);
78
    }
79
80
    #[Route('/card/deck/deal/{players}/{cards}', name: 'app_deck_deal', defaults: ['deck_needed' => true ])]
81
    public function deckDeal(Request $request, int $players, int $cards): Response
82
    {
83
        $deck = $this->getInstansiatedDeck($request, 'deck_2');
84
85
        $hands = [];
86
        for ($i = 0; $i < $players; $i++) {
87
            $hands[] = new CardHand();
88
        }
89
90
        for ($i = 0; $i < $cards; $i++) {
91
            foreach ($hands as $hand) {
92
                $cardArray = $deck->cardCollection->drawCards(1);
93
                foreach ($cardArray as $card) {
94
                    $hand->addCard($card);
95
                }
96
            }
97
        }
98
99
        return $this->render('card/hands.html.twig', ['hands' => $hands, 'deck' => $deck]);
100
    }
101
}
102