Projekt

Obecné

Profil

Stáhnout (4.66 KB) Statistiky
| Větev: | Revize:
1
<?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
use App\Model\Zarizeni;
13
use App\Model\Zaznam;
14
use Illuminate\Http\Request;
15

    
16
class DeviceController extends Controller
17
{
18
    // 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
    const TIME_TO_PARAM = 'timeTo';
25
    const DIRECTION_PARAM = 'direction';
26

    
27

    
28
    public function getDevice(Request $request)
29
    {
30
        $address = null;
31
        $showDirection = 0;
32
        if ($request->has(self::ADDRESS_PARAM)) {
33
            $address = $request->input(self::ADDRESS_PARAM);
34
        }
35

    
36
        if ($request->has(self::SHOW_DIRECTION_PARAM) && $request->input(self::SHOW_DIRECTION_PARAM) == '1') {
37
            $showDirection = 1;
38
        }
39

    
40
        $device = Zarizeni::findByAddressJoinAddress($address, $showDirection);
41

    
42
        return $device;
43
    }
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
    public function getDeviceById(Request $request, $id)
59
    {
60

    
61
        // nacti parametry
62
        $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

    
69
        $device = Zarizeni::findByIdJoinAddress($id);
70
        if ($device != null) {
71
            $device->traffics = Zaznam::findByDevice($id, $dateFrom, $dateTo, $timeFrom, $timeTo, $direction);
72
            return json_encode($device);
73
        } else {
74
            return response('Not found.', 404);
75
        }
76
    }
77

    
78
    public function getTrafficAverageByDevice(Request $request, $id)
79
    {
80
        // 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
            $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
            return response('Not found.', 404);
101
        }
102
    }
103

    
104
    public function getAll()
105
    {
106
        return Zarizeni::getAllJoinAddress();
107
    }
108

    
109
    public function lastDay()
110
    {
111
        return Zaznam::lastInsertedDate();
112
    }
113

    
114
    public function headerTest(Request $request)
115
    {
116
        $authHeader = $request->header("jwt");
117

    
118
        if ($authHeader != null) {
119
            return $authHeader;
120
        } else {
121
            return $request->header("jwt");
122
        }
123
    }
124

    
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
    private function loadDateTimeDirectionConstraints(Request $request)
132
    {
133
        $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
}
(2-2/6)