public static function getDepartments($id, $indent, $path) { $result = []; if ($indent < 15) { $models = Department::withTrashed()->whereDepartmentId($id)->get(); foreach ($models as $model) { $result[] = ['indent' => $indent, 'name' => $path . '.' . $model->name, 'id' => $model->id, 'parent' => $id]; $result = array_merge($result, static::getDepartments($model->id, $indent + 1, $path . '.' . $model->name)); } } return $result; }
public function getModels($filter = null) { $models = Department::sortable($this->index_view); if ($this->show_trash()) { $models = $models->withTrashed(); } if (isset($filter)) { foreach ($this->filter_fields as $field) { if (trim($filter[$field]) != '') { $values = explode(',', $filter[$field]); $first = true; foreach ($values as $value) { if (in_array($field, $this->filter_numeric_fields)) { if ($first) { $models = $models->Where($field, $value); $first = false; } else { $models = $models->orWhere($field, $value); } } else { if (in_array($field, $this->filter_boolean_fields)) { $value = strtolower($value) == 'x'; if ($first) { $models = $models->Where($field, $value); $first = false; } else { $models = $models->orWhere($field, $value); } } else { if ($field == 'parent') { $value = '%' . $value . '%'; if ($first) { $models = $models->whereHas('parent', function ($q) use($value) { $q->where('name', 'like', $value); }); $first = false; } else { $models = $models->orWhereHas('parent', function ($q) use($value) { $q->where('name', 'like', $value); }); } } else { if ($field == 'users') { $value = '%' . $value . '%'; if ($first) { $models = $models->whereHas('users', function ($q) use($value) { $q->where('acronym', 'like', $value); }); $first = false; } else { $models = $models->orWhereHas('users', function ($q) use($value) { $q->where('acronym', 'like', $value); }); } } else { $value = '%' . $value . '%'; if ($first) { $models = $models->Where($field, 'LIKE', $value); $first = false; } else { $models = $models->orWhere($field, 'LIKE', $value); } } } } } } } } } return $models; }
/** * Show the form for editing the specified resource. * * @param int $id * @return Response */ public function edit($id) { try { $model = $this->getModel($id); $roles = Role::lists('name', 'id'); $model_roles = $model->roles->lists('id'); $departments = Department::lists('name', 'id'); $model_departments = $model->departments->lists('id'); $users = User::where('id', '<>', $id)->withTrashed()->lists('display_name', 'id'); return view($this->edit_view, compact(['model', 'roles', 'model_roles', 'departments', 'model_departments', 'users'])); } catch (Exception $e) { Flash::warning(trans($this->resource_name . 'not_found', ['model' => $this->model_name, 'id' => $id])); return $this->index(); } }