/** * @param ISummit $summit * @param IPresentationSpeaker $speaker * @return IMessageSenderService */ public function build(ISummit $summit, IPresentationSpeaker $speaker) { /** * Rules are: * All speakers that are in a Track, besides BoF and Working Groups * Send the code they already received, unless they are new and don’t have a code. Then they get a new one. * Send the custom registration link to say they’re coming to the summit and leave their onsite phone * ( if they are registered, that is memberid <> 0) * If the user is already registered, we shouldn't send their code again: ( confirmed assistance for summit) * they still need the email, just not the part with the code. Probably a slightly altered verbiage as well */ if ($speaker->breakoutEmailAlreadySent($summit->getIdentifier())) { return null; } if ($speaker->hasConfirmedAssistanceFor($summit->getIdentifier())) { // send reminder without code return new PresentationSpeakerSummitReminderEmailSender(); } // send reminder with code return new PresentationSpeakerConfirmSummitAssistanceEmailReminderSender(); }