<?php

namespace App\Http\Controllers;

use App\Mqtt_data_request;
use App\Stanice;

class MarkerDataController extends Controller
{
    public $allData = [];
    public const DEFAULT_TOPIC = 'data';

    public function getDataFromDB($id_Stanice = null):void
    {
        $stanice = new StaniceController();
        $stanice->getStanice($id_Stanice);
        foreach ($stanice->stanice as $idStanice => $staniceInfo)
        {

            $this->allData[$idStanice]['info'] = $staniceInfo;
            foreach (Mqtt_data_request::getData($idStanice) as $data)
            {
                $this->allData[$idStanice]['aktualizace']=$data->vlozeny;
                if($data->topic === self::DEFAULT_TOPIC)
                {
                    /** @var Stanice $jsonDecode */
                    $jsonDecode = json_decode($data->data, false, 512, JSON_THROW_ON_ERROR);
                    unset($data->data);
                    foreach ($jsonDecode as $index => $pole)
                    {
                        $polozky = new VizitkaDefineController($idStanice,$pole->name);
                        if($polozky->checkVizitkaPolozka()===1)
                        {
                            $vizitkaNazvoslovi = new PrevodHodnotController($idStanice);
                            $nazvoslovi = $vizitkaNazvoslovi->getNazvosloviVelicinyAJednotka($pole->name);
                            if($nazvoslovi)
                            {
                                $this->allData[$idStanice][][$nazvoslovi[0]->nazev] = $pole->value. ' ' .$nazvoslovi[0]->jednotka;
                            }
                            else
                            {
                                $this->allData[$idStanice][][$pole->name]= $pole->value;
                            }
                        }
                    }
                }
                else
                {
                    $polozky = new VizitkaDefineController($idStanice,$data->topic);
                    if($polozky->checkVizitkaPolozka()===1)
                    {
                        $vizitkaNazvoslovi = new PrevodHodnotController($idStanice);
                        $nazvoslovi = $vizitkaNazvoslovi->getNazvosloviVelicinyAJednotka($data->topic);
                        if($nazvoslovi)
                        {
                            $this->allData[$idStanice][][$nazvoslovi[0]->nazev] = $data->data. ' ' .$nazvoslovi[0]->jednotka;
                        }
                        else
                        {
                            $this->allData[$idStanice][][$data->topic] = $data->data;
                        }

                    }
                }
            }
        }
    }
}
