package pwc.taxtech.atms.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import pwc.taxtech.atms.dpo.DimensionValueOrgDto;
import pwc.taxtech.atms.dto.OperationResultDto;
import pwc.taxtech.atms.dto.dimension.DimensinTypeOrgDto;
import pwc.taxtech.atms.dto.dimension.DimensionDto;
import pwc.taxtech.atms.dto.dimension.DimensionValueDto;
import pwc.taxtech.atms.dto.navtree.DevTreeDto;
import pwc.taxtech.atms.service.impl.DimensionServiceImpl;

import java.util.List;

@RestController
@RequestMapping("/api/v1/dimension/")
public class DimensionController {

    @Autowired
    private DimensionServiceImpl dimensionService;

//    @ApiOperation(value = "获取有效纬度、纬度值个数")
    @RequestMapping(value = "getDimensionStatics", method = RequestMethod.GET)
    public @ResponseBody
    List<DimensionDto> getDimensionStatics() {
        return dimensionService.getDimensionStatics();
    }

//    @ApiOperation(value = "获取所有维度值")
    @RequestMapping(value = "getAllDimensionList", method = RequestMethod.GET)
    public @ResponseBody
    List<DimensionDto> getAllDimensionList() {
        return dimensionService.getAllDimensionList();
    }

//    @ApiOperation(value = "获取有效纬度列表")
    @RequestMapping(value = "getDimensionList", method = RequestMethod.GET)
    public List<DimensionDto> getDimensionList() {
        return dimensionService.getDimensionList();
    }

//    @ApiOperation(value = "获取单独的维度")
    @RequestMapping(value = "getDimensionById", method = RequestMethod.GET)
    public DimensinTypeOrgDto getDimensionById(@RequestParam("id") String id) {
        return dimensionService.getDimensionById(id);
    }

//    @ApiOperation(value = "获取维度机构列表")
    @RequestMapping(value = "getAllDimensionOrgList", method = RequestMethod.GET)
    public List<DimensionValueOrgDto> getAllDimensionOrgList() {
        return dimensionService.getAllDimensionOrgList();
    }

    @SuppressWarnings("rawtypes")
//    @ApiOperation(value = "更新维度")
    @RequestMapping(value = "/updateDimension", method = RequestMethod.POST)
    public OperationResultDto updateDimension(@RequestBody DimensionDto model) {
        return dimensionService.updateDimension(model);
    }

//    @ApiOperation(value = "获取维度值列表")
    @RequestMapping(value = "getDimensionValueList", method = RequestMethod.GET)
    public List<DimensionValueDto> getDimensionValueList(@RequestParam("dimensionId") String dimensionId) {
        return dimensionService.getDimensionValueList(dimensionId);
    }

//    @ApiOperation(value = "获取有效维度列表")
    @RequestMapping(value = "getDevDimensionTreeList", method = RequestMethod.GET)
    @SuppressWarnings("rawtypes")
    public List<DevTreeDto> getDevDimensionTreeList() {
        return dimensionService.getDevDimensionTreeList();
    }

//    @ApiOperation(value = "添加维度")
    @RequestMapping(value = "/addDimension", method = RequestMethod.POST)
    @SuppressWarnings("rawtypes")
    public OperationResultDto addDimension(@RequestBody DimensionDto model) {
        return dimensionService.addDimension(model);
    }

//    @ApiOperation(value = "添加维度值")
    @RequestMapping(value = "/addDimensionValue", method = RequestMethod.POST)
    @SuppressWarnings("rawtypes")
    public OperationResultDto addDimensionValue(@RequestBody DimensionValueDto model) {
        return dimensionService.addDimensionValue(model);
    }

//    @ApiOperation(value = "更新维度值")
    @RequestMapping(value = "/updateDimensionValue", method = RequestMethod.POST)
    @SuppressWarnings("rawtypes")
    public OperationResultDto updateDimensionValue(@RequestBody DimensionValueDto model) {
        return dimensionService.updateDimensionValue(model);
    }

}