Пример #1
0
        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());
        }
Пример #2
0
 public void InitNewNote()
 {
     NewNote      = new BookNote();
     NewNote.Book = this.Book;
     NewNote.Note = "";
 }