HEX
Server: Microsoft-IIS/8.5
System: Windows NT YDAWBH120 6.3 build 9600 (Windows Server 2012 R2 Standard Edition) AMD64
User: tentjecom_web (0)
PHP: 7.4.14
Disabled: NONE
Upload Files
File: D:/HostingSpaces/SBogers10/komma.pro/app/KommaApp/Blocks/BlockService.php
<?php
/**
 * Created by PhpStorm.
 * User: mike
 * Date: 27/07/2018
 * Time: 15:22
 */

namespace App\KommaApp\Blocks;


use App\KommaApp\Images\ImageService;

class BlockService
{
    /**
     * @var ImageService
     */
    private $imageService;

    /**
     * @var string
     * Used as folder for default view templates
     */
    private $subFolder;

    public function __construct(ImageService $imageService)
    {
        $this->imageService = $imageService;
    }

    /**
     * @param $jsonBlocks
     * @param string $defaultViewFolder
     * @return \Illuminate\Support\Collection
     */
    public function decode($jsonBlocks)
    {
        // Create empty collection which we will return
        $dynamicBlocks = collect();

        // Decode json
        $decodedBlocks = json_decode($jsonBlocks);

        // Loop through decoded blocks
        foreach ($decodedBlocks as $dynamicBlock){

            // Attach files to dynamic block
            if(isset($dynamicBlock->fileIds)) $dynamicBlock->images = $this->imageService->getDynamicBlockImages( $dynamicBlock->fileIds );

            // Set a default view
            if(empty($dynamicBlock->view)) $dynamicBlock->view = $this->setDefaultView($dynamicBlock);

            // Push to collection
            $dynamicBlocks->push($dynamicBlock);
        }

        return $dynamicBlocks;
    }

    /**
     * @param string $subFolder
     */
    public function setSubFolder(string $subFolder)
    {
        $this->subFolder = $subFolder;
    }

    /**
     * Set default view for a dynamicBlock
     * @param $dynamicBlock
     * @return string
     */
    private function setDefaultView($dynamicBlock)
    {
        $dynamicBlock->view = 'site.blocks';
        // Add sub-folder if set
        if( ! empty($this->subFolder)) $dynamicBlock->view .= '.' . $this->subFolder;
        // Add typeSlug as default file name
        $dynamicBlock->view .= '.' . camel_case($dynamicBlock->typeSlug);

        return $dynamicBlock->view;
    }
}