package com.cool.store.controller.webc;

import com.cool.store.context.PartnerUserHolder;
import com.cool.store.enums.InterviewUserTypeEnum;
import com.cool.store.request.AppointmentTimeRequest;
import com.cool.store.response.ResponseResult;
import com.cool.store.service.LineInterviewService;
import com.cool.store.vo.PartnerUserInfoVO;
import com.cool.store.vo.interview.AppointmentTimeVO;
import com.cool.store.vo.interview.EnterInterviewVO;
import com.cool.store.vo.interview.InterviewDetailVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.time.LocalDate;
import java.util.List;

/**
 * @author zhangchenbiao
 * @FileName: LineInterviewController
 * @Description:
 * @date 2024-03-15 16:04
 */
@RestController
@RequestMapping("/mini/interview")
@Api(tags = "加盟商端-面试&面谈")
@Slf4j
public class LineInterviewController {

    @Resource
    private LineInterviewService lineInterviewService;

    @ApiOperation("获取面试/面谈 预约时间")
    @GetMapping("/appointment/time")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "lineId", value = "线索id", required = true),
            @ApiImplicitParam(name = "interviewType", value = "面试类型:0面谈;1一审;2二审", required = true),
            @ApiImplicitParam(name = "appointmentDate", value = "预约日期 yyyy-MM-dd", required = true)
    })
    public ResponseResult<List<AppointmentTimeVO>> getAppointmentTime(@RequestParam("lineId")Long lineId,
                                                                      @RequestParam("interviewType")Integer interviewType,
                                                                      @RequestParam("appointmentDate") @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate appointmentDate) {
        return ResponseResult.success(lineInterviewService.getAppointmentTime(lineId, interviewType, appointmentDate));
    }

    @ApiOperation("预约时间")
    @PostMapping("/appointment/time")
    public ResponseResult<Boolean> appointmentTime(@RequestBody @Validated AppointmentTimeRequest request) {
        return ResponseResult.success(lineInterviewService.appointmentTime(request));
    }

    @ApiOperation("获取面试信息")
    @GetMapping("/detail")
    public ResponseResult<InterviewDetailVO> getInterviewDetail(@RequestParam("lineId")Long lineId, @RequestParam("interviewType")Integer interviewType) {
        return ResponseResult.success(lineInterviewService.getInterviewDetail(lineId, interviewType));
    }

    @ApiOperation("进入房间")
    @GetMapping("/room/enter")
    public ResponseResult<EnterInterviewVO> enterInterviewRoom(@RequestParam("interviewId")Long interviewId) {
        PartnerUserInfoVO partnerUser = PartnerUserHolder.getUser();
        return ResponseResult.success(lineInterviewService.enterInterviewRoom(interviewId, partnerUser.getPartnerId(), InterviewUserTypeEnum.LINE));
    }

    @ApiOperation("修改面审时间")
    @PostMapping("/appointment/time/modify")
    public ResponseResult<Boolean> modifyAppointmentTime(@RequestBody @Validated AppointmentTimeRequest request) {
        return ResponseResult.success(lineInterviewService.modifyAppointmentTime(request));
    }

}
