diff --git a/osinaweb/osichat/api/__pycache__/urls.cpython-310.pyc b/osinaweb/osichat/api/__pycache__/urls.cpython-310.pyc index 1d422820..fd68c7a2 100644 Binary files a/osinaweb/osichat/api/__pycache__/urls.cpython-310.pyc and b/osinaweb/osichat/api/__pycache__/urls.cpython-310.pyc differ diff --git a/osinaweb/osichat/api/__pycache__/views.cpython-310.pyc b/osinaweb/osichat/api/__pycache__/views.cpython-310.pyc index c17663a0..52ada8be 100644 Binary files a/osinaweb/osichat/api/__pycache__/views.cpython-310.pyc and b/osinaweb/osichat/api/__pycache__/views.cpython-310.pyc differ diff --git a/osinaweb/osichat/api/urls.py b/osinaweb/osichat/api/urls.py index 44bc3164..92def2f3 100644 --- a/osinaweb/osichat/api/urls.py +++ b/osinaweb/osichat/api/urls.py @@ -4,4 +4,5 @@ from . import views urlpatterns = [ path('chat-rooms/', views.get_chat_rooms), + path('visitors/', views.get_visitors), ] \ No newline at end of file diff --git a/osinaweb/osichat/api/views.py b/osinaweb/osichat/api/views.py index 3e257736..c434ba8a 100644 --- a/osinaweb/osichat/api/views.py +++ b/osinaweb/osichat/api/views.py @@ -3,6 +3,7 @@ from osichat.models import * from rest_framework.decorators import api_view from .serializers import * from django.shortcuts import get_object_or_404 +from django.db.models import Q @api_view(['GET']) def get_chat_rooms(request): @@ -11,3 +12,29 @@ def get_chat_rooms(request): return successRes(chat_rooms_serializer.data) + +@api_view(['GET']) +def get_visitors(request): + start_date = request.data.get("start_date") + end_date = request.data.get("end_date") + if start_date and end_date: #Range of time + visitors = Visitor.objects.filter(Q(visitorlog__visit_date__range=[start_date, end_date]) | Q(visitorlog__left_date__range=[start_date, end_date])).distinct() + + elif start_date and not end_date: #Specific date + visitors = Visitor.objects.filter(Q(visitorlog__visit_date=start_date) | Q(visitorlog__left_date=start_date)).distinct() + + else: #Active visitors + visitors = Visitor.objects.filter(visitorlog__left_date__isnull=True).distinct() + + visitors_count = visitors.count() + visitors_serializer = VisitorSerializer(visitors, many=True) + + response_data = { + "count": visitors_count, + "visitors": visitors_serializer.data + } + + return successRes(response_data) + + +