public void Insert(IOpenPrediction prediction)
 {
     if (prediction.Fixture.OpenForPredictions)
     {
         try
         {
             using (var connection = DatabaseConnection.NewConnection())
             {
                 connection.Execute(
                     @"INSERT INTO Prediction(FixtureId, PlayerId, HomeGoals, AwayGoals, SubmittedOn)
                       VALUES
                         (@FixtureId, @PlayerId, @HomeGoals, @AwayGoals, @SubmittedOn)",
                     new
                 {
                     FixtureId   = prediction.Fixture.Id,
                     PlayerId    = prediction.Player.Id,
                     HomeGoals   = prediction.Score.HomeGoals,
                     AwayGoals   = prediction.Score.AwayGoals,
                     SubmittedOn = new Utility().UKDateTime
                 }
                     );
             }
         }
         catch (Exception ex)
         {
             // TODO: Log
             throw ex;
         }
     }
 }
        public IOpenPrediction Get(int id)
        {
            try
            {
                using (var connection = DatabaseConnection.NewConnection())
                {
                    IOpenPrediction prediction = connection.Query <OpenPrediction, Player, Fixture, OpenPrediction>(
                        @"SELECT
	                        Prediction.Id,
	                        HomeGoals,
	                        AwayGoals,
	                        SubmittedOn,
	                        PlayerId,
	                        FixtureId
                          FROM
		                        Prediction
	                        INNER JOIN Player
		                        ON Prediction.PlayerId = Player.Id
	                        INNER JOIN [User]
		                        ON Player.UserId = [User].Id
                          WHERE
	                        Prediction.Id = @Id"    ,
                        (thisPrediction, thisPlayer, thisFixture) =>
                    {
                        thisPrediction.Player  = thisPlayer;
                        thisPrediction.Fixture = thisFixture;
                        return(thisPrediction);
                    },
                        new
                    {
                        Id = id
                    },
                        splitOn: "PlayerId,FixtureId"
                        ).FirstOrDefault();
                    return(prediction);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }