Projekt

Obecné

Profil

Stáhnout (4.66 KB) Statistiky
| Větev: | Revize:
1 1123608c Cajova-Houba
<?php
2
/**
3
 * Created by PhpStorm.
4
 * User: Zdenda
5
 * Date: 20.4.2018
6
 * Time: 20:09
7
 */
8
9
namespace App\Http\Controllers;
10
11
use App\Model\Device;
12 b50f8ebd Cajova-Houba
use App\Model\Zarizeni;
13 d58f0fda Cajova-Houba
use App\Model\Zaznam;
14 1123608c Cajova-Houba
use Illuminate\Http\Request;
15
16
class DeviceController extends Controller
17
{
18 f71bf8bd Cajova-Houba
    // nazvy moznych url parametru
19
    const ADDRESS_PARAM = 'address';
20
    const SHOW_DIRECTION_PARAM = 'showDirection';
21
    const DATE_FROM_PARAM = 'dateFrom';
22
    const DATE_TO_PARAM = 'dateTo';
23
    const TIME_FROM_PARAM = 'timeFrom';
24 4877913b Cajova-Houba
    const TIME_TO_PARAM = 'timeTo';
25 f71bf8bd Cajova-Houba
    const DIRECTION_PARAM = 'direction';
26
27
28 01f99166 Jan Kohlíček
    public function getDevice(Request $request)
29
    {
30 143e4121 Cajova-Houba
        $address = null;
31 01f99166 Jan Kohlíček
        $showDirection = 0;
32 4877913b Cajova-Houba
        if ($request->has(self::ADDRESS_PARAM)) {
33
            $address = $request->input(self::ADDRESS_PARAM);
34 1123608c Cajova-Houba
        }
35
36 4877913b Cajova-Houba
        if ($request->has(self::SHOW_DIRECTION_PARAM) && $request->input(self::SHOW_DIRECTION_PARAM) == '1') {
37 f71bf8bd Cajova-Houba
            $showDirection = 1;
38 1123608c Cajova-Houba
        }
39
40 f71bf8bd Cajova-Houba
        $device = Zarizeni::findByAddressJoinAddress($address, $showDirection);
41 a139ba77 Cajova-Houba
42
        return $device;
43 1123608c Cajova-Houba
    }
44
45
    /**
46
     * Vrati zarizeni podle id.
47
     * Url parametry:
48
     * dateFrom
49
     * dateTo
50
     * timeFrom
51
     * timeTo
52
     * direction
53
     *
54
     * @param Request $request
55
     * @param $id
56
     * @return \Symfony\Component\HttpFoundation\Response
57
     */
58 01f99166 Jan Kohlíček
    public function getDeviceById(Request $request, $id)
59
    {
60 1123608c Cajova-Houba
61 d58f0fda Cajova-Houba
        // nacti parametry
62 4877913b Cajova-Houba
        $params = $this->loadDateTimeDirectionConstraints($request);
63
        $dateFrom = $params[self::DATE_FROM_PARAM];
64
        $dateTo = $params[self::DATE_TO_PARAM];
65
        $timeFrom = $params[self::TIME_FROM_PARAM];
66
        $timeTo = $params[self::TIME_TO_PARAM];
67
        $direction = $params[self::DIRECTION_PARAM];
68 d58f0fda Cajova-Houba
69
        $device = Zarizeni::findByIdJoinAddress($id);
70
        if ($device != null) {
71 01f99166 Jan Kohlíček
            $device->traffics = Zaznam::findByDevice($id, $dateFrom, $dateTo, $timeFrom, $timeTo, $direction);
72 0b27c108 Jan Kohlíček
            return json_encode($device);
73
        } else {
74 a139ba77 Cajova-Houba
            return response('Not found.', 404);
75 d58f0fda Cajova-Houba
        }
76 b50f8ebd Cajova-Houba
    }
77 1123608c Cajova-Houba
78 01f99166 Jan Kohlíček
    public function getTrafficAverageByDevice(Request $request, $id)
79
    {
80 4877913b Cajova-Houba
        // nacti parametry
81
        $params = $this->loadDateTimeDirectionConstraints($request);
82
        $dateFrom = $params[self::DATE_FROM_PARAM];
83
        $dateTo = $params[self::DATE_TO_PARAM];
84
        $timeFrom = $params[self::TIME_FROM_PARAM];
85
        $timeTo = $params[self::TIME_TO_PARAM];
86
        $direction = $params[self::DIRECTION_PARAM];
87
88
        $device = Zarizeni::findByIdJoinAddress($id);
89
        if ($device != null) {
90 01f99166 Jan Kohlíček
            $device->dateFrom = $dateFrom;
91
            $device->dateTo = $dateTo;
92
93
            if ($direction != null) {
94
                $device->direction = intval($direction);
95
            }
96
97
            $device->traffics = Zaznam::averageByDevice($id, $dateFrom, $dateTo, $timeFrom, $timeTo, $direction);
98
            return json_encode($device);
99
        } else {
100 4877913b Cajova-Houba
            return response('Not found.', 404);
101
        }
102
    }
103
104 01f99166 Jan Kohlíček
    public function getAll()
105
    {
106 b50f8ebd Cajova-Houba
        return Zarizeni::getAllJoinAddress();
107 1123608c Cajova-Houba
    }
108 d58f0fda Cajova-Houba
109 01f99166 Jan Kohlíček
    public function lastDay()
110
    {
111 d58f0fda Cajova-Houba
        return Zaznam::lastInsertedDate();
112
    }
113 73804802 Cajova-Houba
114 01f99166 Jan Kohlíček
    public function headerTest(Request $request)
115
    {
116 73804802 Cajova-Houba
        $authHeader = $request->header("jwt");
117
118 01f99166 Jan Kohlíček
        if ($authHeader != null) {
119 73804802 Cajova-Houba
            return $authHeader;
120
        } else {
121
            return $request->header("jwt");
122
        }
123
    }
124 4877913b Cajova-Houba
125
    /**
126
     * Funkce nacte z requestu url parametry dateFrom, dateTo, timeFrom, timeTo, direciton a vrati je jako pole.
127
     * Defaultni hodnoty jsou null.
128
     *
129
     * @param Request $request Request ze ktere budou nacitany parametry.
130
     */
131 01f99166 Jan Kohlíček
    private function loadDateTimeDirectionConstraints(Request $request)
132
    {
133 4877913b Cajova-Houba
        $params = array();
134
        $params[self::DATE_FROM_PARAM] = null;
135
        $params[self::DATE_TO_PARAM] = null;
136
        $params[self::TIME_FROM_PARAM] = null;
137
        $params[self::TIME_TO_PARAM] = null;
138
        $params[self::DIRECTION_PARAM] = null;
139
140
        if ($request->has(self::DATE_FROM_PARAM)) {
141
            $params[self::DATE_FROM_PARAM] = $request->input(self::DATE_FROM_PARAM);
142
        }
143
        if ($request->has(self::DATE_TO_PARAM)) {
144
            $params[self::DATE_TO_PARAM] = $request->input(self::DATE_TO_PARAM);
145
        }
146
        if ($request->has(self::TIME_FROM_PARAM)) {
147
            $params[self::TIME_FROM_PARAM] = $request->input(self::TIME_FROM_PARAM);
148
        }
149
        if ($request->has(self::TIME_TO_PARAM)) {
150
            $params[self::TIME_TO_PARAM] = $request->input(self::TIME_TO_PARAM);
151
        }
152
        if ($request->has(self::DIRECTION_PARAM)) {
153
            $params[self::DIRECTION_PARAM] = $request->input(self::DIRECTION_PARAM);
154
        }
155
156
        return $params;
157
    }
158 1123608c Cajova-Houba
}