Example #1
0
 /**
  * Creates data provider instance with search query applied
  *
  * @param array $params
  *
  * @return ActiveDataProvider
  */
 public function search($params)
 {
     $query = States::find();
     $dataProvider = new ActiveDataProvider(['query' => $query]);
     $this->load($params);
     if (!$this->validate()) {
         // uncomment the following line if you do not want to return any records when validation fails
         // $query->where('0=1');
         return $dataProvider;
     }
     $query->andFilterWhere(['id' => $this->id]);
     $query->andFilterWhere(['like', 'name', $this->name]);
     return $dataProvider;
 }
Example #2
0
 /**
  * Updates an existing Devices model.
  * If update is successful, the browser will be redirected to the 'view' page.
  * @param integer $id
  * @return mixed
  */
 public function actionUpdate($id)
 {
     $model = $this->findModel($id);
     $listparent = Devices::find()->all();
     $listobject = Objects::find()->all();
     $listbrend = Brends::find()->all();
     $listinterface = Interfaces::find()->all();
     $liststate = States::find()->all();
     $listype = Types::find()->all();
     if ($model->load(Yii::$app->request->post()) && $model->save()) {
         return $this->redirect(['view', 'id' => $model->id]);
     } else {
         return $this->render('update', ['model' => $model, 'listparent' => $listparent, 'listobject' => $listobject, 'listbrend' => $listbrend, 'listinterface' => $listinterface, 'liststate' => $liststate, 'listype' => $listype]);
     }
 }
Example #3
0
 public function search($params)
 {
     $query = Tasks::find();
     //формируем провайдер
     $dataProvider = new ActiveDataProvider(['query' => $query]);
     //задание сортировки по умолчанию
     $dataProvider->sort->attributes = ['TASKS.ID' => ['asc' => ['TASKS.ID' => SORT_ASC], 'desc' => ['TASKS.ID' => SORT_DESC]]];
     $dataProvider->sort->defaultOrder = ['TASKS.ID' => SORT_DESC];
     //overdue issues filter
     if (isset($params['overdue']) && $params['overdue'] == 1) {
         $tasks = \app\models\Tasks::find()->all();
         $list = [];
         foreach ($tasks as $task) {
             $id = $task->ID;
             $persons = \app\models\PersTasks::find()->where(['TASK_ID' => $id, 'DEL_TRACT_ID' => 0])->all();
             if ($persons) {
                 $states_array = [];
                 foreach ($persons as $person) {
                     $pers_tasks = \app\models\PersTasks::find()->where(['TASK_ID' => $id, 'TN' => $person->TN, 'DEL_TRACT_ID' => 0])->one();
                     $task_state = \app\models\TaskStates::find()->where(['IS_CURRENT' => 1, 'PERS_TASKS_ID' => $pers_tasks->ID, 'TASK_ID' => $id])->one();
                     if ($task_state) {
                         $states_array[] = $task_state->STATE_ID;
                     } else {
                         $list[] = $id;
                     }
                 }
                 if (!empty($states_array)) {
                     $min_state = min($states_array);
                     $state = \app\models\States::findOne($min_state);
                 }
             }
             if (isset($state)) {
                 if ($state->ID != 7 || $state->ID != 9) {
                     $list[] = $id;
                 }
             }
         }
         $list = array_unique($list);
         $query->andFilterWhere(['TASKS.ID' => $list]);
         $now = date("Y-m-d");
         $query->andFilterWhere(['<', 'TASKS.DEADLINE', new \yii\db\Expression("to_date('" . $now . "','{$this->dateFormat}')")]);
         $query->joinWith('perstasks');
         $query->andFilterWhere(['PERS_TASKS.TN' => \Yii::$app->user->id]);
     }
     //own issues filter
     if (isset($params['own_issues']) && $params['own_issues'] == 1) {
         $query->joinWith('perstasks');
         $query->andFilterWhere(['PERS_TASKS.TN' => \Yii::$app->user->id]);
     }
     if (isset($params['for_person']) && $params['for_person'] != '') {
         $query->joinWith('perstasks');
         $query->andFilterWhere(['PERS_TASKS.TN' => $params['for_person']]);
     }
     if (isset($params['for_podr']) && $params['for_podr'] != '') {
         $query->joinWith('podrtasks');
         $query->andFilterWhere(['PODR_TASKS.KODZIFR' => $params['for_podr']]);
     }
     //podr issues filter
     if (isset($params['podr_issues']) && $params['podr_issues'] == 1) {
         //check permission
         $permissions_podr_tasks_my = \app\models\Permissions::find()->where('(SUBJECT_TYPE = :subject_type and SUBJECT_ID = :user_id and DEL_TRACT_ID = :del_tract and PERM_LEVEL != :perm_level and ACTION_ID = :action) or
             (SUBJECT_TYPE = :subject_type_dolg and SUBJECT_ID = :id_dolg and DEL_TRACT_ID = :del_tract and PERM_LEVEL != :perm_level and ACTION_ID = :action)', ['subject_type_dolg' => 1, 'id_dolg' => \Yii::$app->session->get('user.user_iddolg'), 'action' => 21, 'subject_type' => 2, 'user_id' => \Yii::$app->user->id, 'del_tract' => 0, 'perm_level' => 0])->one();
         if ($permissions_podr_tasks_my) {
             if ($permissions_podr_tasks_my->PERM_LEVEL == 1 || $permissions_podr_tasks_my->PERM_LEVEL == 2) {
                 //get podr id of this user
                 $query_dao = new \yii\db\Query();
                 $query_dao->select('*')->from('STIGIT.V_F_PERS')->where('TN = \'' . \Yii::$app->user->id . '\'');
                 $command = $query_dao->createCommand();
                 $data = $command->queryOne();
                 //вот тут решить что означает выданные моему подразделению
                 $query->joinWith('podrtasks');
                 $query->andFilterWhere(['PODR_TASKS.KODZIFR' => trim($data['KODZIFR'])]);
             } else {
                 throw new \yii\web\ForbiddenHttpException('У Вас нет прав на "Выданные любым задания"');
             }
         } else {
             throw new \yii\web\ForbiddenHttpException('У Вас нет прав на "Выданные любым задания"');
         }
     }
     //tasks my filter
     if (isset($params['tasks_my']) && $params['tasks_my'] == 1) {
         //check permission
         $permissions_podr_tasks_my = \app\models\Permissions::find()->where('(SUBJECT_TYPE = :subject_type and SUBJECT_ID = :user_id and DEL_TRACT_ID = :del_tract and PERM_LEVEL != :perm_level and ACTION_ID = :action) or
         (SUBJECT_TYPE = :subject_type_dolg and SUBJECT_ID = :id_dolg and DEL_TRACT_ID = :del_tract and PERM_LEVEL != :perm_level and ACTION_ID = :action)', ['subject_type_dolg' => 1, 'id_dolg' => \Yii::$app->session->get('user.user_iddolg'), 'action' => 23, 'subject_type' => 2, 'user_id' => \Yii::$app->user->id, 'del_tract' => 0, 'perm_level' => 0])->one();
         if ($permissions_podr_tasks_my) {
             if ($permissions_podr_tasks_my->PERM_LEVEL == 1 || $permissions_podr_tasks_my->PERM_LEVEL == 2) {
                 //get all current user transactions
                 $transactions = \app\models\Transactions::find()->where(['TN' => \Yii::$app->user->id])->all();
                 if ($transactions) {
                     $transactions_array = [];
                     foreach ($transactions as $transaction) {
                         $transactions_array[] = $transaction->ID;
                     }
                     $query->andFilterWhere(['TRACT_ID' => $transactions_array]);
                 }
             } else {
                 throw new \yii\web\ForbiddenHttpException('У Вас нет прав на "Выданные лично задания"');
             }
         } else {
             throw new \yii\web\ForbiddenHttpException('У Вас нет прав на "Выданные лично задания"');
         }
     }
     if (!($this->load($params) && $this->validate())) {
         return $dataProvider;
     }
     //проверяем существует ли фильтр и добавляем его в запрос провайдера для каждого из полей фильтра
     if (!empty($this->states)) {
         $query->joinWith('taskstates');
         $query->andFilterWhere(['TASK_STATES.STATE_ID' => $this->states]);
     }
     if (!empty($this->podr_list)) {
         $podr_list = array_map('trim', explode(',', $this->podr_list));
         $query->joinWith('podrtasks');
         $query->andFilterWhere(['PODR_TASKS.KODZIFR' => $podr_list]);
     }
     if (!empty($this->agreed_podr_list)) {
         $agreed_podr_list = array_map('trim', explode(',', $this->agreed_podr_list));
         $query->joinWith('taskconfirms');
         $query->andFilterWhere(['TASK_CONFIRMS.KODZIFR' => $agreed_podr_list]);
     }
     if (!empty($this->persons_list)) {
         $persons_list = array_map('trim', explode(',', $this->persons_list));
         $query->joinWith('perstasks');
         $query->andFilterWhere(['PERS_TASKS.TN' => $persons_list]);
     }
     if (!empty($this->documentation)) {
         $query->joinWith('taskdocs');
         $query->andFilterWhere(['TASK_DOCS.DOC_CODE' => $this->documentation]);
     }
     if ($this->deadline_from != '' && $this->deadline_to != '') {
         $deadline_from = explode('-', $this->deadline_from);
         $deadline_from_formatted = $deadline_from[2] . '-' . $deadline_from[1] . '-' . $deadline_from[0];
         $deadline_to = explode('-', $this->deadline_to);
         $deadline_to_formatted = $deadline_to[2] . '-' . $deadline_to[1] . '-' . $deadline_to[0];
         $query->andFilterWhere(['>=', 'DEADLINE', new \yii\db\Expression("to_date('" . $deadline_from_formatted . "','{$this->dateFormat}')")])->andFilterWhere(['<=', 'DEADLINE', new \yii\db\Expression("to_date('" . $deadline_to_formatted . "','{$this->dateFormat}')")]);
     } else {
         if ($this->deadline_from != '' && $this->deadline_to == '') {
             $deadline_from = explode('-', $this->deadline_from);
             $deadline_from_formatted = $deadline_from[2] . '-' . $deadline_from[1] . '-' . $deadline_from[0];
             $query->andFilterWhere(['>=', 'DEADLINE', new \yii\db\Expression("to_date('" . $deadline_from_formatted . "','{$this->dateFormat}')")]);
         } else {
             if ($this->deadline_from == '' && $this->deadline_to != '') {
                 $deadline_to = explode('-', $this->deadline_to);
                 $deadline_to_formatted = $deadline_to[2] . '-' . $deadline_to[1] . '-' . $deadline_to[0];
                 $query->andFilterWhere(['<=', 'DEADLINE', new \yii\db\Expression("to_date('" . $deadline_to_formatted . "','{$this->dateFormat}')")]);
             }
         }
     }
     if ($this->task_type_date_3_from != '' && $this->task_type_date_3_to != '') {
         $query->joinWith('datetype3');
         $task_type_date_3_from = explode('-', $this->task_type_date_3_from);
         $task_type_date_3_from_formatted = $task_type_date_3_from[2] . '-' . $task_type_date_3_from[1] . '-' . $task_type_date_3_from[0];
         $task_type_date_3_to = explode('-', $this->task_type_date_3_to);
         $task_type_date_3_to_formatted = $task_type_date_3_to[2] . '-' . $task_type_date_3_to[1] . '-' . $task_type_date_3_to[0];
         $query->andFilterWhere(['>=', 'TASK_DATES.TASK_TYPE_DATE', new \yii\db\Expression("to_date('" . $task_type_date_3_from_formatted . "','{$this->dateFormat}')")])->andFilterWhere(['<=', 'TASK_DATES.TASK_TYPE_DATE', new \yii\db\Expression("to_date('" . $task_type_date_3_to_formatted . "','{$this->dateFormat}')")]);
     } else {
         if ($this->task_type_date_3_from != '' && $this->task_type_date_3_to == '') {
             $query->joinWith('datetype3');
             $task_type_date_3_from = explode('-', $this->task_type_date_3_from);
             $task_type_date_3_from_formatted = $task_type_date_3_from[2] . '-' . $task_type_date_3_from[1] . '-' . $task_type_date_3_from[0];
             $query->andFilterWhere(['>=', 'TASK_DATES.TASK_TYPE_DATE', new \yii\db\Expression("to_date('" . $task_type_date_3_from_formatted . "','{$this->dateFormat}')")]);
         } else {
             if ($this->task_type_date_3_from == '' && $this->task_type_date_3_to != '') {
                 $query->joinWith('datetype3');
                 $task_type_date_3_to = explode('-', $this->task_type_date_3_to);
                 $task_type_date_3_to_formatted = $task_type_date_3_to[2] . '-' . $task_type_date_3_to[1] . '-' . $task_type_date_3_to[0];
                 $query->andFilterWhere(['<=', 'TASK_DATES.TASK_TYPE_DATE', new \yii\db\Expression("to_date('" . $task_type_date_3_to_formatted . "','{$this->dateFormat}')")]);
             }
         }
     }
     if ($this->task_type_date_1_from != '' && $this->task_type_date_1_to != '') {
         $query->joinWith('datetype1');
         $task_type_date_1_from = explode('-', $this->task_type_date_1_from);
         $task_type_date_1_from_formatted = $task_type_date_1_from[2] . '-' . $task_type_date_1_from[1] . '-' . $task_type_date_1_from[0];
         $task_type_date_1_to = explode('-', $this->task_type_date_1_to);
         $task_type_date_1_to_formatted = $task_type_date_1_to[2] . '-' . $task_type_date_1_to[1] . '-' . $task_type_date_1_to[0];
         $query->andFilterWhere(['>=', 'TASK_DATES.TASK_TYPE_DATE', new \yii\db\Expression("to_date('" . $task_type_date_1_from_formatted . "','{$this->dateFormat}')")])->andFilterWhere(['<=', 'TASK_DATES.TASK_TYPE_DATE', new \yii\db\Expression("to_date('" . $task_type_date_1_to_formatted . "','{$this->dateFormat}')")]);
     } else {
         if ($this->task_type_date_1_from != '' && $this->task_type_date_1_to == '') {
             $query->joinWith('datetype1');
             $task_type_date_1_from = explode('-', $this->task_type_date_1_from);
             $task_type_date_1_from_formatted = $task_type_date_1_from[2] . '-' . $task_type_date_1_from[1] . '-' . $task_type_date_1_from[0];
             $query->andFilterWhere(['>=', 'TASK_DATES.TASK_TYPE_DATE', new \yii\db\Expression("to_date('" . $task_type_date_1_from_formatted . "','{$this->dateFormat}')")]);
         } else {
             if ($this->task_type_date_1_from == '' && $this->task_type_date_1_to != '') {
                 $query->joinWith('datetype1');
                 $task_type_date_1_to = explode('-', $this->task_type_date_1_to);
                 $task_type_date_1_to_formatted = $task_type_date_1_to[2] . '-' . $task_type_date_1_to[1] . '-' . $task_type_date_1_to[0];
                 $query->andFilterWhere(['<=', 'TASK_DATES.TASK_TYPE_DATE', new \yii\db\Expression("to_date('" . $task_type_date_1_to_formatted . "','{$this->dateFormat}')")]);
             }
         }
     }
     if ($this->task_type_date_4_from != '' && $this->task_type_date_4_to != '') {
         $query->joinWith('datetype4');
         $task_type_date_4_from = explode('-', $this->task_type_date_4_from);
         $task_type_date_4_from_formatted = $task_type_date_4_from[2] . '-' . $task_type_date_4_from[1] . '-' . $task_type_date_4_from[0];
         $task_type_date_4_to = explode('-', $this->task_type_date_4_to);
         $task_type_date_4_to_formatted = $task_type_date_4_to[2] . '-' . $task_type_date_4_to[1] . '-' . $task_type_date_4_to[0];
         $query->andFilterWhere(['>=', 'TASK_DATES.TASK_TYPE_DATE', new \yii\db\Expression("to_date('" . $task_type_date_4_from_formatted . "','{$this->dateFormat}')")])->andFilterWhere(['<=', 'TASK_DATES.TASK_TYPE_DATE', new \yii\db\Expression("to_date('" . $task_type_date_4_to_formatted . "','{$this->dateFormat}')")]);
     } else {
         if ($this->task_type_date_4_from != '' && $this->task_type_date_4_to == '') {
             $query->joinWith('datetype4');
             $task_type_date_4_from = explode('-', $this->task_type_date_4_from);
             $task_type_date_4_from_formatted = $task_type_date_4_from[2] . '-' . $task_type_date_4_from[1] . '-' . $task_type_date_4_from[0];
             $query->andFilterWhere(['>=', 'TASK_DATES.TASK_TYPE_DATE', new \yii\db\Expression("to_date('" . $task_type_date_4_from_formatted . "','{$this->dateFormat}')")]);
         } else {
             if ($this->task_type_date_4_from == '' && $this->task_type_date_4_to != '') {
                 $query->joinWith('datetype4');
                 $task_type_date_4_to = explode('-', $this->task_type_date_4_to);
                 $task_type_date_4_to_formatted = $task_type_date_4_to[2] . '-' . $task_type_date_4_to[1] . '-' . $task_type_date_4_to[0];
                 $query->andFilterWhere(['<=', 'TASK_DATES.TASK_TYPE_DATE', new \yii\db\Expression("to_date('" . $task_type_date_4_to_formatted . "','{$this->dateFormat}')")]);
             }
         }
     }
     if ($this->task_type_date_2_from != '' && $this->task_type_date_2_to != '') {
         $query->joinWith('datetype2');
         $task_type_date_2_from = explode('-', $this->task_type_date_2_from);
         $task_type_date_2_from_formatted = $task_type_date_2_from[2] . '-' . $task_type_date_2_from[1] . '-' . $task_type_date_2_from[0];
         $task_type_date_2_to = explode('-', $this->task_type_date_2_to);
         $task_type_date_2_to_formatted = $task_type_date_2_to[2] . '-' . $task_type_date_2_to[1] . '-' . $task_type_date_2_to[0];
         $query->andFilterWhere(['>=', 'TASK_DATES.TASK_TYPE_DATE', new \yii\db\Expression("to_date('" . $task_type_date_2_from_formatted . "','{$this->dateFormat}')")])->andFilterWhere(['<=', 'TASK_DATES.TASK_TYPE_DATE', new \yii\db\Expression("to_date('" . $task_type_date_2_to_formatted . "','{$this->dateFormat}')")]);
     } else {
         if ($this->task_type_date_2_from != '' && $this->task_type_date_2_to == '') {
             $query->joinWith('datetype2');
             $task_type_date_2_from = explode('-', $this->task_type_date_2_from);
             $task_type_date_2_from_formatted = $task_type_date_2_from[2] . '-' . $task_type_date_2_from[1] . '-' . $task_type_date_2_from[0];
             $query->andFilterWhere(['>=', 'TASK_DATES.TASK_TYPE_DATE', new \yii\db\Expression("to_date('" . $task_type_date_2_from_formatted . "','{$this->dateFormat}')")]);
         } else {
             if ($this->task_type_date_2_from == '' && $this->task_type_date_2_to != '') {
                 $query->joinWith('datetype2');
                 $task_type_date_2_to = explode('-', $this->task_type_date_2_to);
                 $task_type_date_2_to_formatted = $task_type_date_2_to[2] . '-' . $task_type_date_2_to[1] . '-' . $task_type_date_2_to[0];
                 $query->andFilterWhere(['<=', 'TASK_DATES.TASK_TYPE_DATE', new \yii\db\Expression("to_date('" . $task_type_date_2_to_formatted . "','{$this->dateFormat}')")]);
             }
         }
     }
     $query->andFilterWhere(['like', 'SOURCENUM', $this->SOURCENUM]);
     $query->andFilterWhere(['like', 'TASK_TEXT', $this->TASK_TEXT]);
     $query->andFilterWhere(['or like', 'PEOORDERNUM', $this->PEOORDERNUM]);
     $query->andFilterWhere(['or like', 'ORDERNUM', $this->ORDERNUM]);
     $query->andFilterWhere(['like', 'TASK_NUMBER', $this->TASK_NUMBER]);
     $query->andFilterWhere(['like', 'LOWER(DESIGNATION)', mb_strtolower($this->DESIGNATION, 'UTF-8')]);
     return $dataProvider;
 }
Example #4
0
 public function actionGetpersons()
 {
     if (Yii::$app->request->isAjax) {
         //проверка на асинхронный запрос
         $post_data = $_POST['selected_podr'];
         \Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
         // устанавливаем ответ сервера в виде JSON объекта
         $persons_list = '<ul>';
         foreach (json_decode($post_data) as $kodzifr => $value) {
             // обходим список полученных подразделений
             $query = new \yii\db\Query();
             $query->select('NAIMPODR AS name, VIDPODR as vid, KODPODR AS id, KODRODIT as parent, KODZIFR as code')->from('STIGIT.V_F_PODR')->where('KODZIFR = \'' . $kodzifr . '\'');
             $command = $query->createCommand();
             $data = $command->queryOne();
             //формирование списка
             $persons_list .= "<li class=\"expanded\"><span style=\"font-weight: normal; font-size: 12px;\">" . $data['vid'] . " " . $data['code'] . ". " . $data['name'] . "</span>";
             $query = new \yii\db\Query();
             $query->select('*')->from('STIGIT.V_F_PERS')->where('KODZIFR = \'' . $kodzifr . '\'');
             $command = $query->createCommand();
             $data = $command->queryAll();
             $persons_list .= '<ul>';
             foreach ($data as $key => $value) {
                 // обходим список сотрудников каждого подразделения
                 //получаем кол-во заданий для каждого исполнителя
                 $pers_tasks = \app\models\PersTasks::find()->where(['TN' => $value['TN'], 'DEL_TRACT_ID' => 0])->all();
                 if ($pers_tasks) {
                     $tasks_array = [];
                     foreach ($pers_tasks as $task) {
                         $tasks_array[] = $task->TASK_ID;
                     }
                     $tasks = \app\models\Tasks::find()->where(['in', 'ID', $tasks_array])->all();
                     $list = [];
                     foreach ($tasks as $task) {
                         $id = $task->ID;
                         $persons = \app\models\PersTasks::find()->where(['TASK_ID' => $id, 'DEL_TRACT_ID' => 0])->all();
                         if ($persons) {
                             $states_array = [];
                             foreach ($persons as $person) {
                                 $pers_tasks = \app\models\PersTasks::find()->where(['TASK_ID' => $id, 'TN' => $person->TN, 'DEL_TRACT_ID' => 0])->one();
                                 $task_state = \app\models\TaskStates::find()->where(['IS_CURRENT' => 1, 'PERS_TASKS_ID' => $pers_tasks->ID, 'TASK_ID' => $id])->one();
                                 if ($task_state) {
                                     $states_array[] = $task_state->STATE_ID;
                                 } else {
                                     $list[] = $id;
                                 }
                             }
                             if (!empty($states_array)) {
                                 $min_state = min($states_array);
                                 $state = \app\models\States::findOne($min_state);
                             }
                         }
                         if (isset($state)) {
                             if ($state->ID != 7 || $state->ID != 9) {
                                 $list[] = $id;
                             }
                         }
                     }
                     $list = array_unique($list);
                     $counter = count($list);
                     $counter = ' <span class="label label-info"><a target="_blank" href="' . \yii\helpers\Url::to(['/site/index', 'for_person' => $value['TN']]) . '">Заданий в работе: ' . $counter . '</a></span>';
                 } else {
                     $counter = '';
                 }
                 $persons_list .= "<li><input id=\"checkbox_" . $value['TN'] . "\" type='checkbox' name=\"persons_check[]\" data-title=\"" . $value['FIO'] . "\" value=\"" . $value['TN'] . "\" /> <span style=\"font-size: 11px;\">" . $value['FAM'] . " " . $value['IMJ'] . " " . $value['OTCH'] . " " . $counter . "</span></li>";
             }
             $persons_list .= '</ul>';
         }
         $persons_list .= '</ul>';
         return $persons_list;
     }
 }
 public static function takeState()
 {
     return \App\Models\States::all();
 }
 public function actionGetissuedata()
 {
     //проверка на ajax запрос
     if (Yii::$app->request->isAjax) {
         $issue_id = $_POST['id'];
         //устанавливаем формат ответа JSON
         \Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
         $issue = \app\models\Tasks::findOne($issue_id);
         //получаем текущий статус для пользователя сделавшего запрос
         $pers_tasks_this = \app\models\PersTasks::find()->where(['TASK_ID' => $issue->ID, 'TN' => \Yii::$app->user->id, 'DEL_TRACT_ID' => 0])->one();
         if ($pers_tasks_this) {
             //проверяем имеет ли доступ в текущем статусе
             $task_state = \app\models\TaskStates::find()->where(['PERS_TASKS_ID' => $pers_tasks_this->ID, 'IS_CURRENT' => 1])->one();
             if ($task_state) {
                 //проверяем существует ли статус для задания, либо оно только добавлено
                 $check_permissions_for_status = \app\models\Permissions::find()->where('(SUBJECT_TYPE = :subject_type and SUBJECT_ID = :user_id and DEL_TRACT_ID = :del_tract and PERM_LEVEL != :perm_level and ACTION_ID = :action and PERM_TYPE = :perm_type) or
                     (SUBJECT_TYPE = :subject_type_dolg and SUBJECT_ID = :id_dolg and DEL_TRACT_ID = :del_tract and PERM_LEVEL != :perm_level and ACTION_ID = :action and PERM_TYPE = :perm_type)', ['subject_type_dolg' => 1, 'id_dolg' => \Yii::$app->session->get('user.user_iddolg'), 'perm_type' => 2, 'subject_type' => 2, 'user_id' => \Yii::$app->user->id, 'del_tract' => 0, 'perm_level' => 0, 'action' => $task_state->STATE_ID])->one();
             } else {
                 $check_permissions_for_status = true;
             }
             //проверяем имеет ли пользователь доступ к форме редактирования задания
             $permissions_for_read_and_write = \app\models\Permissions::find()->where('(SUBJECT_TYPE = :subject_type and SUBJECT_ID = :user_id and ACTION_ID = :action and DEL_TRACT_ID = :del_tract and PERM_LEVEL != :perm_level and PERM_TYPE = :perm_type)  or 
                                                                                         (SUBJECT_TYPE = :subject_type_dolg and SUBJECT_ID = :dolg_id and ACTION_ID = :action and DEL_TRACT_ID = :del_tract and PERM_LEVEL != :perm_level and PERM_TYPE = :perm_type)', ['subject_type_dolg' => 1, 'dolg_id' => \Yii::$app->session->get('user.user_iddolg'), 'perm_type' => 1, 'subject_type' => 2, 'user_id' => \Yii::$app->user->id, 'del_tract' => 0, 'perm_level' => 0, 'action' => 3])->one();
             if ($permissions_for_read_and_write && $check_permissions_for_status) {
                 // проверяем доступны ли пользователю права на просмотр и редактирование задания
                 //переменная для проверки входит ли текщий пользователь в подразделения, назначенные в задании
                 $user_have_permission = 0;
                 //получаем список подразделений задания
                 $podr_tasks = \app\models\PodrTasks::find()->where(['TASK_ID' => $issue->ID, 'DEL_TRACT_ID' => 0])->all();
                 if ($podr_tasks) {
                     // если существуют подразделения, то формируем их список
                     $podr_list = '';
                     $podr_list_kodzifr_array = [];
                     foreach ($podr_tasks as $task) {
                         //обходим список подразделений
                         $query = new \yii\db\Query();
                         $query->select('*')->from('STIGIT.V_F_PODR')->where('KODZIFR = \'' . trim($task->KODZIFR) . '\'');
                         $command = $query->createCommand();
                         $data = $command->queryOne();
                         if (isset($data['NAIMPODR'])) {
                             // проверяем на существование названия подразделения (на момент разработки не для всех были названия)
                             $podr_list .= $data['NAIMPODR'] . "<br>";
                             $podr_list_kodzifr_array[] = $data['KODZIFR'];
                         }
                     }
                 }
                 //получаем список подразделений для поля "Согласовано"
                 $tasks_confirms = \app\models\TaskConfirms::find()->where(['TASK_ID' => $issue->ID, 'DEL_TRACT_ID' => 0])->all();
                 if ($tasks_confirms) {
                     // если существуют подразделения, то формируем их список
                     $task_confirms_list = '';
                     foreach ($tasks_confirms as $task) {
                         $query = new \yii\db\Query();
                         $query->select('*')->from('STIGIT.V_F_PODR')->where('KODZIFR = \'' . trim($task->KODZIFR) . '\'');
                         $command = $query->createCommand();
                         $data = $command->queryOne();
                         if (isset($data['NAIMPODR'])) {
                             // проверяем на существование названия подразделения (на момент разработки не для всех были названия)
                             $task_confirms_list .= $data['NAIMPODR'] . "<br>";
                         }
                     }
                 } else {
                     // иначе устанавливаем значение из константы
                     $task_confirms_list = self::_UNDEFINED;
                 }
                 //получаем список подразделений для поля "Передано в"
                 $tasks_docs_recvrs = \app\models\TaskDocsRecvrs::find()->where(['TASK_ID' => $issue->ID, 'DEL_TRACT_ID' => 0])->all();
                 if ($tasks_docs_recvrs) {
                     // если существуют подразделения, то формируем их список
                     $task_docs_recvrs_list = '';
                     foreach ($tasks_docs_recvrs as $task) {
                         $query = new \yii\db\Query();
                         $query->select('*')->from('STIGIT.V_F_PODR')->where('KODZIFR = \'' . trim($task->KODZIFR) . '\'');
                         $command = $query->createCommand();
                         $data = $command->queryOne();
                         if (isset($data['NAIMPODR'])) {
                             $task_docs_recvrs_list .= $data['NAIMPODR'] . "<br>";
                         }
                     }
                 } else {
                     // иначе устанавливаем значение из константы
                     $task_docs_recvrs_list = self::_UNDEFINED;
                 }
                 //получаем список пользователей, кому назначено задание
                 $pers_tasks = \app\models\PersTasks::find()->where(['TASK_ID' => $issue->ID, 'DEL_TRACT_ID' => 0])->all();
                 $pers_list = '';
                 if ($pers_tasks) {
                     // если существуют исполнители, то формируем их список
                     $persons_array = [];
                     foreach ($pers_tasks as $task) {
                         $query = new \yii\db\Query();
                         $query->select('*')->from('STIGIT.V_F_PERS')->where('TN = \'' . $task->TN . '\'');
                         $command = $query->createCommand();
                         $data = $command->queryOne();
                         $pers_list .= $data['FIO'] . "<br>";
                         $persons_array[] = $data['TN'];
                     }
                 } else {
                     // иначе устанавливаем значение из константы
                     $pers_list = self::_UNDEFINED;
                     $persons_array = [];
                 }
                 $transactions = \app\models\Transactions::find()->where(['TN' => \Yii::$app->user->id])->orderBy('ID DESC')->one();
                 if (in_array(\Yii::$app->user->id, $persons_array)) {
                     //save date for person if his owner this issue - формируем дату поступления в группу, если задание открыто первый раз
                     //check if window opened first time for date
                     $old_task_date_1 = \app\models\TaskDates::find()->where(['TASK_ID' => $issue_id, 'DEL_TRACT_ID' => 0, 'DATE_TYPE_ID' => 1])->one();
                     if (!$old_task_date_1) {
                         // если задание открывается первый раз пишем дату
                         $task_date_1 = new \app\models\TaskDates();
                         $task_date_1->TASK_TYPE_DATE = new \yii\db\Expression("to_date('" . date("Y-m-d H:i:s") . "','{$this->dateFormat}')");
                         $task_date_1->TASK_ID = $issue_id;
                         $task_date_1->DATE_TYPE_ID = 1;
                         $task_date_1->TRACT_ID = $transactions->ID;
                         $task_date_1->save();
                     }
                     //get pers_task_id for current user and issue
                     $pers_tasks = \app\models\PersTasks::find()->where(['TASK_ID' => $issue->ID, 'TN' => \Yii::$app->user->id, 'DEL_TRACT_ID' => 0])->one();
                     $task_states_user = \app\models\TaskStates::find()->where(['PERS_TASKS_ID' => $pers_tasks->ID])->one();
                     if (!$task_states_user) {
                         // если задание открывается первый раз - устанавливаем статус "Принято"
                         //set state for this person
                         $task_states = new \app\models\TaskStates();
                         $task_states->TASK_ID = $issue_id;
                         $task_states->STATE_ID = 1;
                         $task_states->TRACT_ID = $transactions->ID;
                         $task_states->IS_CURRENT = 1;
                         if ($pers_tasks->ID) {
                             // устанавливаем pers_tasks id
                             $task_states->PERS_TASKS_ID = $pers_tasks->ID;
                         }
                         $task_states->save();
                     }
                     $user_have_permission = 1;
                 }
                 //проверяем входит ли пользователь в список подразделений задания
                 if (empty($persons_array)) {
                     $ids = join(',', $podr_list_kodzifr_array);
                     $query = new \yii\db\Query();
                     $query->select('*')->from('STIGIT.V_F_PERS')->where('TN = \'' . \Yii::$app->user->id . '\' and KODZIFR in (' . $ids . ')');
                     $command = $query->createCommand();
                     $data = $command->queryAll();
                     if (!empty($data)) {
                         // проверяем вхождение пользователя в список исполнителей подразделений задания
                         $user_have_permission = 1;
                         // текущий пользователь входит в подразделения, указанные в задании
                     } else {
                         $user_have_permission = 0;
                         // текущий пользователь НЕ входит в подразделения, указанные в задании
                     }
                 }
                 //получаем дату поступления в группу
                 $old_task_date_2 = \app\models\TaskDates::find()->where(['TASK_ID' => $issue_id, 'DEL_TRACT_ID' => 0, 'DATE_TYPE_ID' => 2])->one();
                 if (!$old_task_date_2) {
                     // если нет даты - устанавливаем ее
                     $transactions_for_date = \app\models\Transactions::findOne($issue->TRACT_ID);
                     $group_date = \Yii::$app->formatter->asDate($transactions_for_date->TRACT_DATETIME, 'php:Y-m-d');
                     $group_date_for_table = \Yii::$app->formatter->asDate($transactions_for_date->TRACT_DATETIME, 'php:d-m-Y');
                     $task_date_2 = new \app\models\TaskDates();
                     $task_date_2->TASK_TYPE_DATE = new \yii\db\Expression("to_date('" . $group_date . "','{$this->dateFormat}')");
                     $task_date_2->TASK_ID = $issue_id;
                     $task_date_2->DATE_TYPE_ID = 2;
                     $task_date_2->TRACT_ID = $transactions->ID;
                     $task_date_2->save();
                 } else {
                     // иначе полученную дату форматируем под требуемый для вывода формат
                     $group_date_for_table = \Yii::$app->formatter->asDate($old_task_date_2->TASK_TYPE_DATE, 'php:d-m-Y');
                 }
                 //формируем поля по заданию
                 if (!empty($issue->SOURCENUM)) {
                     // если переменная SOURCENUM содержит значение
                     $sourcenum = $issue->SOURCENUM;
                 } else {
                     // иначе устанавливаем значение константы
                     $sourcenum = self::_UNDEFINED;
                 }
                 if (!empty($issue->ADDITIONAL_TEXT)) {
                     // если переменная ADDITIONAL_TEXT содержит значение
                     $additional_text = $issue->ADDITIONAL_TEXT;
                 } else {
                     // иначе устанавливаем значение константы
                     $additional_text = self::_UNDEFINED;
                 }
                 if (!empty($issue->REPORT_TEXT)) {
                     // если переменная REPORT_TEXT содержит значение
                     $report_text = $issue->REPORT_TEXT;
                 } else {
                     // иначе устанавливаем значение константы
                     $report_text = self::_UNDEFINED;
                 }
                 $task_date_first_time = \app\models\TaskDates::find()->where(['DATE_TYPE_ID' => '1', 'TASK_ID' => $issue_id, 'DEL_TRACT_ID' => 0])->one();
                 if ($task_date_first_time) {
                     // проверяем сущетсвует ли дата открытия задания
                     $first_date = \Yii::$app->formatter->asDate($task_date_first_time->TASK_TYPE_DATE, 'php:d-m-Y');
                 } else {
                     // иначе устанавливаем значение константы
                     $first_date = self::_UNDEFINED;
                 }
                 $task_date_closed = \app\models\TaskDates::find()->where(['DATE_TYPE_ID' => '4', 'TASK_ID' => $issue_id, 'DEL_TRACT_ID' => 0])->one();
                 if ($task_date_closed) {
                     // проверяем существует ли дата завершения
                     $closed_date = \Yii::$app->formatter->asDate($task_date_closed->TASK_TYPE_DATE, 'php:d-m-Y');
                 } else {
                     // иначе устанавливаем значение константы
                     $closed_date = self::_UNDEFINED;
                 }
                 $task_sector_date = \app\models\TaskDates::find()->where(['DATE_TYPE_ID' => '3', 'TASK_ID' => $issue_id, 'DEL_TRACT_ID' => 0])->one();
                 if ($task_sector_date) {
                     // проверяем дату поступления в сектор
                     $sektor_date = \Yii::$app->formatter->asDate($task_sector_date->TASK_TYPE_DATE, 'php:d-m-Y');
                 } else {
                     // иначе устанавливаем значение константы
                     $sektor_date = self::_UNDEFINED;
                 }
                 $transactions = \app\models\Transactions::findOne($issue->TRACT_ID);
                 $task_docs = \app\models\TaskDocs::find()->where(['TASK_ID' => $issue_id, 'DEL_TRACT_ID' => 0])->all();
                 if ($task_docs) {
                     // в случае если сущетсвуют привязанные документы к заданию
                     $task_docs_list = '';
                     foreach ($task_docs as $doc) {
                         // формируем список документации
                         $task_docs_list .= '<a target="_blank" href="/storage/' . $doc->DOC_CODE . '">' . $doc->DOC_CODE . '</a><br>';
                     }
                 } else {
                     // иначе устанавливаем значение константы
                     $task_docs_list = self::_UNDEFINED;
                 }
                 $task_state = $issue->_getLastTaskStatusWithText($issue->ID);
                 if ($task_state != '') {
                     // если сущетсвует текущий статус задания
                     $task_states_list = $task_state;
                 } else {
                     // иначе устанавливаем значение константы
                     $task_states_list = self::_UNDEFINED;
                 }
                 //формируем html - таблицу для вывода информации
                 $result_table = '<table class="table table-bordered">';
                 $result_table .= '
                                 <tr>
                                     <td class="issue-table-label">Подразделения</td>
                                     <td>' . $podr_list . '</td>  
                                 </tr>
                                 <tr>
                                     <td class="issue-table-label">Исполнитель</td>
                                     <td>' . $pers_list . '</td>  
                                 </tr>
                                 <tr>
                                     <td class="issue-table-label">Исходящий номер</td>
                                     <td>' . $issue->TASK_NUMBER . '</td>  
                                 </tr>
                                 <tr>
                                     <td class="issue-table-label">Входящий номер</td>
                                     <td>' . $sourcenum . '</td>  
                                 </tr>
                                 <tr>
                                     <td class="issue-table-label">Заказ (изделие)</td>
                                     <td>' . $issue->ORDERNUM . '</td>  
                                 </tr>
                                 <tr>
                                     <td class="issue-table-label">Заказ ПЭО</td>
                                     <td>' . $issue->PEOORDERNUM . '</td>  
                                 </tr>
                                 <tr>
                                     <td class="issue-table-label">Срок выполнения</td>
                                     <td>' . \Yii::$app->formatter->asDate($issue->DEADLINE, 'php:d-m-Y') . '</td>  
                                 </tr>
                                 <tr>
                                     <td class="issue-table-label">Содержание</td>
                                     <td>' . $issue->TASK_TEXT . '</td>  
                                 </tr>
                                 <tr>
                                     <td class="issue-table-label">Дополнительные указания</td>
                                     <td>' . $additional_text . '</td>  
                                 </tr>
                                 <tr>
                                     <td class="issue-table-label">Дата поступления в сектор</td>
                                     <td>' . $sektor_date . '</td>  
                                 </tr>
                                 <tr>
                                     <td class="issue-table-label">Дата поступления в группу</td>
                                     <td>' . $group_date_for_table . '</td>  
                                 </tr>
                                 <tr>
                                     <td class="issue-table-label">Дата поступления исполнителю</td>
                                     <td>' . $first_date . '</td>  
                                 </tr>
                                 <tr>
                                     <td class="issue-table-label">Дата завершения</td>
                                     <td>' . $closed_date . '</td>  
                                 </tr>
                                 <tr>
                                     <td class="issue-table-label">Выпущенная документация</td>
                                     <td>' . $task_docs_list . '</td>  
                                 </tr>
                                 <tr>
                                     <td class="issue-table-label">Отчет о работе</td>
                                     <td>' . $report_text . '</td>  
                                 </tr>
                                 <tr>
                                     <td class="issue-table-label">Согласовано с</td>
                                     <td>' . $task_confirms_list . '</td>  
                                 </tr>
                                 <tr>
                                     <td class="issue-table-label">Передано в</td>
                                     <td>' . $task_docs_recvrs_list . '</td>  
                                 </tr>
                                 <tr>
                                     <td class="issue-table-label">Состояние</td>
                                     <td>' . $task_states_list . '</td>  
                                 </tr>
                 ';
                 $result_table .= '</table>';
                 //проверяем есть ли доступ на редактирование для отображения ссылки (кнопки) редактирования
                 if ($permissions_for_read_and_write->PERM_LEVEL == '2' && @$check_permissions_for_status->PERM_LEVEL == 2) {
                     // если есть права на запись
                     $permissions_for_write = 1;
                 } else {
                     // иначе разрешаем только чтение
                     $permissions_for_write = 0;
                 }
                 // возвращаем json массив
                 $items = ['permissons_for_read' => 1, 'user_have_permission' => $user_have_permission, 'permissions_for_write' => $permissions_for_write, 'issue_id' => $issue_id, 'issue_designation' => $issue->TASK_NUMBER, 'result_table' => $result_table];
                 return $items;
             } else {
                 //в случае, если нет доступа, формируем тексты ошибок
                 if (!$check_permissions_for_status) {
                     // если нет разрешения на текущий статус
                     //get state name
                     $states = \app\models\States::findOne($task_state->STATE_ID);
                     $error_message = 'У Вас нет прав на "Форма свойств задания" в статусе "' . $states->STATE_NAME . '"';
                 }
                 if (!$permissions_for_read_and_write) {
                     // если нет доступа на чтение и запись
                     $error_message = 'У Вас нет прав на просмотр "Форма свойств задания"';
                 }
                 // возвращаем json массив
                 $items = ['permissons_for_read' => 0, 'error_message' => $error_message, 'issue_id' => $issue_id, 'issue_designation' => $issue->TASK_NUMBER];
                 return $items;
             }
         } else {
             // если вообще нет доступа (пользователь не содержится в списке исполнителей задания)
             $error_message = 'У Вас нет прав на просмотр этого задания';
             $items = ['permissons_for_read' => 0, 'error_message' => $error_message, 'issue_id' => $issue_id, 'issue_designation' => $issue->TASK_NUMBER];
             return $items;
         }
     }
 }
Example #7
0
 public function getState()
 {
     return $this->hasOne(\app\models\States::className(), ['ID' => 'NEXT_STATE_ID'])->where(['DEL_TRACT_ID' => 0]);
 }
Example #8
0
use app\models\States;
use app\models\Types;
use yii\helpers\ArrayHelper;
/* @var $this yii\web\View */
/* @var $searchModel app\models\DevicesSearch */
/* @var $dataProvider yii\data\ActiveDataProvider */
$this->title = 'Devices';
$this->params['breadcrumbs'][] = $this->title;
?>
<div class="devices-index">

    <h1><?php 
echo Html::encode($this->title);
?>
</h1>
    <?php 
// echo $this->render('_search', ['model' => $searchModel]);
?>

    <p>
        <?php 
echo Html::a('Create Devices', ['create'], ['class' => 'btn btn-success']);
?>
    </p>

    <?php 
echo GridView::widget(['dataProvider' => $dataProvider, 'filterModel' => $searchModel, 'columns' => [['class' => 'yii\\grid\\SerialColumn'], 'name', 'description:ntext', ['attribute' => 'type', 'label' => 'Тип', 'value' => 'types.name', 'filter' => ArrayHelper::map(Types::find()->all(), 'id', 'name')], ['attribute' => 'state', 'label' => 'state', 'value' => 'states.name', 'filter' => ArrayHelper::map(States::find()->all(), 'id', 'name')], ['attribute' => 'idobject', 'label' => 'Обьект', 'value' => 'objects.name', 'filter' => ArrayHelper::map(Objects::find()->all(), 'id', 'name')], ['class' => 'yii\\grid\\ActionColumn']]]);
?>

</div>
Example #9
0
 public function getPermstatestype()
 {
     return $this->hasOne(\app\models\States::className(), ['ID' => 'ACTION_ID']);
 }
Example #10
0
													    return false;
													}
													return true;
									            },
									            "data" : [
										        	<?php 
foreach ($v_f_pers as $v_f_per) {
    echo '{"id" : "v_f_per_' . $v_f_per['tn'] . '", "icon" : "glyphicon glyphicon-user", "parent" : "#", "text" : "' . $v_f_per['fio'] . '", "li_attr" : { "data-panel" : "v_f_pers", "data-id" : "' . $v_f_per['tn'] . '" }},';
    $inner_list = \app\models\Permissions::find()->where(['SUBJECT_TYPE' => 2, 'SUBJECT_ID' => $v_f_per['tn'], 'DEL_TRACT_ID' => 0])->orderBy('PERM_TYPE')->all();
    if ($inner_list) {
        foreach ($inner_list as $li) {
            if ($li->PERM_TYPE == 1) {
                $result_li = \app\models\Actions::findOne($li->ACTION_ID);
                echo '{"id" : "' . $li->ID . '", "icon" : "glyphicon glyphicon-cog", "parent" : "v_f_per_' . $v_f_per['tn'] . '", "text" : "' . $result_li->ACTION_DESC . '", "li_attr" : { "data-id" : "' . $li->ID . '", "data-perm-level" : "' . $li->PERM_LEVEL . '", "class" : "inner-node-state"}},';
            } elseif ($li->PERM_TYPE == 2) {
                $result_li = \app\models\States::findOne($li->ACTION_ID);
                echo '{"id" : "' . $li->ID . '", "icon" : "glyphicon glyphicon-check", "parent" : "v_f_per_' . $v_f_per['tn'] . '", "text" : "' . $result_li->STATE_NAME . '", "li_attr" : { "data-id" : "' . $li->ID . '", "data-perm-level" : "' . $li->PERM_LEVEL . '", "class" : "inner-node-state"}},';
            }
        }
    }
}
?>
										        ],
									        },
										}).on("copy_node.jstree", function (e, data) {
										  	//store in database
										  	var parent_id = $('#jstree-v_f_pers').jstree(true).get_node(data.node.parents[0]).li_attr['data-id'];
										  	var parent_type = $('#jstree-v_f_pers').jstree(true).get_node(data.node.parents[0]).li_attr['data-panel'];
										  	var original_id = data.original.li_attr['data-id'];
									  		var original_type = data.original.li_attr['data-panel'];
Example #11
0
 /**
  * @return \yii\db\ActiveQuery
  */
 public function getStates()
 {
     return $this->hasMany(States::className(), ['id_country' => 'id']);
 }
Example #12
0
 public function getStateColour()
 {
     $state = \app\models\States::findOne($this->STATE_ID);
     return $state->STATE_COLOUR;
 }
Example #13
0
 private function delState($model)
 {
     /* @var $model States */
     $id_country = $model->id_country;
     $model->delete();
     $model = States::firstRecord($id_country);
     Yii::$app->session->setFlash('success', 'Selected item is succesfully deleted.');
     return $model;
 }
 public function _checkPermissions($action, $task_id)
 {
     switch ($action) {
         case 'open_issue_modal':
             //проверка прав на просмотр задания (в модальном окне)
             $permissions_for_open_issue_modal = \app\models\Permissions::find()->where('(SUBJECT_TYPE = :subject_type and SUBJECT_ID = :user_id and ACTION_ID = :action and DEL_TRACT_ID = :del_tract and PERM_LEVEL != :perm_level and PERM_TYPE = :perm_type)  or 
                                                                                     (SUBJECT_TYPE = :subject_type_dolg and SUBJECT_ID = :dolg_id and ACTION_ID = :action and DEL_TRACT_ID = :del_tract and PERM_LEVEL != :perm_level and PERM_TYPE = :perm_type)', ['subject_type_dolg' => 1, 'dolg_id' => \Yii::$app->session->get('user.user_iddolg'), 'perm_type' => 1, 'subject_type' => 2, 'user_id' => \Yii::$app->user->id, 'del_tract' => 0, 'perm_level' => 0, 'action' => 3])->one();
             if ($permissions_for_open_issue_modal) {
                 //в случае если есть доступ на просмотр данных о задании
                 $user_in_persons_or_podr_list = false;
                 //получаем массив подразделений задания
                 $podr_tasks = \app\models\PodrTasks::find()->where(['TASK_ID' => $task_id, 'DEL_TRACT_ID' => 0])->all();
                 if ($podr_tasks) {
                     // если существуют подразделения, то формируем их список
                     $podr_list_kodzifr_array = [];
                     foreach ($podr_tasks as $task) {
                         //обходим список подразделений
                         $query = new \yii\db\Query();
                         $query->select('*')->from('STIGIT.V_F_PODR')->where('KODZIFR = \'' . trim($task->KODZIFR) . '\'');
                         $command = $query->createCommand();
                         $data = $command->queryOne();
                         if (isset($data['KODZIFR'])) {
                             // проверяем на существование названия подразделения (на момент разработки не для всех были названия)
                             $podr_list_kodzifr_array[] = $data['KODZIFR'];
                         }
                     }
                 }
                 //проверяем входит ли данный пользователь в список исполнителей задания
                 //получаем список пользователей, кому назначено задание
                 $pers_tasks = \app\models\PersTasks::find()->where(['TASK_ID' => $task_id, 'DEL_TRACT_ID' => 0])->all();
                 if ($pers_tasks) {
                     // если существуют исполнители, то формируем их список
                     $persons_array = [];
                     foreach ($pers_tasks as $task) {
                         $query = new \yii\db\Query();
                         $query->select('*')->from('STIGIT.V_F_PERS')->where('TN = \'' . $task->TN . '\'');
                         $command = $query->createCommand();
                         $data = $command->queryOne();
                         $persons_array[] = $data['TN'];
                     }
                     //проверяем, входит ли пользователь в этот список
                     if (in_array(\Yii::$app->user->id, $persons_array)) {
                         //пользователь входит в список исполнителей
                         $user_in_persons_or_podr_list = true;
                     }
                 } else {
                     //в этом случае, задания назначено всем исполнителям из списка подразделений задания
                     $persons_array = [];
                     //обходим массив подразделений для проверки, входит ли в него текущий пользователь
                     $ids = join(',', $podr_list_kodzifr_array);
                     $query = new \yii\db\Query();
                     $query->select('*')->from('STIGIT.V_F_PERS')->where('TN = \'' . \Yii::$app->user->id . '\' and KODZIFR in (' . $ids . ')');
                     $command = $query->createCommand();
                     $data = $command->queryAll();
                     if (!empty($data)) {
                         // проверяем вхождение пользователя в список исполнителей подразделений задания
                         $user_in_persons_or_podr_list = true;
                         // текущий пользователь входит в подразделения, указанные в задании
                     }
                 }
                 //проверяем, является ли пользователь начальником подразделений, указанных в задании
                 //получаем список подчиненных подразделений
                 $user_boss_of = \Yii::$app->session->get('user.user_boss_of');
                 if (!empty($user_boss_of) && !$user_in_persons_or_podr_list) {
                     //проверяем, является ли пользователь начальником подразделений, указанных в задании
                     if (in_array($user_boss_of, $podr_list_kodzifr_array)) {
                         //пользователь является руководителем, но не входит в спиок исполнителей или указанных подразделений
                         //осуществляем проверку прав на 'podr_tasks_my_edit'
                         $permissions_for_open_issue_modal_for_boss = \app\models\Permissions::find()->where('(SUBJECT_TYPE = :subject_type and SUBJECT_ID = :user_id and ACTION_ID = :action and DEL_TRACT_ID = :del_tract and PERM_LEVEL != :perm_level and PERM_TYPE = :perm_type)  or 
                                                                                         (SUBJECT_TYPE = :subject_type_dolg and SUBJECT_ID = :dolg_id and ACTION_ID = :action and DEL_TRACT_ID = :del_tract and PERM_LEVEL != :perm_level and PERM_TYPE = :perm_type)', ['subject_type_dolg' => 1, 'dolg_id' => \Yii::$app->session->get('user.user_iddolg'), 'perm_type' => 1, 'subject_type' => 2, 'user_id' => \Yii::$app->user->id, 'del_tract' => 0, 'perm_level' => 0, 'action' => 101])->one();
                         if ($permissions_for_open_issue_modal_for_boss) {
                             //пользователю разрешен просмотр и редактирование заданий своего подразделения
                             $user_in_persons_or_podr_list = true;
                         }
                     }
                 }
                 if ($user_in_persons_or_podr_list) {
                     //пользователь имеет доступ к заданию, так как входит в список исполнителей выбранного задания, либо находится в составе подразделей задания,
                     //либо является руководителем подразделений, указанных в задании
                     return true;
                 }
             } else {
                 return false;
             }
             break;
         case 'open_issue_modal_in_current_status':
             //проверка прав на просмотр задания (в модальном окне) в текущем статусе задания
             //получаем текущий статус задания для данного пользователя
             $current_status = self::_getCurrentTaskStatusForCurrentUser($task_id);
             if ($current_status != 'empty_status' && $current_status != 'user_not_in_persons_list') {
                 //проверяем есть ли доступ у пользователя к заданию в текущем статусе
                 $permissions_for_open_issue_modal_in_current_status = \app\models\Permissions::find()->where('(SUBJECT_TYPE = :subject_type and SUBJECT_ID = :user_id and DEL_TRACT_ID = :del_tract and PERM_LEVEL != :perm_level and ACTION_ID = :action and PERM_TYPE = :perm_type) or
                                                                                         (SUBJECT_TYPE = :subject_type_dolg and SUBJECT_ID = :id_dolg and DEL_TRACT_ID = :del_tract and PERM_LEVEL != :perm_level and ACTION_ID = :action and PERM_TYPE = :perm_type)', ['subject_type_dolg' => 1, 'id_dolg' => \Yii::$app->session->get('user.user_iddolg'), 'perm_type' => 2, 'subject_type' => 2, 'user_id' => \Yii::$app->user->id, 'del_tract' => 0, 'perm_level' => 0, 'action' => $current_status])->one();
                 if ($permissions_for_open_issue_modal_in_current_status) {
                     //досутп на просмотр в текущем статусе разрешен
                     return 'true';
                 } else {
                     $state = \app\models\States::findOne($current_status);
                     return 'У Вас нет прав на "Форма свойств задания" в статусе "' . $state->STATE_NAME . '"';
                 }
             } elseif ($current_status == 'empty_status') {
                 //устанавливаем статус "Принято при первом открытии задания"
                 $pers_tasks = \app\models\PersTasks::find()->where(['TASK_ID' => $task_id, 'TN' => \Yii::$app->user->id, 'DEL_TRACT_ID' => 0])->one();
                 $transactions = \app\models\Transactions::find()->where(['TN' => \Yii::$app->user->id])->orderBy('ID DESC')->one();
                 //пишем первый статус в БД
                 $task_states = new \app\models\TaskStates();
                 $task_states->TASK_ID = $task_id;
                 $task_states->STATE_ID = 1;
                 $task_states->TRACT_ID = $transactions->ID;
                 $task_states->IS_CURRENT = 1;
                 if ($pers_tasks->ID) {
                     // устанавливаем pers_tasks id
                     $task_states->PERS_TASKS_ID = $pers_tasks->ID;
                 }
                 $task_states->save();
                 //разрешаем пользователю смотреть информацию по заданию
                 return 'true';
             } elseif ($current_status == 'user_not_in_persons_list') {
                 //пользователь не стоит в списке исполнителей задания
                 //проверяем, если он руководитель показываем информацию по заданию (остальные пользователи сбда не попадут из-за проверки выше)
                 return 'true_for_boss';
             }
             break;
         case 'update_issue':
             //проверяем, есть ли доступ на редактирование задания для исполнителей
             $permissions_for_update_issue = \app\models\Permissions::find()->where('(SUBJECT_TYPE = :subject_type and SUBJECT_ID = :user_id and ACTION_ID = :action and DEL_TRACT_ID = :del_tract and PERM_LEVEL = :perm_level and PERM_TYPE = :perm_type)  or 
                                                                                     (SUBJECT_TYPE = :subject_type_dolg and SUBJECT_ID = :dolg_id and ACTION_ID = :action and DEL_TRACT_ID = :del_tract and PERM_LEVEL = :perm_level and PERM_TYPE = :perm_type)', ['subject_type_dolg' => 1, 'dolg_id' => \Yii::$app->session->get('user.user_iddolg'), 'perm_type' => 1, 'subject_type' => 2, 'user_id' => \Yii::$app->user->id, 'del_tract' => 0, 'perm_level' => 2, 'action' => 3])->one();
             //проверка доступа на редактирование для руководителей
             $permissions_for_update_issue_boss = \app\models\Permissions::find()->where('(SUBJECT_TYPE = :subject_type and SUBJECT_ID = :user_id and ACTION_ID = :action and DEL_TRACT_ID = :del_tract and PERM_LEVEL = :perm_level and PERM_TYPE = :perm_type)  or 
                                                                                     (SUBJECT_TYPE = :subject_type_dolg and SUBJECT_ID = :dolg_id and ACTION_ID = :action and DEL_TRACT_ID = :del_tract and PERM_LEVEL = :perm_level and PERM_TYPE = :perm_type)', ['subject_type_dolg' => 1, 'dolg_id' => \Yii::$app->session->get('user.user_iddolg'), 'perm_type' => 1, 'subject_type' => 2, 'user_id' => \Yii::$app->user->id, 'del_tract' => 0, 'perm_level' => 2, 'action' => 101])->one();
             //проверяем кто редактирует задание
             $pers_tasks = \app\models\PersTasks::find()->where(['TASK_ID' => $task_id, 'DEL_TRACT_ID' => 0])->all();
             if ($pers_tasks) {
                 // если существуют исполнители, то формируем их список
                 $persons_array = [];
                 foreach ($pers_tasks as $task) {
                     $query = new \yii\db\Query();
                     $query->select('*')->from('STIGIT.V_F_PERS')->where('TN = \'' . $task->TN . '\'');
                     $command = $query->createCommand();
                     $data = $command->queryOne();
                     $persons_array[] = $data['TN'];
                 }
                 //проверяем, входит ли пользователь в этот список
                 if (in_array(\Yii::$app->user->id, $persons_array)) {
                     //пользователь входит в список исполнителей
                     $user_is_person = 1;
                 } else {
                     $user_is_person = 0;
                 }
             }
             if ($permissions_for_update_issue && $user_is_person == 1) {
                 return 'update_issue_for_person';
             } elseif ($permissions_for_update_issue_boss && $user_is_person == 0) {
                 return 'update_issue_for_boss';
             } else {
                 return false;
             }
             break;
     }
 }
Example #15
0
								<div class="panel-heading" role="tab" id="headingOne">
									<h4 class="panel-title">
										<a class="collapsed" role="button" data-toggle="collapse" data-parent="#accordion" href="#collapseOne" aria-expanded="false" aria-controls="collapseOne">
											Состояние
											<div class="what-selected pull-right" id="state_moment">
												<?php 
echo $searchModel->getSelectedTasksStatesNames();
?>
											</div>
										</a>
									</h4>
								</div>
								<div id="collapseOne" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingOne">
									<div class="panel-body">
										<?php 
echo $form_filter->field($searchModel, 'states', ['template' => "{label}\n{input}"])->label(false)->checkboxList(yii\helpers\ArrayHelper::map(\app\models\States::find()->orderBy('ID asc')->all(), 'ID', 'STATE_NAME'), ['separator' => '', 'class' => 'state-checkbox']);
?>
									</div>
								</div>
							</div>
							<div class="panel panel-default">
								<div class="panel-heading" role="tab" id="headingTwo">
									<h4 class="panel-title">
										<a class="collapsed" role="button" data-toggle="collapse" data-parent="#accordion" href="#collapseTwo" aria-expanded="false" aria-controls="collapseTwo">
											Подразделение
											<div class="what-selected pull-right" id="podr_list_moment"><?php 
if ($searchModel->podr_list) {
    ?>
выбрано: <?php 
    echo count(explode(',', $searchModel->podr_list)) . ' подразделение(ия)';
}
?>
				    <div class="hr-line-dashed"></div>

				    <?php 
echo $form->field($model, 'transmitted_podr_list', ['template' => "{label}<div class=\"col-sm-6\">{input}</div><div class=\"col-sm-2\" style=\"text-align: right;\"><button type=\"button\" id=\"add-transmitted-podr-button-update\" class=\"btn btn-default btn-sm\"><span class=\"glyphicon glyphicon-plus\"></span></button></div>\n{hint}", 'labelOptions' => ['class' => 'col-sm-4 control-label'], 'inputOptions' => ['class' => 'form-control input-sm']])->textInput();
?>
				    <div class="hr-line-dashed"></div>

				    <?php 
$this->registerJs('function format(state) {return state.text;}', View::POS_HEAD);
$this->registerJs('function format_selection(state) {return "<b>"+state.text+"</b>";}', View::POS_HEAD);
?>
				    <?php 
if ($show_states == 1) {
    $states_list = yii\helpers\ArrayHelper::map(\app\models\StatesNext::find()->where(['STATE_ID' => $model->state, 'DEL_TRACT_ID' => 0])->orderBy('ID ASC')->all(), 'NEXT_STATE_ID', 'state_name_state_colour');
    $current_status = \app\models\States::findOne($model->state)->getState_name_state_colour();
    $states_list = [$model->state => $current_status] + $states_list;
    ?>
				    <?php 
    echo $form->field($model, 'state', ['template' => "{label}<div class=\"col-sm-8\">{input}</div>\n{hint}", 'labelOptions' => ['class' => 'col-sm-4 control-label'], 'inputOptions' => ['class' => 'form-control input-sm']])->widget(\kartik\select2\Select2::classname(), ['options' => ['placeholder' => ''], 'hideSearch' => true, 'data' => $states_list, 'pluginOptions' => ['allowClear' => true, 'templateResult' => new JsExpression('format'), 'escapeMarkup' => new JsExpression("function(m) { return m; }"), 'templateSelection' => new JsExpression('format_selection')]]);
}
?>

</div>
<div class="modal-footer">
	<?php 
if (!$not_ajax) {
    ?>
	<button type="button" class="btn btn-default" id="issue-cancel-update-button">Отмена</button>
	<?php 
}
Example #17
0
 public function _getCurrentTaskStatusWithId($id)
 {
     $persons = \app\models\PersTasks::find()->where(['TASK_ID' => $id, 'DEL_TRACT_ID' => 0])->all();
     if ($persons) {
         $states_array = [];
         foreach ($persons as $person) {
             $query = new \yii\db\Query();
             $query->select('*')->from('STIGIT.V_F_PERS')->where('TN = \'' . $person->TN . '\'');
             $command = $query->createCommand();
             $data = $command->queryOne();
             $pers_tasks = \app\models\PersTasks::find()->where(['TASK_ID' => $id, 'TN' => $person->TN, 'DEL_TRACT_ID' => 0])->one();
             $task_state = \app\models\TaskStates::find()->where(['IS_CURRENT' => 1, 'PERS_TASKS_ID' => $pers_tasks->ID, 'TASK_ID' => $id])->one();
             if ($task_state) {
                 $states_array[] = $task_state->STATE_ID;
             } else {
                 return '';
             }
         }
         if (!empty($states_array)) {
             $min_state = min($states_array);
             $state = \app\models\States::findOne($min_state);
             return $state->ID;
         } else {
             return false;
         }
     } else {
         return false;
     }
 }
Example #18
0
 /**
  * @return \yii\db\ActiveQuery
  */
 public function getStates()
 {
     return $this->hasOne(States::className(), ['id' => 'state']);
 }
Example #19
0
        echo $counter_overdue;
        ?>
)</a> <?php 
        if (isset(Yii::$app->request->getQueryParams()['overdue']) && Yii::$app->request->getQueryParams()['overdue'] == 1) {
            ?>
<i class="pull-right glyphicon glyphicon-ok"></i><?php 
        }
        ?>
</li>
			<?php 
    }
    ?>
			<hr>
			<li class="submenu-li">
				<?php 
    $states = \app\models\States::find()->all();
    foreach ($states as $state) {
        ?>
				<div style="padding-bottom: 3px;"><?php 
        echo $state->getState_name_state_colour();
        ?>
</div>
				<?php 
    }
    ?>
			</li>
		</ul>
		<?php 
}
?>
	</div>
Example #20
0
											<?php 
        echo $state->getState_name_state_colour_without_text() . ' ' . $state->STATE_NAME;
        ?>
										</a>
									</h4>
								</div>
								<div id="collapse-state-item-<?php 
        echo $state->ID;
        ?>
" class="panel-collapse collapse" role="tabpanel" aria-labelledby="state-list-item-<?php 
        echo $state->ID;
        ?>
">
									<div class="panel-body">
										<?php 
        $inner_states = \app\models\States::find()->where(['!=', 'ID', $state->ID])->all();
        foreach ($inner_states as $inner_state) {
            $state_next = \app\models\StatesNext::find()->where(['STATE_ID' => $state->ID, 'NEXT_STATE_ID' => $inner_state->ID, 'DEL_TRACT_ID' => 0])->one();
            //if($state_next) echo $state_next->NEXT_STATE_ID;
            ?>
											<div class="checkbox" style="font-size: 11px;"><label><input <?php 
            if ($perm_level != 2) {
                ?>
disabled<?php 
            }
            ?>
 type="checkbox" <?php 
            if ($state_next) {
                ?>
checked<?php 
            }