Exemplo n.º 1
0
        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));
        }
Exemplo n.º 2
0
        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());
        }