package com.m2pool.pool.mapper;

import com.m2pool.pool.dto.*;
import com.m2pool.pool.entity.M2File;
import com.m2pool.pool.entity.Ticket;
import com.m2pool.pool.vo.*;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface TicketMapper {

    /**
     * 修改工单状态
     * @param id
     * @param status
     * @return
     */
    public boolean changeTicketStatus(@Param("id") long id, @Param("status") int status);

    /**
     * 修改工单update_time
     * @param id
     * @return
     */
    public boolean changeTicketUpdateTime(@Param("id") long id);

    /**
     * 添加上传文件的保存信息
     * @param vo
     * @return
     */
    public boolean insertFileInfo(@Param("vo") M2File vo);

    /**
     * 根据id获取文件相关信息
     * @param id
     * @return
     */
    public M2File getFileInfoById(Long id);

    /**
     * 根据工单id查询工单是否存在
     * @param id
     * @return
     */
    public int checkTicketExist(@Param("id") long id);

    /**
     * 新增工单
     * @param data
     * @return
     */
    public boolean insertTicket(@Param("data") Ticket data);




    /**
     * 工单补充内容提交工单信息
     * @param vo
     * @return
     */
    public boolean insertTicketSupplement(@Param("vo") ResubmitTicketVo vo);

    public Integer getTicketSupplementCountByTicketId(@Param("id") long id);


    /**
     * 根据工单id 获取工单补充提交内容
     * @param id
     * @return
     */
    public List<TicketContentDto> getTicketSupplementListByTicketId(@Param("id") long id);

    /**
     * 根据工单id 获取工单回复内容
     * @param id
     * @return
     */
    public List<TicketContentDto> getTicketResponListByTicketId(@Param("id") long id);

    /**
     * 查询个人工单列表
     * @return
     * @param vo
     */
    public List<PrivateTicketListDto> getPrivateTicketList(@Param("vo") PrivateTicketListVo vo, @Param("email") String email);

    /**
     * 个人处理中的工单列表
     * @return
     */
    public List<PrivateTicketListDto> getPrivateProcessingTicketList(@Param("vo") PrivateTicketListVo vo, @Param("email") String email);

    /**
     * 个人 已完结的工单列表
     * @return
     */
    public List<PrivateTicketListDto> getPrivateEndTicketList(@Param("vo") PrivateTicketListVo vo,@Param("email") String email);


    /**
     * 查看工单详情
     * @param id
     * @return
     */
    public TicketDto getTicketById(@Param("id") long id);

    /**
     * 根据工单id查看工单状态
     * @param id
     * @return
     */
    public int getTicketStatusById(@Param("id") long id);

    /**
     * 查看工单详情
     * @param id
     * @return
     */
    public TicketPrivateDto getBackendTicketById(@Param("id") long id);


    /**
     * 查看个人工单详情
     * @param id
     * @param email
     * @return
     */
    public TicketPrivateDto getPrivateTicketById(@Param("id") long id, @Param("email") String email);

    /**
     * 根据状态和类型查询工单列表
     * @param vo
     * @return
     */
    public List<TicketListDto> getTicketListByStatusAndType(@Param("vo") StatusVo vo);


    /**
     * 后台获取总览工单 条件搜索 工单号/用户邮箱/时间
     * @param vo
     * @return
     */
    public List<AllTicketListDto> getTicketListByCond(@Param("vo") AllTicketListVo vo);

    public List<TicketListDto> getAllTicketList(@Param("vo") StatusVo vo);

    /**
     * 添加工单回复
     * @param vo
     * @return
     */
    public boolean insertRespon(@Param("vo") ResponTicketVo vo, @Param("name") String name);


}
