package dto

type WalletTransactionDetailRequest struct {
	ID uint `json:"id" binding:"required"`

	// transactionType exactly as returned by /wallet/transactions
	// (RECHARGE, CHAT, CALL, ORDER, or any other wallet type).
	TransactionType string `json:"transactionType" binding:"required"`
}

type TransactionAstrologer struct {
	ID uint `json:"id"`

	Name string `json:"name"`

	ProfileImage string `json:"profileImage"`
}

type TransactionSession struct {
	SessionType string `json:"sessionType"`

	Status string `json:"status"`

	DurationSeconds int `json:"durationSeconds"`
}

type TransactionPayment struct {
	PaymentMode string `json:"paymentMode"`

	PaymentReference string `json:"paymentReference"`

	OrderID string `json:"orderId"`

	PaymentStatus string `json:"paymentStatus"`

	CashbackAmount float64 `json:"cashbackAmount"`
}

type TransactionProduct struct {
	ID uint `json:"id"`

	Name string `json:"name"`

	ProductImage string `json:"productImage"`

	Price float64 `json:"price"`

	SellingPrice float64 `json:"sellingPrice"`
}

type TransactionAddress struct {
	Name string `json:"name"`

	PhoneNumber string `json:"phoneNumber"`

	FlatNo string `json:"flatNo"`

	Locality string `json:"locality"`

	Landmark string `json:"landmark"`

	City string `json:"city"`

	State string `json:"state"`

	Country string `json:"country"`

	Pincode string `json:"pincode"`
}

type WalletTransactionDetail struct {
	ID uint `json:"id"`

	Title string `json:"title"`

	TransactionNumber string `json:"transactionNumber"`

	TransactionType string `json:"transactionType"`

	Amount float64 `json:"amount"`

	IsCredit bool `json:"isCredit"`

	Status string `json:"status"`

	Icon string `json:"icon"`

	CreatedAt string `json:"createdAt"`

	Astrologer *TransactionAstrologer `json:"astrologer"`

	Session *TransactionSession `json:"session"`

	Payment *TransactionPayment `json:"payment"`

	Product *TransactionProduct `json:"product"`

	Address *TransactionAddress `json:"address"`
}

type WalletTransactionDetailResponse struct {
	Status int `json:"status"`

	Message string `json:"message"`

	Data *WalletTransactionDetail `json:"data"`
}
