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

import cn.iocoder.yudao.module.jx.domain.DriveSchoolReservationCourse;
import cn.iocoder.yudao.module.jx.domain.DriveSchoolTeachingJournal;
import cn.iocoder.yudao.module.jx.vo.StatisticsVo;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;

import java.util.List;

/**
 * 预约练车Service接口
 *
 * @author ruoyi
 * @date 2024-04-08
 */
public interface IDriveSchoolReservationCourseService
{
    /**
     * 查询预约练车
     *
     * @param id 预约练车主键
     * @return 预约练车
     */
    public DriveSchoolReservationCourse selectDriveSchoolReservationCourseById(Long id);

    /**
     * 查询预约练车列表
     *
     * @param driveSchoolReservationCourse 预约练车
     * @return 预约练车集合
     */
    public IPage<DriveSchoolReservationCourse> selectDriveSchoolReservationCourseList(DriveSchoolReservationCourse driveSchoolReservationCourse, Page<DriveSchoolReservationCourse> page);
    public IPage<DriveSchoolReservationCourse> selectDriveSchoolReservationCoursePclist(DriveSchoolReservationCourse driveSchoolReservationCourse,Page<DriveSchoolReservationCourse> page);

    /**
     * 新增预约练车
     *
     * @param driveSchoolReservationCourse 预约练车
     * @return 结果
     */
    public int insertDriveSchoolReservationCourse(DriveSchoolReservationCourse driveSchoolReservationCourse) throws Exception;

    /**
     * 修改预约练车
     *
     * @param driveSchoolReservationCourse 预约练车
     * @return 结果
     */
    public int updateDriveSchoolReservationCourse(DriveSchoolReservationCourse driveSchoolReservationCourse);

    /**
     * 批量删除预约练车
     *
     * @param ids 需要删除的预约练车主键集合
     * @return 结果
     */
    public int deleteDriveSchoolReservationCourseByIds(Long[] ids);

    /**
     * 删除预约练车信息
     *
     * @param id 预约练车主键
     * @return 结果
     */
    public int deleteDriveSchoolReservationCourseById(Long id);

    void updateCourseById(DriveSchoolReservationCourse driveSchoolReservationCourse);

    StatisticsVo getHomeData();

    IPage<DriveSchoolReservationCourse> getReservationCourseList(Page page);

    List<DriveSchoolReservationCourse> selectDriveSchoolReservationGetListUser(DriveSchoolReservationCourse driveSchoolReservationCourse);

    DriveSchoolReservationCourse getDriveTime();

    List<DriveSchoolReservationCourse> getOftenDriveStudents(Long jlId);

    StatisticsVo getIndexData();

    List<DriveSchoolReservationCourse> getReservationCourseListByUserId();
    List<DriveSchoolReservationCourse> getAppReservationCourseListByUserId(DriveSchoolReservationCourse driveSchoolReservationCourse);
    List<DriveSchoolReservationCourse> getAppReservationCourseListByUserIds(DriveSchoolReservationCourse driveSchoolReservationCourse);

    int updateDriveSchoolReservationCourseByCoach(DriveSchoolReservationCourse driveSchoolReservationCourse);
}
