package cn.iocoder.yudao.module.train.service;

import cn.iocoder.yudao.module.train.entity.Train;
import cn.iocoder.yudao.module.train.vo.TrainVO;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * 预约练车 Service  接口
 *
 * @author lzt
 */
public interface TrainService extends IService<Train> {

    /**
     * 分页查询
     *
     * @param pageReqVO TODO
     * @param page      TODO
     * @author vinjor-M
     * @date 15:05 2025/1/14
     **/
    IPage<TrainVO> queryListPage(TrainVO pageReqVO, Page<TrainVO> page);

    /**
     * 分页查询训练记录
     *
     * @param pageReqVO TODO
     * @param page      TODO
     * @author vinjor-M
     * @date 15:05 2025/1/14
     **/
    IPage<TrainVO> queryTrainListPage(TrainVO pageReqVO, Page<TrainVO> page);

    /**
     * 到场打卡
     *
     * @param trainVO TODO
     * @author vinjor-M
     * @date 15:47 2025/1/14
     **/
    void createObj(TrainVO trainVO);

    /**
     * 离场打卡
     *
     * @param trainVO TODO
     * @author vinjor-M
     * @date 15:49 2025/1/14
     **/
    void updateObj(TrainVO trainVO);

    /**
     * 查某个学院某个课程某个科目某天的培训记录-未签退的
     *
     * @param userId   学员用户id
     * @param courseId 课程ID
     * @param subject  科目
     * @param dayStr   日期
     * @return cn.iocoder.yudao.module.train.entity.Train
     * @author vinjor-M
     * @date 10:21 2025/1/17
     **/
    Train getUserTrainData(Long userId, String courseId, Integer subject, String dayStr);

    /**
     * 查某学生所有培训记录
     *
     * @param userId  学生id
     * @param coachId 教练id，可能为空
     * @return java.util.List<cn.iocoder.yudao.module.train.entity.Train>
     * @author vinjor-M
     * @date 16:26 2025/2/10
     **/
    List<Train> selectByUserIdAndCoachId(Long userId, Long coachId);

    /**
     * 批量查询
     *
     * @param trainIds 训练id集合
     * @return
     */
    List<TrainVO> listJoinBatchByIds(List<String> trainIds);
}
