// Licensed to Timothy Schenk under the GNU AGPL Version 3 License. using Continuity.AuthServer.DB; using Microsoft.EntityFrameworkCore; using Rai.PacketMediator; using Wonderking.Packets.Incoming; using Wonderking.Packets.Outgoing; namespace Continuity.AuthServer.PacketHandlers; public class CharacterDeletionHandler : IPacketHandler { private readonly WonderkingContext _wonderkingContext; public CharacterDeletionHandler(WonderkingContext wonderkingContext) { _wonderkingContext = wonderkingContext; } public async Task HandleAsync(CharacterDeletePacket packet, AuthSession session, CancellationToken cancellationToken) { var character = await _wonderkingContext.Characters.FirstOrDefaultAsync(x => x.Name == packet.Name && x.Account.Id == session.AccountId, cancellationToken); var response = new CharacterDeleteResponsePacket { HasToBeZero = 0 }; if (character == null) { await session.SendAsync(response); return; } _wonderkingContext.Characters.Remove(character); await _wonderkingContext.SaveChangesAsync(cancellationToken); await session.SendAsync(response); } }