public function handle(EditDiscussion $command)
{
$actor = $command->actor;
$data = $command->data;
$attributes = array_get($data, 'attributes', []);
$discussion = $this->discussions->findOrFail($command->discussionId, $actor);
if (isset($attributes['title'])) {
$this->assertCan($actor, 'rename', $discussion);
$discussion->rename($attributes['title']);
}
if (isset($attributes['isHidden'])) {
$this->assertCan($actor, 'hide', $discussion);
if ($attributes['isHidden']) {
$discussion->hide($actor);
} else {
$discussion->restore();
}
}
$this->events->fire(new DiscussionWillBeSaved($discussion, $actor, $data));
$this->validator->assertValid($discussion->getDirty());
$discussion->save();
$this->dispatchEventsFor($discussion, $actor);
return $discussion;
}