Completed
Pull Request — master (#23)
by Travis
09:08
created

UnknownState   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 38
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 2

Importance

Changes 0
Metric Value
wmc 4
lcom 1
cbo 2
dl 0
loc 38
rs 10
c 0
b 0
f 0

4 Methods

Rating   Name   Duplication   Size   Complexity  
A make() 0 6 1
A setField() 0 6 1
A setModelClass() 0 6 1
A getSolution() 0 8 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 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