package com.example.demo.model.dto;

import com.example.demo.model.enums.EventSourceType;
import com.example.demo.model.enums.ThreatLevel;
import io.swagger.v3.oas.annotations.media.Schema;

import java.time.LocalDateTime;

/**
 * 事件数据传输对象。
 * <p>
 * 用于API请求和响应中传输事件数据。
 * </p>
 */
@Schema(description = "事件数据传输对象")
public class EventDTO {

    @Schema(description = "事件唯一标识")
    private String eventId;

    @Schema(description = "事件来源类型：RADAR / OPTOELECTRONIC / ELECTRONIC_RECON / COMMUNICATION_INTEL")
    private EventSourceType sourceType;

    @Schema(description = "事件发生时间（格式：yyyy-MM-dd'T'HH:mm:ss）")
    private LocalDateTime occurTime;

    @Schema(description = "目标经纬度，JSON格式")
    private String location;

    @Schema(description = "事件置信度（0.0~1.0）")
    private double confidence;

    @Schema(description = "威胁等级：LOW / MEDIUM / HIGH / CRITICAL")
    private ThreatLevel threatLevel;

    @Schema(description = "事件类型：临机/规划")
    private String eventType;

    @Schema(description = "处理状态")
    private String status;

    @Schema(description = "创建时间")
    private LocalDateTime createTime;

    public EventDTO() {
    }

    public String getEventId() {
        return eventId;
    }

    public void setEventId(String eventId) {
        this.eventId = eventId;
    }

    public EventSourceType getSourceType() {
        return sourceType;
    }

    public void setSourceType(EventSourceType sourceType) {
        this.sourceType = sourceType;
    }

    public LocalDateTime getOccurTime() {
        return occurTime;
    }

    public void setOccurTime(LocalDateTime occurTime) {
        this.occurTime = occurTime;
    }

    public String getLocation() {
        return location;
    }

    public void setLocation(String location) {
        this.location = location;
    }

    public double getConfidence() {
        return confidence;
    }

    public void setConfidence(double confidence) {
        this.confidence = confidence;
    }

    public ThreatLevel getThreatLevel() {
        return threatLevel;
    }

    public void setThreatLevel(ThreatLevel threatLevel) {
        this.threatLevel = threatLevel;
    }

    public String getEventType() {
        return eventType;
    }

    public void setEventType(String eventType) {
        this.eventType = eventType;
    }

    public String getStatus() {
        return status;
    }

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

    public LocalDateTime getCreateTime() {
        return createTime;
    }

    public void setCreateTime(LocalDateTime createTime) {
        this.createTime = createTime;
    }
}
