from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework.permissions import IsAuthenticated

from courses.models import MemberCourse


class DashboardView(APIView):

    permission_classes = [IsAuthenticated]

    def get(self, request):
        member = getattr(request.user, 'member', None)

        if member is None:
            return Response({
                'course': None
            })

        member_course = (
            MemberCourse.objects
            .filter(member=member)
            .order_by('-start_date')
            .first()
        )

        if member_course is None:
            return Response({
                'course': None
            })

        return Response({
            'course': {
                'id': member_course.id,
                'member_name': str(member_course.member),
                'course_title': member_course.course.title if hasattr(member_course, 'course') else '',
                'total_sessions': member_course.total_sessions,
                'used_sessions': member_course.used_sessions,
                'remaining_sessions': member_course.total_sessions - member_course.used_sessions,
                'start_date': member_course.start_date,
                'end_date': member_course.end_date,
                'fee': member_course.fee,
                'paid_fee': member_course.paid_fee,
                'is_active': member_course.is_active,
                'is_expired': member_course.is_expired,
            }
        })
