public async Task Verify(Guid circleId) { BetrayedCircle betrayedCircle = await _betrayedCircleRepository.FindBetrayedCircleByCircleId(circleId); if (betrayedCircle != null) { throw new PlayersMayNotJoinOrBetrayCircleThatHasBeenBetrayedException(); } }
public async Task <BetrayedCircle> BetrayCircle( Guid betrayedCircleId, Guid circleId, Guid playerId, string key ) { await _circleKeyMustBeValidInOrderToJoinOrBetrayCircleRule.Verify(circleId, key); await _playersMayNotJoinOrBetrayCircleThatHasBeenBetrayedRule.Verify(circleId); await _playersMayNotJoinOrBetrayTheirOwnCircleRule.Verify(circleId, playerId); await _playersMayNotBetrayCircleTheyAreAMemberOfRule.Verify(circleId, playerId); BetrayedCircle betrayedCircle = new BetrayedCircle(betrayedCircleId, circleId, playerId); betrayedCircle.RaiseEvent(new CircleBetrayedEvent(betrayedCircle.Id, betrayedCircle.CircleId, betrayedCircle.PlayerId)); return(betrayedCircle); }
public async Task HandleAsync(BetrayCircleCommand command) { Player player = await _playerStore.LoadAsync(command.PlayerId); if (player == null) { throw new PlayerDoesNotExistException(); } Circle circle = await _circleStore.LoadAsync(command.CircleId); if (circle == null) { throw new CircleDoesNotExistException(); } BetrayedCircle betrayedCircle = await _betrayCircleService.BetrayCircle( command.BetrayedCircleId, command.CircleId, command.PlayerId, command.Key ); await _betrayedCircleStore.SaveAsync(betrayedCircle); }