public async Task UpdateForumThreadPost(ForumThreadPostModel forumThreadPost) { forumThreadPost.UpdateTimestamps(false); using (var ct = GetConnection(DatabaseType.Forum, false)) { await ct.DbConnection.ExecuteAsync(ReadQuery("UpdateForumThreadPost", ct.ProviderName), forumThreadPost, transaction : ct.DbTransaction); } }
public PEngineSearchResultModel(ForumThreadPostModel forumThreadPost) { Type = "Forum"; Title = forumThreadPost.ForumThreadName; Content = Helpers.Rendering.DataRenderAndTruncate(forumThreadPost.Data, 255); CreatedUTC = forumThreadPost.CreatedUTC; Creator = forumThreadPost.ForumUserId; Link = $"forum/thread/{forumThreadPost.ForumUniqueName}/{forumThreadPost.ForumThreadUniqueName}"; }
public async Task InsertForumThreadPost(ForumThreadPostModel forumThreadPost, bool importFlag = false) { forumThreadPost.UpdateGuid(); forumThreadPost.UpdateTimestamps(true, importFlag); using (var ct = GetConnection(DatabaseType.Forum, false)) { await ct.DbConnection.ExecuteAsync(ReadQuery("InsertForumThreadPost", ct.ProviderName), forumThreadPost, transaction : ct.DbTransaction); } }
public async Task <IActionResult> InsertForumThreadPost([FromBody] ForumThreadPostModel forumThreadPost) { var result = await _forumService.UpsertForumThreadPost(forumThreadPost, Guid.Parse(HttpContext.User.Identity.Name), HttpContext.User.IsInRole("ForumAdmin")); if (result.Successful) { return(this.Ok(forumThreadPost)); } else { return(this.StatusCode(400, result)); } }
public async Task <IActionResult> AddPost([FromBody] ForumThreadPostModel thread) { await forumThreadPostRepository.CreatePostAsync(thread.Text, thread.Author, thread.ThreadId); var posts = await forumThreadPostRepository.PostsOrderedByDateAsync(thread.ThreadId); return(Ok(posts.ToEnumerable() .Select(x => new ForumThreadPostModel { Id = x.Id, Author = x.Author, CreationDate = x.CreationDate, Text = x.Text }))); }
public async Task <OpResult> UpsertForumThreadPost(ForumThreadPostModel forumThreadPost, Guid forumUserGuid, bool isForumAdmin, bool importFlag = false) { var retvalue = new OpResult(); ForumThreadPostModel existingForumThreadPost = null; if (forumThreadPost == null) { retvalue.LogError(POST_ERROR_DATA_MUST_BE_PROVIDED); return(retvalue); } if (!importFlag) { if (forumThreadPost.Guid != Guid.Empty) { existingForumThreadPost = await _forumDal.GetForumThreadPostById(forumThreadPost.Guid); if (existingForumThreadPost == null) { retvalue.LogError(POST_ERROR_INVALID_RECORD); } else { forumThreadPost.CreatedUTC = existingForumThreadPost.CreatedUTC; forumThreadPost.ModifiedUTC = existingForumThreadPost.ModifiedUTC; forumThreadPost.ForumUserGuid = existingForumThreadPost.ForumUserGuid; if (!isForumAdmin) { forumThreadPost.ForumThreadGuid = existingForumThreadPost.ForumThreadGuid; forumThreadPost.LockFlag = existingForumThreadPost.LockFlag; forumThreadPost.VisibleFlag = existingForumThreadPost.VisibleFlag; if (forumThreadPost.ForumUserGuid != forumUserGuid || !forumThreadPost.VisibleFlag || forumThreadPost.LockFlag) { retvalue.LogError(POST_ERROR_NOT_AUTHORIZED); } if (forumThreadPost.CreatedUTC.HasValue && (DateTime.UtcNow - forumThreadPost.CreatedUTC.Value).TotalMinutes > _settingsProvider.Current.TimeLimitForumPostEdit) { retvalue.LogError(POST_ERROR_TOO_LATE_TO_UPDATE); } } } } else { forumThreadPost.ForumUserGuid = forumUserGuid; } } if (string.IsNullOrWhiteSpace(forumThreadPost.Data)) { retvalue.LogError(POST_ERROR_CONTENT_IS_REQUIRED); } if (retvalue.Successful) { if (importFlag || forumThreadPost.Guid == Guid.Empty) { await _forumDal.InsertForumThreadPost(forumThreadPost, importFlag); } else { await _forumDal.UpdateForumThreadPost(forumThreadPost); } } return(retvalue); }
public ForumServiceTests() { //Setup forumData = new ForumModel(); forumThreadData = new ForumThreadModel(); forumThreadPostData = new ForumThreadPostModel(); forumUserData = new ForumUserModel(); settingsData = new SettingsData(); mockedSettingsProvider = new Mock <ISettingsProvider>(); mockedSettingsProvider.SetupGet <SettingsData>(sd => sd.Current).Returns(settingsData); mockedForumDal = new Mock <IForumDal>(); mockedForumDal.Setup(fd => fd.InsertForum(forumData, false)).Returns(Task.Delay(0)); mockedForumDal.Setup(fd => fd.UpdateForum(forumData)).Returns(Task.Delay(0)); mockedForumDal.Setup(fd => fd.GetForumById(invalidGuid, null)).ReturnsAsync((ForumModel)null); mockedForumDal.Setup(fd => fd.GetForumById(validGuid, null)).ReturnsAsync(new ForumModel()); mockedForumDal.Setup(ad => ad.GetForumById(visibleGuid, null)).ReturnsAsync(new ForumModel() { VisibleFlag = true }); mockedForumDal.Setup(ad => ad.GetForumById(hiddenGuid, null)).ReturnsAsync(new ForumModel() { VisibleFlag = false }); mockedForumDal.Setup(ad => ad.ListForums()).ReturnsAsync(new List <ForumModel> { new ForumModel() { VisibleFlag = true }, new ForumModel() { VisibleFlag = false } }); mockedForumDal.Setup(fd => fd.InsertForumThread(forumThreadData, false)).Returns(Task.Delay(0)); mockedForumDal.Setup(fd => fd.UpdateForumThread(forumThreadData)).Returns(Task.Delay(0)); mockedForumDal.Setup(fd => fd.GetForumThreadById(invalidGuid, null)).ReturnsAsync((ForumThreadModel)null); mockedForumDal.Setup(fd => fd.GetForumThreadById(validGuid, null)).ReturnsAsync(new ForumThreadModel() { ForumUserGuid = validGuid, VisibleFlag = true, LockFlag = false, CreatedUTC = DateTime.UtcNow.AddMinutes(-1) }); mockedForumDal.Setup(fd => fd.GetForumThreadById(semiValidGuid1, null)).ReturnsAsync(new ForumThreadModel() { ForumUserGuid = validGuid, VisibleFlag = false, LockFlag = false, CreatedUTC = DateTime.UtcNow.AddMinutes((-1 * settingsData.TimeLimitForumPostEdit) - 1) }); mockedForumDal.Setup(fd => fd.GetForumThreadById(semiValidGuid2, null)).ReturnsAsync(new ForumThreadModel() { ForumUserGuid = validGuid, VisibleFlag = true, LockFlag = true, CreatedUTC = DateTime.UtcNow.AddMinutes((-1 * settingsData.TimeLimitForumPostEdit) - 1) }); mockedForumDal.Setup(ad => ad.GetForumThreadById(visibleGuid, null)).ReturnsAsync(new ForumThreadModel() { VisibleFlag = true }); mockedForumDal.Setup(ad => ad.GetForumThreadById(hiddenGuid, null)).ReturnsAsync(new ForumThreadModel() { VisibleFlag = false }); mockedForumDal.Setup(ad => ad.ListForumThreads(null, null)).ReturnsAsync(new List <ForumThreadModel> { new ForumThreadModel() { VisibleFlag = true }, new ForumThreadModel() { VisibleFlag = false } }); mockedForumDal.Setup(fd => fd.InsertForumThreadPost(forumThreadPostData, false)).Returns(Task.Delay(0)); mockedForumDal.Setup(fd => fd.UpdateForumThreadPost(forumThreadPostData)).Returns(Task.Delay(0)); mockedForumDal.Setup(fd => fd.GetForumThreadPostById(invalidGuid)).ReturnsAsync((ForumThreadPostModel)null); mockedForumDal.Setup(fd => fd.GetForumThreadPostById(validGuid)).ReturnsAsync(new ForumThreadPostModel() { ForumUserGuid = validGuid, VisibleFlag = true, LockFlag = false, CreatedUTC = DateTime.UtcNow.AddMinutes(-1) }); mockedForumDal.Setup(fd => fd.GetForumThreadPostById(semiValidGuid1)).ReturnsAsync(new ForumThreadPostModel() { ForumUserGuid = validGuid, VisibleFlag = false, LockFlag = false, CreatedUTC = DateTime.UtcNow.AddMinutes((-1 * settingsData.TimeLimitForumPostEdit) - 1) }); mockedForumDal.Setup(fd => fd.GetForumThreadPostById(semiValidGuid2)).ReturnsAsync(new ForumThreadPostModel() { ForumUserGuid = validGuid, VisibleFlag = true, LockFlag = true, CreatedUTC = DateTime.UtcNow.AddMinutes((-1 * settingsData.TimeLimitForumPostEdit) - 1) }); mockedForumDal.Setup(ad => ad.GetForumThreadPostById(visibleGuid)).ReturnsAsync(new ForumThreadPostModel() { VisibleFlag = true }); mockedForumDal.Setup(ad => ad.GetForumThreadPostById(hiddenGuid)).ReturnsAsync(new ForumThreadPostModel() { VisibleFlag = false }); mockedForumDal.Setup(ad => ad.ListForumThreadPosts(null, null, null, null)).ReturnsAsync(new List <ForumThreadPostModel> { new ForumThreadPostModel() { VisibleFlag = true }, new ForumThreadPostModel() { VisibleFlag = false } }); mockedForumDal.Setup(fd => fd.InsertForumUser(forumUserData, false)).Returns(Task.Delay(0)); mockedForumDal.Setup(fd => fd.UpdateForumUser(forumUserData)).Returns(Task.Delay(0)); mockedForumDal.Setup(fd => fd.GetForumUserById(invalidGuid, null)).ReturnsAsync((ForumUserModel)null); mockedForumDal.Setup(fd => fd.GetForumUserById(validGuid, null)).ReturnsAsync(new ForumUserModel()); forumService = new ForumService(mockedForumDal.Object, mockedSettingsProvider.Object); }
public async Task <IActionResult> UpdateForumThreadPost([FromBody] ForumThreadPostModel forumThreadPost) { return(await InsertForumThreadPost(forumThreadPost)); }