"""DRF request serializers for the Ross1000 export API."""

from __future__ import annotations

from rest_framework import serializers


class Ross1000ExportRequestSerializer(serializers.Serializer):
    """Query parameter serializer for GET /api/istat/ross1000/export/"""

    structure_id = serializers.IntegerField(min_value=1)
    start_date = serializers.DateField()
    end_date = serializers.DateField()
    mode = serializers.ChoiceField(
        choices=["xml", "soap"],
        default="xml",
        required=False,
        help_text="Export mode: 'xml' (default) or 'soap' envelope.",
    )

    def validate(self, attrs):
        if attrs["end_date"] < attrs["start_date"]:
            raise serializers.ValidationError(
                {"end_date": "end_date must be >= start_date."}
            )
        return attrs
