Initial commit
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
from rest_framework import serializers
|
||||
|
||||
from apps.bookings.models import Booking
|
||||
from apps.payments.models import Payment, PaymentProvider, PaymentStatus
|
||||
|
||||
|
||||
class PaymentSerializer(serializers.ModelSerializer):
|
||||
booking_id = serializers.IntegerField(source="booking.id", read_only=True)
|
||||
|
||||
class Meta:
|
||||
model = Payment
|
||||
fields = [
|
||||
"id",
|
||||
"booking_id",
|
||||
"provider",
|
||||
"status",
|
||||
"amount",
|
||||
"currency",
|
||||
"external_id",
|
||||
"metadata",
|
||||
"created_at",
|
||||
]
|
||||
read_only_fields = fields
|
||||
|
||||
|
||||
class PaymentCreateSerializer(serializers.ModelSerializer):
|
||||
booking_id = serializers.IntegerField(write_only=True)
|
||||
provider = serializers.ChoiceField(choices=PaymentProvider.choices)
|
||||
|
||||
class Meta:
|
||||
model = Payment
|
||||
fields = ["booking_id", "provider"]
|
||||
|
||||
def validate_booking_id(self, value):
|
||||
if not Booking.objects.filter(id=value).exists():
|
||||
raise serializers.ValidationError("Booking not found")
|
||||
return value
|
||||
|
||||
def create(self, validated_data):
|
||||
booking = Booking.objects.get(id=validated_data["booking_id"])
|
||||
return Payment.objects.create(
|
||||
booking=booking,
|
||||
provider=validated_data["provider"],
|
||||
status=PaymentStatus.CREATED,
|
||||
amount=booking.price_amount,
|
||||
currency=booking.currency,
|
||||
metadata={},
|
||||
)
|
||||
Reference in New Issue
Block a user