/**
  * Update password
  * 
  * 1. Check new password
  * 2. Check old password
  * 3. Save password
  * @param id
  * @return redirect url
  */
 public function update()
 {
     //1. Check new password
     if (Input::has('password')) {
         $rules = ['password' => 'min:8|confirmed'];
         $validator = Validator::make(Input::only('password', 'password_confirmation'), $rules);
         if (!$validator->passes()) {
             $this->errors = $validator->errors();
             return $this->generateRedirectRoute('password.change.edit', ['id' => Input::get('password')]);
         }
     }
     //2. Check old password
     $APIMe = new APIMe();
     $me = $APIMe->getShow(true);
     if ($me['status'] != 'success') {
         \App::abort(404);
     }
     $apiUrl = '/oauth/access_token';
     $apiData = ['email' => $me['data']['email'], 'password' => Input::get('old_password'), 'grant_type' => 'password', 'client_id' => env('API_client_id'), 'client_secret' => env('API_client_secret')];
     $api = new API();
     $result = json_decode($api->post($apiUrl, $apiData), true);
     //3. Save password
     if ($result['status'] == "success") {
         Session::set('APIToken', $result['data']['token']['token']);
         Session::set('userID', $result['data']['me']['id']);
         $APIAdmin = new APIAdmin();
         $data = $APIAdmin->getShow($result['data']['me']['id']);
         $admin = $data['data'];
         if (strtotime($data['data']['date_of_birth'])) {
             $admin['date_of_birth'] = date('Y-m-d H:i:s', strtotime($data['data']['date_of_birth']));
         } else {
             $admin['date_of_birth'] = '';
         }
         $admin['password'] = Input::get('password');
         $result = $APIAdmin->postData($admin);
         //3b. Check Response
         if ($result['status'] != 'success') {
             $this->errors = $result['message'];
         }
         //3c. Return view
         if (!empty($id)) {
             $this->page_attributes->success = "Data Admin Telah Diedit";
         } else {
             $this->page_attributes->success = "Data Admin Telah Ditambahkan";
         }
         return $this->generateRedirectRoute('admin.dashboard');
     } else {
         return Redirect::route('auth.login');
     }
 }
 /**
  * Store an admin
  * 
  * 1. Check input
  * 2. Check data
  * 3. Save admin
  * 4. Check Response
  * 5. Return view
  * @param id
  * @return object view
  */
 public function store($id = null)
 {
     //1. Check input
     $inputName = Input::get('name');
     $inputEmail = Input::get('email');
     $inputRole = Input::get('role');
     if (Input::has('is_active')) {
         $inputIsActive = true;
     } else {
         $inputIsActive = false;
     }
     if (Input::has('password')) {
         $rules = ['password' => 'min:8|confirmed'];
         $validator = Validator::make(Input::only('password', 'password_confirmation'), $rules);
         if (!$validator->passes()) {
             $this->errors = $validator->errors();
             return $this->generateRedirectRoute('config.administrative.show', ['id' => Input::get('admin')]);
         }
     }
     $APIAdmin = new APIAdmin();
     //2. Check data
     if (!empty($id)) {
         $data = $APIAdmin->getShow($id);
         $admin['id'] = $data['data']['id'];
         $admin['name'] = $inputName;
         $admin['gender'] = $data['data']['gender'];
         if (strtotime($data['data']['date_of_birth'])) {
             $admin['date_of_birth'] = $data['data']['date_of_birth'];
         } else {
             $admin['date_of_birth'] = '';
         }
         $admin['email'] = $inputEmail;
         $admin['role'] = $inputRole;
         $admin['is_active'] = $inputIsActive;
     } else {
         $admin['name'] = $inputName;
         $admin['email'] = $inputEmail;
         $admin['role'] = $inputRole;
         $admin['is_active'] = $inputIsActive;
         $admin['id'] = '';
     }
     if (Input::has('password')) {
         $admin['password'] = Input::get('password');
     }
     //3. Save admin
     $result = $APIAdmin->postData($admin);
     //4. Check Response
     if ($result['status'] != 'success') {
         $this->errors = $result['message'];
     }
     //5. Return view
     if (!empty($id)) {
         $this->page_attributes->success = "Data Admin Telah Diedit";
     } else {
         $this->page_attributes->success = "Data Admin Telah Ditambahkan";
     }
     return $this->generateRedirectRoute('config.administrative.show', ['id' => Input::get('admin')]);
 }