package com.storycove.dto;

import jakarta.validation.constraints.NotNull;
import java.util.List;
import java.util.UUID;

public class EPUBExportRequest {
    
    @NotNull(message = "Story ID is required")
    private UUID storyId;
    
    private String customTitle;
    
    private String customAuthor;
    
    private Boolean includeReadingPosition = true;
    
    private Boolean includeCoverImage = true;
    
    private Boolean includeMetadata = true;
    
    private List<String> customMetadata;
    
    private String language = "en";
    
    private Boolean splitByChapters = false;
    
    private Integer maxWordsPerChapter;
    
    public EPUBExportRequest() {}
    
    public EPUBExportRequest(UUID storyId) {
        this.storyId = storyId;
    }
    
    public UUID getStoryId() {
        return storyId;
    }
    
    public void setStoryId(UUID storyId) {
        this.storyId = storyId;
    }
    
    public String getCustomTitle() {
        return customTitle;
    }
    
    public void setCustomTitle(String customTitle) {
        this.customTitle = customTitle;
    }
    
    public String getCustomAuthor() {
        return customAuthor;
    }
    
    public void setCustomAuthor(String customAuthor) {
        this.customAuthor = customAuthor;
    }
    
    public Boolean getIncludeReadingPosition() {
        return includeReadingPosition;
    }
    
    public void setIncludeReadingPosition(Boolean includeReadingPosition) {
        this.includeReadingPosition = includeReadingPosition;
    }
    
    public Boolean getIncludeCoverImage() {
        return includeCoverImage;
    }
    
    public void setIncludeCoverImage(Boolean includeCoverImage) {
        this.includeCoverImage = includeCoverImage;
    }
    
    public Boolean getIncludeMetadata() {
        return includeMetadata;
    }
    
    public void setIncludeMetadata(Boolean includeMetadata) {
        this.includeMetadata = includeMetadata;
    }
    
    public List<String> getCustomMetadata() {
        return customMetadata;
    }
    
    public void setCustomMetadata(List<String> customMetadata) {
        this.customMetadata = customMetadata;
    }
    
    public String getLanguage() {
        return language;
    }
    
    public void setLanguage(String language) {
        this.language = language;
    }
    
    public Boolean getSplitByChapters() {
        return splitByChapters;
    }
    
    public void setSplitByChapters(Boolean splitByChapters) {
        this.splitByChapters = splitByChapters;
    }
    
    public Integer getMaxWordsPerChapter() {
        return maxWordsPerChapter;
    }
    
    public void setMaxWordsPerChapter(Integer maxWordsPerChapter) {
        this.maxWordsPerChapter = maxWordsPerChapter;
    }
}