public async Task MakeFirstMove(MakeFirstMoveParams @params) { try { var result = _gameTableService.MakeFirstMove(Context.User.GetUserId(), @params.CardIds, @params.Rank); await NotifyFirstMoveMade(result, @params.CardIds, @params.Rank); await Clients.Caller.ReceiveMakeFirstMoveResult(new ReceiveMakeFirstMoveResultParams() { Succeeded = true, NextMoverId = result.NextMoverId, RequestId = @params.RequestId, MoverId = Context.User.GetUserId() }); } catch (Exception ex) { _logger.LogError(ex, $"Ошибка хода типа \"Первый ход\". Игрок с Id = {Context.User.GetUserId()}"); await Clients.Caller.ReceiveMakeFirstMoveResult(new ReceiveMakeFirstMoveResultParams() { Succeeded = false, RequestId = @params.RequestId, MoverId = Context.User.GetUserId() }); } }
public Promise <ReceiveMakeFirstMoveResultParams> MakeFirstMove(MakeFirstMoveParams @params) { if (_isDisposed) { throw new ObjectDisposedException("Ресурсы объекта были освобождены"); } if (_hubConnection == null) { throw new Exception("Подключение еще не было создано"); } if (_hubConnection.State != HubConnectionState.Connected) { throw new Exception($"Подключение еще не установлено. Статус - {_hubConnection.State}"); } var promise = new Promise <ReceiveMakeFirstMoveResultParams>(@params.RequestId, () => { _hubConnection.InvokeAsync(nameof(IMainHubApi.MakeFirstMove), @params); }); ReceivedMakeFirstMoveResult += promise.OnCopleted; return(promise); }