package jnpf.attendance.controller;


import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO;
import jnpf.attendance.service.AttendanceHolidaySettingService;
import jnpf.base.ActionResult;
import jnpf.base.vo.PageListVO;
import jnpf.model.attendance.dto.AttendanceHolidaySettingDto;
import jnpf.model.attendance.dto.EnableUpdateDto;
import jnpf.model.attendance.vo.AttendanceHolidaySettingVo;
import jnpf.util.PageUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

/**
 * <p>
 * 考勤配置-假日设置 前端控制器
 * </p>
 *
 * @author ahua
 * @since 2023-11-29
 */
@RestController
@RequestMapping("/holiday/setting")
public class AttendanceHolidaySettingController {

    @Autowired
    private AttendanceHolidaySettingService attendanceHolidaySettingService;

    /**
     * 分页查询节假日设置信息。
     *
     * @param groupId        考勤组ID
     * @param name           节假日名称（可选）
     * @param paidSalaryEnable 是否计入薪酬标识（可选）
     * @param currentPage     当前页码
     * @param pageSize       每页大小
     * @return              分页的节假日设置视图对象列表
     */
    @GetMapping
    public ActionResult<PageListVO<AttendanceHolidaySettingVo>> page(@RequestParam String groupId,
                                                                     @RequestParam(required = false) String name,
                                                                     @RequestParam(required = false) Integer paidSalaryEnable,
                                                                     @RequestParam Integer currentPage,
                                                                     @RequestParam Integer pageSize){
        PageDTO<AttendanceHolidaySettingVo> page1 = attendanceHolidaySettingService.page(groupId, name, paidSalaryEnable, currentPage, pageSize);
        return ActionResult.page(page1.getRecords(), PageUtil.page(page1));
    }

    /**
     * 根据ID获取单个节假日设置信息。
     *
     * @param id 节假日设置ID
     * @return 节假日设置视图对象
     */
    @GetMapping("{id}")
    public ActionResult<AttendanceHolidaySettingVo> getOne(@PathVariable String id){
        return ActionResult.success(attendanceHolidaySettingService.getOne(id));
    }

    /**
     * 删除指定的节假日设置信息。
     *
     * @param id 节假日设置ID
     * @return 处理结果视图对象
     */
    @DeleteMapping("{id}")
    public ActionResult del(@PathVariable String id){
        attendanceHolidaySettingService.del(id);
        return ActionResult.success();
    }

    /**
     * 保存节假日设置信息。
     *
     * @param dto 节假日设置数据传输对象
     * @return 处理结果视图对象
     */
    @PostMapping
    public ActionResult save(@RequestBody AttendanceHolidaySettingDto dto){
        attendanceHolidaySettingService.save(dto);
        return ActionResult.success();
    }

    /**
     * 更改节假日设置信息的启用状态。
     *
     * @param enableUpdateDto 启用状态更新数据传输对象
     * @return 处理结果视图对象
     */
    @PutMapping("updateStatus")
    public ActionResult changeStatus(@RequestBody EnableUpdateDto enableUpdateDto){
        attendanceHolidaySettingService.changeStatus(enableUpdateDto.getId(), enableUpdateDto.getEnable());
        return ActionResult.success();
    }

}

