user(); $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'; } $remove = $User->id; $Users = User::whereHas('messagesSent', function($q) use($User){ $q->where('recipient_user_id', $User->id); }) ->orWhereHas('messagesReceived', function($q) use($User){ $q->where('sender_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) { $UnReadReceivedMessages = Message::where('sender_user_id', $user->id)->where('recipient_user_id', $User->id)->where('status','UnRead')->get()->count(); $user->unread_messages_count = $UnReadReceivedMessages; $MessagesCount = Message::where(function ($query) use ($user,$User){ $query->where('sender_user_id', $user->id)->where('recipient_user_id', $User->id); })->orWhere(function ($query) use ($user,$User){ $query->where('sender_user_id', $User->id)->where('recipient_user_id', $user->id); })->get()->count(); $user->messages_count = $MessagesCount; } // // $Users = $Users->filter(function ($value, $key) use($remove){ // return $value['id'] != $remove; // }); 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()->cant('delete', $Message)) { return \MessageResponse::error(trans('messages.access_denied')); } $Message->delete(); return \MessageResponse::success(trans('messages.success')); } public function destroyUserMessages(User $User) { // if (auth('api')->user()->cant('deleteUserMessage', Message::class)) { // return \MessageResponse::error(trans('messages.access_denied')); // } Message::where(function ($query) use ($User) { $query->where('sender_user_id', auth('api')->user()->id)->where('recipient_user_id', $User->id); })->orWhere(function ($query) use ($User) { $query->where('sender_user_id', $User->id)->where('recipient_user_id', auth('api')->user()->id); })->get()->each->delete(); return \MessageResponse::success(trans('messages.success')); } }