<?php namespace Eae\Composers\Frontend\Traits;

use Config;
use View;
use Slider;

trait DynamicBlocksTrait
{
  private function _generateDynamicBlocks($blocks)
  {
    $views = [];
    foreach ($blocks as $block) {
      switch ($block->block_type) {
        case 'title':
          $data = [
            'title' => $block->block_title,
          ];
          break;
        case 'subtitle':
          $data = [
            'subtitle' => nl2br($block->block_subtitle),
          ];
          break;
        case 'image':
          $data = [
            'image'       => (isset($block->image_id)) ? getMediaUrl($block->image->filename, 'Resize870xAuto') : NULL,
            'image_title' => nl2br($block->block_image_title),
          ];
          break;
        case 'wysiwyg':
          $data = [
            'wysiwyg' => $block->block_wysiwyg,
          ];
          break;
        case 'cta':
          $data = [
            'cta_title' => $block->block_cta_title,
            'cta_url'   => $block->block_cta_url
          ];
          break;
        case 'slider':
          $data = [
            'slider' => $this->_generateSlider($block->slider_id),
          ];
          break;
      }

      array_push($views, View::make('frontend.components.blocks.' . $block->block_type, $data));
    }

    return $views;
  }

  private function _generateSlider($sliderID)
  {
    if (is_null($sliderID)) {
      return NULL;
    }

    $slider = Slider::full()
      ->where("id", $sliderID)
      ->with(['slides' => function ($query) {
        $query->full()
          ->select('*')
          ->orderBy('website_objects.position', 'asc');
      }])
      ->first();

    $slides = $slider->slides;

    return $slides;
  }
}
