public override ClanState AcceptInvite(ClanMembership membership) { FoundingFathers.Add(membership.BattleTag); if (FoundingFathers.Count >= 7) { return(new FoundedClan(FoundingFathers, ChiefTain)); } return(this); }
public void LeaveClan(ClanMembership clanMemberShip) { if (clanMemberShip.BattleTag == ChiefTain) { throw new ValidationException("Chieftain can not leave clan, transfer ownership first"); } clanMemberShip.LeaveClan(); ClanState = ClanState.LeaveClan(clanMemberShip); if (!IsSuccesfullyFounded) { FoundingFathers.Remove(clanMemberShip.BattleTag); } else { Members.Remove(clanMemberShip.BattleTag); } }
public void Invite(ClanMembership clanMemberShip, string personWhoInvitesBattleTag) { if (ChiefTain != personWhoInvitesBattleTag && !Shamans.Contains(personWhoInvitesBattleTag)) { throw new ValidationException("Only chieftains and shamans can invite"); } if (PendingInvites.Contains(clanMemberShip.BattleTag)) { throw new ValidationException("Can not invite player twice"); } if (Members.Contains(clanMemberShip.BattleTag)) { throw new ValidationException("Can not invite player twice"); } if (FoundingFathers.Contains(clanMemberShip.BattleTag)) { throw new ValidationException("Can not invite player twice"); } clanMemberShip.Invite(this); PendingInvites.Add(clanMemberShip.BattleTag); }
public override ClanState LeaveClan(ClanMembership clanMemberShip) { FoundingFathers.Remove(clanMemberShip.BattleTag); return(this); }