public static HorseBet GetHorseBetFromFile() { HorseBet lastBet = null; while (lastBet == null) { Console.WriteLine("How do you want to load the last Horse Bet? Press 1 for Plain Text. Press 2 for Json."); var type = Console.ReadKey().KeyChar; if (type == '1') { var repo = new PlainTextRepository(Program.HorseBetPathBase); lastBet = repo.Load(); if (lastBet == null) { Console.WriteLine(ErrorMessage); } } else //will read the json file { var repo = new JsonRepository(Program.HorseBetPathBase); lastBet = repo.Load(); if (lastBet == null) { Console.WriteLine(ErrorMessage); } } } return(lastBet); }
//private string[] stringSplitCommaSeparator = { "," }; #region FileInputAndOutput //public List<HorseBet> ListOfHotTipsHistoricData2() //{ // var result = new List<HorseBet>(); // try // { // using (FileStream fs = File.OpenRead($@"{directoryPath}{fileName_HotTipsHistoricData}")) // using (TextReader myreader = new StreamReader(fs, Encoding.UTF8)) // { // while (myreader.Peek() > -1) // { // string line = myreader.ReadLine(); // string[] bet = line.Split(stringSplitCommaSeparator, StringSplitOptions.RemoveEmptyEntries); // bet = MyUtilities.TrimArrayStrings(bet); // bet[1] = bet[1].Substring(1, 4); // bet[3] = bet[3].Substring(0, 2); // bet[4] = bet[4].Substring(0, bet[4].Length - 1); // result.Add(new HorseBet(bet[0], new DateTime(int.Parse(bet[1]), int.Parse(bet[2]), int.Parse(bet[3])), decimal.Parse(bet[4]), bool.Parse(bet[5]), 0)); // } // } // } // catch // { // throw new Exception("File input does not match expected datatypes"); // } // return result; //} public static List <HorseBet> ListOfHotTipsHistoricData() { var bet = new HorseBet(); List <HorseBet> betRecord = new List <HorseBet>(); using (var fileStreams = new FileStream($@"{directoryPath}{fileName_HotTipsHistoricData}", FileMode.Open)) using (var binaryReader = new BinaryReader(fileStreams)) { while (binaryReader.PeekChar() != -1) { var raceCourse = binaryReader.ReadString(); var raceDate = binaryReader.ReadString(); var date = DateTime.Parse(raceDate); //var date = DateTime.Parse(binaryReader.ReadString()); var amount = binaryReader.ReadDecimal(); var result = binaryReader.ReadBoolean(); betRecord.Add(new HorseBet() { RaceCourse = raceCourse, Date = date, Amount = amount, Result = result }); } } return(betRecord); }
//checkout public List <HorseBet> GetAllBetRecordData() { var horseBet = new HorseBet(); var horseBets = new List <HorseBet>(); using (Stream fileStream = File.Open($@"{directoryPath}{fileName_HotTipsterReport}", FileMode.Open)) { using (var binaryReader = new BinaryReader(fileStream)) { var length = (int)binaryReader.BaseStream.Length; do { var raceCourse = binaryReader.ReadString(); var date = DateTime.Parse(binaryReader.ReadString()); var amount = decimal.Parse(binaryReader.ReadString()); var result = bool.Parse(binaryReader.ReadString()); horseBets.Add(new HorseBet { RaceCourse = raceCourse, Date = date, Amount = amount, Result = result }); } while (binaryReader.BaseStream.Position != length); } } return(horseBets); }
public static List <HorseBet> BiggestWinAndBiggestLoss() { var winningBets = (from hb in hbList where hb.BetResult == true select hb).ToList(); var highestWinAmt = winningBets.Max(x => x.BetAmount); var winner = (from hb in winningBets where hb.BetAmount == highestWinAmt select hb).ToList(); var losingBets = (from hb in hbList where hb.BetResult == false select hb).ToList(); var highestLossAmt = losingBets.Max(x => x.BetAmount); var loser = (from hb in losingBets where hb.BetAmount == highestLossAmt select hb).ToList(); winner.AddRange(loser); winner = HorseBet.AddCoursenNameToRetrievedHorseBetData(winner); return(winner); }
public static List <HorseBet> RetrieveHorseBetsFromDB() //add parameters? Apply filtering in code using linq instead? { //SqliteConnection dbConnection = new SqliteConnection("Filename=HotTipster.db"); string select = "SELECT HorseBetID, RaceCourseID, RaceDate, BetResult, BetAmount FROM Horsebets"; SqliteCommand selectBets = new SqliteCommand(select, dbConnection); List <HorseBet> retrievedBet = new List <HorseBet>(); using (dbConnection) { dbConnection.Open(); SqliteDataReader reader = selectBets.ExecuteReader(); while (reader.Read()) { HorseBet hb = new HorseBet(); hb.BetID = reader.GetInt32(0); hb.CourseID = reader.GetInt32(1); //hb.CourseID = int.Parse(reader.GetString(0)); hb.RaceDate = DateTime.Parse(reader.GetString(2)); //hb.HorseID = reader.GetInt32(2); hb.BetResult = bool.Parse(reader.GetString(3)); hb.BetAmount = decimal.Parse(reader.GetString(4)); retrievedBet.Add(hb); } } return(retrievedBet); }
public void testHorseBetConstructor() { HorseBet testHorseBet = new HorseBet("Aintree", new DateTime(2017, 5, 12), 11.58m, true, 0); object actualtype = testHorseBet.GetType(); object expectedtype = typeof(HorseBet); Assert.AreEqual(actualtype, expectedtype); }
public static List <HorseBet> BetsInDateOrder() { var dateOrder = (from hb in hbList orderby hb.RaceDate descending select hb).ToList <HorseBet>(); List <HorseBet> result = HorseBet.AddCoursenNameToRetrievedHorseBetData(dateOrder); return(result); }
public HotTipsterMenu() { InitializeComponent(); ReadWriteToSQLite sqldb = new ReadWriteToSQLite(); HistoricDataReader reader = new HistoricDataReader(); // @"C:\Users\carra\Documents\HotTipster\HotTipsHistoricData.txt"); //Replace with directory ref? if (!File.Exists(Directory.GetCurrentDirectory() + Path.DirectorySeparatorChar + "HotTipster.db")) { sqldb.CreateDatabase(); sqldb.InsertExistingRaceCoursesIntoDB(); //sqldb.InsertListOfBets(reader.ListOfHistoricHorseBetsOriginal()); sqldb.InsertListOfBets(HorseBet.AddCourseIDToHistoricBetData()); } }
public void AppendData(string raceCourse, DateTime date, //Test method decimal amount, bool result) { using (var fileStream = File.Open( $@"{directoryPath}{fileName_HotTipsterReport}", FileMode.Open)) { using (var binaryWriter = new BinaryWriter(fileStream)) { var bet = new HorseBet(raceCourse, date, amount, result); binaryWriter.Write(Environment.NewLine + bet.RaceCourse);; binaryWriter.Write(bet.Date.ToString()); binaryWriter.Write(bet.Amount.ToString()); binaryWriter.Write(bet.Result.ToString()); } } }
public static void SaveHorseBet(HorseBet horseBet) { Console.WriteLine("How do you want to save your result? Press 1 for Plain Text. Press 2 for Json."); var type = Console.ReadKey().KeyChar; Repository <HorseBet> repository; if (type == '1') { repository = new PlainTextRepository(Program.HorseBetPathBase); } else //anything other than 1 will return Json in plain text file. { repository = new JsonRepository(Program.HorseBetPathBase); } repository.Save(horseBet); }
public void AddCourseIDToHistoricBetData() { List <HorseBet> bets; ReadWriteToSQLite dataWriter = new ReadWriteToSQLite(); dataWriter.CreateDatabase(); dataWriter.InsertExistingRaceCoursesIntoDB(); bets = HorseBet.AddCourseIDToHistoricBetData(); HorseBet test = new HorseBet("Aintree", new DateTime(2017, 5, 12), 11.58m, true, 0); //CollectionAssert.Contains(bets, test); Assert.IsTrue(bets.Any(bet => bet.CourseID == 1)); Assert.IsTrue(bets.Any(bet => bet.CourseID == 6)); Assert.IsTrue(bets.Any(bet => bet.CourseID == 13)); Assert.IsTrue(bets.Any(bet => bet.CourseID == 18)); Assert.IsFalse(bets.Any(bet => bet.CourseID == 20)); }
public void WriteToTextFile() //Test method { //var horseBets = BetRecords.LoadRoads(); var horseBets = ListOfHotTipsHistoricData(); foreach (var horseBet in horseBets) { using (var fileStream = new FileStream($@"{directoryPath}{fileName_HotTipsterReport}", FileMode.Append, FileAccess.Write, FileShare.None)) using (var binaryWriter = new BinaryWriter(fileStream)) { var bet = new HorseBet(horseBet.RaceCourse, horseBet.Date, horseBet.Amount, horseBet.Result); binaryWriter.Write(Environment.NewLine + bet.RaceCourse); binaryWriter.Write(bet.Date.ToString()); binaryWriter.Write(bet.Amount.ToString()); binaryWriter.Write(bet.Result.ToString()); } } }
public void testHorseBetClassExists() { HorseBet testBet = new HorseBet("Aintree", new DateTime(2017, 5, 12), 11.58m, true, 0); Assert.IsInstanceOfType(testBet, typeof(Object)); }
public static void Main() { //1. Welcoming the user to the app Console.WriteLine("Welcome to the Repository for the 2016 Kentucky Derby's Run for the Roses.\n"); //\n = new line //2. //When initially running the app, no user data is available. For the purpose of this app, I created an initial default response //When the program is stoped, closed and ran again, it will then return the stored data from the user's answers and load selection. HorseBet lastBet = null; string path = "./HorseBet"; if (!File.Exists(path + ".txt") && !File.Exists(path + ".json")) { Console.WriteLine("No previous user bets found. \n"); } else { while (lastBet == null) { Console.WriteLine("How do you want to load the last Horse Bet? Press 1 for Plain Text. Press 2 for Json."); var type = Console.ReadKey().KeyChar; Saver <HorseBet> saver; if (type == '1') //if the txt file does not exits { if (!File.Exists(path + ".txt")) { Console.WriteLine("\nFile does not exits. Pick another option."); } else //if the txt file does exist { saver = new PlainTextSaver(path + ".txt"); lastBet = saver.Load(); } } else //will read the json file { if (!File.Exists(path + ".json")) { Console.WriteLine("\nFile does not exits. Pick another option."); } else { saver = new JsonSaver(path + ".json"); lastBet = saver.Load(); } } } Console.WriteLine($"\nThe last bet was {lastBet.UserName} bet on {lastBet.HorseBetPick}.\n"); } Console.Write("Press enter to see the list of 2016 Kentucky Derby horses.\n"); Console.ReadKey(); Console.Clear(); //This method will clear the welcome line. //I didn't want the welcome line to be visible the entire ime the app was open //2. Deserializes json file to print to console var runForTheRoses = RunForTheRosesRepo.DeserializeRunForTheRosesResults("./2016RunForTheRosesResults.json"); //returns a list //2a. writes the running horse of the derby to the console in shuffled order var shuffled = RunForTheRosesRepo.Shuffle(runForTheRoses); RunForTheRosesRepo.Print(shuffled); //3 User enters name to place their bet Console.WriteLine("\nPlease enter your name to place a bet."); var userName = Console.ReadLine(); //4 User enter's their bet Console.Write("\nWhat horse did you bet to win the 2016 Derby?\n"); //4a This code will validate the user's input on the horse they bet on and will display what place they finished and if their horse is not a valid horse it will return null //user entry returned from the Console.ReadLine method will be stored in the horseBet variable //If user selects a horse that is not on the list or presses enter and no value is captured. User needs to be prompted to pick a horse from the list bool nullAnswer = true; while (nullAnswer) { string horseInput = Console.ReadLine(); Console.Write(Environment.NewLine); var horseBetAnswer = runForTheRoses.FirstOrDefault(r => string.Equals(r.Horse, horseInput, StringComparison.InvariantCultureIgnoreCase)); if (horseBetAnswer == null) { Console.WriteLine("That horse didn't run in the 2016 Run for the Roses. Please pick a horse from the list."); } else { var UserBetString = ""; string switchCase = horseBetAnswer.Place.ToString(); Console.Clear(); switch (switchCase) { case "1": UserBetString = userName + ", " + horseBetAnswer.Horse + " came in " + horseBetAnswer.Place + "st place."; break; case "2": UserBetString = userName + ", " + horseBetAnswer.Horse + " came in " + horseBetAnswer.Place + "nd place."; break; case "3": UserBetString = userName + ", " + horseBetAnswer.Horse + " came in " + horseBetAnswer.Place + "rd place."; break; case "DNF": UserBetString = userName + ", " + horseBetAnswer.Horse + " did not finish."; break; default: UserBetString = userName + ", " + horseBetAnswer.Horse + " came in " + horseBetAnswer.Place + "th place."; break; } Console.WriteLine(UserBetString); nullAnswer = false;//breaks out of loop as long as user picks valid horse from list //5 display users and their last bet var horseBet = new HorseBet { UserName = userName, HorseBetPick = horseBetAnswer.Horse }; Console.WriteLine("\nHow do you want to save your result? Press 1 for Plain Text. Press 2 for Json."); var type = Console.ReadKey().KeyChar; Saver <HorseBet> saver; if (type == '1') { saver = new PlainTextSaver(path + ".txt"); } else //anything other than 1 will return Json file { saver = new JsonSaver(path + ".json"); } saver.Save(horseBet); } } //6 Console.WriteLine("\n\nGot it! The program will now close."); Console.Read(); }
public static List <HorseBet> LoadRoads() { var bet = new HorseBet(); List <HorseBet> betRecord = new List <HorseBet>(); //{ // new HorseBet { BetID = 1, RacecourseName = "Aintree", HorseName = "Cheetah", Date = DateTime.Parse("12/05/2017"), Amount = 11.58m, Result = true }, // new HorseBet { BetID = 2, RacecourseName = "Punchestown", HorseName = "Thunder", Date = DateTime.Parse("22/12/2016"), Amount = 122.52m, Result = true }, // new HorseBet { BetID = 3, RacecourseName = "Sandown", HorseName = "Flash", Date = DateTime.Parse("17/11/2016"), Amount = 20.00m, Result = false }, // new HorseBet { BetID = 4, RacecourseName = "Ayr", HorseName = "Bloat", Date = DateTime.Parse("03/11/2016"), Amount = 25.00m, Result = false }, // new HorseBet { BetID = 5, RacecourseName = "Fairyhouse", HorseName = "Quicksilver", Date = DateTime.Parse("02/12/2016"), Amount = 65.75m, Result = true }, // new HorseBet { BetID = 6, RacecourseName = "Ayr", HorseName = "Lightning", Date = DateTime.Parse("11/03/2017"), Amount = 12.05m, Result = true }, // new HorseBet { BetID = 7, RacecourseName = "Doncaster", HorseName = "QuickFeet", Date = DateTime.Parse("02/12/2017"), Amount = 10.00m, Result = false }, // new HorseBet { BetID = 8, RacecourseName = "Towcester", HorseName = "Speedee", Date = DateTime.Parse("12/03/2016"), Amount = 50.00m, Result = false }, // new HorseBet { BetID = 9, RacecourseName = "Goodwood", HorseName = "Zeus", Date = DateTime.Parse("07/10/2017"), Amount = 525.74m, Result = true }, // new HorseBet { BetID = 10, RacecourseName = "Kelso", HorseName = "President", Date = DateTime.Parse("13/09/2016"), Amount = 43.21m, Result = true }, // new HorseBet { BetID = 11, RacecourseName = "Punchestown", HorseName = "Sheriff", Date = DateTime.Parse("05/07/2017"), Amount = 35.00m, Result = false }, // new HorseBet { BetID = 12, RacecourseName = "Ascot", HorseName = "Deputy", Date = DateTime.Parse("04/02/2016"), Amount = 23.65m, Result = true }, // new HorseBet { BetID = 13, RacecourseName = "Kelso", HorseName = "Lucky", Date = DateTime.Parse("02/08/2017"), Amount = 30.00m, Result = false }, // new HorseBet { BetID = 14, RacecourseName = "Towcester", HorseName = "Pablo", Date = DateTime.Parse("01/05/2017"), Amount = 104.33m, Result = true }, // new HorseBet { BetID = 14, RacecourseName = "Ascot", HorseName = "Horseshoe", Date = DateTime.Parse("21/06/2017"), Amount = 25.00m, Result = false }, // new HorseBet { BetID = 15, RacecourseName = "Bangor", HorseName = "Barley", Date = DateTime.Parse("22/12/2016"), Amount = 30.00m, Result = false }, // new HorseBet { BetID = 16, RacecourseName = "Ayr", HorseName = "Bronco", Date = DateTime.Parse("22/05/2017"), Amount = 11.50m, Result = true }, // new HorseBet { BetID = 17, RacecourseName = "Ascot", HorseName = "Blazer", Date = DateTime.Parse("23/06/2017"), Amount = 30.00m, Result = false }, // new HorseBet { BetID = 18, RacecourseName = "Ascot", HorseName = "Wilbur", Date = DateTime.Parse("23/06/2017"), Amount = 374.27m, Result = true }, // new HorseBet { BetID = 19, RacecourseName = "Goodwood", HorseName = "Buck", Date = DateTime.Parse("05/10/2016"), Amount = 34.12m, Result = true }, // new HorseBet { BetID = 20, RacecourseName = "Dundalk", HorseName = "Franklin", Date = DateTime.Parse("09/11/2016"), Amount = 20.00m, Result = false }, // new HorseBet { BetID = 21, RacecourseName = "Haydock", HorseName = "Kentucky", Date = DateTime.Parse("12/11/2016"), Amount = 87.00m, Result = true }, // new HorseBet { BetID = 22, RacecourseName = "Perth", HorseName = "Trigger", Date = DateTime.Parse("20/01/2017"), Amount = 15.00m, Result = false }, // new HorseBet { BetID = 23, RacecourseName = "York", HorseName = "Blacksmith", Date = DateTime.Parse("11/11/2017"), Amount = 101.25m, Result = true }, // new HorseBet { BetID = 24, RacecourseName = "Punchestown", HorseName = "Buckeye", Date = DateTime.Parse("22/12/2016"), Amount = 11.50m, Result = true }, // new HorseBet { BetID = 25, RacecourseName = "Chester", HorseName = "Queen", Date = DateTime.Parse("14/08/2016"), Amount = 10.00m, Result = false }, // new HorseBet { BetID = 26, RacecourseName = "Kelso", HorseName = "Washington", Date = DateTime.Parse("18/09/2016"), Amount = 10.00m, Result = false }, // new HorseBet { BetID = 27, RacecourseName = "Kilbeggan", HorseName = "Connecticut", Date = DateTime.Parse("03/03/2017"), Amount = 20.00m, Result = false }, // new HorseBet { BetID = 28, RacecourseName = "Fairyhouse", HorseName = "Obama", Date = DateTime.Parse("11/03/2017"), Amount = 55.50m, Result = true }, // new HorseBet { BetID = 29, RacecourseName = "Punchestown", HorseName = "King", Date = DateTime.Parse("15/11/2016"), Amount = 10.00m, Result = false }, // new HorseBet { BetID = 30, RacecourseName = "Towcester", HorseName = "Jockey", Date = DateTime.Parse("08/05/2016"), Amount = 16.55m, Result = true }, // new HorseBet { BetID = 31, RacecourseName = "Punchestown", HorseName = "Clydesdale", Date = DateTime.Parse("23/05/2016"), Amount = 13.71m, Result = true }, // new HorseBet { BetID = 32, RacecourseName = "Cork", HorseName = "Wrangler", Date = DateTime.Parse("30/11/2016"), Amount = 20.00m, Result = false }, // new HorseBet { BetID = 33, RacecourseName = "Punchestown", HorseName = "Jupiter", Date = DateTime.Parse("25/04/2016"), Amount = 13.45m, Result = true }, // new HorseBet { BetID = 34, RacecourseName = "Bangor", HorseName = "Tennessee", Date = DateTime.Parse("23/01/2016"), Amount = 10.00m, Result = false }, //}; // betRecord.Add(new HorseBet { BetID = 1, RaceCourse = "Aintree", HorseName = "Cheetah", Date = DateTime.Parse("12/05/2017"), Amount = 11.58m, Result = true }); // betRecord.Add(new HorseBet { BetID = 2, RaceCourse = "Punchestown", HorseName = "Thunder", Date = DateTime.Parse("22/12/2016"), Amount = 122.52m, Result = true }); // betRecord.Add(new HorseBet { BetID = 3, RaceCourse = "Sandown", HorseName = "Flash", Date = DateTime.Parse("17/11/2016"), Amount = 20.00m, Result = false }); // betRecord.Add(new HorseBet { BetID = 4, RaceCourse = "Ayr", HorseName = "Bloat", Date = DateTime.Parse("03/11/2016"), Amount = 25.00m, Result = false }); // betRecord.Add(new HorseBet { BetID = 5, RaceCourse = "Fairyhouse", HorseName = "Quicksilver", Date = DateTime.Parse("02/12/2016"), Amount = 65.75m, Result = true }); // betRecord.Add(new HorseBet { BetID = 6, RaceCourse = "Ayr", HorseName = "Lightning", Date = DateTime.Parse("11/03/2017"), Amount = 12.05m, Result = true }); // betRecord.Add(new HorseBet { BetID = 7, RaceCourse = "Doncaster", HorseName = "QuickFeet", Date = DateTime.Parse("02/12/2017"), Amount = 10.00m, Result = false }); // betRecord.Add(new HorseBet { BetID = 8, RaceCourse = "Towcester", HorseName = "Speedee", Date = DateTime.Parse("12/03/2016"), Amount = 50.00m, Result = false }); // betRecord.Add(new HorseBet { BetID = 9, RaceCourse = "Goodwood", HorseName = "Zeus", Date = DateTime.Parse("07/10/2017"), Amount = 525.74m, Result = true }); // betRecord.Add(new HorseBet { BetID = 10, RaceCourse = "Kelso", HorseName = "President", Date = DateTime.Parse("13/09/2016"), Amount = 43.21m, Result = true }); // betRecord.Add(new HorseBet { BetID = 11, RaceCourse = "Punchestown", HorseName = "Sheriff", Date = DateTime.Parse("05/07/2017"), Amount = 35.00m, Result = false }); // betRecord.Add(new HorseBet { BetID = 12, RaceCourse = "Ascot", HorseName = "Deputy", Date = DateTime.Parse("04/02/2016"), Amount = 23.65m, Result = true }); // betRecord.Add(new HorseBet { BetID = 13, RaceCourse = "Kelso", HorseName = "Lucky", Date = DateTime.Parse("02/08/2017"), Amount = 30.00m, Result = false }); // betRecord.Add(new HorseBet { BetID = 14, RaceCourse = "Towcester", HorseName = "Pablo", Date = DateTime.Parse("01/05/2017"), Amount = 104.33m, Result = true }); // betRecord.Add(new HorseBet { BetID = 14, RaceCourse = "Ascot", HorseName = "Horseshoe", Date = DateTime.Parse("21/06/2017"), Amount = 25.00m, Result = false }); // betRecord.Add(new HorseBet { BetID = 15, RaceCourse = "Bangor", HorseName = "Barley", Date = DateTime.Parse("22/12/2016"), Amount = 30.00m, Result = false }); // betRecord.Add(new HorseBet { BetID = 16, RaceCourse = "Ayr", HorseName = "Bronco", Date = DateTime.Parse("22/05/2017"), Amount = 11.50m, Result = true }); // betRecord.Add(new HorseBet { BetID = 17, RaceCourse = "Ascot", HorseName = "Blazer", Date = DateTime.Parse("23/06/2017"), Amount = 30.00m, Result = false }); // betRecord.Add(new HorseBet { BetID = 18, RaceCourse = "Ascot", HorseName = "Wilbur", Date = DateTime.Parse("23/06/2017"), Amount = 374.27m, Result = true }); // betRecord.Add(new HorseBet { BetID = 19, RaceCourse = "Goodwood", HorseName = "Buck", Date = DateTime.Parse("05/10/2016"), Amount = 34.12m, Result = true }); // betRecord.Add(new HorseBet { BetID = 20, RaceCourse = "Dundalk", HorseName = "Franklin", Date = DateTime.Parse("09/11/2016"), Amount = 20.00m, Result = false }); // betRecord.Add(new HorseBet { BetID = 21, RaceCourse = "Haydock", HorseName = "Kentucky", Date = DateTime.Parse("12/11/2016"), Amount = 87.00m, Result = true }); // betRecord.Add(new HorseBet { BetID = 22, RaceCourse = "Perth", HorseName = "Trigger", Date = DateTime.Parse("20/01/2017"), Amount = 15.00m, Result = false }); // betRecord.Add(new HorseBet { BetID = 23, RaceCourse = "York", HorseName = "Blacksmith", Date = DateTime.Parse("11/11/2017"), Amount = 101.25m, Result = true }); // betRecord.Add(new HorseBet { BetID = 24, RaceCourse = "Punchestown", HorseName = "Buckeye", Date = DateTime.Parse("22/12/2016"), Amount = 11.50m, Result = true }); // betRecord.Add(new HorseBet { BetID = 25, RaceCourse = "Chester", HorseName = "Queen", Date = DateTime.Parse("14/08/2016"), Amount = 10.00m, Result = false }); // betRecord.Add(new HorseBet { BetID = 26, RaceCourse = "Kelso", HorseName = "Washington", Date = DateTime.Parse("18/09/2016"), Amount = 10.00m, Result = false }); // betRecord.Add(new HorseBet { BetID = 27, RaceCourse = "Kilbeggan", HorseName = "Connecticut", Date = DateTime.Parse("03/03/2017"), Amount = 20.00m, Result = false }); // betRecord.Add(new HorseBet { BetID = 28, RaceCourse = "Fairyhouse", HorseName = "Obama", Date = DateTime.Parse("11/03/2017"), Amount = 55.50m, Result = true }); // betRecord.Add(new HorseBet { BetID = 29, RaceCourse = "Punchestown", HorseName = "King", Date = DateTime.Parse("15/11/2016"), Amount = 10.00m, Result = false }); // betRecord.Add(new HorseBet { BetID = 30, RaceCourse = "Towcester", HorseName = "Jockey", Date = DateTime.Parse("08/05/2016"), Amount = 16.55m, Result = true }); // betRecord.Add(new HorseBet { BetID = 31, RaceCourse = "Punchestown", HorseName = "Clydesdale", Date = DateTime.Parse("23/05/2016"), Amount = 13.71m, Result = true }); // betRecord.Add(new HorseBet { BetID = 32, RaceCourse = "Cork", HorseName = "Wrangler", Date = DateTime.Parse("30/11/2016"), Amount = 20.00m, Result = false }); // betRecord.Add(new HorseBet { BetID = 33, RaceCourse = "Punchestown", HorseName = "Jupiter", Date = DateTime.Parse("25/04/2016"), Amount = 13.45m, Result = true }); // betRecord.Add(new HorseBet { BetID = 34, RaceCourse = "Bangor", HorseName = "Tennessee", Date = DateTime.Parse("23/01/2016"), Amount = 10.00m, Result = false }); return(betRecord); }
public static void Main(string[] args) { //Per requirements, the persisted data must be able to be recalled when the app opens. I am showing that last data here in the beginning & Welcoming the user to the app //1 Console.WriteLine("Welcome to the Repository for the 2016 Kentucky Derby's Run for the Roses.\n"); //When initially running the app, no user data is available. For the purpose of this app, I created an initial default response //When the program is stoped, closed and ran again, it will then return the stored data from the user's answers. if (NoFilesToLoad()) { Console.WriteLine("No previous user bets found."); } else { var lastBet = HorseBetLoader.GetHorseBetFromFile(); Console.WriteLine($"\nThe last bet was {lastBet.UserName} bet on {lastBet.HorseBetPick}\n"); } Console.Write("Press enter to see the list of 2016 Kentucky Derby horses."); Console.ReadKey(); Console.Clear(); //This method will clear the welcome line. //I didn't want the welcome line to be visible the entire ime the app was open //2. The user is then able to see the list of the 2016 Kentucky Derby horses that ran in the race var runForTheRoses = RunForTheRosesRepo.LoadRosesResults("./2016RunForTheRosesResults.json"); //returns a list //2a. writes the running horse of the derby to the console in shuffled order var shuffled = RunForTheRosesRepo.Shuffle(runForTheRoses); RunForTheRosesRepo.Print(shuffled); //3 User enters name to place their bet Console.WriteLine("Please enter your name to place a bet."); var userName = Console.ReadLine(); Console.WriteLine(); //4 User enters their bet Console.WriteLine("What horse did you bet to win the 2016 Derby?"); //4a This code will validate the user's input on the horse they bet on and will display what place they finished and if their horse is not a valid horse it will return null //user entry returned from the Console.ReadLine method will be stored in the horseBet variable //If user selects a horse that is not on the list or presses enter and no value is captured. User needs to be prompted to pick a horse from the list var horseBetAnswer = AnswerHelper.AskForBet(runForTheRoses); Console.Clear(); var userBetMessage = AnswerHelper.GetUserBetMessage(userName, horseBetAnswer); Console.WriteLine(userBetMessage); Console.WriteLine(); //5 display users and their last bet var horseBet = new HorseBet(userName, horseBetAnswer.Horse); AnswerHelper.SaveHorseBet(horseBet); Console.WriteLine(); Console.WriteLine("The program will now close. Thanks!"); Console.Read(); }
public AddBetInformation() { InitializeComponent(); cboRaceCourses.DataSource = HorseBet.ListOfRaceCourseNamesForAddBetComboBox(); dtpRaceDate.Value = DateTime.Today; }