AdminDestinationController.php 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  1. <?php
  2. namespace App\Http\Controllers\Admin;
  3. use App\Http\Controllers\Controller;
  4. use Illuminate\Http\Request;
  5. use App\Models\Destination;
  6. use App\Models\DestinationPhoto;
  7. use App\Models\DestinationVideo;
  8. class AdminDestinationController extends Controller
  9. {
  10. public function index()
  11. {
  12. $destinations = Destination::get();
  13. return view('admin.destination.index',compact('destinations'));
  14. }
  15. public function create()
  16. {
  17. return view('admin.destination.create');
  18. }
  19. public function create_submit(Request $request)
  20. {
  21. $request->validate([
  22. 'name' => 'required|unique:destinations',
  23. 'slug' => 'required|alpha_dash|unique:destinations',
  24. 'description' => 'required',
  25. 'featured_photo' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
  26. ]);
  27. $final_name = 'destination_featured_'.time().'.'.$request->featured_photo->extension();
  28. $request->featured_photo->move(public_path('uploads'), $final_name);
  29. $obj = new Destination();
  30. $obj->featured_photo = $final_name;
  31. $obj->name = $request->name;
  32. $obj->slug = $request->slug;
  33. $obj->description = $request->description;
  34. $obj->country = $request->country;
  35. $obj->language = $request->language;
  36. $obj->currency = $request->currency;
  37. $obj->area = $request->area;
  38. $obj->timezone = $request->timezone;
  39. $obj->visa_requirement = $request->visa_requirement;
  40. $obj->activity = $request->activity;
  41. $obj->best_time = $request->best_time;
  42. $obj->health_safety = $request->health_safety;
  43. $obj->map = $request->map;
  44. $obj->view_count = 1;
  45. $obj->save();
  46. return redirect()->route('admin_destination_index')->with('success','Destination is Created Successfully');
  47. }
  48. public function edit($id)
  49. {
  50. $destination = Destination::where('id',$id)->first();
  51. return view('admin.destination.edit',compact('destination'));
  52. }
  53. public function edit_submit(Request $request, $id)
  54. {
  55. $destination = Destination::where('id',$id)->first();
  56. $request->validate([
  57. 'name' => 'required|unique:destinations,name,'.$id,
  58. 'slug' => 'required|alpha_dash|unique:destinations,slug,'.$id,
  59. 'description' => 'required',
  60. ]);
  61. if($request->hasFile('featured_photo'))
  62. {
  63. $request->validate([
  64. 'featured_photo' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
  65. ]);
  66. unlink(public_path('uploads/'.$destination->featured_photo));
  67. $final_name = 'destination_featured_'.time().'.'.$request->featured_photo->extension();
  68. $request->featured_photo->move(public_path('uploads'), $final_name);
  69. $destination->featured_photo = $final_name;
  70. }
  71. $destination->name = $request->name;
  72. $destination->slug = $request->slug;
  73. $destination->description = $request->description;
  74. $destination->country = $request->country;
  75. $destination->language = $request->language;
  76. $destination->currency = $request->currency;
  77. $destination->area = $request->area;
  78. $destination->timezone = $request->timezone;
  79. $destination->visa_requirement = $request->visa_requirement;
  80. $destination->activity = $request->activity;
  81. $destination->best_time = $request->best_time;
  82. $destination->health_safety = $request->health_safety;
  83. $destination->map = $request->map;
  84. $destination->save();
  85. return redirect()->route('admin_destination_index')->with('success','Destination is Updated Successfully');
  86. }
  87. public function delete($id)
  88. {
  89. $total = DestinationPhoto::where('destination_id',$id)->count();
  90. if($total > 0) {
  91. return redirect()->back()->with('error','First Delete All Photos of This Destination');
  92. }
  93. $total1 = DestinationVideo::where('destination_id',$id)->count();
  94. if($total1 > 0) {
  95. return redirect()->back()->with('error','First Delete All Videos of This Destination');
  96. }
  97. $destination = Destination::where('id',$id)->first();
  98. unlink(public_path('uploads/'.$destination->featured_photo));
  99. $destination->delete();
  100. return redirect()->route('admin_destination_index')->with('success','Destination is Deleted Successfully');
  101. }
  102. public function destination_photos($id)
  103. {
  104. $destination = Destination::where('id',$id)->first();
  105. $destination_photos = DestinationPhoto::where('destination_id',$id)->get();
  106. return view('admin.destination.photos',compact('destination', 'destination_photos'));
  107. }
  108. public function destination_photo_submit(Request $request, $id)
  109. {
  110. $request->validate([
  111. 'photo' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
  112. ]);
  113. $final_name = 'destination_'.time().'.'.$request->photo->extension();
  114. $request->photo->move(public_path('uploads'), $final_name);
  115. $obj = new DestinationPhoto;
  116. $obj->destination_id = $id;
  117. $obj->photo = $final_name;
  118. $obj->save();
  119. return redirect()->back()->with('success','Photo is Inserted Successfully');
  120. }
  121. public function destination_photo_delete($id)
  122. {
  123. $destination_photo = DestinationPhoto::where('id',$id)->first();
  124. unlink(public_path('uploads/'.$destination_photo->photo));
  125. $destination_photo->delete();
  126. return redirect()->back()->with('success','Photo is Deleted Successfully');
  127. }
  128. public function destination_videos($id)
  129. {
  130. $destination = Destination::where('id',$id)->first();
  131. $destination_videos = DestinationVideo::where('destination_id',$id)->get();
  132. return view('admin.destination.videos',compact('destination', 'destination_videos'));
  133. }
  134. public function destination_video_submit(Request $request, $id)
  135. {
  136. $request->validate([
  137. 'video' => 'required',
  138. ]);
  139. $obj = new DestinationVideo;
  140. $obj->destination_id = $id;
  141. $obj->video = $request->video;
  142. $obj->save();
  143. return redirect()->back()->with('success','Video is Inserted Successfully');
  144. }
  145. public function destination_video_delete($id)
  146. {
  147. $destination_video = DestinationVideo::where('id',$id)->first();
  148. $destination_video->delete();
  149. return redirect()->back()->with('success','Video is Deleted Successfully');
  150. }
  151. }