public async Task ForEachPlog_Add(CharacterInformation info, PlogDbContext db, Dictionary <string, Item> itemDict, int batchNumber) { if (!info.Plog.Active) { info.Plog.Modified = DateTime.UtcNow; await _lock.WaitAsync(); db.Plogs.Update(info.Plog); _lock.Release(); return; } var totalPower = info.AbilitiesResult.Records.TotalAbility; var powerScore = await _powerService.CalculateScore(totalPower); var items = info.Items; var statLog = new ClanMemberStatLog { ClanMemberId = info.Plog.Id, Recorded = DateTime.UtcNow, BatchId = batchNumber, Level = info.Character.Level, // No api route known, hard to parse from html HongmoonLevel = info.Character.HongmoonLevel, Score = powerScore, AttackPower = totalPower.AttackPower, PvpAttackPower = totalPower.PvpAttackPower, BossAttackPower = totalPower.BossAttackPower, Critical = totalPower.Critical, CriticalDamage = totalPower.CriticalDamage, AdditionalDamage = totalPower.AdditionalDamage, Accuracy = totalPower.Accuracy, Piercing = totalPower.Piercing, Concentration = totalPower.Concentration, DebuffDamage = totalPower.DebuffDamage, FlameDamage = totalPower.FireDamage, FrostDamage = totalPower.IceDamage, EarthDamage = totalPower.EarthDamage, LightningDamage = totalPower.LightningDamage, ShadowDamage = totalPower.ShadowDamage, WindDamage = totalPower.WindDamage, Health = totalPower.Health, Defense = totalPower.Defense, PvpDefense = totalPower.PvpDefense, BossDefense = totalPower.BossDefense, Evasion = totalPower.Evasion, Block = totalPower.Block, CriticalDefense = totalPower.CriticalDefense, DamageReduction = totalPower.DamageReduction, HealthRegen = totalPower.HealthRegen, HealthRegenCombat = totalPower.HealthCombatRegen, DebuffDefense = totalPower.DebuffDamageDefense, Weapon = itemDict.GetValue(items.Weapon), Gem1 = itemDict.GetValue(items.Gem1), Gem2 = itemDict.GetValue(items.Gem2), Gem3 = itemDict.GetValue(items.Gem3), Gem4 = itemDict.GetValue(items.Gem4), Gem5 = itemDict.GetValue(items.Gem5), Gem6 = itemDict.GetValue(items.Gem6), Ring = itemDict.GetValue(items.Ring), Earring = itemDict.GetValue(items.Earring), Necklace = itemDict.GetValue(items.Necklace), Bracelet = itemDict.GetValue(items.Bracelet), Belt = itemDict.GetValue(items.Belt), Gloves = itemDict.GetValue(items.Gloves), Soul = itemDict.GetValue(items.Soul), Heart = itemDict.GetValue(items.Heart), Pet = itemDict.GetValue(items.Pet), SoulBadge = itemDict.GetValue(items.SoulBadge), MysticBadge = itemDict.GetValue(items.MysticBadge), }; try { await _lock.WaitAsync(); db.Logs.Add(statLog); _lock.Release(); } catch (Exception ex) { await _loggingService.LogErrorAsync(ex.StackTrace); } }