public function update(Request $request, $id)
 {
     $input = \Input::all();
     $validator = Validator::make($input, ['server_id_text' => 'required|string|min:1', 'server_type_select' => 'required|string|min:1', 'host_text' => ["required", "Regex:/((https?|ftp)\\:\\/\\/)?([a-z0-9+!*(),;?&=\$_.-]+(\\:[a-z0-9+!*(),;?&=\$_.-]+)?@)?(([a-z0-9-.]*)\\.([a-z]{2,6}))|(([0-9]{1,3}\\.){3}[0-9]{1,3})(\\:[0-9]{2,5})?(\\/([a-z0-9+\$_-]\\.?)+)*\\/?(\\?[a-z+&\$_.-][a-z0-9;:@&%=+\\/\$_.-]*)?(#[a-z_.-][a-z0-9+\$_.-]*)?/i"], 'config.' . $input['server_type_select'] . '.port' => 'sometimes|required|numeric|min:1', 'config.' . $input['server_type_select'] . '.scheme' => 'sometimes|required|string|min:1', 'config.' . $input['server_type_select'] . '.username' => 'sometimes|required|string', 'config.' . $input['server_type_select'] . '.driver' => 'sometimes|required|string', 'config.' . $input['server_type_select'] . '.default-database-name' => 'sometimes|required|string']);
     if ($validator->fails()) {
         $messages = $validator->messages()->getMessages();
         $flash_message = '';
         foreach ($messages as $key => $value) {
             switch ($key) {
                 case 'server_id_text':
                     $flash_message = 'Name is blank or contains invalid characters (use a-z, A-Z, 0-9, . and -)';
                     break;
                 case 'server_type_select':
                     $flash_message = 'Type is not selected';
                     break;
                 case 'host_text':
                     $flash_message = 'Host format is invalid (use subdomain.domain.tld)';
                     break;
                 case 'config.' . $input['server_type_select'] . '.port':
                     $flash_message = 'Port must be an integer and larger than 0';
                     break;
                 case 'config.' . $input['server_type_select'] . '.scheme':
                     $flash_message = 'Protocol is not selected';
                     break;
                 case 'config.' . $input['server_type_select'] . '.username':
                     $flash_message = 'User Name is blank or contains invalid characters (use a-z, A-Z, 0-9, . and -)';
                     break;
                 case 'config.' . $input['server_type_select'] . '.driver':
                     $flash_message = 'Driver is blank or contains invalid characters (use a-z, A-Z, 0-9, . and -)';
                     break;
                 case 'config.' . $input['server_type_select'] . '.default-database-name':
                     $flash_message = 'Default is blank or Database Name contains invalid characters (use a-z, A-Z, 0-9, . and -)';
                     break;
             }
             break;
         }
         Session::flash('flash_message', $flash_message);
         Session::flash('flash_type', 'alert-danger');
         return redirect('/v1/servers/' . $id . '/edit')->withInput();
     }
     try {
         $input = \Input::all();
         $type = $input['server_type_select'];
         $input_config = $input['config'][$type];
         $input['config_text'] = $input_config;
         if ($type == 'db') {
             $input['server_type_id'] = 1;
         }
         if ($type == 'web') {
             $input['server_type_id'] = 2;
         }
         if ($type == 'app') {
             $input['server_type_id'] = 3;
         }
         unset($input['_method']);
         unset($input['_token']);
         unset($input['config']);
         unset($input['server_type_select']);
         $server = Server::find($id);
         $server->update($input);
         $result_text = 'The server "' . $input['server_id_text'] . '" was updated successfully!';
         $result_status = 'alert-success';
         $_redirect = '/';
         $_redirect .= $this->_prefix;
         $_redirect .= '/servers';
         return \Redirect::to($_redirect)->with('flash_message', $result_text)->with('flash_type', $result_status);
     } catch (QueryException $e) {
         Session::flash('flash_message', 'An error occurred! Check for errors and try again.');
         Session::flash('flash_type', 'alert-danger');
         return \Redirect::to('/v1/servers/' . $id . '/edit')->withInput();
     }
 }