package com.gameplatform.server.model.dto.link;

import io.swagger.v3.oas.annotations.media.Schema;

import java.util.List;

/**
 * 批量删除链接响应DTO
 * 
 * @author GamePlatform
 */
@Schema(description = "批量删除链接响应")
public class BatchDeleteResponse {
    
    @Schema(description = "成功删除的数量", example = "3")
    private int successCount;
    
    @Schema(description = "删除失败的数量", example = "1")
    private int failedCount;
    
    @Schema(description = "总数量", example = "4")
    private int totalCount;
    
    @Schema(description = "成功删除的链接编号列表", example = "[\"EPRGF7ZJ\", \"XKLD9F2M\"]")
    private List<String> successCodeNos;
    
    @Schema(description = "删除失败的链接编号列表", example = "[\"QWER5TYU\"]")
    private List<String> failedCodeNos;
    
    @Schema(description = "删除失败的原因列表", example = "[\"链接不存在或无权删除\"]")
    private List<String> failedReasons;
    
    @Schema(description = "是否全部成功", example = "false")
    private boolean allSuccess;
    
    public BatchDeleteResponse() {}
    
    public BatchDeleteResponse(int successCount, int failedCount, int totalCount, 
                              List<String> successCodeNos, List<String> failedCodeNos, 
                              List<String> failedReasons) {
        this.successCount = successCount;
        this.failedCount = failedCount;
        this.totalCount = totalCount;
        this.successCodeNos = successCodeNos;
        this.failedCodeNos = failedCodeNos;
        this.failedReasons = failedReasons;
        this.allSuccess = failedCount == 0;
    }
    
    // Getters and Setters
    public int getSuccessCount() {
        return successCount;
    }
    
    public void setSuccessCount(int successCount) {
        this.successCount = successCount;
    }
    
    public int getFailedCount() {
        return failedCount;
    }
    
    public void setFailedCount(int failedCount) {
        this.failedCount = failedCount;
    }
    
    public int getTotalCount() {
        return totalCount;
    }
    
    public void setTotalCount(int totalCount) {
        this.totalCount = totalCount;
    }
    
    public List<String> getSuccessCodeNos() {
        return successCodeNos;
    }
    
    public void setSuccessCodeNos(List<String> successCodeNos) {
        this.successCodeNos = successCodeNos;
    }
    
    public List<String> getFailedCodeNos() {
        return failedCodeNos;
    }
    
    public void setFailedCodeNos(List<String> failedCodeNos) {
        this.failedCodeNos = failedCodeNos;
    }
    
    public List<String> getFailedReasons() {
        return failedReasons;
    }
    
    public void setFailedReasons(List<String> failedReasons) {
        this.failedReasons = failedReasons;
    }
    
    public boolean isAllSuccess() {
        return allSuccess;
    }
    
    public void setAllSuccess(boolean allSuccess) {
        this.allSuccess = allSuccess;
    }
}
