package com.storycove.dto;

import jakarta.validation.constraints.NotNull;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;
import java.util.UUID;

public class EPUBImportRequest {
    
    @NotNull(message = "EPUB file is required")
    private MultipartFile epubFile;
    
    private UUID authorId;
    
    private String authorName;
    
    private UUID seriesId;
    
    private String seriesName;
    
    private Integer seriesVolume;
    
    private List<String> tags;
    
    private Boolean preserveReadingPosition = true;
    
    private Boolean overwriteExisting = false;
    
    private Boolean createMissingAuthor = true;
    
    private Boolean createMissingSeries = true;
    
    private Boolean extractCover = true;
    
    public EPUBImportRequest() {}
    
    public MultipartFile getEpubFile() {
        return epubFile;
    }
    
    public void setEpubFile(MultipartFile epubFile) {
        this.epubFile = epubFile;
    }
    
    public UUID getAuthorId() {
        return authorId;
    }
    
    public void setAuthorId(UUID authorId) {
        this.authorId = authorId;
    }
    
    public String getAuthorName() {
        return authorName;
    }
    
    public void setAuthorName(String authorName) {
        this.authorName = authorName;
    }
    
    public UUID getSeriesId() {
        return seriesId;
    }
    
    public void setSeriesId(UUID seriesId) {
        this.seriesId = seriesId;
    }
    
    public String getSeriesName() {
        return seriesName;
    }
    
    public void setSeriesName(String seriesName) {
        this.seriesName = seriesName;
    }
    
    public Integer getSeriesVolume() {
        return seriesVolume;
    }
    
    public void setSeriesVolume(Integer seriesVolume) {
        this.seriesVolume = seriesVolume;
    }
    
    public List<String> getTags() {
        return tags;
    }
    
    public void setTags(List<String> tags) {
        this.tags = tags;
    }
    
    public Boolean getPreserveReadingPosition() {
        return preserveReadingPosition;
    }
    
    public void setPreserveReadingPosition(Boolean preserveReadingPosition) {
        this.preserveReadingPosition = preserveReadingPosition;
    }
    
    public Boolean getOverwriteExisting() {
        return overwriteExisting;
    }
    
    public void setOverwriteExisting(Boolean overwriteExisting) {
        this.overwriteExisting = overwriteExisting;
    }
    
    public Boolean getCreateMissingAuthor() {
        return createMissingAuthor;
    }
    
    public void setCreateMissingAuthor(Boolean createMissingAuthor) {
        this.createMissingAuthor = createMissingAuthor;
    }
    
    public Boolean getCreateMissingSeries() {
        return createMissingSeries;
    }
    
    public void setCreateMissingSeries(Boolean createMissingSeries) {
        this.createMissingSeries = createMissingSeries;
    }
    
    public Boolean getExtractCover() {
        return extractCover;
    }
    
    public void setExtractCover(Boolean extractCover) {
        this.extractCover = extractCover;
    }
}