static void HandlePMPacket(Client c, string recipient, string message, string subject, ushort id = default(ushort))
{
if (!(IsValidName(recipient) && IsValidData(message) && IsValidData(subject)))
{
c.Disconnect();
return;
}
Client u = ClientFromUsername(recipient);
if (u == null)
return;
PrivateMessage pm = null;
if (id == default(ushort) && !privateMessages.Exists(x => x.Id == id))
{
pm = new PrivateMessage(id = (ushort)_random.Next(ushort.MinValue, ushort.MaxValue), subject, c.Value.Username, DateTime.Now, message);
privateMessages.Add(pm);
byte[] confirm = Packer.Serialize((byte)ServerPacket.PMConfirm, id, u.Value.Username, message, subject, DateTime.Now);
c.Send(confirm);
}
else
{
pm = privateMessages.Find(x => x.Id == id);
pm.Message.Add(message);
}
byte[] data = Packer.Serialize((byte)ServerPacket.PM, id, c.Value.Username, u.Value.Username, message, subject, DateTime.Now);
u.Send(data);
}