示例#1
0
        public async Task ToggleBoard(InputModels.ToggleBoardInput input)
        {
            var topic = await DbContext.Topics.FindAsync(input.TopicId);

            var boards = await BoardRepository.Records();

            if (topic is null || topic.Deleted || !boards.Any(r => r.Id == input.BoardId))
            {
                throw new HttpNotFoundError();
            }

            var existingRecords = await DbContext.TopicBoards.Where(p => p.TopicId == input.TopicId && p.BoardId == input.BoardId).ToListAsync();

            if (existingRecords.Count() == 0)
            {
                var topicBoardRecord = new DataModels.TopicBoard {
                    TopicId = input.TopicId,
                    BoardId = input.BoardId,
                    UserId  = UserContext.ApplicationUser.Id
                };

                DbContext.TopicBoards.Add(topicBoardRecord);
            }
            else
            {
                DbContext.TopicBoards.RemoveRange(existingRecords);
            }

            await DbContext.SaveChangesAsync();
        }
示例#2
0
        public async Task <IActionResult> ToggleBoard(InputModels.ToggleBoardInput input)
        {
            if (ModelState.IsValid)
            {
                await TopicRepository.Toggle(input);
            }

            return(new NoContentResult());
        }
示例#3
0
        public void Toggle(InputModels.ToggleBoardInput input)
        {
            var messageRecord = DbContext.Messages.Find(input.MessageId);

            if (messageRecord is null)
            {
                throw new HttpNotFoundError();
            }

            if (!BoardRepository.Any(r => r.Id == input.BoardId))
            {
                throw new HttpNotFoundError();
            }

            var messageId = input.MessageId;

            if (messageRecord.ParentId > 0)
            {
                messageId = messageRecord.ParentId;
            }

            var boardId = input.BoardId;

            var existingRecord = DbContext.MessageBoards.FirstOrDefault(p => p.MessageId == messageId && p.BoardId == boardId);

            if (existingRecord is null)
            {
                var messageBoardRecord = new DataModels.MessageBoard {
                    MessageId = messageId,
                    BoardId   = boardId,
                    UserId    = UserContext.ApplicationUser.Id
                };

                DbContext.MessageBoards.Add(messageBoardRecord);
            }
            else
            {
                DbContext.MessageBoards.Remove(existingRecord);
            }

            DbContext.SaveChanges();
        }