package pwc.taxtech.atms.controller;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
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.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import pwc.taxtech.atms.common.CommonUtils;
import pwc.taxtech.atms.common.OperateLogType;
import pwc.taxtech.atms.common.OperationAction;
import pwc.taxtech.atms.common.OperationModule;
import pwc.taxtech.atms.dto.OperationLogDto;
import pwc.taxtech.atms.dto.PagingResultDto;
import pwc.taxtech.atms.dto.QueryOperateParamDto;
import pwc.taxtech.atms.service.impl.OperationLogServiceImpl;
import pwc.taxtech.atms.vat.entity.VatOperationLog;

import java.util.Date;

@RestController
@RequestMapping("/api/v1/operationlog/")
public class OperationLogController {

    private static Logger logger = LoggerFactory.getLogger(OperationLogController.class);

    @Autowired
    private OperationLogServiceImpl operationLogService;

//    @ApiOperation(value = "查询日志")
//    @ApiImplicitParam(name = "queryOperateParamDto", value = "queryOperateParamDto", required = true, dataType = "QueryOperateParamDto")
    @RequestMapping(value = "getorgloglist", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    public @ResponseBody
    PagingResultDto<OperationLogDto> getOperationLogList(@RequestBody QueryOperateParamDto queryOperateParamDto) {
        logger.debug("OperationLogController /getorgloglist");
        return operationLogService.getOperationLogList(queryOperateParamDto);
    }

//    @ApiOperation(value = "添加进入项目日志")
    @RequestMapping(value = "addEnterProjectLog/{userName}", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    public void addEnterProjectLog(String userName, String logContent) {
        OperationLogDto dto = new OperationLogDto();
        dto.setAction(OperationAction.EnterProject.value());
        dto.setComment("");
        dto.setCreateTime(new Date());
        dto.setLogType(OperateLogType.OperationLogUser.value());
        dto.setModule(OperationModule.User.value());
        dto.setOperationContent(logContent);
        dto.setOperationObject(userName);
        dto.setOperationUser(userName);
        //operationLogService.addLog(dto);
    }

    @RequestMapping(value = "addOperationLog", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    public Boolean addOperationLog(VatOperationLog vatOperationLog) {
        OperationLogDto operationLogDto = new OperationLogDto();
        CommonUtils.copyProperties(vatOperationLog, operationLogDto);
//        operationLogService.addOperationLog(operationLogDto);
        return true;
    }
}