/// <summary> /// Generates the text that should be added to the document and sent to the participants in advance. /// </summary> /// <param name="meal">The part of the meal to prepare</param> /// <param name="hosts">list of hosts.</param> /// <param name="guests1">first list of guests</param> /// <param name="guests2">second list of guests</param> /// <param name="doc">the word document</param> private void AddHostToWord(string meal, List <Participant> hosts, List <Participant> guests1, List <Participant> guests2, WordHandler doc) { string getAllergies(string host, string guest1, string guest2) { string result = ""; // result += (host == "" ? "" : host); result += host; if (guest1 != "") { if (result == "") { result += guest1; } else { result += ", " + guest1; } } if (guest2 != "") { if (result == "") { result += guest2; } else { result += ", " + guest2; } } if (result.Count() < 1) { result = "Inga allergier"; } return(result); } char nl = (char)11; // New-line character in Word. for (int i = 0; i < hosts.Count; i++) { doc.WordAddText(hosts[i].Name, "name"); string text = "Välkomna att delta i matstafetten!" + nl + "Den del av måltiden ni har blivit tilldelade att förbereda är:" + nl + nl + meal + nl + nl + "Eventuella allergier ni behöver ta hänsyn till är:" + nl; string allergies = getAllergies(hosts[i].Allergie, guests1[i].Allergie, guests2[i].Allergie); text += allergies; doc.WordAddText(text); doc.WordAddPageBreak(); } }
/// <summary> /// Generates the text that sends the participants to their next meal /// </summary> /// <param name="meal">"förrätten" or "huvudrätten"</param> /// <param name="p">A full class of Foodrelayparticipants</param> /// <param name="doc">the word document</param> private void AddInstructionsOfWhereToGoNextToWord(string meal, FoodRelayParticipants p, WordHandler doc) { int FindIndex(string needle, List <Participant> haystack) { int result = -1; for (int i = 0; i < haystack.Count(); i++) { if (needle == haystack[i].Name) { result = i; break; } } return(result); } Participant FindInListHaystacks(string needle, List <Participant> Haystack1, List <Participant> Haystack2, List <Participant> HostStack) { int foundIndex = FindIndex(needle, Haystack1); if (foundIndex == -1) { foundIndex = FindIndex(needle, Haystack2); } if (foundIndex != -1) { return(HostStack[foundIndex]); } else { foundIndex = FindIndex(needle, HostStack); } if (foundIndex != -1) { return(null); } throw new KeyNotFoundException("No new place to go is found for a participant"); } string NextStopSnippet(Participant NextStop) { char newline = (char)11; if (NextStop == null) { return("är värd för nästa rätt" + newline + newline); } else { return("är välkomna till" + newline + NextStop.Name + newline + NextStop.ContactInformation + newline + newline); } } List <Participant> hosts = (meal == "förrätten" ? p.FinalStarterHosts : p.FinalMainCourseHosts); List <Participant> guests1 = (meal == "förrätten" ? p.FinalStarterGuests1 : p.FinalMainCourseGuests1); List <Participant> guests2 = (meal == "förrätten" ? p.FinalStarterGuests2: p.FinalMainCourseGuests2); char nl = (char)11; // New-line character in Word. for (int i = 0; i < hosts.Count; i++) { Participant hostNextStop, guest1NextStop, guest2NextStop; if (meal == "förrätten") { hostNextStop = FindInListHaystacks(hosts[i].Name, p.FinalMainCourseGuests1, p.FinalMainCourseGuests2, p.FinalMainCourseHosts); guest1NextStop = FindInListHaystacks(guests1[i].Name, p.FinalMainCourseGuests1, p.FinalMainCourseGuests2, p.FinalMainCourseHosts); guest2NextStop = FindInListHaystacks(guests2[i].Name, p.FinalMainCourseGuests1, p.FinalMainCourseGuests2, p.FinalMainCourseHosts); } else { hostNextStop = FindInListHaystacks(hosts[i].Name, p.FinalDesertGuests1, p.FinalDesertGuests2, p.FinalDesertHosts); guest1NextStop = FindInListHaystacks(guests1[i].Name, p.FinalDesertGuests1, p.FinalDesertGuests2, p.FinalDesertHosts); guest2NextStop = FindInListHaystacks(guests2[i].Name, p.FinalDesertGuests1, p.FinalDesertGuests2, p.FinalDesertHosts); } string toBeReadBy = "Att läsas under måltiden av:" + nl + hosts[i].Name; doc.WordAddText(toBeReadBy, "italic"); string text = "Hoppas ni har njutit av " + meal + " och sällskapet!" + nl + "Det är fortfarande mycket kvar och nu är det dags att åka vidare..." + nl + nl + hosts[i].Name + nl + NextStopSnippet(hostNextStop) + guests1[i].Name + nl + NextStopSnippet(guest1NextStop) + guests2[i].Name + nl + NextStopSnippet(guest2NextStop); doc.WordAddText(text); if (!(meal == "huvudrätten" && i == (hosts.Count - 1))) { doc.WordAddPageBreak(); } } }