from rest_framework import permissions, viewsets

from .models import InvoiceTemplate, PurchasedTemplate
from .serializers import InvoiceTemplateSerializer, PurchasedTemplateSerializer


class InvoiceTemplateViewSet(viewsets.ReadOnlyModelViewSet):
    queryset = InvoiceTemplate.objects.filter(is_active=True)
    serializer_class = InvoiceTemplateSerializer
    permission_classes = [permissions.IsAuthenticated]
    filterset_fields = ['category', 'min_tier_required']


class PurchasedTemplateViewSet(viewsets.ModelViewSet):
    serializer_class = PurchasedTemplateSerializer
    permission_classes = [permissions.IsAuthenticated]

    def get_queryset(self):
        return PurchasedTemplate.objects.filter(user=self.request.user)

    def perform_create(self, serializer):
        template = serializer.validated_data['template']
        serializer.save(
            user=self.request.user,
            company=self.request.user.company,
            uses_remaining=template.usage_limit,
        )
