Passed
Push — develop ( 991cd4...4c67f0 )
by Florian
04:17
created

ProviderController::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 0

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
cc 1
eloc 0
c 0
b 0
f 0
nc 1
nop 1
dl 0
loc 3
ccs 0
cts 2
cp 0
crap 2
rs 10
1
<?php
2
3
namespace App\Controller;
4
5
use App\Enum\PropertyType;
6
use App\Enum\Provider;
7
use App\Exception\UrlBuilderNotFoundException;
8
use App\Factory\ProviderUrlFactory;
9
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
10
use Symfony\Component\HttpFoundation\JsonResponse;
11
use Symfony\Component\HttpFoundation\Request;
12
use Symfony\Component\Routing\Annotation\Route;
13
14
#[Route("/provider")]
15
class ProviderController extends AbstractController
16
{
17
    public function __construct(
18
        private ProviderUrlFactory $urlFactory
19
    ) {}
20
21
    #[Route("/result-urls", name: "provider_result_urls", options: ["expose" => true], methods: ["GET"])]
22
    public function getResultUrls(Request $request): JsonResponse
23
    {
24
        $params = $request->query->all();
25
        $city = $params['city'];
26
        $types = isset($params['types']) ? array_keys($params['types']) : PropertyType::getAvailableValues();
27
        $minPrice = $params['min_price'] ?? null;
28
        $maxPrice = $params['max_price'];
29
        $minArea = $params['min_area'] ?? null;
30
        $maxArea = $params['max_area'] ?? null;
31
        $minRoomsCount = $params['min_rooms_count'];
32
        $urls = [];
33
34
        foreach (Provider::getAvailableValues() as $providerName) {
35
            try {
36
                $urls[] = $this->urlFactory->create($providerName, $city, $types, $minPrice, $maxPrice, $minArea, $maxArea, $minRoomsCount);
37
            // TODO: process ParuVendu
38
            } catch (UrlBuilderNotFoundException) {
39
                continue;
40
            }
41
        }
42
43
        return $this->json($urls);
44
    }
45
}
46