using BritishHorseRacingApi.Models; using SwiftyMessageHub.Core; using System; using System.Linq; using System.Threading.Tasks; namespace AutoBet.DataRecorded.MessageControllers { public class PostRaceRunnerResultRecorderController : MessageController { [MessageRoute] public async Task SaveRunnerResult(RunnerResult details) { Console.WriteLine($"Saving results for {details.RacehorseName}"); var dbRunnerResult = new Db.RunnerResult() { RaceId = details.RaceId, YearOfRace = details.YearOfRace, DivisionSequence = details.DivisionSequence, HorseId = details.HorseId, AnimalId = details.AnimalId, ResultFinishPos = details.ResultFinishPos, Status = details.Status, Ran = details.Ran, NonRunnerDeclaredReason = details.NonRunnerDeclaredReason, NonRunnerDeclaredDate = details.NonRunnerDeclaredDate, NonRunnerDeclaredTime = details.NonRunnerDeclaredTime, RacehorseName = details.RacehorseName, AgeYear = details.AgeYear, Bred = details.Bred, ClothNumber = details.ClothNumber, DrawnStall = details.DrawnStall, WeightValue = details.WeightValue, SexType = details.SexType, JockeyId = details.JockeyId, JockeyName = details.JockeyName, JockeyProfile = details.JockeyProfile, TrainerId = details.TrainerId, TrainerName = details.TrainerName, OwnerId = details.OwnerId, OwnerName = details.OwnerName, WbSilkCode = details.WbSilkCode, WbSilkDescription = details.WbSilkDescription, SilkImage = details.SilkImage, Plus10 = details.Plus10, ResultBtnDistance = details.ResultBtnDistance, PositionFinishTime = details.PositionFinishTime, BettingRatio = details.BettingRatio, PerformanceFigure = details.PerformanceFigure, RatingFlat = details.RatingFlat, RatingAwt = details.RatingAwt, RatingChase = details.RatingChase, RatingHurdle = details.RatingHurdle, RaceCriteriaRaceType = details.RaceCriteriaRaceType, Hro = details.Hro, FinishTime = details.FinishTime, ResultFinishDNF = details.ResultFinishDNF, FinishTimeInMilliseconds = String.IsNullOrWhiteSpace(details.ResultFinishDNF) ? details.FinishTimeInMilliseconds() : null, LossMilliseconds = details.LossMilliseconds(), }; using(var db = new Db.HorseRacingDataContext()) { db.RunnerResults.Add(dbRunnerResult); await db.SaveChangesAsync(); } Console.WriteLine($"Saved results for {details.RacehorseName}"); } } }