package com.ssm.manage.service;

import com.github.pagehelper.PageInfo;
import com.ssm.core.service.BaseService;
import com.ssm.manage.entity.CourseList;
import com.ssm.manage.entity.CourseVo;
import com.ssm.manage.entity.SmsException;
import com.ssm.manage.extendEntity.StoreDaily;
import com.ssm.manage.query.CourseListRequest;
import com.ssm.manage.query.CourseListRequestNew;
import com.ssm.manage.query.CourseListRequestNews;
import com.ssm.manage.query.StoreDailyRequest;
import com.ssm.manage.response.CourseDayVo;
import com.ssm.manage.response.CourseListResponse;
import com.ssm.manage.response.RateContribution;

import java.io.IOException;
import java.text.ParseException;
import java.util.Date;
import java.util.List;

public interface SsmCourseService extends BaseService<CourseList> {
    void createTable();
    PageInfo<CourseListResponse> selectPage(CourseListRequest courseListRequest) throws SmsException, ParseException;
    PageInfo<CourseListResponse> selectPageNew(CourseListRequest courseListRequest) throws SmsException, ParseException;
    PageInfo<CourseListResponse> memberPage(CourseListRequest courseListRequest) throws SmsException, ParseException;
    PageInfo<CourseListResponse> pageDetail(CourseListRequest courseListRequest) throws SmsException, ParseException;

    int addCourse(CourseListRequest courseListRequest) throws SmsException, IOException;

    int cancel(CourseListRequest courseListRequest) throws SmsException;
    int memberInitCancel(CourseListRequest courseListRequest) throws SmsException;

    int updateStaff(CourseListRequest courseListRequest) throws SmsException;
    int updateMemberInitStaff(CourseListRequest courseListRequest) throws SmsException;

    List<CourseListResponse> selectList(Long storeId, String dateStr, Date date) throws SmsException, ParseException;
    List<CourseList> selectListByStarteTimeAndEndTime(Long storeId, String dateStr, Date startTime,Date endTime) throws SmsException, ParseException;
    List<CourseListResponse> memberInitStaff(Long storeId, String dateStr, Date date) throws SmsException, ParseException;
    List<CourseListResponse> selectListchia(Long storeId, Date date) throws SmsException, ParseException;
    List<CourseListResponse> selectListAbnormal(Long storeId, String dateStr, Date date) throws SmsException, ParseException;
    List<CourseListResponse> selectLists(Long storeId, String startDate,String endDate, Date date) throws SmsException, ParseException;

    StoreDaily selectDayRecord(StoreDailyRequest storeDailyRequest);
    //加价转疗程
    StoreDaily selectOutcourse(StoreDailyRequest storeDailyRequest);
    StoreDaily NegativeKazin(StoreDailyRequest storeDailyRequest);

    List<CourseList> selectListSalem(CourseList courseList);
    List<CourseList> selectByCourseListMemberInit(CourseList courseList);
    CourseList selectOneS(CourseList courseList);
    int updateOne(CourseList courseList);
    List<CourseList> selectList(CourseList courseList);
    List<CourseList> selectMemberInitList(CourseList courseList);
    List<CourseList> selectList(CourseListRequest courseListRequest);
    List<CourseList> selectListByMemberInitList(CourseListRequest courseListRequest);

    List<CourseList> selectList2(CourseList courseList);

    List<CourseListResponse> selectListContribution(Long storeId, Date date) throws SmsException, ParseException;

//    void addCourseList(CourseListRequestNews courseListRequestNews) throws SmsException;

    int addCourse1(CourseListRequestNew courseListRequestNew) throws SmsException;
    int memberInit(CourseListRequestNew courseListRequestNew) throws SmsException;

    StoreDaily selectDocId(StoreDailyRequest storeDailyRequest);

    CourseVo selectCourseOne(CourseListRequest courseListRequest);
    CourseVo selectCourseMemberInit(CourseListRequest courseListRequest);

    List<CourseDayVo> selectByDay(StoreDailyRequest storeDailyRequest);

    List<CourseDayVo> selectCourseCoopation(StoreDailyRequest storeDailyRequest);

    List<CourseList> selectCourseByProjectAndDocId(CourseList courseList);

    CourseVo selectCourseOneByError(CourseListRequest courseListRequest);

    List<StoreDaily> selectByDayGroupByDateAndStoreId(StoreDailyRequest storeDailyRequest);

    List<CourseList> selectGroupCourse(CourseListRequest courseListRequest);

    StoreDaily NegativeKazinByDate(StoreDailyRequest storeDailyRequest);

}
