package jnpf.cultivate.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.github.pagehelper.PageInfo;
import jnpf.entity.cultivate.TeachingRecord;
import jnpf.model.cultivate.dto.teaching.*;
import jnpf.model.cultivate.vo.teaching.*;

import javax.servlet.http.HttpServletResponse;
import java.util.List;

public interface TeachingRecordPracticeService extends IService<TeachingRecord> {
    /**
     * Web-练习门店下拉
     *
     * @return 练习门店集合
     */
    List<StoreInfoListVo> getStoreList();

    /**
     * 汇总-分页列表
     *
     * @param pageDto 查询参数
     * @return 汇总数据集合
     */
    PageInfo<SummaryPageListVo> summaryPageList(TeachingBaseFilter pageDto);

    /**
     * 汇总导出
     * @param response 响应
     * @param pageDto 查询参数
     */
    void summaryExport(HttpServletResponse response, TeachingBaseFilter pageDto) throws Exception;

    /**
     * 记录-分页列表
     *
     * @param pageDto 查询参数
     * @return 练习集合
     */
    PageInfo<RecordPageListVo> recordPageList(TeachingBaseFilter pageDto);

    /**
     * 记录导出
     * @param response 响应
     * @param pageDto 查询参数
     */
    void recordExport(HttpServletResponse response, TeachingBaseFilter pageDto) throws Exception;

    /**
     * 记录-批量删除
     * @param deleteDto 删除参数
     * @return 是否成功
     */
    Boolean recordBatchDelete(RecordBatchDeleteDto deleteDto);

    /**
     * App我的练习-分页列表
     *
     * @param pageDto 查询参数
     * @return 练习集合
     */
    PageInfo<MyRecordPageListVo> myRecordPageList(MyRecordPageListDto pageDto);

    /**
     * App我的练习-新增
     *
     * @param saveDto 保存参数
     * @return 是否成功
     */
    Boolean mySave(RecordSaveDto saveDto) throws Exception;

    /**
     * App我的练习-详情
     *
     * @param id 数据id
     * @return 练习详情
     */
    RecordInfoVo myInfo(String id);

    /**
     * App我的练习-修改
     *
     * @param updateDto 修改参数
     * @return 是否成功
     */
    Boolean myUpdate(RecordUpdateDto updateDto);

    /**
     * App我的练习-删除
     *
     * @param id 数据id
     * @return 是否成功
     */
    Boolean myDelete(String id);

    /**
     * App我的练习-查看数据
     *
     * @param viewDataDto 查询条件
     * @return 技能点信息集合
     */
    ViewDataVo myViewData(ViewDataDto viewDataDto);

    /**
     * App员工练习-分页列表
     *
     * @param pageDto 查询参数
     * @return 练习集合
     */
    PageInfo<EmployeePageListVo> employeePageList(EmployeePageListDto pageDto);

    /**
     * App员工练习-查看数据
     *
     * @param viewDataDto 查询参数
     * @return 练习集合
     */
    List<EmployeeViewDataVo> employeeViewData(ViewDataDto viewDataDto);

    /**
     * App店长界面-今日练习汇总数据
     *
     * @param storeId 查询参数
     * @return 练习汇总数据
     */
    TodaySummaryDataVo getTodaySummary(String storeId);

    /**
     * 生成带教/练习的模拟数据
     * @return 是否成功
     */
    Boolean createSimulatedData(String tenantId);

    /**
     * 获取我的练习汇总数据
     * @param storeId 店铺id
     * @return 我的练习汇总数据
     */
    MyPracticeSummaryVo getMyPracticeSummary(String storeId);
}