/// <summary> /// HorseInfoへInsertするデータの準備 /// </summary> public static HorseInfo CreateHorseInfo(string html) { DbContext(); try { var regex = new HorseInfoCname(); var matchHorseName = Regex.Replace(regex.horseNames.Match(html).Value, @"<.*?>", ""); var matchFather = regex.father.Match(html); var matchMother = regex.mother.Match(html); var matchMotherFather = regex.motherFather.Match(html); var matchMotherMother = regex.motherMother.Match(html); var matchSex = regex.sex.Match(html); var matchBirthday = regex.birthday.Match(html); var birthday = DateTime.ParseExact(matchBirthday.Value, "yyyy年M月d日", CultureInfo.InvariantCulture); var matchCoatColor = regex.coatColor.Match(html); var matchHorseNameMeaning = regex.horseNameMeaning.Match(html); var matchHorseOwner = regex.horseOwner.Match(html); var TrainerName = regex.trainer.Match(html); var matchTrainer = Regex.Replace(TrainerName.Value, "\\<.*?\\>", string.Empty); var matchProductionRanch = regex.productionRanch.Match(html); var matchOrigin = regex.origin.Match(html); var horseCheck = context.HorseInfo.SingleOrDefault(c => c.HorseName == matchHorseName && c.Birthday == birthday); if (horseCheck != null) { return(null); } { var horseInfo = new HorseInfo() { HorseName = matchHorseName, Father = matchFather.Value, Mother = matchMother.Value, MotherFather = matchMotherFather.Value, MotherMother = matchMotherMother.Value, Sex = matchSex.Value, Birthday = birthday, CoatColor = matchCoatColor.Value, HorseNameMeaning = matchHorseNameMeaning.Value, HorseOwner = matchHorseOwner.Value, Trainer = matchTrainer, ProductionRanch = matchProductionRanch.Value, Origin = matchOrigin.Value, }; Debug.WriteLine($"Insert実行:{horseInfo.HorseName}"); context.Add(horseInfo); context.SaveChanges(); return(horseInfo); } } catch (Exception ex) { Debug.WriteLine(ex); throw; } }
public RaceInfo AddRaceInfo(string html, List <HorseInfo> horses) { DbContext(); try { var regex = new RaceInfoCname(); var matchHolding = regex.holding.Match(html); var matchRaceName = regex.raceName.Match(html); var matchShippingTime = regex.shippingTime.Match(html); // Dateに時刻を加え、PKが重複しないようにする var shippingTime = DateTime.Parse(matchShippingTime.Value).TimeOfDay; var matchDate = regex.date.Match(html); var date = DateTime.ParseExact(matchDate.Value, "yyyy年M月d日", CultureInfo.InvariantCulture) + shippingTime; var matchWeather = regex.weather.Match(html); var matchBaba = regex.baba.Match(html); var matchBabaState = regex.babaState.Match(html); var matchDistance = regex.distance.Match(html); var matchAround = regex.around.Match(html); // レースの出走条件 var matchOldClass = regex.oldClass.Matches(html); var oldClass = ""; foreach (Match match in matchOldClass) { var category = match.Groups["OldClass"].Value; oldClass = string.Join(" ", Regex.Matches(category, "cell (category|class|rule|weight)\\\">(?<name>.*?)\\</div\\>", RegexOptions.Singleline) .Cast <Match>() .Select(match => match.Groups["name"].Value)); } var raceDuplicateCheck = context.RaceInfo.SingleOrDefault(c => c.Date == date && c.ShippingTime == matchShippingTime.Value); if (raceDuplicateCheck != null) { return(null); } { var raceInfo = new RaceInfo() { Holding = matchHolding.Value, RaceName = matchRaceName.Value, Date = date, ShippingTime = matchShippingTime.Value, Weather = matchWeather.Value, Baba = matchBaba.Value, BabaState = matchBabaState.Value, OldClass = oldClass, Distance = matchDistance.Value, Around = matchAround.Value, }; Debug.WriteLine($"Insert実行:{raceInfo.RaceName}"); context.Add(raceInfo); context.SaveChanges(); // raceInfoが無ければ、PayBackはaddしない var payBacks = new PayBackQuery().AddPayBack(html); return(raceInfo); } } catch (Exception ex) { Debug.WriteLine(ex); throw; } }