| 1 | <?php  | 
            ||
| 10 | class ClassDoesNotExtendBaseClass extends InvalidConfig implements ProvidesSolution  | 
            ||
| 11 | { | 
            ||
| 12 | protected string $class;  | 
            ||
| 
                                                                                                    
                        
                         | 
                |||
| 13 | |||
| 14 | protected string $baseClass;  | 
            ||
| 15 | |||
| 16 | public static function make(string $class, string $baseClass): self  | 
            ||
| 17 |     { | 
            ||
| 18 |         return (new static("Class {$class} does not extend the `{$baseClass}` base class.")) | 
            ||
| 19 | ->setClass($class)  | 
            ||
| 20 | ->setBaseClass($baseClass);  | 
            ||
| 21 | }  | 
            ||
| 22 | |||
| 23 | public function setClass(string $class): self  | 
            ||
| 24 |     { | 
            ||
| 25 | $this->class = $class;  | 
            ||
| 26 | |||
| 27 | return $this;  | 
            ||
| 28 | }  | 
            ||
| 29 | |||
| 30 | public function setBaseClass(string $baseClass): self  | 
            ||
| 31 |     { | 
            ||
| 32 | $this->baseClass = $baseClass;  | 
            ||
| 33 | |||
| 34 | return $this;  | 
            ||
| 35 | }  | 
            ||
| 36 | |||
| 37 | public function getSolution(): Solution  | 
            ||
| 38 |     { | 
            ||
| 39 | $documentationLinks = Str::endsWith($this->baseClass, 'State')  | 
            ||
| 40 | ? ['Configuring states' => 'https://docs.spatie.be/laravel-model-states/v1/working-with-states/01-configuring-states/']  | 
            ||
| 41 | : ['Custom transition classes' => 'https://docs.spatie.be/laravel-model-states/v1/working-with-transitions/02-custom-transition-classes/'];  | 
            ||
| 42 | |||
| 43 |         return BaseSolution::create('') | 
            ||
| 44 |             ->setSolutionDescription("Make sure that `{$this->class}` extends `{$this->baseClass}`") | 
            ||
| 45 | ->setDocumentationLinks($documentationLinks);  | 
            ||
| 46 | }  | 
            ||
| 47 | }  | 
            ||
| 48 |