public function update(Request $request, $id) { $cluster_data = \Input::all(); $_validator = Validator::make($cluster_data, ['cluster_id_text' => 'required|string', 'subdomain_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"], 'web_server_id' => 'required|string', 'db_server_id' => 'required|string', 'app_server_id' => 'required|string']); if ($_validator->fails()) { $messages = $_validator->messages()->getMessages(); $flash_message = ''; foreach ($messages as $key => $value) { switch ($key) { case 'cluster_id_text': $flash_message = 'Name is blank or contain invalid characters (use a-z, A-Z, 0-9, . and -)'; break; case 'subdomain_text': $flash_message = 'Fixed DNS Subdomain is blank or format is invalid (use subdomain.domain.tld)'; break; case 'web_server_id': $flash_message = 'Select Web Server'; break; case 'db_server_id': $flash_message = 'Select Database Server'; break; case 'app_server_id': $flash_message = 'Select App Server'; break; } break; } Session::flash('flash_message', $flash_message); Session::flash('flash_type', 'alert-danger'); return redirect($this->makeRedirectUrl('clusters', $id . '/edit'))->withInput(); } $servers = $cluster_data['_server_list']; unset($cluster_data['_method']); unset($cluster_data['_token']); unset($cluster_data['_server_list']); try { ClusterServer::where('cluster_id', '=', $id)->delete(); $add = ['server_id' => intval($cluster_data['web_server_id']), 'cluster_id' => intval($id)]; ClusterServer::create($add); $add = ['server_id' => intval($cluster_data['db_server_id']), 'cluster_id' => intval($id)]; ClusterServer::create($add); $add = ['server_id' => intval($cluster_data['app_server_id']), 'cluster_id' => intval($id)]; ClusterServer::create($add); unset($cluster_data['web_server_id']); unset($cluster_data['db_server_id']); unset($cluster_data['app_server_id']); /* $cluster_assigned_servers_array = []; if (!empty($servers)) { $cluster_assigned_servers_array = array_map('intval', explode(',', $servers)); } $cluster_server_list = ClusterServer::where('cluster_id', '=', $id)->select(['server_id'])->get(); $server_ids = []; foreach ($cluster_server_list as $value) { array_push($server_ids, intval($value->server_id)); } $servers_remove = array_diff($server_ids, $cluster_assigned_servers_array); foreach (array_values($servers_remove) as $value) { ClusterServer::where('server_id', '=', intval($value))->where('cluster_id', '=', intval($id))->delete(); } $servers_add = array_diff($cluster_assigned_servers_array, $server_ids); foreach (array_values($servers_add) as $value) { $add = ['server_id' => intval($value), 'cluster_id' => intval($id)]; ClusterServer::create($add); } */ if (!Cluster::find($id)->update($cluster_data)) { throw new DatabaseException('Unable to update cluster "' . $id . '"'); } \Session::flash('flash_message', 'The server "' . $cluster_data['cluster_id_text'] . '" was updated successfully!'); \Session::flash('flash_type', 'alert-success'); return \Redirect::to($this->makeRedirectUrl('clusters')); //return \Redirect::to($this->makeRedirectUrl('clusters', //['flash_message' => $result_text, 'flash_type' => $result_status])); } catch (QueryException $e) { //$res_text = $e->getMessage(); \Session::flash('flash_message', 'An error occurred! Check for errors and try again.'); \Session::flash('flash_type', 'alert-danger'); return redirect('/' . $this->getUiPrefix() . '/clusters/' . $id . '/edit')->withInput(); } }