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"); }
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"); }
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"); }