public async Task <IActionResult> Details(DetailsViewModel detailsViewModel) { var user = await _userManager.GetUserAsync(User); switch (detailsViewModel.Action) { case "reset": { var answer = await _context.Answers .Include(a => a.Book) .FirstOrDefaultAsync(a => a.BookId == detailsViewModel.BookId && a.UserId == user.Id); answer.ReasonForRestart = detailsViewModel.ReasonForRestart; // presence of ReasonForRestart indicates request for restart _context.Answers.Update(answer); await _context.SaveChangesAsync(); return(RedirectToAction("Details", new { id = detailsViewModel.BookId })); } case "saveOpinion": { var bookComment = await _context.BookComments .SingleOrDefaultAsync(bn => bn.UserId == user.Id && bn.BookId == detailsViewModel.BookId); if (bookComment == null) { var newBookComment = new BookComment { BookId = detailsViewModel.BookId, UserId = user.Id, Text = detailsViewModel.BookCommentText, Share = detailsViewModel.Share }; _context.BookComments.Add(newBookComment); await _context.SaveChangesAsync(); } else { bookComment.Share = detailsViewModel.Share; bookComment.Text = detailsViewModel.BookCommentText; await _context.SaveChangesAsync(); } return(RedirectToAction("Details", new { id = detailsViewModel.BookId })); } case "answerText": { var bookOpinion = await _context.BookOpinions .SingleOrDefaultAsync(bn => bn.UserId == user.Id && bn.BookId == detailsViewModel.BookId); if (bookOpinion == null) { var newBookOpinion = new BookOpinion { BookId = detailsViewModel.BookId, UserId = user.Id, AnswerText = detailsViewModel.BookOpinionText, Share = detailsViewModel.Share }; _context.BookOpinions.Add(newBookOpinion); await _context.SaveChangesAsync(); } else { bookOpinion.Share = detailsViewModel.Share; bookOpinion.AnswerText = detailsViewModel.BookOpinionText; await _context.SaveChangesAsync(); } return(RedirectToAction("Details", new { id = detailsViewModel.BookId })); } case "makeNote": { var bookNote = await _context.BookNotes .SingleOrDefaultAsync(bn => bn.UserId == user.Id && bn.BookId == detailsViewModel.BookId); if (bookNote == null) { var newBookNote = new BookNote() { UserId = user.Id, BookId = detailsViewModel.BookId, Text = detailsViewModel.BookNoteText }; user.BookNotes.Add(newBookNote); await _userManager.UpdateAsync(user); } else { bookNote.Text = detailsViewModel.BookNoteText; await _context.SaveChangesAsync(); } return(RedirectToAction("Details", new { id = detailsViewModel.BookId })); } } return(NoContent()); }
public void InitNewNote() { NewNote = new BookNote(); NewNote.Book = this.Book; NewNote.Note = ""; }