public static void SendEmailToWinner(IContestant winner, string sweepStakesName)
        {
            var message = new MimeMessage();

            message.From.Add(new MailboxAddress("Marketing Manager", "*****@*****.**"));
            message.To.Add(new MailboxAddress($"{winner.FirstName} {winner.LastName}", winner.EmailAddress));
            message.Subject = "Congratulations!";

            message.Body = new TextPart("plain")
            {
                Text = $@"Hey {winner.FirstName},

You have won the {sweepStakesName} sweepstakes!

-- Milan"
            };

            using (var client = new SmtpClient())
            {
                client.Connect("smtp.gmail.com", 587, false);

                // Note: only needed if the SMTP server requires authentication
                client.AuthenticationMechanisms.Remove("XOAUTH2");
                client.Authenticate("*****@*****.**", "devCodeCamp");

                client.Send(message);
                client.Disconnect(true);
            }
        }
예제 #2
0
 public Winner(IContestant contestant)
 {
     FirstName          = contestant.FirstName;
     LastName           = contestant.LastName;
     EmailAddress       = contestant.EmailAddress;
     RegistrationNumber = contestant.RegistrationNumber;
 }
        public static int PinsLeft(this IContestant contestant)
        {
            if (contestant.IsInstanceComplete)
            {
                return(-1);
            }

            bool hasPreviousFrame = contestant.ScoringData.Any();

            if (!hasPreviousFrame)
            {
                return(10);
            }
            else
            {
                IEnumerable <IScoreRecord> previousFrame = contestant.ScoringData.GroupBy(x => x.ScoreFrame).Last().AsEnumerable();
                int previousFrameNumber = previousFrame.First().ScoreFrame;

                //check if bonus round
                bool previousFrameComplete = previousFrameNumber < 10
                    ? previousFrame.Sum(x => x.Score) == 10 || previousFrame.Count() == 2
                    : false;

                if (!previousFrameComplete)
                {
                    return(10 - previousFrame.Sum(x => x.Score));
                }
                else
                {
                    return(10);
                }
            }
        }
 public void ConvertToWinner(int i)
 {
     contestWinner                  = new Winner();
     contestWinner.FirstName        = contestants[i].FirstName;
     contestWinner.LastName         = contestants[i].LastName;
     contestWinner.Email            = contestants[i].Email;
     contestWinner.RegistrationCode = contestants[i].RegistrationCode;
 }
예제 #5
0
 public void Notify(IContestant contestant)
 {
     if (isWinner == true)
     {
         Console.WriteLine();
     }
     else
     {
         Console.WriteLine();
     }
 }
예제 #6
0
        private static void RunContests(Random rnd, int nbrOfRuns, int nbrOfDoors, Type contestantType)
        {
            var host = new Host(rnd);

            var wins   = 0;
            var losses = 0;

            const string fmtSummary = "{0} Wins {1:N0}, Losses {2:N0}";
            // const string fmtResult = "Round {0:D3} InitialChoice: {1:D2} OpenDoor: {2:D2} FinalChoice: {3:D2}  PrizeDoor: {4:D2} ";

            string contestantDescription = null;

            for (int i = 0; i < nbrOfRuns; i++)
            {
                var doors = new Doors(rnd);

                IContestant contestant = null;

                if (contestantType == typeof(SteadfastContestant))
                {
                    contestant            = new SteadfastContestant(rnd);
                    contestantDescription = "Steadfast Contestant";
                }
                else if (contestantType == typeof(SwitchyContestant))
                {
                    contestant            = new SwitchyContestant(rnd);
                    contestantDescription = "Switchy Contestant";
                }

                var contest = new Contest(rnd)
                {
                    Doors = doors, Host = host
                };
                contest.Setup(contestant);

                var prize = contest.Play();

                if (prize == PrizeType.Good)
                {
                    wins++;
                }
                else
                {
                    losses++;
                }

                //Console.WriteLine(fmtResult, i + 1, contestant.InitialDoorChoice, doors.ShownDoor.Id, contestant.DoorChoice, doors.WinnerDoor.Id);
            }

            Console.WriteLine();
            Console.WriteLine(fmtSummary, contestantDescription, wins, losses);
            Console.WriteLine();
            Console.WriteLine();
        }
 public static void PrintContestantInfo(IContestant contestant)
 {
     ClearPrintingArea();
     SetPrintingCursorPosition();
     Console.WriteLine($"Info for contestant {contestant.FirstName}");
     Console.WriteLine($"Last Name: {contestant.LastName}");
     Console.WriteLine($"Email: {contestant.EmailAddress}");
     Console.WriteLine($"Registration: {contestant.RegistrationNumber}");
     Console.WriteLine($"---------------------------------");
     Console.WriteLine($"Press enter to return to sweepstakes menu");
     Console.ReadLine();
 }
예제 #8
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="contest"></param>
        /// <param name="rollInput"></param>
        /// <returns>The amount of pins that can be thrown on next throw, -1 if player game is done</returns>
        public static int Roll(this IContest contest, Roll rollInput)
        {
            IContestant contestant = contest.Contestants.FirstOrDefault(x => x.ContestantName == rollInput.ContestantName);
            int         pins       = 0;

            if (!contestant.IsInstanceComplete)
            {
                pins = contestant.Roll(rollInput.PinsKnocked);
            }

            return(contestant.IsInstanceComplete ? -1 : pins);
        }
 public static void PrintWinner(IContestant winner, string sweepStakesName)
 {
     ClearPrintingArea();
     SetPrintingCursorPosition();
     Console.WriteLine($"WINNER! {winner.FirstName}");
     Console.WriteLine($"Last Name: {winner.LastName}");
     Console.WriteLine($"Email: {winner.EmailAddress}");
     Console.WriteLine($"Registration: {winner.RegistrationNumber}");
     Console.WriteLine($"---------------------------------");
     Console.WriteLine($"Press enter to send notifications, close the sweepstakes, and return to main sweepstakes menu.");
     Console.ReadLine();
     SendEmailToWinner(winner, sweepStakesName);
 }
예제 #10
0
        public void NotifyContestants(IContestant contestant)
        {
            Contestant winner = PickWinner();

            foreach (KeyValuePair <int, Contestant> key in contestants)
            {
                if (winner.EmailAddress == key.Value.EmailAddress)
                {
                    UserInterface.NotifyWinner(winner.FirstName, winner.LastName);
                }
                else
                {
                    contestant.Notify(contestant);
                }
            }
        }
        public static int GetLastScoredFrame(this IContestant contestant)
        {
            if (contestant.IsInstanceComplete)
            {
                return(10);
            }

            bool hasPreviousFrame = contestant.ScoringData.Any();

            if (!hasPreviousFrame)
            {
                return(0);
            }
            else
            {
                return(contestant.ScoringData.Last().ScoreFrame);
            }
        }
예제 #12
0
        public void Setup(IContestant contestant)
        {
            const int nbrOfDoors = 3;

            Contestant = contestant;

            if (Doors == null)
            {
                Doors = new Doors(_rnd);
            }

            if (Host == null)
            {
                Host = new Host(_rnd);
            }

            Doors.Setup(nbrOfDoors);
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="contestant"></param>
        /// <param name="pins"></param>
        /// <returns>The max pins for next throw</returns>
        public static int Roll(this IContestant contestant, int pins)
        {
            bool hasPreviousFrame = contestant.ScoringData.Any();

            if (!hasPreviousFrame)
            {
                pins = pins >= 10 ? 10 : pins;
                contestant.ScoringData.Add(new FrameData {
                    ScoreFrame = 1, Score = pins
                });
                return(pins >= 10 ? 10 : 10 - pins);
            }
            else
            {
                IEnumerable <IScoreRecord> previousFrame = contestant.ScoringData.GroupBy(x => x.ScoreFrame).Last().AsEnumerable();
                int previousFrameNumber = previousFrame.First().ScoreFrame;

                //check if bonus round
                bool previousFrameComplete = previousFrameNumber < 10
                    ? previousFrame.Sum(x => x.Score) == 10 || previousFrame.Count() == 2
                    : false;

                if (!previousFrameComplete)
                {
                    contestant.IsInstanceComplete = previousFrameNumber == 10 && previousFrame.Count() == 1 && previousFrame.Sum(x => x.Score) + pins < 10 ||
                                                    previousFrameNumber == 10 && previousFrame.Count() == 2;
                    contestant.ScoringData.Add(new FrameData {
                        ScoreFrame = previousFrameNumber, Score = pins
                    });
                    return(10);
                }
                else
                {
                    pins = pins >= 10 ? 10 : pins;
                    contestant.ScoringData.Add(new FrameData {
                        ScoreFrame = previousFrameNumber + 1, Score = pins
                    });
                    return(10 - pins > 0
                        ? 10 - pins
                        : 10);
                }
            }
        }
예제 #14
0
 public static void SetScore(IContestant contestant1, IContestant contestant2)
 {
     if (contestant1.LastChoice == StrategyChoice.Cooperate && contestant2.LastChoice == StrategyChoice.Cooperate) {
     contestant1.AddScore(scoreUnit);
     contestant2.AddScore(scoreUnit);
       }
       else if (contestant1.LastChoice == StrategyChoice.Cooperate && contestant2.LastChoice == StrategyChoice.Defect) {
     contestant1.AddScore(0);
     contestant2.AddScore(scoreUnit * 2);
       }
       else if (contestant1.LastChoice == StrategyChoice.Defect && contestant2.LastChoice == StrategyChoice.Cooperate) {
     contestant1.AddScore(scoreUnit * 2);
     contestant2.AddScore(0);
       }
       else {
     contestant1.AddScore(0);
     contestant2.AddScore(0);
       }
 }
예제 #15
0
 public void Notify(IContestant contestant)
 {
     Console.Write("Congratulations {0} You have won the sweepstakes!\n", contestant.FirstName);
 }
예제 #16
0
 public void PrintContestantInfo(IContestant contestant)
 {
     Console.WriteLine(contestant.RegistrationCode + " " + contestant.FirstName + " " + contestant.LastName + " " + contestant.Email + " is registered.");
 }
예제 #17
0
 public void Notify(IContestant contestant)
 {
     //Console.Write("The winner of this sweepstake is {0}! \n", );
 }
예제 #18
0
 public void Inform(IContestant contestant)
 {
     Console.WriteLine("Thank you, {0} for participating, contestant.Name);
 }
예제 #19
0
 public void Notify(IContestant contestant)
 {
     Console.Write("Sorry {0} You have lost the sweepstakes!\n", contestant.FirstName);
 }
예제 #20
0
 public void Notify(IContestant contestant)
 {
     Console.WriteLine(firstName + " you are the winner");
 }
예제 #21
0
 public void PrintWinnerInfo(IContestant contestant)
 {
     Console.WriteLine("The winner is " + contestant.RegistrationCode + " " + contestant.FirstName + " " + contestant.LastName + " " + contestant.Email);
 }
예제 #22
0
 public PrisonersDilemma(IContestant contestant1, IContestant contestant2)
 {
     this.contestant1 = contestant1;
       this.contestant2 = contestant2;
 }
예제 #23
0
 public void PrintContestantInfo(IContestant contestant)
 {
     UserInterface.PrintContestantInfo(contestant);
 }
예제 #24
0
 //member methods (CAN DO)
 public void NotifyWinner(IContestant winner)
 {
     Console.WriteLine("Congratulations, you win! Please respond to claim your prize.");
 }
예제 #25
0
 public void Notify(IContestant contestant)
 {
     Console.WriteLine("The winner has been drawn, better luck next time, {0}!", contestant.FirstName);
 }
 public void Setup()
 {
     _contestant = new BowlingGame.Web.Models.BowlingContestant();
 }
예제 #27
0
 public void Notify(IContestant contestant)
 {
     Console.WriteLine(firstName + " you are a loser.");
 }
예제 #28
0
 public void NotifyLoser(IContestant contestant)
 {
     Console.WriteLine("Sorry, you did not win the sweepstakes. If you would like, please enter our new sweepstakes.");
 }
예제 #29
0
 public void Notify(IContestant contestant)
 {
     Console.WriteLine("Thank you, {0} for entering", contestant.Name);
 }
예제 #30
0
        public static void AddToSweepstakes(IContestant contestant, ContestastName1, Contestant Name2) 
        {

            Sweepstakes.Add(contestant, contestantName1, contestantName2);
        }