package com.nbclass.activity.service;

import com.github.pagehelper.PageInfo;
import com.nbclass.activity.model.*;

public interface CommentService {

    /**
     * 案例详情和评论列表
     * @param contentId
     * @return
     */
    Content getComment(Long contentId,Long userId);

    /**
     * 评论回复列表
     * @param commentId
     * @param userId
     * @return
     */
    Comment getCommentReplyList(Long commentId,Long userId);

    /**
     * 添加用户发布信息
     * @param comment
     * @return
     */
    void saveComment(Comment comment);

    /**
     * 根据评论id获取被点赞人Id
     * @param commentId
     * @return
     */
    Comment getCommentUserId(Long commentId);

    /**
     * 添加评论点赞
     * @param praise
     * @return
     */
    void savePraiseNo(Praise praise);

    /**
     * 添加案例点赞
     * @param contentId
     * @return
     */
    void updateContentPraiseNo(Long contentId);

    /**
     * 评论总数加1
     * @param commentId
     */
    void updatePraiseno(Long commentId);

    /**
     * 用户回复
     * @param comment
     * @return
     */
    void saveUserReply(Comment comment);

    /**
     * 用户举报
     * @param report
     * @return
     */
    void saveReport(Report report);

    /**
     * 举报列表获取
     * @param page
     * @param pageSize
     * @return
     */
    PageInfo<Report> getReport(Integer page, Integer pageSize, String userId);

    /**
     * 添加标签、索引反馈日志
     * @return
     */
    void saveLabelLogger(LabelLogger labelLogger);

    /**
     * 新建文件夹
     * @param favoritesFolder
     * @return
     */
    void saveFavorites(FavoritesFolder favoritesFolder);

    /**
     * 案例详情的文件夹列表
     * @return
     */
    PageInfo<FavoritesFolder> getUserFolder(Long userId, Integer page, Integer pageSize,Long commentId);

    /**
     * 收藏案例到文件夹中
     * @param contentId
     * @return
     */
    void saveFolder(Long folderId,Long contentId);

    /**
     * 添加收藏总数
     * @param folderId
     */
    void saveFolderTotal(Long folderId);

    /**
     * 判断该文件夹是否已被收藏
     * @param folderId
     * @param contentId
     * @return
     */
    int getFolderExistence(Long folderId, Long contentId);

    /**
     * 判断文件夹是否重名
     * @param name
     * @return
     */
    int getFavoritesName(String name);

    /**
     * 取消文件夹中的案例收藏
     * @param folderId
     * @param contentId
     * @return
     */
    void deleteFolderResources(Long folderId, Long contentId);

    /**
     * 我的收藏
     * @param page
     * @param pageSize
     * @return
     */
    PageInfo<Content> getMyCollection(Long userId, Integer page, Integer pageSize,Long folderId);

    /**
     * 获取用户文件夹列表
     * @return
     */
    PageInfo<FavoritesFolder> getUserFolderList(Long userId, Integer page, Integer pageSize);

    /**
     * 取消评论点赞
     * @return
     */
    void deletePraise(Long commentId, Long userId);

    /**
     * 总点赞数减一
     * @param commentId
     */
    void updatePraiseNoONE(Long commentId);

    /**
     * 评论总回复数加一
     */
    void updateReplyNumberONE(Long commentId);

    /**
     * 回复列表
     * @param userId
     * @param page
     * @param pageSize
     * @return
     */
    PageInfo<Comment> getReplyList(Long userId, Integer page, Integer pageSize);

    /**
     * 点赞列表
     * @param page
     * @param pageSize
     * @return
     */
    PageInfo<Comment> getFabulousList(Long userId, Integer page, Integer pageSize);

    /**
     * 更新案例的收藏总数+1
     * @param contentId
     */
    void updateCollectionNumber(Long contentId);

    /**
     * 更新案例的收藏总数-1
     * @param contentId
     */
    void updateCollectionNumberReduce(Long contentId);

    /**
     * 标签、索引反馈日志列表
     * @param page
     * @param pageSize
     * @return
     */
    PageInfo<LabelLogger> getLabelLogger(Integer page, Integer pageSize, Long userId);

    /**
     * 案例打分
     * @param scoring
     */
    void saveScoring(Scoring scoring);

}
