示例#1
0
 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;
 }
示例#2
0
        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);
            }
        }