package model

import (
	"time"

	"gorm.io/datatypes"
)

type OrderCheckout struct {
	ID                    uint64         `gorm:"primaryKey" json:"id"`
	OrderID               uint64         `gorm:"not null;index" json:"order_id"`
	InitiatedBy           uint64         `gorm:"not null" json:"initiated_by"`
	Status                string         `gorm:"size:32;not null;default:'submitted'" json:"status"`
	RentAmount            float64        `gorm:"type:decimal(12,2);not null;default:0" json:"rent_amount"`
	OwnerRentAmount       float64        `gorm:"type:decimal(12,2);not null;default:0" json:"owner_rent_amount"`
	PlatformFee           float64        `gorm:"type:decimal(12,2);not null;default:0" json:"platform_fee"`
	DepositAmount         float64        `gorm:"type:decimal(12,2);not null;default:0" json:"deposit_amount"`
	ConsumableAmount      float64        `gorm:"type:decimal(12,2);not null;default:0" json:"consumable_amount"`
	CoinConsumedM         float64        `gorm:"type:decimal(12,2);not null;default:0" json:"coin_consumed_m"`
	OtherAmount           float64        `gorm:"type:decimal(12,2);not null;default:0" json:"other_amount"`
	DepositDeductAmount   float64        `gorm:"type:decimal(12,2);not null;default:0" json:"deposit_deduct_amount"`
	RenterRefundAmount    float64        `gorm:"type:decimal(12,2);not null;default:0" json:"renter_refund_amount"`
	OwnerIncomeAmount     float64        `gorm:"type:decimal(12,2);not null;default:0" json:"owner_income_amount"`
	Content               string         `json:"content"`
	EvidenceURLS          datatypes.JSON `gorm:"column:evidence_urls" json:"evidence_urls"`
	OwnerAdjustmentReason string         `json:"owner_adjustment_reason"`
	OwnerAdjustedAt       *time.Time     `json:"owner_adjusted_at"`
	RenterConfirmedAt     *time.Time     `json:"renter_confirmed_at"`
	RenterRejectedAt      *time.Time     `json:"renter_rejected_at"`
	CreatedAt             time.Time      `json:"created_at"`
	UpdatedAt             time.Time      `json:"updated_at"`
}

func (OrderCheckout) TableName() string {
	return "order_checkouts"
}
