OEModule\OphCoMessaging\components\MessageCreator::save PHP Method

save() public method

public save ( $message = '', string $source = '' ) : Element_OphCoMessaging_Message
$message
$source string
return OEModule\OphCoMessaging\models\Element_OphCoMessaging_Message
    public function save($message = '', $source = '')
    {
        $messageEvent = new \Event();
        $messageEvent->episode_id = $this->episode->id;
        $messageEvent->created_user_id = $messageEvent->last_modified_user_id = $this->sender->id;
        $messageEvent->event_date = date('Y-m-d');
        $messageEvent->event_type_id = $this->getEventType()->id;
        $messageEvent->is_automated = 1;
        $messageEvent->automated_source = $source;
        if ($messageEvent->save(true, null, true)) {
            $messageEvent->refresh();
            $messageElement = new Element_OphCoMessaging_Message();
            $messageElement->event_id = $messageEvent->id;
            $messageElement->created_user_id = $messageElement->last_modified_user_id = $this->sender->id;
            $messageElement->for_the_attention_of_user_id = $this->recipient->id;
            $messageElement->message_type_id = $this->type->id;
            if ($this->messageTemplate) {
                $messageElement->message_text = $this->renderTemplate();
            } else {
                $messageElement->message_text = $message;
            }
            if (!$messageElement->save()) {
                throw new \CDbException('Element save failed: ' . print_r($messageElement->getErrors(), true));
            }
        } else {
            throw new \CDbException('Event save failed: ' . print_r($messageEvent->getErrors(), true));
        }
        return $messageElement;
    }

Usage Example

Example #1
0
 /**
  * @param $episodeId
  * @param $userId
  * @param $examination
  * @param $examinationEvent
  * @throws \CDbException
  */
 protected function createMessage($episodeId, $userId, $examination, $examinationEvent)
 {
     if (isset(\Yii::app()->modules['OphCoMessaging']) && ($examination['patient']['comments'] || $examination['patient']['ready_for_second_eye'] === false)) {
         $episode = \Episode::model()->findByPk($episodeId);
         $recipient = \User::model()->findByPk($episode->firm->consultant_id);
         if ($recipient) {
             $sender = \User::model()->findByPk($userId);
             $type = OphCoMessaging_Message_MessageType::model()->findByAttributes(array('name' => 'General'));
             if ($examination['patient']['ready_for_second_eye'] === false) {
                 $ready = 'No';
             } elseif ($examination['patient']['ready_for_second_eye'] === true) {
                 $ready = 'Yes';
             } else {
                 $ready = 'Not Applicable';
             }
             $messageCreator = new MessageCreator($episode, $sender, $recipient, $type);
             $messageCreator->setMessageTemplate('application.modules.OphCoMessaging.views.templates.optom');
             $messageCreator->setMessageData(array('optom' => $examination['op_tom']['name'] . ' (' . $examination['op_tom']['goc_number'] . ')', 'ready' => $ready, 'comments' => $examination['patient']['comments'], 'patient' => $episode->patient));
             $message = $messageCreator->save('', array('event' => $examinationEvent->id));
             $emailSetting = \SettingInstallation::model()->find('`key` = "optom_comment_alert"');
             if ($emailSetting && $emailSetting->value) {
                 $recipients = explode(',', $emailSetting->value);
                 $messageCreator->emailAlert($recipients, 'New Optom Comment', $message->message_text);
             }
         }
     }
 }