|
|
|
@ -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,43 +102,44 @@ 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})
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
chat_title = (
|
|
|
|
|
f"Chat created by {user.first_name} {user.last_name} "
|
|
|
|
|
f"with {start_with.first_name} {start_with.last_name} "
|
|
|
|
|
f"on {timezone.now()}"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
room = ChatRoom.objects.create(
|
|
|
|
|
name=chat_title,
|
|
|
|
|
created_by=user,
|
|
|
|
|
date_created=timezone.now(),
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
ChatMember.objects.create(
|
|
|
|
|
member=user,
|
|
|
|
|
room=room,
|
|
|
|
|
date_joined=timezone.now()
|
|
|
|
|
)
|
|
|
|
|
ChatMember.objects.create(
|
|
|
|
|
member=start_with,
|
|
|
|
|
room=room,
|
|
|
|
|
date_joined=timezone.now()
|
|
|
|
|
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} "
|
|
|
|
|
f"on {timezone.now()}"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
room = ChatRoom.objects.create(
|
|
|
|
|
name=chat_title,
|
|
|
|
|
created_by=user,
|
|
|
|
|
date_created=timezone.now(),
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
ChatMember.objects.create(
|
|
|
|
|
member=user,
|
|
|
|
|
room=room,
|
|
|
|
|
date_joined=timezone.now()
|
|
|
|
|
)
|
|
|
|
|
ChatMember.objects.create(
|
|
|
|
|
member=start_with,
|
|
|
|
|
room=room,
|
|
|
|
|
date_joined=timezone.now()
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
return successRes({'room_id': room.id})
|
|
|
|
|
|
|
|
|
|
return successRes({'room_id': room.id})
|
|
|
|
|
|
|
|
|
|
except TokenError as terr:
|
|
|
|
|
return errorRes(msg=str(terr), status=450)
|
|
|
|
|