Skip to content

Commit

Permalink
How many notifications have not been seen on each chat will be shown
Browse files Browse the repository at this point in the history
  • Loading branch information
GaneshKandu committed Apr 30, 2023
1 parent aec04fc commit c5b1a31
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 3 deletions.
21 changes: 20 additions & 1 deletion app/Http/Controllers/KchatController.php
Original file line number Diff line number Diff line change
Expand Up @@ -108,21 +108,40 @@ function kchat(Request $request){
*/

$tmp = DB::table('messages')
->select('messages.id as mid','messages.created_at as date','messages.id as mid','messages.message', 'messages.type', 'messages.user_id', 'users.first_name', 'users.last_name', 'users.photo', 'lm.*')
->rightJoin('users', 'messages.user_id', '=', 'users.id')
->rightJoin('conversations', 'messages.conversation_id', '=', 'conversations.id')
->rightJoin(DB::raw('(SELECT DISTINCT participants.conversation_id, conversations.* FROM `participants` JOIN conversations ON participants.conversation_id = conversations.id WHERE participants.user_id = '.Auth()->user()->id.') lm'), 'messages.id', '=', 'lm.message_id')
->select('messages.id as mid','messages.created_at as date','messages.id as mid','messages.message', 'messages.type', 'messages.user_id', 'users.first_name', 'users.last_name', 'users.photo', 'lm.*')
->orderBy('messages.id','DESC')
->orderBy('conversations.id')
->limit(50);

//SELECT max(messages.id), COUNT(messages.id), messages.conversation_id FROM messages join participants on messages.conversation_id = participants.conversation_id where participants.user_id = 1 and messages.id > participants.seen GROUP by messages.conversation_id;
$tmp1 = DB::table('messages')
->select(DB::raw('COUNT(messages.id) as unread'),'messages.conversation_id')
->Join('participants', 'messages.conversation_id', '=', 'participants.conversation_id')
->where('participants.user_id',Auth()->user()->id)
->where('messages.id', '>', DB::raw('participants.seen'))
->groupBy('messages.conversation_id')
->limit(50);

if (session()->has('chat_id')){
$tmp->where('messages.id','>', session()->get('chat_id'));
}

$data['chats'] = $tmp->get()->toArray();

$unread = [];

foreach($tmp1->get()->toArray() as $v){
$unread[$v->conversation_id] = $v;
}

foreach($data['chats'] as $i => $v){

if(isset($unread[$v->conversation_id])){
$data['chats'][$i]->unread = $unread[$v->conversation_id]->unread;
}
$data['chats'][$i]->conversation_name = htmlentities($data['chats'][$i]->conversation_name);
$data['chats'][$i]->first_name = htmlentities($data['chats'][$i]->first_name);
$data['chats'][$i]->last_name = htmlentities($data['chats'][$i]->last_name);
Expand Down
10 changes: 8 additions & 2 deletions public/js/kchat.msg.js
Original file line number Diff line number Diff line change
Expand Up @@ -81,12 +81,18 @@ $(document).ready (function(){
element.last_name = '';
}

if(element.unread != undefined){
element.unread = "<span class=\"badge badge-pill badge-success ml-1\">"+element.unread+"</span>";
}else{
element.unread = "";
}

Conversation = $(`
<li class="bounceInDown" id="conversation${ element.id }" >
<a href="/messages/?chat=${ element.conversation_id }" class="clearfix">
<img src="${ element.photo }" alt="" class="img-circle">
<div class="friend-name">
<strong>${ element.conversation_name }<!--i class="mdi mdi-star favorite"></i--></strong>
<strong>${ element.conversation_name }${ element.unread }<!--i class="mdi mdi-star favorite"></i--></strong>
</div>
<div class="last-message text-muted"><strong>${ element.first_name } ${ element.last_name } : </strong>${ element.message }</div>
<small class="time text-muted timestamp"> ${ element.date } </small>
Expand All @@ -102,7 +108,7 @@ $(document).ready (function(){
<a href="/messages/?chat=${ element.conversation_id }" class="clearfix">
<img src="${ element.photo }" alt="" class="img-circle">
<div class="friend-name">
<strong>${ element.conversation_name }<!--i class="mdi mdi-star favorite"></i--></strong>
<strong>${ element.conversation_name }${ element.unread }<!--i class="mdi mdi-star favorite"></i--></strong>
</div>
<div class="last-message text-muted"><strong>${ element.first_name } ${ element.last_name } : </strong><i class="fa fa-pencil-square-o fa" aria-hidden="true"></i></div>
<small class="time text-muted timestamp"> ${ element.date } </small>
Expand Down

0 comments on commit c5b1a31

Please sign in to comment.