paginate(10); $User = auth('api')->user(); // $ReceivedMessages = $User->messagesReceived; // $SentMessages = $User->messagesSent; // // // $Messages = $SentMessages->merge($ReceivedMessages); // $Users = User::whereHas('messagesSent') $role = null; $medical_center_id = null; $User = auth('api')->user(); if ($User->hasRole('Supervisor') || $User->hasRole('User')) { $medical_center_id = $User->medical_center_id; $role = 'Admin'; } $Users = User::whereHas('messagesSent', function($q) use($User){ $q->where('sender_user_id', $User->id)->orWhere('recipient_user_id', $User->id); })->orWhereHas('messagesReceived', function($q) use($User){ $q->where('sender_user_id', $User->id)->orWhere('recipient_user_id', $User->id); }) ->when($medical_center_id, function($query) use ($medical_center_id){ $query->where('medical_center_id', $medical_center_id); }) ->when($role, function($query) use($role){ $query->role($role); }) ->paginate(10); // foreach ($Users as $User) { // $CountMessages = $User->messagesSent->count() + $User->messagesReceived->count(); // $User->message_count = $CountMessages; // } return \MessageResponse::data($Users); } public function create() { } public function show($UserID) { // if (!auth('api')->user()->can('show', $Message)) { // return \MessageResponse::error(trans('messages.access_denied')); // } $User = User::findOrFail($UserID); // $SendMessages = Message::where('sender_user_id', auth('api')->user()->id)->where('recipient_user_id', $UserID)->get(); $ReceivedMessages = Message::where('sender_user_id', $UserID)->where('recipient_user_id', auth('api')->user()->id)->get(); $Messages = Message::where(function ($query) use ($UserID) { $query->where('sender_user_id', auth('api')->user()->id)->where('recipient_user_id', $UserID); })->orWhere(function ($query) use ($UserID) { $query->where('sender_user_id', $UserID)->where('recipient_user_id', auth('api')->user()->id); })->get(); foreach ($ReceivedMessages as $ReceivedMessage) { $ReceivedMessage->status = 'Read'; $ReceivedMessage->save(); } return \MessageResponse::data($Messages); } public function store(StoreMessageRequest $request) { $MessageData = [ // 'title' => $request->title, 'text' => $request->message, 'sender_user_id' => auth('api')->user()->id, 'recipient_user_id' => $request->user_id, 'status' => 'UnRead', ]; Message::create($MessageData); return \MessageResponse::success(trans('messages.success')); } public function edit(Message $Message) { // return \MessageResponse::data($Message); } public function update(StoreMessageRequest $request, Message $Message) { // $Message->update($request->all()); // return \MessageResponse::success(trans('messages.success')); } public function destroy(Message $Message) { if (!auth('api')->user()->can('delete', $Message)) { return \MessageResponse::error(trans('messages.access_denied')); } $Message->delete(); return \MessageResponse::success(trans('messages.success')); } }