@RequestMapping( value = {"curso/{codigo}/estrutura/{id}/editar", "/{id}/editar"}, method = RequestMethod.POST) public String atualizar( @Valid EstruturaCurricular estrutura, BindingResult result, RedirectAttributes redirectAttributes, @PathVariable("id") Integer id, @PathVariable("codigo") Integer codigo, ModelMap modelMap) { Curso curso = cursoService.getCursoByCodigo(codigo); modelMap.addAttribute("curso", curso); EstruturaCurricular oldEstrutura = estruturaCurricularService.getOutraEstruturaCurricularByCodigo( estrutura.getId(), estrutura.getCodigo()); if (result.hasErrors()) { return "curso/estrutura/editar"; } estrutura.setCurso(oldEstrutura.getCurso()); estrutura.setCurriculos(oldEstrutura.getCurriculos()); estrutura.setCurso(curso); estruturaCurricularService.update(estrutura); redirectAttributes.addFlashAttribute("info", "Estrutura Curricular atualizada com sucesso"); return "redirect:/curso/" + curso.getCodigo() + "/visualizar"; }
@RequestMapping(value = "curso/{codigo}/estrutura/adicionar", method = RequestMethod.POST) public String adicionar( @Valid EstruturaCurricular estruturaCurricular, BindingResult result, @PathVariable("codigo") Integer codigo, RedirectAttributes redirectAttributes, ModelMap modelMap) { Curso curso = this.cursoService.getCursoByCodigo(codigo); modelMap.addAttribute("curso", curso); if (result.hasErrors()) { return "curso/estrutura/adicionar"; } if (estruturaCurricular.getCodigo().trim().isEmpty()) { result.rejectValue("codigo", "Repeat.estrutura.codigo", "Campo obrigatório."); return "curso/estrutura/adicionar"; } if (estruturaCurricularService.getOutraEstruturaCurricularByCodigo( curso.getCodigo(), estruturaCurricular.getCodigo()) != null) { result.rejectValue( "codigo", "Repeat.estruturas.codigo", "Ano e Semestre já existe para curso"); return "curso/estrutura/adicionar"; } estruturaCurricular.setCurso(curso); estruturaCurricular.setId(null); estruturaCurricularService.save(estruturaCurricular); redirectAttributes.addFlashAttribute("info", "Estrutura Curricular adicionada com sucesso."); return "redirect:/curso/" + curso.getCodigo() + "/visualizar"; }
@RequestMapping(value = "curso/{idCurso}/estrutura/importar", method = RequestMethod.POST) public String uploadEstruturaCurricular( @PathVariable("idCurso") Integer idCurso, @RequestParam("file") MultipartFile request, RedirectAttributes redirectAttributes) { List<String> infoCurriculo = new ArrayList<String>(); if (request == null || request.getSize() <= 0) { redirectAttributes.addFlashAttribute("error", "Arquivo obrigatório"); return "redirect:/curso/" + idCurso + "/visualizar"; } if (!request .getOriginalFilename() .substring(request.getOriginalFilename().indexOf('.')) .equals(".html")) { redirectAttributes.addFlashAttribute( "error", "Formato inválido de arquivo. Por favor selecione um arquivo HTML"); return "redirect:/curso/" + idCurso + "/visualizar"; } try { if (parserEstruturaCurricular.verificaConformidadeDocumeto(request, idCurso) == false) { redirectAttributes.addFlashAttribute( "error", "O documento enviado não apresenta uma estrutura curricular do Curso de " + cursoService.getCursoByCodigo(idCurso).getNome()); return "redirect:/curso/" + idCurso + "/visualizar"; } } catch (IOException e1) { e1.printStackTrace(); redirectAttributes.addFlashAttribute( "error", "Não foi possível o upload das informações. Por favor tente novamente"); return "redirect:/curso/" + idCurso + "/visualizar"; } try { infoCurriculo = parserEstruturaCurricular.processarArquivo(idCurso); } catch (Exception e) { System.err.println("Erro ao processar arquivo: " + e.getMessage()); return "redirect:/curso/" + idCurso + "/visualizar"; } Curso curso = cursoService.getCursoByCodigo(idCurso); if (estruturaCurricularService.getOutraEstruturaCurricularByCodigoSemestre( curso.getId(), infoCurriculo.get(0)) == null) { parserEstruturaCurricular.registrarNovaEstruturaCurricular(infoCurriculo, curso); redirectAttributes.addFlashAttribute("info", "Estrutura cadastrada com sucesso"); } else { redirectAttributes.addFlashAttribute("error", "Estrutura já cadastrada"); } return "redirect:/curso/" + idCurso + "/visualizar"; }