public function indexAction($offset = 0)
 {
     $this->permission('index');
     $this->load->library('pagination');
     $pm_issues = new \modules\pm\models\Pm_issues();
     $pm_issues->_select = "pm_issue_id, title, pm_issue_statues_id";
     $pm_issue_statues = new \modules\pm\models\Pm_issue_statues();
     $pm_issue_statues->_select = "pm_issue_statues_id, title, color";
     $pm_issue_statues->_limit = $this->config->get('limit');
     $pm_issue_statues->_offset = $offset;
     return $this->render('pm_sticky_issues/index', ['items' => $pm_issue_statues->get(), 'issues' => $pm_issues->get(), 'issue_model' => $pm_issues, 'pagination' => $this->Pagination->generate(['url' => Uri_helper::url('management/pm_sticky_issues/index'), 'total' => $pm_issue_statues->get(true), 'limit' => $pm_issue_statues->_limit, 'offset' => $pm_issue_statues->_offset])]);
 }
 function indexAction($id = false)
 {
     if (!$id) {
         return Brightery::error404();
     }
     $this->permission('index');
     $projects = new \modules\pm\models\Pm_projects();
     $projects->_select = "pm_project_id,title,about,deadline," . " (SELECT users.fullname FROM users WHERE users.user_id " . "= pm_projects.pm_supervisor_id) AS supervisor";
     $projects->pm_project_id = $id;
     $issues = new \modules\pm\models\Pm_issues();
     $issues->_select = "pm_issue_id,title";
     $issues->pm_project_id = $id;
     $team_result = $this->database->query("SELECT title,pm_teams.`pm_team_id` AS id\n                FROM pm_teams_projects JOIN pm_teams\n                ON pm_teams_projects.`pm_team_id` = pm_teams.`pm_team_id`\n                where pm_teams_projects.pm_project_id= {$id} ")->result();
     $member_result = [];
     foreach ($team_result as $value) {
         $member_result[] = ['team' => $value->title, 'member' => $this->database->query("SELECT  fullname , title\n                             FROM pm_team_users JOIN users\n                             ON pm_team_users.`user_id` = users.`user_id`                                                        \n                             JOIN pm_roles\n                             ON pm_team_users.`pm_role_id` = pm_roles.`pm_role_id`\n                             WHERE pm_team_users.pm_team_id={$value->id}\n                         ")->result()];
     }
     return $this->render('pm_project_details/index', ['item' => $projects->get(), 'issues' => $issues->get(), 'team_results' => $team_result, 'member_results' => $member_result]);
 }
 public function manageAction($id = false)
 {
     $userInfo = $this->permissions->getUserInformation();
     $this->permission('manage');
     $users = Form_helper::queryToDropdown('users', 'user_id', 'fullname');
     $priorities = Form_helper::queryToDropdown('pm_priorities', 'pm_priority_id', 'name');
     $projects = Form_helper::queryToDropdown('pm_projects', 'pm_project_id', 'title');
     $types = Form_helper::queryToDropdown('pm_issues_types', 'pm_issue_type_id', 'title');
     $attach = new \modules\pm\models\Pm_attachments(false);
     $assign = new \modules\pm\models\Pm_history(false);
     if ($id) {
         $model = new \modules\pm\models\Pm_issues('edit');
         $model->pm_issue_id = $id;
         $attach->pm_issue_id = $id;
         $assign->pm_issue_id = $id;
     } else {
         $model = new \modules\pm\models\Pm_issues('add');
         $model->set('created_time', date('Y-m-d H:i:s'));
     }
     $model->set(['title' => $this->input->post('title'), 'description' => $this->input->post('description'), 'pm_reviewer_id' => $this->input->post('pm_reviewer_id'), 'pm_project_id' => $this->input->post('pm_project_id'), 'pm_priority_id' => $this->input->post('pm_priority_id'), 'estimated_time' => $this->input->post('estimated_time'), 'deadline' => $this->input->post('deadline'), 'pm_issue_type_id' => $this->input->post('pm_issue_type_id'), 'pm_issue_statues_id' => $this->input->post('pm_issue_statues_id')]);
     if ($issue_id = $model->save()) {
         if (!$id) {
             if ($this->input->post('to_user_id')) {
                 $assign->set(['from_user_id' => $userInfo->user_id, 'to_user_id' => $this->input->post('to_user_id'), 'pm_issue_id' => $issue_id, 'actions' => 'assign', 'datetime' => date('Y-m-d H:i:s')]);
                 $assign->save();
             }
         }
         $attach->pm_issue_id = $issue_id;
         $attach->delete();
         foreach ($this->input->post('uploaded_files') as $file) {
             $attach->pm_issue_id = $issue_id;
             $attach->file_name = $file;
             $attach->attachment_type = 'issue';
             $attach->uploaded_time = date('Y-m-d H:i:s');
             $attach->save();
         }
         Uri_helper::redirect("management/pm_issues");
     } else {
         return $this->render('pm_issues/manage', ['item' => $id ? $model->get() : null, 'attach' => $id ? $attach->get() : null, 'users' => $users, 'pm_projects' => $projects, 'priority' => $priorities, 'assign' => $assign, 'types' => $types]);
     }
 }
 public function historyAction($id = false)
 {
     $this->layout = 'ajax';
     $model = new \modules\pm\models\Pm_history();
     $model->_select = "pm_history_id,actions,datetime,pm_issue_id,\n        (SELECT users.fullname FROM users WHERE users.user_id = pm_history.from_user_id) AS from_user,\n        (SELECT users.fullname FROM users WHERE users.user_id = pm_history.to_user_id) AS to_user\n        ";
     $issues = new \modules\pm\models\Pm_issues();
     $issues->_select = "pm_issue_id,title";
     $issues->pm_issue_id = $id;
     $model->_order_by['datetime'] = 'DESC';
     return $this->render('pm_issue_details/history', ['items' => $model->get(), 'issue' => $issues->get()]);
 }