jjsoft-ar/siges-core

View on GitHub
src/EntityGenerator/Middleware/EntityGeneratorValidator.php

Summary

Maintainability
A
1 hr
Test Coverage
<?php

namespace JJSoft\SigesCore\EntityGenerator\Middleware;

use JJSoft\SigesCore\Exceptions\CommandValidationException;
use League\Tactician\Middleware;
use Illuminate\Support\Facades\Validator;

/**
 * Class EntityGeneratorValidator
 * @package JJSoft\SigesCore\EntityGenerator\Middleware
 */
class EntityGeneratorValidator implements Middleware
{
    /**
     * @var
     */
    public $validator;

    /**
     * validation rules
     * @var array
     */
    public $rules = [
        'namespace' => 'required',
        'name' => 'required',
        'description' => 'required',
        'slug' => 'required',
        'locked' => 'required|boolean'
    ];

    /**
     * @param Validator $validator
     */
    public function __construct(Validator $validator)
    {
        $this->validator = $validator;
    }


    /**
     * Validates the data coming into the handler
     * @param object $command
     * @param callable $next
     * @return mixed
     * @throws CommandValidationException
     */
    public function execute($command, callable $next)
    {
        $validator = Validator::make((array) $command, $this->rules);
        if ($validator->fails()) {
            throw new CommandValidationException($validator);
        }
        return $next($command);
    }
}