Edit File: FriendService.php
<?php namespace App\Services\User; use App\Models\FriendRequest; use App\Models\SearchHistory; use App\Models\User; class FriendService { public function myRequests($paginateNum) { $receivedRequests = auth()->user() ->receivedFriendRequests() ->pending() ->with('sender:id,first_name,last_name,image') ->latest() ->paginate($paginateNum); return $receivedRequests; } //---------------------------------------------------------------------------------------------------------------------------- public function myRequestsCount() { return auth()->user() ->receivedFriendRequests() ->pending() ->count(); } //---------------------------------------------------------------------------------------------------------------------------- public function myFriends($paginateNum) { $friends = FriendRequest::where('user_id', auth()->id()) ->orWhere('friend_id', auth()->id()) ->accepted() ->with('sender:id,first_name,last_name,image') ->latest() ->paginate($paginateNum); return $friends; } //---------------------------------------------------------------------------------------------------------------------------- public function myFriendsCount() { return FriendRequest::where('user_id', auth()->id()) ->orWhere('friend_id', auth()->id()) ->accepted() ->count(); } //---------------------------------------------------------------------------------------------------------------------------- public function showFriend($id) { return User::where('id', '!=', auth()->id()) ->with('interestOptions') ->findOrFail($id);; } //---------------------------------------------------------------------------------------------------------------------------- public function switchRequest($friend_id) { $friendRequest = auth()->user()->sentFriendRequests()->where('friend_id', $friend_id)->first(); if ($friendRequest) { $friendRequest->delete(); return $this->response('success', __('apis.friend_request_rejected'), 'canceled'); } else { auth()->user()->sentFriendRequests()->create(['friend_id' => $friend_id]); return $this->response('success', __('apis.friend_request_sent'), 'sent'); } } //---------------------------------------------------------------------------------------------------------------------------- public function acceptRequest($request_id) { $request = $this->findRequest($request_id,); $request->update(['is_accepted' => true]); return $this->response('success', __('apis.friend_request_accepted')); } //---------------------------------------------------------------------------------------------------------------------------- public function rejectRequest($request_id) { $request = $this->findRequest($request_id); $request->delete(); return $this->response('success', __('apis.friend_request_rejected')); } //---------------------------------------------------------------------------------------------------------------------------- public function getAll($paginateNum) { return $this->getUsersQuery() ->inRandomOrder() ->paginate($paginateNum); } //---------------------------------------------------------------------------------------------------------------------------- public function filter($filter = [], $paginateNum) { $users = $this->getUsersQuery() ->filter($filter) ->paginate($paginateNum); if (request('name') && auth()->check()) { $this->storeSearchHistory(request('name')); } return $users; } //---------------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------------- //helper methods //---------------------------------------------------------------------------------------------------------------------------- public function storeSearchHistory($searchQuery) { $maxSearches = 5; $searchCount = SearchHistory::where('user_id', auth()->id())->count(); if ($searchCount >= $maxSearches) { SearchHistory::where('user_id', auth()->id()) ->orderBy('created_at', 'asc') ->first() ->delete(); } SearchHistory::create([ 'user_id' => auth()->id(), 'search_query' => $searchQuery, ]); } /** * Get the base query for user details. * * @return \Illuminate\Database\Eloquent\Builder */ protected function findRequest($request_id) { return auth()->user()->receivedFriendRequests() ->pending() ->findOrFail($request_id); } /** * Get the base query for users. * * @return \Illuminate\Database\Eloquent\Builder */ protected function getUsersQuery() { return User::when(auth()->check(), function ($query) { return $query->where('id', '!=', auth()->id()); }); } protected function response($key, $msg, $data = []) { return [ 'key' => $key, 'msg' => $msg, 'data' => $data ]; } }
Back to File Manager