package jnpf.attendance.controller;


import jnpf.attendance.service.AttendanceLocationSettingService;
import jnpf.base.ActionResult;
import jnpf.exception.HandleException;
import jnpf.model.attendance.dto.AttendanceLocationSettingDto;
import jnpf.model.attendance.dto.SaveForStoreDto;
import jnpf.model.attendance.vo.AttendanceGroupVo;
import jnpf.model.attendance.vo.AttendanceLocationSettingVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * <p>
 * 考勤组-考勤点配置表 前端控制器
 * </p>
 *
 * @author ahua
 * @since 2023-11-29
 */
@RestController
@RequestMapping("/location/setting")
public class AttendanceLocationSettingController {
    @Autowired
    private AttendanceLocationSettingService attendanceLocationSettingService;

    /**
     * 根据考勤组ID和类型查询考勤地点设置列表。
     *
     * @param groupId        考勤组ID
     * @param type           类型（用于筛选设置）
     * @return              考勤地点设置视图对象列表
     */
    @GetMapping
    public ActionResult<List<AttendanceLocationSettingVo>> findList(@RequestParam String groupId, @RequestParam Integer type) {
        return ActionResult.success(attendanceLocationSettingService.findList(groupId, type));
    }

    /**
     * 根据门店信息保存考勤点数据
     * @param saveForStore
     */
    @PostMapping("saveForStore")
    public ActionResult saveForStore(@RequestBody SaveForStoreDto saveForStore){
        attendanceLocationSettingService.saveForStore(saveForStore);
        return ActionResult.success();
    }
    /**
     * 根据门店id集合删除考勤点信息
     * @param saveForStore
     */
    @DeleteMapping("delForStore")
    public ActionResult delForStore(@RequestBody SaveForStoreDto saveForStore){
        attendanceLocationSettingService.delForStore(saveForStore);
        return ActionResult.success();
    }
    /**
     * 获取当前考勤组考勤点关联门店id
     * @param groupId
     * @return
     */
    @GetMapping("getStoreIds")
    public ActionResult<List<String>> getStoreIds(@RequestParam String groupId){
        return ActionResult.success(attendanceLocationSettingService.getStoreIds(groupId));
    }

    /**
     * 获取启用的考勤组信息。
     *
     * @param groupId 考勤组ID
     * @return        启用的考勤组视图对象列表
     */
    @GetMapping("getEnableGroups")
    public ActionResult<List<AttendanceGroupVo>> getEnableGroups(@RequestParam String groupId) {
        return ActionResult.success(attendanceLocationSettingService.getEnableGroup(groupId));
    }

    /**
     * 保存考勤地点设置信息。
     *
     * @param dto 考勤地点设置数据传输对象
     * @throws HandleException 处理异常
     * @return 处理结果视图对象
     */
    @PostMapping
    public ActionResult save(@RequestBody AttendanceLocationSettingDto dto) throws HandleException {
        attendanceLocationSettingService.save(dto);
        return ActionResult.success();
    }

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

    /**
     * 更改考勤地点设置的启用状态。
     *
     * @param groupId 考勤组ID
     * @param type    类型（用于区分设置类型）
     * @param enable  启用状态（0禁用，1启用）
     * @return 处理结果视图对象
     */
    @PutMapping("changeStatus")
    public ActionResult changeStatus(@RequestParam String groupId, @RequestParam Integer type, @RequestParam Integer enable) {
        attendanceLocationSettingService.changeStatus(groupId, type, enable);
        return ActionResult.success();
    }


}

