public function update_thing()
 {
     if (Request::isMethod('post')) {
         $name = Input::get('name');
         $age = Input::get('age');
         $breed = Input::get('type');
         $likes = Input::get('notes');
         $token = Input::get('token');
         $owner_id = Input::get('id');
         $picture = Input::file('picture');
         $validator = Validator::make(array('token' => $token, 'owner_id' => $owner_id, 'age' => $age, 'picture' => $picture), array('token' => 'required', 'owner_id' => 'required|integer', 'age' => 'integer', 'picture' => 'mimes:jpeg,bmp,png'));
         if ($validator->fails()) {
             $error_messages = $validator->messages()->all();
             $response_array = array('success' => false, 'error' => 'Invalid Input', 'error_code' => 401, 'error_messages' => $error_messages);
             $response_code = 200;
         } else {
             $is_admin = $this->isAdmin($token);
             if ($owner_data = $this->getOwnerData($owner_id, $token, $is_admin)) {
                 // check for token validity
                 if (is_token_active($owner_data->token_expiry) || $is_admin) {
                     $dog_data = Dog::where('owner_id', $owner_id)->first();
                     if ($dog_data) {
                         $dog = Dog::find($dog_data->id);
                         if ($name) {
                             $dog->name = $name;
                         }
                         if ($age) {
                             $dog->age = $age;
                         }
                         if ($breed) {
                             $dog->breed = $breed;
                         }
                         if ($likes) {
                             $dog->likes = $likes;
                         }
                         if (Input::hasFile('picture')) {
                             // upload image
                             $file_name = time();
                             $file_name .= rand();
                             $file_name = sha1($file_name);
                             $ext = Input::file('picture')->getClientOriginalExtension();
                             Input::file('picture')->move(public_path() . "/uploads", $file_name . "." . $ext);
                             $local_url = $file_name . "." . $ext;
                             // Upload to S3
                             if (Config::get('app.s3_bucket') != "") {
                                 $s3 = App::make('aws')->get('s3');
                                 $pic = $s3->putObject(array('Bucket' => Config::get('app.s3_bucket'), 'Key' => $file_name, 'SourceFile' => public_path() . "/uploads/" . $local_url));
                                 $s3->putObjectAcl(array('Bucket' => Config::get('app.s3_bucket'), 'Key' => $file_name, 'ACL' => 'public-read'));
                                 $s3_url = $s3->getObjectUrl(Config::get('app.s3_bucket'), $file_name);
                             } else {
                                 $s3_url = asset_url() . '/uploads/' . $local_url;
                             }
                             $dog->image_url = $s3_url;
                         }
                         $dog->save();
                         $response_array = array('success' => true);
                         $response_code = 200;
                     } else {
                         $response_array = array('success' => false, 'error' => 'No Dog Found', 'error_code' => 405);
                         $response_code = 200;
                     }
                 } else {
                     $response_array = array('success' => false, 'error' => 'Token Expired', 'error_code' => 405);
                     $response_code = 200;
                 }
             } else {
                 if ($is_admin) {
                     $response_array = array('success' => false, 'error' => 'Owner ID not Found', 'error_code' => 410);
                 } else {
                     $response_array = array('success' => false, 'error' => 'Not a valid token', 'error_code' => 406);
                 }
                 $response_code = 200;
             }
         }
     }
     $response = Response::json($response_array, $response_code);
     return $response;
 }
 /**
  * Show the form for editing the specified resource.
  *
  * @param  int  $id
  * @return Response
  */
 public function edit($id)
 {
     $singleDog = Dog::find($id);
     $dogs = Dog::where('retired', '0')->where('banner', '1')->where('puppy', '0')->get();
     $dads[''] = 'select';
     $moms[''] = 'select';
     foreach ($dogs as $dog) {
         if ($dog->gender == 'Male') {
             $dads[$dog->name] = $dog->name;
         } else {
             $moms[$dog->name] = $dog->name;
         }
     }
     $data = ['moms' => $moms, 'dads' => $dads, 'singleDog' => $singleDog];
     return View::make('dogs.edit')->with($data);
 }