* @author Connor S. Parks */ class MetricsComposer { /** * The illuminate config instance. * * @var \Illuminate\Contracts\Config\Repository */ protected $config; /** * The user session object. * * @var \Illuminate\Contracts\Auth\Guard */ protected $guard; /** * Create a new metrics composer instance. * * @param \Illuminate\Contracts\Config\Repository $config * @param \Illuminate\Contracts\Auth\Guard $guard * * @return void */ public function __construct(Repository $config, Guard $guard) { $this->config = $config; $this->guard = $guard; } /** * Bind data to the view. * * @param \Illuminate\Contracts\View\View $view * * @return void */ public function compose(View $view) { $displayMetrics = $this->config->get('setting.display_graphs'); $metrics = $this->getVisibleMetrics($displayMetrics); $view->withDisplayMetrics($displayMetrics) ->withMetrics($metrics); } /** * Get visible grouped components. * * @param bool $displayMetrics * * @return \Illuminate\Support\Collection|void */ protected function getVisibleMetrics($displayMetrics) { if (!$displayMetrics) { return; } $metrics = Metric::displayable(); if (!$this->guard->check()) { $metrics->visible(); } return $metrics->orderBy('order')->orderBy('id')->get(); } }