Example #1
0
 /**
  * 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;
 }