BaseController::searchFields()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 23
Code Lines 13

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 13
c 1
b 0
f 0
nc 1
nop 0
dl 0
loc 23
rs 9.8333
1
<?php
2
3
declare(strict_types=1);
4
5
namespace App\Controller;
6
7
use App\Entity\Category;
8
use App\Entity\City;
9
use App\Entity\DealType;
10
use App\Entity\Feature;
11
use App\Entity\Menu;
12
use App\Repository\SettingsRepository;
13
use Doctrine\Persistence\ManagerRegistry;
14
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
15
use Symfony\Component\HttpFoundation\Request;
16
17
abstract class BaseController extends AbstractController
18
{
19
    private SettingsRepository $settingsRepository;
20
21
    protected ManagerRegistry $doctrine;
22
23
    public function __construct(SettingsRepository $settingsRepository, ManagerRegistry $doctrine)
24
    {
25
        $this->settingsRepository = $settingsRepository;
26
        $this->doctrine = $doctrine;
27
    }
28
29
    private function menu(Request $request): array
30
    {
31
        return [
32
            'menu' => $this->doctrine->getRepository(Menu::class)
33
                ->findBy([
34
                    'locale' => $request->getLocale(),
35
                ], ['sort_order' => 'ASC']),
36
        ];
37
    }
38
39
    private function searchFields(): array
40
    {
41
        // Get city
42
        $cities = $this->doctrine
43
            ->getRepository(City::class)->findAll();
44
45
        // Get categories
46
        $categories = $this->doctrine
47
            ->getRepository(Category::class)->findAll();
48
49
        // Get deal types
50
        $dealTypes = $this->doctrine
51
            ->getRepository(DealType::class)->findAll();
52
53
        // Get features
54
        $features = $this->doctrine
55
            ->getRepository(Feature::class)->findAll();
56
57
        return [
58
            'cities' => $cities,
59
            'features' => $features,
60
            'categories' => $categories,
61
            'deal_types' => $dealTypes,
62
        ];
63
    }
64
65
    public function site(Request $request): array
66
    {
67
        $settings = $this->settingsRepository->findAllAsArray();
68
69
        $fields = $this->searchFields();
70
71
        $menu = $this->menu($request);
72
73
        return array_merge($settings, $fields, $menu);
74
    }
75
}
76