74 lines
1.7 KiB
Python
74 lines
1.7 KiB
Python
from ninja import Schema
|
|
from datetime import datetime
|
|
|
|
|
|
class DiscountCodeSchema(Schema):
|
|
id: int
|
|
code: str
|
|
type: str
|
|
value: int
|
|
max_discount: int | None = None
|
|
is_active: bool
|
|
starts_at: datetime | None = None
|
|
ends_at: datetime | None = None
|
|
usage_limit_total: int | None = None
|
|
usage_limit_per_user: int | None = None
|
|
min_amount: int | None = None
|
|
applicable_event_ids: list[int]
|
|
usage_count: int = 0
|
|
created_at: datetime
|
|
updated_at: datetime
|
|
|
|
|
|
class PagedDiscountCodeSchema(Schema):
|
|
count: int
|
|
results: list[DiscountCodeSchema]
|
|
|
|
|
|
class DiscountCodeWriteSchema(Schema):
|
|
code: str
|
|
type: str = "percent"
|
|
value: int
|
|
max_discount: int | None = None
|
|
is_active: bool = True
|
|
starts_at: datetime | None = None
|
|
ends_at: datetime | None = None
|
|
usage_limit_total: int | None = None
|
|
usage_limit_per_user: int | None = None
|
|
min_amount: int | None = None
|
|
applicable_event_ids: list[int] = []
|
|
|
|
|
|
class CreatePaymentIn(Schema):
|
|
event_id: int
|
|
description: str
|
|
discount_code: str | None = None
|
|
mobile: str | None = None
|
|
email: str | None = None
|
|
|
|
|
|
class CreatePaymentOut(Schema):
|
|
start_pay_url: str | None = None
|
|
authority: str | None = None
|
|
base_amount: int
|
|
discount_amount: int
|
|
amount: int
|
|
|
|
class PaymentDetailOut(Schema):
|
|
ref_id: str | None = None
|
|
authority: str | None = None
|
|
base_amount: int
|
|
discount_amount: int
|
|
amount: int
|
|
status: str
|
|
verified_at: str | None = None
|
|
event: dict
|
|
|
|
class CouponVerifyIn(Schema):
|
|
event_id: int
|
|
code: str
|
|
|
|
class CouponVerifyOut(Schema):
|
|
discount_amount: int
|
|
final_price: int
|