public static Job CreateJob(SendNoticeArgs sendNoticeArgs) => new Job { JobType = JobType.SendNotice, SendNoticeArgs = sendNoticeArgs };
private async Task SendNoticeMessage(SendNoticeArgs args) { switch (args.Type) { case NoticeType.NewPost: case NoticeType.NewReply: string notice; if (args.Type == NoticeType.NewPost) { notice = string.Format("<a href='/User/{0}'>{0}</a> 回复了您的投稿:<a href='{2}'>{1}</a>", args.Actor, args.Content, args.Url); } else { notice = string.Format("<a href='/User/{0}'>{0}</a> 在<a href='{2}'>{1}</a>中回复了您的评论", args.Actor, args.Content, args.Url); } int num = 0; var db = _usersContext; var msg = db.Messages .Where(m => m.MsgTitle.StartsWith("新回复通知") && m.Recipient == args.NoticeUser && m.Sender == "admin") .OrderByDescending(m => m.MsgDate) .FirstOrDefault(); if (msg != null && msg.IsRead == false) { var value = Regex.Match(msg.MsgTitle, @"\d+").Value; if (string.IsNullOrEmpty(value) || !int.TryParse(value, out num)) { num = 1; } msg.MsgTitle = string.Format("新回复通知 ({0})", num + 1); msg.MsgDate = DateTime.Now; msg.MsgContent = notice + '\n' + msg.MsgContent; await db.SaveChangesAsync(); } else { await AddMessage(new Message { Sender = "admin", Recipient = args.NoticeUser, MsgTitle = "新回复通知", MsgContent = notice, IsSenderDelete = true }); } return; case NoticeType.DeletePost: await AddMessage(new Message { Sender = args.Actor, Recipient = args.NoticeUser, MsgTitle = "删除通知", MsgContent = string.Format("您在投稿<a href='{1}'>{0}</a>中的评论已被管理员删除", args.Content, args.Url) }); return; case NoticeType.DeleteReply: await AddMessage(new Message { Sender = args.Actor, Recipient = args.NoticeUser, MsgTitle = "删除通知", MsgContent = string.Format("您在投稿<a href='{1}'>{0}</a>中的回复已被管理员删除", args.Content, args.Url) }); return; case NoticeType.DeleteBlog: await AddMessage(new Message { Sender = args.Actor, Recipient = args.NoticeUser, MsgTitle = "删除通知", MsgContent = string.Format("您的投稿 {1} 已被管理员删除<br>原因:<br>{0}", args.Content, args.Url) }); return; case NoticeType.Unapprove: await AddMessage(new Message { Sender = args.Actor, Recipient = args.NoticeUser, MsgTitle = "审核通知", MsgContent = string.Format("您的投稿<a href='{1}'>{1}</a>已被管理员标为审核不通过<br>原因:<br>{0}", args.Content, args.Url) }); return; case NoticeType.ExpChange: await AddMessage(new Message { Sender = args.Actor, Recipient = args.NoticeUser, MsgTitle = "绅士度/棒棒糖调整通知", MsgContent = string.Format("您的绅士度/棒棒糖获得了如下更改:{0}<br>如有疑问,请联系管理员。", args.Content) }); return; case NoticeType.Mention: await AddMessage(new Message { Sender = "admin", Recipient = args.NoticeUser, MsgTitle = "提及通知", MsgContent = string.Format("<a href='/User/{0}'>{0}</a> 在 <a href='{2}'>{1}</a>中提到了您。", args.Actor, args.Content, args.Url), IsSenderDelete = true }); return; case NoticeType.RankReward: await AddMessage(new Message { Sender = "admin", Recipient = args.NoticeUser, MsgTitle = "奖励通知", MsgContent = args.Content, IsSenderDelete = true }); return; default: return; } }