1
0

AdminDiscoverController.php 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. <?php
  2. namespace App\Http\Controllers\Admin;
  3. use DB, Cache;
  4. use App\{
  5. DiscoverCategory,
  6. DiscoverCategoryHashtag,
  7. Hashtag,
  8. Media,
  9. Profile,
  10. StatusHashtag
  11. };
  12. use Carbon\Carbon;
  13. use Illuminate\Http\Request;
  14. use Illuminate\Validation\Rule;
  15. trait AdminDiscoverController
  16. {
  17. public function discoverHome()
  18. {
  19. $categories = DiscoverCategory::orderByDesc('id')->paginate(10);
  20. return view('admin.discover.home', compact('categories'));
  21. }
  22. public function discoverCreateCategory()
  23. {
  24. return view('admin.discover.create-category');
  25. }
  26. public function discoverCreateCategoryStore(Request $request)
  27. {
  28. $this->validate($request, [
  29. 'name' => 'required|string|min:1',
  30. 'active' => 'required|boolean',
  31. 'media' => 'nullable|integer|min:1'
  32. ]);
  33. $name = $request->input('name');
  34. $slug = str_slug($name);
  35. $active = $request->input('active');
  36. $media = (int) $request->input('media');
  37. $media = Media::findOrFail($media);
  38. $category = DiscoverCategory::firstOrNew(['slug' => $slug]);
  39. $category->name = $name;
  40. $category->active = $active;
  41. $category->media_id = $media->id;
  42. $category->save();
  43. return $category;
  44. }
  45. public function discoverCategoryEdit(Request $request, $id)
  46. {
  47. $category = DiscoverCategory::findOrFail($id);
  48. return view('admin.discover.show', compact('category'));
  49. }
  50. public function discoverCategoryUpdate(Request $request, $id)
  51. {
  52. $this->validate($request, [
  53. 'name' => 'required|string|min:1',
  54. 'active' => 'required|boolean',
  55. 'media' => 'nullable|integer|min:1',
  56. 'hashtags' => 'nullable|string'
  57. ]);
  58. $name = $request->input('name');
  59. $slug = str_slug($name);
  60. $active = $request->input('active');
  61. $media = (int) $request->input('media');
  62. $media = Media::findOrFail($media);
  63. $category = DiscoverCategory::findOrFail($id);
  64. $category->name = $name;
  65. $category->active = $active;
  66. $category->media_id = $media->id;
  67. $category->save();
  68. return $category;
  69. }
  70. public function discoveryCategoryTagStore(Request $request)
  71. {
  72. $this->validate($request, [
  73. 'category_id' => 'required|integer|min:1',
  74. 'hashtag' => 'required|string',
  75. 'action' => 'required|string|min:1|max:6'
  76. ]);
  77. $category_id = $request->input('category_id');
  78. $category = DiscoverCategory::findOrFail($category_id);
  79. $hashtag = Hashtag::whereName($request->input('hashtag'))->firstOrFail();
  80. $tag = DiscoverCategoryHashtag::firstOrCreate([
  81. 'hashtag_id' => $hashtag->id,
  82. 'discover_category_id' => $category->id
  83. ]);
  84. if($request->input('action') == 'delete') {
  85. $tag->delete();
  86. return [];
  87. }
  88. return $tag;
  89. }
  90. }