Passed
Push — main ( c42d70...1b364a )
by Åsa
02:29
created

ForecastController::indexAction()   C

Complexity

Conditions 10
Paths 6

Size

Total Lines 79
Code Lines 67

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 56
CRAP Score 10.0907

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 10
eloc 67
c 1
b 0
f 0
nc 6
nop 0
dl 0
loc 79
ccs 56
cts 62
cp 0.9032
crap 10.0907
rs 6.8533

How to fix   Long Method    Complexity   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

1
<?php
2
3
namespace Asti\Weather;
4
5
use Anax\Commons\ContainerInjectableInterface;
6
use Anax\Commons\ContainerInjectableTrait;
7
8
// use Anax\Route\Exception\ForbiddenException;
9
// use Anax\Route\Exception\NotFoundException;
10
// use Anax\Route\Exception\InternalErrorException;
11
12
/**
13
 * A sample controller to show how a controller class can be implemented.
14
 * The controller will be injected with $di if implementing the interface
15
 * ContainerInjectableInterface, like this sample class does.
16
 * The controller is mounted on a particular route and can then handle all
17
 * requests for that mount point.
18
 *
19
 * @SuppressWarnings(PHPMD.TooManyPublicMethods)
20
 */
21
class ForecastController implements ContainerInjectableInterface
22
{
23
    use ContainerInjectableTrait;
24
25 1
    public function indexAction(): object
26
    {
27 1
        $page = $this->di->get("page");
28 1
        $request = $this->di->get("request");
29 1
        $getParams = $request->getGet();
30 1
        $locationService = $this->di->get("location");
31 1
        $weatherService = $this->di->get("weather");
32 1
        $resIp = null;
0 ignored issues
show
Unused Code introduced by
The assignment to $resIp is dead and can be removed.
Loading history...
33 1
        $resWeather = null;
0 ignored issues
show
Unused Code introduced by
The assignment to $resWeather is dead and can be removed.
Loading history...
34 1
        if ($getParams) {
35 1
            $ipAdr = $getParams["ipCheck"];
36 1
            $type = $getParams["type"];
37 1
            $resIp = $locationService->curlIpApi($ipAdr);
38 1
            if (isset($resIp["Message"])) {
39
                $data = [
40 1
                    "ErrorMsg" => $resIp["Message"]
41
                ];
42 1
                $page->add("weather/weather_search", $data);
43 1
                return $page->render($data);
44
            } else {
45 1
                $resWeather = $weatherService->curlWeatherApi($resIp[0]["Longitude"], $resIp[0]["Latitude"]);
46
            }
47 1
            if (isset($resWeather->Error)) {
48
                $data = [
49
                    "ErrorMsg" => $resWeather["Error"]
50
                ];
51
                $page->add("weather/weather_search", $data);
52
                return $page->render($data);
53
            }
54 1
            elseif (isset($ipAdr) && isset($resWeather) && $type == "Prognos") {
55
                $data = [
56 1
                    "long" => $resIp[0]["Longitude"],
57 1
                    "lat" => $resIp[0]["Latitude"],
58 1
                    "CurrentTemp" => $resWeather[0]["CurrentTemp"],
59 1
                    "CurrentFeelsLike" => $resWeather[0]["CurrentFeelsLike"],
60 1
                    "CurrentWeather" => $resWeather[0]["CurrentWeather"],
61 1
                    "DailyDates" => $resWeather[0]["DailyDates"],
62 1
                    "DailyTemperatures" => $resWeather[0]["DailyTemperatures"],
63 1
                    "DailyFeelsLike" => $resWeather[0]["DailyFeelsLike"],
64 1
                    "DailyDescriptions" => $resWeather[0]["DailyDescriptions"]
65
                ];
66 1
                $page->add("weather/weather_forecast", [$data]);
67 1
                return $page->render([$data]);
68 1
            } elseif (isset($ipAdr) && isset($resWeather) && $type == "Äldre data") {
69 1
                $resWeather = $weatherService->curlOldWeatherApi($resIp[0]["Longitude"], $resIp[0]["Latitude"]);
70
                $data = [
71 1
                    "long" => $resIp[0]["Longitude"],
72 1
                    "lat" => $resIp[0]["Latitude"],
73 1
                    "Date1" => $resWeather[0]["Date1"],
74 1
                    "CurrentTemp1" => $resWeather[0]["CurrentTemp1"],
75 1
                    "CurrentFeelsLike1" => $resWeather[0]["CurrentFeelsLike1"],
76 1
                    "CurrentWeather1" => $resWeather[0]["CurrentWeather1"],
77 1
                    "Date2" => $resWeather[0]["Date2"],
78 1
                    "CurrentTemp2" => $resWeather[0]["CurrentTemp2"],
79 1
                    "CurrentFeelsLike2" => $resWeather[0]["CurrentFeelsLike2"],
80 1
                    "CurrentWeather2" => $resWeather[0]["CurrentWeather2"],
81 1
                    "Date3" => $resWeather[0]["Date3"],
82 1
                    "CurrentTemp3" => $resWeather[0]["CurrentTemp3"],
83 1
                    "CurrentFeelsLike3" => $resWeather[0]["CurrentFeelsLike3"],
84 1
                    "CurrentWeather3" => $resWeather[0]["CurrentWeather3"],
85 1
                    "Date4" => $resWeather[0]["Date4"],
86 1
                    "CurrentTemp4" => $resWeather[0]["CurrentTemp4"],
87 1
                    "CurrentFeelsLike4" => $resWeather[0]["CurrentFeelsLike4"],
88 1
                    "CurrentWeather4" => $resWeather[0]["CurrentWeather4"],
89 1
                    "Date5" => $resWeather[0]["Date5"],
90 1
                    "CurrentTemp5" => $resWeather[0]["CurrentTemp5"],
91 1
                    "CurrentFeelsLike5" => $resWeather[0]["CurrentFeelsLike5"],
92 1
                    "CurrentWeather5" => $resWeather[0]["CurrentWeather5"]
93
                ];
94
95 1
                $page->add("weather/weather_older", [$data]);
96 1
                return $page->render([$data]);
97
            }
98
        }
99
        $data = [
100
            "ipAdress" => $_SERVER['REMOTE_ADDR'] ?? "127.0.0.1"
101
        ];
102
        $page->add("weather/weather_search", $data);
103
        return $page->render($data);
104
    }
105
}
106