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