public function actionDelete($id) { $criteria = new \CDbCriteria(); $criteria->addCondition('id = :id'); $criteria->params = array(':id' => $id); $message = Element_OphCoMessaging_Message::model()->find($criteria); $message->updateByPk($id, array('marked_as_read' => 1)); $this->redirect(array('/OphCoMessaging/Inbox')); }
public function getMenuItem() { $user = \Yii::app()->user; $criteria = new \CDbCriteria(); $criteria->addCondition('for_the_attention_of_user_id = :uid'); $criteria->addCondition('marked_as_read = :read'); $criteria->params = array(':uid' => $user->id, ':read' => false); $criteria->order = 'created_date asc'; $messages = Element_OphCoMessaging_Message::model()->findAll($criteria); $containsUrgentMessage = false; foreach ($messages as $message) { if ($message['urgent']) { $containsUrgentMessage = true; } } return array('title' => 'Messages', 'uri' => '/OphCoMessaging/Inbox', 'messageCount' => count($messages), 'containsUrgentMessage' => $containsUrgentMessage); }
/** * Get sent messages. * * @param CWebUser $user * * @return array title and content for the widget */ public function getSentMessages($user = null) { if (is_null($user)) { $user = \Yii::app()->user; } $sort = new \CSort(); $sort->attributes = array('priority' => array('asc' => 'urgent asc', 'desc' => 'urgent desc'), 'event_date' => array('asc' => 't.created_date asc', 'desc' => 't.created_date desc'), 'patient_name' => array('asc' => 'lower(contact.last_name) asc, lower(contact.first_name) asc', 'desc' => 'lower(contact.last_name) desc, lower(contact.first_name) desc'), 'hos_num' => array('asc' => 'patient.hos_num asc', 'desc' => 'patient.hos_num desc'), 'dob' => array('asc' => 'patient.dob asc', 'desc' => 'patient.dob desc'), 'user' => array('asc' => 'lower(for_the_attention_of_user.last_name) asc, lower(for_the_attention_of_user.first_name) asc', 'desc' => 'lower(for_the_attention_of_user.last_name) desc, lower(for_the_attention_of_user.first_name) desc')); $sort->defaultOrder = 'event_date desc'; $from = \Yii::app()->request->getQuery('OphCoMessaging_sent_from', ''); $to = \Yii::app()->request->getQuery('OphCoMessaging_sent_to', ''); $params = array(':uid' => $user->id); $criteria = new \CDbCriteria(); $criteria->select = array('*'); $criteria->addCondition('t.created_user_id = :uid'); $criteria->with = array('event', 'for_the_attention_of_user', 'message_type', 'event.episode', 'event.episode.patient', 'event.episode.patient.contact'); $criteria->together = true; if ($from) { $criteria->addCondition('DATE(t.created_date) >= :from'); $params[':from'] = \Helper::convertNHS2MySQL($from); } if ($to) { $criteria->addCondition('DATE(t.created_date) <= :to'); $params[':to'] = \Helper::convertNHS2MySQL($to); } $criteria->addCondition('event.deleted = 0'); $criteria->addCondition('episode.deleted = 0'); $criteria->params = $params; $dataProvider = new \CActiveDataProvider('OEModule\\OphCoMessaging\\models\\Element_OphCoMessaging_Message', array('sort' => $sort, 'criteria' => $criteria, 'pagination' => array('pageSize' => 10))); $messages = Element_OphCoMessaging_Message::model()->findAll($criteria); \Yii::app()->getAssetManager()->registerCssFile('module.css', 'application.modules.OphCoMessaging.assets.css'); $inbox_view = \Yii::app()->controller->renderPartial('OphCoMessaging.views.sent.grid', array('messages' => $messages, 'dataProvider' => $dataProvider), true); return array('title' => 'Sent Messages', 'content' => $inbox_view, 'options' => array('container-id' => \Yii::app()->user->id . '-sent-container', 'js-toggle-open' => \Yii::app()->request->cookies->contains(\Yii::app()->user->id . '-sent-container-state') ? (bool) \Yii::app()->request->cookies[\Yii::app()->user->id . '-sent-container-state']->value : false)); }
/** * @param $message * @param OphCoMessaging_Message_MessageType $type * @param string $source * @param string $alertAddress * * @return Element_OphCoMessaging_Message * * @throws \CDbException * @throws \Exception */ 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; }