/** * Generate json data for graph * * @return array */ public function getJsonData() { $graphData = []; $count = 0; $listGraph = array_merge(['overall' => 'Overall'], Category::lists('name', 'slug')->toArray()); $graphData = array_add($graphData, 'title', $this->name); $graphData = array_add($graphData, 'series', []); $graphData = array_add($graphData, 'xAxis', []); $inspections = $this->inspections()->limit(10)->get(); $inspectionsScore = $inspections->map(function ($item) { if ($item->status == '2') { return (double) $item->score; } return null; })->toArray(); foreach ($this->inspections as $inspection) { array_push($graphData['xAxis'], '#' . $inspection->sequence_number); } foreach ($listGraph as $slug => $name) { array_set($series, $count . '.name', $name); if ($slug == 'overall') { array_set($series, $count . '.data', $inspectionsScore); } else { array_set($series, $count . '.data', $this->getScoreByCategorySlug($inspections, $slug)); } $count++; } array_set($graphData, 'series', $series); return $graphData; }