예제 #1
0
        public async Task <IActionResult> Edit(int?id)
        {
            if (id == null)
            {
                _logger.LogError($"id not found {DateTime.UtcNow.ToLongTimeString()}");
                return(NotFound());
            }

            var game = await _context.Game.FindAsync(id);

            if (game == null)
            {
                _logger.LogError($"Game == NULL {DateTime.UtcNow.ToLongTimeString()}");
                return(NotFound());
            }

            var review = await _context.Review.Where(i => i.GameID == game.ID).Where(i => i.ReviewerID == _userManager.GetUserId(User)).FirstOrDefaultAsync();

            if (game == null)
            {
                return(NotFound());
            }

            var vm = new GameReviewVM();

            vm.Game   = game;
            vm.Review = review;

            return(View(vm));
        }
예제 #2
0
        public async Task <IActionResult> Create(GameReviewVM gameReviewVM)
        {
            if (!ModelState.IsValid)
            {
                return(View(gameReviewVM));
            }

            gameReviewVM.Game.ImagePath = await SaveImageFileAsync(gameReviewVM.ImageFile);

            var now = DateTime.Now;

            gameReviewVM.Game.created_at = now;
            gameReviewVM.Game.updated_at = now;

            _context.Add(gameReviewVM.Game);

            await _context.SaveChangesAsync();

            return(RedirectToAction(nameof(Index)));
        }
예제 #3
0
        public async Task <IActionResult> Edit(int id, GameReviewVM vm)
        {
            if (id != vm.Game.ID)
            {
                _logger.LogError($"id != Game.ID _ POST EDIT {DateTime.UtcNow.ToLongTimeString()}");
                return(NotFound());
            }

            // 更新日設定
            var now = DateTime.Now;

            vm.Review.updated_at = now;

            if (!ModelState.IsValid)
            {
                _logger.LogError($"Modelstate.NotValid _ POST EDIT {DateTime.UtcNow.ToLongTimeString()}");
                return(View(vm));
            }

            try
            {
                if (vm.ImageFile != null)
                {
                    vm.Game.ImagePath = await SaveImageFileAsync(vm.ImageFile);
                }
                _context.Update(vm.Game);

                //ReviewにGameIDを設定(わざわざ?)
                vm.Review.GameID     = vm.Game.ID;
                vm.Review.ReviewerID = _userManager.GetUserId(User);

                var tmpReview = await _context.Review.Where(i => i.ReviewerID == vm.Review.ReviewerID)
                                .Where(i => i.GameID == vm.Game.ID)
                                .AsNoTracking().FirstOrDefaultAsync();

                //既にレビューが登録済みかどうか判定
                if (tmpReview == null)
                {
                    vm.Review.created_at = now;

                    _context.Add(vm.Review);
                }
                else
                {
                    vm.Review.ID = tmpReview.ID;
                    _context.Update(vm.Review);
                }

                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException e)
            {
                if (!GameExists(vm.Game.ID))
                {
                    _logger.LogError($"{e} {DateTime.UtcNow.ToLongTimeString()}");
                    return(NotFound());
                }
                else
                {
                    _logger.LogError($"{e} {DateTime.UtcNow.ToLongTimeString()}");
                    throw;
                }
            }
            //画面遷移しない
            TempData["Message"] = "レビューを更新しました!";
            return(View(vm));
        }