package yb_comment

import (
	"hongze/hongze_yb/global"
	"hongze/hongze_yb/utils"
)

// GetListByUserIdReportId 获取用户的留言列表
func GetListByUserIdReportId(userId uint64, reportId, reportChapterId int) (list []*YbComment, err error) {
	//err = global.DEFAULT_MYSQL.Model(YbComment{}).
	//	Where("user_id = ? and report_id = ? and report_chapter_id = ? and enabled = 1 ", userId, reportId, reportChapterId).
	//	Order("create_time desc, comment_id desc").
	//	Scan(&list).Error
	tmp := global.DEFAULT_MYSQL.Model(YbComment{}).
		Where("user_id = ? and report_id = ? and enabled = 1 ", userId, reportId)
	if reportChapterId > 0 {
		tmp = tmp.Where("report_chapter_id = ?", reportChapterId)
	}
	err = tmp.Order("create_time desc, comment_id desc").
		Scan(&list).Error
	if err == utils.ErrNoRow {
		err = nil
	}
	return
}

// GetListByUserIdOldReportId 获取用户的留言列表
func GetListByUserIdOldReportId(userId uint64, oldReportId, oldReportChapterId int) (list []*YbComment, err error) {
	err = global.DEFAULT_MYSQL.Model(YbComment{}).
		Where("user_id = ? and old_report_id = ? and old_report_chapter_id = ? and enabled = 1 ", userId, oldReportId, oldReportChapterId).
		Order("create_time desc, comment_id desc").
		Scan(&list).Error
	if err == utils.ErrNoRow {
		err = nil
	}
	return
}

// GetHotListByReportId 获取报告的精选留言列表
func GetHotListByReportId(reportId, reportChapterId int, offset, limit int) (list []*YbComment, err error) {
	//err = global.DEFAULT_MYSQL.Model(YbComment{}).
	//	Where("report_id = ? and report_chapter_id = ? and enabled = 1 and is_hot = 1 and type = 1", reportId, reportChapterId).
	//	Order("is_top desc, hot_top_time desc, comment_id desc").
	//	Offset(offset).
	//	Limit(limit).
	//	Scan(&list).Error

	tmp := global.DEFAULT_MYSQL.Model(YbComment{}).
		Where("report_id = ? and enabled = 1 and is_hot = 1 and type = 1", reportId)

	// 如果有填写章节id，那么就查询章节id
	if reportChapterId > 0 {
		tmp = tmp.Where("report_chapter_id = ? ", reportChapterId)
	}

	err = tmp.Order("is_top desc, hot_top_time desc, comment_id desc").
		Offset(offset).
		Limit(limit).
		Scan(&list).Error

	return
}

// GetHotListTotalByReportId 获取精选留言总条数
func GetHotListTotalByReportId(reportId, reportChapterId int) (total int64, err error) {
	tmp := global.DEFAULT_MYSQL.Model(YbComment{}).
		Where("report_id = ? and enabled = 1 and is_hot = 1 and type = 1", reportId)
	// 如果有填写章节id，那么就查询章节id
	if reportChapterId > 0 {
		tmp = tmp.Where(" report_chapter_id = ? ", reportChapterId)
	}
	err = tmp.Count(&total).Error

	return
}

// GetHotListByOldReportId 获取老报告的精选留言列表
func GetHotListByOldReportId(oldReportId, oldReportChapterId int, offset, limit int) (list []*YbComment, err error) {
	err = global.DEFAULT_MYSQL.Model(YbComment{}).
		Where("old_report_id = ? and old_report_chapter_id = ? and enabled = 1 and is_hot = 1 and type = 1", oldReportId, oldReportChapterId).
		Order("is_top desc, hot_top_time desc, comment_id desc").
		Offset(offset).
		Limit(limit).
		Scan(&list).Error
	return
}

// GetHotListTotalByOldReportId 获取老报告的精选留言总条数
func GetHotListTotalByOldReportId(oldReportId, oldReportChapterId int) (total int64, err error) {
	err = global.DEFAULT_MYSQL.Model(YbComment{}).
		Where("old_report_id = ? and old_report_chapter_id = ? and enabled = 1 and is_hot = 1 and type = 1", oldReportId, oldReportChapterId).
		Count(&total).Error
	return
}

// GetReplyListByReplyCommentId 获取报告的精选留言的回复列表
func GetReplyListByReplyCommentId(replyCommentIds []uint64) (list []*YbComment, err error) {
	err = global.DEFAULT_MYSQL.Model(YbComment{}).
		Where("enabled = 1 and type = 2 and reply_comment_id in ?", replyCommentIds).
		Order("comment_id asc").
		Scan(&list).Error
	return
}

// GetSimpleByCommentId 根据留言ID，查询留言
func GetSimpleByCommentId(commentId uint64) (item *YbComment, err error) {
	err = global.DEFAULT_MYSQL.Model(YbComment{}).
		Select("comment_id, user_id, type, enabled").
		Where("comment_id = ?", commentId).First(&item).Error
	if err == utils.ErrNoRow {
		err = nil
	}
	return
}

// GetMyLatestComment 获取用户最新的留言
func GetMyLatestComment(userId uint64) (item *YbComment, err error) {
	err = global.DEFAULT_MYSQL.Model(YbComment{}).
		Select("comment_id, user_id, type, enabled, is_show_name").
		Where("user_id = ? and type=1", userId).Order("comment_id desc").First(&item).Error
	return
}
