コード例 #1
0
 /**
  * Save an edited work item
  *
  * @param string $workId
  * @return string
  */
 public function saveEditedWork($workId = '')
 {
     try {
         //User must be logged in
         if (!$this->auth->check()) {
             //Notify error
             $this->keeper->put('notificationError', 'You must log in to continue');
             //Return to login
             redirect('/login', 'location');
         }
         //Verify work edit capabilities
         if ($this->auth->user()->works()->whereId($workId)->count() != 1) {
             //Cannot edit
             throw new Exception('You do not have permission to edit this record', 403);
         }
         //Set validation rules
         $this->form_validation->set_rules('job_title', 'Job name', 'required|xss_clean');
         $this->form_validation->set_rules('company_name', 'Company name', 'required|xss_clean');
         $this->form_validation->set_rules('date_joined', 'Date Joined', 'required|xss_clean');
         //Apply validation rules
         if ($this->form_validation->run() === false) {
             //Keep error messages
             $this->errorBag->logValidationErrors(['job_title', 'company_name', 'date_joined'])->preserveInputs();
             //Go back to  edit page user page
             redirect($this->auth->user()->profile_uri . '/edit-work/' . $workId, 'location');
         }
         //Save the edited work data
         $results = $this->userRepo->editWork($this->auth->user(), $workId, ['job_title' => $this->input->post('job_title'), 'company_name' => $this->input->post('company_name'), 'date_joined' => Carbon::createFromFormat('d/m/Y', $this->input->post('date_joined'))->format('Y-m-d 00:00:00'), 'date_left' => $this->input->post('date_left') != '' && $this->input->post('date_left') != null ? Carbon::createFromFormat('d/m/Y', $this->input->post('date_left'))->format('Y-m-d 00:00:00') : null, 'is_current' => $this->input->post('date_left') == '']);
         //Could not save
         if ($results == null) {
             //Alert error to user
             throw new Exception('Could not save data.Try again later', 422);
         }
         //Notify success
         $this->keeper->put('notificationSuccess', 'Work experience updated');
         //All ok redirect to User profile
         redirect($this->auth->user()->profile_uri . '/about', 'location');
     } catch (Exception $e) {
         //Unexpected error
         //Notify error
         $this->keeper->put('notificationError', $e->getMessage());
         //Go back to profile page
         redirect($this->auth->user()->profile_uri . '/about', 'location');
     }
 }