public function action_addtask($project_id)
 {
     if (!($project = Model_Project::find($project_id))) {
         \Fuel\Core\Session::set_flash('error', "Cannot find the selected project # {$project_id}");
         \Fuel\Core\Response::redirect_back('user/projects');
     }
     $val = Model_Projecttask::validate('create');
     if (\Fuel\Core\Input::method() == 'POST') {
         if ($val->run()) {
             $projecttask = Model_Projecttask::forge(array('project_id' => Input::post('project_id'), 'user_id' => Input::post('user_id'), 'project_task_name_id' => Input::post('project_task_name_id'), 'hourly_rate' => Input::post('hourly_rate'), 'task_status' => 0, 'task_due' => Input::post('task_due'), 'project_task_description' => Input::post('project_task_description'), 'comment' => Input::post('comment'), 'priority' => Input::post('priority')));
             if ($projecttask and $projecttask->save()) {
                 Session::set_flash('success', e('Added task #' . $projecttask->id . '.'));
                 Response::redirect('user/projects/view/' . $project_id);
             } else {
                 Session::set_flash('error', e('Could not save task.'));
             }
         } else {
             \Fuel\Core\Session::set_flash('error', $val->error());
         }
     }
     $this->load_presenter($project, Model_Projecttask::forge(array('id' => 0, 'project_id' => $project->id, 'user_id' => $this->current_user->id, 'task_status' => 0, 'hourly_rate' => 456, 'task_due' => date('Y-m-d'))));
     $this->template->set_global('project_task_names', Model_Projecttaskname::find('all', array('order_by' => array(array('name', 'asc')))));
     $this->template->set_global('users', array(Model_User::find($this->current_user->id)));
     $this->template->set_global('priorities', THelper::get_priorities());
     $this->template->title = 'My Projects';
     $this->template->content = Fuel\Core\View::forge('user/projects/addtask');
 }
示例#2
0
 public function update($id)
 {
     $project = Model_Project::find($id);
     $this->response = new Monty_Response_HTML();
     if (empty($project)) {
         $this->notFound($id);
     } else {
         $errors = array();
         if (empty($this->request->post['name'])) {
             $errors[] = "Name must not be blank.";
         } else {
             $project->name = $this->request->post['name'];
         }
         if (empty($this->request->post['description'])) {
             $errors[] = "Description must not be blank.";
         } else {
             $project->description = $this->request->post['description'];
         }
         $project->is_active = !empty($this->request->post['is_active']);
         if (empty($errors)) {
             if (!$project->store()) {
                 $errors[] = 'An error occurred while saving your changes!';
             } else {
                 $this->response->assign('success', 'Your changes have been saved!');
             }
         }
         $this->response->assign('errors', $errors);
         $this->renderProject($project);
     }
     return $this->response;
 }
示例#3
0
 public function action_delete($id = null)
 {
     if ($project = Model_Project::find($id)) {
         $project->delete();
         Session::set_flash('success', e('Deleted project #' . $id));
     } else {
         Session::set_flash('error', e('Could not delete project #' . $id));
     }
     Response::redirect('admin/projects');
 }
示例#4
0
 public function action_index()
 {
     $data['open_tasks'] = THelper::get_tasks(0, 0, 0, date('m'), date('Y'), 0);
     $view = \Fuel\Core\View::forge('admin/tasks/index');
     $view->set_global('admin', true);
     $view->set_global('open_tasks', $data['open_tasks']);
     $view->set_global('clients', Model_Customer::find('all', array('order_by' => array('name' => 'asc'))));
     $view->set_global('users', Model_User::find('all', array('order_by' => array('username' => 'asc'))));
     $view->set_global('years', range(2015, date('Y')));
     $view->set_global('months', THelper::get_months_array());
     $view->set_global('projects', Model_Project::find('all', array('order_by' => 'name')));
     $this->template->title = 'Open Tasks';
     $this->template->content = $view;
 }
示例#5
0
 public function action_filter()
 {
     $user_id = \Fuel\Core\Input::param('user_id', $this->current_user->id);
     $client_id = Fuel\Core\Input::param('client_id', 0);
     $project_id = \Fuel\Core\Input::param('project_id', 0);
     $month = Fuel\Core\Input::param('month', '00');
     $year = Fuel\Core\Input::param('year', date('Y'));
     $status = 0;
     $data['open_tasks'] = THelper::get_tasks($this->current_user->id, $client_id, $project_id, $month, $year, $status, array(\Fuel\Core\Input::param('sort', 'priority') => \Fuel\Core\Input::param('order', 0)));
     $view = \Fuel\Core\View::forge('user/tasks/index');
     $view->set_global('open_tasks', $data['open_tasks']);
     $view->set_global('admin', false);
     $view->set_global('clients', Model_Customer::find('all', array('order_by' => array('name' => 'asc'))));
     $view->set_global('users', Model_User::find('all', array('order_by' => array('username' => 'asc'), 'where' => array(array('id', $this->current_user->id)))));
     $view->set_global('projects', Model_Project::find('all', array('order_by' => array('name' => 'asc'))));
     $view->set_global('years', range(2015, date('Y')));
     $view->set_global('months', THelper::get_months_array());
     $this->template->user_is_admin = $this->check_user_is_admin();
     $this->template->title = 'Open Tasks';
     $this->template->content = $view;
 }
 public function action_logtimes($timestamp = null)
 {
     if (!Auth\Auth::has_access('timesheets.read')) {
         Fuel\Core\Session::set_flash('error', 'You do not have access to view timesheets');
         Fuel\Core\Response::redirect('user');
     }
     if (!$timestamp) {
         $timestamp = \Fuel\Core\Date::forge()->get_timestamp();
         // today
     }
     if (Fuel\Core\Input::method() == 'POST') {
         try {
             // start a db transaction
             \Fuel\Core\DB::start_transaction();
             // find all logs for this task for this day
             $date = date('Y-m-d', $timestamp);
             $starts = date('Y-m-d 00:00:00', $timestamp);
             $ends = date('Y-m-d 23:59:59', $timestamp);
             $project_task_logs = Model_Projecttasklog::find('all', array('related' => array('project_task'), 'where' => array(array('project_task.user_id', $this->current_user->id), array('task_started', 'BETWEEN', array($starts, $ends)))));
             foreach ($project_task_logs as $log) {
                 $date_starts = date('Y-m-d', $timestamp);
                 $date_ends = date('Y-m-d 23:59:59', $timestamp);
                 if ($log->get_project_task()->user_id == $this->current_user->id) {
                     if (in_array(strtotime($log->task_started), range(strtotime($date_starts), strtotime($date_ends)))) {
                         // delete the logs
                         $log->delete();
                     }
                 }
             }
             // insert new logs
             if (Fuel\Core\Input::post('timeslots')) {
                 $date = date('Y-m-d', $timestamp);
                 $last_comment = '';
                 $last_task_id = '';
                 foreach (Fuel\Core\Input::post('timeslots') as $str) {
                     $times = explode('_', $str);
                     $is_billable = 0;
                     $task_started = $date . ' ' . $times[0] . ':00';
                     $task_completed = $date . ' ' . $times[1] . ':00';
                     $project_task_id_array = Fuel\Core\Input::post('project_task_id');
                     $task_id = $project_task_id_array["'{$str}'"];
                     if (Fuel\Core\Input::post('comment_' . $str) != '') {
                         $last_comment = Fuel\Core\Input::post('comment_' . $str);
                     }
                     if (intval(Fuel\Core\Input::post('is_billable_' . $str, '0')) == 1) {
                         $is_billable = 1;
                     }
                     if (empty($task_id)) {
                         $task_id = $last_task_id;
                     } else {
                         $last_task_id = $task_id;
                     }
                     if (empty($task_id)) {
                         continue;
                         // todo - display error
                     }
                     $task_log = Model_Projecttasklog::forge(array('project_task_id' => $task_id, 'comment' => $last_comment, 'task_started' => $task_started, 'task_completed' => $task_completed, 'is_billable' => $is_billable));
                     $task_log->save();
                 }
             }
             // commit to database
             \Fuel\Core\DB::commit_transaction();
             \Fuel\Core\Session::set_flash('success', 'Time logs saved successfully.');
             Fuel\Core\Response::redirect('user/timesheets/index/' . $timestamp);
         } catch (Exception $ex) {
             // rollback on error
             \Fuel\Core\DB::rollback_transaction();
             \Fuel\Core\Session::set_flash('error', $ex->getMessage());
             Fuel\Core\Response::redirect('user/timesheets/advanced/logtimes/' . $timestamp);
         }
     }
     $now = \Fuel\Core\Date::forge($timestamp)->format('mysql');
     $day_starts = date('Y-m-d 00:00:00', strtotime($now));
     $day_ends = date('Y-m-d 23:59:59', strtotime($now));
     $today_logs = Model_Projecttasklog::find('all', array('related' => array('project_task', 'project_task.project', 'project_task.project_task_name', 'project_task.user'), 'where' => array(array('task_started', 'BETWEEN', array($day_starts, $day_ends)), array('project_task.user_id', $this->current_user->id)), 'order_by' => array(array('task_started', 'asc'))));
     // todo: use DB::query() instead
     $this->template->set_global('today_logs', $today_logs);
     $this->template->set_global('projects', Model_Project::find('all', array('order_by' => array(array('name', 'asc')))));
     $this->template->set_global('timezones', Model_Timezone::find('all', array('order_by' => array(array('starts', 'asc')))));
     $this->template->set_global('my_tasks', Model_Projecttask::find('all', array('where' => array(array('user_id', $this->current_user->id)), 'related' => array('project_task_name'), 'order_by' => array(array('project_task_description', 'asc')))));
     $this->template->set_global('timestamp', $timestamp);
     $this->template->set_global('date', \Fuel\Core\Date::forge($timestamp)->format('mysql_date'));
     $this->template->title = 'Timesheets';
     $this->template->content = View::forge('user/timesheets/advanced/_advanced_form');
 }
示例#7
0
文件: project.php 项目: vano00/todo
 public function action_change_tasks_order()
 {
     if (Input::is_ajax()) {
         $project = Model_Project::find(intval(Input::post('project_id')));
         // Changing the rank property according to the
         // list of ids received by the controller
         $task_ids = Input::post('task_ids');
         for ($i = 0; $i < count($task_ids); $i++) {
             $task_id = intval($task_ids[$i]);
             $project->tasks[$task_id]->rank = $i;
         }
         $project->save();
     }
     return false;
     // we return no content at all
 }