package com.usky.sas.controller.web;

import com.usky.common.core.bean.ApiResult;
import com.usky.sas.service.SasPatrolEventService;
import com.usky.sas.service.vo.MapSaveRequest;
import com.usky.sas.service.vo.MapTreeItem;
import com.usky.sas.service.vo.MapInfoVo;
import lombok.Data;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

/**
 * 实时电子巡检模块接口
 *
 * GET  /prod-api/service-sas/event/patrol/map/tree  获取地图树（仅 type=1008）
 * GET  /prod-api/service-sas/event/patrol/map/info  获取地图详情（仅 type=1008）
 * POST /prod-api/service-sas/event/patrol/map       新增地图（type 固定为 1008 实时电子巡检）
 * PUT  /prod-api/service-sas/event/patrol/map/{id}  修改地图（仅 type=1008）
 * DELETE /prod-api/service-sas/event/patrol/map/{id} 删除地图（仅 type=1008）
 */
@RestController
@RequestMapping("/event/patrol")
public class SasPatrolEventController {

    @Autowired
    private SasPatrolEventService sasPatrolEventService;

    /**
     * 新增地图（实时电子巡检模块专用，地图 type 固定为 1008）
     */
    @PostMapping("/map")
    public ApiResult<AddMapResponse> addMap(@RequestBody MapSaveRequest request) {
        String id = sasPatrolEventService.addMap(request);
        AddMapResponse resp = new AddMapResponse();
        resp.setId(id);
        return ApiResult.success(resp);
    }

    /**
     * 获取地图导航树形列表（仅实时电子巡检 type=1008 的地图）
     */
    @GetMapping("/map/tree")
    public ApiResult<List<MapTreeItem>> getMapTree() {
        return ApiResult.success(sasPatrolEventService.getMapTree());
    }

    /**
     * 获取地图详情（仅实时电子巡检 type=1008 的地图，含背景图 URL、设备点位及设备信息）
     */
    @GetMapping("/map/info")
    public ApiResult<MapInfoVo> getMapInfo(@RequestParam String mapId) {
        MapInfoVo vo = sasPatrolEventService.getMapInfo(mapId);
        return ApiResult.success(vo);
    }

    /**
     * 修改地图（仅实时电子巡检 type=1008 的地图）
     */
    @PutMapping("/map/{id}")
    public ApiResult<Void> updateMap(@PathVariable("id") String id, @RequestBody MapSaveRequest request) {
        sasPatrolEventService.updateMap(id, request);
        return ApiResult.success();
    }

    /**
     * 删除地图（仅实时电子巡检 type=1008 的地图）
     */
    @DeleteMapping("/map/{id}")
    public ApiResult<Void> deleteMap(@PathVariable("id") String id) {
        sasPatrolEventService.deleteMap(id);
        return ApiResult.success();
    }

    @Data
    public static class AddMapResponse {
        private String id;
    }
}
