Exemple #1
0
        public async Task <IActionResult> Update(int id, [FromBody] PostEditViewModel postEditModel)
        {
            if (postEditModel == null)
            {
                return(BadRequest());
            }

            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }

            var post = await _postService.GetAsync(id);

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

            if (!HasCurrentUserEditRights(post))
            {
                return(StatusCode(403));
            }

            var editPostDto = MapToEditPostDTO(postEditModel);
            var updatedPost = await _postService.Update(id, editPostDto);

            var postViewModel = PostMapper.ConvertToPostViewModel(updatedPost);

            return(Ok(postViewModel));
        }
Exemple #2
0
        public async Task <IActionResult> GetPageAsync(InputPageData inputData)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest("Count of posts must be less than 100 and more than 0"));
            }

            int currentUserId = _userContext.CurrentUser.Id;

            var pagedResultDto = await _postService.GetPageAsync(currentUserId, inputData.PageNum, inputData.PageSize, inputData.JustMyPosts, inputData.SearchStr);

            var posts = new List <PostViewModel>();

            pagedResultDto.Data.ForEach((p) =>
            {
                var filesViewModelCollection = p.Files.Select(FileMapper.ConvertToFileInfoViewModel);
                var usersLikes           = p.UsersLikes.Select(UserMapper.ConvertToUserLikeViewModel);
                var postViewModel        = PostMapper.ConvertToPostViewModel(p);
                postViewModel.Files      = filesViewModelCollection.ToList();
                postViewModel.UsersLikes = usersLikes.ToList();
                posts.Add(postViewModel);
            });

            return(Ok(new
            {
                Paging = pagedResultDto.Paging,
                Data = posts
            }));
        }
Exemple #3
0
        public async Task <IActionResult> CreateAsync([FromBody] PostCreateViewModel postCreateModel)
        {
            if (postCreateModel == null)
            {
                return(BadRequest());
            }

            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }

            List <FileInfoDTO> filesDTO = new List <FileInfoDTO>();

            postCreateModel.VideoUrl = string.IsNullOrEmpty(postCreateModel.VideoUrl) ? null : postCreateModel.VideoUrl;

            var offset = TimeZoneInfo.Local.GetUtcOffset(DateTime.UtcNow);

            postCreateModel.StartDate = postCreateModel.StartDate.AddHours(offset.TotalHours);
            postCreateModel.EndDate   = postCreateModel.EndDate.AddHours(offset.TotalHours);

            foreach (var file in postCreateModel.Files)
            {
                var createRequestFile = FileMapper.ConvertToCreateFileRequest(file);

                using (var stream = _fileManager.GetFileStream(file))
                {
                    var createdPostFileDTO = await _fileService.CreateAsync(createRequestFile, stream);

                    filesDTO.Add(createdPostFileDTO);
                }
            }

            var post = PostMapper.ConvertToPostDTO(postCreateModel);

            post.Files = filesDTO;
            var createdPostDTO = await _postService.CreateAsync(post);

            var currentUser   = _userContext.CurrentUser;
            var postViewModel = PostMapper.ConvertToPostViewModel(createdPostDTO);

            if (currentUser.RoleId != (int)Roles.Moderator)
            {
                _emailService.PostCreatedNotificationAsync(postViewModel);
            }
            return(Ok(createdPostDTO));
        }