<?php namespace Eae\Composers\Frontend;


use Eae\Composers\Frontend\Traits\DynamicBlocksTrait;
use Story;

class StoryComposer
{

  use DynamicBlocksTrait;

  public function compose($view)
  {
    $viewData = $view->getData();
    $entryID = NULL;
    $parameters = '';
    $slug = '';

    if (isset($viewData['object'])) {
      $viewObject = $viewData['object'];
      $entryID = $viewObject['entry_id'];
      $parameters = $viewData['parameters'];
      $slug = last($parameters);
    }

    $dynamicBlocks = $this->_buildBlocks($slug);

    $view->with([
      'dynamicBlocks' => $dynamicBlocks,
    ]);
  }

  private function _buildBlocks($slug)
  {
    $story = Story::full()
      ->where("lang_slug", $slug)
      ->with(['blocks' => function ($query) {
        $query->full()
          ->select('*')
          ->orderBy('website_objects.position', 'asc');
      }])
      ->first();

    $blocks = $story->blocks;

    $dynamicBlocks = $this->_generateDynamicBlocks($blocks);

    return $dynamicBlocks;
  }
}
