package com.cool.store.service;

import com.cool.store.enums.InterviewUserTypeEnum;
import com.cool.store.request.AppointmentTimeRequest;
import com.cool.store.request.LineInterviewPageRequest;
import com.cool.store.request.ModifyInterviewerRequest;
import com.cool.store.vo.interview.*;
import com.github.pagehelper.PageInfo;

import java.time.LocalDate;
import java.util.List;

/**
 * @author zhangchenbiao
 * @FileName: LineInterviewService
 * @Description:
 * @date 2024-03-15 16:04
 */
public interface LineInterviewService {

    /**
     * 获取预约时间
     * @param lineId
     * @param interviewType
     * @param appointmentDate
     * @return
     */
    List<AppointmentTimeVO> getAppointmentTime(Long lineId, Integer interviewType, LocalDate appointmentDate);


    List<AppointmentTimeListVO> getAppointmentTime(Long lineId, Integer interviewType, LocalDate appointmentStartDate, LocalDate appointmentEndDate);

    /**
     * 面试预约
     * @param request
     * @return
     */
    Boolean appointmentTime(AppointmentTimeRequest request);

    /**
     * 修改面试时间
     * @param request
     * @return
     */
    Boolean modifyAppointmentTime(AppointmentTimeRequest request);

    /**
     * 修改面审官
     * @param request
     * @return
     */
    Boolean modifyInterviewer(ModifyInterviewerRequest request);

    /**
     * 获取分页
     * @param request
     * @param userId
     * @param isTeam
     * @return
     */
    PageInfo<LineInterviewPageVO> getInterviewerPage(LineInterviewPageRequest request, String userId, Boolean isTeam);

    /**
     * 进入面试间
     * @param interviewId
     * @param interviewUserId
     * @param userType
     * @return
     */
    EnterInterviewVO enterInterviewRoom(Long interviewId, String interviewUserId, InterviewUserTypeEnum userType);

    /**
     * 结束面试
     * @param interviewId
     * @param userId
     * @return
     */
    Integer finishInterview(Long interviewId, String userId);

    /**
     * 获取面试信息
     * @param lineId
     * @param interviewType
     * @return
     */
    InterviewDetailVO getInterviewDetail(Long lineId, Integer interviewType);

    /**
     * 上传文件
     * @param interviewId
     * @param videoUrlList
     * @return
     */
    Integer uploadVideo(Long interviewId, List<String> videoUrlList);

    /**
     * 重新预约面审
     * @param lineId
     * @return
     */
    Integer reappointment(Long lineId);
}
