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(); }
public async Task <IActionResult> ToggleBoard(InputModels.ToggleBoardInput input) { if (ModelState.IsValid) { await TopicRepository.Toggle(input); } return(new NoContentResult()); }
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(); }