AdminPackageController.php 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313
  1. <?php
  2. namespace App\Http\Controllers\Admin;
  3. use App\Http\Controllers\Controller;
  4. use Illuminate\Http\Request;
  5. use App\Models\Package;
  6. use App\Models\Destination;
  7. use App\Models\Amenity;
  8. use App\Models\PackageAmenity;
  9. use App\Models\PackageItinerary;
  10. use App\Models\PackagePhoto;
  11. use App\Models\PackageVideo;
  12. use App\Models\PackageFaq;
  13. use App\Models\Tour;
  14. class AdminPackageController extends Controller
  15. {
  16. public function index()
  17. {
  18. $packages = Package::get();
  19. return view('admin.package.index',compact('packages'));
  20. }
  21. public function create()
  22. {
  23. $destinations = Destination::orderBy('name','asc')->get();
  24. return view('admin.package.create', compact('destinations'));
  25. }
  26. public function create_submit(Request $request)
  27. {
  28. $request->validate([
  29. 'name' => 'required|unique:packages',
  30. 'slug' => 'required|alpha_dash|unique:packages',
  31. 'description' => 'required',
  32. 'price' => 'required|numeric',
  33. 'old_price' => 'numeric',
  34. 'featured_photo' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
  35. 'banner' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
  36. ]);
  37. $final_name = 'package_featured_'.time().'.'.$request->featured_photo->extension();
  38. $request->featured_photo->move(public_path('uploads'), $final_name);
  39. $final_name1 = 'package_banner_'.time().'.'.$request->banner->extension();
  40. $request->banner->move(public_path('uploads'), $final_name1);
  41. $obj = new Package();
  42. $obj->destination_id = $request->destination_id;
  43. $obj->featured_photo = $final_name;
  44. $obj->banner = $final_name1;
  45. $obj->name = $request->name;
  46. $obj->slug = $request->slug;
  47. $obj->description = $request->description;
  48. $obj->price = $request->price;
  49. $obj->old_price = $request->old_price;
  50. $obj->map = $request->map;
  51. $obj->total_rating = 0;
  52. $obj->total_score = 0;
  53. $obj->save();
  54. return redirect()->route('admin_package_index')->with('success','Package is Created Successfully');
  55. }
  56. public function edit($id)
  57. {
  58. $package = Package::where('id',$id)->first();
  59. $destinations = Destination::orderBy('name','asc')->get();
  60. return view('admin.package.edit',compact('package','destinations'));
  61. }
  62. public function edit_submit(Request $request, $id)
  63. {
  64. $package = Package::where('id',$id)->first();
  65. $request->validate([
  66. 'name' => 'required|unique:packages,name,'.$id,
  67. 'slug' => 'required|alpha_dash|unique:packages,slug,'.$id,
  68. 'description' => 'required',
  69. 'price' => 'required|numeric',
  70. 'old_price' => 'numeric',
  71. ]);
  72. if($request->hasFile('featured_photo'))
  73. {
  74. $request->validate([
  75. 'featured_photo' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
  76. ]);
  77. unlink(public_path('uploads/'.$package->featured_photo));
  78. $final_name = 'package_featured_'.time().'.'.$request->featured_photo->extension();
  79. $request->featured_photo->move(public_path('uploads'), $final_name);
  80. $package->featured_photo = $final_name;
  81. }
  82. if($request->hasFile('banner'))
  83. {
  84. $request->validate([
  85. 'banner' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
  86. ]);
  87. unlink(public_path('uploads/'.$package->banner));
  88. $final_name1 = 'package_banner_'.time().'.'.$request->banner->extension();
  89. $request->banner->move(public_path('uploads'), $final_name1);
  90. $package->banner = $final_name1;
  91. }
  92. $package->destination_id = $request->destination_id;
  93. $package->name = $request->name;
  94. $package->slug = $request->slug;
  95. $package->description = $request->description;
  96. $package->price = $request->price;
  97. $package->old_price = $request->old_price;
  98. $package->map = $request->map;
  99. $package->save();
  100. return redirect()->route('admin_package_index')->with('success','Package is Updated Successfully');
  101. }
  102. public function delete($id)
  103. {
  104. $total = PackagePhoto::where('package_id',$id)->count();
  105. if($total > 0) {
  106. return redirect()->back()->with('error','First Delete All Photos of This Package');
  107. }
  108. $total1 = PackageVideo::where('package_id',$id)->count();
  109. if($total1 > 0) {
  110. return redirect()->back()->with('error','First Delete All Videos of This Package');
  111. }
  112. $total2 = PackageAmenity::where('package_id',$id)->count();
  113. if($total2 > 0) {
  114. return redirect()->back()->with('error','First Delete All Amenities of This Package');
  115. }
  116. $total3 = PackageItinerary::where('package_id',$id)->count();
  117. if($total3 > 0) {
  118. return redirect()->back()->with('error','First Delete All Itineraries of This Package');
  119. }
  120. $total4 = PackageFaq::where('package_id',$id)->count();
  121. if($total4 > 0) {
  122. return redirect()->back()->with('error','First Delete All FAQs of This Package');
  123. }
  124. $total5 = Tour::where('package_id',$id)->count();
  125. if($total5 > 0) {
  126. return redirect()->back()->with('error','First Delete All Tours of This Package');
  127. }
  128. $package = Package::where('id',$id)->first();
  129. unlink(public_path('uploads/'.$package->featured_photo));
  130. unlink(public_path('uploads/'.$package->banner));
  131. $package->delete();
  132. return redirect()->route('admin_package_index')->with('success','Package is Deleted Successfully');
  133. }
  134. public function package_amenities($id)
  135. {
  136. $package = Package::where('id',$id)->first();
  137. $package_amenities_include = PackageAmenity::with('amenity')->where('package_id',$id)->where('type','Include')->get();
  138. $package_amenities_exclude = PackageAmenity::with('amenity')->where('package_id',$id)->where('type','Exclude')->get();
  139. $amenities = Amenity::orderBy('name','asc')->get();
  140. return view('admin.package.amenities',compact('package', 'package_amenities_include', 'package_amenities_exclude', 'amenities'));
  141. }
  142. public function package_amenity_submit(Request $request, $id)
  143. {
  144. $total = PackageAmenity::where('package_id',$id)->where('amenity_id',$request->amenity_id)->count();
  145. if($total>0) {
  146. return redirect()->back()->with('error','This Item is Already Inserted');
  147. }
  148. $obj = new PackageAmenity;
  149. $obj->package_id = $id;
  150. $obj->amenity_id = $request->amenity_id;
  151. $obj->type = $request->type;
  152. $obj->save();
  153. return redirect()->back()->with('success','Item is Inserted Successfully');
  154. }
  155. public function package_amenity_delete($id)
  156. {
  157. $obj = PackageAmenity::where('id',$id)->first();
  158. $obj->delete();
  159. return redirect()->back()->with('success','Item is Deleted Successfully');
  160. }
  161. public function package_itineraries($id)
  162. {
  163. $package = Package::where('id',$id)->first();
  164. $package_itineraries = PackageItinerary::where('package_id',$id)->get();
  165. return view('admin.package.itineraries',compact('package', 'package_itineraries'));
  166. }
  167. public function package_itinerary_submit(Request $request, $id)
  168. {
  169. $request->validate([
  170. 'name' => 'required',
  171. 'description' => 'required',
  172. ]);
  173. $obj = new PackageItinerary;
  174. $obj->package_id = $id;
  175. $obj->name = $request->name;
  176. $obj->description = $request->description;
  177. $obj->save();
  178. return redirect()->back()->with('success','Item is Inserted Successfully');
  179. }
  180. public function package_itinerary_delete($id)
  181. {
  182. $obj = PackageItinerary::where('id',$id)->first();
  183. $obj->delete();
  184. return redirect()->back()->with('success','Item is Deleted Successfully');
  185. }
  186. public function package_photos($id)
  187. {
  188. $package = Package::where('id',$id)->first();
  189. $package_photos = PackagePhoto::where('package_id',$id)->get();
  190. return view('admin.package.photos',compact('package', 'package_photos'));
  191. }
  192. public function package_photo_submit(Request $request, $id)
  193. {
  194. $request->validate([
  195. 'photo' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
  196. ]);
  197. $final_name = 'package_'.time().'.'.$request->photo->extension();
  198. $request->photo->move(public_path('uploads'), $final_name);
  199. $obj = new PackagePhoto;
  200. $obj->package_id = $id;
  201. $obj->photo = $final_name;
  202. $obj->save();
  203. return redirect()->back()->with('success','Photo is Inserted Successfully');
  204. }
  205. public function package_photo_delete($id)
  206. {
  207. $package_photo = PackagePhoto::where('id',$id)->first();
  208. unlink(public_path('uploads/'.$package_photo->photo));
  209. $package_photo->delete();
  210. return redirect()->back()->with('success','Photo is Deleted Successfully');
  211. }
  212. public function package_videos($id)
  213. {
  214. $package = Package::where('id',$id)->first();
  215. $package_videos = PackageVideo::where('package_id',$id)->get();
  216. return view('admin.package.videos',compact('package', 'package_videos'));
  217. }
  218. public function package_video_submit(Request $request, $id)
  219. {
  220. $request->validate([
  221. 'video' => 'required',
  222. ]);
  223. $obj = new PackageVideo;
  224. $obj->package_id = $id;
  225. $obj->video = $request->video;
  226. $obj->save();
  227. return redirect()->back()->with('success','Video is Inserted Successfully');
  228. }
  229. public function package_video_delete($id)
  230. {
  231. $package_video = PackageVideo::where('id',$id)->first();
  232. $package_video->delete();
  233. return redirect()->back()->with('success','Video is Deleted Successfully');
  234. }
  235. public function package_faqs($id)
  236. {
  237. $package = Package::where('id',$id)->first();
  238. $package_faqs = PackageFaq::where('package_id',$id)->get();
  239. return view('admin.package.faqs',compact('package', 'package_faqs'));
  240. }
  241. public function package_faq_submit(Request $request, $id)
  242. {
  243. $request->validate([
  244. 'question' => 'required',
  245. 'answer' => 'required',
  246. ]);
  247. $obj = new PackageFaq;
  248. $obj->package_id = $id;
  249. $obj->question = $request->question;
  250. $obj->answer = $request->answer;
  251. $obj->save();
  252. return redirect()->back()->with('success','FAQ is Inserted Successfully');
  253. }
  254. public function package_faq_delete($id)
  255. {
  256. $package_faq = PackageFaq::where('id',$id)->first();
  257. $package_faq->delete();
  258. return redirect()->back()->with('success','FAQ is Deleted Successfully');
  259. }
  260. }