public static void UpdateStats(ShooterData shooter, ShooterMatchData data, MatchData match)
        {
            if (shooter.DatesOfMatches.All(d => d != match.Date))
            {
                shooter.DatesOfMatches.Add(match.Date);

                if (match.Champions.Any(c => c.ShooterId == shooter.Id))
                {
                    ++shooter.DC;
                }

                if (data.DNF)
                {
                    ++shooter.DNF;
                }

                shooter.FN += data.FN;
                shooter.NT += data.NT;
                shooter.PD += data.PD;
                shooter.PE += data.PE;
                ++shooter.TotalMatches;
                shooter.TotalTime += data.TotalTime;

                if (!data.DNF)
                {
                    shooter.TotalTimeWithoutDnf += data.TotalTime;
                }
            }
        }
        public static void UpdateShooter(ShooterData shooter, string division, string classification, MatchData match)
        {
            string value = division + " " + classification;

            if (shooter.UsedDivisionClassifications.All(d => d != value))
            {
                shooter.UsedDivisionClassifications.Add(value);
            }
        }
        public static ShooterData AddOrGet(string fullName, List<ShooterData> shooters, MatchData match)
        {
            var shooter = shooters.FirstOrDefault(s => s.FullName.Equals(fullName, StringComparison.CurrentCultureIgnoreCase));

            if (shooter == null)
            {
                shooter = new ShooterData();

                shooter.Id = 1;
                if (shooters.Count > 0)
                {
                    shooter.Id = shooters.Max(s => s.Id) + 1;
                }

                shooter.FullName = fullName;

                shooters.Add(shooter);
            }

            return shooter;
        }
        public List<ShooterData> GetAllShooters()
        {
            string text = ReadFileAsAnsi(RootFolder + "shooters.SHO.csv");
            TextReader reader = new StringReader(text);
            CsvReader csv = new CsvReader(reader);

            List<ShooterData> list = new List<ShooterData>();
            while (csv.Read())
            {
                ShooterData data = new ShooterData();
                data.Id = csv.GetField<int>("Shooterid");
                data.IdpaNumber = csv.GetField<string>("Idpa Number").Trim();
                data.Inactive = csv.GetField<bool>("Inactive");

                DateTime date;
                string temp = csv.GetField<string>("Lastshoot");
                if (DateTime.TryParse(temp, out date))
                {
                    data.LastShoot = date;
                }

                data.LastDivision = csv.GetField<string>("Lastdivision").Trim();

                temp = csv.GetField<string>("Priormatch");
                if (DateTime.TryParse(temp, out date))
                {
                    data.PriorMatch = date;
                }

                data.FirstName = csv.GetField<string>("Firstname").Trim();
                data.LastName = csv.GetField<string>("Lastname").Trim();
                data.FullName = csv.GetField<string>("Fullname").Trim();

                data.Address = csv.GetField<string>("Address").Trim();
                data.Zip = csv.GetField<string>("Zip").Trim();
                data.State = csv.GetField<string>("State").Trim();
                data.City = csv.GetField<string>("City").Trim();
                data.Country = csv.GetField<string>("Country").Trim();
                data.Email = csv.GetField<string>("Email").Trim();

                data.CdpClass = csv.GetField<string>("Cdp Class").Trim();
                data.EspClass = csv.GetField<string>("Esp Class").Trim();
                data.SspClass = csv.GetField<string>("Ssp Class").Trim();
                data.EsrClass = csv.GetField<string>("Esr Class").Trim();
                data.SsrClass = csv.GetField<string>("Ssr Class").Trim();
                data.HighClass = csv.GetField<string>("Highclass").Trim();

                data.Industry = csv.GetField<bool>("Industry");
                data.Junior = csv.GetField<bool>("Junior");
                data.Lady = csv.GetField<bool>("Lady");
                data.LawEnforcementOfficer = csv.GetField<bool>("Leo");
                data.Military = csv.GetField<bool>("Military");
                data.Press = csv.GetField<bool>("Press");
                data.Senior = csv.GetField<bool>("Senior");
                data.Staff = csv.GetField<bool>("Staff");
                data.Veteran = csv.GetField<bool>("Veteran");
                data.SecurityOfficer = csv.GetField<bool>("So");

                list.Add(data);
                shooters.Add(data.Id, data);
            }

            return list;
        }