Example #1
0
        private bool RegisterMultiProcesses(RunnerEntity runnerEntity)
        {
            bool isValid = true;

            if (ProcessChecker.Instance.IsSingleInstance(Constants.AllProcesses))
            {
                if (runnerEntity.PreRunner != null && runnerEntity.PreRunner.PreRunnerDataList != null)
                {
                    runnerEntity.PreRunner.PreRunnerDataList.Where(r => r.Enable).OrderBy(r => r.Sequence).ToList().ForEach(r =>
                    {
                        runnerWork.Attach(r);
                    });
                }
                if (runnerEntity.MainRunner != null && runnerEntity.MainRunner.MainRunnerDataList != null)
                {
                    runnerEntity.MainRunner.MainRunnerDataList.Where(r => r.Enable).OrderBy(r => r.Sequence).ToList().ForEach(r =>
                    {
                        runnerWork.Attach(r);
                    });
                }
                if (runnerEntity.PostRunner != null && runnerEntity.PostRunner.PostRunnerDataList != null)
                {
                    runnerEntity.PostRunner.PostRunnerDataList.Where(r => r.Enable).OrderBy(r => r.Sequence).ToList().ForEach(r =>
                    {
                        runnerWork.Attach(r);
                    });
                }
            }
            else
            {
                isValid = false;
                logger.Warn(RunnerResource.ApplicationAlreadyRunning);
            }
            return(isValid);
        }
Example #2
0
        public void CamMapCollectionOfItems()
        {
            var runner = new RunnerEntity
            {
                RaceTime = 6734,
                Gender   = GenderEntity.Female,
                Age      = 21
            };

            var runnerEntityCollection = Enumerable.Repeat(runner, 50000);

            var runnerCollection = _mapper.Map <Runner[]>(runnerEntityCollection);

            Assert.Equal(50000, runnerCollection.Length);
        }
Example #3
0
        public async Task RepositoryWritesItemsToDatabase()
        {
            var entity = new RunnerEntity
            {
                Age      = 10,
                Gender   = GenderEntity.Male,
                RaceTime = 87654732
            };
            var entities = Enumerable.Repeat(entity, 1);
            await _repository.Save(entities);

            var storedRunner = _context.Runners.Single();

            Assert.Same(entity, storedRunner);
        }
Example #4
0
        public void MapsDataAccessEntityToModel()
        {
            var runner = new RunnerEntity
            {
                RaceTime = 6734,
                Gender   = GenderEntity.Female,
                Age      = 21
            };

            var runnerEntity = _mapper.Map <Runner>(runner);

            Assert.Equal(6734, runnerEntity.RaceTime);
            Assert.Equal(Gender.Female, runnerEntity.Gender);
            Assert.Equal(21, runnerEntity.Age);
            Assert.Null(runnerEntity.CorralId);
        }
Example #5
0
        public void Run(Hashtable hashtable)
        {
            _hashtable = hashtable;
            string filePath = ApplicationSettings.Instance.FileSettings.RunnerPath;
            IDeserializer <RunnerEntity> deserializer = DataFactory.Instance.GetDeserializer <RunnerEntity>(filePath);
            RunnerEntity runner = deserializer.GetEntity();

            if (IsSingleProcess)
            {
                RunSingleProcess();
            }
            else
            {
                RunMultiProcesses();
            }
        }
Example #6
0
        private bool RegisterSingleProcess(RunnerEntity runnerEntity)
        {
            bool   isValid = true;
            string process = _hashtable.GetValue(Constants.Process);

            if (!string.IsNullOrEmpty(process))
            {
                if (ProcessChecker.Instance.IsSingleInstance(process))
                {
                    if (runnerEntity.PreRunner != null && runnerEntity.PreRunner.PreRunnerDataList != null)
                    {
                        RunnerData runnerAssembly = runnerEntity.PreRunner.PreRunnerDataList.FirstOrDefault(r => r.Enable && r.Process.Equals(process, StringComparison.OrdinalIgnoreCase));
                        runnerWork.Attach(runnerAssembly);
                    }
                    if (runnerEntity.MainRunner != null && runnerEntity.MainRunner.MainRunnerDataList != null)
                    {
                        RunnerData runnerAssembly = runnerEntity.MainRunner.MainRunnerDataList.FirstOrDefault(r => r.Enable && r.Process.Equals(process, StringComparison.OrdinalIgnoreCase));
                        runnerWork.Attach(runnerAssembly);
                    }
                    if (runnerEntity.PostRunner != null && runnerEntity.PostRunner.PostRunnerDataList != null)
                    {
                        RunnerData runnerAssembly = runnerEntity.PostRunner.PostRunnerDataList.FirstOrDefault(r => r.Enable && r.Process.Equals(process, StringComparison.OrdinalIgnoreCase));
                        runnerWork.Attach(runnerAssembly);
                    }
                    if (runnerWork.Count == 0)
                    {
                        isValid = false;
                        logger.WarnFormat(RunnerResource.ProcessIsInvalid, process);
                    }
                }
                else
                {
                    isValid = false;
                    logger.WarnFormat(RunnerResource.ProcessAlreadyRunning, process);
                }
            }
            else
            {
                isValid = false;
                logger.Error(RunnerResource.InvalidProcess);
            }
            return(isValid);
        }
Example #7
0
        public bool IsValid(Hashtable hashtable)
        {
            bool isValid = true;

            _hashtable = hashtable;
            string filePath = ApplicationSettings.Instance.FileSettings.RunnerPath;
            IDeserializer <RunnerEntity> deserializer = DataFactory.Instance.GetDeserializer <RunnerEntity>(filePath);
            RunnerEntity runner = deserializer.GetEntity();

            if (IsSingleProcess)
            {
                isValid = RegisterSingleProcess(runner);
            }
            else
            {
                isValid = RegisterMultiProcesses(runner);
            }
            return(isValid);
        }
Example #8
0
        public IList <VenueEntity> GetRaces()
        {
            var exceptions = new List <Exception>();
            var venues     = new List <VenueEntity>();

            Console.WriteLine("");

            var chromeService = ChromeDriverService.CreateDefaultService();

            chromeService.HideCommandPromptWindow = true;

            var chromeOptions = new ChromeOptions();

            chromeOptions.AddArguments("-incognito");
            chromeOptions.AddArguments("--disable-popup-blocking");

            using (var driver = new ChromeDriver(chromeService, chromeOptions))
            {
                try
                {
                    driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(0);
                    driver.Navigate().GoToUrl("https://www.skyracing.com.au/tab/form/index.php#");
                    GeneralHelpers.Wait(3000);

                    var headElement = driver.GetElement(By.XPath("//*[@id='headname']"));

                    if (headElement != null)
                    {
                        var meetingRows = driver.GetElements(By.XPath("//*[@id='wrapper']/table[1]/tbody/tr"));

                        if (meetingRows != null && meetingRows.Any())
                        {
                            foreach (var meeting in meetingRows)
                            {
                                var m = GetMeetingData(meeting);

                                if (m != null)
                                {
                                    venues.Add(m);
                                }
                            }
                        }

                        if (venues.Any())
                        {
                            for (int i = 0; i < venues.Count; i++)
                            {
                                driver.Navigate().GoToUrl(venues[i].Meetings.First().FormUrl);
                                GeneralHelpers.Wait(3000);

                                var raceNavigations = driver.GetElements(By.XPath("//*[@id='navlist']/li"));

                                if (raceNavigations.Any())
                                {
                                    var raceCounter = 0;

                                    for (var x = 0; x < raceNavigations.Count; x++)
                                    {
                                        raceNavigations = driver.GetElements(By.XPath("//*[@id='navlist']/li"));

                                        var href = raceNavigations.ElementAt(x).FindElement(By.TagName("a")).GetAttribute("href");

                                        if (!string.IsNullOrEmpty(href))
                                        {
                                            raceCounter++;

                                            raceNavigations.ElementAt(x).FindElement(By.TagName("a")).Click();
                                            GeneralHelpers.Wait(3000);

                                            var race = new RaceEntity
                                            {
                                                Number          = raceCounter,
                                                Name            = driver.GetElement(By.XPath("//*[@id='topleft']/table[1]/tbody/tr/td[1]"))?.Text.Replace("\r\n", "").Replace("\n", "").Trim(),
                                                Time            = driver.GetElement(By.XPath("//*[@id='topleft']/table[1]/tbody/tr/td[2]"))?.Text.Replace("Advertised Start Time:", "").Replace("\r\n", "").Replace("\n", "").Trim(),
                                                Weather         = driver.GetElement(By.XPath("//*[@id='topleft']/table[1]/tbody/tr/td[3]"))?.Text.Replace("Weather:", "").Replace("\r\n", "").Replace("\n", "").Trim(),
                                                Track           = driver.GetElement(By.XPath("//*[@id='topleft']/table[1]/tbody/tr/td[4]"))?.Text.Replace("Track:", "").Replace("\r\n", "").Replace("\n", "").Trim(),
                                                Distance        = driver.GetElement(By.XPath("//*[@id='topleft']/table[2]/tbody/tr/td[1]"))?.Text.Replace("Distance:", "").Replace("\r\n", "").Replace("\n", "").Trim(),
                                                Class           = driver.GetElement(By.XPath("//*[@id='topleft']/table[2]/tbody/tr/td[2]"))?.Text.Replace("Class:", "").Replace("\r\n", "").Replace("\n", "").Trim(),
                                                Prizemoney      = driver.GetElement(By.XPath("//*[@id='topleft']/table[2]/tbody/tr/td[3]"))?.Text.Replace("Prizemoney:", "").Replace("\r\n", "").Replace("\n", "").Trim(),
                                                Runners         = new List <RunnerEntity>(),
                                                DateTimeCreated = dateTime
                                            };

                                            var table   = driver.GetElement(By.XPath("//*[@id='report']/tbody"));
                                            var runners = table.FindElements(By.XPath("//*[@class='alt' or @class='row' or @class='altscratched' or @class='rowscratched']"));

                                            if (runners.Any())
                                            {
                                                foreach (var runner in runners)
                                                {
                                                    var scratched = runner.GetAttribute("class").Contains("scratched");
                                                    var cells     = runner.FindElements(By.TagName("td"));

                                                    if (cells.Any())
                                                    {
                                                        var counter = 0;
                                                        var r       = new RunnerEntity {
                                                            Scratched = scratched, DateTimeCreated = dateTime
                                                        };

                                                        foreach (var cell in cells)
                                                        {
                                                            counter++;

                                                            if (counter == 1)
                                                            {
                                                                r.Number = int.Parse(cell.Text.Split(new char [] { '\n' }).Last().Replace("a", "").Replace("b", "").Replace("c", "").Replace("d", "").Replace("e", "").Replace("f", "").Replace("g", "").Replace("h", "").Trim());
                                                            }
                                                            else if (counter == 2)
                                                            {
                                                                r.LastFiveRuns = cell.Text.Replace("\r\n", "").Replace("\n", "").Trim();
                                                            }
                                                            else if (counter == 3)
                                                            {
                                                                r.Name = cell.Text.Replace("\r\n", "").Replace("\n", "").Trim();
                                                            }
                                                            else if (counter == 4)
                                                            {
                                                                r.Barrel = int.Parse(cell.Text.Replace("\r\n", "").Replace("\n", "").Trim());
                                                            }
                                                            else if (counter == 5)
                                                            {
                                                                r.Tcdw = cell.Text.Replace("\r\n", "").Replace("\n", "").Trim();
                                                            }
                                                            else if (counter == 6)
                                                            {
                                                                r.Trainer = cell.Text.Replace("\r\n", "").Replace("\n", "").Trim();
                                                            }
                                                            else if (counter == 7)
                                                            {
                                                                r.Jockey = cell.Text.Replace("\r\n", "").Replace("\n", "").Trim();
                                                            }
                                                            else if (counter == 8)
                                                            {
                                                                r.Weight = decimal.Parse(cell.Text.Replace("\r\n", "").Replace("\n", "").Trim());
                                                            }
                                                            else if (counter == 9)
                                                            {
                                                                r.Rating = int.Parse(cell.Text.Replace("\r\n", "").Replace("\n", "").Trim());
                                                            }
                                                        }

                                                        race.Runners.Add(r);
                                                    }
                                                }
                                            }

                                            var formRows = driver.GetElements(By.XPath("//*[@id='details']/tbody/tr"));

                                            if (formRows.Any())
                                            {
                                                var rowCounter = 0;

                                                foreach (var formRow in formRows)
                                                {
                                                    var cells = formRow.GetElements(By.TagName("td"));

                                                    if (cells.Any())
                                                    {
                                                        var cellCounter = 0;
                                                        rowCounter++;

                                                        foreach (var cell in cells)
                                                        {
                                                            cellCounter++;

                                                            var text = cell.Text.Replace("\r\n", "").Replace("\n", "").Trim();

                                                            if (!string.IsNullOrEmpty(text))
                                                            {
                                                                var number = int.Parse(text.Split(new char[] { ' ' })[0].Trim());
                                                                var run    = race.Runners.FirstOrDefault(xr => xr.Number == number);

                                                                if (rowCounter <= 4)
                                                                {
                                                                    if (run != null)
                                                                    {
                                                                        if (cellCounter == 1)
                                                                        {
                                                                            run.FormSkyRating         = true;
                                                                            run.FormSkyRatingPosition = rowCounter;
                                                                        }
                                                                        else if (cellCounter == 2)
                                                                        {
                                                                            run.FormBest12Months         = true;
                                                                            run.FormBest12MonthsPosition = rowCounter;
                                                                        }
                                                                        else if (cellCounter == 3)
                                                                        {
                                                                            run.FormRecent         = true;
                                                                            run.FormRecentPosition = rowCounter;
                                                                        }
                                                                        else if (cellCounter == 4)
                                                                        {
                                                                            run.FormDistance         = true;
                                                                            run.FormDistancePosition = rowCounter;
                                                                        }
                                                                    }
                                                                }
                                                                else if (rowCounter > 4)
                                                                {
                                                                    if (run != null)
                                                                    {
                                                                        if (cellCounter == 1)
                                                                        {
                                                                            run.FormClass         = true;
                                                                            run.FormClassPosition = rowCounter - 4;
                                                                        }
                                                                        else if (cellCounter == 2)
                                                                        {
                                                                            run.FormTimeRating         = true;
                                                                            run.FormTimeRatingPosition = rowCounter - 4;
                                                                        }
                                                                        else if (cellCounter == 3)
                                                                        {
                                                                            run.FormInWet         = true;
                                                                            run.FormInWetPosition = rowCounter - 4;
                                                                        }
                                                                        else if (cellCounter == 4)
                                                                        {
                                                                            run.FormBestOverall         = true;
                                                                            run.FormBestOverallPosition = rowCounter - 4;
                                                                        }
                                                                    }
                                                                }
                                                            }
                                                        }
                                                    }
                                                }
                                            }

                                            venues[i].Meetings.First().Races.Add(race);
                                        }
                                    }
                                }

                                if (venues[i].Meetings?.First()?.Races?.Count > 0)
                                {
                                    driver.Navigate().GoToUrl(venues[i].Meetings.First().TipsUrl);
                                    GeneralHelpers.Wait(3000);

                                    var tipsRows = driver.GetElements(By.XPath("//*[@id='report']/tbody/tr"));

                                    if (tipsRows != null && tipsRows.Any())
                                    {
                                        var raceCounter = 0;

                                        foreach (var tip in tipsRows)
                                        {
                                            var cells = tip.FindElements(By.TagName("td"));

                                            if (cells.Any())
                                            {
                                                var cellCounter = 0;
                                                raceCounter++;

                                                foreach (var cell in cells)
                                                {
                                                    cellCounter++;
                                                    var text = cell.Text.Replace("\r\n", "").Replace("\n", "").Trim();

                                                    if (!string.IsNullOrEmpty(text) && cellCounter >= 3 && cellCounter <= 6)
                                                    {
                                                        var race   = venues[i].Meetings.First().Races.FirstOrDefault(xr => xr.Number == raceCounter);
                                                        var number = 0;

                                                        if (race != null && int.TryParse(text.Split(new char[] { ' ' })[0].Replace(".", "").Trim(), out number))
                                                        {
                                                            var run = race.Runners.FirstOrDefault(xr => xr.Number == number);
                                                            if (run != null)
                                                            {
                                                                run.TipSky         = true;
                                                                run.TipSkyPosition = cellCounter - 2;
                                                            }
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }

                                File.WriteAllText(string.Format("{0}.json", fileName), JsonConvert.SerializeObject(venues, Formatting.Indented));
                            }
                        }
                    }
                }
                catch (Exception exception)
                {
                    exceptions.Add(new Exception(string.Format("Failed to scrape Index {0} (id: {1}, exchangeId: {2} (exchange: {3})) from the url {4}", "", "", "", "", ""), exception));
                }
                finally
                {
                    try
                    {
                        driver.Close();
                    }
                    catch (Exception)
                    {
                        // Do ...
                    }

                    try
                    {
                        driver.Dispose();
                    }
                    catch (Exception)
                    {
                        // Do ...
                    }
                }
            }

            if (exceptions.Any())
            {
                throw new ExceptionBunch("There were bunch of exceptions during the scrapping process.", exceptions); {}
            }

            return(venues);
        }
Example #9
0
        public bool UpdateData(IList <VenueEntity> venues)
        {
            if (venues.Any())
            {
                foreach (var venue in venues)
                {
                    VenueEntity v;

                    if (UnitOfWork.VenueRepository.FindBy(x => x.Name.Equals(venue.Name) || x.Name2.Equals(venue.Name) || x.Name3.Equals(venue.Name)).Any())
                    {
                        v = UnitOfWork.VenueRepository.FindBy(x => x.Name.Equals(venue.Name) || x.Name2.Equals(venue.Name) || x.Name3.Equals(venue.Name)).First();

                        v.DateTimeLastModified = (venue.DateTimeCreated.Equals(default(DateTime)) ? dateTime : venue.DateTimeCreated);

                        UnitOfWork.VenueRepository.Update(v);
                        UnitOfWork.Save();
                    }
                    else
                    {
                        v = new VenueEntity
                        {
                            Name            = venue.Name.ToUpper(),
                            Province        = venue.Province,
                            DateTimeCreated = (venue.DateTimeCreated.Equals(default(DateTime)) ? dateTime : venue.DateTimeCreated)
                        };

                        UnitOfWork.VenueRepository.Add(v);
                        UnitOfWork.Save();
                    }

                    if (venue.Meetings.Any())
                    {
                        foreach (var meeting in venue.Meetings)
                        {
                            MeetingEntity m;

                            if (UnitOfWork.MeetingRepository.FindBy(x => x.Date.Equals(meeting.Date) && x.VenueId.Equals(v.Id)).Any())
                            {
                                m = UnitOfWork.MeetingRepository.FindBy(x => x.Date.Equals(meeting.Date) && x.VenueId.Equals(v.Id)).First();

                                m.Date    = meeting.Date;
                                m.FormUrl = meeting.FormUrl;
                                m.TipsUrl = meeting.TipsUrl;
                                m.VenueId = v.Id;
                                m.DateTimeLastModified = (meeting.DateTimeCreated.Equals(default(DateTime)) ? dateTime : meeting.DateTimeCreated);

                                UnitOfWork.MeetingRepository.Update(m);
                                UnitOfWork.Save();
                            }
                            else
                            {
                                m = new MeetingEntity
                                {
                                    Date            = meeting.Date,
                                    FormUrl         = meeting.FormUrl,
                                    TipsUrl         = meeting.TipsUrl,
                                    VenueId         = v.Id,
                                    DateTimeCreated = (meeting.DateTimeCreated.Equals(default(DateTime)) ? dateTime : meeting.DateTimeCreated)
                                };

                                UnitOfWork.MeetingRepository.Add(m);
                                UnitOfWork.Save();
                            }

                            if (meeting.Races.Any())
                            {
                                foreach (var race in meeting.Races)
                                {
                                    RaceEntity r;

                                    if (UnitOfWork.RaceRepository.FindBy(x => x.MeetingId.Equals(m.Id) && x.Number.Equals(race.Number)).Any())
                                    {
                                        r = UnitOfWork.RaceRepository.FindBy(x => x.MeetingId.Equals(m.Id) && x.Number.Equals(race.Number)).First();

                                        r.Name                 = race.Name.ToUpper();
                                        r.Time                 = race.Time;
                                        r.Weather              = race.Weather;
                                        r.Track                = race.Track;
                                        r.Distance             = race.Distance;
                                        r.Class                = race.Class;
                                        r.Prizemoney           = race.Prizemoney;
                                        r.DateTimeLastModified = (race.DateTimeCreated.Equals(default(DateTime)) ? dateTime : race.DateTimeCreated);

                                        UnitOfWork.RaceRepository.Update(r);
                                        UnitOfWork.Save();
                                    }
                                    else
                                    {
                                        r = new RaceEntity
                                        {
                                            MeetingId       = m.Id,
                                            Number          = race.Number,
                                            Name            = race.Name.ToUpper(),
                                            Time            = race.Time,
                                            Weather         = race.Weather,
                                            Track           = race.Track,
                                            Distance        = race.Distance,
                                            Class           = race.Class,
                                            Prizemoney      = race.Prizemoney,
                                            DateTimeCreated = (race.DateTimeCreated.Equals(default(DateTime)) ? dateTime : race.DateTimeCreated),
                                        };

                                        UnitOfWork.RaceRepository.Add(r);
                                        UnitOfWork.Save();
                                    }

                                    if (race.Runners.Any())
                                    {
                                        foreach (var runner in race.Runners)
                                        {
                                            RunnerEntity n;

                                            if (UnitOfWork.RunnerRepository.FindBy(x => x.RaceId.Equals(r.Id) && x.Number.Equals(runner.Number)).Any())
                                            {
                                                n = UnitOfWork.RunnerRepository.FindBy(x => x.RaceId.Equals(r.Id) && x.Number.Equals(runner.Number)).First();

                                                n.Name                     = runner.Name.ToUpper();
                                                n.Rating                   = runner.Rating;
                                                n.LastFiveRuns             = runner.LastFiveRuns;
                                                n.Scratched                = runner.Scratched;
                                                n.Barrel                   = runner.Barrel;
                                                n.Tcdw                     = runner.Tcdw;
                                                n.Trainer                  = runner.Trainer;
                                                n.Jockey                   = runner.Jockey;
                                                n.Weight                   = runner.Weight;
                                                n.ResultPosition           = runner.ResultPosition;
                                                n.FormSkyRating            = runner.FormSkyRating;
                                                n.FormSkyRatingPosition    = runner.FormSkyRatingPosition;
                                                n.FormBest12Months         = runner.FormBest12Months;
                                                n.FormBest12MonthsPosition = runner.FormBest12MonthsPosition;
                                                n.FormRecent               = runner.FormRecent;
                                                n.FormRecentPosition       = runner.FormRecentPosition;
                                                n.FormDistance             = runner.FormDistance;
                                                n.FormDistancePosition     = runner.FormDistancePosition;
                                                n.FormClass                = runner.FormClass;
                                                n.FormClassPosition        = runner.FormClassPosition;
                                                n.FormTimeRating           = runner.FormTimeRating;
                                                n.FormTimeRatingPosition   = runner.FormTimeRatingPosition;
                                                n.FormInWet                = runner.FormInWet;
                                                n.FormInWetPosition        = runner.FormInWetPosition;
                                                n.FormBestOverall          = runner.FormBestOverall;
                                                n.FormBestOverallPosition  = runner.FormBestOverallPosition;
                                                n.TipSky                   = runner.TipSky;
                                                n.TipSkyPosition           = runner.TipSkyPosition;
                                                n.DateTimeLastModified     = (runner.DateTimeCreated.Equals(default(DateTime)) ? dateTime : runner.DateTimeCreated);

                                                UnitOfWork.RunnerRepository.Update(n);
                                                UnitOfWork.Save();
                                            }
                                            else
                                            {
                                                n = new RunnerEntity
                                                {
                                                    RaceId                   = r.Id,
                                                    Number                   = runner.Number,
                                                    Name                     = runner.Name.ToUpper(),
                                                    Rating                   = runner.Rating,
                                                    LastFiveRuns             = runner.LastFiveRuns,
                                                    Scratched                = runner.Scratched,
                                                    Barrel                   = runner.Barrel,
                                                    Tcdw                     = runner.Tcdw,
                                                    Trainer                  = runner.Trainer,
                                                    Jockey                   = runner.Jockey,
                                                    Weight                   = runner.Weight,
                                                    ResultPosition           = runner.ResultPosition,
                                                    FormSkyRating            = runner.FormSkyRating,
                                                    FormSkyRatingPosition    = runner.FormSkyRatingPosition,
                                                    FormBest12Months         = runner.FormBest12Months,
                                                    FormBest12MonthsPosition = runner.FormBest12MonthsPosition,
                                                    FormRecent               = runner.FormRecent,
                                                    FormRecentPosition       = runner.FormRecentPosition,
                                                    FormDistance             = runner.FormDistance,
                                                    FormDistancePosition     = runner.FormDistancePosition,
                                                    FormClass                = runner.FormClass,
                                                    FormClassPosition        = runner.FormClassPosition,
                                                    FormTimeRating           = runner.FormTimeRating,
                                                    FormTimeRatingPosition   = runner.FormTimeRatingPosition,
                                                    FormInWet                = runner.FormInWet,
                                                    FormInWetPosition        = runner.FormInWetPosition,
                                                    FormBestOverall          = runner.FormBestOverall,
                                                    FormBestOverallPosition  = runner.FormBestOverallPosition,
                                                    TipSky                   = runner.TipSky,
                                                    TipSkyPosition           = runner.TipSkyPosition,
                                                    DateTimeCreated          = (runner.DateTimeCreated.Equals(default(DateTime)) ? dateTime : runner.DateTimeCreated)
                                                };

                                                UnitOfWork.RunnerRepository.Add(n);
                                                UnitOfWork.Save();
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }

            return(true);
        }