from rest_framework import serializers from apps.payments.models import Order class CheckoutResponseSerializer(serializers.Serializer): order_id = serializers.IntegerField() redirect_url = serializers.URLField() amount_toman = serializers.IntegerField() gateway = serializers.CharField() class OrderSerializer(serializers.ModelSerializer): course_id = serializers.IntegerField(read_only=True) course_slug = serializers.CharField(source="course.slug", read_only=True) course_title = serializers.CharField(source="course.title", read_only=True) promo_code = serializers.CharField(source="promo_code.code", read_only=True, allow_null=True) referrer_code = serializers.CharField(source="referrer.referral_code", read_only=True, allow_null=True) class Meta: model = Order fields = [ "id", "course_id", "course_slug", "course_title", "base_amount_toman", "discount_amount_toman", "amount_toman", "ilo_fee_toman", "instructor_share_toman", "commission_percent_snapshot", "gateway", "ref_id", "status", "created_at", "paid_at", "failed_at", "last_error", "promo_code", "referrer_code", ] read_only_fields = fields class InstructorSaleSerializer(serializers.ModelSerializer): """Sale entry shown in the instructor's revenue / orders panel.""" course_id = serializers.IntegerField(read_only=True) course_title = serializers.CharField(source="course.title", read_only=True) student_id = serializers.IntegerField(source="student.id", read_only=True) student_name = serializers.CharField(source="student.full_name", read_only=True) class Meta: model = Order fields = [ "id", "course_id", "course_title", "student_id", "student_name", "amount_toman", "ilo_fee_toman", "instructor_share_toman", "commission_percent_snapshot", "status", "created_at", "paid_at", ] read_only_fields = fields