示例#1
0
        public async Task <IActionResult> Store([FromBody] PostEditForm model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var post = model.post.MapToEntity(CurrentUserId);

            foreach (var item in model.post.medias)
            {
                post.Attachments.Add(item.MapToEntity(CurrentUserId));
            }

            var caregory = await postService.GetCategoryByIdAsync(model.post.categoryId);

            post.Categories.Add(caregory);



            post = await postService.CreateAsync(post);


            return(new ObjectResult(post));
        }
示例#2
0
        public async Task <IActionResult> Edit(int id)
        {
            var post = postService.GetById(id);

            if (post == null)
            {
                return(NotFound());
            }

            bool canReviewPost = CanReviewPost();

            bool allMedias = true;
            var  model     = new PostEditForm
            {
                post      = viewService.MapPostViewModel(post, allMedias),
                canReview = canReviewPost.ToInt()
            };

            var categoryIds = await postService.GetCategoryIdsAsync(id);

            model.post.categoryId = categoryIds.FirstOrDefault();

            bool edit            = true;
            var  categoryOptions = await GetCategoryOptions(edit);

            model.categoryOptions = categoryOptions;

            return(new ObjectResult(model));
        }
示例#3
0
        public async Task <IActionResult> Update(int id, [FromBody] PostEditForm model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var post = postService.GetById(id);

            if (post == null)
            {
                return(NotFound());
            }

            post = model.post.MapToEntity(CurrentUserId, post);

            if (!CanReviewPost())
            {
                post.Reviewed = false;
            }

            if (post.Attachments.IsNullOrEmpty())
            {
                post.Attachments = new List <UploadFile>();
            }

            foreach (var item in model.post.medias)
            {
                var attachment = post.Attachments.Where(a => a.Id == item.id).FirstOrDefault();

                if (attachment == null)
                {
                    post.Attachments.Add(item.MapToEntity(CurrentUserId));
                }
                else
                {
                    attachment = item.MapToEntity(CurrentUserId, attachment);
                }
            }

            var categoryIds = new List <int> {
                model.post.categoryId
            };



            await postService.UpdateAsync(post, categoryIds);


            return(new ObjectResult(post));
        }
示例#4
0
        public async Task <IActionResult> Details(int id)
        {
            var post = postService.GetById(id);

            if (post == null)
            {
                return(NotFound());
            }

            await postService.AddClick(id);

            bool allMedias = true;



            var postViewModel = viewService.MapPostViewModel(post, allMedias);

            postViewModel.clickCount = await postService.GetPostClickCount(post.Id);

            var model = new PostEditForm()
            {
                post = postViewModel
            };


            var categoryIds = await postService.GetCategoryIdsAsync(id);

            model.post.categoryId = categoryIds.FirstOrDefault();

            if (Request.IsAjaxRequest())
            {
                return(new ObjectResult(model));
            }

            ViewData["id"]    = id;
            ViewData["model"] = this.ToJsonString(model);


            bool excludeDefault = true;
            var  categories     = await postService.GetCategoriesAsync(excludeDefault);

            var options = categories.Select(c => new { value = c.Id, text = c.Name });



            ViewData["category"] = model.post.categoryId;

            ViewData["categories"] = this.ToJsonString(options);

            return(View("Index"));
        }
示例#5
0
        public async Task <IActionResult> Create()
        {
            bool canReviewPost = CanReviewPost();
            var  post          = new PostViewModel()
            {
                reviewed = canReviewPost
            };

            bool edit            = true;
            var  categoryOptions = await GetCategoryOptions(edit);

            var model = new PostEditForm
            {
                post            = post,
                categoryOptions = categoryOptions,
                canReview       = canReviewPost.ToInt()
            };



            return(new ObjectResult(model));
        }
示例#6
0
        public void EditPost_NoModId_ThrowsException()
        {
            var modId = 0;
            var readerModPost = Mocks.DynamicMock<IDnaDataReader>();
            readerModPost.Stub(x => x.Read()).Return(true).Repeat.Once();
            readerModPost.Stub(x => x.GetInt32NullAsZero("modid")).Return(modId);

            var readerEdit = Mocks.DynamicMock<IDnaDataReader>();
            readerEdit.Stub(x => x.Read()).Return(true).Repeat.Once();

            var reader = Mocks.DynamicMock<IDnaDataReader>();
            reader.Stub(x => x.Read()).Return(true).Repeat.Once();
            reader.Stub(x => x.DoesFieldExist("modId")).Return(true);
            reader.Stub(x => x.GetInt32NullAsZero("modId")).Return(modId);

            var readerCreator = Mocks.DynamicMock<IDnaDataReaderCreator>();
            readerCreator.Stub(x => x.CreateDnaDataReader("registerpostingcomplaint")).Return(reader);
            readerCreator.Stub(x => x.CreateDnaDataReader("moderatepost")).Return(readerModPost);
            readerCreator.Stub(x => x.CreateDnaDataReader("updatepostdetails")).Return(readerEdit);

            var user = Mocks.DynamicMock<IUser>();
            user.Stub(x => x.IsSuperUser).Return(true);
            Mocks.ReplayAll();

            var editForm = new PostEditForm(readerCreator) { Hidden = 0 };
            try
            {
                editForm.EditPost(user, "", "", "");
                Assert.Fail("Should have thrown exception");
            }
            catch (ApiException e)
            {
                Assert.AreEqual(ErrorType.Unknown, e.type);
            }

            readerCreator.AssertWasCalled(x => x.CreateDnaDataReader("registerpostingcomplaint"));
            readerCreator.AssertWasNotCalled(x => x.CreateDnaDataReader("moderatepost"));
            readerCreator.AssertWasNotCalled(x => x.CreateDnaDataReader("updatepostdetails"));
        }
示例#7
0
        public void EditPost_ValidDatabase_Returns()
        {
            var modId = 1;
            var readerModPost = Mocks.DynamicMock<IDnaDataReader>();
            readerModPost.Stub(x => x.Read()).Return(true).Repeat.Once();
            readerModPost.Stub(x => x.GetInt32NullAsZero("modid")).Return(modId);

            var readerEdit = Mocks.DynamicMock<IDnaDataReader>();
            readerEdit.Stub(x => x.Read()).Return(true).Repeat.Once();

            var reader = Mocks.DynamicMock<IDnaDataReader>();
            reader.Stub(x => x.Read()).Return(true).Repeat.Once();
            reader.Stub(x => x.DoesFieldExist("modId")).Return(true);
            reader.Stub(x => x.GetInt32NullAsZero("modId")).Return(modId);

            var readerCreator = Mocks.DynamicMock<IDnaDataReaderCreator>();
            readerCreator.Stub(x => x.CreateDnaDataReader("registerpostingcomplaint")).Return(reader);
            readerCreator.Stub(x => x.CreateDnaDataReader("moderatepost")).Return(readerModPost);
            readerCreator.Stub(x => x.CreateDnaDataReader("updatepostdetails")).Return(readerEdit);

            var user = Mocks.DynamicMock<IUser>();
            user.Stub(x => x.IsSuperUser).Return(true);
            Mocks.ReplayAll();

            var editForm = new PostEditForm(readerCreator) { Hidden = 0 };
            editForm.EditPost(user, "", "", "");

            readerCreator.AssertWasCalled(x => x.CreateDnaDataReader("registerpostingcomplaint"));
            readerCreator.AssertWasCalled(x => x.CreateDnaDataReader("moderatepost"));
            readerCreator.AssertWasCalled(x => x.CreateDnaDataReader("updatepostdetails"));
        }
示例#8
0
        public void UnHidePost_ValidDatabase_ReturnsUnhidden()
        {
            var modId = 1;
            var readerModPost = Mocks.DynamicMock<IDnaDataReader>();
            readerModPost.Stub(x => x.Read()).Return(true).Repeat.Once();
            readerModPost.Stub(x => x.GetInt32NullAsZero("modid")).Return(modId);

            var reader = Mocks.DynamicMock<IDnaDataReader>();
            reader.Stub(x => x.Read()).Return(true).Repeat.Once();
            reader.Stub(x => x.DoesFieldExist("modId")).Return(true);
            reader.Stub(x => x.GetInt32NullAsZero("modId")).Return(modId);

            var readerEvents = Mocks.DynamicMock<IDnaDataReader>();
            readerEvents.Stub(x => x.Read()).Return(true).Repeat.Once();

            var readerCreator = Mocks.DynamicMock<IDnaDataReaderCreator>();
            readerCreator.Stub(x => x.CreateDnaDataReader("registerpostingcomplaint")).Return(reader);
            readerCreator.Stub(x => x.CreateDnaDataReader("moderatepost")).Return(readerModPost);

            

            var user = Mocks.DynamicMock<IUser>();
            user.Stub(x => x.IsSuperUser).Return(true);
            user.Stub(x => x.UserName).Return("");
            Mocks.ReplayAll();

            var editForm = new PostEditForm(readerCreator) { Hidden = 1 };
            editForm.Author = new UserElement() { user = new User() { UserId = 0, UserName = string.Empty } };
            editForm.UnHidePost(user, "");
             
            readerCreator.AssertWasCalled(x => x.CreateDnaDataReader("registerpostingcomplaint"));
            readerCreator.AssertWasCalled(x => x.CreateDnaDataReader("moderatepost"));

            Assert.AreEqual(0, editForm.Hidden);
        }