示例#1
0
        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);
        }
示例#4
0
        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);
        }
示例#5
0
        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);
        }
示例#6
0
        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);
        }
示例#7
0
        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);
        }
示例#8
0
        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());
         }
     }
 }
示例#10
0
        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);
        }
示例#11
0
        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());
                    }
            }
        }
示例#13
0
        public void testHorseBetClassExists()
        {
            HorseBet testBet = new HorseBet("Aintree", new DateTime(2017, 5, 12), 11.58m, true, 0);

            Assert.IsInstanceOfType(testBet, typeof(Object));
        }
示例#14
0
        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);
        }
示例#16
0
        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();
        }
示例#17
0
 public AddBetInformation()
 {
     InitializeComponent();
     cboRaceCourses.DataSource = HorseBet.ListOfRaceCourseNamesForAddBetComboBox();
     dtpRaceDate.Value         = DateTime.Today;
 }