示例#1
0
        // *** TIMING DATABASE CONNECTION *** //

        public void GetTimes(int competitionInstanceId)
        {
            IEnumerable <Heat> heats = heats = _repo.GetHeatsInCompetitionInstance((int)competitionInstanceId);
            var results = _repo.GetResultsFromTimingDb(competitionInstanceId);

            foreach (var r in results)
            {
                int counter = 0;
                foreach (var h in heats)
                {
                    //Can only have one entry for a single chip
                    IEnumerable <ChipInHeatViewModel> exists = (from c in _repo.GetChipsInHeat(h.Id)
                                                                where r.ChipCode == c.ChipCode
                                                                select c).ToList();
                    if (exists.Count() == 0)
                    {
                        break;
                    }
                    var existsInHeat = (from e in exists
                                        where e.HeatId == h.Id
                                        select e).SingleOrDefault();
                    if (existsInHeat != null)
                    {
                        if (r.Time01 != 0)
                        {
                            Time time01 = new Time {
                                ChipCode = existsInHeat.ChipCode, HeatId = h.Id, RawTime = r.Time01, TimeNumber = 1, Type = TimeType.Start
                            };
                            Time time = _repo.GetTime(h.Id, existsInHeat.ChipCode, 1);
                            //Add time if it does not exist
                            if (time == null)
                            {
                                _repo.AddTime(time01);
                            }
                            //Update time if different
                            else if (time01.RawTime != time.RawTime)
                            {
                                _repo.Remove(h.Id, existsInHeat.ChipCode, 1);
                                _repo.AddTime(time01);
                            }
                        }
                        if (r.Time02 != 0)
                        {
                            Time time02 = new Time {
                                ChipCode = existsInHeat.ChipCode, HeatId = h.Id, RawTime = r.Time02, TimeNumber = 2, Type = TimeType.Finish
                            };
                            Time time = _repo.GetTime(h.Id, existsInHeat.ChipCode, 2);
                            //Add time if it does not exist
                            if (time == null)
                            {
                                _repo.AddTime(time02);
                            }
                            //Update time if different
                            else if (time02.RawTime != time.RawTime)
                            {
                                _repo.Remove(h.Id, existsInHeat.ChipCode, 1);
                                _repo.AddTime(time02);
                            }
                        }
                        counter++;
                    }
                    if (counter == exists.Count())
                    {
                        counter = 0;
                        break;
                    }
                }
            }
        }