public static function load_nodes_excel($path, $return = '') { $languages = \Solunes\Master\App\Language::get(); \Excel::load($path, function ($reader) use($return, $languages) { foreach ($reader->get() as $sheet) { $sheet_name = $sheet->getTitle(); $sheet->each(function ($row) use($sheet_name, $return, $languages) { $node = \Solunes\Master\App\Node::where('name', $row->node)->first(); if ($sheet_name == 'create-fields') { if ($node) { if ($node->location == 'package') { $lang_folder = 'master::fields.'; } else { $lang_folder = 'fields.'; } $field = new \Solunes\Master\App\Field(); $field->parent_id = $node->id; $field->name = $row->name; $field->trans_name = $row->trans_name; foreach ($languages as $language) { \App::setLocale($language->code); $field->translateOrNew($language->code)->label = trans($lang_folder . $row->trans_name); } \App::setLocale('es'); $field->type = $row->type; $field->display_list = $row->display_list; $field->display_item = $row->display_item; $field->multiple = $row->multiple; $field->translation = $row->translation; $field->required = $row->required; $field->order = $row->order; $field->new_row = $row->new_row; $field->preset = $row->preset; $field->message = $row->message; $field->value = $row->value; $field->save(); } else { $return .= 'ALERTA: No se encontró el nodo ' . $row->node . '.\\n'; } } else { if ($node && ($field = $node->fields()->where('name', $row->field)->first())) { if ($sheet_name == 'edit-fields') { $column = $row->column; $field->{$column} = $row->new_value; $field->save(); } else { if ($sheet_name == 'extras') { if ($extra = $field->field_extras()->where('type', $row->type)->first()) { $extra->value = $row->new_value; } else { $extra = new \Solunes\Master\App\FieldExtra(); $extra->parent_id = $field->id; $extra->type = $row->type; $extra->value = $row->new_value; } $extra->save(); } else { if ($sheet_name == 'conditionals') { $conditional = new \Solunes\Master\App\FieldConditional(); $conditional->parent_id = $field->id; $conditional->trigger_field = $row->trigger_field; $conditional->trigger_show = $row->trigger_show; $conditional->trigger_value = $row->trigger_value; $conditional->save(); } } } } else { $return .= 'ALERTA: No se encontró el campo ' . $row->field . ' o nodo ' . $row->node . '.\\n'; } } }); } }); return $return; }
/** * Execute the console command. * * @return mixed */ public function handle() { $this->info('0%: Generador de Nodos iniciado.'); $this->info('20%: Las tablas fueron limpiadas.'); $nodes = \Solunes\Master\App\Node::get(); $total_count = 0; \App::setLocale('es'); $languages = \Solunes\Master\App\Language::get(); $menu_dashboard = \Solunes\Master\App\Menu::create(['menu_type' => 'admin', 'permission' => 'dashboard', 'icon' => 'dashboard']); foreach ($languages as $language) { \App::setLocale($language->code); $menu_dashboard->translateOrNew($language->code)->name = trans('master::admin.dashboard'); $menu_dashboard->translateOrNew($language->code)->link = 'admin'; } \App::setLocale('es'); $menu_dashboard->save(); foreach ($nodes as $node) { if ($node->location == 'package') { $lang_folder = 'master::model.'; } else { $lang_folder = 'model.'; } foreach ($languages as $language) { \App::setLocale($language->code); $node->translateOrNew($language->code)->singular = trans_choice($lang_folder . $node->name, 1); $node->translateOrNew($language->code)->plural = trans_choice($lang_folder . $node->name, 0); } \App::setLocale('es'); $node->save(); $table_name = $node->table_name; $columns = \Schema::getColumnListing($table_name); if ($node->type == 'field') { $count = 0; foreach ($columns as $col) { $count = \FuncNode::node_field_creation($table_name, $node, $col, 0, $count, $languages); } $total_count += $count; } else { $model = $node->model; $initiated_model = new $model(); // CREAR MENU \FuncNode::node_menu_creation($node, $languages); // MENU CREADO, CREAR COLUMNAS $count = 0; foreach ($columns as $col) { if ($col != 'site_id') { $count = \FuncNode::node_field_creation($table_name, $node, $col, 0, $count, $languages); } } // REVISAR SI TIENE TRADUCCION Y SI SE DEBEN CREAR ESOS CAMPOS TAMBIEN if (property_exists($model, 'translatedAttributes')) { $node->translation = 1; $node->save(); foreach ($initiated_model->translatedAttributes as $col) { if ($col != 'site_id') { $count = \FuncNode::node_field_creation(str_replace('-', '_', $node->name) . '_translation', $node, $col, 1, $count, $languages); } } } // AGREGAR PARENT A DONDE CORRESPONDE if (count($node->children) > 0) { foreach ($node->children as $child) { $count++; $multiple = false; if ($child->type == 'field') { $child_value = str_replace($node->name . '-', '', $child->name); $child_value = str_replace('-' . $node->name, '', $child_value); } else { $child_value = $child->name; } if ($child->type == 'subchild') { $multiple = true; } $field = new \Solunes\Master\App\Field(); $field->parent_id = $node->id; $field->name = $child->table_name; $field->trans_name = str_replace($node->name . '-', '', $child->table_name); $field->type = $child->type; $field->order = $count; $field->multiple = $multiple; $field->value = $child_value; $field->save(); } } $total_count += $count; } $node->load('fields'); foreach ($node->fields as $field) { $saved = false; if (!$field->label) { if ($node->location == 'package') { $lang_folder = 'master::fields.'; } else { $lang_folder = 'fields.'; } foreach ($languages as $language) { \App::setLocale($language->code); $field->translateOrNew($language->code)->label = trans($lang_folder . $field->trans_name); } \App::setLocale('es'); $saved = true; } if ($saved === true) { $field->save(); } } } $this->info('95%: Se importara el excel de nodes para corregir los campos.'); $this->info(\FuncNode::load_nodes_excel(base_path(config('solunes.vendor_path') . '/src/nodes.xlsx'))); $this->info(\FuncNode::load_nodes_excel(public_path('seed/nodes.xlsx'))); $this->info('100%: Se crearon ' . $total_count . ' campos.'); }