package pwc.taxtech.atms.controller; import java.util.List; 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.*; import io.swagger.annotations.ApiOperation; import pwc.taxtech.atms.dpo.AnalyticsModelDetail; import pwc.taxtech.atms.dpo.FinancialStatementDetail; import pwc.taxtech.atms.dpo.TaxReturnDetail; import pwc.taxtech.atms.dto.*; import pwc.taxtech.atms.dto.Common.RemoteValidationRetDto; import pwc.taxtech.atms.dto.formula.FormulaConfigDto; import pwc.taxtech.atms.service.KeyValueConfigService; import pwc.taxtech.atms.service.TemplateFormulaService; @RestController @RequestMapping("/api/v1/keyValueConfig") public class KeyValueConfigController { private static final Logger logger = LoggerFactory.getLogger(EnterpriseAccountManagerController.class); @Autowired private KeyValueConfigService keyValueConfigService; @Autowired private TemplateFormulaService 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; } }