public function updateProviderProfile()
 {
     foreach (Input::get('service') as $key) {
         $serv = ProviderType::where('id', $key)->first();
         $pserv[] = $serv->name;
     }
     $walker_id = Session::get('walker_id');
     $first_name = Input::get('first_name');
     $last_name = Input::get('last_name');
     $phone = Input::get('phone');
     $picture = Input::file('picture');
     $bio = Input::get('bio');
     $address = Input::get('address');
     $state = Input::get('state');
     $country = Input::get('country');
     $zipcode = Input::get('zipcode');
     $timezone = Input::get('timezone');
     $car_number = trim(Input::get('car_number'));
     $car_model = trim(Input::get('car_model'));
     $validator = Validator::make(array('picture' => $picture), array('picture' => ''));
     if ($validator->fails()) {
         $error_messages = $validator->messages();
         Log::info('picture type not valid. Error = ' . print_r($error_messages, true));
         return Redirect::to('/provider/profile')->with('error', 'Invalid image format (Allowed formats jpeg,bmp and png)');
     } else {
         $walker = Walker::find($walker_id);
         if (Input::hasFile('picture')) {
             if ($walker->picture != "") {
                 $path = $walker->picture;
                 Log::info($path);
                 $filename = basename($path);
                 Log::info($filename);
                 unlink(public_path() . "/uploads/" . $filename);
             }
             // 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;
             }
             if (isset($walker->picture)) {
                 if ($walker->picture != "") {
                     $icon = $walker->picture;
                     unlink_image($icon);
                 }
             }
             $walker->picture = $s3_url;
         }
         if ($car_number != "") {
             $walker->car_number = $car_number;
         }
         if ($car_model != "") {
             $walker->car_model = $car_model;
         }
         $walker->first_name = $first_name;
         $walker->last_name = $last_name;
         $walker->phone = $phone;
         $walker->bio = $bio;
         $walker->address = $address;
         $walker->state = $state;
         $walker->country = $country;
         $walker->zipcode = $zipcode;
         $walker->timezone = $timezone;
         $walker->save();
         foreach (Input::get('service') as $ke) {
             $proviserv = ProviderServices::where('provider_id', $walker->id)->first();
             if ($proviserv != NULL) {
                 DB::delete("delete from walker_services where provider_id = '" . $walker->id . "';");
             }
         }
         $base_price = Input::get('service_base_price');
         $service_price_distance = Input::get('service_price_distance');
         $service_price_time = Input::get('service_price_time');
         Log::info('service = ' . print_r(Input::get('service'), true));
         /* $cnkey = Input::get('noOfTypes'); */
         $cnkey = count(Input::get('service'));
         $type_id = trim(Input::get('service')[0]);
         $walker->type = $type_id;
         $walker->save();
         Log::info('cnkey = ' . print_r($cnkey, true));
         Log::info('service_base_price = ' . print_r($base_price, true));
         Log::info('service_price_distance = ' . print_r($service_price_distance, true));
         Log::info('service_price_time = ' . print_r($service_price_time, true));
         $key = Input::get('service');
         /* for ($i = 0; $i < $cnkey; $i++) { */
         /* if (isset($key[$i])) {
                       $prserv = new ProviderServices;
                       $prserv->provider_id = $walker->id;
                       $prserv->type = $key[$i];
                       Log::info('key = ' . print_r($key, true));
                       if (Input::has('service_base_price')) {
                       $prserv->base_price = $base_price[$i];
                       } else {
                       $prserv->base_price = 0;
                       }
                       if (Input::has('service_price_distance')) {
         
                       $prserv->price_per_unit_distance = $service_price_distance[$i];
                       } else {
                       $prserv->price_per_unit_distance = 0;
                       }
                       if (Input::has('service_price_time')) {
                       $prserv->price_per_unit_time = $service_price_time[$i];
                       } else {
                       $prserv->price_per_unit_time = 0;
                       }
                       $prserv->save();
                       } */
         /* print_r($key);
            print_r($service_price_time); */
         /* foreach (Input::get('service') as $key) { */
         $prserv = new ProviderServices();
         $prserv->provider_id = $walker->id;
         $prserv->type = $type_id;
         $walker->type = $type_id;
         $walker->save();
         /* Log::info('key = ' . print_r($key, true)); */
         if (Input::has('service_base_price')) {
             $prserv->base_price = $base_price[$type_id];
         } else {
             $prserv->base_price = 0;
         }
         if (Input::has('service_price_distance')) {
             $prserv->price_per_unit_distance = $service_price_distance[$type_id];
         } else {
             $prserv->price_per_unit_distance = 0;
         }
         if (Input::has('service_price_time')) {
             $prserv->price_per_unit_time = $service_price_time[$type_id];
         } else {
             $prserv->price_per_unit_time = 0;
         }
         $prserv->save();
         /* } 
            } */
         return Redirect::to('/provider/profile')->with('message', 'Your profile has been updated successfully')->with('type', 'success');
     }
 }
 public function provider_services_update()
 {
     $token = Input::get('token');
     $walker_id = Input::get('id');
     $validator = Validator::make(array('token' => $token, 'walker_id' => $walker_id), array('token' => 'required', 'walker_id' => 'required|integer'));
     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;
         Log::info('validation error =' . print_r($response_array, true));
     } else {
         $is_admin = $this->isAdmin($token);
         if ($walker_data = $this->getWalkerData($walker_id, $token, $is_admin)) {
             // check for token validity
             if (is_token_active($walker_data->token_expiry) || $is_admin) {
                 foreach (Input::get('service') as $key) {
                     $serv = ProviderType::where('id', $key)->first();
                     $pserv[] = $serv->name;
                 }
                 foreach (Input::get('service') as $ke) {
                     $proviserv = ProviderServices::where('provider_id', $walker_id)->first();
                     if ($proviserv != NULL) {
                         DB::delete("delete from walker_services where provider_id = '" . $walker_id . "';");
                     }
                 }
                 $base_price = Input::get('service_base_price');
                 $service_price_distance = Input::get('service_price_distance');
                 $service_price_time = Input::get('service_price_time');
                 foreach (Input::get('service') as $key) {
                     $prserv = new ProviderServices();
                     $prserv->provider_id = $walker_id;
                     $prserv->type = $key;
                     $prserv->base_price = $base_price[$key - 1];
                     $prserv->price_per_unit_distance = $service_price_distance[$key - 1];
                     $prserv->price_per_unit_time = $service_price_time[$key - 1];
                     $prserv->save();
                 }
                 $response_array = array('success' => true);
                 $response_code = 200;
                 Log::info('success = ' . print_r($response_array, true));
             } 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' => 'Walker 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);
     Log::info('repsonse final = ' . print_r($response, true));
     return $response;
 }
 public function update_walker()
 {
     if (Input::get('id') != 0) {
         $walker = Walker::find(Input::get('id'));
     } else {
         $findWalker = Walker::where('email', Input::get('email'))->first();
         if ($findWalker) {
             Session::put('new_walker', 0);
             $error_messages = "This Email Id is already registered.";
             Session::put('msg', $error_messages);
             $title = ucwords("Add" . trans('customize.Provider'));
             /* 'Add Provider' */
             return View::make('add_walker')->with('title', $title)->with('page', 'walkers');
         } else {
             Session::put('new_walker', 1);
             $walker = new Walker();
         }
     }
     if (Input::has('service') != NULL) {
         foreach (Input::get('service') as $key) {
             $serv = ProviderType::where('id', $key)->first();
             $pserv[] = $serv->name;
         }
     }
     $first_name = Input::get('first_name');
     $last_name = Input::get('last_name');
     $email = Input::get('email');
     $phone = Input::get('phone');
     $bio = Input::get('bio');
     $address = Input::get('address');
     $state = Input::get('state');
     $country = Input::get('country');
     $zipcode = Input::get('zipcode');
     $validator = Validator::make(array('first_name' => $first_name, 'last_name' => $last_name, 'email' => $email, 'phone' => $phone, 'bio' => $bio, 'state' => $state, 'country' => $country, 'zipcode' => $zipcode), array('first_name' => 'required', 'last_name' => 'required', 'email' => 'required|email', 'phone' => 'required', 'bio' => 'required', 'state' => 'required', 'country' => 'required', 'zipcode' => 'required|integer'));
     if ($validator->fails()) {
         $error_messages = $validator->messages()->first();
         Session::put('msg', $error_messages);
         $title = ucwords("Add" . trans('customize.Provider'));
         /* 'Add Provider' */
         return View::make('add_walker')->with('title', $title)->with('page', 'walkers');
     } else {
         $walker->first_name = Input::get('first_name');
         $walker->last_name = Input::get('last_name');
         $walker->email = Input::get('email');
         $walker->phone = Input::get('phone');
         $walker->bio = Input::get('bio');
         $walker->address = Input::get('address');
         $walker->state = Input::get('state');
         // adding password to new provider
         $new_password = time();
         $new_password .= rand();
         $new_password = sha1($new_password);
         $new_password = substr($new_password, 0, 8);
         /* $walker->password = Hash::make($new_password); */
         $walker->country = Input::get('country');
         $walker->zipcode = Input::get('zipcode');
         $walker->is_approved = 1;
         $walker->email_activation = 1;
         $car_number = trim(Input::get('car_number'));
         if ($car_number != "") {
             $walker->car_number = $car_number;
         }
         $car_model = trim(Input::get('car_model'));
         if ($car_model != "") {
             $walker->car_model = $car_model;
         }
         if (Input::hasFile('pic')) {
             /* if ($walker->picture != "") {
                               $path = $walker->picture;
                               Log::info($path);
                               $filename = basename($path);
                               Log::info($filename);
                               try {
                               unlink(public_path() . "/uploads/" . $filename);
                               } catch (Exception $e) {
             
                               }
                               } */
             // Upload File
             $file_name = time();
             $file_name .= rand();
             $ext = Input::file('pic')->getClientOriginalExtension();
             Input::file('pic')->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;
             }
             if (isset($walker->picture)) {
                 if ($walker->picture != "") {
                     $icon = $walker->picture;
                     unlink_image($icon);
                 }
             }
             $walker->picture = $s3_url;
         }
         $walker->save();
         if (Session::get('new_walker') == 1) {
             // send email
             $settings = Settings::where('key', 'email_forgot_password')->first();
             $pattern = $settings->value;
             $pattern = "Hi, " . Config::get('app.website_title') . " is Created a New Account for you , Your Username is:" . Input::get('email') . " and Your Password is " . $new_password . ". Please dont forget to change the password once you log in next time.";
             $subject = "Welcome On Board";
             /* email_notification($walker->id, 'walker', $pattern, $subject); */
         }
         if (Input::has('service') != NULL) {
             foreach (Input::get('service') as $ke) {
                 $proviserv = ProviderServices::where('provider_id', $walker->id)->first();
                 if ($proviserv != NULL) {
                     DB::delete("delete from walker_services where provider_id = '" . $walker->id . "';");
                 }
             }
             $base_price = Input::get('service_base_price');
             $service_price_distance = Input::get('service_price_distance');
             $service_price_time = Input::get('service_price_time');
             Log::info('service = ' . print_r(Input::get('service'), true));
             $cnkey = count(Input::get('service'));
             $type_id = trim(Input::get('service')[0]);
             Log::info('cnkey = ' . print_r($cnkey, true));
             /* for ($i = 1; $i <= $cnkey; $i++) { */
             /* foreach (Input::get('service') as $key) { */
             $prserv = new ProviderServices();
             $prserv->provider_id = $walker->id;
             $prserv->type = $type_id;
             $walker->type = $type_id;
             $walker->save();
             /* Log::info('key = ' . print_r($key, true)); */
             if (Input::has('service_base_price')) {
                 $prserv->base_price = $base_price[$type_id];
             } else {
                 $prserv->base_price = 0;
             }
             if (Input::has('service_price_distance')) {
                 $prserv->price_per_unit_distance = $service_price_distance[$type_id];
             } else {
                 $prserv->price_per_unit_distance = 0;
             }
             if (Input::has('service_price_distance')) {
                 $prserv->price_per_unit_time = $service_price_time[$type_id];
             } else {
                 $prserv->price_per_unit_distance = 0;
             }
             $prserv->save();
             /* } */
             /* } */
         }
         return Redirect::to("/admin/providers");
     }
 }
 public function updateProviderProfile()
 {
     foreach (Input::get('service') as $key) {
         $serv = ProviderType::where('id', $key)->first();
         $pserv[] = $serv->name;
     }
     $walker_id = Session::get('walker_id');
     $first_name = Input::get('first_name');
     $last_name = Input::get('last_name');
     $email = Input::get('email');
     $phone = Input::get('phone');
     $picture = Input::file('picture');
     $bio = Input::get('bio');
     $address = Input::get('address');
     $state = Input::get('state');
     $country = Input::get('country');
     $zipcode = Input::get('zipcode');
     $walker = Walker::find($walker_id);
     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;
         }
         $walker->picture = $s3_url;
     }
     $walker->first_name = $first_name;
     $walker->last_name = $last_name;
     $walker->email = $email;
     $walker->phone = $phone;
     $walker->bio = $bio;
     $walker->address = $address;
     $walker->state = $state;
     $walker->country = $country;
     $walker->zipcode = $zipcode;
     $walker->save();
     foreach (Input::get('service') as $ke) {
         $proviserv = ProviderServices::where('provider_id', $walker->id)->first();
         if ($proviserv != NULL) {
             DB::delete("delete from walker_services where provider_id = '" . $walker->id . "';");
         }
     }
     $base_price = Input::get('service_base_price');
     $service_price_distance = Input::get('service_price_distance');
     $service_price_time = Input::get('service_price_time');
     foreach (Input::get('service') as $key) {
         $prserv = new ProviderServices();
         $prserv->provider_id = $walker->id;
         $prserv->type = $key;
         $prserv->base_price = $base_price[$key - 1];
         $prserv->price_per_unit_distance = $service_price_distance[$key - 1];
         $prserv->price_per_unit_time = $service_price_time[$key - 1];
         $prserv->save();
     }
     return Redirect::to('/provider/profile')->with('message', 'Your profile has been updated successfully')->with('type', 'success');
 }