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

from core.models import Course, VideoRecord, UserCourse


class UserSerializer(serializers.ModelSerializer):
    full_name = serializers.SerializerMethodField()

    class Meta:
        model = User
        fields = ['id', 'full_name', 'username', 'first_name', 'last_name', 'email']

    def get_full_name(self, obj):
        return obj.first_name+' '+obj.last_name


class CourseSerializer(serializers.ModelSerializer):
    class Meta:
        model = Course
        fields = ['id', 'title', 'details', 'instructor', 'student']


class VideoRecordSerializer(serializers.ModelSerializer):
    user = UserSerializer()
    courses = serializers.SerializerMethodField()

    class Meta:
        model = VideoRecord
        fields = ['title', 'id', 'user', 'courses', 'usercourse', 'thumbnail', 'video', 'created_at']
    
    def get_courses(self, obj):
        if obj.usercourse:
            try:
                return CourseSerializer(obj.usercourse.course).data
            except UserCourse.DoesNotExist:
                return None
        return None
