/** * Funcao para edicao da config do [Modulo] * @param string $controller Nome do controlador * @return void */ public function getFile($controller) { // $this->logic->_getConfigFiles(); // Busca o arquivo especificado $cfg_file = mkny_model_config_path($controller) . '.php'; // Field types $f_types = array_unique(array_values(app()->make('Mkny\\Cinimod\\Logic\\AppLogic')->_getFieldTypes())); // Se o diretorio nao existir if (!realpath(dirname($cfg_file))) { \File::makeDirectory(dirname($cfg_file)); } // Config file data if (!\File::exists($cfg_file)) { $stub = \File::get(__DIR__ . '/../Commands/stubs/model_config.stub'); \Mkny\Cinimod\Logic\UtilLogic::translateStub(array('var_fields_data' => ''), $stub); \File::put($cfg_file, $stub); } // Config file data $config_str = \File::getRequire($cfg_file)['fields']; // Pula o primeiro indice // array_shift($config_str); $valOrder = 1; // Fornece o tipo "types" para todos os campos, para selecao foreach ($config_str as $key => $value) { if (!is_array($config_str[$key])) { $config_str[$key] = array(); } $config_str[$key]['name'] = $key; $config_str[$key]['type'] = isset($value['type']) ? $value['type'] : 'string'; $config_str[$key]['form_add'] = isset($value['form_add']) ? $value['form_add'] : true; $config_str[$key]['form_edit'] = isset($value['form_edit']) ? $value['form_edit'] : true; $config_str[$key]['grid'] = isset($value['grid']) ? $value['grid'] : true; $config_str[$key]['relationship'] = isset($value['relationship']) ? $value['relationship'] : false; $config_str[$key]['required'] = isset($value['required']) ? $value['required'] : false; $config_str[$key]['searchable'] = isset($value['searchable']) ? $value['searchable'] : false; $config_str[$key]['order'] = isset($value['order']) ? $value['order'] : $valOrder++; $config_str[$key]['types'] = array_combine($f_types, $f_types); } if (isset(array_values($config_str)[1]['order'])) { usort($config_str, function ($dt, $db) { if (!isset($db['order'])) { $db['order'] = 0; } if (isset($dt['order'])) { return $dt['order'] - $db['order']; } else { return 0; } }); $newConfig = []; foreach ($config_str as $sortfix) { $newConfig[$sortfix['name']] = $sortfix; } $config_str = $newConfig; } $data['controller'] = $controller; $data['data'] = $config_str; return view('cinimod::admin.generator.config_detailed_new')->with($data); // return view('cinimod::admin.generator.config_detailed')->with($data); }
/** * Build the model class with the given name. * * @param string $name * @return string */ protected function buildClass($name) { $stub = $this->files->get($this->getStub()); // Setta as variaveis de classe $this->setClassVariables(); // Traduz a stub Logic\UtilLogic::translateStub($this->translation, $stub); // Termina a traducao da stub e retorna return $this->replaceNamespace($stub, $name)->replaceClass($stub, $name); }
/** * Funcao para buscar e montar o sistema de relacionamentos do Eloquent * * @param string $table Nome da tabela que sera gerada * @return string Funcao gerada */ public function _getRelations($table) { $this->var_config_relations = []; $stubModelConfig = $this->files->get(__DIR__ . '/stubs/model_function_relation.stub'); // Pega os relacionamentos no banco $AppLogic = new Logic\AppLogic(); $relations = $AppLogic->buildRelationships($table); // dd($relations); $field_types = $AppLogic->_getFieldTypes(); if ($relations) { $stubs = []; foreach ($relations as $rel) { // Copia a stub mae $stub_child = trim(substr(trim($stubModelConfig), 5)) . "\n\n"; // Tentativa fim // Trampo pra pegar a primeira coluna para o possivel nome do campo $columns = $AppLogic->buildColumns($rel->table_primary, $rel->schema_primary); $field_name = $columns[0]->name; foreach ($columns as $column) { if ($field_types[$column->type] == 'string') { $field_name = $column->name; break; } } // Setta as configuracoes $arrConfig = array('relation_class_name' => $AppLogic->controllerName($rel->table_primary), 'relation_field_id' => $rel->table_foreign_field, 'relation_field_fkey' => $rel->table_primary_field, 'relation_field_name' => $field_name); // Tentativa de automatizar o processo, na criacao da var_config $this->var_config_relations[$rel->table_foreign_field] = $arrConfig; // Traduz a stub Logic\UtilLogic::translateStub($arrConfig, $stub_child); $stubs[] = $stub_child; } return implode("\n\n", $stubs); } else { return ''; } }
/** * Monta o template do configurador de model (var) * * @return array Dados do config */ private function _getModelConfig($table) { $stubModelConfig = $this->files->get(__DIR__ . '/stubs/model_config_fields.stub'); // Pega as colunas da tabela do banco $AppLogic = new Logic\AppLogic(); $columns = $AppLogic->buildColumnsWithKeys($table); $field_types = $AppLogic->_getFieldTypes(); $stubs = []; foreach ($columns as $indice => $row) { // Copia a stub mae $stub_child = trim(substr(trim($stubModelConfig), 5)) . "\n\n"; // Setta as configuracoes $arrConfig = array('var_name' => $row->name, 'var_type' => $indice === 0 ? 'primaryKey' : $row->type, 'var_type_laravel' => $indice === 0 ? 'primaryKey' : $field_types[$row->type], 'go_to_grid' => 'true', 'go_to_form_add' => $indice === 0 ? 'false' : 'true', 'go_to_form_edit' => $indice === 0 ? 'false' : 'true', 'is_required' => $row->is_null == 'NO' ? 'true' : 'false', 'var_relationship' => 'false', 'var_values' => 'false', 'num_ordem' => $indice); // Trampa nos values pre-definidos if (isset($row->def_constraint) && !empty($row->def_constraint)) { // var_dump($col->def_constraint);exit; $check = $AppLogic->_getCheck($row->def_constraint); $arrConfig['var_type_laravel'] = 'select'; $arrConfig['var_values'] = "['" . implode("','", $check) . "']"; } // Trampa na relacao if (isset($this->var_config_relations[$row->name])) { $arrConfig['var_type_laravel'] = 'select'; // variabilizar o relationship $arrConfig['var_relationship'] = "\n\t[\n\t\t" . "'model' => '\\App\\Models\\" . $this->var_config_relations[$row->name]['relation_class_name'] . "',\n\t\t" . "'field_key' => '{$this->var_config_relations[$row->name]['relation_field_id']}',\n\t\t" . "'field_fkey' => '{$this->var_config_relations[$row->name]['relation_field_fkey']}',\n\t\t" . "'field_show' => '{$this->var_config_relations[$row->name]['relation_field_name']}',\n\t\t" . "'where' => false,\n\t\t" . "]\n\t"; } // Trampa fim // Traduz a stub Logic\UtilLogic::translateStub($arrConfig, $stub_child); $stubs[] = $stub_child; } return implode("\n\n", $stubs); }