FrankProjects/UltimateWarfare

View on GitHub
src/Controller/Site/GuideController.php

Summary

Maintainability
A
0 mins
Test Coverage
<?php

declare(strict_types=1);

namespace FrankProjects\UltimateWarfare\Controller\Site;

use FrankProjects\UltimateWarfare\Controller\BaseController;
use FrankProjects\UltimateWarfare\Exception\GameUnitTypeNotFoundException;
use FrankProjects\UltimateWarfare\Repository\GameUnitRepository;
use FrankProjects\UltimateWarfare\Repository\GameUnitTypeRepository;
use FrankProjects\UltimateWarfare\Repository\OperationRepository;
use FrankProjects\UltimateWarfare\Repository\ResearchRepository;
use Symfony\Component\HttpFoundation\Response;

final class GuideController extends BaseController
{
    public function attack(): Response
    {
        return $this->render('site/guide/attack.html.twig');
    }

    public function construction(): Response
    {
        return $this->render('site/guide/construction.html.twig');
    }

    public function gameUnit(int $gameUnitId, GameUnitRepository $gameUnitRepository): Response
    {
        $gameUnit = $gameUnitRepository->find($gameUnitId);

        if ($gameUnit === null) {
            $this->addFlash('error', 'No such game unit!');
            return $this->redirectToRoute('Guide/ListUnits');
        }

        return $this->render(
            'site/guide/gameUnit.html.twig',
            [
                'gameUnit' => $gameUnit
            ]
        );
    }

    public function federation(): Response
    {
        return $this->render('site/guide/federation.html.twig');
    }

    public function fleet(): Response
    {
        return $this->render('site/guide/fleet.html.twig');
    }

    public function headquarter(): Response
    {
        return $this->render('site/guide/headquarter.html.twig');
    }

    public function index(): Response
    {
        return $this->render('site/guide/index.html.twig');
    }

    public function listOperations(OperationRepository $operationRepository): Response
    {
        $operations = $operationRepository->findEnabled();

        return $this->render(
            'site/guide/listOperations.html.twig',
            [
                'operations' => $operations
            ]
        );
    }

    public function listResearch(ResearchRepository $researchRepository): Response
    {
        $researches = $researchRepository->findAll();

        return $this->render(
            'site/guide/listResearch.html.twig',
            [
                'researches' => $researches
            ]
        );
    }

    public function listUnits(int $gameUnitTypeId, GameUnitTypeRepository $gameUnitTypeRepository): Response
    {
        try {
            $gameUnitType = $gameUnitTypeRepository->find($gameUnitTypeId);
        } catch (GameUnitTypeNotFoundException) {
            $gameUnitTypes = $gameUnitTypeRepository->findAll();

            return $this->render(
                'site/guide/selectGameUnitType.html.twig',
                [
                    'gameUnitTypes' => $gameUnitTypes
                ]
            );
        }

        return $this->render(
            'site/guide/listGameUnits.html.twig',
            [
                'gameUnitType' => $gameUnitType
            ]
        );
    }

    public function logOff(): Response
    {
        return $this->render('site/guide/logOff.html.twig');
    }

    public function market(): Response
    {
        return $this->render('site/guide/market.html.twig');
    }

    public function ranking(): Response
    {
        return $this->render('site/guide/ranking.html.twig');
    }

    public function region(): Response
    {
        return $this->render('site/guide/region.html.twig');
    }

    public function report(): Response
    {
        return $this->render('site/guide/report.html.twig');
    }

    public function research(): Response
    {
        return $this->render('site/guide/research.html.twig');
    }

    public function rules(): Response
    {
        return $this->render('site/guide/rules.html.twig');
    }

    public function surrender(): Response
    {
        return $this->render('site/guide/surrender.html.twig');
    }

    public function world(): Response
    {
        return $this->render('site/guide/world.html.twig');
    }
}