public function init()
 {
     $this->parts = ZakazParts::model()->findAllByAttributes(['proj_id' => $this->project->id]);
     $this->payments = ProjectPayments::model()->findByAttributes(['order_id' => $this->project->id]);
     $this->changes = ProjectChanges::model()->findAllByAttributes(['project_id' => $this->project->id]);
     $this->messages = ProjectMessages::model()->findAllByAttributes(['order' => $this->project->id], ['order' => 'id DESC']);
 }
 public function actionIndex()
 {
     if (Yii::app()->request->isAjaxRequest) {
         header('Content-Type: application/json');
         echo CJSON::encode(array('success' => true, 'msg' => ProjectMessages::model()->findByPk(Events::model()->findByPk(Yii::app()->request->getParam('id'))->event_id)->message));
         Yii::app()->end();
     }
     $events = Events::model()->findAll(array('condition' => '', 'order' => 'timestamp DESC'));
     $this->render('index', array('events' => $events));
 }
 public function yiichat_list_posts($chat_id, $identity, $last_id, $data)
 {
     $this->_chat_id = $chat_id;
     $this->_identity = $identity;
     $this->_data = $data;
     $messages = ProjectMessages::model()->findAll('`t`.`order` = :chat_id AND `t`.`id` > :last_id', array(':chat_id' => $chat_id, ':last_id' => $last_id));
     foreach ($messages as $m) {
         $m->date = date_format(date_create($m->date), 'd.m.Y H:i:s');
     }
     return $messages;
 }
 public function yiichat_list_posts($chat_id, $identity, $last_id, $data)
 {
     $res = parent::yiichat_list_posts($chat_id, $identity, $last_id, $data);
     if (count($res) > 0) {
         $order = Zakaz::model()->findByPk($chat_id);
     }
     foreach ($res as $k => $v) {
         $res1[$k] = $v->attributes;
         $res1[$k]['sender'] = array();
         $res1[$k]['sender']['fullusername'] = $res[$k]->senderObject->email;
         if ($res[$k]->senderObject) {
             $res1[$k]['sender']['superuser'] = $res[$k]->senderObject->getRelated('AuthAssignment')->attributes;
         }
         // При удалённом пользователе необходима проверка
         $res1[$k]['sender']['rating'] = (int) $res[$k]->senderObject->profile->rating;
         switch ($res1[$k]['sender']['superuser']['itemname']) {
             case 'Admin':
                 $res1[$k]['sender']['username'] = ProjectModule::t('Admin');
                 //'Админ';
                 break;
             case 'Manager':
                 $res1[$k]['sender']['username'] = ProjectModule::t('Manager');
                 //'Менеджер';
                 break;
             case 'Author':
                 if (ProjectMessages::model()->getRole($res1[$k]['sender_role']) == 'Corrector') {
                     $res1[$k]['sender']['username'] = ProjectModule::t('Corrector');
                 } else {
                     $res1[$k]['sender']['username'] = ProjectModule::t('Executor');
                 }
                 //'Автор';
                 break;
             case 'Customer':
                 $res1[$k]['sender']['username'] = ProjectModule::t('Customer');
                 //'Заказчик';
                 break;
         }
         $res1[$k]['sender']['username'] = $res1[$k]['sender']['fullusername'];
         if ($res[$k]->recipient > 0) {
             $res1[$k]['recipient'] = array();
             $res1[$k]['recipient']['fullusername'] = $res[$k]->recipientObject->email;
             $res1[$k]['recipient']['superuser'] = $res[$k]->recipientObject->getRelated('AuthAssignment')->attributes;
             switch ($res1[$k]['recipient']['superuser']['itemname']) {
                 case 'Admin':
                     $res1[$k]['recipient']['username'] = ProjectModule::t('to admin');
                     //'админу';
                     break;
                 case 'Manager':
                     $res1[$k]['recipient']['username'] = ProjectModule::t('to manager');
                     //'менеджеру';
                     break;
                 case 'Author':
                     if (ProjectMessages::model()->getRole($res1[$k]['recipient_role']) == 'Corrector') {
                         $res1[$k]['recipient']['username'] = ProjectModule::t('to corrector');
                     } else {
                         $res1[$k]['recipient']['username'] = ProjectModule::t('to executor');
                     }
                     //'автору';
                     break;
                 case 'Customer':
                     $res1[$k]['recipient']['username'] = ProjectModule::t('to customer');
                     //'заказчику';
                     break;
             }
             //$res1[$k]['recipient']['username']=$res1[$k]['recipient']['fullusername'];
         }
         if ($res1[$k]['sender_role']) {
             $res1[$k]['sender_role'] = ProjectMessages::model()->getRole($res1[$k]['sender_role']);
         }
     }
     return $res1;
 }
Esempio n. 5
0
<?php

/**
 * Created by PhpStorm.
 * User: coolfire
 * Date: 26.06.15
 * Time: 13:54
 */
$criteria = new CDbCriteria();
if (!Yii::app()->user->isGuest) {
    $criteria->addCondition('(moderated=1 OR sender IN (SELECT userid FROM AuthAssignment WHERE itemname IN ("Admin","Manager")) OR sender=' . Yii::app()->user->id . ') AND (sender=' . Yii::app()->user->id . ' OR recipient IN (' . Yii::app()->user->id . ',0' . (User::model()->isAuthor() ? ',-1' : '') . '))');
}
$criteria->addCondition('`order` = :oid');
$criteria->params[':oid'] = (int) $orderId;
$messages = ProjectMessages::model()->findAll($criteria);
?>

<div id="chatWindow" class="col-xs-12 chat-view chtpl0-chatblock">
<?php 
Yii::app()->clientScript->registerCss('cs1', '
div.chat-window::after {
    content: "' . ProjectModule::t('Here is your correspondence') . '";
}');
if (User::model()->isAuthor() && !$order->executor && $order->status <= 2) {
    Yii::app()->clientScript->registerCss('cs2', '
div.chat-window::before {
     content: "' . ProjectModule::t('Please, write that you are ready to take this order or ask a question.') . '";
}');
}
?>
    <?php 
 /**
  *  Вывод и добавление сообщений
  */
 public function actionIndex($orderId)
 {
     $isGuest = Yii::app()->user->isGuest;
     Yii::app()->session['project_id'] = $orderId;
     if (Yii::app()->request->isAjaxRequest) {
         if (Yii::app()->request->getPost('ProjectMessages')) {
             $id = (int) $_POST['ProjectMessages']['id'];
             if ($id > 0) {
                 $model = ProjectMessages::model()->findByPk($id);
             } else {
                 $model = new ProjectMessages();
                 $model->sender = Yii::app()->user->id;
                 $model->moderated = 0;
                 $model->order = $orderId;
             }
             $post = $_POST['ProjectMessages']['message'];
             $post = str_replace("\r\n", '<br>', $post);
             $post = str_replace("\n", '<br>', $post);
             $_POST['ProjectMessages']['message'] = $post;
             $model->attributes = Yii::app()->request->getPost('ProjectMessages');
             $model->date = date('Y-m-d H:i:s');
             switch ($model->recipient) {
                 case 'manager':
                     $model->recipient = 1;
                     break;
                 case 'customer':
                     if (User::model()->isCustomer()) {
                         $model->recipient = Zakaz::model()->resetScope()->findByPk($orderId)->attributes['executor'];
                         $type_id = Emails::TYPE_20;
                     } else {
                         if (User::model()->isAuthor()) {
                             $model->recipient = Zakaz::model()->findByPk($orderId)->attributes['user_id'];
                             $type_id = Emails::TYPE_16;
                         }
                     }
                     $user = User::model()->findByPk($model->recipient);
                     $profile = Profile::model()->findAll("`user_id`='{$model->recipient}'");
                     $email = new Emails();
                     $rec = Templates::model()->findAll("`type_id`='{$type_id}'");
                     $title = $rec[0]->title;
                     $body = $rec[0]->text;
                     $email->name = $user->full_name;
                     if (strlen($email->name) < 2) {
                         $email->name = $user->username;
                     }
                     $email->num_order = $orderId;
                     $email->message = $post;
                     $email->page_order = 'http://' . $_SERVER['SERVER_NAME'] . '/project/chat?orderId=' . $orderId;
                     $email->sendTo($user->email, $body, $type_id);
                     break;
             }
             //print_r($model);
             //echo '<br>$model->save()='.$model->save();
             EventHelper::addMessage($orderId, $model->message);
         }
         $this->renderPartial('chat', array('orderId' => $orderId, 'isGuest' => $isGuest));
         Yii::app()->end();
     }
     $order = Zakaz::model()->resetScope()->findByPk($orderId);
     $parts = ZakazParts::model()->findAll(array('condition' => "`proj_id`='{$orderId}'"));
     if ($isGuest) {
         Yii::app()->theme = 'client';
         // если гость прошёл по ссылке на неcуществующий
         // проект, отправляем его на регистрацию
         $url = 'http://' . $_SERVER['SERVER_NAME'] . '/';
         if (!$order) {
             $this->redirect($url);
         }
         $moderate_types = EventHelper::get_moderate_types_string();
         $events = Events::model()->findAll(array('condition' => "`event_id`='{$orderId}' AND `type` in ({$moderate_types})", 'order' => 'timestamp DESC'), array(':event_id' => $orderId));
         $moderated = count($events) == 0;
         // если гость прошёл по ссылке на непромодерированный
         // проект, отправляем его на регистрацию
         if (!$moderated) {
             $this->redirect(Yii::app()->createUrl('user/login'));
         }
         //			Catalog::model()->tableName();
         //$EmptyChat = UserModule::t('EmptyChat');
         $this->render('index', array('orderId' => $orderId, 'order' => $order, 'executor' => Zakaz::getExecutor($orderId), 'moderated' => $moderated, 'isGuest' => $isGuest, 'parts' => $parts));
         Yii::app()->end();
     }
     $moderate_types = EventHelper::get_moderate_types_string();
     $events = Events::model()->findAll(array('condition' => "`event_id`='{$orderId}' AND `type` in ({$moderate_types})", 'order' => 'timestamp DESC'), array(':event_id' => $orderId));
     $moderated = count($events) == 0;
     $this->render('index', array('orderId' => $orderId, 'order' => $order, 'executor' => Zakaz::getExecutor($orderId), 'moderated' => $moderated, 'isGuest' => $isGuest, 'parts' => $parts));
 }
 /**
  *  Вывод и добавление сообщений
  */
 public function actionIndex($orderId, $role = null)
 {
     $isCorrector = $role == 'Corrector' ? 1 : 0;
     $isGuest = Yii::app()->user->isGuest;
     if ($isGuest) {
         $url = 'http://' . $_SERVER['SERVER_NAME'] . '/user/login';
         $this->redirect($url);
     }
     Yii::app()->session['project_id'] = $orderId;
     $order = Zakaz::model()->resetScope()->findByPk($orderId);
     if (Yii::app()->request->isAjaxRequest) {
         if (Yii::app()->request->getPost('ProjectMessages')) {
             $id = (int) $_POST['ProjectMessages']['id'];
             if ($id > 0) {
                 // редактирование сообщения
                 $model = ProjectMessages::model()->findByPk($id);
             } else {
                 // новое сообщение
                 $model = new ProjectMessages();
                 $model->sender = Yii::app()->user->id;
                 $model->moderated = 0;
                 $model->order = $orderId;
             }
             $post = $_POST['ProjectMessages']['message'];
             $post = str_replace("\r\n", '<br>', $post);
             $post = str_replace("\n", '<br>', $post);
             $_POST['ProjectMessages']['message'] = $post;
             $model->attributes = Yii::app()->request->getPost('ProjectMessages');
             $model->date = date('Y-m-d H:i:s');
             switch ($model->recipient) {
                 case 'author_to_manager':
                     $model->sender_role = ProjectMessages::model()->getRoleId('Author');
                     $model->recipient_role = ProjectMessages::model()->getRoleId('Admin');
                     $model->recipient = 1;
                     break;
                 case 'customer_to_manager':
                     $model->sender_role = ProjectMessages::model()->getRoleId('Customer');
                     $model->recipient_role = ProjectMessages::model()->getRoleId('Admin');
                     $model->recipient = 1;
                     break;
                 case 'corrector_to_manager':
                     $model->sender_role = ProjectMessages::model()->getRoleId('Corrector');
                     $model->recipient_role = ProjectMessages::model()->getRoleId('Admin');
                     $model->recipient = 1;
                     break;
                 case 'author_to_customer':
                     $model->sender_role = ProjectMessages::model()->getRoleId('Author');
                     $model->recipient_role = ProjectMessages::model()->getRoleId('Customer');
                     $model->recipient = Zakaz::model()->findByPk($orderId)->attributes['user_id'];
                     break;
                 case 'corrector_to_customer':
                     $model->sender_role = ProjectMessages::model()->getRoleId('Corrector');
                     $model->recipient_role = ProjectMessages::model()->getRoleId('Customer');
                     $model->recipient = Zakaz::model()->findByPk($orderId)->attributes['user_id'];
                     break;
                 case 'customer_to_author':
                     $model->sender_role = ProjectMessages::model()->getRoleId('Customer');
                     $model->recipient_role = ProjectMessages::model()->getRoleId('Author');
                     $model->recipient = Zakaz::model()->resetScope()->findByPk($orderId)->attributes['executor'];
                     break;
                 case 'corrector_to_author':
                     $model->sender_role = ProjectMessages::model()->getRoleId('Corrector');
                     $model->recipient_role = ProjectMessages::model()->getRoleId('Author');
                     $model->recipient = Zakaz::model()->resetScope()->findByPk($orderId)->attributes['executor'];
                     break;
                 case 'author_to_corrector':
                     $model->sender_role = ProjectMessages::model()->getRoleId('Author');
                     $model->recipient_role = ProjectMessages::model()->getRoleId('Corrector');
                     $model->recipient = -2;
                     break;
                 case 'customer_to_corrector':
                     $model->sender_role = ProjectMessages::model()->getRoleId('Customer');
                     $model->recipient_role = ProjectMessages::model()->getRoleId('Corrector');
                     $model->recipient = -2;
                     break;
             }
             $model->save();
             EventHelper::addMessage($orderId, $model->message);
         }
         $this->renderPartial('chat', array('order' => $order, 'orderId' => $orderId, 'isGuest' => $isGuest));
         Yii::app()->end();
     }
     if (User::model()->isAuthor() && (!User::model()->isCorrector() || !$order->technicalspec) && !User::model()->isExecutor($orderId)) {
         $this->redirect(Yii::app()->createUrl('/project/chat/view', array('orderId' => $orderId)));
     }
     if (User::model()->isCustomer() && $order->user_id != Yii::app()->user->id) {
         $this->redirect('/');
     }
     $parts = ZakazParts::model()->findAll(array('condition' => "`proj_id`='{$orderId}'"));
     if (User::model()->isExecutor($order->id)) {
         $order->executor_event = null;
     }
     if (User::model()->isCustomer()) {
         $order->customer_event = null;
     }
     $order->save(false);
     $moderate_types = EventHelper::get_moderate_types_string();
     $events = Events::model()->findAll(array('condition' => "`event_id`='{$orderId}' AND `type` in ({$moderate_types})", 'order' => 'timestamp DESC'), array(':event_id' => $orderId));
     $PaymentImages = PaymentImage::model()->findAll(array('condition' => "`project_id`='{$orderId}'"));
     $moderated = count($events) == 0;
     $this->render('index', array('orderId' => $orderId, 'order' => $order, 'executor' => Zakaz::getExecutor($orderId), 'moderated' => $moderated, 'parts' => $parts, 'PaymentImages' => $PaymentImages, 'isCorrector' => $isCorrector));
 }
Esempio n. 8
0
     if ($role == 'Author') {
         $role = 'Executor';
     }
     if (!$message->sender_role) {
         $roles = User::model()->getUserRoleArr($message->senderObject->id);
         // \
         if (in_array('Corrector', $roles) && $order->technicalspec) {
             $role = 'Corrector';
         }
         //  \ Меняем на ролевую модель
     }
 }
 if ($isCustomer) {
     $msg_role = 'customer-message';
 }
 $recipientRole = $message->recipient_role ? ProjectMessages::model()->getRole($message->recipient_role) : User::model()->getUserRole($message->recipientObject->id);
 if ($recipientRole == 'Admin') {
     $toRecipient = ProjectModule::t('to admin');
 } elseif ($recipientRole == 'Manager') {
     $toRecipient = ProjectModule::t('to manager');
 } elseif ($recipientRole == 'Customer') {
     $toRecipient = ProjectModule::t('to customer');
 } elseif ($recipientRole == 'Corrector') {
     $toRecipient = ProjectModule::t('to corrector');
 } elseif ($recipientRole == 'Author' || !$message->recipientObject->id) {
     $toRecipient = ProjectModule::t('to executor');
     if (!$message->recipient_role && $order->technicalspec) {
         $roles = User::model()->getUserRoleArr($message->recipientObject->id);
         if (in_array('Corrector', $roles)) {
             $toRecipient = ProjectModule::t('to corrector');
         }