| 
									
										
										
										
											2022-03-06 02:02:12 +11:00
										 |  |  | <?php | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | namespace App\Http\Controllers; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-03-06 02:58:25 +11:00
										 |  |  | use App\Models\IPs; | 
					
						
							| 
									
										
										
										
											2022-03-06 02:02:12 +11:00
										 |  |  | use App\Models\Labels; | 
					
						
							|  |  |  | use App\Models\Pricing; | 
					
						
							|  |  |  | use App\Models\Server; | 
					
						
							| 
									
										
										
										
											2022-05-15 01:21:51 +10:00
										 |  |  | use App\Models\Settings; | 
					
						
							| 
									
										
										
										
											2022-03-06 02:02:12 +11:00
										 |  |  | use Illuminate\Http\Request; | 
					
						
							|  |  |  | use Illuminate\Support\Facades\Session; | 
					
						
							|  |  |  | use Illuminate\Support\Str; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class ServerController extends Controller | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public function index() | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2022-07-19 13:12:51 +10:00
										 |  |  |         $servers = Server::allActiveServers(); | 
					
						
							|  |  |  |         $non_active_servers = Server::allNonActiveServers(); | 
					
						
							| 
									
										
										
										
											2022-03-06 02:58:25 +11:00
										 |  |  |         return view('servers.index', compact(['servers', 'non_active_servers'])); | 
					
						
							| 
									
										
										
										
											2022-03-06 02:02:12 +11:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public function showServersPublic() | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2022-05-15 01:21:51 +10:00
										 |  |  |         $settings = Settings::getSettings(); | 
					
						
							| 
									
										
										
										
											2022-10-04 14:35:46 +11:00
										 |  |  |         Settings::setSettingsToSession($settings); | 
					
						
							| 
									
										
										
										
											2022-03-06 02:02:12 +11:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-03-06 02:58:25 +11:00
										 |  |  |         if ((Session::get('show_servers_public') === 1)) { | 
					
						
							| 
									
										
										
										
											2022-07-19 13:12:51 +10:00
										 |  |  |             $servers = Server::allPublicServers(); | 
					
						
							| 
									
										
										
										
											2022-03-06 02:02:12 +11:00
										 |  |  |             return view('servers.public-index', compact('servers')); | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2022-10-04 14:35:46 +11:00
										 |  |  |         abort(404); | 
					
						
							| 
									
										
										
										
											2022-03-06 02:02:12 +11:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public function create() | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2022-05-09 16:03:17 +10:00
										 |  |  |         return view('servers.create'); | 
					
						
							| 
									
										
										
										
											2022-03-06 02:02:12 +11:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public function store(Request $request) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $request->validate([ | 
					
						
							|  |  |  |             'hostname' => 'required|min:5', | 
					
						
							| 
									
										
										
										
											2022-10-20 11:06:44 +11:00
										 |  |  |             'ip1' => 'sometimes|nullable|ip', | 
					
						
							|  |  |  |             'ip2' => 'sometimes|nullable|ip', | 
					
						
							|  |  |  |             'ns1' => 'sometimes|nullable|string', | 
					
						
							|  |  |  |             'ns2' => 'sometimes|nullable|string', | 
					
						
							|  |  |  |             'server_type' => 'integer', | 
					
						
							|  |  |  |             'ssh_port' => 'integer', | 
					
						
							|  |  |  |             'bandwidth' => 'integer', | 
					
						
							|  |  |  |             'ram' => 'required|numeric', | 
					
						
							|  |  |  |             'disk' => 'required|integer', | 
					
						
							|  |  |  |             'os_id' => 'required|integer', | 
					
						
							|  |  |  |             'provider_id' => 'required|integer', | 
					
						
							|  |  |  |             'location_id' => 'required|integer', | 
					
						
							|  |  |  |             'price' => 'required|numeric', | 
					
						
							|  |  |  |             'cpu' => 'required|integer', | 
					
						
							|  |  |  |             'was_promo' => 'integer', | 
					
						
							|  |  |  |             'next_due_date' => 'required|date', | 
					
						
							|  |  |  |             'owned_since' => 'sometimes|nullable|date', | 
					
						
							|  |  |  |             'label1' => 'sometimes|nullable|string', | 
					
						
							|  |  |  |             'label2' => 'sometimes|nullable|string', | 
					
						
							|  |  |  |             'label3' => 'sometimes|nullable|string', | 
					
						
							|  |  |  |             'label4' => 'sometimes|nullable|string', | 
					
						
							| 
									
										
										
										
											2022-03-06 02:02:12 +11:00
										 |  |  |         ]); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         $server_id = Str::random(8); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-05-09 14:35:07 +10:00
										 |  |  |         $pricing = new Pricing(); | 
					
						
							| 
									
										
										
										
											2022-08-30 23:37:05 +10:00
										 |  |  |         $pricing->insertPricing(1, $server_id, $request->currency, $request->price, $request->payment_term, $request->next_due_date); | 
					
						
							| 
									
										
										
										
											2022-05-09 14:35:07 +10:00
										 |  |  | 
 | 
					
						
							|  |  |  |         if (!is_null($request->ip1)) { | 
					
						
							|  |  |  |             IPs::insertIP($server_id, $request->ip1); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         if (!is_null($request->ip2)) { | 
					
						
							|  |  |  |             IPs::insertIP($server_id, $request->ip2); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-03-06 02:02:12 +11:00
										 |  |  |         Server::create([ | 
					
						
							|  |  |  |             'id' => $server_id, | 
					
						
							|  |  |  |             'hostname' => $request->hostname, | 
					
						
							|  |  |  |             'server_type' => $request->server_type, | 
					
						
							|  |  |  |             'os_id' => $request->os_id, | 
					
						
							|  |  |  |             'ssh' => $request->ssh_port, | 
					
						
							|  |  |  |             'provider_id' => $request->provider_id, | 
					
						
							|  |  |  |             'location_id' => $request->location_id, | 
					
						
							|  |  |  |             'ram' => $request->ram, | 
					
						
							|  |  |  |             'ram_type' => $request->ram_type, | 
					
						
							| 
									
										
										
										
											2022-03-13 22:13:45 +11:00
										 |  |  |             'ram_as_mb' => ($request->ram_type === 'MB') ? $request->ram : ($request->ram * 1024), | 
					
						
							| 
									
										
										
										
											2022-03-06 02:02:12 +11:00
										 |  |  |             'disk' => $request->disk, | 
					
						
							|  |  |  |             'disk_type' => $request->disk_type, | 
					
						
							| 
									
										
										
										
											2022-03-13 22:13:45 +11:00
										 |  |  |             'disk_as_gb' => ($request->disk_type === 'GB') ? $request->disk : ($request->disk * 1024), | 
					
						
							| 
									
										
										
										
											2022-03-06 02:02:12 +11:00
										 |  |  |             'owned_since' => $request->owned_since, | 
					
						
							|  |  |  |             'ns1' => $request->ns1, | 
					
						
							|  |  |  |             'ns2' => $request->ns2, | 
					
						
							|  |  |  |             'bandwidth' => $request->bandwidth, | 
					
						
							|  |  |  |             'cpu' => $request->cpu, | 
					
						
							| 
									
										
										
										
											2022-03-06 02:58:25 +11:00
										 |  |  |             'was_promo' => $request->was_promo, | 
					
						
							|  |  |  |             'show_public' => (isset($request->show_public)) ? 1 : 0 | 
					
						
							| 
									
										
										
										
											2022-03-06 02:02:12 +11:00
										 |  |  |         ]); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-05-09 14:35:07 +10:00
										 |  |  |         Labels::insertLabelsAssigned([$request->label1, $request->label2, $request->label3, $request->label4], $server_id); | 
					
						
							| 
									
										
										
										
											2022-03-06 02:02:12 +11:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-05-15 01:21:51 +10:00
										 |  |  |         Server::serverRelatedCacheForget(); | 
					
						
							| 
									
										
										
										
											2022-03-06 02:58:25 +11:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-03-06 02:02:12 +11:00
										 |  |  |         return redirect()->route('servers.index') | 
					
						
							|  |  |  |             ->with('success', 'Server Created Successfully.'); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public function show(Server $server) | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2022-09-22 13:20:23 +10:00
										 |  |  |         $server_data = Server::server($server->id); | 
					
						
							| 
									
										
										
										
											2022-05-15 01:21:51 +10:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-19 13:12:51 +10:00
										 |  |  |         return view('servers.show', compact(['server_data'])); | 
					
						
							| 
									
										
										
										
											2022-03-06 02:02:12 +11:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public function edit(Server $server) | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2022-09-22 13:20:23 +10:00
										 |  |  |         $server_data = Server::server($server->id); | 
					
						
							| 
									
										
										
										
											2022-03-06 02:02:12 +11:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-19 13:12:51 +10:00
										 |  |  |         return view('servers.edit', compact(['server_data'])); | 
					
						
							| 
									
										
										
										
											2022-03-06 02:02:12 +11:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public function update(Request $request, Server $server) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $request->validate([ | 
					
						
							|  |  |  |             'hostname' => 'required|min:5', | 
					
						
							| 
									
										
										
										
											2022-10-20 11:06:44 +11:00
										 |  |  |             'ip1' => 'sometimes|nullable|ip', | 
					
						
							|  |  |  |             'ip2' => 'sometimes|nullable|ip', | 
					
						
							|  |  |  |             'ns1' => 'sometimes|nullable|string', | 
					
						
							|  |  |  |             'ns2' => 'sometimes|nullable|string', | 
					
						
							|  |  |  |             'server_type' => 'integer', | 
					
						
							|  |  |  |             'ssh_port' => 'integer', | 
					
						
							|  |  |  |             'bandwidth' => 'integer', | 
					
						
							|  |  |  |             'ram' => 'required|numeric', | 
					
						
							|  |  |  |             'disk' => 'required|integer', | 
					
						
							|  |  |  |             'os_id' => 'required|integer', | 
					
						
							|  |  |  |             'provider_id' => 'required|integer', | 
					
						
							|  |  |  |             'location_id' => 'required|integer', | 
					
						
							|  |  |  |             'price' => 'required|numeric', | 
					
						
							|  |  |  |             'cpu' => 'required|integer', | 
					
						
							|  |  |  |             'was_promo' => 'integer', | 
					
						
							|  |  |  |             'next_due_date' => 'required|date', | 
					
						
							|  |  |  |             'owned_since' => 'sometimes|nullable|date', | 
					
						
							|  |  |  |             'label1' => 'sometimes|nullable|string', | 
					
						
							|  |  |  |             'label2' => 'sometimes|nullable|string', | 
					
						
							|  |  |  |             'label3' => 'sometimes|nullable|string', | 
					
						
							|  |  |  |             'label4' => 'sometimes|nullable|string', | 
					
						
							| 
									
										
										
										
											2022-03-06 02:02:12 +11:00
										 |  |  |         ]); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-10-20 11:06:44 +11:00
										 |  |  |         $server->update([ | 
					
						
							|  |  |  |             'hostname' => $request->hostname, | 
					
						
							|  |  |  |             'server_type' => $request->server_type, | 
					
						
							|  |  |  |             'os_id' => $request->os_id, | 
					
						
							|  |  |  |             'ssh' => $request->ssh_port, | 
					
						
							|  |  |  |             'provider_id' => $request->provider_id, | 
					
						
							|  |  |  |             'location_id' => $request->location_id, | 
					
						
							|  |  |  |             'ram' => $request->ram, | 
					
						
							|  |  |  |             'ram_type' => $request->ram_type, | 
					
						
							|  |  |  |             'ram_as_mb' => ($request->ram_type === 'MB') ? $request->ram : ($request->ram * 1024), | 
					
						
							|  |  |  |             'disk' => $request->disk, | 
					
						
							|  |  |  |             'disk_type' => $request->disk_type, | 
					
						
							|  |  |  |             'disk_as_gb' => ($request->disk_type === 'GB') ? $request->disk : ($request->disk * 1024), | 
					
						
							|  |  |  |             'owned_since' => $request->owned_since, | 
					
						
							|  |  |  |             'ns1' => $request->ns1, | 
					
						
							|  |  |  |             'ns2' => $request->ns2, | 
					
						
							|  |  |  |             'bandwidth' => $request->bandwidth, | 
					
						
							|  |  |  |             'cpu' => $request->cpu, | 
					
						
							|  |  |  |             'was_promo' => $request->was_promo, | 
					
						
							|  |  |  |             'active' => (isset($request->is_active)) ? 1 : 0, | 
					
						
							|  |  |  |             'show_public' => (isset($request->show_public)) ? 1 : 0 | 
					
						
							|  |  |  |         ]); | 
					
						
							| 
									
										
										
										
											2022-03-06 02:02:12 +11:00
										 |  |  | 
 | 
					
						
							|  |  |  |         $pricing = new Pricing(); | 
					
						
							| 
									
										
										
										
											2022-10-31 16:02:50 +11:00
										 |  |  |         $pricing->updatePricing($server->id, $request->currency, $request->price, $request->payment_term, $request->next_due_date); | 
					
						
							| 
									
										
										
										
											2022-03-06 02:02:12 +11:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-10-31 16:02:50 +11:00
										 |  |  |         Labels::deleteLabelsAssignedTo($server->id); | 
					
						
							| 
									
										
										
										
											2022-03-06 02:02:12 +11:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-10-31 16:02:50 +11:00
										 |  |  |         Labels::insertLabelsAssigned([$request->label1, $request->label2, $request->label3, $request->label4], $server->id); | 
					
						
							| 
									
										
										
										
											2022-03-06 02:02:12 +11:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-10-31 16:02:50 +11:00
										 |  |  |         IPs::deleteIPsAssignedTo($server->id); | 
					
						
							| 
									
										
										
										
											2022-03-06 02:58:25 +11:00
										 |  |  | 
 | 
					
						
							|  |  |  |         for ($i = 1; $i <= 8; $i++) {//Max of 8 ips
 | 
					
						
							|  |  |  |             $obj = 'ip' . $i; | 
					
						
							|  |  |  |             if (isset($request->$obj) && !is_null($request->$obj)) { | 
					
						
							| 
									
										
										
										
											2022-10-31 16:02:50 +11:00
										 |  |  |                 IPs::insertIP($server->id, $request->$obj); | 
					
						
							| 
									
										
										
										
											2022-03-06 02:58:25 +11:00
										 |  |  |             } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-05-15 01:21:51 +10:00
										 |  |  |         Server::serverRelatedCacheForget(); | 
					
						
							| 
									
										
										
										
											2022-10-31 16:02:50 +11:00
										 |  |  |         Server::serverSpecificCacheForget($server->id); | 
					
						
							| 
									
										
										
										
											2022-03-06 02:58:25 +11:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-03-06 02:02:12 +11:00
										 |  |  |         return redirect()->route('servers.index') | 
					
						
							|  |  |  |             ->with('success', 'Server Updated Successfully.'); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public function destroy(Server $server) | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2022-11-09 15:18:25 +11:00
										 |  |  |         if ($server->delete()) { | 
					
						
							|  |  |  |             $p = new Pricing(); | 
					
						
							|  |  |  |             $p->deletePricing($server->id); | 
					
						
							| 
									
										
										
										
											2022-03-06 02:02:12 +11:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-11-09 15:18:25 +11:00
										 |  |  |             Labels::deleteLabelsAssignedTo($server->id); | 
					
						
							| 
									
										
										
										
											2022-03-06 02:02:12 +11:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-11-09 15:18:25 +11:00
										 |  |  |             IPs::deleteIPsAssignedTo($server->id); | 
					
						
							| 
									
										
										
										
											2022-03-06 02:02:12 +11:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-11-09 15:18:25 +11:00
										 |  |  |             Server::serverRelatedCacheForget(); | 
					
						
							| 
									
										
										
										
											2022-03-06 02:58:25 +11:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-11-09 15:18:25 +11:00
										 |  |  |             return redirect()->route('servers.index') | 
					
						
							|  |  |  |                 ->with('success', 'Server was deleted Successfully.'); | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2022-03-06 02:58:25 +11:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-03-06 02:02:12 +11:00
										 |  |  |         return redirect()->route('servers.index') | 
					
						
							| 
									
										
										
										
											2022-11-09 15:18:25 +11:00
										 |  |  |             ->with('error', 'Server was not deleted.'); | 
					
						
							| 
									
										
										
										
											2022-03-06 02:02:12 +11:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public function chooseCompare() | 
					
						
							| 
									
										
										
										
											2022-07-19 13:12:51 +10:00
										 |  |  |     {//NOTICE: Selecting servers is not cached yet
 | 
					
						
							| 
									
										
										
										
											2022-03-06 02:02:12 +11:00
										 |  |  |         $all_servers = Server::where('has_yabs', 1)->get(); | 
					
						
							| 
									
										
										
										
											2022-10-13 14:20:26 +11:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-10-20 11:06:44 +11:00
										 |  |  |         if (isset($all_servers[1])) { | 
					
						
							| 
									
										
										
										
											2022-10-13 14:20:26 +11:00
										 |  |  |             return view('servers.choose-compare', compact('all_servers')); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         return redirect()->route('servers.index') | 
					
						
							|  |  |  |             ->with('error', 'You need atleast 2 servers with a YABS to do a compare'); | 
					
						
							| 
									
										
										
										
											2022-03-06 02:02:12 +11:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public function compareServers($server1, $server2) | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2022-07-19 13:12:51 +10:00
										 |  |  |         $server1_data = Server::server($server1); | 
					
						
							| 
									
										
										
										
											2022-03-06 02:02:12 +11:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-19 13:12:51 +10:00
										 |  |  |         if (!isset($server1_data[0]->yabs[0])) { | 
					
						
							| 
									
										
										
										
											2022-10-20 11:06:44 +11:00
										 |  |  |             abort(404); | 
					
						
							| 
									
										
										
										
											2022-03-06 02:02:12 +11:00
										 |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-19 13:12:51 +10:00
										 |  |  |         $server2_data = Server::server($server2); | 
					
						
							| 
									
										
										
										
											2022-05-15 12:00:05 +10:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-19 13:12:51 +10:00
										 |  |  |         if (!isset($server2_data[0]->yabs[0])) { | 
					
						
							| 
									
										
										
										
											2022-10-04 14:35:46 +11:00
										 |  |  |             abort(404); | 
					
						
							| 
									
										
										
										
											2022-03-06 02:02:12 +11:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2022-07-19 13:12:51 +10:00
										 |  |  |         return view('servers.compare', compact('server1_data', 'server2_data')); | 
					
						
							| 
									
										
										
										
											2022-03-06 02:02:12 +11:00
										 |  |  |     } | 
					
						
							|  |  |  | } |