Вход Регистрация
Файл: vendor/spatie/laravel-ignition/src/Solutions/SolutionTransformers/LaravelSolutionTransformer.php
Строк: 104
<?php

namespace SpatieLaravelIgnitionSolutionsSolutionTransformers;

use 
SpatieIgnitionContractsRunnableSolution;
use 
SpatieIgnitionSolutionsSolutionTransformer;
use 
SpatieLaravelIgnitionHttpControllersExecuteSolutionController;
use 
Throwable;

class 
LaravelSolutionTransformer extends SolutionTransformer
{
    
/** @return array<string|mixed> */
    
public function toArray(): array
    {
        
$baseProperties parent::toArray();

        if (! 
$this->isRunnable()) {
            return 
$baseProperties;
        }

        
/** @var RunnableSolution $solution Type shenanigans */
        
$solution $this->solution;

        
$runnableProperties = [
            
'is_runnable' => true,
            
'action_description' => $solution->getSolutionActionDescription(),
            
'run_button_text' => $solution->getRunButtonText(),
            
'execute_endpoint' => $this->executeEndpoint(),
            
'run_parameters' => $solution->getRunParameters(),
        ];

        return 
array_merge($baseProperties$runnableProperties);
    }

    protected function 
isRunnable(): bool
    
{
        if (! 
$this->solution instanceof RunnableSolution) {
            return 
false;
        }

        if (! 
$this->executeEndpoint()) {
            return 
false;
        }

        return 
true;
    }

    protected function 
executeEndpoint(): ?string
    
{
        try {
            
// The action class needs to be prefixed with a `` to Laravel from trying
            // to add its own global namespace from RouteServiceProvider::$namespace.

            
return action('\'.ExecuteSolutionController::class);
        } catch (Throwable $exception) {
            report($exception);

            return null;
        }
    }
}
Онлайн: 0
Реклама