mirror of
https://github.com/RaidMax/IW4M-Admin.git
synced 2025-06-10 15:20:48 -05:00
Added unban "penalty"
permbans ->MaxValue for consistency Existing alias needs to be FirstOrDefault
This commit is contained in:
@ -220,14 +220,27 @@ namespace SharedLibrary.Commands
|
||||
{
|
||||
Name = "databaseID",
|
||||
Required = true,
|
||||
},
|
||||
new CommandArgument()
|
||||
{
|
||||
Name = "reason",
|
||||
Required = true
|
||||
}
|
||||
})
|
||||
{ }
|
||||
|
||||
public override async Task ExecuteAsync(Event E)
|
||||
{
|
||||
await E.Owner.Unban(E.Target);
|
||||
await E.Origin.Tell($"Successfully unbanned {E.Target}");
|
||||
var penalties = await E.Owner.Manager.GetPenaltyService().GetActivePenaltiesAsync(E.Target.AliasLinkId);
|
||||
if (penalties.Where(p => p.Type == Penalty.PenaltyType.Ban).FirstOrDefault() != null)
|
||||
{
|
||||
await E.Owner.Unban(E.Data, E.Target, E.Origin);
|
||||
await E.Origin.Tell($"Successfully unbanned {E.Target}");
|
||||
}
|
||||
else
|
||||
{
|
||||
await E.Origin.Tell($"{E.Target} is not banned");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -13,6 +13,7 @@ namespace SharedLibrary.Objects
|
||||
Kick,
|
||||
TempBan,
|
||||
Ban,
|
||||
Unban,
|
||||
Any,
|
||||
}
|
||||
|
||||
|
@ -226,7 +226,7 @@ namespace SharedLibrary
|
||||
/// <param name="npID">npID of the player</param>
|
||||
/// <param name="Target">I don't remember what this is for</param>
|
||||
/// <returns></returns>
|
||||
abstract public Task Unban(Player Target);
|
||||
abstract public Task Unban(string reason, Player Target, Player Origin);
|
||||
|
||||
/// <summary>
|
||||
/// Change the current searver map
|
||||
|
@ -27,7 +27,7 @@ namespace SharedLibrary.Services
|
||||
.ToListAsync();
|
||||
|
||||
// see if they have a matching IP + Name but new NetworkId
|
||||
var existingAlias = aliases.SingleOrDefault(a => a.Name == entity.Name);
|
||||
var existingAlias = aliases.FirstOrDefault(a => a.Name == entity.Name);
|
||||
// if existing alias matches link them
|
||||
EFAliasLink aliasLink = existingAlias?.Link;
|
||||
// if no exact matches find the first IP that matches
|
||||
|
@ -18,14 +18,16 @@ namespace SharedLibrary.Services
|
||||
{
|
||||
using (var context = new DatabaseContext())
|
||||
{
|
||||
entity.Offender = context.Clients.First(e => e.ClientId == entity.Offender.ClientId);
|
||||
entity.Punisher = context.Clients.First(e => e.ClientId == entity.Punisher.ClientId);
|
||||
entity.Link = context.AliasLinks.First(l => l.AliasLinkId == entity.Link.AliasLinkId);
|
||||
entity.Offender = context.Clients.Single(e => e.ClientId == entity.Offender.ClientId);
|
||||
entity.Punisher = context.Clients.Single(e => e.ClientId == entity.Punisher.ClientId);
|
||||
entity.Link = context.AliasLinks.Single(l => l.AliasLinkId == entity.Link.AliasLinkId);
|
||||
|
||||
if (entity.Expires == DateTime.MaxValue)
|
||||
entity.Expires = DateTime.Parse(System.Data.SqlTypes.SqlDateTime.MaxValue.ToString());
|
||||
|
||||
// make bans propogate to all aliases
|
||||
if (entity.Type == Objects.Penalty.PenaltyType.Ban)
|
||||
{
|
||||
entity.Expires = DateTime.Parse(System.Data.SqlTypes.SqlDateTime.MaxValue.ToString());
|
||||
await context.Clients
|
||||
.Where(c => c.AliasLinkId == entity.Link.AliasLinkId)
|
||||
.ForEachAsync(c => c.Level = Objects.Player.Permission.Banned);
|
||||
|
Reference in New Issue
Block a user