UserController.php 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. <?php
  2. namespace App\Http\Controllers\User;
  3. use App\Http\Controllers\Controller;
  4. use Illuminate\Http\Request;
  5. use Auth;
  6. use App\Models\User;
  7. use App\Models\Admin;
  8. use App\Models\Booking;
  9. use App\Models\Review;
  10. use App\Models\Wishlist;
  11. use App\Models\Message;
  12. use App\Models\MessageComment;
  13. use App\Mail\Websitemail;
  14. class UserController extends Controller
  15. {
  16. public function dashboard()
  17. {
  18. $total_completed_orders = Booking::where('user_id',Auth::guard('web')->user()->id)->where('payment_status','Completed')->count();
  19. $total_pending_orders = Booking::where('user_id',Auth::guard('web')->user()->id)->where('payment_status','Pending')->count();
  20. return view('user.dashboard', compact('total_completed_orders', 'total_pending_orders'));
  21. }
  22. public function booking()
  23. {
  24. $all_data = Booking::with(['tour','package'])->where('user_id',Auth::guard('web')->user()->id)->get();
  25. return view('user.booking', compact('all_data'));
  26. }
  27. public function invoice($invoice_no)
  28. {
  29. $admin_data = Admin::where('id',1)->first();
  30. $booking = Booking::with(['tour','package'])->where('invoice_no',$invoice_no)->first();
  31. return view('user.invoice', compact('invoice_no', 'booking', 'admin_data'));
  32. }
  33. public function review()
  34. {
  35. $reviews = Review::with('package')->where('user_id',Auth::guard('web')->user()->id)->get();
  36. //dd($reviews);
  37. return view('user.review', compact('reviews'));
  38. }
  39. public function wishlist()
  40. {
  41. $wishlist = Wishlist::with('package')->where('user_id',Auth::guard('web')->user()->id)->get();
  42. return view('user.wishlist', compact('wishlist'));
  43. }
  44. public function wishlist_delete($id)
  45. {
  46. $obj = Wishlist::where('id',$id)->first();
  47. $obj->delete();
  48. return redirect()->back()->with('success', 'Wishlist item is deleted successfully!');
  49. }
  50. public function message()
  51. {
  52. $message_check = Message::where('user_id',Auth::guard('web')->user()->id)->count();
  53. $message = Message::where('user_id',Auth::guard('web')->user()->id)->first();
  54. if($message) {
  55. $message_comments = MessageComment::where('message_id',$message->id)->orderBy('id','desc')->get();
  56. } else {
  57. $message_comments = [];
  58. }
  59. return view('user.message', compact('message_check', 'message_comments'));
  60. }
  61. public function message_start()
  62. {
  63. $message_check = Message::where('user_id',Auth::guard('web')->user()->id)->count();
  64. if($message_check > 0) {
  65. return redirect()->back()->with('error', 'You have already started a conversation!');
  66. }
  67. $obj = new Message;
  68. $obj->user_id = Auth::guard('web')->user()->id;
  69. $obj->save();
  70. return redirect()->back();
  71. }
  72. public function message_submit(Request $request)
  73. {
  74. $request->validate([
  75. 'comment' => 'required',
  76. ]);
  77. $message = Message::where('user_id',Auth::guard('web')->user()->id)->first();
  78. $obj = new MessageComment;
  79. $obj->message_id = $message->id;
  80. $obj->sender_id = Auth::guard('web')->user()->id;
  81. $obj->type = 'User';
  82. $obj->comment = $request->comment;
  83. $obj->save();
  84. $message_link = route('admin_message_detail',$message->id);
  85. $subject = 'New User Message';
  86. $message = 'Please click on the following link to see the new message from the user:<br><a href="'.$message_link.'">Click Here</a>';
  87. $admin_data = Admin::where('id',1)->first();
  88. \Mail::to($admin_data->email)->send(new Websitemail($subject,$message));
  89. return redirect()->back()->with('success', 'Message is sent successfully!');
  90. }
  91. public function profile()
  92. {
  93. return view('user.profile');
  94. }
  95. public function profile_submit(Request $request)
  96. {
  97. $user = User::where('id',Auth::guard('web')->user()->id)->first();
  98. $request->validate([
  99. 'name' => 'required',
  100. 'email' => 'required|email|unique:users,email,'.$user->id,
  101. 'phone' => 'required',
  102. 'country' => 'required',
  103. 'address' => 'required',
  104. 'state' => 'required',
  105. 'city' => 'required',
  106. 'zip' => 'required',
  107. ]);
  108. if($request->photo) {
  109. $request->validate([
  110. 'photo' => 'image|mimes:jpeg,png,jpg,gif,svg|max:2048',
  111. ]);
  112. if($user->photo != '') {
  113. unlink(public_path('uploads/'.$user->photo));
  114. }
  115. $final_name = 'user_'.time().'.'.$request->photo->extension();
  116. $request->photo->move(public_path('uploads'), $final_name);
  117. $user->photo = $final_name;
  118. }
  119. if($request->password != '') {
  120. $request->validate([
  121. 'password' => 'required',
  122. 'retype_password' => 'required|same:password',
  123. ]);
  124. $user->password = bcrypt($request->password);
  125. }
  126. $user->name = $request->name;
  127. $user->email = $request->email;
  128. $user->phone = $request->phone;
  129. $user->country = $request->country;
  130. $user->address = $request->address;
  131. $user->state = $request->state;
  132. $user->city = $request->city;
  133. $user->zip = $request->zip;
  134. $user->save();
  135. return redirect()->back()->with('success', 'Profile updated successfully!');
  136. }
  137. }