from rest_framework.permissions import IsAuthenticated
from rest_framework.response import Response
from rest_framework.views import APIView

from apps.business.distributor.services.sponsor_income_service import (
    get_sponsor_income_ledger,
    get_sponsor_income_summary,
)


class SponsorIncomeSummaryView(APIView):
    """
    GET /api/v1/web/sponsor-income/summary/
    Returns total sponsor income, per-distributor breakdown, monthly earnings.
    """
    permission_classes = [IsAuthenticated]

    def get(self, request):
        data = get_sponsor_income_summary(request.user)
        return Response({'success': True, 'data': data})


class SponsorIncomeLedgerView(APIView):
    """
    GET /api/v1/web/sponsor-income/ledger/?page=1&page_size=20
    Returns paginated direct incentive ledger entries enriched with referral info.
    """
    permission_classes = [IsAuthenticated]

    def get(self, request):
        try:
            page = max(1, int(request.query_params.get('page', 1)))
            page_size = min(100, max(1, int(request.query_params.get('page_size', 20))))
        except (ValueError, TypeError):
            page, page_size = 1, 20

        data = get_sponsor_income_ledger(request.user, page=page, page_size=page_size)
        return Response({'success': True, 'data': data})
