/* * Pair each person in the shuffled list with the next person in the shuffled list (except for * the last person in the shuffled list, who is paired with the first person) */ public static List <NameEmailModel> PairUp(List <NameEmailModel> nameEmails) { List <NameEmailModel> sortedEmails = new List <NameEmailModel>(); for (int i = 0; i < nameEmails.Count; i++) { NameEmailModel pairing = new NameEmailModel(); if (i != (nameEmails.Count - 1)) { // Each person in the shuffled list is allocated the next person in the list string[] namePair = new string[] { nameEmails[i].Name[0], nameEmails[i + 1].Name[0] }; string[] emailPair = new string[] { nameEmails[i].Email[0], nameEmails[i + 1].Email[0] }; pairing.Name = namePair; pairing.Email = emailPair; } else { // The last person in the list is allocated the first person in the list string[] namePair = new string[] { nameEmails[i].Name[0], nameEmails[0].Name[0] }; string[] emailPair = new string[] { nameEmails[i].Email[0], nameEmails[0].Email[0] }; pairing.Name = namePair; pairing.Email = emailPair; } sortedEmails.Add(pairing); } return(sortedEmails); }
public async Task <IActionResult> SendEmail([Bind("Name,Email")] NameEmailModel nameEmailModel) { List <NameEmailModel> nameEmails = new List <NameEmailModel>(); for (int i = 0; i < nameEmailModel.Name.Length; i++) { NameEmailModel nameEmail = new NameEmailModel(); nameEmail.Name = new string[] { nameEmailModel.Name[i] }; Console.WriteLine("Name: " + nameEmailModel.Name[i]); nameEmail.Email = new string[] { nameEmailModel.Email[i] }; Console.WriteLine("Email: " + nameEmailModel.Email[i]); nameEmails.Add(nameEmail); } // Call ShuffleNames helper (list of names and emails in random order) HomeControllerHelpers.ShuffleNames(nameEmails); // Call PairUp helper (assign each giver's receiver as the next person in the shuffled list) List <NameEmailModel> pairedNames = HomeControllerHelpers.PairUp(nameEmails); // Call SendNow helper (email all players) HomeControllerHelpers.SendNow(pairedNames); return(RedirectToAction("Index")); }