public function searchClients() { // @todo Please modify the following code to remove attributes that should not be searched. $criteria = new CDbCriteria(); if ($this->keyword != null) { $criteria->addCondition('t.name LIKE "%' . $this->keyword . '%"', "OR"); $criteria->addCondition('t.email_1 LIKE "%' . $this->keyword . '%"', "OR"); $criteria->addCondition('t.phone_1 LIKE "%' . $this->keyword . '%"', "OR"); } $this->responsable_id != null && $this->responsable_id != 'all' && $this->responsable_id != 'no' ? $criteria->addCondition('t.responsable_id=' . $this->responsable_id) : ''; $this->responsable_id == 'no' ? $criteria->addCondition('t.responsable_id=null') : ''; $this->priority_id != null && $this->priority_id != 0 ? $criteria->addCondition('t.priority_id=' . $this->priority_id) : ''; $this->source_id != null && $this->source_id != 0 ? $criteria->addCondition('t.source_id=' . $this->source_id) : ''; $this->goal_id != null && $this->goal_id != 0 ? $criteria->addCondition('t.goal_id=' . $this->goal_id) : ''; $this->city_id != null && $this->city_id != 0 ? $criteria->addCondition('t.city_id=' . $this->city_id) : ''; $this->group_id != null && $this->group_id != 0 ? $criteria->addCondition('t.group_id=' . $this->group_id) : ''; $criteria->addCondition('t.company_id=' . Users::model()->findByPk(Yii::app()->user->id)->company_id); $role = UsersRoles::model()->find('user_id=' . Yii::app()->user->id)->itemname; if ($role == 'director') { $users = new Users(); $users_ids = $users->takeDirectorUsers(Yii::app()->user->id); $criteria->addInCondition('t.responsable_id', $users_ids); } elseif ($role == 'manager') { $criteria->addCondition('t.responsable_id=' . Yii::app()->user->id); } return new CActiveDataProvider($this, array('criteria' => $criteria, 'sort' => array('defaultOrder' => 't.id DESC'))); }
public function searchDeals($id = null) { // @todo Please modify the following code to remove attributes that should not be searched. $criteria = new CDbCriteria(); $criteria->with = array('client'); $this->keyword != null ? $criteria->addCondition('t.text LIKE "%' . $this->keyword . '%"') : ''; $id != null ? $criteria->addCondition('t.client_id=' . $id) : ''; $criteria->addCondition('t.company_id=' . Users::model()->findByPk(Yii::app()->user->id)->company_id); $this->client_group_id != null && $this->client_group_id != 0 ? $criteria->addCondition('client.group_id=' . $this->client_group_id) : ''; $this->responsable_id != null && $this->responsable_id != 'all' && $this->responsable_id != 'no' ? $criteria->addCondition('t.responsable_id=' . $this->responsable_id) : ''; $this->responsable_id == 'no' ? $criteria->addCondition('t.responsable_id is null') : ''; $this->deal_category_id != null && $this->deal_category_id != 0 ? $criteria->addCondition('t.deal_category_id=' . $this->deal_category_id) : ''; $this->text != null ? $criteria->addCondition('t.text LIKE "%' . $this->text . '%"') : ''; $this->deal_status_id != null && $this->deal_status_id != 0 ? $criteria->addCondition('t.deal_status_id=' . $this->deal_status_id) : ''; $this->deal_priority_id != null && $this->deal_priority_id != 0 ? $criteria->addCondition('t.deal_priority_id=' . $this->deal_priority_id) : ''; $this->paid != null && $this->paid != 0 ? $criteria->addCondition('t.paid>=' . $this->paid) : ''; $this->balance != null && $this->balance != 0 ? $criteria->addCondition('t.balance>=' . $this->balance) : ''; // поиск только по нулевым значениям $this->paid === "0" ? $criteria->addCondition('t.paid=0') : ''; $this->balance === "0" ? $criteria->addCondition('t.balance=0') : ''; // поиск в интервале дат $this->start_date != null ? $criteria->addCondition('UNIX_TIMESTAMP(t.creation_date)>=' . strtotime($this->start_date)) : ''; $this->stop_date != null ? $criteria->addCondition('UNIX_TIMESTAMP(t.creation_date)<=' . strtotime($this->stop_date . ':59')) : ''; // поиск по ролям $role = UsersRoles::model()->find('user_id=' . Yii::app()->user->id)->itemname; if ($role == 'director') { $users = new Users(); $users_ids = $users->takeDirectorUsers(Yii::app()->user->id); $criteria->addInCondition('t.responsable_id', $users_ids); } elseif ($role == 'manager') { $criteria->addCondition('t.responsable_id=' . Yii::app()->user->id); } return new CActiveDataProvider($this, array('criteria' => $criteria, 'sort' => array('defaultOrder' => 't.id DESC'))); }
public function searchActions($id = null) { // @todo Please modify the following code to remove attributes that should not be searched. $criteria = new CDbCriteria(); $criteria->with = array('client'); $id != null ? $criteria->addCondition('t.client_id=' . $id) : ''; $this->client_group_id != null && $this->client_group_id != 0 ? $criteria->addCondition('client.group_id=' . $this->client_group_id) : ''; $this->responsable_id != null && $this->responsable_id != 'all' && $this->responsable_id != 'no' ? $criteria->addCondition('t.responsable_id=' . $this->responsable_id) : ''; $this->responsable_id == 'no' ? $criteria->addCondition('t.responsable_id is null') : ''; $this->action_type_id != null && $this->action_type_id != 0 ? $criteria->addCondition('t.action_type_id=' . $this->action_type_id) : ''; $this->action_status_id != null && $this->action_status_id != 0 ? $criteria->addCondition('t.action_status_id=' . $this->action_status_id) : ''; $this->action_priority_id != null && $this->action_priority_id != 0 ? $criteria->addCondition('t.action_priority_id=' . $this->action_priority_id) : ''; $this->text != null ? $criteria->addCondition('t.text LIKE "%' . $this->text . '%"') : ''; $criteria->addCondition('t.company_id=' . Users::model()->findByPk(Yii::app()->user->id)->company_id); //хуйнуть поиск по интервалу дат if ($this->term) { $date_to_sql_req = strtotime(date('d.m.Y')); switch ($this->term) { case 4: $criteria->addCondition("t.action_status_id=1 AND " . $date_to_sql_req . ">UNIX_TIMESTAMP(t.action_date) AND DATE_FORMAT(CURRENT_TIMESTAMP(), '%d.%m.%Y')!=DATE_FORMAT(t.action_date,'%d.%m.%Y')"); break; case 1: $criteria->addCondition("DATE_FORMAT(CURRENT_TIMESTAMP(), '%d.%m.%Y')=DATE_FORMAT(t.action_date,'%d.%m.%Y')"); break; case 2: $criteria->addCondition("t.action_status_id!=2 AND " . $date_to_sql_req . "<=UNIX_TIMESTAMP(t.action_date) AND DATE_FORMAT(CURRENT_TIMESTAMP(), '%d.%m.%Y')!=DATE_FORMAT(t.action_date,'%d.%m.%Y')"); break; case 3: $criteria->addCondition("t.action_status_id=2 OR t.action_status_id=3"); break; } } // поиск в интервале дат $this->start_date != null ? $criteria->addCondition('UNIX_TIMESTAMP(t.action_date)>=' . strtotime($this->start_date)) : ''; $this->stop_date != null ? $criteria->addCondition('UNIX_TIMESTAMP(t.action_date)<=' . strtotime($this->stop_date . ':59')) : ''; // поиск по ролям $role = UsersRoles::model()->find('user_id=' . Yii::app()->user->id)->itemname; if ($role == 'director') { $users = new Users(); $users_ids = $users->takeDirectorUsers(Yii::app()->user->id); $criteria->addInCondition('t.responsable_id', $users_ids); } elseif ($role == 'manager') { $criteria->addCondition('t.responsable_id=' . Yii::app()->user->id); } return new CActiveDataProvider($this, array('criteria' => $criteria, 'sort' => array('defaultOrder' => 't.id DESC'))); }
border-bottom: 1px solid #d9d9d9; padding: 8px 11px; text-align:left; font-size: 11px; color: #222; line-height: 12px;'), 'value' => function ($data) { return CHtml::submitButton($data->first_name, array("class" => "button_to_link", 'onClick' => 'ActionEdit(' . $data->id . ',"user")')); }), array('name' => 'parent_id', 'header' => 'Тип пользователя', 'headerHtmlOptions' => array('class' => 'w8', 'style' => ' height: 12px; border-right: 1px solid #d9d9d9; border-bottom: 1px solid #d9d9d9; padding: 8px 11px; text-align:left; font-size: 11px; color: #222; line-height: 12px;'), 'value' => function ($data) { return UsersRoles::model()->find('user_id=' . $data->id)->itemname; }), array('name' => 'email', 'header' => 'Email', 'headerHtmlOptions' => array('class' => 'w7', 'style' => ' height: 12px; border-right: 1px solid #d9d9d9; border-bottom: 1px solid #d9d9d9; padding: 8px 11px; text-align:left; font-size: 11px; color: #222; line-height: 12px;')), array('name' => 'phone', 'header' => 'Телефон', 'headerHtmlOptions' => array('class' => 'w7', 'style' => ' height: 12px; border-right: 1px solid #d9d9d9; border-bottom: 1px solid #d9d9d9; padding: 8px 11px; text-align:left; font-size: 11px; color: #222; line-height: 12px;')), array('name' => 'status', 'header' => 'Статус', 'headerHtmlOptions' => array('class' => 'w8', 'style' => ' height: 12px;
border-bottom: 1px solid #d9d9d9; padding: 8px 11px; text-align:left; font-size: 11px; color: #222; line-height: 12px;'), 'value' => function ($data) { return '<span class="square ' . $data->dealPriority->color . '">square</span>' . CHtml::submitButton($data->text, array("class" => "button_to_link", 'onClick' => 'ActionEdit(' . $data->id . ',"deal", "dealings_page")')); }), array('name' => 'client_id', 'header' => 'Клиент', 'headerHtmlOptions' => array('class' => 'w56_5', 'style' => ' height: 12px; border-right: 1px solid #d9d9d9; border-bottom: 1px solid #d9d9d9; padding: 8px 11px; text-align:left; font-size: 11px; color: #222; line-height: 12px;'), 'type' => 'raw', 'value' => function ($data) { $role = UsersRoles::model()->find('user_id=' . Yii::app()->user->id)->itemname; $client_info = Clients::model()->findByPk($data->client_id); $responsible = Users::model()->findByPk($client_info->responsable_id); if ($client_info->responsable_id == Yii::app()->user->id || $responsible->parent_id == Yii::app()->user->id || $role == 'admin') { return CHtml::link($data->client->name, Yii::app()->createUrl("page/client_profile", array("id" => $data->client->id))); } else { return $data->client->name; } }), array('name' => 'paid', 'header' => 'Уплачено / Остаток', 'headerHtmlOptions' => array('class' => 'w57_5', 'style' => ' height: 12px; border-right: 1px solid #d9d9d9; border-bottom: 1px solid #d9d9d9; padding: 8px 11px; text-align:left; font-size: 11px; color: #222; line-height: 12px;'), 'type' => 'raw', 'value' => function ($data) {
$managers_array = Users::model()->with('roles')->findAll('company_id=' . $user->company_id . ' and status="active" and roles.name="manager" and parent_id=' . Yii::app()->user->id); } elseif ($role == 'manager') { unset($responsible_options['director'], $responsible_options['manager']); } else { unset($responsible_options['no']); } $directors_array = Users::model()->with('roles')->findAll('company_id=' . $user->company_id . ' and status="active" and roles.name="director"'); $managers_array = Users::model()->with('roles')->findAll('company_id=' . $user->company_id . ' and status="active" and roles.name="manager"'); if (count($directors_array) <= 0) { unset($responsible_options['director']); } if (count($managers_array) <= 0) { unset($responsible_options['manager']); } // выбор значения в селекторе $client_resp_role = UsersRoles::model()->find('user_id=' . $client->responsable_id); if ($client->responsable_id == Yii::app()->user->id) { $selected_option = array('i' => array('selected' => true)); } elseif ($client_resp_role->itemname == 'director') { $selected_option = array('director' => array('selected' => true)); } elseif ($client_resp_role->itemname == 'manager') { $selected_option = array('manager' => array('selected' => true)); } else { $selected_option = array('no' => array('selected' => true)); } $directors_block_to_display = $client_resp_role->itemname == 'director' ? 'style="display:block"' : ''; $managers_block_to_display = $client_resp_role->itemname == 'manager' ? 'style="display:block"' : ''; ?> <?php echo $form->dropDownList($client, 'responsable_id', $responsible_options, array('options' => $selected_option, 'class' => 'styled permis editable typeAccess', 'name' => 'type')); ?>
public function actionEdit_user($id) { $user = Users::model()->findByPk($id); $edit_user_role = UsersRoles::model()->find('user_id=' . $user->id); $role = UsersRoles::model()->find('user_id=' . Yii::app()->user->id)->itemname; if ($_POST['MainUsers']) { if (isset($_POST['ajax']) && $_POST['ajax'] == 'edit-user') { echo CActiveForm::validate($user); Yii::app()->end(); } $edit_user_role->itemname = $_POST['MainUsers']['role'] == 'edit_director' ? 'director' : 'manager'; $edit_user_role->update(); $user->attributes = $_POST['MainUsers']; if ($user->update()) { $this->redirect(array('user_info')); } } // работа с ролями $role_array = array('edit_director' => 'Руководитель', 'edit_manager' => 'Менеджер'); $directors_array = array(Yii::app()->user->id => 'Я руководитель'); if ($role == 'admin') { $directors = Users::model()->with('roles')->findAll('company_id=' . $user->company_id . ' and status="active" and roles.name="director"'); if (count($directors) > 0) { foreach ($directors as $director) { if ($user->id != $director->id) { $directors_array[$director->id] = $director->first_name; } } } } elseif ($role == 'director') { unset($role_array['edit_director']); } $form = $this->beginWidget('CActiveForm', array('id' => 'edit-user', 'enableAjaxValidation' => true, 'clientOptions' => array('validateOnSubmit' => true))); $delete_button = CHtml::button("Удалить", array('onClick' => 'window.location.href="' . Yii::app()->createUrl("page/delete_user", array("id" => $id)) . '"', 'class' => 'btn')); $change_password = CHtml::button("Изменить пароль", array('onClick' => 'window.location.href="' . Yii::app()->createUrl("page/edit_user_password", array("id" => $id)) . '"', 'class' => 'btn white1')); $directors_block_to_display = $edit_user_role->itemname == 'director' ? 'style="display:block"' : ''; $managers_block_to_display = $edit_user_role->itemname == 'manager' ? 'style="display:block"' : ''; $admin = new Users(); $admin_id = $admin->getAdminId(); $new_responsible = $user->parent_id != null ? $user->parent_id : $admin_id; echo '<div class="popup" id="popup-edit-user" style="display: block;"> <div class="popup__head"> <div class="title">Редактирование пользователя</div> </div> <div class="popup__form"> <div class="form-group"> <div class="help-dropdown"> <dl> <dt class="dt2"><i class="icon-help">help</i>Показать справку</dt> <dd class="dd2"> <ul> <li> <strong>Редактирование пользователя</strong> - изменение текущего пользователя. Здесь вы можете изменить контакты пользователя и его пароль (генерируется новый, отправится на указанный email). Также, Создатель компании может изменить тип пользователя или удалить его. <br>В случае удаления пользователя руководителем, менеджеры, закрепленные за данным пользователем, будут закреплены за Создателем компании. </li> </ul> </dd> </dl> </div> </div> <div class="client_info"> Информация о пользователе: </div> <div class="form-group"> ' . $form->textField($user, 'first_name', array('class' => 'form-control', 'placeholder' => 'Имя')) . $form->error($user, 'first_name', array('class' => 'form-error')) . ' <span class="star">*</span> </div> <div class="form-group"> ' . $form->textField($user, 'email', array('class' => 'form-control', 'placeholder' => 'E-mail')) . $form->error($user, 'email', array('class' => 'form-error')) . ' <span class="star">*</span> </div> <div class="form-group"> ' . $form->textField($user, 'phone', array('class' => 'form-control', 'placeholder' => 'Телефон')) . $form->error($user, 'phone', array('class' => 'form-error')) . ' </div> <div class="form-group"> <div class="client_info"> Тип пользователя: </div> <div class="form-group"> ' . $form->dropDownList($user, 'role', $role_array, array('options' => $edit_user_role->itemname == 'director' ? array('edit_director' => array('selected' => true)) : array('edit_manager' => array('selected' => true)), 'class' => 'styled editable typeAccess')) . ' </div> <div class="access-options access-tab" id="edit_director" ' . $directors_block_to_display . '> <div class="access-rights_note left"> Руководитель:<br> - может создавать новых клиентов, действия и сделки.<br> - может создавать новых менеджеров.<br> - видит своих клиентов, а также, клиентов своих менеджеров.<br> - может назначить менеджера ответственным за клиента, действием или сделкой.<br> - изменяет свою контактную информацию и своих менеджеров.<br> - не доступны настройки.<br> - создатель компании видит всю информацию по клиентам руководителя и его менеджеров. </div> </div> <div class="access-options access-tab" id="edit_manager" ' . $managers_block_to_display . '> <div class="form-group"> <div class="client_info"> Руководитель: </div> <div class="form-group"> ' . $form->dropDownList($user, 'parent_id', $directors_array, array('class' => 'styled editable')) . ' </div> <div class="access-rights_note left"> Менеджер:<br> - может создавать новых клиентов, действия и сделки.<br> - видит только своих клиентов.<br> - видит действия и сделки, если он ответственный по ним.<br> - не доступны настройки и изменение пароля.<br> - руководитель менеджера видит всю информацию по нему.<br> </div> </div> </div> <div class="form-group"> ' . CHtml::submitButton('Редактировать пользователя', array('class' => 'btn')) . ' </div> <div class="form-group"> ' . $change_password . ' </div> <div class="function-delete"> <a class="delete" href="#">Удалить пользователя</a> </div> <div class="function-delete-confirm"> <ul class="horizontal"> <li class="big">При удалении пользователя все его клиенты, действия и сделки будут закреплены за ' . Users::model()->findByPk($new_responsible)->first_name . '</li> <li><a class="delete" href="#">Отмена</a></li> <li>' . $delete_button . '</li> </ul> </div> </div> </div>' . $this->actionGetJSStyle('edit-user', '[{ "id": "MainUsers_first_name", "inputID": "MainUsers_first_name", "errorID": "MainUsers_first_name_em_", "model": "MainUsers", "name": "first_name", "enableAjaxValidation": true }, { "id": "MainUsers_email", "inputID": "MainUsers_email", "errorID": "MainUsers_email_em_", "model": "MainUsers", "name": "email", "enableAjaxValidation": true }, { "id": "MainUsers_phone", "inputID": "MainUsers_phone", "errorID": "MainUsers_phone_em_", "model": "MainUsers", "name": "phone", "enableAjaxValidation": true }]'); $this->endWidget(); }
public function getAdminId() { $company_users = Users::model()->findAll('company_id=' . Users::model()->findByPk(Yii::app()->user->id)->company_id); foreach ($company_users as $user) { $admin = UsersRoles::model()->find('user_id=' . $user->id); if ($admin->itemname == 'admin') { return $admin->user_id; } } }