public static function generate_image_field($name, $type, $parameters, $array, $value, $data_type)
 {
     $folder = $parameters['folder'];
     $array['data-count'] = 0;
     $response = '<div class="file_container">';
     $response .= '<div class="file_limitations"><p>';
     if ($type == 'file') {
         $response .= trans('admin.file_limitations');
     } else {
         if ($type == 'image') {
             $response .= trans('admin.image_limitations');
         }
     }
     $response .= '</p></div>';
     if (isset($array['rel'])) {
         $rel_attribute = ' rel="' . $array['rel'] . '"';
         $array['rel'] = 'uploader_' . $array['rel'];
     } else {
         $rel_attribute = NULL;
     }
     if ($folder && $value) {
         $i = $parameters['i'];
         $multiple = false;
         if (isset($array['multiple'])) {
             $multiple = true;
         }
         if (!$i) {
             $action = 'temp';
         } else {
             $action = 'saved';
         }
         if (!$i && $multiple) {
             $array_value = $value;
         } else {
             if ($multiple) {
                 $array_value = json_decode($value, true);
             } else {
                 $array_value = [$value];
             }
         }
         if ($multiple) {
             $final_name = $name . '[0]';
         } else {
             $final_name = $name;
         }
         if (is_array($array_value) && count($array_value) > 0) {
             foreach ($array_value as $key => $value) {
                 if ($multiple) {
                     $final_name = $name . '[' . $key . ']';
                 } else {
                     $final_name = $name;
                 }
                 $response .= '<div class="upload_thumb ' . $type . '_thumb">';
                 if ($type == 'image') {
                     $response .= '<a class="lightbox" href="' . Asset::get_image_path($folder, 'normal', $value) . '">' . Asset::get_image($folder, 'mini', $value) . '</a>';
                 } else {
                     $response .= '<a href="' . Asset::get_file($folder, $value) . '" target="_blank">' . $value . '</a>';
                 }
                 if ($data_type != 'view') {
                     $response .= '<input type="hidden" name="' . $final_name . '" value="' . $value . '"' . $rel_attribute . ' />';
                     $response .= '<a class="delete_temp" data-folder="' . $folder . '"  data-action="' . $action . '" data-file="' . $value . '" data-type="' . $type . '" href="#">X</a>';
                 }
                 $array['data-count'] = $key + 1;
                 $response .= '</div>';
             }
         }
     }
     if ($data_type == 'view' && $array['data-count'] == 0) {
         $response .= '<div>-</div>';
     }
     $response .= '</div>';
     if ($data_type != 'view') {
         $response .= '<div class="progress_bar"><div class="bar" style="width: 0%;"></div>';
         $response .= '<a class="cancel_upload_button" href="#">Cancelar</a></div>';
         $response .= '<div class="error_bar"></div>';
         $response .= Form::file('uploader_' . $name, $array);
     }
     return $response;
 }
 public static function make_fields_values($item, $fields, $appends, $type = 'table')
 {
     if ($type == 'excel') {
         $response = [];
     } else {
         $response = '';
     }
     foreach ($fields as $field) {
         $field_name = $field->name;
         $field_trans_name = $field->trans_name;
         $field_type = $field->type;
         $item_val = $item->{$field_trans_name};
         $count = 0;
         if ($field_type == 'string') {
             $value = $item_val;
         } else {
             if ($field_type == 'text') {
                 $value = strip_tags($item_val);
                 if (strlen($value) > 300) {
                     $value = substr($value, 0, 300) . '...';
                 }
             } else {
                 if (($item_val || $item_val === 0) && ($field_type == 'select' || $field_type == 'radio')) {
                     $value = $field->field_options()->where('name', $item_val)->first()->label;
                 } else {
                     if ($field_type == 'relation') {
                         if ($item->{$field_trans_name}) {
                             $value = $item->{$field_trans_name}->name;
                         } else {
                             $value = NULL;
                         }
                     } else {
                         if ($field_type == 'child') {
                             $url = url('admin/model-list/' . $field->value . '?parent_id=' . $item->id);
                             if ($appends) {
                                 $url .= '&' . $appends;
                             }
                             $value = 'Nº: ' . count($item_val) . ' (<a href="' . $url . '">' . trans('admin.view') . '</a>)';
                         } else {
                             if ($field_type == 'subchild') {
                                 $value = 'Nº: ' . count($item_val);
                             } else {
                                 if (($field_type == 'image' || $field_type == 'file') && $item_val) {
                                     if ($field->multiple) {
                                         $array_value = json_decode($item_val, true);
                                     } else {
                                         $array_value = [$item_val];
                                     }
                                     $value = '';
                                     $folder = $field->field_extras()->where('type', 'folder')->first()->value;
                                     foreach ($array_value as $key => $val) {
                                         $count++;
                                         if ($count > 1) {
                                             $value .= ' | ';
                                         }
                                         if ($field_type == 'image') {
                                             $file_url = Asset::get_image_path($folder, 'normal', $val);
                                         } else {
                                             $file_url = Asset::get_file($folder, $val);
                                         }
                                         if ($type == 'excel') {
                                             $value .= $file_url;
                                         } else {
                                             $value .= '<a href="' . $file_url . '" target="_blank">' . $val . '</a>';
                                         }
                                     }
                                 } else {
                                     if ($item_val && $field_type == 'checkbox') {
                                         $array_value = json_decode($item_val, true);
                                         $value = '';
                                         foreach ($array_value as $val) {
                                             $count++;
                                             if ($count > 1) {
                                                 $value .= ' | ';
                                             }
                                             $value .= $field->field_options()->where('name', $val)->first()->label;
                                         }
                                     } else {
                                         if ($field_type == 'datetime' || $field->type == 'date' || $field->type == 'time') {
                                             if ($item_val) {
                                                 if ($field_type == 'datetime') {
                                                     $value = $item_val->format('M d, Y H:i');
                                                 } else {
                                                     $value = $item_val;
                                                 }
                                             } else {
                                                 $value = '-';
                                             }
                                         } else {
                                             $value = '-';
                                         }
                                     }
                                 }
                             }
                         }
                     }
                 }
             }
         }
         if ($type == 'table') {
             $response .= '<td>' . $value . '</td>';
         } else {
             if ($type == 'excel') {
                 array_push($response, $value);
             }
         }
     }
     return $response;
 }
 public static function post_request_success($request, $model, $item, $type = 'admin')
 {
     $node = \Solunes\Master\App\Node::where('name', $model)->first();
     if ($type == 'admin') {
         if (\Gate::denies('node-admin', ['item', $type, $node, $request->input('action'), $request->input('id')])) {
             return \Login::redirect_dashboard('no_permission');
         }
     }
     if ($type == 'admin') {
         $display_array = ['none'];
     } else {
         $display_array = ['item_admin', 'none'];
     }
     $total_ponderation = 0;
     $rejected_fields = ['title', 'content', 'child', 'subchild', 'field'];
     foreach ($node->fields()->whereNotIn('type', $rejected_fields)->whereNotIn('display_item', $display_array)->with('field_extras')->get() as $field) {
         $field_name = $field->name;
         $input = NULL;
         if ($request->has($field_name)) {
             $input = $request->input($field_name);
         }
         if ($input && $input != 0 && ($pond = $field->field_extras()->where('type', 'ponderation')->first())) {
             $total_ponderation = $total_ponderation + $pond->value;
         }
         $item = \FuncNode::put_data_field($item, $field, $input);
     }
     if ($total_ponderation > 0) {
         $item->total_ponderation = $total_ponderation;
     }
     $item->save();
     foreach ($node->fields()->whereIn('type', ['subchild', 'field'])->get() as $field) {
         if ($field->type == 'subchild') {
             $subfield_name = str_replace('_', '-', $field->value);
             $sub_node = \Solunes\Master\App\Node::where('name', $subfield_name)->first();
             $sub_node_table = $sub_node->table_name;
             AdminItem::post_subitems($sub_node, $field->name, 'parent_id', $item->id, $sub_node->fields()->where('display_item', '!=', 'none')->whereNotIn('name', ['id', 'parent_id'])->get());
             foreach ($node->fields()->where('child_table', $sub_node_table)->get() as $field_extra) {
                 $field_extra_name = $field_extra->name;
                 if ($field_extra_name == $sub_node_table . '_count') {
                     $subvalue = count($item->{$sub_node_table});
                 } else {
                     $field_extra_name_fixed = str_replace('_total', '', $field_extra_name);
                     $subvalue = 0;
                     foreach ($item->{$sub_node_table} as $sub_item) {
                         $subvalue += $sub_item->{$field_extra_name_fixed};
                     }
                 }
                 $item->{$field_extra_name} = $subvalue;
                 $item->save();
             }
         } else {
             $field_name = $field->name;
             if ($field->multiple) {
                 $item->{$field_name}()->sync($request->input($field_name));
             } else {
                 $item->{$field_name}()->sync([$request->input($field_name)]);
             }
         }
     }
     foreach ($node->indicators as $indicator) {
         $node_model = \FuncNode::node_check_model($node);
         $items = \FuncNode::node_check_model($node);
         $array = \AdminList::filter_node(['filter_category_id' => $indicator->id], $node, $node_model, $items, 'indicator');
         $items = $array['items'];
         if ($indicator->type == 'count') {
             $indicator_value = $items->count();
         } else {
             $indicator_value = $items->count();
         }
         if ($today_indicator = $indicator->indicator_values()->where('date', date('Y-m-d'))->first()) {
         } else {
             $today_indicator = new \Solunes\Master\App\IndicatorValue();
             $today_indicator->parent_id = $indicator->id;
             $today_indicator->date = date('Y-m-d');
         }
         $today_indicator->value = $indicator_value;
         $today_indicator->save();
     }
     \Asset::delete_temp();
     return $item;
 }
 public static function delete_saved_files($file_fields, $item)
 {
     if (count($file_fields) > 0) {
         foreach ($file_fields as $field) {
             $file_name = $field->name;
             $folder = $field->field_extras()->where('type', 'folder')->first()->value;
             if ($item->{$file_name}) {
                 if ($field->multiple) {
                     foreach (json_decode($item->{$file_name}) as $subfile) {
                         \Asset::delete_file($field->type, $folder, $subfile);
                     }
                 } else {
                     \Asset::delete_file($field->type, $folder, $item->{$file_name});
                 }
             }
         }
     }
     return true;
 }