TransitionNotAllowed::setTransitionClass()   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 TransitionNotAllowed extends CouldNotPerformTransition implements ProvidesSolution
10
{
11
    /** @var string */
12
    protected $transitionClass;
13
14
    public static function make(string $modelClass, string $transitionClass): self
15
    {
16
        return (new static("The transition `{$transitionClass}` is not allowed on model `{$modelClass}` at the moment."))
17
            ->setTransitionClass($transitionClass);
18
    }
19
20
    public function setTransitionClass(string $transitionClass): self
21
    {
22
        $this->transitionClass = $transitionClass;
23
24
        return $this;
25
    }
26
27
    public function getSolution(): Solution
28
    {
29
        return BaseSolution::create('Transition not allowed')
30
            ->setSolutionDescription("Review your implementation of `canTransition` in {$this->transitionClass} if this is unexpected")
31
            ->setDocumentationLinks([
32
                'Custom transition classes' => 'https://docs.spatie.be/laravel-model-states/v1/working-with-transitions/02-custom-transition-classes/',
33
            ]);
34
    }
35
}
36