public function edit(UserUpdaterListener $listener, $id)
    {
        $eloquent = Foundation::make('antares.user');
        if ($id !== auth()->user()->id) {
            $eloquent = $eloquent->where('id', $id)->withoutGlobalScopes()->whereHas('roles', function ($query) {
                        $role    = user()->roles->first();
                        $roles   = $role->getChilds();
                        $roles[] = $role->id;
                        $query->whereIn('role_id', array_values($roles));
                    })->first();
            if (is_null($eloquent)) {
                return $listener->noAccessToEdit();
            }
        } else {
            $eloquent = $eloquent->findOrFail($id);
        }

        $form = $this->presenter->form($eloquent, 'update');
        $this->fireEvent('form', [$eloquent, $form]);

        return $listener->showUserChanger(compact('eloquent', 'form'));
    }