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.');
 }