/// <summary> /// Remove a player from a DM's party /// </summary> /// <param name="dmId">Dungeon Master associated with the party's ID</param> /// <param name="playerId">Player to be removed's ID</param> /// <returns>Task of completion for removing character from party</returns> public async Task RemovePlayerFromParty(int dmId, int playerId) { Party party = await _context.Parties.Where(x => x.DungeonMasterId == dmId).FirstOrDefaultAsync(); PlayerInParty playerInParty = await _context.PlayerInParty.FindAsync(playerId, party.Id); if (playerInParty != null) { if (party.Full) { party.Full = false; _context.Entry(party).State = EntityState.Modified; } _context.Entry(playerInParty).State = EntityState.Deleted; var playerReqs = await _context.Requests.Where(x => x.PlayerId == playerId).ToListAsync(); // TODO: Revisit this logic foreach (Request req in playerReqs) { req.PlayerAccepted = false; req.DungeonMasterAccepted = false; req.Active = true; _context.Entry(req).State = EntityState.Modified; } Player player = await _context.Players.Where(x => x.Id == playerId).FirstOrDefaultAsync(); player.PartyId = 1; _context.Entry(player).State = EntityState.Modified; await _context.SaveChangesAsync(); } }
/// <summary> /// Add a player to a party with a Dungeon Master ID for the party and player ID to be added /// </summary> /// <param name="dmId">Dungeon Master associated with the party's ID</param> /// <param name="playerId">Player to be added's ID</param> /// <returns>Task of completion for adding player to party</returns> public async Task AddPlayerToParty(int dmId, int playerId) { Party party = await _context.Parties.Where(x => x.DungeonMasterId == dmId).FirstOrDefaultAsync(); var partyMembers = await _context.PlayerInParty.Where(x => x.PartyId == party.Id).ToListAsync(); if (partyMembers.Count() + 1 >= party.MaxSize) { party.Full = true; _context.Entry(party).State = EntityState.Modified; } PlayerInParty newPlayer = new PlayerInParty { PartyId = party.Id, PlayerId = playerId }; Player player = await _context.Players.Where(x => x.Id == playerId).FirstOrDefaultAsync(); player.PartyId = party.Id; _context.Entry(player).State = EntityState.Modified; await _context.SaveChangesAsync(); _context.Entry(newPlayer).State = EntityState.Added; await _context.SaveChangesAsync(); }