package dto

import "quyun/v2/app/requests"

type ApplyForm struct {
	Name   string `json:"name"`
	Bio    string `json:"bio"`
	Avatar string `json:"avatar"`
}

type DashboardStats struct {
	TotalFollowers IntStatItem   `json:"total_followers"`
	TotalRevenue   FloatStatItem `json:"total_revenue"`
	PendingRefunds int           `json:"pending_refunds"`
	NewMessages    int           `json:"new_messages"`
}

type IntStatItem struct {
	Value int     `json:"value"`
	Trend float64 `json:"trend"`
}

type FloatStatItem struct {
	Value float64 `json:"value"`
	Trend float64 `json:"trend"`
}

type ContentCreateForm struct {
	Title    string   `json:"title"`
	Genre    string   `json:"genre"`
	Key      string   `json:"key"`
	Price    float64  `json:"price"`
	CoverIDs []string `json:"cover_ids"`
	MediaIDs []string `json:"media_ids"`
}

type ContentUpdateForm struct {
	Title    string   `json:"title"`
	Genre    string   `json:"genre"`
	Key      string   `json:"key"`
	Price    float64  `json:"price"`
	CoverIDs []string `json:"cover_ids"`
	MediaIDs []string `json:"media_ids"`
}

type ContentEditDTO struct {
	ID             string     `json:"id"`
	Title          string     `json:"title"`
	Genre          string     `json:"genre"`
	Key            string     `json:"key"`
	Description    string     `json:"description"`
	Status         string     `json:"status"`
	Price          float64    `json:"price"`
	EnableTrial    bool       `json:"enable_trial"`
	PreviewSeconds int        `json:"preview_seconds"`
	Assets         []AssetDTO `json:"assets"`
}

type CreatorContentItem struct {
	ID          string  `json:"id"`
	Title       string  `json:"title"`
	Genre       string  `json:"genre"`
	Key         string  `json:"key"`
	Price       float64 `json:"price"`
	Views       int     `json:"views"`
	Likes       int     `json:"likes"`
	IsPurchased bool    `json:"is_purchased"`
}

type AssetDTO struct {
	ID   string `json:"id"`
	Role string `json:"role"`
	Type string `json:"type"`
	URL  string `json:"url"`
	Name string `json:"name"`
	Size string `json:"size"`
	Sort int    `json:"sort"`
}

type CreatorContentListFilter struct {
	requests.Pagination
	Status  *string `query:"status"`
	Genre   *string `query:"genre"`
	Keyword *string `query:"keyword"`
}

type CreatorOrderListFilter struct {
	requests.Pagination
	Status  *string `query:"status"`
	Keyword *string `query:"keyword"`
}

type RefundForm struct {
	Action string `json:"action"` // accept, reject
	Reason string `json:"reason"`
}

type Settings struct {
	Name        string `json:"name"`
	Bio         string `json:"bio"`
	Avatar      string `json:"avatar"`
	Cover       string `json:"cover"`
	Description string `json:"description"`
}

type PayoutAccount struct {
	ID       string `json:"id"`
	Type     string `json:"type"` // bank, alipay
	Name     string `json:"name"`
	Account  string `json:"account"`
	Realname string `json:"realname"`
}

type WithdrawForm struct {
	Amount    float64 `json:"amount"`
	Method    string  `json:"method"` // wallet, external
	AccountID string  `json:"account_id"`
}
