diff --git a/Content.Server/Database/ServerDbBase.cs b/Content.Server/Database/ServerDbBase.cs index c85b774e3810..3806241e3459 100644 --- a/Content.Server/Database/ServerDbBase.cs +++ b/Content.Server/Database/ServerDbBase.cs @@ -512,16 +512,23 @@ public abstract Task> GetServerRoleBansAsync(IPAddress? a public async Task EditServerRoleBan(int id, string reason, NoteSeverity severity, DateTimeOffset? expiration, Guid editedBy, DateTimeOffset editedAt) { await using var db = await GetDb(); + var roleBanDetails = await db.DbContext.RoleBan + .Where(b => b.Id == id) + .Select(b => new { b.BanTime, b.PlayerUserId }) + .SingleOrDefaultAsync(); - var ban = await db.DbContext.RoleBan.SingleOrDefaultAsync(b => b.Id == id); - if (ban is null) + if (roleBanDetails == default) return; - ban.Severity = severity; - ban.Reason = reason; - ban.ExpirationTime = expiration?.UtcDateTime; - ban.LastEditedById = editedBy; - ban.LastEditedAt = editedAt.UtcDateTime; - await db.DbContext.SaveChangesAsync(); + + await db.DbContext.RoleBan + .Where(b => b.BanTime == roleBanDetails.BanTime && b.PlayerUserId == roleBanDetails.PlayerUserId) + .ExecuteUpdateAsync(setters => setters + .SetProperty(b => b.Severity, severity) + .SetProperty(b => b.Reason, reason) + .SetProperty(b => b.ExpirationTime, expiration.HasValue ? expiration.Value.UtcDateTime : (DateTime?)null) + .SetProperty(b => b.LastEditedById, editedBy) + .SetProperty(b => b.LastEditedAt, editedAt.UtcDateTime) + ); } #endregion