package jnpf.attendance.controller;


import jnpf.attendance.service.AttendanceQuickTemplateService;
import jnpf.base.ActionResult;
import jnpf.model.attendance.dto.FixedClassGroupDto;
import jnpf.model.attendance.dto.QuickTemDto;
import jnpf.model.attendance.dto.QuickTemplateDto;
import jnpf.model.attendance.vo.AttendanceQuickTemplateVo;
import jnpf.model.attendance.vo.attendance.QuickTemVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import javax.validation.Valid;
import java.util.List;

/**
 * <p>
 * 考勤配置-快速模板 前端控制器
 * </p>
 *
 * @author ahua
 * @since 2023-11-28
 */
@RestController
@RequestMapping("/quick/template")
public class AttendanceQuickTemplateController {

    @Autowired
    private AttendanceQuickTemplateService attendanceQuickTemplateService;

    /**
     * 根据考勤组ID查询快速模板列表。
     *
     * @param groupId 考勤组ID
     * @return 快速模板视图对象列表
     */
    @GetMapping
    public ActionResult<List<AttendanceQuickTemplateVo>> findList(@RequestParam String groupId) {
        List<AttendanceQuickTemplateVo> list = attendanceQuickTemplateService.findList(groupId);
        return ActionResult.success(list);
    }

    /**
     * 根据快速模板ID查询单个快速模板。
     *
     * @param id 快速模板ID
     * @return 快速模板视图对象
     */
    @GetMapping("{id}")
    public ActionResult<AttendanceQuickTemplateVo> findOne(@PathVariable String id) {
        return ActionResult.success(attendanceQuickTemplateService.findOne(id));
    }

    /**
     * 保存快速模板信息。
     *
     * @param quickTemplateDto 快速模板数据传输对象
     * @return 处理结果视图对象
     */
    @PostMapping
    public ActionResult save(@RequestBody QuickTemplateDto quickTemplateDto) {
        attendanceQuickTemplateService.save(quickTemplateDto);
        return ActionResult.success();
    }

    /**
     * 删除指定的快速模板信息。
     *
     * @param id 快速模板ID
     * @return 处理结果视图对象
     */
    @DeleteMapping("{id}")
    public ActionResult del(@PathVariable String id) {
        attendanceQuickTemplateService.del(id);
        return ActionResult.success();
    }


    /**
     * 新版考勤快速排班模板
     * @param dto 快速排班信息
     */
    @PostMapping("/new")
    public ActionResult saveNew(@RequestBody @Valid QuickTemDto dto) {
        attendanceQuickTemplateService.saveOrUpdateNew(dto);
        return ActionResult.success();
    }

    /**
     * 新版考勤快速排班列表
     * @param groupId 考勤组Id
     */
    @GetMapping("/new")
    public ActionResult<List<QuickTemVo>> findNewList(@RequestParam String groupId) {
        List<QuickTemVo> list = attendanceQuickTemplateService.findNewList(groupId);
        return ActionResult.success(list);
    }
}

