@Transactional @Security.Authenticated(Secured.class) public static Result cadastrarDica(long idTema) { DynamicForm filledForm = Form.form().bindFromRequest(); Map<String, String> formMap = filledForm.data(); // long idTema = Long.parseLong(formMap.get("idTema")); Tema tema = dao.findByEntityId(Tema.class, idTema); String userName = session("username"); if (filledForm.hasErrors()) { return tema(idTema); } else { String tipoKey = formMap.get("tipo"); switch (tipoKey) { case "assunto": String assunto = formMap.get("assunto"); DicaAssunto dicaAssunto = new DicaAssunto(assunto); tema.addDica(dicaAssunto); dicaAssunto.setTema(tema); dicaAssunto.setUser(userName); dao.persist(dicaAssunto); break; case "conselho": String conselho = formMap.get("conselho"); DicaConselho dicaConselho = new DicaConselho(conselho); tema.addDica(dicaConselho); dicaConselho.setTema(tema); dicaConselho.setUser(userName); dao.persist(dicaConselho); break; case "disciplina": String disciplinas = formMap.get("disciplinas"); String razao = formMap.get("razao"); DicaDisciplina dicaDisciplina = new DicaDisciplina(disciplinas, razao); tema.addDica(dicaDisciplina); dicaDisciplina.setTema(tema); dicaDisciplina.setUser(userName); dao.persist(dicaDisciplina); break; case "material": String url = formMap.get("url"); DicaMaterial dicaMaterial = new DicaMaterial(url); tema.addDica(dicaMaterial); dicaMaterial.setTema(tema); dicaMaterial.setUser(userName); dao.persist(dicaMaterial); break; default: break; } dao.merge(tema); dao.flush(); return redirect(routes.Application.tema(idTema)); } }
/** * Action para o cadastro de uma metadica em uma disciplina. * * @param idDisciplina O id da {@code Disciplina}. * @return O Result do POST, redirecionando para a página da Disciplina caso o POST tenha sido * concluído com sucesso. */ @Transactional @Security.Authenticated(Secured.class) public static Result cadastrarMetaDica(long idDisciplina) { DynamicForm filledForm = Form.form().bindFromRequest(); Map<String, String> formMap = filledForm.data(); String comment = formMap.get("comentario"); Disciplina disciplina = dao.findByEntityId(Disciplina.class, idDisciplina); String userName = session("username"); if (filledForm.hasErrors()) { return disciplinaErro(disciplina); } else { MetaDica metaDica = new MetaDica(disciplina, userName, comment); Map<String, String[]> map = request().body().asFormUrlEncoded(); String[] checkedDicas = map.get("dica"); String[] checkedMetaDicas = map.get("metadica"); if (checkedDicas == null && checkedMetaDicas == null) { return disciplinaErro(disciplina); } if (checkedDicas != null) { List<String> listaIdDicas = Arrays.asList(checkedDicas); for (String id : listaIdDicas) { Long idDica = Long.parseLong(id); Dica checkedDica = dao.findByEntityId(Dica.class, idDica); if (checkedDica != null) { metaDica.addDica(checkedDica); checkedDica.addMetaDica(metaDica); dao.merge(checkedDica); } } } if (checkedMetaDicas != null) { List<String> listaIdMetaDicas = Arrays.asList(checkedMetaDicas); for (String id : listaIdMetaDicas) { Long idMetaDica = Long.parseLong(id); MetaDica checkedMetaDica = dao.findByEntityId(MetaDica.class, idMetaDica); if (checkedMetaDica != null) { metaDica.addMetaDica(checkedMetaDica); dao.merge(checkedMetaDica); } } } disciplina.addMetaDica(metaDica); dao.persist(metaDica); dao.merge(disciplina); dao.flush(); return redirect(routes.Application.disciplina(metaDica.getDisciplina().getId())); } }