1
0

AdminInstanceController.php 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. <?php
  2. namespace App\Http\Controllers\Admin;
  3. use DB, Cache;
  4. use App\{Instance, Profile};
  5. use Carbon\Carbon;
  6. use Illuminate\Http\Request;
  7. use Illuminate\Validation\Rule;
  8. trait AdminInstanceController
  9. {
  10. public function instances(Request $request)
  11. {
  12. $this->validate($request, [
  13. 'filter' => [
  14. 'nullable',
  15. 'string',
  16. 'min:1',
  17. 'max:20',
  18. Rule::in(['autocw', 'unlisted', 'banned'])
  19. ],
  20. ]);
  21. if($request->has('filter') && $request->filled('filter')) {
  22. switch ($request->filter) {
  23. case 'autocw':
  24. $instances = Instance::whereAutoCw(true)->orderByDesc('id')->paginate(5);
  25. break;
  26. case 'unlisted':
  27. $instances = Instance::whereUnlisted(true)->orderByDesc('id')->paginate(5);
  28. break;
  29. case 'banned':
  30. $instances = Instance::whereBanned(true)->orderByDesc('id')->paginate(5);
  31. break;
  32. }
  33. } else {
  34. $instances = Instance::orderByDesc('id')->paginate(5);
  35. }
  36. return view('admin.instances.home', compact('instances'));
  37. }
  38. public function instanceScan(Request $request)
  39. {
  40. Profile::whereNotNull('domain')
  41. ->latest()
  42. ->groupBy(['domain', 'id'])
  43. ->where('created_at', '>', now()->subMonths(2))
  44. ->chunk(100, function($domains) {
  45. foreach($domains as $domain) {
  46. Instance::firstOrCreate([
  47. 'domain' => $domain->domain
  48. ]);
  49. }
  50. });
  51. return redirect()->back();
  52. }
  53. public function instanceShow(Request $request, $id)
  54. {
  55. $instance = Instance::findOrFail($id);
  56. return view('admin.instances.show', compact('instance'));
  57. }
  58. public function instanceEdit(Request $request, $id)
  59. {
  60. $this->validate($request, [
  61. 'action' => [
  62. 'required',
  63. 'string',
  64. 'min:1',
  65. 'max:20',
  66. Rule::in(['autocw', 'unlist', 'ban'])
  67. ],
  68. ]);
  69. $instance = Instance::findOrFail($id);
  70. $unlisted = $instance->unlisted;
  71. $autocw = $instance->auto_cw;
  72. $banned = $instance->banned;
  73. switch ($request->action) {
  74. case 'autocw':
  75. $instance->auto_cw = $autocw == true ? false : true;
  76. $instance->save();
  77. break;
  78. case 'unlist':
  79. $instance->unlisted = $unlisted == true ? false : true;
  80. $instance->save();
  81. break;
  82. case 'ban':
  83. $instance->banned = $banned == true ? false : true;
  84. $instance->save();
  85. break;
  86. }
  87. return response()->json([]);
  88. }
  89. }