package response

import (
	"time"
)

type EbooksResponse struct {
	ID            uint       `json:"id"`
	Title         string     `json:"title"`
	Slug          string     `json:"slug"`
	Description   string     `json:"description"`
	Price         float64    `json:"price"`
	PdfFilePath   *string    `json:"pdfFilePath"`
	PdfFileName   *string    `json:"pdfFileName"`
	PdfFileSize   *int64     `json:"pdfFileSize"`
	ThumbnailPath *string    `json:"thumbnailPath"`
	ThumbnailName *string    `json:"thumbnailName"`
	AuthorId      uint       `json:"authorId"`
	AuthorName    *string    `json:"authorName"`
	AuthorEmail   *string    `json:"authorEmail"`
	Category      *string    `json:"category"`
	Tags          *string    `json:"tags"`
	PageCount     *int       `json:"pageCount"`
	Language      *string    `json:"language"`
	Isbn          *string    `json:"isbn"`
	Publisher     *string    `json:"publisher"`
	PublishedYear *int       `json:"publishedYear"`
	DownloadCount *int       `json:"downloadCount"`
	PurchaseCount *int       `json:"purchaseCount"`
	WishlistCount *int       `json:"wishlistCount"`
	Rating        *float64   `json:"rating"`
	ReviewCount   *int       `json:"reviewCount"`
	StatusId      *int       `json:"statusId"`
	IsActive      *bool      `json:"isActive"`
	IsPublished   *bool      `json:"isPublished"`
	PublishedAt   *time.Time `json:"publishedAt"`
	CreatedById   *uint      `json:"createdById"`
	CreatedAt     time.Time  `json:"createdAt"`
	UpdatedAt     time.Time  `json:"updatedAt"`
}

type EbookWishlistResponse struct {
	ID        uint            `json:"id"`
	UserId    uint            `json:"userId"`
	EbookId   uint            `json:"ebookId"`
	Ebook     *EbooksResponse `json:"ebook"`
	CreatedAt time.Time       `json:"createdAt"`
	UpdatedAt time.Time       `json:"updatedAt"`
}

type EbookPurchaseResponse struct {
	ID             uint            `json:"id"`
	BuyerId        uint            `json:"buyerId"`
	BuyerName      *string         `json:"buyerName"`
	BuyerEmail     *string         `json:"buyerEmail"`
	EbookId        uint            `json:"ebookId"`
	Ebook          *EbooksResponse `json:"ebook"`
	PurchasePrice  float64         `json:"purchasePrice"`
	PaymentMethod  *string         `json:"paymentMethod"`
	PaymentStatus  *string         `json:"paymentStatus"`
	TransactionId  *string         `json:"transactionId"`
	PaymentProof   *string         `json:"paymentProof"`
	PaymentDate    *time.Time      `json:"paymentDate"`
	DownloadCount  *int            `json:"downloadCount"`
	LastDownloadAt *time.Time      `json:"lastDownloadAt"`
	StatusId       *int            `json:"statusId"`
	IsActive       *bool           `json:"isActive"`
	CreatedAt      time.Time       `json:"createdAt"`
	UpdatedAt      time.Time       `json:"updatedAt"`
}

type EbookSummaryStats struct {
	TotalEbooks    int     `json:"totalEbooks"`
	TotalSales     int     `json:"totalSales"`
	TotalRevenue   float64 `json:"totalRevenue"`
	TotalDownloads int     `json:"totalDownloads"`
	TotalWishlists int     `json:"totalWishlists"`
	AverageRating  float64 `json:"averageRating"`
}
