Ejemplo n.º 1
0
        private void AddNewMembers(ICRClanStats database, List <SimplifiedPlayer> members)
        {
            var totalNewMembersAdded = 0;

            foreach (var member in members)
            {
                var playerRecord = database.Players?.FirstOrDefault(p => p.Tag == member.tag);

                if (playerRecord == null)
                {
                    playerRecord = new DataModel.Player
                    {
                        Tag  = member.tag,
                        Name = member.name
                    };

                    database.Players.Add(playerRecord);
                    totalNewMembersAdded++;

                    Logger.Info($"\nAdding new member: {member.name}");
                }
            }

            database.SaveChanges();

            Logger.Info($"\nAdded {totalNewMembersAdded} new members");
        }
Ejemplo n.º 2
0
        private void UpdatePlayersStats(ICRClanStats database, List <SimplifiedPlayer> members)
        {
            foreach (var member in members)
            {
                Logger.Debug($"Updating stats for {member.name}");
                Logger.Debug($"      Tag:                        {member.tag}");
                Logger.Debug($"      Role:                       {member.role}");
                Logger.Debug($"      Trophies:                   {member.trophies}");
                Logger.Debug($"      Arena:                      {member.arena.name}");
                Logger.Debug($"      Current Donations:          {member.donations}");
                Logger.Debug($"      Current Donations Delta:    {member.donationsDelta}");
                Logger.Debug($"      Current Donations Received: {member.donationsReceived}");

                try
                {
                    var playerRecord = database.Players?.Single(p => p.Tag == member.tag);
                    var playerStat   = new PlayerStat
                    {
                        RecordDate             = DateTime.UtcNow,
                        DonationsCount         = member.donations ?? 0,
                        DonationsReceivedCount = member.donationsReceived ?? 0,
                        //DonationsDelta = member.donationsDelta ?? 0,
                        PlayerRole           = database.PlayerRoles?.Single(r => r.RoleName == member.role),
                        ClanChestCrownsCount = member.clanChestCrowns ?? 0,
                        Trophies             = member.trophies
                    };

                    playerRecord.PlayerStats.Add(playerStat);
                }
                catch (Exception ex)
                {
                    Logger.Error("Update failed", ex);
                    throw;
                }
            }

            database.SaveChanges();

            Logger.Info($"Updated stats for {members.Count} clan members");
        }
Ejemplo n.º 3
0
        private void RemoveMissingMembers(ICRClanStats database, List <SimplifiedPlayer> members)
        {
            var totalMissingMembers        = 0;
            var currentMemberPlayerRecords = database.Players?.Where(p => p.IsCurrentMember).ToList();

            foreach (var playerRecord in currentMemberPlayerRecords)
            {
                var memberTags = members?.Select(m => m.tag);

                if (memberTags != null && !memberTags.Contains(playerRecord.Tag))
                {
                    playerRecord.IsCurrentMember = false;
                    totalMissingMembers++;

                    Logger.Info($"\nFlagging missing member: {playerRecord.Name}");
                }
            }

            database.SaveChanges();

            Logger.Info($"\nFound {totalMissingMembers} missing members");
        }