Appzcoder\CrudGenerator\Commands\CrudControllerCommand::buildClass PHP Method

buildClass() protected method

Build the model class with the given name.
protected buildClass ( string $name ) : string
$name string
return string
    protected function buildClass($name)
    {
        $stub = $this->files->get($this->getStub());
        $viewPath = $this->option('view-path') ? $this->option('view-path') . '.' : '';
        $crudName = strtolower($this->option('crud-name'));
        $crudNameSingular = str_singular($crudName);
        $modelName = $this->option('model-name');
        $modelNamespace = $this->option('model-namespace');
        $routeGroup = $this->option('route-group') ? $this->option('route-group') . '/' : '';
        $perPage = intval($this->option('pagination'));
        $viewName = snake_case($this->option('crud-name'), '-');
        $fields = $this->option('fields');
        $validations = rtrim($this->option('validations'), ';');
        $validationRules = '';
        if (trim($validations) != '') {
            $validationRules = "\$this->validate(\$request, [";
            $rules = explode(';', $validations);
            foreach ($rules as $v) {
                if (trim($v) == '') {
                    continue;
                }
                // extract field name and args
                $parts = explode('#', $v);
                $fieldName = trim($parts[0]);
                $rules = trim($parts[1]);
                $validationRules .= "\n\t\t\t'{$fieldName}' => '{$rules}',";
            }
            $validationRules = substr($validationRules, 0, -1);
            // lose the last comma
            $validationRules .= "\n\t\t]);";
        }
        $snippet = <<<EOD
if (\$request->hasFile('{{fieldName}}')) {
    \$uploadPath = public_path('/uploads/');

    \$extension = \$request->file('{{fieldName}}')->getClientOriginalExtension();
    \$fileName = rand(11111, 99999) . '.' . \$extension;

    \$request->file('{{fieldName}}')->move(\$uploadPath, \$fileName);
    \$requestData['{{fieldName}}'] = \$fileName;
}
EOD;
        $fieldsArray = explode(';', $fields);
        $fileSnippet = '';
        if ($fields) {
            $x = 0;
            foreach ($fieldsArray as $item) {
                $itemArray = explode('#', $item);
                if (trim($itemArray[1]) == 'file') {
                    $fileSnippet .= "\n\n" . str_replace('{{fieldName}}', trim($itemArray[0]), $snippet) . "\n";
                }
            }
        }
        return $this->replaceNamespace($stub, $name)->replaceViewPath($stub, $viewPath)->replaceViewName($stub, $viewName)->replaceCrudName($stub, $crudName)->replaceCrudNameSingular($stub, $crudNameSingular)->replaceModelName($stub, $modelName)->replaceModelNamespace($stub, $modelNamespace)->replaceRouteGroup($stub, $routeGroup)->replaceValidationRules($stub, $validationRules)->replacePaginationNumber($stub, $perPage)->replaceFileSnippet($stub, $fileSnippet)->replaceClass($stub, $name);
    }