/** * 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); }
public function __construct() { Logic\UtilLogic::addViewVar('scripts', ['/js/cinimod.js']); }
/** * Funcao para buscar a configuracao do [Model], baseado na area que ele esteja sendo chamado * * @param string $type * @return array */ public function _getConfig($model, $type = 'all') { $config = []; $cfg = UtilLogic::load(mkny_model_config_path($model) . '.php')['fields']; // mdd($cfg); // $cfg = Logic\UtilLogic::load(mkny_model_config_path(class_basename($model)).'.php')['fields']; switch ($type) { case 'datagrid': $config = array_filter($cfg, function ($var) { return isset($var['grid']) && $var['grid'] == 1; }); break; case 'form_add': $config = array_filter($cfg, function ($var) { return isset($var['form_add']) && $var['form_add'] == 1; }); break; case 'form_edit': $config = array_filter($cfg, function ($var) { return isset($var['form_edit']) && $var['form_edit'] == 1; }); break; case 'search': $config = array_filter($cfg, function ($var) { return isset($var['searchable']) && $var['searchable'] == 1; }); break; case 'all': default: $config = $cfg; break; } if (isset(array_values($config)[1]['order'])) { usort($config, function ($dt, $db) { if (!isset($db['order'])) { $db['order'] = 0; } if (isset($dt['order'])) { return $dt['order'] - $db['order']; } else { return 0; } }); // mdd($config); $newConfig = []; foreach ($config as $sortfix) { $newConfig[$sortfix['name']] = $sortfix; } $config = $newConfig; } return $config; }
/** * Retorna as configuracoes do datagrid * //Retorna o filtro padrao (definido no arquivo de configuracao) * * @return array Filtros where em 'raw' ja tratado */ protected function _getDefaultFilter() { // exit('abacate'); $filters = Logic\UtilLogic::load(mkny_model_config_path(class_basename($this)) . '.php')['grid']['pre-filter']; foreach ($filters as $kfilter => $filter) { // Tratamento para parametros de where $matches = array(); // Verifica as ocorrencias de variaveis enclausuradas preg_match('/\\{(.*?)\\}/', $filter, $matches); if (count($matches)) { $replace = null; eval('$replace = ' . $matches[1] . ';'); $filters[$kfilter] = str_replace($matches[0], $replace, $filter); } } return $filters; }
/** * 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 ''; } }
/** * Recebe o array da config e monta corretamente * * @param string $controller Nome do controlador * @return void */ public function postFile($module) { // Arquivo de configuracao $cfg_file = mkny_model_config_path($module) . '.php'; \Mkny\Cinimod\Logic\UtilLogic::updateConfigFile($cfg_file, \Request::all()); // Volta para a tela de selecao return redirect()->route('adm::config')->with(array('status' => 'success', 'message' => 'Arquivo atualizado!')); }
/** * 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); }
public function getCombo() { $fields = app()->make('\\Mkny\\Cinimod\\Logic\\UtilLogic')->_getConfig($this->_getControllerName(), 'form_add'); $field_request = \Request::input('method_name'); $data = $this->model->relation($fields[Logic\UtilLogic::array_finder($fields, $field_request)]['relationship'], \Request::input('filter')); // return jsonp([ // 'status' => 'success', // 'data' => $data // ]); return ['status' => 'success', 'data' => $data]; }
public function postFile($lang, $module = false) { // Armazena os dados enviados $req_fields = \Request::all(); if (isset($req_fields['new_fields'])) { // Percorre todos os indices, em busca de novos fields foreach ($req_fields['new_fields']['key'] as $key_field => $new_field) { $to_set = $req_fields['new_fields']['value'][$key_field]; // Faz o nest pro item \Mkny\Cinimod\Logic\UtilLogic::setNestedArrayValue($req_fields, $new_field, $to_set, '.'); } unset($req_fields['new_fields']); } // mdd($req_fields); // if (isset($req_fields['new_file_name'])) { // return redirect()->route('adm::trans', [$lang, $req_fields['new_file_name']]); // } // Arquivo de configuracao $cfg_file = mkny_lang_path($lang . '/' . $module) . '.php'; \Mkny\Cinimod\Logic\UtilLogic::updateConfigFile($cfg_file, $req_fields); // Volta para a tela de selecao return redirect()->action('\\' . get_class($this) . '@postFile', [$lang, $module])->with(array('status' => 'success', 'message' => 'Arquivo atualizado!')); }