package cn.iocoder.yudao.module.staff.controller.admin;

import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.module.staff.entity.CompanyStaffChange;
import cn.iocoder.yudao.module.staff.service.CompanyStaffChangeService;
import cn.iocoder.yudao.module.staff.vo.CompanyStaffChangeReqVO;
import cn.iocoder.yudao.module.staff.vo.CompanyStaffChangeRespVO;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;

import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;

/**
 * 企业管理-员工交接记录 控制层
 * @author 小李
 * @date 16:19 2024/8/8
**/
@RestController
@RequestMapping("/company/staffChange")
@Tag(name = "管理后台 - 企业管理 - 员工交接")
@Validated
public class CompanyStaffChangeController {

    @Resource
    private CompanyStaffChangeService staffChangeService;

    /**
     * 创建交接信息
     * @author 小李
     * @date 14:30 2024/8/12
     * @param staffChangeRespVO 交接双方
    **/
    @PostMapping("/create")
    @Operation(summary = "创建企业管理-员工交接表信息")
    @PreAuthorize("@ss.hasPermission('company:staff:change')")
    public CommonResult<String> createStaffChange(@RequestBody CompanyStaffChangeRespVO staffChangeRespVO){
        staffChangeService.createChangeStaff(staffChangeRespVO);
        return CommonResult.ok();
    }

    /**
     * @author 小李
     * @date 18:56 2024/8/12
     * @param staffChangeReqVO 查询条件对象
     * @param pageNo 页码
     * @param pageSize 条数
    **/
    @GetMapping("/page")
    @Operation(summary = "查询企业管理-员工交接表信息及交接双方")
    @PreAuthorize("@ss.hasPermission('company:staffChange:query')")
    public CommonResult<IPage<?>> getStaffChangePage(CompanyStaffChangeReqVO staffChangeReqVO,
                                                  @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
                                                  @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize){
        Page<CompanyStaffChange> page = new Page<>(pageNo, pageSize);
        return success(staffChangeService.getStaffChangePage(staffChangeReqVO, page));
    }
}
