package dto

import (
	"strings"

	"quyun/v2/app/requests"
	"quyun/v2/database/models"
	"quyun/v2/pkg/consts"
)

// AdminTenantUserJoinResponse 返回租户管理员添加成员后的结果。
type AdminTenantUserJoinResponse struct {
	// TenantUser 租户成员关系记录。
	TenantUser *models.TenantUser `json:"tenant_user,omitempty"`
}

// AdminTenantUserRoleUpdateForm 租户成员角色更新表单。
type AdminTenantUserRoleUpdateForm struct {
	// Role 角色：member/tenant_admin。
	Role string `json:"role,omitempty"`
}

// AdminTenantUserListFilter 租户管理员查询成员列表的过滤条件。
type AdminTenantUserListFilter struct {
	// Pagination 分页参数（page/limit）。
	requests.Pagination `json:",inline" query:",inline"`
	// UserID 按用户ID过滤（可选）。
	UserID *int64 `json:"user_id,omitempty" query:"user_id"`
	// Role 按角色过滤（可选）：member/tenant_admin。
	Role *consts.TenantUserRole `json:"role,omitempty" query:"role"`
	// Status 按成员状态过滤（可选）：pending_verify/verified/banned。
	Status *consts.UserStatus `json:"status,omitempty" query:"status"`
	// Username 按用户名模糊查询（可选，支持包含匹配）。
	Username *string `json:"username,omitempty" query:"username"`
}

// AdminTenantUserItem 为租户成员列表项（包含成员关系与用户基础信息）。
type AdminTenantUserItem struct {
	// TenantUser 租户成员关系记录。
	TenantUser *models.TenantUser `json:"tenant_user,omitempty"`
	// User 用户基础信息（用于展示 username 等）。
	User *models.User `json:"user,omitempty"`
}

func (f *AdminTenantUserListFilter) UsernameTrimmed() string {
	if f == nil || f.Username == nil {
		return ""
	}
	return strings.TrimSpace(*f.Username)
}
