Ejemplo n.º 1
0
 public function getreportAction()
 {
     $user = $this->session->getCurrentUser();
     $data = array();
     $data['date_from'] = addslashes(trim(strip_tags($this->request->getPost('date_from'))));
     $data['date_to'] = addslashes(trim(strip_tags($this->request->getPost('date_to'))));
     $data['users_id'] = (int) $user->id;
     $data['ids'] = array();
     if (!is_null($this->request->getPost('ids')) && is_array($this->request->getPost('ids'))) {
         foreach ($this->request->getPost('ids') as $id) {
             $data['ids'][] = (int) $id;
         }
     }
     $projectsModel = new Projects();
     $reports = $projectsModel->getReports($data);
     $totalTime = 0;
     foreach ($reports as $key => &$item) {
         if ($item['t_sum'] === null) {
             unset($reports[$key]);
         } else {
             $totalTime += $item['t_sum'];
             $hours = floor($item['t_sum'] / 3600);
             $mins = floor(($item['t_sum'] - $hours * 3600) / 60);
             $item['t_sum'] = $hours . ' часов ' . $mins . ' минут';
         }
     }
     $this->view->reports = array_values($reports);
     $hours = floor($totalTime / 3600);
     $mins = floor(($totalTime - $hours * 3600) / 60);
     $this->view->totalTime = $hours . ' часов ' . $mins . ' минут';
     $dateFrom = new \DateTime($data['date_from']);
     $dateTo = new \DateTime($data['date_to']);
     $this->view->dateFrom = $dateFrom->format('d.m.Y');
     $this->view->dateTo = $dateTo->format('d.m.Y');
 }
Ejemplo n.º 2
0
 private function getBooks($project_id, $page = 1)
 {
     if (!Session::exists('member')) {
         Router::redirect('home.index');
     }
     $nb = self::NUMBER_ITEM_PER_PAGE;
     $member = Session::get('member');
     $user = $this->checkUser($member['id'], $member['nickname']);
     $search = Helper::post('research');
     $project = Projects::select()->where('id', $project_id)->andWhere('id_leader', $member['id'])->get(0, 1);
     if (empty($project)) {
         Router::url('home.index');
     }
     $project = $project[0];
     $book = UsersBook::select()->addFields(['users_book.status' => 'status', 'F.id' => 'id_from', 'F.nickname' => 'nickname_from', 'T.id' => 'id_to', 'T.nickname' => 'nickname_to'])->innerJoin('users', 'F')->onJoin('F.id', '=', 'users_book.id_user_from')->innerJoin('users', 'T')->onJoin('T.id', '=', 'users_book.id_user_to')->where('status', 2)->andGroup([new Condition('WHERE', '', 'users_book.id_user_from', '!=', $project->id_client, false), new Condition('WHERE', 'AND', 'users_book.id_user_to', '!=', $project->id_client, false)])->andGroup([new Condition('WHERE', '', 'F.nickname', 'LIKE', '%' . $search . '%', false), new Condition('WHERE', 'OR', 'F.mail', 'LIKE', '%' . $search . '%', false), new Condition('WHERE', 'OR', 'T.nickname', 'LIKE', '%' . $search . '%', false), new Condition('WHERE', 'OR', 'T.mail', 'LIKE', '%' . $search . '%', false)])->andGroup([new Condition('WHERE', '', 'id_user_from', '=', $member['id'], false), new Condition('WHERE', 'OR', 'id_user_to', '=', $member['id'], false)])->get(($page - 1) * $nb, $nb);
     $count = UsersBook::select()->addFields(['COUNT(*)' => 'nb_row'])->innerJoin('users', 'F')->onJoin('F.id', '=', 'users_book.id_user_from')->innerJoin('users', 'T')->onJoin('T.id', '=', 'users_book.id_user_to')->where('status', 2)->andGroup([new Condition('WHERE', '', 'F.nickname', 'LIKE', '%' . $search . '%', false), new Condition('WHERE', 'OR', 'F.mail', 'LIKE', '%' . $search . '%', false), new Condition('WHERE', 'OR', 'T.nickname', 'LIKE', '%' . $search . '%', false), new Condition('WHERE', 'OR', 'T.mail', 'LIKE', '%' . $search . '%', false)])->andGroup([new Condition('WHERE', '', 'id_user_from', '=', $member['id'], false), new Condition('WHERE', 'OR', 'id_user_to', '=', $member['id'], false)])->get(0, 1)[0];
     $max_page = ceil($count->nb_row / $nb);
     if ($max_page == 0) {
         $max_page = 1;
     }
     $this->set('books', $book);
     $this->set('max_page', $max_page);
     $this->set('project', $project);
     $this->set('user', $user);
     $this->render('task/detail_user');
 }
Ejemplo n.º 3
0
 public function home()
 {
     $eureka = Eurekas::find('random');
     $projects = Projects::find('all');
     $posts = Posts::latest();
     return compact('posts', 'eureka', 'projects');
 }
Ejemplo n.º 4
0
 public function run()
 {
     $query = Projects::find();
     $countQuery = clone $query;
     $pages = new Pagination(['totalCount' => $countQuery->count(), 'pageSize' => 4]);
     $pages->pageSizeParam = false;
     $models = $query->offset($pages->offset)->limit($pages->limit)->all();
     return $this->render('mywidget', ['projects' => $models, 'pages' => $pages]);
 }
Ejemplo n.º 5
0
 public function index()
 {
     if (Session::exists('member')) {
         $member = Session::get('member');
         $projects = Projects::select('P')->addFields(['TIMESTAMPDIFF(DAY, NOW(), P.deadline)' => 'nb_day', 'P.id' => 'project_id', 'P.name', 'P.price', 'P.deadline', 'U.id' => 'id_user_leader', 'U.nickname' => 'nickname_user_leader', 'UC.id' => 'id_user_client', 'UC.nickname' => 'nickname_user_client'])->innerJoin('users', 'U')->onJoin('U.id', 'P.id_leader')->leftJoin('tasks', 'T')->onJoin('T.id_project', 'P.id')->leftJoin('task_users', 'task_users')->onJoin('task_users.id_task', 'T.id')->leftJoin('users', 'UC')->onJoin('UC.id', 'P.id_client')->where('id_client', $member['id'])->orWhere('id_leader', $member['id'])->orWhere('task_users.id_user', $member['id'])->groupBy('project_id')->get();
         $this->set('projects', $projects);
     }
     $this->script('projects');
     $this->render('task/home', 'home.task.title');
 }
Ejemplo n.º 6
0
 public function actionDelete($id)
 {
     if (!($project = Projects::findOne($id)) == false) {
         if (Yii::$app->user->can('deleteProject', ['project' => $project])) {
             $project->deleted = true;
             $project->save(false);
         }
     }
     return $this->redirect(Url::toRoute('projects/index'));
 }
Ejemplo n.º 7
0
 public function getProjects($user_id, $flag)
 {
     $arr_prj = Projects::where('user_id', $user_id)->where('project_flag', $flag)->get();
     $total = Projects::where('user_id', $user_id)->where('project_flag', $flag)->count();
     $arr_msg["MESSAGE"] = "SUCCESS";
     $arr_msg["MESSAGE_ARRAY"] = $arr_prj;
     $arr_msg["STATUS"] = true;
     $arr_msg["TOTAL"] = $total;
     echo json_encode($arr_msg);
 }
Ejemplo n.º 8
0
 /**
  * Creates data provider instance with search query applied
  *
  * @param array $params
  *
  * @return ActiveDataProvider
  */
 public function search($params)
 {
     $query = Projects::find();
     $dataProvider = new ActiveDataProvider(['query' => $query]);
     if (!($this->load($params) && $this->validate())) {
         return $dataProvider;
     }
     $query->andFilterWhere(['id' => $this->id, 'created_at' => $this->created_at, 'updated_at' => $this->updated_at]);
     $query->andFilterWhere(['like', 'project_name', $this->project_name]);
     return $dataProvider;
 }
Ejemplo n.º 9
0
 public function actionForm($id = NULL)
 {
     $model = $id ? Visits::findOne($id) : new Visits();
     if ($model->load(Yii::$app->request->post()) && $model->validate()) {
         /* Check if it is a new record before we save it  */
         $newRecord = $model->isNewRecord;
         /* Attempt to save model */
         if ($model->save(false)) {
             /* Only when the record is new */
             if ($newRecord) {
                 /* Register null-observations for un-checked boxes if available */
                 if (!$model->checked_all) {
                     foreach ($model->project->boxes as $box) {
                         if (in_array($box->id, $model->checked_boxes)) {
                             Observations::createNullObservation($model->id, $box->id);
                         }
                     }
                 }
                 /* Register checked boxes */
                 if ($model->checked_boxes) {
                     $model->unlinkAll('visitBox', true);
                     foreach ($model->checked_boxes as $checkedBox) {
                         $visitBoxModel = new VisitBoxes();
                         $visitBoxModel->box_id = $checkedBox;
                         $visitBoxModel->link('visit', $model);
                         $visitBoxModel->save();
                     }
                 }
                 /* Register null-observations for all boxes in project when "checked-all" is selected */
                 if ($model->checked_all) {
                     foreach ($model->project->boxes as $box) {
                         Observations::createNullObservation($model->id, $box->id);
                     }
                 }
             }
             /* Register observers by this visit */
             if ($model->observers) {
                 $model->unlinkAll('observers', true);
                 foreach ($model->observers as $observer) {
                     $visitObservers = new VisitObservers();
                     $visitObservers->observer_id = $observer;
                     $visitObservers->link('visit', $model);
                     $visitObservers->save();
                 }
             }
             /* Redirect on success */
             return $this->redirect(Url::toRoute('visits/detail/' . $model->id));
         }
     }
     return $this->render('form', ['model' => $model, 'projects' => Projects::find()->hasRights()->hasBoxes()->all()]);
 }
Ejemplo n.º 10
0
 public function getUserFilesById($id, \App\models\User $user)
 {
     $this->setWhere(array('id' => $id));
     $data = $this->select();
     if (empty($data)) {
         throw new \Exception('Файл не найден!');
     }
     if ($user->roles_id != 1) {
         $tasksModel = new Tasks();
         if ($data[0]['tasks_id'] > 0) {
             $tasksModel->getOneMyTask($user, $data[0]['tasks_id']);
         } elseif ($data[0]['projects_id'] > 0) {
             $projectsModel = new Projects();
             $project = $projectsModel->getProjectsDataById($data[0]['projects_id']);
             if ($project['initiator_id'] != $user->id) {
                 throw new \Exception('Доступ запрещен!');
             }
         } else {
             throw new \Exception('Доступ запрещен!');
         }
     }
     return $data[0];
 }
Ejemplo n.º 11
0
 /**
  * Creates data provider instance with search query applied
  *
  * @param array $params
  *
  * @return ActiveDataProvider
  */
 public function search($params)
 {
     $query = Projects::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(['project_id' => $this->project_id, 'final_datetime' => $this->final_datetime, 'cyclical_project_id' => $this->cyclical_project_id]);
     $query->andFilterWhere(['like', 'name', $this->name])->andFilterWhere(['like', 'description', $this->description])->andFilterWhere(['like', 'logo_filepath', $this->logo_filepath]);
     return $dataProvider;
 }
Ejemplo n.º 12
0
 public function actionForm($id = NULL)
 {
     $model = $id ? Boxes::findOne($id) : new \app\models\Boxes();
     if (Yii::$app->request->getQueryParam('project_id')) {
         $model->project_id = Yii::$app->request->getQueryParam('project_id');
     }
     if ($model->load(Yii::$app->request->post())) {
         $model->imageFile = UploadedFile::getInstance($model, 'imageFile');
         if ($model->validate()) {
             // Clusters
             $cluster = Yii::$app->request->post('Boxes')['cluster'];
             if ($cluster) {
                 if (ProjectClusters::find()->byCluster($cluster)->exists()) {
                     $model->cluster_id = ProjectClusters::find()->byCluster($cluster)->one()['id'];
                 } else {
                     $clusterModel = new ProjectClusters();
                     $clusterModel->cluster = $cluster;
                     $clusterModel->link('project', $model->project);
                     $clusterModel->save();
                     $model->cluster_id = $clusterModel->id;
                 }
             } else {
                 $model->cluster_id = NULL;
             }
             /* Image */
             if ($model->imageFile) {
                 $model->upload();
             }
             if ($model->deleteImage && !$model->imageFile) {
                 $model->picture = NULL;
             }
             $model->save();
             return $this->redirect(Url::toRoute('boxes/detail/' . $model->id));
         } else {
             if (isset($_POST['Boxes']['cluster'])) {
                 $model->cluster = Yii::$app->request->post('Boxes')['cluster'];
             }
         }
     }
     return $this->render('form', ['model' => $model, 'user' => $this->user, 'users' => Users::find()->select(['id', new \yii\db\Expression("CONCAT(username, ' (', fullname, ')') as username")])->all(), 'boxtypes' => Boxtypes::find()->all(), 'projects' => Projects::find()->select(['id', 'name'])->hasRights()->all()]);
 }
Ejemplo n.º 13
0
 /**
  * Displays a single Members model.
  * @param string $id
  * @return mixed
  */
 public function actionView($id)
 {
     $dataProviderForGroupAss = new ActiveDataProvider(['query' => GroupAssignments::find()]);
     $dataProviderForGroup = new ActiveDataProvider(['query' => Groups::find()]);
     $dataProviderForProject = new ActiveDataProvider(['query' => Projects::find()]);
     try {
         $modelPic = new UploadForm();
         if (Yii::$app->request->isPost) {
             $modelPic->file = UploadedFile::getInstance($modelPic, 'file');
             if ($modelPic->validate() && $modelPic !== null) {
                 $fileName = round(microtime(true) * 1000);
                 $uploadPath = 'uploads/' . $fileName . '.' . $modelPic->file->extension;
                 $modelPic->file->saveAs($uploadPath);
                 //save avatar to user
                 $model = $this->findModel($id);
                 $model->avatar = $uploadPath;
                 $model->save();
             }
         }
     } catch (\Exception $e) {
     }
     return $this->render('view', ['model' => $this->findModel($id), 'modelPic' => $modelPic, 'dataProviderForGroupAss' => $dataProviderForGroupAss, 'dataProviderForGroup' => $dataProviderForGroup, 'dataProviderForProject' => $dataProviderForProject]);
 }
Ejemplo n.º 14
0
 private function ajaxSub($id = 0)
 {
     Users::redirectIf(false);
     $member = Session::get('member');
     $project = Projects::findOrCreate('id', $id);
     if ($project->id == 0) {
         $dl = new \DateTime();
         $deadline = $dl->format('d/m/Y H:i');
         $url = Router::url('task:project.insert');
     } else {
         if ($project->id_leader != $member['id']) {
             return;
         }
         $dl = new \DateTime($project->deadline);
         $deadline = $dl->format('d/m/Y H:i');
         $url = Router::url('task:project.update', ['id' => $id]);
     }
     $this->set(['url' => $url, 'deadline' => explode(' ', $deadline), 'project' => $project]);
     $this->render('task/project_spec');
 }
Ejemplo n.º 15
0
 /**
  * @return \yii\db\ActiveQuery
  */
 public function getProjects()
 {
     return $this->hasMany(Projects::className(), ['cyclical_project_id' => 'cyclical_project_id']);
 }
Ejemplo n.º 16
0
 public function getBlur()
 {
     return Projects::getBlurOptions()[$this->blur];
 }
Ejemplo n.º 17
0
            ?>
<div class="help-block"><?php 
            echo $model->getErrors('checked_boxes')[0];
            ?>
</div><?php 
        }
        ?>
				</div>
			<?php 
    }
    ?>
			<?php 
    echo $form->field($model, 'count_completeness')->dropdownList(Visits::getCountCompletenessOptions());
    ?>
			<?php 
    echo $form->field($model, 'blur')->dropDownList(Projects::getBlurOptions());
    ?>
			<?php 
    echo $form->field($model, 'embargo')->widget(DatePicker::className(), ['type' => 1, 'options' => ['placeholder' => Yii::t('app', 'Selecteer datum')], 'pluginOptions' => ['format' => 'dd-mm-yyyy', 'todayHighlight' => true, 'autoclose' => true, 'weekStart' => 1]]);
    ?>
	    	<?php 
    echo $form->field($model, 'remarks')->widget(\yii\redactor\widgets\Redactor::className(), ['clientOptions' => ['buttons' => ['formatting', 'bold', 'italic', 'unorderedlist', 'orderedlist', 'outdent', 'indent', 'link', 'alignment', 'horizontalrule']]]);
    ?>
	    	<div class="form-group">
	            <?php 
    echo Html::submitButton(Yii::t('app', 'Opslaan'), ['class' => 'btn btn-primary pull-right']);
    ?>
	        </div>
	    <?php 
    ActiveForm::end();
    ?>
Ejemplo n.º 18
0
 /**
  * Finds the Projects model based on its primary key value.
  * If the model is not found, a 404 HTTP exception will be thrown.
  * @param integer $id
  * @return Projects the loaded model
  * @throws NotFoundHttpException if the model cannot be found
  */
 protected function findModel($id)
 {
     if (($model = Projects::findOne($id)) !== null) {
         return $model;
     } else {
         throw new NotFoundHttpException('The requested page does not exist.');
     }
 }
Ejemplo n.º 19
0
 public function show(Request $request, Response $response, $args)
 {
     $projects = new Projects($this->database);
     $this->view->render($response, 'project\\show.twig', array('projects' => $projects->GetAllProjects(), 'lang' => $this->language));
     return $response;
 }
Ejemplo n.º 20
0
 public function saveAction()
 {
     if (!$this->isXmlHttpRequest()) {
         throw new \Exception('Неверный тип запроса!');
     }
     $user = $this->session->getCurrentUser();
     $data = $this->request->getPost();
     if (!isset($data['id']) || !isset($data['projects_id']) || !isset($data['name']) || !isset($data['description']) || !isset($data['deadline']) || !isset($data['task_priority_id'])) {
         throw new \Exception('Неверный тип запроса!');
     }
     $data['id'] = (int) $data['id'];
     $data['projects_id'] = (int) $data['projects_id'];
     $data['name'] = trim(strip_tags($data['name']));
     $data['description'] = trim(strip_tags($data['description']));
     $data['deadline'] = trim($data['deadline']);
     $data['task_priority_id'] = (int) $data['task_priority_id'];
     if ($data['name'] == '' || $data['description'] == '' || $data['deadline'] == '') {
         throw new \Exception('Не заполнены обязательные поля!');
     }
     $tasksModel = new Tasks();
     $oldTask = array();
     if ($data['id'] > 0) {
         $oldTask = $tasksModel->getTasksDataById((int) $data['id']);
         if ($user->roles_id == 2) {
             if ($oldTask['task_status_id'] != 1) {
                 throw new Exception('Доступ запрещен!');
             }
             if (isset($data['task_status_id'])) {
                 unset($data['task_status_id']);
             }
             if (isset($data['initiator'])) {
                 unset($data['initiator']);
             }
             if (isset($data['date_added'])) {
                 unset($data['date_added']);
             }
         }
     }
     if (isset($data['add_file'])) {
         unset($data['add_file']);
     }
     $tasks_id = $tasksModel->save($data);
     $task = $tasksModel->getTasksDataById($tasks_id);
     if (!is_null($this->session->getUploadedFiles())) {
         $filesModel = new Files();
         foreach ($this->session->getUploadedFiles() as $filesId) {
             $filesModel->update(array('projects_id' => $task['projects_id'], 'tasks_id' => $task['id']), array('id' => (int) $filesId));
         }
         $this->session->unsetUploadedFiles();
     }
     if ($data['id'] > 0) {
         $this->view->task = $task;
     } else {
         if ($data['projects_id'] > 0) {
             $projectsModel = new Projects();
             $this->view->project = $projectsModel->getProjectsDataForEdit($data['projects_id']);
         } else {
             $this->view->task = $task;
         }
     }
     if ($data['id'] == 0) {
         $usersModel = new Users();
         $usersModel->setWhere(array('id' => 1));
         $result = $usersModel->select();
         $superAdmin = $result[0];
         $to = $superAdmin['user'];
         $subject = 'Поступила новая задача!';
         $message = 'Новая задача : ' . $task['name'] . "\n";
         $message .= 'По проекту: ' . ($task['p_name'] ? $task['p_name'] : 'Без проекта') . "\n";
         $message .= 'Приоритет: ' . $task['tp_name'] . "\n";
         $message .= 'Закончить до: ' . $task['deadline'] . "\n";
         $message .= 'Описание: ' . "\n";
         $message .= $task['description'];
         Mail::instance()->send($to, $subject, $message);
     }
     if ($data['id'] > 0 && isset($data['task_status_id']) && $data['task_status_id'] != $oldTask['task_status_id']) {
         $to = array();
         $usersModel = new Users();
         $usersModel->setWhere(array('id' => 1));
         $result1 = $usersModel->select();
         $to[] = $result1[0]['user'];
         $usersModel->setWhere(array('id' => (int) $task['executors_id']));
         $result2 = $usersModel->select();
         if ($result2 && $result2[0]['user'] != $result1[0]['user']) {
             $to[] = $result2[0]['user'];
         }
         $usersModel->setWhere(array('id' => (int) $task['initiator']));
         $result3 = $usersModel->select();
         $to[] = $result3[0]['user'];
         $subject = 'Изменение статуса задачи';
         $message = 'По задаче "' . $task['name'];
         $message .= '" сменился статус на ' . $task['ts_name'] . "\n";
         $message .= 'По проекту: ' . ($task['p_name'] ? $task['p_name'] : 'Без проекта');
         Mail::instance()->send($to, $subject, $message);
     }
     $this->view->user = $user;
 }
Ejemplo n.º 21
0
 public function getProject()
 {
     return $this->hasOne(Projects::className(), ['id' => 'project_id']);
 }
Ejemplo n.º 22
0
 public function removeAction()
 {
     if (!$this->isXmlHttpRequest()) {
         throw new \Exception('Неверный тип запроса!');
     }
     $data = $this->request->getPost();
     if (!isset($data['id'])) {
         throw new \Exception('Неверный тип запроса!');
     }
     $id = (int) $data['id'];
     $projectsModel = new Projects();
     $projectsModel->remove($id);
     exit;
 }
Ejemplo n.º 23
0
});
Route::get('/login', function () {
    return view('admin.login');
});
Route::post('/login', function () {
    if (Auth::check() || Auth::attempt(Input::only('email', 'password'))) {
        return redirect('admin');
    }
    return view('admin.login', ['msg' => 'Failed to login!']);
});
Route::get('/logout', function () {
    Auth::logout();
    return redirect('/');
});
Route::get('/blog', function () {
    return view('home');
});
Route::get('/contact', function () {
    return view('contact.contact');
});
Route::get('/projects', function () {
    return view('projects.projects', ['projects' => Projects::take(10)->get()]);
});
Route::get('/blogs', function () {
    $blogs = Article::take(10)->get();
    return view('blog.blogs', ['blogs' => $blogs]);
});
Route::get('/blog/{id}', function ($id) {
    $blog = Article::find($id);
    return view('blog.blog', ['blog' => $blog]);
});
Ejemplo n.º 24
0
<?php

use fedemotta\datatables\DataTables;
use yii\helpers\Html;
use yii\helpers\Url;
use app\models\Projects;
?>
<div class="table-responsive">
	<?php 
echo DataTables::widget(['dataProvider' => $dataProvider, 'filterModel' => $searchModel, 'columns' => [['attribute' => 'name', 'label' => Yii::t('app', 'Projectnaam'), 'value' => function ($model, $key, $index, $column) {
    return Html::a($model['name'], Url::toRoute('projects/detail/' . $model['id']));
}, 'format' => 'html'], ['label' => Yii::t('app', 'Laatste invoer'), 'value' => function ($model, $key, $index, $column) {
    return Projects::getLastEntryWithIdentifier($model['id']) ? Projects::getLastEntryWithIdentifier($model['id'])['date'] : "-";
}], ['label' => Yii::t('app', 'Aantal kasten'), 'value' => function ($model, $key, $index, $column) {
    return $model['boxcount'];
}]], 'clientOptions' => ['info' => false, 'responsive' => true, 'dom' => 'lfTrtip', 'tableTools' => ['aButtons' => [['sExtends' => 'copy', 'sButtonText' => Yii::t('app', 'Copy to clipboard')], ['sExtends' => 'csv', 'sButtonText' => Yii::t('app', 'Save to CSV')], ['sExtends' => 'pdf', 'sButtonText' => Yii::t('app', 'Save to PDF')], ['sExtends' => 'print', 'sButtonText' => Yii::t('app', 'Print')]]]]]);
?>
</div>
Ejemplo n.º 25
0
 public function getCounterProjects()
 {
     return $this->hasMany(Projects::className(), ['id' => 'project_id'])->viaTable('project_counters', ['user_id' => 'id']);
 }
Ejemplo n.º 26
0
 public function run()
 {
     $query = Projects::find();
     $data = Yii::$app->request->get('arr');
     if ('on' == $data['clear']) {
         $data = [];
     }
     $pagesize = 4;
     if (!empty($data)) {
         foreach ($data as $key => $val) {
             if ('price' == $key) {
                 switch ($val) {
                     case '1':
                         $query->where('price < :price', [':price' => 1000000]);
                         break;
                     case '2':
                         $query->where(['between', 'price', 1000000, 3000000]);
                         break;
                     case '3':
                         $query->where('price > :price', [':price' => 3000000]);
                         break;
                 }
             }
             if ('floor' == $key) {
                 switch ($val) {
                     case 1:
                         $query->andWhere('floor = :floor', [':floor' => 1]);
                         break;
                     case 2:
                         $query->andWhere('floor = :floor', [':floor' => 2]);
                         break;
                     case 3:
                         $query->andWhere('floor = :floor', [':floor' => 3]);
                         break;
                 }
             }
             if ('material' == $key) {
                 switch ($val) {
                     case 1:
                         $query->andWhere('material_brevno = :brevno', [':brevno' => 1]);
                         $pagesize = 3;
                         break;
                     case 2:
                         $query->andWhere('material_brus = :brus', [':brus' => 1]);
                         $pagesize = 8;
                         break;
                     case 3:
                         $query->andWhere('material_brevno = :brevno', [':brevno' => 1]);
                         $query->andWhere('material_brus = :brus', [':brus' => 1]);
                         break;
                 }
             }
             if ('area' == $key) {
                 switch ($val) {
                     case 1:
                         $query->andWhere('area < :area', [':area' => 100]);
                         break;
                     case 2:
                         $query->andWhere(['between', 'area', 100, 300]);
                         break;
                     case 3:
                         $query->andWhere('area > :area', [':area' => 300]);
                         break;
                 }
             }
         }
     }
     $countQuery = clone $query;
     $pages = new Pagination(['totalCount' => $countQuery->count(), 'pageSize' => $pagesize]);
     $pages->pageSizeParam = false;
     $models = $query->offset($pages->offset)->limit($pages->limit)->all();
     return $this->render('mywidget', ['projects' => $models, 'pages' => $pages]);
 }