From: Repo <47093363+Titian3@users.noreply.github.com> Date: Tue, 12 Nov 2024 21:03:13 +0000 (+1300) Subject: Fix unban/editing role bans placed in groups. (#30659) X-Git-Url: https://git.smokeofanarchy.ru/gitweb.cgi?a=commitdiff_plain;h=ef51700094aa22cd1ce7f243d934dc3c45d4ff7f;p=space-station-14.git Fix unban/editing role bans placed in groups. (#30659) * On editing a roleban, get all the bans with the same time. * forgoten newline * Update to check for player ID too. --- diff --git a/Content.Server/Database/ServerDbBase.cs b/Content.Server/Database/ServerDbBase.cs index c85b774e38..3806241e34 100644 --- a/Content.Server/Database/ServerDbBase.cs +++ b/Content.Server/Database/ServerDbBase.cs @@ -512,16 +512,23 @@ namespace Content.Server.Database 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