# Copyright (C) 2020 by Animath
# SPDX-License-Identifier: GPL-3.0-or-later

from rest_framework import serializers
from rest_polymorphic.serializers import PolymorphicSerializer

from ..models import CoachRegistration, ParticipantRegistration, \
    StudentRegistration, VolunteerRegistration


class CoachSerializer(serializers.ModelSerializer):
    class Meta:
        model = CoachRegistration
        fields = '__all__'


class ParticipantSerializer(serializers.ModelSerializer):
    class Meta:
        model = ParticipantRegistration
        fields = '__all__'


class StudentSerializer(serializers.ModelSerializer):
    class Meta:
        model = StudentRegistration
        fields = '__all__'


class VolunteerSerializer(serializers.ModelSerializer):
    class Meta:
        model = VolunteerRegistration
        fields = '__all__'


class RegistrationSerializer(PolymorphicSerializer):
    model_serializer_mapping = {
        CoachRegistration: CoachSerializer,
        StudentRegistration: StudentSerializer,
        VolunteerRegistration: VolunteerSerializer,
    }
