|
|
|
@ -91,6 +91,14 @@ class Osichat(WebsocketConsumer):
|
|
|
|
|
}
|
|
|
|
|
self.get_chats_handler(event)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if event_type == 'get_dms':
|
|
|
|
|
event = {
|
|
|
|
|
'type': 'get_dms_handler',
|
|
|
|
|
}
|
|
|
|
|
self.get_chats_handler(event)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if event_type == 'get_visitors':
|
|
|
|
|
event = {
|
|
|
|
|
'type': 'get_visitors_handler',
|
|
|
|
@ -181,6 +189,45 @@ class Osichat(WebsocketConsumer):
|
|
|
|
|
}))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def get_dms_handler(self, event):
|
|
|
|
|
chat_rooms = ChatRoom.objects.annotate(last_update=Max('chatmessage__date_sent'),order_key=Case(
|
|
|
|
|
When(last_update__isnull=True, then=F('date_created')),
|
|
|
|
|
default=F('last_update'),
|
|
|
|
|
output_field=DateTimeField(),)).filter(chatroomguest__isnull=True, chatmember__member=self.scope["user"]).order_by('-order_key')
|
|
|
|
|
context = {
|
|
|
|
|
'chat_rooms': chat_rooms,
|
|
|
|
|
}
|
|
|
|
|
if self.client_type == 'mobile_admin':
|
|
|
|
|
chat_rooms_data = []
|
|
|
|
|
for chat_room in chat_rooms:
|
|
|
|
|
chat_room_data = {
|
|
|
|
|
'id': chat_room.id,
|
|
|
|
|
'name': chat_room.name,
|
|
|
|
|
'last_update': chat_room.last_updated,
|
|
|
|
|
'date_created': chat_room.date_created,
|
|
|
|
|
'unread_messages': chat_room.unread_messages(user),
|
|
|
|
|
'last_message': model_to_dict(ChatMessage.objects.filter(room=chat_room).last())
|
|
|
|
|
}
|
|
|
|
|
members = chat_room.chatmember_set.all()
|
|
|
|
|
member_data = []
|
|
|
|
|
for member in members:
|
|
|
|
|
member_data.append({
|
|
|
|
|
'id': member.member.id,
|
|
|
|
|
'first_name': member.member.first_name,
|
|
|
|
|
'last_name': member.member.last_name,
|
|
|
|
|
'image': member.member.staffprofile.image.url if hasattr(member.member, 'staffprofile') and member.member.staffprofile.image else None,
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
chat_room_data['members'] = member_data
|
|
|
|
|
|
|
|
|
|
chat_rooms_data.append(chat_room_data)
|
|
|
|
|
|
|
|
|
|
self.send(text_data=json.dumps({
|
|
|
|
|
'event_type': 'get_dms',
|
|
|
|
|
'chat_rooms_data': chat_rooms_data,
|
|
|
|
|
}, cls=DjangoJSONEncoder))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def get_visitors_handler(self, event):
|
|
|
|
|
today = timezone.now().date()
|
|
|
|
|
visitors = Visitor.objects.filter(visitorlog__visit_date__date=today).annotate(latest_visit=Max('visitorlog__visit_date')).order_by('-latest_visit')
|
|
|
|
|