public async Task <ActionResult> Archive(Guid id) { var feedback = await _dbContext.SurveyFeedback.FindAsync(id); if (feedback == null) { return(NotFound()); } ApplicationUser applicationUser = await _userManager.GetUserAsync(User); var archivedFeedback = new ArchivedSurveyFeedback { UserId = feedback.UserId, Id = feedback.Id, Rating = feedback.Rating, Text = feedback.Text, Url = feedback.Url, UserArchivedBy = applicationUser.UserName, ArchivedAtUtc = DateTime.UtcNow, }; _dbContext.SurveyFeedback.Remove(feedback); await _dbContext.SaveChangesAsync(); await _dbContext.ArchivedSurveyFeedback.AddAsync(archivedFeedback); await _dbContext.SaveChangesAsync(); return(RedirectToAction("Feedback")); }
public async Task <IActionResult> ArchiveAll() { using (var transaction = _dbContext.Database.BeginTransaction()) { var allFeedback = await _dbContext.SurveyFeedback.ToListAsync(); var toBeArchivedFeedback = new List <ArchivedSurveyFeedback>(); ApplicationUser applicationUser = await _userManager.GetUserAsync(User); foreach (var feedback in allFeedback) { var newRecord = new ArchivedSurveyFeedback { UserId = feedback.UserId, Id = feedback.Id, Rating = feedback.Rating, Text = feedback.Text, Url = feedback.Url, UserArchivedBy = applicationUser.UserName, ArchivedAtUtc = DateTime.UtcNow, }; toBeArchivedFeedback.Add(newRecord); } // Update both database tables await _dbContext.ArchivedSurveyFeedback.AddRangeAsync(toBeArchivedFeedback); await _dbContext.SaveChangesAsync(); _dbContext.SurveyFeedback.RemoveRange(allFeedback); await _dbContext.SaveChangesAsync(); transaction.Commit(); } return(RedirectToAction("Feedback")); }