public async Task <object> MoveSoldierAsync(Guid id, MoveSoldierModel model, string userId) { var game = await Repository.GetByIdAsync(id.ToString()); if (game == null) { throw new KeyNotFoundException("Game not found"); } var moveSoldierEvent = new MoveSoldierEvent( new Guid(model.CastleId), model.Soldiers, userId, DateTime.UtcNow, DateTime.UtcNow); _domain.AddEvent(id, moveSoldierEvent); return(moveSoldierEvent.Id.ToString()); }
public async Task <IHttpActionResult> MoveSoldier(string id, MoveSoldierModel model) { var game = await _gameService.Build(new Guid(id), User.Identity.GetUserId(), -1); if (game == null || game.HasError) { return(NotFound()); } var castle = game.Castles?.FirstOrDefault(e => e.Id == model.CastleId); if (castle == null) { return(NotFound()); } var userId = User.Identity.GetUserId(); if (castle.OwnerUserId != userId) { return(BadRequest("You don't have permission to performance this action on the castle")); } model.Soldiers = (game.UserId == userId ? game.UserSoldiers : game.OpponentSoldiers)?.Select(e => e.Id).ToList() ?? new List <string>(); return(Ok(await _gameService.MoveSoldierAsync(game.Id, model, User.Identity.GetUserId()))); }
/// <param name='operations'> /// The operations group for this extension method. /// </param> /// <param name='id'> /// </param> /// <param name='model'> /// </param> /// <param name='cancellationToken'> /// The cancellation token. /// </param> public static async Task <string> MoveSoldierAsync(this IGame operations, string id, MoveSoldierModel model, CancellationToken cancellationToken = default(CancellationToken)) { using (var _result = await operations.MoveSoldierWithHttpMessagesAsync(id, model, null, cancellationToken).ConfigureAwait(false)) { return(_result.Body); } }
/// <param name='operations'> /// The operations group for this extension method. /// </param> /// <param name='id'> /// </param> /// <param name='model'> /// </param> public static string MoveSoldier(this IGame operations, string id, MoveSoldierModel model) { return(operations.MoveSoldierAsync(id, model).GetAwaiter().GetResult()); }