package com.yida.data.form.apply.service;


import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yida.data.customForm.dto.apply.*;
import com.yida.data.customForm.vo.apply.*;

import java.util.List;

/**
 * H5--申请类表单管理 Service
 *
 * @author ZYJ
 * @date 2023/11/15
 */
public interface AppApplyFormService {

    /**
     * 家长端查询申请表单列表数据
     *
     * @param dto 查询条件
     * @return com.baomidou.mybatisplus.core.metadata.IPage<com.yida.data.customForm.vo.apply.ApplyFormSelectPageVO>
     * @author ZYJ
     * @date 2023/11/15 20:51
     */
    IPage<ApplyFormSelectPageVO> listApplyFormPage(H5ApplyFormSelectPageDTO dto);

    /**
     * 家长端查询已经填报的申请数据
     *
     * @param dto 查询条件
     * @return com.baomidou.mybatisplus.core.metadata.IPage<com.yida.data.customForm.vo.apply.MyApplyFormPageVO>
     * @author ZYJ
     * @date 2023/11/23 14:43
     */
    IPage<MyApplyFormPageVO> listMyApplyFormPage(H5ApplyFormSelectPageDTO dto);

    /**
     * 家长端查询申请表单详情
     *
     * @param id 表单id
     * @return com.yida.data.customForm.vo.apply.ApplyFormInfoVO
     * @author ZYJ
     * @date 2023/11/16 15:26
     */
    ApplyFormInfoVO getApplyFormInfo(Long id);

    /**
     * 家长端提交保存申请表单数据
     *
     * @param dto 家长端申请表单填写信息
     * @author ZYJ
     * @date 2023/11/16 16:28
     */
    void saveApplyFormData(ApplyFormDataInputDTO dto);

    /**
     * 教师端我审批的申请表单
     *
     * @param dto 请求参数
     * @return com.baomidou.mybatisplus.core.metadata.IPage<com.yida.data.customForm.vo.apply.ApprovalApplyFormPageVO>
     * @author ZYJ
     * @date 2023/11/28 15:03
     */
    IPage<ApprovalApplyFormPageVO> findApprovalApplyFormDataList(SelectApprovalApplyFormDataListDTO dto);

    /**
     * 获取申请表单填报数据
     *
     * @param dto 表单填报数据请求信息
     * @return com.yida.data.customForm.vo.apply.ApplyFormFillUserDataVO
     * @author ZYJ
     * @date 2023/11/29 15:12
     */
    ApplyFormFillUserDataVO getApplyFormFillUserData(ApplyFormFillUserDataDTO dto);

    /**
     * 填报数据审核
     *
     * @param dto 审核信息
     * @author ZYJ
     * @date 2023/11/29 16:01
     */
    void auditForm(AuditFormDTO dto);
}
