/// <summary> /// Adds a member to the guild. /// </summary> /// <param name="player">The player.</param> /// <param name="rank">The starting rank.</param> /// <param name="update">A boolean determining whether the client of the player should be updated.</param> public void AddMember(Models.Entities.Player player, Enums.GuildRank rank, bool update = true) { var guildMember = new GuildMember(new Database.Models.DbGuildRank { GuildId = Guild.Id, PlayerId = player.DbPlayer.Id, PlayerName = player.Name, PlayerLevel = player.Level, SilverDonation = 0, CPDonation = 0, GuildRank = rank.ToString(), JoinDate = Drivers.Time.GetTime(Drivers.Time.TimeType.Day) }); if (guildMember.DbGuildRank.Create() && _members.TryAdd(player.DbPlayer.Id, guildMember)) { player.AddActionLog("JoinGuild", Guild.Id); guildMember.Player = player; player.Guild = Guild; player.GuildMember = guildMember; if (rank == Enums.GuildRank.GuildLeader) { Guild.GuildLeader = guildMember; } if (update) { player.UpdateClientGuild(); player.UpdateScreen(true); } } _cachedSortedMembers = null; }
/// <summary> /// Promotes/Unpromotes a member. /// </summary> /// <param name="member">The member.</param> /// <param name="promotionRank">The promotion rank. Member for unpromote.</param> /// <returns>True if the promotion or unpromotion was a success.</returns> public bool Promote(GuildMember member, Enums.GuildRank promotionRank) { if (promotionRank == Enums.GuildRank.None) { return(false); } if (promotionRank == Enums.GuildRank.DeputyLeader && _members.Values.Count(m => m.Rank == Enums.GuildRank.DeputyLeader) >= 5) { return(false); } var oldRank = member.Rank; member.Rank = promotionRank; member.DbGuildRank.Update(); if (member.Online) { member.Player.UpdateClientGuild(); member.Player.UpdateScreen(true); } if (promotionRank == Enums.GuildRank.Member) { if (member.Player != null) { if (oldRank == Enums.GuildRank.DeputyLeader) { SendMessageFormat("REMOVED_DEPUTY_LEADER", Enums.GuildMessageType.Red, member.Player.Name); } else { SendMessageFormat("UNPROMOTED_MEMBER", Enums.GuildMessageType.Red, member.Player.Name, oldRank.ToString()); } } } else { if (member.Player != null) { if (promotionRank == Enums.GuildRank.DeputyLeader) { SendMessageFormat("NEW_DEPUTY_LEADER", Enums.GuildMessageType.Green, member.Player.Name); } else { SendMessageFormat("PROMOTED_MEMBER", Enums.GuildMessageType.Green, member.Player.Name, promotionRank.ToString()); } } } _cachedSortedMembers = null; return(true); }