package com.storycove.dto;

import java.time.LocalDateTime;
import java.util.List;
import java.util.UUID;

/**
 * DTO for Collection with lightweight story references
 */
public class CollectionDto {
    
    private UUID id;
    private String name;
    private String description;
    private Integer rating;
    private String coverImagePath;
    private Boolean isArchived;
    private List<TagDto> tags;
    private List<String> tagNames; // For search results
    private List<CollectionStoryDto> collectionStories;
    private Integer storyCount;
    private Integer totalWordCount;
    private Integer estimatedReadingTime;
    private Double averageStoryRating;
    private LocalDateTime createdAt;
    private LocalDateTime updatedAt;
    
    public CollectionDto() {}
    
    // Getters and Setters
    public UUID getId() {
        return id;
    }
    
    public void setId(UUID id) {
        this.id = id;
    }
    
    public String getName() {
        return name;
    }
    
    public void setName(String name) {
        this.name = name;
    }
    
    public String getDescription() {
        return description;
    }
    
    public void setDescription(String description) {
        this.description = description;
    }
    
    public Integer getRating() {
        return rating;
    }
    
    public void setRating(Integer rating) {
        this.rating = rating;
    }
    
    public String getCoverImagePath() {
        return coverImagePath;
    }
    
    public void setCoverImagePath(String coverImagePath) {
        this.coverImagePath = coverImagePath;
    }
    
    public Boolean getIsArchived() {
        return isArchived;
    }
    
    public void setIsArchived(Boolean isArchived) {
        this.isArchived = isArchived;
    }
    
    public List<TagDto> getTags() {
        return tags;
    }
    
    public void setTags(List<TagDto> tags) {
        this.tags = tags;
    }
    
    public List<String> getTagNames() {
        return tagNames;
    }
    
    public void setTagNames(List<String> tagNames) {
        this.tagNames = tagNames;
    }
    
    public List<CollectionStoryDto> getCollectionStories() {
        return collectionStories;
    }
    
    public void setCollectionStories(List<CollectionStoryDto> collectionStories) {
        this.collectionStories = collectionStories;
    }
    
    public Integer getStoryCount() {
        return storyCount;
    }
    
    public void setStoryCount(Integer storyCount) {
        this.storyCount = storyCount;
    }
    
    public Integer getTotalWordCount() {
        return totalWordCount;
    }
    
    public void setTotalWordCount(Integer totalWordCount) {
        this.totalWordCount = totalWordCount;
    }
    
    public Integer getEstimatedReadingTime() {
        return estimatedReadingTime;
    }
    
    public void setEstimatedReadingTime(Integer estimatedReadingTime) {
        this.estimatedReadingTime = estimatedReadingTime;
    }
    
    public Double getAverageStoryRating() {
        return averageStoryRating;
    }
    
    public void setAverageStoryRating(Double averageStoryRating) {
        this.averageStoryRating = averageStoryRating;
    }
    
    public LocalDateTime getCreatedAt() {
        return createdAt;
    }
    
    public void setCreatedAt(LocalDateTime createdAt) {
        this.createdAt = createdAt;
    }
    
    public LocalDateTime getUpdatedAt() {
        return updatedAt;
    }
    
    public void setUpdatedAt(LocalDateTime updatedAt) {
        this.updatedAt = updatedAt;
    }
}