using HermesSocketServer.Models; using ILogger = Serilog.ILogger; namespace HermesSocketServer.Requests { public class DeleteGroupChatter : IRequest { public string Name => "delete_group_chatter"; public string[] RequiredKeys => ["chatter", "group"]; private ILogger _logger; public DeleteGroupChatter(ILogger logger) { _logger = logger; } public Task Grant(Channel channel, IDictionary data) { var chatterId = data["chatter"].ToString()!; var groupId = data["group"].ToString()!; if (!channel.Groups.Chatters.TryGetValue(groupId, out var chatters)) return Task.FromResult(RequestResult.Failed($"The group does not exist.")); var result = chatters.Remove(chatterId); if (result) { _logger.Information($"Deleted a group chatter by id [group id: {chatterId}]"); return Task.FromResult(RequestResult.Successful(null)); } _logger.Warning($"Group Chatter Id does not exist [group id: {chatterId}]"); return Task.FromResult(RequestResult.Failed("Something went wrong when updating the cache.")); } } }