package com.lesingle.edu.dto.response;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Builder;
import lombok.Data;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;

/**
 * 租户响应
 * 用于返回租户信息给前端
 */
@Data
@Builder
@Schema(description = "租户响应")
public class TenantResponse {

    @Schema(description = "ID")
    private Long id;

    @Schema(description = "租户名称")
    private String name;

    @Schema(description = "租户编码/登录账号")
    private String code;

    @Schema(description = "用户名")
    private String username;

    @Schema(description = "联系人姓名")
    private String contactName;

    @Schema(description = "联系人电话")
    private String contactPhone;

    @Schema(description = "联系人邮箱")
    private String contactEmail;

    @Schema(description = "地址")
    private String address;

    @Schema(description = "Logo URL")
    private String logoUrl;

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

    @Schema(description = "过期时间")
    private LocalDateTime expireAt;

    @Schema(description = "最大学生数")
    private Integer maxStudents;

    @Schema(description = "最大教师数")
    private Integer maxTeachers;

    @Schema(description = "套餐名称列表")
    private List<String> packageNames;

    @Schema(description = "教师配额")
    private Integer teacherQuota;

    @Schema(description = "学生配额")
    private Integer studentQuota;

    @Schema(description = "存储配额")
    private Long storageQuota;

    @Schema(description = "已用存储")
    private Long storageUsed;

    @Schema(description = "教师数量（已使用）")
    private Integer teacherCount;

    @Schema(description = "学生数量（已使用）")
    private Integer studentCount;

    @Schema(description = "班级数量")
    private Integer classCount;

    @Schema(description = "授课数量")
    private Integer lessonCount;

    @Schema(description = "开始日期")
    private LocalDate startDate;

    @Schema(description = "结束日期")
    private LocalDate expireDate;

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

    @Schema(description = "更新时间")
    private LocalDateTime updatedAt;
}
