package controller

import (
	"fmt"
	"github.com/gin-gonic/gin"
	"strconv"
	"trading-go/model"
	"trading-go/response"
)

// RCreat
// @Tags 用户关系模块
// @Summary 添加用户间的关系,关系类型有1:好友关系,2:黑名单关系
// @Accept application/json
// @Produce application/json
// @Param json body model.RelationJson true "关系数据"
// @Success 200 {object} response.Response
// @Router /relation/create [post]
func RCreat(c *gin.Context) {
	var relationJson model.RelationJson
	err := c.ShouldBindJSON(&relationJson)
	if err != nil {
		response.Fail(c.Writer, err.Error(), 500)
		return
	}
	relation := relationJson.Change()
	fmt.Println(relation)
	err = relation.Creat()
	if err != nil {
		response.Fail(c.Writer, err.Error(), 500)
		return
	}
	response.Success(c.Writer, "success", nil)
}

// GetFriend
// @Tags 用户关系模块
// @Summary 传入用户id获取用户好友列表
// @Produce application/json
// @Param uid query uint true "用户id"
// @Success 200 {object} response.Response
// @Router /relation/friend [get]
func GetFriend(c *gin.Context) {
	var relation model.Relation
	ids := c.Query("uid")
	id, err := strconv.Atoi(ids)
	if err != nil {
		response.Fail(c.Writer, err.Error(), 500)
		return
	}
	friends, err := relation.Friend(id)
	if err != nil {
		response.Fail(c.Writer, err.Error(), 500)
		return
	}
	response.Success(c.Writer, "success", friends)
}

// GetBadRelation
// @Tags 用户关系模块
// @Summary 传入用户id获取用户黑名单列表
// @Produce application/json
// @Param uid query uint true "用户id"
// @Success 200 {object} response.Response
// @Router /relation/bad [get]
func GetBadRelation(c *gin.Context) {
	var relation model.Relation
	ids := c.Query("uid")
	id, err := strconv.Atoi(ids)
	if err != nil {
		response.Fail(c.Writer, err.Error(), 500)
		return
	}
	relations, err := relation.BadRelation(id)
	if err != nil {
		response.Fail(c.Writer, err.Error(), 500)
		return
	}
	response.Success(c.Writer, "success", relations)
}

// DRelation
// @Tags 用户关系模块
// @Summary 根据关系id删除关系
// @Produce application/json
// @Param id path uint true "关系id"
// @Success 200 {object} response.Response
// @Router /relation/delete/{id} [delete]
func DRelation(c *gin.Context) {
	var relation model.Relation
	ids := c.Param("id")
	id, err := strconv.Atoi(ids)
	if err != nil {
		response.Fail(c.Writer, err.Error(), 500)
		return
	}
	relation.Id = uint(id)
	err = relation.DRelation()
	if err != nil {
		response.Fail(c.Writer, err.Error(), 500)
		return
	}
	response.Success(c.Writer, "success", nil)
}