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

from django.contrib.auth.models import User
from rest_framework import serializers
from rest_polymorphic.serializers import PolymorphicSerializer

from ..models import CoachRegistration, ParticipantRegistration, \
    Payment, 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,
    }


class PaymentSerializer(serializers.ModelSerializer):
    class Meta:
        model = Payment
        fields = '__all__'


class BasicUserSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = ['id', 'first_name', 'last_name', 'email', ]