Esempio n. 1
0
        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}";
 }
Esempio n. 3
0
        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));
            }
        }
Esempio n. 5
0
        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
            })));
        }
Esempio n. 6
0
        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);
        }
Esempio n. 7
0
        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));
 }