package com.huiju.estateagents.property.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.huiju.estateagents.base.ResponseBean;
import com.huiju.estateagents.center.taUser.entity.TaUser;
import com.huiju.estateagents.property.model.TpTicket;
import com.huiju.estateagents.property.model.TpTicketRecordComment;

import java.io.IOException;

/**
 * <p>
 * 工单表 服务类
 * </p>
 *
 * @author jobob
 * @since 2019-02-14
 */
public interface TpTicketService extends IService<TpTicket> {

    /**
     * 工单列表
     * @param parameter
     * @param orgId
     * @return
     */
    ResponseBean ticketLiset(String parameter, Integer orgId);

    /**
     * 工单详情
     * @param parameter
     * @return
     */
    ResponseBean ticketDetails(String parameter, Integer userID, Integer orgId);

    /**
     * 添加工单回复
     * @param parameter
     * @param id
     * @param orgId
     * @param userName
     * @return
     */
    ResponseBean addRecordComment(String parameter, Integer id, Integer orgId, String userName);

    /**
     * 添加工单分配受理
     * @param parameter
     * @param id
     * @param orgId
     * @return
     */
    ResponseBean addRecord(String parameter, Integer id, Integer orgId);

    /**
     * 微信端添加工单分配受理
     * @param parameter
     * @param id
     * @param orgId
     * @return
     */
    ResponseBean addWxRecord(String parameter, Integer id, Integer orgId);

    /**
     * 修改工单状态为拒绝处理
     * @param parameter
     * @param id
     * @return
     */
    ResponseBean updateTicketStatus(String parameter, Integer id, Integer orgId, String userNmae, String LoginName);

    /**
     * 修改当前状态为待评价
     * @param parameter
     * @param id
     * @param orgId
     * @param userName
     * @return
     */
    ResponseBean updateTicket(String parameter, Integer id, Integer orgId, String userName, String longName);


    /**
     * 根据 小区ID 用户ID 类型 查询数据
     * @param tpTicket
     * @param pageCode
     * @param pageSize
     * @return 返回 维修/投诉/联系单 各 pageSize 条
     */
    ResponseBean getList(TpTicket tpTicket,Integer pageCode, Integer pageSize);

    /**
     * 根据 小区ID 用户ID 类型 查询数据
     * @param tpTicket
     * @param pageNum
     * @param pageSize
     * @return 返回 维修/投诉/联系单 记录列表
     */
    ResponseBean getByTypeList(TpTicket tpTicket, Integer pageNum, Integer pageSize);

    /**
     * 获取报修详情
     * @param orgId
     * @param ticketId
     * @return
     */
    TpTicket getTicketSchedule(String orgId, Integer ticketId);


    /**
     * 添加 维修/投诉/联系单
     * @param personId
     * @param parameter
     * @return
     */
    ResponseBean addAiTicketService(String personId, String parameter) throws IOException;

    /**
     * 回复工单
     * @param tpTicketRecordComment
     * @return
     */
    @Deprecated
    Integer updateTicketsReply(TpTicketRecordComment tpTicketRecordComment, String personId);

    /**
     * 修改 维修/投诉/联系单 内容
     * @param ticketId
     * @param parameter
     * @param personId
     */
    ResponseBean updateTicketContent(Integer ticketId, String parameter,String personId);

    /**
     * 终止 维修/投诉/联系单
     * @param orgId
     * @param ticketId
     * @return
     */
    ResponseBean stopTpTicketRecord(Integer orgId, Integer ticketId, String personId);

    /**
     * 添加工单对话
     * @param parameter
     * @param personId
     * @param orgId
     * @param userName
     * @return
     */
    ResponseBean addWxRecordComment(String parameter, String personId, Integer orgId, String userName);

    /**
     * 添加工单费用
     * @param parameter
     * @param userId
     * @param orgId
     * @return
     */
    ResponseBean updateTicketPrice(String parameter, Integer userId, Integer orgId);

    /**
     * 完成工单
     * @param parameter
     * @param userId
     * @param orgId
     * @param userName
     * @param loginName
     * @return
     */
    ResponseBean endTicket(String parameter, Integer userId, Integer orgId, String userName, String loginName);

    /**
     * 获取维修人员的工单列表
     * @param pageNum
     * @param pageSize
     * @param userId
     * @param orgId
     * @return
     */
    ResponseBean getWorkerList(Integer pageNum, Integer pageSize, Integer userId, Integer orgId);
}
