RandomActsOfCoffee.MatchArranger.MakeMatches C# (CSharp) Method

MakeMatches() public method

public MakeMatches ( List employees, int matchesToMake ) : List
employees List
matchesToMake int
return List
        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;
        }

Usage Example

        public void MakeMatches(int employeesToSupply, int matchesToMake, int matchesMade)
        {
            var employees = new List<Employee>();
            for (int i = 0; i < employeesToSupply; i++)
                employees.Add(GetRandomEmployee());

            var matchArranger = new MatchArranger(GetStubbedMatchLogger(), GetStubbedMatchAlerter());
            var matches = matchArranger.MakeMatches(employees, matchesToMake);

            Assert.AreEqual(matchesMade, matches.Count());
        }
All Usage Examples Of RandomActsOfCoffee.MatchArranger::MakeMatches