package pwc.taxtech.atms.controller; import javassist.tools.web.BadHttpRequest; import org.apache.commons.lang3.StringUtils; 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.PathVariable; 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.AnalyticsModelDetail; import pwc.taxtech.atms.dpo.FinancialStatementDetail; import pwc.taxtech.atms.dpo.TaxReturnDetail; import pwc.taxtech.atms.dto.AddKeyValueConfigDto; import pwc.taxtech.atms.dto.Common.RemoteValidationRetDto; import pwc.taxtech.atms.dto.KeyValueConfigDisplayDto; import pwc.taxtech.atms.dto.OperationResultDto; import pwc.taxtech.atms.dto.UpdateKeyValueConfigDto; import pwc.taxtech.atms.dto.formula.FormulaConfigDto; import pwc.taxtech.atms.service.impl.KeyValueConfigServiceImpl; import pwc.taxtech.atms.service.impl.TemplateFormulaServiceImpl; import java.util.List; @RestController @RequestMapping("/api/v1/keyValueConfig") public class KeyValueConfigController { private static final Logger logger = LoggerFactory.getLogger(EnterpriseAccountManagerController.class); @Autowired private KeyValueConfigServiceImpl keyValueConfigService; @Autowired private TemplateFormulaServiceImpl templateFormulaService; // @ApiOperation(value = "get keyValueConfig") @RequestMapping(value = "", method = RequestMethod.GET) public @ResponseBody List<KeyValueConfigDisplayDto> get() { return keyValueConfigService.get(); } @RequestMapping(value = "dataSource", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_UTF8_VALUE) public @ResponseBody OperationResultDto<List<FormulaConfigDto>> getDataSource() { return keyValueConfigService.getAllFormulaList(); } @RequestMapping(value = "getFinacialReference/{keyValueId}", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_UTF8_VALUE) public @ResponseBody List<FinancialStatementDetail> getFinacialStatementReference(@PathVariable String keyValueId) throws BadHttpRequest { if (StringUtils.isBlank(keyValueId)) { throw new BadHttpRequest(new Exception("keyValueId is null")); } return keyValueConfigService.getFinacialStatement(keyValueId); } @RequestMapping(value = "getTaxReference/{keyValueId}", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_UTF8_VALUE) public @ResponseBody List<TaxReturnDetail> getTaxReturnReference(@PathVariable String keyValueId) throws BadHttpRequest { if (StringUtils.isBlank(keyValueId)) { throw new BadHttpRequest(new Exception("keyValueId is null")); } return keyValueConfigService.getTaxReturn(keyValueId); } @RequestMapping(value = "getModelReference/{keyValueId}", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_UTF8_VALUE) public @ResponseBody List<AnalyticsModelDetail> getAnalyticsModelReference(@PathVariable String keyValueId) throws BadHttpRequest { if (StringUtils.isBlank(keyValueId)) { throw new BadHttpRequest(new Exception("keyValueId is null")); } return keyValueConfigService.getAnalyticsModel(keyValueId); } @RequestMapping(value = "add", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_UTF8_VALUE) public void addKeyValueConfiguration(@RequestBody AddKeyValueConfigDto addKeyValueConfigDto) { //todo: add userName @ here addKeyValueConfigDto.setUserName(""); keyValueConfigService.addKeyValueConfiguration(addKeyValueConfigDto); } @RequestMapping(value = "update", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_UTF8_VALUE) public void updateKeyValueConfiguration(@RequestBody UpdateKeyValueConfigDto updateKeyValueConfigDto) { //todo: add userName @ here updateKeyValueConfigDto.setUserName(""); keyValueConfigService.updateKeyValueConfiguration(updateKeyValueConfigDto); } @RequestMapping(method = RequestMethod.DELETE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE) public @ResponseBody int delelte(@RequestParam("keyValueID") String keyValueId) throws BadHttpRequest { if (StringUtils.isBlank(keyValueId)) { throw new BadHttpRequest(new Exception("keyValueId is null")); } return keyValueConfigService.deleteKeyValueConfiguration(keyValueId); } @RequestMapping(value = "getByOrgId/{orgId}", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_UTF8_VALUE) public @ResponseBody List<KeyValueConfigDisplayDto> getByOrgId(@PathVariable String orgId) { return keyValueConfigService.getByOrgId(orgId); } @RequestMapping(value = "isDuplicated", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_UTF8_VALUE) public @ResponseBody RemoteValidationRetDto isDuplicated(@RequestParam String value) { boolean isDuplicated = keyValueConfigService.isKeyValueDuplicated(value); RemoteValidationRetDto result = new RemoteValidationRetDto(); result.setIsValid(!isDuplicated); result.setValue(value); return result; } @RequestMapping(value = "isFormulaValid", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_UTF8_VALUE) public @ResponseBody RemoteValidationRetDto isFormulaValid(@RequestParam String value) { OperationResultDto validateResult = templateFormulaService.validate(value); RemoteValidationRetDto result = new RemoteValidationRetDto(); result.setIsValid(validateResult.getResult()); result.setValue(value); return result; } }