private bool PassedJobPointPurchases(Player player, Achievement achievementToCheck)
 {
     foreach (var jpProductReq in achievementToCheck.JobPointProductReqs)
     {
         var fds = player.JobPointPurchases.FirstOrDefault(purch => purch.Product == jpProductReq);
         if (fds == null) return false; // Didn't purchase a required product
     }
     return true;
 }
 private bool PassedAssignmentTypes(Player player, Achievement achievementToCheck)
 {
     foreach (var assTypeReq in achievementToCheck.AssignmentTypeReqs)
     {
         var assignmentsOfType = player.AssignmentsCompleted.FindAll(ass => ass.Type.NameOrCode == assTypeReq.AssignmentType.NameOrCode);
         if (assignmentsOfType.Count != assTypeReq.AmountReq) return false; // Not enough assignments of some type
     }
     return true;
 }
        private bool PassedGeneralStats(Player player, Achievement achievementToCheck)
        {
            foreach (var genStatReq in achievementToCheck.GeneralStatReqs)
            {
                var playerGeneralStatAmount =
                player.GeneralStats.FirstOrDefault(
                    u =>
                        u.StatEffect.AffectedStatBonus ==
                        genStatReq.StatEffect.AffectedStatBonus);
                if (playerGeneralStatAmount == null) throw new Exception("Database error, player has no such general stat entry");

                var res = genStatReq.CompareTo(playerGeneralStatAmount);
                if (res == 1)
                    return false; // General stat not high enough
            }
            return true;
        }