public async Task <ActionResult <UserPageDTO> > PutAPage(UserPageDTO pageDTO, int pageId)
        {
            // Test to see if claim == page.UserId or policy is admin
            // if so allow the update
            // if not don't allow it
            var page = await _userPage.GetASpecificPage(pageId);

            var usersRoles = UserClaimsGetters.GetUserRoles(User, _userManager);

            if (UserClaimsGetters.GetUserId(User) == page.UserId || usersRoles.Contains("Admin") || usersRoles.Contains("Owner"))
            {
                try
                {
                    var updatedPage = await _userPage.Update(pageDTO, pageId);

                    return(updatedPage);
                }
                catch (Exception e)
                {
                    throw new Exception($"Update action exception message: {e.Message}");
                }
            }

            throw new Exception("You are not authorized to Update that Page.");
        }
        public async Task <ActionResult <UserPageDTO> > PostUserPage(UserPageDTO newPage)
        {
            var page = await _userPage.Create(newPage); // Might want to add the UserEmail or Id

            if (page != null)
            {
                return(Ok());
            }

            return(BadRequest()); // Maybe reload the page
        }
        private UserPageDTO UserPageTestDTO4()
        {
            var userId = "5678";

            var page = new UserPageDTO()
            {
                Id          = 5,
                UserId      = userId,
                PageName    = "Page Name 5",
                PageContent = "Page Content 5"
            };

            return(page);
        }
        private UserPageDTO UserPageTestDTO3()
        {
            var userId = "5678";

            var page = new UserPageDTO()
            {
                Id          = 4,
                UserId      = userId,
                PageName    = "Page Name 3",
                PageContent = "Page Content 3"
            };

            return(page);
        }
        private UserPageDTO UserPageTestDTO2()
        {
            var userId = "1234";

            var page = new UserPageDTO()
            {
                Id          = 3,
                UserId      = userId,
                PageName    = "Page Name 2",
                PageContent = "Page Content 2"
            };

            return(page);
        }
        // ================== TODO: Future Tests ==============
        // Test adding likes
        // Test retrieving like info
        // Test Deleting a like
        // Test Adding a post to a page
        // Test Deleting a post from a page
        // =======================================================

        private UserPageDTO UserPageTestDTO1()
        {
            var userId = "1234";

            var page = new UserPageDTO()
            {
                Id          = 2,
                UserId      = userId,
                PageName    = "Page Name 1",
                PageContent = "Page Content 1"
            };

            return(page);
        }
        // Read A page
        /// <summary>
        /// Gets the UserPageDTO of a specific page from the database.
        /// </summary>
        /// <param name="pageId">The page's database id</param>
        /// <returns>A single UserPageDTO</returns>
        public async Task <UserPageDTO> GetASpecificPage(int pageId)
        {
            var page = await _context.UserPages.Where(x => x.ID == pageId).FirstOrDefaultAsync();

            var pageDTO = new UserPageDTO()
            {
                Id          = page.ID,
                UserId      = page.UserId,
                PageName    = page.PageName,
                PageContent = page.PageContent,
                Created     = page.Created,
                Modified    = page.Modified,
                PageLikes   = await GetPageLikes(pageId, page.UserId)
            };

            return(pageDTO);
        }
        // Create
        /// <summary>
        /// Creates a new UserPage entity.
        /// </summary>
        /// <param name="page">The UserPageDTO to create the new entity (don't include a value for the Id key)</param>
        /// <returns>The provided UserPageDTO</returns>
        public async Task <UserPageDTO> Create(UserPageDTO page)
        {
            var timeNow = DateTime.UtcNow;

            UserPage newPage = new UserPage()
            {
                UserId      = page.UserId,
                PageName    = page.PageName,
                PageContent = page.PageContent,
                Created     = timeNow,
                Modified    = timeNow
            };

            _context.Entry(newPage).State = EntityState.Added;
            await _context.SaveChangesAsync();

            return(page);
        }
        public async void CanUpdateAPage()
        {
            var service = BuildService();

            var updatedPage = new UserPageDTO()
            {
                Id          = 1,
                UserId      = "1234",
                PageName    = "UpdatedName",
                PageContent = "UpdatedContent"
            };

            var returnFromMethod = await service.Update(updatedPage, 1);

            Assert.NotNull(returnFromMethod);
            Assert.Equal(updatedPage.PageName, returnFromMethod.PageName);
            Assert.Equal(updatedPage.PageContent, returnFromMethod.PageContent);
        }
        // Update
        /// <summary>
        /// Update's a UserPage in the database.
        /// </summary>
        /// <param name="page">The UserPageDTO to make the update</param>
        /// <param name="pageId">The Page's database Id</param>
        /// <returns>The UserPageDTO that was provided</returns>
        public async Task <UserPageDTO> Update(UserPageDTO userPage, int pageId)
        {
            var databasePage = await _context.UserPages.Where(x => x.ID == pageId).FirstOrDefaultAsync();

            if (databasePage != null)
            {
                databasePage.ID                    = databasePage.ID;
                databasePage.UserId                = userPage.UserId == null ? databasePage.UserId : userPage.UserId;
                databasePage.PageName              = userPage.PageName == null ? databasePage.PageName : userPage.PageName;
                databasePage.PageContent           = userPage.PageContent == null ? databasePage.PageContent : userPage.PageContent;
                databasePage.Modified              = DateTime.UtcNow;
                _context.Entry(databasePage).State = EntityState.Modified;
                await _context.SaveChangesAsync();

                return(await GetASpecificPage(pageId));
            }

            throw new Exception("That page does not exist.");
        }
示例#11
0
        public UserPageDTO UnansweredQuestionsDto(string userId)
        {
            var dto       = new UserPageDTO();
            var questions = _questionRepository.UnansweredQuestionsModels(userId);

            dto.Questions = _mapper.Map <List <QuestionDto> >(questions);

            //dto.Questions = questions.
            //    Select(x => new QuestionDto()
            //    {
            //        QuestionUserId = x.QuestionUserId,
            //        Text = x.Text,
            //        AnswerUserId = x.AnswerUserId,
            //        Id = x.Id,
            //        IsAnonimized = x.IsAnonimized,
            //        QuestionUserName = x.IsAnonimized ? null : x.QuestionUser.Email,
            //    }).ToList();
            return(dto);
        }
示例#12
0
        public UserPageDTO PageDTO(string userId, string questionName, int pageNumber = 1, int pageSize = 3)
        {
            var dto = new UserPageDTO();

            dto.QuestionsCount = _questionRepository.QuestionCount(userId);
            dto.PageSize       = pageSize;
            dto.User.Id        = userId;
            if (userId != null)
            {
                dto.User.Name = _questionRepository.UserName(userId);
            }
            dto.Followers  = _questionRepository.Followers(userId);
            dto.PageNumber = pageNumber;
            var questionmodel = _questionRepository.PageModel(userId, pageNumber, pageSize);

            dto.Questions = _mapper.Map <List <QuestionDto> >(questionmodel);


            //dto.Questions =questionmodel.
            //    Select(question => new QuestionDto()
            //    {
            //        QuestionUserId=question.QuestionUserId,
            //        Answer = question.Answer,
            //        Text = question.Text,
            //        AnswerUserName = question.AnswerUser?.UserName,
            //        Id = question.Id,
            //        IsAnonimized = question.IsAnonimized,
            //        QuestionUserName = question.IsAnonimized ? null: question.QuestionUser.Email,
            //        Comments = question.Comments.Select(comment => new CommentDto()
            //        {
            //            QuestionId = question.Id,
            //            Text = comment.Text,
            //            IsAnonimized = comment.IsAnonimized,
            //            UserId = comment.IsAnonimized ? null : comment.UserId,
            //            UserName = comment.IsAnonimized ? null : comment.UserName,
            //        }).ToList()
            //    }).ToList();
            return(dto);
        }