public async Task <ServiceModels.ServiceResponse> MergeBoard(InputModels.MergeInput input) { var serviceResponse = new ServiceModels.ServiceResponse(); var fromBoard = (await Records()).FirstOrDefault(b => b.Id == input.FromId); var toBoard = (await Records()).FirstOrDefault(b => b.Id == input.ToId); if (fromBoard is null) { serviceResponse.Error($"A record does not exist with ID '{input.FromId}'"); } if (toBoard is null) { serviceResponse.Error($"A record does not exist with ID '{input.ToId}'"); } if (!serviceResponse.Success) { return(serviceResponse); } var topicBoards = DbContext.TopicBoards.Where(m => m.BoardId == fromBoard.Id).ToList(); // Reassign messages to new board foreach (var topicBoard in topicBoards) { topicBoard.BoardId = toBoard.Id; DbContext.Update(topicBoard); } DbContext.SaveChanges(); var categoryId = fromBoard.CategoryId; // Delete the board DbContext.Boards.Remove(fromBoard); DbContext.SaveChanges(); // Remove the category if empty if (!DbContext.Boards.Any(b => b.CategoryId == categoryId)) { var categoryRecord = (await Categories()).FirstOrDefault(item => item.Id == categoryId); if (categoryRecord != null) { DbContext.Categories.Remove(categoryRecord); DbContext.SaveChanges(); } } return(serviceResponse); }
public async Task <IActionResult> MergeBoard(InputModels.MergeInput input) { if (ModelState.IsValid) { var serviceResponse = await BoardRepository.MergeBoard(input); return(await ForumViewResult.RedirectFromService(this, serviceResponse)); } return(ForumViewResult.RedirectToReferrer(this)); }
public async Task <IActionResult> MergeCategory(InputModels.MergeInput input) { if (ModelState.IsValid) { var serviceResponse = await BoardRepository.MergeCategory(input); return(await this.RedirectFromService(serviceResponse)); } return(this.RedirectToReferrer()); }
public async Task <IActionResult> MergeBoard(InputModels.MergeInput input) { if (ModelState.IsValid) { var serviceResponse = BoardRepository.MergeBoard(input); return(await ForumViewResult.RedirectFromService(this, serviceResponse, FailureCallback)); } return(await FailureCallback()); async Task <IActionResult> FailureCallback() { return(await Task.Run(() => { return ForumViewResult.RedirectToReferrer(this); })); } }
public async Task <ServiceModels.ServiceResponse> MergeCategory(InputModels.MergeInput input) { var serviceResponse = new ServiceModels.ServiceResponse(); var fromCategory = (await Categories()).FirstOrDefault(b => b.Id == input.FromId); var toCategory = (await Categories()).FirstOrDefault(b => b.Id == input.ToId); if (fromCategory is null) { serviceResponse.Error($"A record does not exist with ID '{input.FromId}'"); } if (toCategory is null) { serviceResponse.Error($"A record does not exist with ID '{input.ToId}'"); } if (!serviceResponse.Success) { return(serviceResponse); } var displacedBoards = (await Records()).Where(b => b.CategoryId == fromCategory.Id).ToList(); foreach (var displacedBoard in displacedBoards) { displacedBoard.CategoryId = toCategory.Id; DbContext.Update(displacedBoard); } DbContext.SaveChanges(); DbContext.Categories.Remove(fromCategory); DbContext.SaveChanges(); return(serviceResponse); }