private async Task <IActionResult> CreateGameEventParticipationForGroup( GameEventDto gameEvent, string groupName, IEnumerable <string> users, SendGameEventInvitationDto.GameEventLinkGenerator gameEventLinkGenerator) { try { await _gameEventParticipationService.CreateGameEventParticipationsIgnoringErrorsAsync( gameEvent.Id, gameEventLinkGenerator, users); } catch (ApplicationException exception) { return(Error.FromController(this).ErrorJson("Error!", exception.Message, HttpStatusCode.BadRequest)); } catch { return(Error.FromController(this).ErrorJson( "Error!", "An unexpected error has occured while processing your request.", HttpStatusCode.InternalServerError)); } return(Ok( new { title = "Invite sent.", message = $"An email with your invitation to the {gameEvent.Name} event has been sent to {groupName}." })); }
private void HandleTurnCardEvent(GameEventDto gameEventDto, Game game) { var player = game.Players.Single(p => p.Id == gameEventDto.PlayerId); var card = player.CurrentCard; card.IsTurned = true; if (game.Players.All(p => p.CurrentCard.IsTurned)) { var lowestCard = game.Players.Select(p => p.CurrentCard.Value).Min(); var loosers = game.Players.Where(p => p.CurrentCard.Value == lowestCard); if (loosers.Count() == 1) { game.GameActions.Add($"Lowest card is {lowestCard}. Looser this round is {loosers.First().Name}. DRINK!"); } else { game.GameActions.Add($"Lowest card is {lowestCard}. Loosers this round are " + string.Join(",", loosers.Select(l => l.Name)) + ". DRINK!"); } //Handle king var playersWithKing = game.Players.Where(p => p.CurrentCard.Value == CardValue.King); foreach (var playerWithKing in playersWithKing) { game.GameActions.Add($"{playerWithKing.Name} got a king! ***DRINK!***"); } //TODO: //For each player that gets a queen every other player with a picture card(king, queen or jack) must drink some of his personal drink. //For each player that get a jack every other player must drink some of his personal drink. //If a player receives a 6 of hearts he is to be given three new cards and all players must act according to these cards before a new round is started. //If a player receives a 6 of diamonds the player to the left of him is to be given three new cards and all players must act according the these cards before a new round is started. } }
private async Task <IActionResult> SendGameEventInvitation( GameEventDto gameEvent, string userName, SendGameEventInvitationDto sendGameEventInvitationDto) { try { await _gameEventParticipationService.CreateGameEventParticipationAsync(sendGameEventInvitationDto); } catch (ApplicationException exception) { return(Error.FromController(this).ErrorJson("Error!", exception.Message, HttpStatusCode.BadRequest)); } catch { return(Error.FromController(this).ErrorJson( "Error!", "An unexpected error has occured while processing your request.", HttpStatusCode.InternalServerError)); } return(Ok( new { title = "Invite sent.", message = $"An email with your invitation to the {gameEvent.Name} event has been sent to {userName}." })); }
public static RemoveFromGameEventViewModel ToRemoveFromGameEventViewModel( this GameEventDto gameEventDto, string userName) => new RemoveFromGameEventViewModel { Id = gameEventDto.Id, Name = gameEventDto.Name, UserName = userName };
public static EditGameEventViewModel ToEditViewModel(this GameEventDto gameEventDto) => new EditGameEventViewModel { Id = gameEventDto.Id, Name = gameEventDto.Name, Date = gameEventDto.Date, Place = gameEventDto.Place, Games = string.Join('\n', gameEventDto.Games) };
public static GameEventViewModel ToViewModel(this GameEventDto gameEventDto, GameEventPermission permission) => new GameEventViewModel( gameEventDto.Id, gameEventDto.Name, gameEventDto.Place, gameEventDto.Date, permission, gameEventDto.Games, gameEventDto.Creator.ToViewModel(), gameEventDto.Invitees.Select(u => u.ToViewModel()), gameEventDto.Participants.Select(u => u.ToViewModel()), gameEventDto.DescriptionTab.ToViewModel());
public async Task <GameDto> HandleGameEvent(GameEventDto gameEventDto) { var game = await _gameStore.GetAsync(gameEventDto.GameId); if (game == null) { return(null); } var initiatingPlayer = game.Players.Single(p => p.Id == gameEventDto.PlayerId); switch (gameEventDto.EventType) { case GameEventType.Nothing: break; case GameEventType.Join: break; case GameEventType.ShuffleDeck: game.CardDeck.Shuffle(); game.AddGameAction($"{initiatingPlayer.Name} shuffled the deck"); break; case GameEventType.Deal: { foreach (var player in game.Players) { player.CurrentCard = game.CardDeck.First(); player.CurrentCard.IsTurned = false; game.CardDeck.RemoveAt(0); } game.AddGameAction($"{initiatingPlayer.Name} dealt cards"); } break; case GameEventType.TurnCard: game.AddGameAction($"{initiatingPlayer.Name} turned his card"); HandleTurnCardEvent(gameEventDto, game); break; default: throw new Exception("Unknown gameeventtype?"); break; } return(DtoMapper.ToDto(game, gameEventDto.PlayerId)); }
public static ExitGameEventViewModel ToExitViewModel(this GameEventDto gameEventDto) => new ExitGameEventViewModel { Id = gameEventDto.Id, Name = gameEventDto.Name };