예제 #1
0
        public async Task <BoardDTO> GetAllPostsForThread(string boardName, int threadId)
        {
            var board = await _cache.GetObjectAsync <BoardDTO>(RoutePaths.PostsRoute(boardName, threadId));

            if (board == null)
            {
                board = await _work.PostRepository.GetAllPostsForThread(boardName, threadId);

                await _cache.SetObjectAsync(RoutePaths.PostsRoute(boardName, threadId), board);
            }
            return(board);
        }
예제 #2
0
        public async Task <BoardDTO> DeletePost(string boardName, int postId)
        {
            var post = await _work.PostRepository.DeletePost(boardName, postId);

            await _work.SaveChangesAsync();

            await _cache.RemoveAsync(RoutePaths.SinglePost(boardName, postId));

            var board = await _work.PostRepository.GetAllPostsForThread(boardName, post.Thread.IdEffective);

            await _cache.SetObjectAsync(RoutePaths.PostsRoute(board.NameShort, board.CurrentThread.Id), board);

            return(board);
        }
예제 #3
0
        public async Task <BoardDTO> PostThread(string boardName, PostDTO thread)
        {
            var post = await _work.PostRepository.PostThread(boardName, thread);

            await _work.SaveChangesAsync();

            var board = await _work.PostRepository.GetAllThreadsForBoard(boardName);

            await _cache.SetObjectAsync(RoutePaths.ThreadsRoute(boardName), board);

            board = await _work.PostRepository.GetAllPostsForThread(boardName, post.IdEffective);

            await _cache.SetObjectAsync(RoutePaths.PostsRoute(boardName, board.CurrentThread.Id), board);

            return(board);
        }
예제 #4
0
        public async Task <BoardDTO> DeleteImage(string boardName, int postId)
        {
            var post = await _work.PostRepository.DeleteImage(boardName, postId);

            await _work.SaveChangesAsync();

            if (string.IsNullOrEmpty(post.CurrentThread.Content))
            {
                return(await DeletePost(boardName, postId));
            }
            await _cache.SetObjectAsync(RoutePaths.SinglePost(boardName, postId), post);

            var board = await _work.PostRepository.GetAllPostsForThread(boardName, post.CurrentThread.ThreadId.Value);

            await _cache.SetObjectAsync(RoutePaths.PostsRoute(board.NameShort, board.CurrentThread.Id), board);

            return(board);
        }