| 
									
										
										
										
											2022-05-16 12:07:35 +10:00
										 |  |  | <?php | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | namespace App\Http\Controllers; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-05-16 14:43:33 +10:00
										 |  |  | use App\Models\Home; | 
					
						
							| 
									
										
										
										
											2022-05-16 12:07:35 +10:00
										 |  |  | use App\Models\Labels; | 
					
						
							|  |  |  | use App\Models\Pricing; | 
					
						
							|  |  |  | use App\Models\SeedBoxes; | 
					
						
							|  |  |  | use Illuminate\Http\Request; | 
					
						
							|  |  |  | use Illuminate\Support\Facades\Cache; | 
					
						
							|  |  |  | use Illuminate\Support\Str; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class SeedBoxesController extends Controller | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     public function index() | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2022-07-20 14:35:37 +10:00
										 |  |  |         $seedboxes = SeedBoxes::allSeedboxes(); | 
					
						
							| 
									
										
										
										
											2022-05-16 12:07:35 +10:00
										 |  |  |         return view('seedboxes.index', compact(['seedboxes'])); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public function create() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         return view('seedboxes.create'); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public function store(Request $request) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $request->validate([ | 
					
						
							| 
									
										
										
										
											2022-10-20 11:06:44 +11:00
										 |  |  |             'title' => 'required|string|min:2', | 
					
						
							|  |  |  |             'hostname' => 'sometimes|nullable|string|min:2', | 
					
						
							|  |  |  |             'seed_box_type' => 'required|string', | 
					
						
							|  |  |  |             'provider_id' => 'integer', | 
					
						
							|  |  |  |             'location_id' => 'integer', | 
					
						
							| 
									
										
										
										
											2022-05-16 12:07:35 +10:00
										 |  |  |             'price' => 'numeric', | 
					
						
							| 
									
										
										
										
											2022-10-20 11:06:44 +11:00
										 |  |  |             'payment_term' => 'integer', | 
					
						
							|  |  |  |             'was_promo' => 'integer', | 
					
						
							|  |  |  |             'owned_since' => 'sometimes|nullable|date', | 
					
						
							|  |  |  |             'disk' => 'integer', | 
					
						
							|  |  |  |             'bandwidth' => 'integer', | 
					
						
							|  |  |  |             'port_speed' => 'integer', | 
					
						
							|  |  |  |             'next_due_date' => 'required|date', | 
					
						
							|  |  |  |             'label1' => 'sometimes|nullable|string', | 
					
						
							|  |  |  |             'label2' => 'sometimes|nullable|string', | 
					
						
							|  |  |  |             'label3' => 'sometimes|nullable|string', | 
					
						
							|  |  |  |             'label4' => 'sometimes|nullable|string', | 
					
						
							| 
									
										
										
										
											2022-05-16 12:07:35 +10:00
										 |  |  |         ]); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         $seedbox_id = Str::random(8); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         $pricing = new Pricing(); | 
					
						
							| 
									
										
										
										
											2022-08-30 23:37:05 +10:00
										 |  |  |         $pricing->insertPricing(6, $seedbox_id, $request->currency, $request->price, $request->payment_term, $request->next_due_date); | 
					
						
							| 
									
										
										
										
											2022-05-16 12:07:35 +10:00
										 |  |  | 
 | 
					
						
							|  |  |  |         Labels::deleteLabelsAssignedTo($seedbox_id); | 
					
						
							|  |  |  |         Labels::insertLabelsAssigned([$request->label1, $request->label2, $request->label3, $request->label4], $seedbox_id); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         SeedBoxes::create([ | 
					
						
							|  |  |  |             'id' => $seedbox_id, | 
					
						
							|  |  |  |             'title' => $request->title, | 
					
						
							|  |  |  |             'hostname' => $request->hostname, | 
					
						
							|  |  |  |             'seed_box_type' => $request->seed_box_type, | 
					
						
							|  |  |  |             'provider_id' => $request->provider_id, | 
					
						
							|  |  |  |             'location_id' => $request->location_id, | 
					
						
							|  |  |  |             'disk' => $request->disk, | 
					
						
							|  |  |  |             'disk_type' => 'GB', | 
					
						
							|  |  |  |             'disk_as_gb' => $request->disk, | 
					
						
							|  |  |  |             'owned_since' => $request->owned_since, | 
					
						
							|  |  |  |             'bandwidth' => $request->bandwidth, | 
					
						
							|  |  |  |             'port_speed' => $request->port_speed, | 
					
						
							|  |  |  |             'was_promo' => $request->was_promo | 
					
						
							|  |  |  |         ]); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-20 14:35:37 +10:00
										 |  |  |         Cache::forget("all_seedboxes"); | 
					
						
							| 
									
										
										
										
											2022-05-16 14:43:33 +10:00
										 |  |  |         Home::homePageCacheForget(); | 
					
						
							| 
									
										
										
										
											2022-05-16 12:07:35 +10:00
										 |  |  | 
 | 
					
						
							|  |  |  |         return redirect()->route('seedboxes.index') | 
					
						
							|  |  |  |             ->with('success', 'Seed box created Successfully.'); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public function show(SeedBoxes $seedbox) | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2022-09-22 13:20:23 +10:00
										 |  |  |         $seedbox_data = SeedBoxes::seedbox($seedbox->id); | 
					
						
							| 
									
										
										
										
											2022-07-20 14:35:37 +10:00
										 |  |  |         return view('seedboxes.show', compact(['seedbox_data'])); | 
					
						
							| 
									
										
										
										
											2022-05-16 12:07:35 +10:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public function edit(SeedBoxes $seedbox) | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2022-09-22 13:20:23 +10:00
										 |  |  |         $seedbox_data = SeedBoxes::seedbox($seedbox->id); | 
					
						
							| 
									
										
										
										
											2022-07-20 14:35:37 +10:00
										 |  |  |         return view('seedboxes.edit', compact(['seedbox_data'])); | 
					
						
							| 
									
										
										
										
											2022-05-16 12:07:35 +10:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public function update(Request $request, SeedBoxes $seedbox) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $request->validate([ | 
					
						
							| 
									
										
										
										
											2022-10-20 11:06:44 +11:00
										 |  |  |             'title' => 'required|string|min:2', | 
					
						
							|  |  |  |             'hostname' => 'sometimes|nullable|string|min:2', | 
					
						
							|  |  |  |             'seed_box_type' => 'required|string', | 
					
						
							|  |  |  |             'provider_id' => 'integer', | 
					
						
							|  |  |  |             'location_id' => 'integer', | 
					
						
							| 
									
										
										
										
											2022-05-16 12:07:35 +10:00
										 |  |  |             'price' => 'numeric', | 
					
						
							| 
									
										
										
										
											2022-10-20 11:06:44 +11:00
										 |  |  |             'payment_term' => 'integer', | 
					
						
							|  |  |  |             'was_promo' => 'integer', | 
					
						
							|  |  |  |             'owned_since' => 'sometimes|nullable|date', | 
					
						
							|  |  |  |             'disk' => 'integer', | 
					
						
							|  |  |  |             'bandwidth' => 'integer', | 
					
						
							|  |  |  |             'port_speed' => 'integer', | 
					
						
							|  |  |  |             'next_due_date' => 'required|date', | 
					
						
							|  |  |  |             'label1' => 'sometimes|nullable|string', | 
					
						
							|  |  |  |             'label2' => 'sometimes|nullable|string', | 
					
						
							|  |  |  |             'label3' => 'sometimes|nullable|string', | 
					
						
							|  |  |  |             'label4' => 'sometimes|nullable|string', | 
					
						
							| 
									
										
										
										
											2022-05-16 12:07:35 +10:00
										 |  |  |         ]); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-10-20 11:06:44 +11:00
										 |  |  |         $seedbox->update([ | 
					
						
							|  |  |  |             'title' => $request->title, | 
					
						
							|  |  |  |             'hostname' => $request->hostname, | 
					
						
							|  |  |  |             'seed_box_type' => $request->seed_box_type, | 
					
						
							|  |  |  |             'location_id' => $request->location_id, | 
					
						
							|  |  |  |             'provider_id' => $request->provider_id, | 
					
						
							|  |  |  |             'disk' => $request->disk, | 
					
						
							|  |  |  |             'disk_type' => 'GB', | 
					
						
							|  |  |  |             'disk_as_gb' => $request->disk, | 
					
						
							|  |  |  |             'owned_since' => $request->owned_since, | 
					
						
							|  |  |  |             'bandwidth' => $request->bandwidth, | 
					
						
							|  |  |  |             'port_speed' => $request->port_speed, | 
					
						
							|  |  |  |             'was_promo' => $request->was_promo | 
					
						
							|  |  |  |         ]); | 
					
						
							| 
									
										
										
										
											2022-05-16 12:07:35 +10:00
										 |  |  | 
 | 
					
						
							|  |  |  |         $pricing = new Pricing(); | 
					
						
							| 
									
										
										
										
											2022-10-20 11:17:34 +11:00
										 |  |  |         $pricing->updatePricing($seedbox->id, $request->currency, $request->price, $request->payment_term, $request->next_due_date); | 
					
						
							| 
									
										
										
										
											2022-05-16 12:07:35 +10:00
										 |  |  | 
 | 
					
						
							|  |  |  |         Labels::deleteLabelsAssignedTo($seedbox->id); | 
					
						
							|  |  |  |         Labels::insertLabelsAssigned([$request->label1, $request->label2, $request->label3, $request->label4], $seedbox->id); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-20 14:35:37 +10:00
										 |  |  |         Cache::forget("all_seedboxes"); | 
					
						
							|  |  |  |         Cache::forget("seedbox.{$seedbox->id}"); | 
					
						
							| 
									
										
										
										
											2022-05-16 12:07:35 +10:00
										 |  |  |         Cache::forget("labels_for_service.{$seedbox->id}"); | 
					
						
							| 
									
										
										
										
											2022-05-16 14:43:33 +10:00
										 |  |  |         Home::homePageCacheForget(); | 
					
						
							| 
									
										
										
										
											2022-05-16 12:07:35 +10:00
										 |  |  | 
 | 
					
						
							|  |  |  |         return redirect()->route('seedboxes.index') | 
					
						
							|  |  |  |             ->with('success', 'Seed box updated Successfully.'); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public function destroy(SeedBoxes $seedbox) | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2022-11-09 15:18:25 +11:00
										 |  |  |         if ($seedbox->delete()) { | 
					
						
							|  |  |  |             $p = new Pricing(); | 
					
						
							|  |  |  |             $p->deletePricing($seedbox->id); | 
					
						
							| 
									
										
										
										
											2022-05-16 12:07:35 +10:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-11-09 15:18:25 +11:00
										 |  |  |             Labels::deleteLabelsAssignedTo($seedbox->id); | 
					
						
							| 
									
										
										
										
											2022-05-16 12:07:35 +10:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-11-09 15:18:25 +11:00
										 |  |  |             Cache::forget("all_seedboxes"); | 
					
						
							|  |  |  |             Cache::forget("seedbox.{$seedbox->id}"); | 
					
						
							|  |  |  |             Home::homePageCacheForget(); | 
					
						
							| 
									
										
										
										
											2022-05-16 12:07:35 +10:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-11-09 15:18:25 +11:00
										 |  |  |             return redirect()->route('seedboxes.index') | 
					
						
							|  |  |  |                 ->with('success', 'Seed box was deleted Successfully.'); | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2022-05-16 12:07:35 +10:00
										 |  |  | 
 | 
					
						
							|  |  |  |         return redirect()->route('seedboxes.index') | 
					
						
							| 
									
										
										
										
											2022-11-09 15:18:25 +11:00
										 |  |  |             ->with('error', 'Seed box was not deleted.'); | 
					
						
							| 
									
										
										
										
											2022-05-16 12:07:35 +10:00
										 |  |  |     } | 
					
						
							|  |  |  | } |