/**
 * 工具函数
 */

/**
 * 格式化日期时间
 */
export function formatDateTime(dateStr, showTime = true) {
	if (!dateStr) return '--'
	const d = new Date(dateStr)
	const pad = (n) => String(n).padStart(2, '0')
	const date = `${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())}`
	if (!showTime) return date
	return `${date} ${pad(d.getHours())}:${pad(d.getMinutes())}`
}

/**
 * 格式化日期
 */
export function formatDate(dateStr) {
	return formatDateTime(dateStr, false)
}

/**
 * 格式化时间
 */
export function formatTime(dateStr) {
	if (!dateStr) return '--'
	const d = new Date(dateStr)
	const pad = (n) => String(n).padStart(2, '0')
	return `${pad(d.getHours())}:${pad(d.getMinutes())}`
}

/**
 * 格式化时间（短格式：MM/DD HH:mm）
 */
export function formatTimeShort(dateStr) {
  if (!dateStr) return '--'
  const d = new Date(dateStr)
  const pad = (n) => String(n).padStart(2, '0')
  return `${d.getMonth() + 1}/${d.getDate()} ${pad(d.getHours())}:${pad(d.getMinutes())}`
}

/**
 * 课程状态（由后端 GET /api/groupCourse/statuses 统一提供，避免前后端各自硬编码）
 */
let _statusMap = null
let _statusClassMap = null

const DEFAULT_STATUS_MAP = { '0': '正常', '1': '已取消', '2': '已结束', '3': '进行中', '4': '超时' }
const DEFAULT_STATUS_CLASS = { '0': 'green', '1': 'orange', '2': 'gray', '3': 'blue', '4': 'red' }

/**
 * 从后端加载课程状态映射，返回 Promise<boolean>
 */
export async function loadCourseStatuses() {
	try {
		const res = await uni.request({
			url: `${getBaseUrl()}/api/groupCourse/statuses`,
			method: 'GET'
		})
		if (res.statusCode === 200 && res.data?.success && Array.isArray(res.data.data)) {
			const map = {}
			const cls = {}
			res.data.data.forEach(item => {
				map[String(item.dbValue)] = item.label
				cls[String(item.dbValue)] = item.cssClass
			})
			_statusMap = map
			_statusClassMap = cls
			return true
		}
	} catch (e) {
		console.warn('加载课程状态映射失败，使用默认映射:', e)
	}
	return false
}

function getBaseUrl() {
	// #ifdef H5
	return '/gym-api'
	// #endif
	// #ifndef H5
	return 'http://localhost:8084'
	// #endif
}

function getStatusMap() {
	return _statusMap || DEFAULT_STATUS_MAP
}

function getStatusClassMap() {
	return _statusClassMap || DEFAULT_STATUS_CLASS
}

export function getCourseStatusLabel(status, deletedAt) {
	if (deletedAt) return '已删除'
	return getStatusMap()[String(status)] || '未知'
}

export function getCourseStatusClass(status, deletedAt) {
	if (deletedAt) return 'tag-gray'
	return 'tag-' + (getStatusClassMap()[String(status)] || 'gray')
}

/**
 * 判断课程是否有实际时间记录
 */
export function hasActualTime(course) {
	return !!(course && (course.actualStartTime || course.actualEndTime))
}

/**
 * Toast 提示
 */
export function showToast(title, icon = 'none') {
	uni.showToast({ title, icon, duration: 2000 })
}

/**
 * 确认弹窗
 */
export function showConfirm(content, title = '提示') {
	return new Promise((resolve) => {
		uni.showModal({
			title,
			content,
			success: (res) => {
				resolve(res.confirm)
			}
		})
	})
}
