Projekt

Obecné

Profil

« Předchozí | Další » 

Revize fadc220b

Přidáno uživatelem Cajova-Houba před téměř 7 roky(ů)

refs #6759: Pridan endpoint pro day-period.

Zobrazit rozdíly:

backend/app/Model/Zaznam.php
20 20
    protected $table = 'zaznam';
21 21

  
22 22
    /**
23
     * Vrati posledni datum pro ktere existuji nejake zaznamy.
23
     * Vrati posledni datum pro ktere existuji zaznamy v tabulce zaznam_cas.
24 24
     * @return String Posledni datum pro ktere existuji zaznamy.
25 25
     */
26 26
    public static function lastInsertedDate()
27 27
    {
28
        return DB::table('datum')->select(DB::raw('max(date(od)) as last_day'))->get();
28
        return DB::table('zaznam_cas')
29
            ->join('datum', 'zaznam_cas.datum_id', '=', 'datum.id')
30
            ->select(DB::raw(
31
                'max(date(datum.od)) as last_day'
32
            ))
33
            ->get();
34
    }
35

  
36
    /**
37
     * Vrati posledni datum pro ktere existuji zaznamy v tabulce zaznam_prum_den.
38
     * @return String Posledni datum pro ktere existuji zaznamy.
39
     */
40
    public static function lastDayAverageInsertedDate() {
41
        return DB::table('zaznam_prum_den')
42
            ->join('datum', 'zaznam_prum_den.datum_id', '=', 'datum.id')
43
            ->select(DB::raw('
44
                max(date(datum.od)) as last_day_from,
45
                max(date(datum.do)) as last_day_to'
46
            ))
47
            ->get();
29 48
    }
30 49

  
31 50
    /**
......
37 56
     * @param String $timeFrom Pocatecni cas. Null znamena 00:00.
38 57
     * @param String $timeTo Koncovy cas. Null znamena 23:59.
39 58
     * @param int $direction Pozadovany smer. Null znamena oba smery.
40
     * @return array Prumery dopravy pro casovy usek podle typu vozidla.
59
     * @return \stdClass Prumery dopravy pro casovy usek podle typu vozidla.
41 60
     */
42 61
    public static function averageByDevice($deviceId, $dateFrom, $dateTo, $timeFrom, $timeTo, $direction)
43 62
    {
......
86 105
        return $query->get();
87 106
    }
88 107

  
108
    /**
109
     * Vrati denni prumery podle typu vozidla.
110
     *
111
     * @param integer $deviceId Id Zarizeni.
112
     * @param String $dateFrom Pocatecni datum. Null znamená poledni vlozeny den.
113
     * @param String $dateTo Koncove datum. Null znamena posledni vlozeny den.
114
     * @param integer $direction Pozadovany smer. Null znamena oba smery.
115
     * @return \stdClass Denni prumery podle typu vozidla.
116
     */
117
    public static function averageByDay($deviceId, $dateFrom, $dateTo, $direction) {
118
        $lastDateFrom = null;
119
        $lastDateTo = null;
120
        $lastDate = null;
121
        $dir = null;
122

  
123
        // jedno z omezujicich dat je null => ziskej posledni vlozene datum
124
        if ($dateFrom == null || $dateTo == null) {
125
            $lastDate = Zaznam::lastDayAverageInsertedDate();
126
            if ($lastDate == null) {
127
                // database is empty
128
                return "no-data";
129
            } else {
130
                $lastDateFrom = $lastDate[0]->last_day_from;
131
                $lastDateTo = $lastDate[0]->last_day_to;
132
            }
133
        }
134

  
135
        // vytvoreni query - vsechno to dat dohromady
136
        $query = DB::table('zaznam_prum_den')
137
            ->join('datum', 'zaznam_prum_den.datum_id', '=', 'datum.id')
138
            ->select(DB::raw("
139
                date_format(datum.od, '%Y-%m-%d') as date,
140
                zaznam_prum_den.rychlost_prumer as speedAverage,
141
                zaznam_prum_den.vozidla_pocet as numberVehicle,
142
                zaznam_prum_den.vozidlo_id as typeVehicle
143
            "))
144
            ->whereDate('datum.od', '>=', $dateFrom == null ? $lastDateFrom : $dateFrom)
145
            ->whereDate('datum.do', '<=', $dateTo == null ? $lastDateTo : $dateTo)
146
            ->where('zaznam_prum_den.zarizeni_id', '=', $deviceId);
147

  
148
        if ($direction != null) {
149
            $query = $query->where('zaznam_prum_den.smer', '=', $direction);
150
        }
151

  
152
        // pridat grouping a razeni nakonec
153
        $query = $query
154
            ->groupBy('date', 'typeVehicle')
155
            ->orderBy('date', 'asc')
156
            ->orderBy('zaznam_prum_den.vozidlo_id', 'asc');
157

  
158
        return $query->get();
159

  
160
    }
161

  
89 162
    /**
90 163
     * Vrati zaznamy pro urcite zarizeni.
91 164
     * Typ vozidla je vracen s kazdym zaznamem.

Také k dispozici: Unified diff