package com.writeoff.module.meeting.dto;

import io.swagger.v3.oas.annotations.media.Schema;
import javax.validation.constraints.DecimalMax;
import javax.validation.constraints.DecimalMin;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;

@Schema(description = "创建会议请求")
public class CreateMeetingRequest {
    @Schema(description = "项目ID", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "项目ID不能为空")
    private Long projectId;
    @Schema(description = "会议主题", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotBlank(message = "会议主题不能为空")
    private String topic;
    @Schema(description = "会议预算，单位：分", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "会议预算不能为空")
    @Min(value = 1, message = "会议预算必须大于0")
    private Long budgetCent;
    @Schema(description = "会议类别", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotBlank(message = "会议类别不能为空")
    private String meetingCategory;
    @Schema(description = "会议形式", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotBlank(message = "会议形式不能为空")
    private String meetingForm;
    @Schema(description = "会议地点", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotBlank(message = "会议地点不能为空")
    private String location;
    @Schema(description = "会议开始时间，格式：yyyy-MM-dd HH:mm:ss", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotBlank(message = "会议开始时间不能为空")
    private String startTime;
    @Schema(description = "会议结束时间，格式：yyyy-MM-dd HH:mm:ss", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotBlank(message = "会议结束时间不能为空")
    private String endTime;
    @Schema(description = "劳务费用占比，范围：[0,1]")
    @DecimalMin(value = "0.0", inclusive = true, message = "劳务费用占比不能小于0")
    @DecimalMax(value = "1.0", inclusive = true, message = "劳务费用占比不能大于1")
    private Double laborRatio;
    @Schema(description = "餐费占比，范围：[0,1]")
    @DecimalMin(value = "0.0", inclusive = true, message = "餐费占比不能小于0")
    @DecimalMax(value = "1.0", inclusive = true, message = "餐费占比不能大于1")
    private Double cateringRatio;

    public Long getProjectId() {
        return projectId;
    }

    public void setProjectId(Long projectId) {
        this.projectId = projectId;
    }

    public String getTopic() {
        return topic;
    }

    public void setTopic(String topic) {
        this.topic = topic;
    }

    public Long getBudgetCent() {
        return budgetCent;
    }

    public void setBudgetCent(Long budgetCent) {
        this.budgetCent = budgetCent;
    }

    public String getMeetingCategory() {
        return meetingCategory;
    }

    public void setMeetingCategory(String meetingCategory) {
        this.meetingCategory = meetingCategory;
    }

    public String getMeetingForm() {
        return meetingForm;
    }

    public void setMeetingForm(String meetingForm) {
        this.meetingForm = meetingForm;
    }

    public String getLocation() {
        return location;
    }

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

    public String getStartTime() {
        return startTime;
    }

    public void setStartTime(String startTime) {
        this.startTime = startTime;
    }

    public String getEndTime() {
        return endTime;
    }

    public void setEndTime(String endTime) {
        this.endTime = endTime;
    }

    public Double getLaborRatio() {
        return laborRatio;
    }

    public void setLaborRatio(Double laborRatio) {
        this.laborRatio = laborRatio;
    }

    public Double getCateringRatio() {
        return cateringRatio;
    }

    public void setCateringRatio(Double cateringRatio) {
        this.cateringRatio = cateringRatio;
    }
}
