Example #1
0
 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')));
 }
Example #2
0
 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')));
 }
Example #3
0
 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')));
 }
Example #4
0
                                    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();
    }
Example #8
0
 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;
         }
     }
 }