FriendsController.php 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. <?php
  2. namespace App\Http\Controllers\Main;
  3. use App\Friend;
  4. use App\Http\Controllers\Controller;
  5. use App\User;
  6. use Illuminate\Http\Request;
  7. use Illuminate\Support\Facades\Auth;
  8. class FriendsController extends Controller
  9. {
  10. public function search(Request $request)
  11. {
  12. $q = $request->q;
  13. $users = User::where('id', '!=', Auth::id())
  14. ->where(function ($query) use ($q) {
  15. $query->where('name', 'like', "%$q%");
  16. $query->orWhere('surname', 'like', "%$q%");
  17. })->take(10)->get();
  18. if (count($users) === 0) {
  19. $full_name_arr = explode(' ', $q);
  20. $name = (isset($full_name_arr[0])) ? $full_name_arr[0] : '';
  21. $surname = (isset($full_name_arr[1])) ? $full_name_arr[1] : '';
  22. $users = User::where('id', '!=', Auth::id())
  23. ->where(function ($query) use ($name, $surname) {
  24. $query->where('name', 'like', "%$name%");
  25. $query->orWhere('surname', 'like', "%$surname%");
  26. })->take(10)->get();
  27. }
  28. $users_list = [];
  29. foreach ($users as $user) {
  30. $users_list[] = [
  31. "id" => $user->id,
  32. "name" => $user->name,
  33. "surname" => $user->surname,
  34. "avatar_url" => $user->avatar_url
  35. ];
  36. }
  37. return response()->json($users);
  38. }
  39. public function addFriend(Request $request)
  40. {
  41. $friend = User::find($request->id);
  42. if (!$friend) return abort(404);
  43. /**
  44. * @status
  45. * 1 - заявка отправлена пользователю @user_id
  46. * 2 - заявка отклонена @user_id
  47. * 3 - заявка принята
  48. * 4 - оставить в подписчиках @sender_request
  49. */
  50. Friend::create([
  51. "sender_request" => Auth::id(),
  52. "user_id" => $request->id,
  53. "status" => 1
  54. ]);
  55. return redirect()->back();
  56. }
  57. static function myFriends()
  58. {
  59. $friends = Friend::where(function ($query) {
  60. $query->where('sender_request', Auth::id());
  61. $query->orWhere('user_id', Auth::id());
  62. })->where('status', 3)->get();
  63. return $friends;
  64. }
  65. }