MissingTraitOnModel::setTrait()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 2
c 1
b 0
f 0
dl 0
loc 5
rs 10
cc 1
nc 1
nop 1
1
<?php
2
3
namespace Spatie\ModelStates\Exceptions;
4
5
use Facade\IgnitionContracts\BaseSolution;
6
use Facade\IgnitionContracts\ProvidesSolution;
7
use Facade\IgnitionContracts\Solution;
8
9
class MissingTraitOnModel extends InvalidConfig implements ProvidesSolution
10
{
11
    /** @var string */
12
    protected $modelClass;
13
14
    /** @var string */
15
    protected $trait;
16
17
    public static function make(string $modelClass, string $trait): self
18
    {
19
        return (new static("The method `resolveTransition` was not found on model `{$modelClass}`, are you sure it uses the `{$trait} trait?`"))
20
            ->setModelClass($modelClass)
21
            ->setTrait($trait);
22
    }
23
24
    public function setModelClass(string $modelClass): self
25
    {
26
        $this->modelClass = $modelClass;
27
28
        return $this;
29
    }
30
31
    public function setTrait(string $trait): self
32
    {
33
        $this->trait = $trait;
34
35
        return $this;
36
    }
37
38
    public function getSolution(): Solution
39
    {
40
        return BaseSolution::create('Missing trait on model')
41
            ->setSolutionDescription("Use the `{$this->trait}` trait on `{$this->modelClass}`")
42
            ->setDocumentationLinks([
43
                'Configuring states' => 'https://docs.spatie.be/laravel-model-states/v1/working-with-states/01-configuring-states/',
44
            ]);
45
    }
46
}
47