/* * TODO: Refatorar esse código, está um lixo. Validar Subject enviado, senão vai dar exception. */ @ApiMethod( produces = APIDoc.PROD_CONSU_JSON, consumes = APIDoc.PROD_CONSU_JSON, summary = APIDoc.SUM_SAVE_KNOWLEDGE) @ApiBodyObject(clazz = KnowledgeMod.class) @RequestMapping(value = "/knowledge", method = RequestMethod.POST) public ResponseEntity saveKnowledge(@RequestBody KnowledgeMod param) { ResponseEntity responseEntity = getErrorResponse(param); if (responseEntity != null) return responseEntity; User user = null; if (Utils.verifyParamEmptyOrNull(param.idUser)) user = userService.findById(param.idUser); else if (user == null) return new ResponseEntity("Usuário inválido.", HttpStatus.UNPROCESSABLE_ENTITY); Area area = null; if (Utils.verifyParamEmptyOrNull(param.area)) { area = service.findAreaById(param.area); if (area == null) return new ResponseEntity( "Impossível localizar área com id: " + param.area, HttpStatus.UNPROCESSABLE_ENTITY); else param.name = area.getName(); } else { area = service.saveArea(new Area(param.name)); param.area = area.getId(); } Knowledge knowledge = new Knowledge(user, area); if (param.subject != null && param.subject > 0) { Subject subject = service.findSubjectById(param.subject); knowledge.setSubject(subject); } service.save(knowledge); return new ResponseEntity( param, knowledge != null ? HttpStatus.CREATED : HttpStatus.INTERNAL_SERVER_ERROR); }