internal Mail(PlayerMailDto mailDto) { Id = (ulong)mailDto.Id; SenderId = (ulong)mailDto.SenderPlayerId; Sender = GetNickname(SenderId); SendDate = DateTimeOffset.FromUnixTimeSeconds(mailDto.SentDate); Title = mailDto.Title; Message = mailDto.Message; _isNew = mailDto.IsMailNew; }
public async Task <bool> SendAsync(string receiver, string title, string message, bool isClub = false) { // ToDo consume pen // ToDo check for ignore AccountDto account; using (var db = AuthDatabase.Open()) { account = (await DbUtil.FindAsync <AccountDto>(db, statement => statement .Where($"{nameof(AccountDto.Nickname):C} = @{nameof(receiver)}") .WithParameters(new { receiver }))) .FirstOrDefault(); } if (account == null) { return(false); } using (var db = GameDatabase.Open()) { var mailDto = new PlayerMailDto { PlayerId = account.Id, SenderPlayerId = (int)Player.Account.Id, SentDate = DateTimeOffset.Now.ToUnixTimeSeconds(), Title = title, Message = message, IsMailNew = true, IsMailDeleted = false, IsClubMail = isClub }; await DbUtil.InsertAsync(db, mailDto); var plr = GameServer.Instance.PlayerManager.Get(receiver); plr?.Mailbox.Add(new Mail(mailDto, isClub)); plr?.Mailbox.UpdateReminder(); return(true); } }