package adminauth

import (
	"time"

	"hfb_sys/backend/internal/modules/auth"
)

type AdminDTO struct {
	ID            uint64     `json:"id"`
	Username      string     `json:"username"`
	Nickname      string     `json:"nickname"`
	Status        string     `json:"status"`
	SupportStatus string     `json:"support_status"`
	Roles         []RoleDTO  `json:"roles"`
	Permissions   []string   `json:"permissions"`
	LastLoginAt   *time.Time `json:"last_login_at"`
}

type RoleDTO struct {
	ID   uint64 `json:"id"`
	Code string `json:"code"`
	Name string `json:"name"`
}

type LoginRequest struct {
	Username    string `json:"username" binding:"required"`
	Password    string `json:"password" binding:"required"`
	CaptchaID   string `json:"captcha_id" binding:"required"`
	CaptchaCode string `json:"captcha_code" binding:"required"`
}

type LoginResult struct {
	Admin  AdminDTO       `json:"admin"`
	Tokens auth.TokenPair `json:"tokens"`
}

type CaptchaDTO struct {
	CaptchaID string `json:"captcha_id"`
	Image     string `json:"image"`
	ExpiresIn int64  `json:"expires_in"`
}

type UpdateSupportStatusRequest struct {
	Status string `json:"status" binding:"required,oneof=online offline busy"`
}
