UnableToRenderException::__construct()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 1
c 0
b 0
f 0
nc 1
nop 2
dl 0
loc 3
rs 10
1
<?php
2
3
namespace Riclep\Storyblok\Exceptions;
4
5
use Exception;
6
use Spatie\Ignition\Contracts\Solution;
7
use Spatie\Ignition\Contracts\BaseSolution;
8
use Spatie\Ignition\Contracts\ProvidesSolution;
9
use Illuminate\Support\Str;
10
use Riclep\Storyblok\Solutions\CreateMissingBlockSolution;
11
12
class UnableToRenderException extends Exception implements ProvidesSolution
13
{
14
15
	public function __construct($message, protected $data)
16
	{
17
		parent::__construct($message);
18
	}
19
20
	/** @return  \Spatie\Ignition\Contracts\Solution */
21
	public function getSolution(): Solution
22
	{
23
		if (get_class($this->data) === 'App\Storyblok\Block') {
24
			return new CreateMissingBlockSolution($this->data);
25
		}
26
27
		if (count($this->data->_componentPath) === 1) {
28
			if (get_class($this->data) === 'App\Storyblok\Page') {
29
				$title = 'Create a view or custom Page class';
30
				$description = 'Create one of the following views: `[' . implode(', ', $this->data->views()) . ']` or a create Page class called `App\Storyblok\Pages\\' . Str::studly($this->data->block()->component()) . '` and override the `views()` method implementing your own view finding logic.';
31
			} else {
32
				$title = 'Create a view or implement view logic';
33
				$description = 'Create one of the following views: `[' . implode(', ', $this->data->views()) . ']` or override the `views()` method in `App\Storyblok\Pages\\' . Str::studly($this->data->block()->component()) . '` and implement your own view finding logic.';
34
			}
35
		} else {
36
			$title = 'Create a view or implement view logic';
37
			$description = 'Create one of the following views: `[' . implode(', ', $this->data->views()) . ']` or override the `views()` method in `App\Storyblok\Blocks\\' . Str::studly($this->data->meta()['component']) . '` and implement your own view finding logic.';
38
		}
39
40
		return BaseSolution::create($title)
41
			->setSolutionDescription($description)
42
			->setDocumentationLinks([
43
				'Laravel Storyblok docs' => 'https://ls.sirric.co.uk/docs/',
44
			]);
45
	}
46
47
48
}