// ToDo: More additional parameters which can be passed to the constructor of Thread/Post class public async Task <VBThread> CreateThreadAsync(VBUser author, string authorIpAddress, int forumId, string title, string text) { // We check the forum first so that no thread is created when Forum id doesn't exist var forum = db.Forums.Find(forumId); if (forum == null) { throw new Exception($"No forum with id #{forumId.ToString()} exists!"); } var post = new VBPost(author, title, text, authorIpAddress); db.Posts.Add(post); await db.SaveChangesAsync(); var thread = new VBThread(post.AuthorId.Value, post.AuthorName, post.Id, post.Id, forumId, post.AuthorId.Value, post.AuthorName, DateTime.Now, DateTime.Now, title); db.Threads.Add(thread); await db.SaveChangesAsync(); post.ThreadId = thread.Id; await db.SaveChangesAsync(); forum.LastPostId = post.Id; forum.LastThreadId = thread.Id; forum.LastThreadTitle = thread.Title; forum.PostCount++; forum.ThreadsCount++; forum.LastPostDate = DateTime.UtcNow; await db.SaveChangesAsync(); await userManager.IncrementPostCounterAsync(author.Id, post.Id, post.CreatedTime); return(thread); }
static void WarmUpManagers(VBThreadManager threadManager, VBSessionManager sessionManager, VBSettingsManager settingsManager, VBForumManager forumManager, VBUserManager userManager, VBThread thread, VBUser user, VBSession session) { var managerThread = threadManager.GetThreadAsync(thread.Id, writeable: true).Result; var replys = threadManager.GetReplysAsync(thread.Id, start: 0, count: 1).Result; var settings = settingsManager.GetCommonSettings(); if (session != null) { // Do not update last activity since we're not in a http context => No request path avaliable var managerSession = sessionManager.GetAsync(session.SessionHash, updateLastActivity: false).Result; } if (user != null) { var forum = forumManager.GetCategoriesWhereUserCanAsync(user.UserGroup).Result; var randomUserFromManager = userManager.GetUserAsync(user.Id).Result; } }