public static final function sendCommunication(Communication $communication, $ignoreTime = false)
 {
     Log::debug("Considering to send CommunicationItem with ID: " . $communication->CommunicationID, "COMMS");
     $currentDateTime = new RhubarbDateTime("now");
     if (CommunicationsModule::isEmailSendingEnabled() && ($ignoreTime || $communication->shouldSendCommunication($currentDateTime))) {
         if (self::sendItems($communication)) {
             $communication->markSent();
         } else {
             $communication->Status = Communication::STATUS_FAILED;
         }
         $communication->save();
         return true;
     } else {
         return false;
     }
 }
 protected function onModelCreated()
 {
     parent::onModelCreated();
     $this->model->getContentForCommunicationItemEvent->attachHandler(function ($communicationItemId) {
         if (empty((int) $communicationItemId)) {
             throw new \InvalidArgumentException('CommunicationItemID is required');
         }
         $communication = new CommunicationItem($communicationItemId);
         return $communication->Text;
     });
     $this->model->setEmailSendingStatusEvent->attachHandler(function ($status) {
         if ($status) {
             CommunicationsModule::enableSendingEmails();
         } else {
             CommunicationsModule::disableSendingEmails();
         }
     });
     $this->model->EnableSendingEmails = CommunicationsModule::isEmailSendingEnabled();
 }