UnknownState::make()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 3
c 1
b 0
f 0
dl 0
loc 5
rs 10
cc 1
nc 1
nop 2
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 UnknownState extends InvalidConfig implements ProvidesSolution
10
{
11
    /** @var string */
12
    protected $field;
13
14
    /** @var string */
15
    protected $modelClass;
16
17
    public static function make(string $field, string $modelClass): self
18
    {
19
        return (new static("No state field found for {$modelClass}::{$field}, did you forget to provide a mapping in {$modelClass}::registerStates()?"))
20
            ->setField($field)
21
            ->setModelClass($modelClass);
22
    }
23
24
    public function setField(string $field): self
25
    {
26
        $this->field = $field;
27
28
        return $this;
29
    }
30
31
    public function setModelClass(string $modelClass): self
32
    {
33
        $this->modelClass = $modelClass;
34
35
        return $this;
36
    }
37
38
    public function getSolution(): Solution
39
    {
40
        return BaseSolution::create('The state field is unknown')
41
            ->setSolutionDescription("Add the `{$this->field}` field to the `registerStates` method inside `{$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