package com.xinelu.mobile.service.homepage;

import com.xinelu.common.core.domain.AjaxResult;
import com.xinelu.common.core.page.TableDataInfo;
import com.xinelu.manage.domain.signpatientmanageroutenode.SignPatientManageRouteNode;
import com.xinelu.manage.dto.patientquestionsubmitresult.PatientQuestionSubmitResultDTO;
import com.xinelu.manage.vo.signpatientmanageroute.PhonePush;
import com.xinelu.mobile.vo.homepage.HealthLog;
import com.xinelu.mobile.vo.myfollowup.MyFollowUpVO;

import java.util.List;

/**
 * 小程序首页Service
 *
 * @author zh
 * @date 2024-04-18
 */
public interface HomePageService {

    /**
     * 我的随访列表
     *
     * @param myFollowUp 用户信息
     * @return TableDataInfo
     */
    TableDataInfo myFollowUp(MyFollowUpVO myFollowUp);

    /**
     * 查询话术信息
     *
     * @param patientTaskExecuteRecordId 话术信息主键
     * @return 话术信息
     */
    PhonePush selectScriptInfo(Long patientTaskExecuteRecordId);

    /**
     * 问卷信息
     *
     * @param templateId 问卷表id
     * @return AjaxResult
     */
    AjaxResult selectQuestion(Long templateId);

    /**
     * 问卷记录信息
     *
     * @param patientQuestionSubmitResultId 记录表id
     * @return AjaxResult
     */
    AjaxResult selectQuestionSubmit(Long patientQuestionSubmitResultId, Long patientTaskExecuteRecordId);

    /**
     * 问卷提交
     *
     * @param dto 提交信息
     * @return AjaxResult
     */
    AjaxResult updatePatientTaskExecuteRecord(PatientQuestionSubmitResultDTO dto);

    /**
     * 健康日志
     *
     * @param residentId 用户id
     * @return AjaxResult
     */
    List<HealthLog> selectPatientTaskExecuteRecord(Long residentId);

    /**
     * 满意度问卷
     *
     * @param residentId 居民信息
     * @return SatisfactionQuestionnaire
     */
    TableDataInfo satisfactionQuestionnaire(Long residentId);

    /**
     * 消息通知列表
     *
     * @param residentId 用户id
     * @return AjaxResult
     */
    AjaxResult selectSignPatientManageRouteNode(Long residentId);

    /**
     * 消息推送内容
     *
     * @param manageRouteNodeId 节点id
     * @return AjaxResult
     */
    AjaxResult selectMessageContent(Long manageRouteNodeId);

    /**
     * 修改消息状态
     *
     * @param signPatientManageRouteNode 节点信息
     * @return int
     */
    AjaxResult updateMessageStatus(SignPatientManageRouteNode signPatientManageRouteNode);

    /**
     * 任务完成情况
     *
     * @param manageRouteNodeId 节点id
     * @return AjaxResult
     */
    AjaxResult nodeExecuteStatus(Long manageRouteNodeId);

    /**
     * 保存宣教文章查看时间
     *
     * @param manageRouteNodeId 节点id
     * @return AjaxResult
     */
    AjaxResult viewPropaganda(Long manageRouteNodeId);
}