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

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

import java.time.LocalDateTime;

@Schema(description = "链接状态响应")
public class LinkStatusResponse {
    
    @Schema(description = "链接编号", example = "ABC12345")
    private String codeNo;
    
    @Schema(description = "批次ID", example = "123")
    private Long batchId;
    
    @Schema(description = "链接状态", example = "NEW", allowableValues = {"NEW", "USING", "LOGGED_IN", "COMPLETED", "REFUNDED", "EXPIRED"})
    private String status;
    
    @Schema(description = "链接状态描述", example = "新建")
    private String statusDesc;
    
    @Schema(description = "过期时间", example = "2024-01-15T16:30:00")
    private LocalDateTime expireAt;
    
    @Schema(description = "是否已过期", example = "false")
    private Boolean isExpired;
    
    @Schema(description = "剩余有效时间（秒）", example = "3600")
    private Long remainingSeconds;
    
    @Schema(description = "每次副本奖励点数", example = "50")
    private Integer quantity;
    
    @Schema(description = "打副本次数", example = "10")
    private Integer times;
    
    @Schema(description = "总奖励点数", example = "500")
    private Integer totalPoints;
    
    @Schema(description = "区域", example = "Q", allowableValues = {"Q", "V"})
    private String region;
    
    @Schema(description = "机器ID", example = "MACHINE001")
    private String machineId;
    
    @Schema(description = "登录时间", example = "2024-01-15T14:30:00")
    private LocalDateTime loginAt;
    
    @Schema(description = "创建时间", example = "2024-01-15T12:00:00")
    private LocalDateTime createdAt;
    
    @Schema(description = "更新时间", example = "2024-01-15T14:30:00")
    private LocalDateTime updatedAt;

    // Getters and Setters
    public String getCodeNo() { return codeNo; }
    public void setCodeNo(String codeNo) { this.codeNo = codeNo; }

    public Long getBatchId() { return batchId; }
    public void setBatchId(Long batchId) { this.batchId = batchId; }

    public String getStatus() { return status; }
    public void setStatus(String status) { this.status = status; }

    public String getStatusDesc() { return statusDesc; }
    public void setStatusDesc(String statusDesc) { this.statusDesc = statusDesc; }

    public LocalDateTime getExpireAt() { return expireAt; }
    public void setExpireAt(LocalDateTime expireAt) { this.expireAt = expireAt; }

    public Boolean getIsExpired() { return isExpired; }
    public void setIsExpired(Boolean isExpired) { this.isExpired = isExpired; }

    public Long getRemainingSeconds() { return remainingSeconds; }
    public void setRemainingSeconds(Long remainingSeconds) { this.remainingSeconds = remainingSeconds; }

    public Integer getQuantity() { return quantity; }
    public void setQuantity(Integer quantity) { this.quantity = quantity; }

    public Integer getTimes() { return times; }
    public void setTimes(Integer times) { this.times = times; }

    public Integer getTotalPoints() { return totalPoints; }
    public void setTotalPoints(Integer totalPoints) { this.totalPoints = totalPoints; }

    public String getRegion() { return region; }
    public void setRegion(String region) { this.region = region; }

    public String getMachineId() { return machineId; }
    public void setMachineId(String machineId) { this.machineId = machineId; }

    public LocalDateTime getLoginAt() { return loginAt; }
    public void setLoginAt(LocalDateTime loginAt) { this.loginAt = loginAt; }

    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; }
}
