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)); }
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))); }
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)); }