package controller

import (
    "strconv"

    "one-api/common"
    "one-api/model"

    "github.com/gin-gonic/gin"
)

// GetPrefillGroups 获取预填组列表，可通过 ?type=xxx 过滤
func GetPrefillGroups(c *gin.Context) {
    groupType := c.Query("type")
    groups, err := model.GetAllPrefillGroups(groupType)
    if err != nil {
        common.ApiError(c, err)
        return
    }
    common.ApiSuccess(c, groups)
}

// CreatePrefillGroup 创建新的预填组
func CreatePrefillGroup(c *gin.Context) {
    var g model.PrefillGroup
    if err := c.ShouldBindJSON(&g); err != nil {
        common.ApiError(c, err)
        return
    }
    if g.Name == "" || g.Type == "" {
        common.ApiErrorMsg(c, "组名称和类型不能为空")
        return
    }
    // 创建前检查名称
    if dup, err := model.IsPrefillGroupNameDuplicated(0, g.Name); err != nil {
        common.ApiError(c, err)
        return
    } else if dup {
        common.ApiErrorMsg(c, "组名称已存在")
        return
    }

    if err := g.Insert(); err != nil {
        common.ApiError(c, err)
        return
    }
    common.ApiSuccess(c, &g)
}

// UpdatePrefillGroup 更新预填组
func UpdatePrefillGroup(c *gin.Context) {
    var g model.PrefillGroup
    if err := c.ShouldBindJSON(&g); err != nil {
        common.ApiError(c, err)
        return
    }
    if g.Id == 0 {
        common.ApiErrorMsg(c, "缺少组 ID")
        return
    }
    // 名称冲突检查
    if dup, err := model.IsPrefillGroupNameDuplicated(g.Id, g.Name); err != nil {
        common.ApiError(c, err)
        return
    } else if dup {
        common.ApiErrorMsg(c, "组名称已存在")
        return
    }

    if err := g.Update(); err != nil {
        common.ApiError(c, err)
        return
    }
    common.ApiSuccess(c, &g)
}

// DeletePrefillGroup 删除预填组
func DeletePrefillGroup(c *gin.Context) {
    idStr := c.Param("id")
    id, err := strconv.Atoi(idStr)
    if err != nil {
        common.ApiError(c, err)
        return
    }
    if err := model.DeletePrefillGroupByID(id); err != nil {
        common.ApiError(c, err)
        return
    }
    common.ApiSuccess(c, nil)
}
