<?php namespace Eae\Composers\Frontend;

use Eae\Transformation\Transformer\Frontend\MainMenuTransformer;
use Menu;
use TransformService;


class HeaderComposer
{
  public function compose($view)
  {
    $viewData = $view->getData();
    $entryID = NULL;
    $uri = '';
    if (isset($viewData['object'])) {
      $viewObject = $viewData['object'];
      $entryID = $viewObject['entry_id'];
      $uri = $viewObject['uri'];

    }

    // Get Main Navigation
    $mainMenu = $this->getMenu($entryID, $uri);

    // Get Language
    $locales = getLangForHeader();

    $activeLocale = getActiveLangForHeader();

    $view->with([
      'mainMenu'     => $mainMenu,
      'locales'      => $locales,
      'activeLocale' => $activeLocale
    ]);
  }

  private function getMenu($entryID, $uri)
  {
    $mainMenu = [];
    $dbMenu = Menu::with(['menuItems' => function ($query) {
      $query
        ->where('active', TRUE)
        ->orderBy('position', 'asc');
    }])->where('slug', 'main-menu')->first();

    if ($dbMenu) {
      foreach ($dbMenu->menuItems as $menuItem) {
        $menuItem = TransformService::transformItem(
          $menuItem,
          new MainMenuTransformer($entryID, $uri)
        )->toArray();
        $mainMenu[] = $menuItem;
      }
    }

    return $mainMenu;
  }
}
