public function inviteAction(Team $team, Player $player, Player $me) { if (!$me->canEdit($team)) { throw new ForbiddenException("You are not allowed to invite a player to that team!"); } elseif ($team->isMember($player->getId())) { throw new ForbiddenException("The specified player is already a member of that team."); } elseif (Invitation::hasOpenInvitation($player->getId(), $team->getId())) { throw new ForbiddenException("This player has already been invited to join the team."); } return $this->showConfirmationForm(function () use($team, $player, $me) { $invite = Invitation::sendInvite($player->getId(), $me->getId(), $team->getId()); Service::getDispatcher()->dispatch(Events::TEAM_INVITE, new TeamInviteEvent($invite)); return new RedirectResponse($team->getUrl()); }, "Are you sure you want to invite {$player->getEscapedUsername()} to {$team->getEscapedName()}?", "Player {$player->getUsername()} has been invited to {$team->getName()}"); }