public async Task KickOff(Guid sessionId) { var session = _matchmakingService.GetSession(sessionId); var match = new Models.Match.Match { Id = sessionId, HomeTeam = new TeamDetails { UserId = session.HostPlayerId } }; match.HomeTeam.Squad = BuildSquad(await _bus.RequestAsync <GetSquadRequest, GetSquadResponse>(new GetSquadRequest(match.HomeTeam.UserId))); match.AwayTeam = new TeamDetails { UserId = session.JoinedPlayerId.Value }; match.AwayTeam.Squad = BuildSquad(await _bus.RequestAsync <GetSquadRequest, GetSquadResponse>(new GetSquadRequest(match.AwayTeam.UserId))); match.KickOff = DateTime.Now; var simulatedMatch = _matchEngine.Simulate(match); await _matchRepository.CreateAsync(simulatedMatch); }
public async Task ValidateAndSubscribe(string sessionId) { var user = Context.UserIdentifier; //todo check user is session host var session = _matchmakingService.GetSession(new Guid(sessionId)); if (session != null && !session.Expired && session.Open) { await Groups.AddToGroupAsync(Context.ConnectionId, session.Id.ToString()); await Clients.User(user).ReceiveSessionId(session.Id); } else { await Clients.User(user).Cancelled(); } }