public function update($listener, array $input, $id)
    {

        if ((int) $id !== (int) $input['id']) {
            return $listener->userVerificationFailed();
        }
        $role = $this->model->findOrFail($id);
        $form = $this->presenter->form($role);
        if (!$form->isValid()) {
            return $listener->updateValidationFailed($form->getMessageBag(), $id);
        }

        try {
            $this->saving($role, $input, 'update');
        } catch (Exception $e) {

            Log::warning($e);
            return $listener->updateFailed(['error' => $e->getMessage()]);
        }

        return $listener->updateSucceed();
    }