Beispiel #1
0
        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"));
        }
Beispiel #2
0
        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"));
        }