request = $request; } public function send() : SendMessageResponse { $response = new SendMessageResponse(); foreach ($this->request->messageTypes as $messageType) { switch (true) { case $messageType->value === MessageType::EMAIL->value: $this->sendAsEmail(); break; case $messageType->value === MessageType::INTERNAL->value: $this->sendAsInternalMessage(); break; } } return $response; } private function sendAsEmail() { foreach ($this->request->recipient->getEmailAddresses() as $emailAddress) { Mail::html($this->request->message, function ($message) use ($emailAddress) { $message ->to($emailAddress->getValue(), $this->request->recipient->getName()) ->subject($this->request->subject); }); } } private function sendAsInternalMessage() { } }