示例#1
0
 function pickup($id)
 {
     $sm = new Shift_Model();
     $sm->include_related('user', 'id');
     $sm->get_by_id($id);
     if (!$sm->exists()) {
         return;
     }
     /* check if staff can pick up shifts */
     if (!$this->app_conf->get('staff_pick_shifts')) {
         return;
     }
     /* if it already has staff and not listed for trade then no */
     if ($sm->user_id && !$sm->has_trade) {
         return;
     }
     $staff = $this->auth->user();
     $relations = array('user' => $staff);
     $sm->has_trade = 0;
     $approval_required = $this->app_conf->get('approve_pick_shifts');
     if ($approval_required) {
         $sm->status = SHIFT_MODEL::STATUS_DRAFT;
     }
     $msg = lang('shift_pick_up');
     if ($sm->save($relations)) {
         $this->session->set_flashdata('message', $msg . ': ' . lang('common_ok'));
     } else {
         $error = $sm->error->all;
         $this->session->set_flashdata('error', $msg . ': ' . $error);
     }
     $return_to = $this->agent->referrer();
     $this->redirect($return_to);
     return;
 }
 public function up()
 {
     /* remove trades table and set the trade column for shifts for pending trades */
     if (!$this->db->field_exists('has_trade', 'shifts')) {
         $this->dbforge->add_column('shifts', array('has_trade' => array('type' => 'TINYINT', 'null' => FALSE, 'default' => 0)));
     }
     if ($this->db->table_exists('trades')) {
         // TRADE_MODEL:STATUS_PENDING - set the trade column
         $this->db->where('status', 1);
         $this->db->select('shift_id');
         $query = $this->db->get('trades');
         foreach ($query->result_array() as $row) {
             $sm = new Shift_Model();
             $sm->get_by_id($row['shift_id']);
             $sm->has_trade = 1;
             $sm->save();
         }
         // TRADE_MODEL:STATUS_APPROVED - remove current user
         $this->db->where('status', 2);
         $this->db->select('shift_id');
         $query = $this->db->get('trades');
         foreach ($query->result_array() as $row) {
             $sm = new Shift_Model();
             $sm->get_by_id($row['shift_id']);
             $sm->user->get();
             $sm->delete($sm->user, 'user');
             $sm->save();
         }
         // TRADE_MODEL:STATUS_ACCEPTED - switch the shift to the new user
         $this->db->where('status', 3);
         $this->db->select(array('shift_id', 'to_user_id'));
         $query = $this->db->get('trades');
         foreach ($query->result_array() as $row) {
             $sm = new Shift_Model();
             $sm->get_by_id($row['shift_id']);
             $um = new User_Model();
             $um->get_by_id($row['to_user_id']);
             $sm->save(array('user' => $um));
         }
         // TRADE_MODEL:STATUS_DENIED - DO NOTHING
         //			$this->db->where('status', 4);
         // TRADE_MODEL:STATUS_COMPLETED - DO NOTHING
         //			$this->db->where('status', 5);
     }
     /* now delete the trades table */
     if ($this->db->table_exists('trades')) {
         $this->dbforge->drop_table('trades');
     }
 }