diff --git a/Content.Server/Administration/Commands/RoleBanListCommand.cs b/Content.Server/Administration/Commands/RoleBanListCommand.cs index a590472339..30bb3073ad 100644 --- a/Content.Server/Administration/Commands/RoleBanListCommand.cs +++ b/Content.Server/Administration/Commands/RoleBanListCommand.cs @@ -1,5 +1,7 @@ using System.Linq; using System.Text; +using Content.Server.Administration.BanList; +using Content.Server.EUI; using Content.Server.Database; using Content.Shared.Administration; using Robust.Server.Player; @@ -10,6 +12,12 @@ namespace Content.Server.Administration.Commands; [AdminCommand(AdminFlags.Ban)] public sealed class RoleBanListCommand : IConsoleCommand { + [Dependency] private readonly IServerDbManager _dbManager = default!; + + [Dependency] private readonly EuiManager _eui = default!; + + [Dependency] private readonly IPlayerLocator _locator = default!; + public string Command => "rolebanlist"; public string Description => Loc.GetString("cmd-rolebanlist-desc"); public string Help => Loc.GetString("cmd-rolebanlist-help"); @@ -29,66 +37,37 @@ public sealed class RoleBanListCommand : IConsoleCommand return; } - var dbMan = IoCManager.Resolve(); + var data = await _locator.LookupIdByNameOrIdAsync(args[0]); - var target = args[0]; - - var locator = IoCManager.Resolve(); - var located = await locator.LookupIdByNameOrIdAsync(target); - if (located == null) + if (data == null) { shell.WriteError("Unable to find a player with that name or id."); return; } - var targetUid = located.UserId; - var targetHWid = located.LastHWId; - var targetAddress = located.LastAddress; - - var bans = await dbMan.GetServerRoleBansAsync(targetAddress, targetUid, targetHWid, includeUnbanned); - - if (bans.Count == 0) + if (shell.Player is not { } player) { - shell.WriteLine("That user has no bans in their record."); + + var bans = await _dbManager.GetServerRoleBansAsync(data.LastAddress, data.UserId, data.LastHWId, includeUnbanned); + + if (bans.Count == 0) + { + shell.WriteLine("That user has no bans in their record."); + return; + } + + foreach (var ban in bans) + { + var msg = $"ID: {ban.Id}: Role: {ban.Role} Reason: {ban.Reason}"; + shell.WriteLine(msg); + } return; } - var bansString = new StringBuilder("Bans in record:\n"); + var ui = new BanListEui(); + _eui.OpenEui(ui, player); + await ui.ChangeBanListPlayer(data.UserId); - var first = true; - foreach (var ban in bans) - { - if (!first) - bansString.Append("\n\n"); - else - first = false; - - bansString - .Append("Ban ID: ") - .Append(ban.Id) - .Append('\n') - .Append("Role: ") - .Append(ban.Role) - .Append('\n') - .Append("Banned on ") - .Append(ban.BanTime); - - if (ban.ExpirationTime != null) - { - bansString - .Append(" until ") - .Append(ban.ExpirationTime.Value); - } - - bansString - .Append('\n'); - - bansString - .Append("Reason: ") - .Append(ban.Reason); - } - - shell.WriteLine(bansString.ToString()); } public CompletionResult GetCompletion(IConsoleShell shell, string[] args)