/**
  * @param CreateFlag $command
  * @return Flag
  * @throws InvalidParameterException
  */
 public function handle(CreateFlag $command)
 {
     $actor = $command->actor;
     $data = $command->data;
     $postId = array_get($data, 'relationships.post.data.id');
     $post = $this->posts->findOrFail($postId, $actor);
     if (!$post instanceof CommentPost) {
         throw new InvalidParameterException();
     }
     $this->assertCan($actor, 'flag', $post);
     Flag::unguard();
     $flag = Flag::firstOrNew(['post_id' => $post->id, 'user_id' => $actor->id]);
     $flag->post_id = $post->id;
     $flag->user_id = $actor->id;
     $flag->type = 'user';
     $flag->reason = array_get($data, 'attributes.reason');
     $flag->reason_detail = array_get($data, 'attributes.reasonDetail');
     $flag->time = time();
     $flag->save();
     return $flag;
 }