public async Task <IActionResult> PostPlay([FromBody] PlayCreateModel createModel) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var viewModel = await _playService.CreatePlay(createModel); return(CreatedAtAction("GetPlay", new { id = viewModel.Id }, viewModel)); }
public async Task <PlayViewModel> CreatePlay(PlayCreateModel createModel) { // collect user ip var effected = 0; var game = _context.Games .Where(x => x.Id == createModel.GameId && x.State == PlayState.Ready && x.Status < createModel.Status) .SingleOrDefault(); var now = DateTime.Now; if (game != null) { try { game.Status = createModel.Status; game.State = createModel.State; game.OnUpdated = now; var play = new Play { Id = Guid.NewGuid().ToString(), Status = createModel.Status, State = createModel.State, OnCreated = now }; game.Plays.Add(play); _context.Games.Update(game); effected = await _context.SaveChangesAsync(); if (effected > 0) { return(_mapper.Map <PlayViewModel>(play)); } } catch (Exception ex) { _logger.LogError(ex, $"error occured on craete play.", createModel); throw; } } return(new PlayViewModel()); }