private DynamoDbMatch ToDynamoDbMatch(Match match)
 {
     return new DynamoDbMatch()
     {
         EmployeeOneGuid = match.EmployeeOne.Id,
         EmployeeTwoGuid = match.EmployeeTwo.Id
     };
 }
 public Boolean IsAPreexistingMatch(Match match)
 {
     foreach (var preexistingMatch in _preexistingMatches)
     {
         if (preexistingMatch.EmployeeOne.Id == match.EmployeeOne.Id && preexistingMatch.EmployeeTwo.Id == match.EmployeeTwo.Id)
             return true;
         else if (preexistingMatch.EmployeeOne.Id == match.EmployeeTwo.Id && preexistingMatch.EmployeeTwo.Id == match.EmployeeOne.Id)
             return true;
     }
     return false;
 }
        public List<Match> MakeMatches(List<Employee> employees, int matchesToMake)
        {
            var matches = new List<Match>();

            var random = new Random();

            //attempt to satisfy matchesToMake until employees are all removed
            for (int i = 0; i < matchesToMake; i++)
            {
                if (employees.Any())
                {
                    //pick first employee
                    var randomIndex = random.Next(0, employees.Count());
                    var firstEmployee = employees[randomIndex];
                    employees.Remove(firstEmployee);

                    //pick second employee
                    var coworkers = employees.Where(e => e.StateWorksIn == firstEmployee.StateWorksIn).ToList();
                    if (coworkers.Any())
                    {
                        randomIndex = random.Next(0, coworkers.Count());
                        var secondEmployee = coworkers[randomIndex];
                        employees.Remove(secondEmployee);

                        var match = new Match()
                        {
                            EmployeeOne = firstEmployee,
                            EmployeeTwo = secondEmployee
                        };

                        if(!this.MatchLogger.IsAPreexistingMatch(match))
                            matches.Add(match);
                    }
                }
            }

            return matches;
        }
 private void AlertMatch(Match match)
 {
     AlertEmployee(match.EmployeeOne, match.EmployeeTwo);
     AlertEmployee(match.EmployeeTwo, match.EmployeeOne);
 }