package entity

import "time"

type Currency string

const (
	CurrencyIRR Currency = "IRR"
	CurrencyUSD Currency = "USD"
)

type PaymentStatus string

const (
	PaymentStatusPending   PaymentStatus = "Pending"
	PaymentStatusSuccess   PaymentStatus = "Success"
	PaymentStatusFailed    PaymentStatus = "Failed"
	PaymentStatusCancelled PaymentStatus = "Cancelled"
	//...
)

type PayableType string

const (
	PayableTypeDonate PayableType = "Donate"
	PayableTypeOrder  PayableType = "Order"
	PayableTypeWalet  PayableType = "WaletCharge"
)

type Payment struct {
	ID          uint
	UserID      uint
	MethodID    uint
	GatewayID   uint
	PayableType PayableType
	PayableID   uint
	TotalAmount int64
	PaidAmount  int64
	Currency    Currency
	Status      PaymentStatus
	Description string
	CreatedAt   time.Time
	UpdatedAt   time.Time
	PaidAt      *time.Time
}
