emile 8 months ago
parent cb1b5c3725
commit baf8e5e82e

Binary file not shown.

@ -4,6 +4,7 @@ from . import views
urlpatterns = [
path('chat-rooms/', views.get_chat_rooms),
path('dms/', views.get_dms),
path('visitors/', views.get_visitors),
path('staffs/', views.get_staffs),
path('start-conversation/', views.start_conversation),

@ -15,6 +15,21 @@ def get_chat_rooms(request):
@api_view(['GET'])
def get_dms(request):
try:
token_data = verify(request.headers.get("Authorization"))
user_id = token_data['userid']
user = User.objects.get(id=user_id)
chat_rooms = ChatRoom.objects.annotate(last_update=Max('chatmessage__date_sent')).filter(chatmember__member=user).order_by('-last_update', '-date_created')
chat_rooms_serializer = ChatRoomSerializer(chat_rooms, many=True)
return successRes(chat_rooms_serializer.data)
except TokenError as terr:
return errorRes(msg=str(terr), status=450)
except Exception as e:
return errorRes(str(e))
@api_view(['GET'])
def get_visitors(request):
start_date = request.query_params.get("start_date")
@ -87,19 +102,19 @@ def start_conversation(request):
start_with_id = request.data.get('start_with')
start_with = get_object_or_404(User, id=start_with_id)
existing_room = ChatRoom.objects.filter(
chatmember__member=user
).annotate(
member_count=Count('chatmember')
).filter(
member_count=2,
chatmember__member=start_with
).first()
if existing_room:
return successRes({'room_id': existing_room.id})
existing_chat_room = (
ChatRoom.objects.annotate(member_count=Count('chatmember'))
.filter(member_count=2)
.filter(chatmember__member=user)
.filter(chatmember__member=start_with)
.distinct()
.first()
)
if existing_chat_room:
return successRes({'room_id': existing_chat_room.id})
else:
chat_title = (
f"Chat created by {user.first_name} {user.last_name} "
f"with {start_with.first_name} {start_with.last_name} "
@ -125,6 +140,7 @@ def start_conversation(request):
return successRes({'room_id': room.id})
except TokenError as terr:
return errorRes(msg=str(terr), status=450)
except Exception as e:

@ -161,6 +161,7 @@ class Osichat(WebsocketConsumer):
}
if self.client_type == 'mobile_admin':
chat_room_data = model_to_dict(chat_room)
if hasattr(chat_room, 'chatroomguest') and chat_room.chatroomguest.visitor:
chat_room_data['visitor'] = model_to_dict(chat_room.chatroomguest.visitor)
if last_message:
chat_room_data['last_message'] = model_to_dict(last_message)
@ -352,7 +353,7 @@ class OsitcomChatRoom(WebsocketConsumer):
)
if self.chat_room:
self.group = f"{self.session_id}_{self.chat_room.id}"
self.group = f"chat_{self.chat_room.id}"
else:
self.group = self.session_id #Visitor hasn't started a chat yet, when he will we will remove him from this group and add it to the chat group
@ -580,15 +581,13 @@ class OsitcomChatRoom(WebsocketConsumer):
if self.client_type == 'mobile_admin':
chat_room_data = model_to_dict(chat_room)
if hasattr(chat_room, 'chatroomguest'):
if hasattr(chat_room, 'chatroomguest') and chat_room.chatroomguest.visitor:
chat_room_data['visitor'] = {
'id': chat_room.chatroomguest.visitor.id,
'country_flag': chat_room.chatroomguest.visitor.flag_image_url,
'is_online': chat_room.chatroomguest.visitor.is_online,
'ip': chat_room.chatroomguest.visitor.ip_address,
}
else:
chat_room_data['visitor'] = None
chat_members = ChatMember.objects.filter(room=chat_room)
if chat_members.exists():
@ -597,7 +596,7 @@ class OsitcomChatRoom(WebsocketConsumer):
'id': member.member.id,
'first_name': member.member.first_name,
'last_name': member.member.last_name,
'image': member.member.staffprofile.image,
'image': member.member.staffprofile.image.url,
}
for member in chat_members
]

Loading…
Cancel
Save