Răsfoiți Sursa

Merge branch 'usuarios-y-procedures' of UV-APPS/UV_SAIC_CORE into master

Mario Martínez Hernández 1 lună în urmă
părinte
comite
58d73969f4

+ 32 - 0
src/main/java/es/uv/saic/dto/ProcedureRequestDTO.java

@@ -0,0 +1,32 @@
+package es.uv.saic.dto;
+
+import java.util.List;
+
+public class ProcedureRequestDTO {
+    private ProcesDTO proces;
+    private List<TascaDTO> tasques;
+
+    public ProcedureRequestDTO() {}
+
+    public ProcedureRequestDTO(ProcesDTO proces, List<TascaDTO> tasques) {
+        this.proces = proces;
+        this.tasques = tasques;
+    }
+
+    public ProcesDTO getProces() {
+        return proces;
+    }
+
+    public void setProces(ProcesDTO proces) {
+        this.proces = proces;
+    }
+
+    public List<TascaDTO> getTasques() {
+        return tasques;
+    }
+
+    public void setTasques(List<TascaDTO> tasques) {
+        this.tasques = tasques;
+    }
+    
+}

+ 10 - 1
src/main/java/es/uv/saic/dto/TascaDTO.java

@@ -24,6 +24,7 @@ public class TascaDTO {
     private Integer idRol;
     private String nomRol;
     private Boolean informe;
+    private Integer idPlantilla;
 
     public TascaDTO() {
     }
@@ -31,7 +32,7 @@ public class TascaDTO {
     public TascaDTO(Integer idTasca, String codiEvidencia, String dataLim, String descripcioCas, String descripcioVal,
             Integer idTascaSeg, Integer idTascaSeg2, Integer idTascap, Integer idTipus, String nomTipus,
             String nomEvidenciaCas, String nomEvidenciaVal, String titolCas, String titolVal, String opcions,
-            Integer idRol, String nomRol, Boolean informe) {
+            Integer idRol, String nomRol, Boolean informe, Integer idPlantilla) {
         this.idTasca = idTasca;
         this.codiEvidencia = codiEvidencia;
         this.dataLim = dataLim;
@@ -50,6 +51,7 @@ public class TascaDTO {
         this.idRol = idRol;
         this.nomRol = nomRol;
         this.informe = informe;
+        this.idPlantilla = idPlantilla;
     }
 
     public TascaDTO(Tasca tasca) {
@@ -226,4 +228,11 @@ public class TascaDTO {
         this.informe = informe;
     }
     
+    public Integer getIdPlantilla() {
+        return idPlantilla;
+    }
+
+    public void setIdPlantilla(Integer idPlantilla) {
+        this.idPlantilla = idPlantilla; 
+    }
 }

+ 14 - 11
src/main/java/es/uv/saic/feign/PlantillaClient.java

@@ -16,30 +16,33 @@ import es.uv.saic.dto.TemplateDataDTO;
 @FeignClient(name = "saic-docs-service", contextId = "plantilla-controller")
 public interface PlantillaClient {
 
-    @GetMapping("/plantillas")
+    //Se usa
+    @GetMapping("/plantilla")
     List<Plantilla> findAll();
 
-    @GetMapping("/plantillas/{id}")
+    //Se usa
+    @GetMapping("/plantilla/{id}")
     Plantilla findByID(@PathVariable("id") Integer id);
 
-    @GetMapping("/plantillas/{versio}/{codi}/{ambit}")
+    @GetMapping("/plantilla/{versio}/{codi}/{ambit}")
     Plantilla findByVersioCodiAmbit(@PathVariable("versio") Integer versio, @PathVariable("codi") String codi, @PathVariable("ambit") String ambit);
 
-    @PostMapping("/plantillas/save")
+    @PostMapping("/plantilla")
     String save(@RequestBody Plantilla plantilla);
 
-    @DeleteMapping("/plantillas/delete")
+    @DeleteMapping("/plantilla")
     String delete(@RequestBody Plantilla plantilla);
 
-    @GetMapping("/plantillas/used/{id}")
-    boolean isUsed(@PathVariable("id") Integer id);
+    @GetMapping("/plantilla/used/{id}")
+    Boolean isUsed(@PathVariable("id") Integer id);
 
-    @PostMapping("/addTemplateData")
+    @PostMapping("/plantilla/addTemplateData")
     String addTemplateData(@RequestBody TemplateDataDTO td);
 
-    @PostMapping("/addTemplateData2")
+    //Se usa
+    @PostMapping("/plantilla/addTemplateData2")
     String addTemplateData2(@RequestBody TemplateDataDTO td);
 
-    @PostMapping("/savePDF")
-    public String savePDF(@RequestBody PdfDTO pdf);
+    @PostMapping("/plantilla/savePDF")
+    String savePDF(@RequestBody PdfDTO pdf);
 }

+ 131 - 178
src/main/java/es/uv/saic/web/AdminController.java

@@ -25,6 +25,7 @@ import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
@@ -42,6 +43,9 @@ import es.uv.saic.domain.Rol;
 import es.uv.saic.domain.Tasca;
 import es.uv.saic.domain.Usuari;
 import es.uv.saic.domain.UsuarisRol;
+import es.uv.saic.dto.ProcedureRequestDTO;
+import es.uv.saic.dto.ProcesDTO;
+import es.uv.saic.dto.TascaDTO;
 import es.uv.saic.feign.IndicadorClient;
 import es.uv.saic.service.AcreditacioService;
 import es.uv.saic.service.EmailService;
@@ -55,6 +59,7 @@ import es.uv.saic.service.TascaService;
 import es.uv.saic.service.TipusService;
 import es.uv.saic.service.UsuariService;
 import es.uv.saic.service.UsuarisRolService;
+import tools.jackson.databind.ObjectMapper;
 
 @RestController
 @RequestMapping("/admin")
@@ -471,171 +476,151 @@ public class AdminController {
 		}
 	}
 
-	// POST para la creación de un procedimiento nuevo
-	@PutMapping("/procedures")
-	public void newProcedure(@RequestParam Map<String, String> params,
-			@RequestParam(name = "idTascap[]", required = false) List<String> idTascap,
-			@RequestParam(name = "dataLimit[]", required = false) List<String> dataLimit,
-			@RequestParam(name = "tipus[]", required = false) List<String> tipus,
-			@RequestParam(name = "codiEvidencia[]", required = false) List<String> codiEvidencia,
-			@RequestParam(name = "idTascaSeg[]", required = false) List<String> idTascaSeg,
-			@RequestParam(name = "idTascaSeg2[]", required = false) List<String> idTascaSeg2,
-			@RequestParam(name = "opcions[]", required = false) List<String> opcions,
-			@RequestParam(name = "idRol[]", required = false) List<String> idRol,
-			@RequestParam(name = "titolCas[]", required = false) List<String> titolCas,
-			@RequestParam(name = "titolVal[]", required = false) List<String> titolVal,
-			@RequestParam(name = "descripcioCas[]", required = false) List<String> descripcioCas,
-			@RequestParam(name = "descripcioVal[]", required = false) List<String> descripcioVal,
-			@RequestParam(name = "nomEvidenciaCas[]", required = false) List<String> nomEvidenciaCas,
-			@RequestParam(name = "nomEvidenciaVal[]", required = false) List<String> nomEvidenciaVal,
-			@RequestParam(name = "idPlantilla[]", required = false) List<String> idPlantilla,
-			@RequestParam(name = "informe[]", required = false) List<Boolean> informe)
-			throws NumberFormatException, ParseException {
-
+	// PUT para la creación de un procedimiento nuevo
+	@PutMapping("/procedure")
+	public void newProcedure(@RequestBody ProcedureRequestDTO request) {
 		DateTimeFormatter formatter = DateTimeFormatter.ofPattern(DDMMYYYY);
+		ProcesDTO procesDTO = request.getProces();
+		List<TascaDTO> tasquesDTO = request.getTasques();
+
 		Proces p = new Proces();
-		p.setIdProces(Integer.parseInt(params.get("idProces")));
-		p.setNomProces(params.get("nomProces"));
-		p.setVersio(params.get("versio"));
-		p.setComentaris(params.get("comentaris"));
-		p.setSubTitol(params.get("subTitol"));
-		p.setAmbit(params.get("ambit"));
-		p.setTitolCas(params.get("titolCas").equals(".") ? "" : params.get("titolCas"));
-		p.setTitolVal(params.get("titolVal").equals(".") ? "" : params.get("titolVal"));
-		p.setDescripcioCas(params.get("descripcioCas").equals(".") ? "" : params.get("descripcioCas"));
-		p.setDescripcioVal(params.get("descripcioVal").equals(".") ? "" : params.get("descripcioVal"));
-		p.setCursActivacio(Integer.parseInt(params.get("cursActivacio")));
-		p.setCursAvaluat(Integer.parseInt(params.get("cursAvaluat")));
+		p.setIdProces(procesDTO.getIdProces());
+		p.setNomProces(procesDTO.getNomProces());
+		p.setVersio(procesDTO.getVersio());
+		p.setComentaris(procesDTO.getComentaris());
+		p.setSubTitol(procesDTO.getSubTitol());
+		p.setAmbit(procesDTO.getAmbit());
+		p.setTitolCas(procesDTO.getTitolCas());
+		p.setTitolVal(procesDTO.getTitolVal());
+		p.setDescripcioCas(procesDTO.getDescripcioCas());
+		p.setDescripcioVal(procesDTO.getDescripcioVal());
+		p.setCursActivacio(procesDTO.getCursActivacio());
+		p.setCursAvaluat(procesDTO.getCursAvaluat());
 
 		ps.save(p);
 
-		if (idTascaSeg != null) {
-			for (Integer i = 0; i < idTascap.size(); i++) {
+		if (tasquesDTO != null && !tasquesDTO.isEmpty()) {
+			for (TascaDTO tDto : tasquesDTO) {
 				Tasca t = new Tasca();
-				t.setIdTasca((p.getIdProces() * 10000) + Integer.parseInt(idTascap.get(i)));
+				t.setIdTasca((p.getIdProces() * 10000) + tDto.getIdTascap());
 				t.setProces(p);
-				t.setIdTascap(Integer.parseInt(idTascap.get(i)));
-				t.setIdTascaSeg(Integer.parseInt(idTascaSeg.get(i)));
-				t.setIdTascaSeg2(idTascaSeg2.get(i).equals(".") ? null : Integer.parseInt(idTascaSeg2.get(i)));
-				t.setOpcions(opcions.get(i));
-				t.setTitolCas(titolCas.get(i).equals(".") ? "" : titolCas.get(i).replace("[comma]", ","));
-				t.setDescripcioCas(
-						descripcioCas.get(i).equals(".") ? "" : descripcioCas.get(i).replace("[comma]", ","));
-				t.setTitolVal(titolVal.get(i).equals(".") ? "" : titolVal.get(i).replace("[comma]", ","));
-				t.setDescripcioVal(
-						descripcioVal.get(i).equals(".") ? "" : descripcioVal.get(i).replace("[comma]", ","));
-				t.setNomEvidenciaCas(
-						nomEvidenciaCas.get(i).equals(".") ? "" : nomEvidenciaCas.get(i).replace("[comma]", ","));
-				t.setNomEvidenciaVal(
-						nomEvidenciaVal.get(i).equals(".") ? "" : nomEvidenciaVal.get(i).replace("[comma]", ","));
-				t.setDataLim(LocalDate.parse(dataLimit.get(i), formatter));
-				t.setTipus(tps.findOne(Integer.parseInt(tipus.get(i))));
-				if (t.getTipus().getTipus() == 11 || t.getTipus().getTipus() == 15) {
-					t.setCodiEvidencia(idPlantilla.get(i));
-				} else {
-					t.setCodiEvidencia(
-							codiEvidencia.get(i).equals(".") ? "" : codiEvidencia.get(i).replace("[comma]", ","));
+				t.setIdTascap(tDto.getIdTascap());
+				t.setIdTascaSeg(tDto.getIdTascaSeg());
+				t.setIdTascaSeg2(tDto.getIdTascaSeg2());
+				t.setOpcions(tDto.getOpcions());
+				t.setTitolCas(limpiarTexto(tDto.getTitolCas()));
+				t.setDescripcioCas(limpiarTexto(tDto.getDescripcioCas()));
+				t.setTitolVal(limpiarTexto(tDto.getTitolVal()));
+				t.setDescripcioVal(limpiarTexto(tDto.getDescripcioVal()));
+				t.setNomEvidenciaCas(limpiarTexto(tDto.getNomEvidenciaCas()));
+				t.setNomEvidenciaVal(limpiarTexto(tDto.getNomEvidenciaVal()));
+				if (tDto.getDataLim() != null && !tDto.getDataLim().isEmpty()) {
+					t.setDataLim(LocalDate.parse(tDto.getDataLim(), formatter));
+				}
+				if (tDto.getIdTipus() != null) {
+					t.setTipus(tps.findOne(tDto.getIdTipus()));
+					
+					if (t.getTipus().getTipus() == 11 || t.getTipus().getTipus() == 15) {
+						// Si es plantilla, usamos el idPlantilla del DTO
+						t.setCodiEvidencia(tDto.getIdPlantilla() != null ? tDto.getIdPlantilla().toString() : "");
+					} else {
+						t.setCodiEvidencia(limpiarTexto(tDto.getCodiEvidencia()));
+					}
 				}
 
-				t.setRol(rs.findOne(Integer.parseInt(idRol.get(i))));
-				t.setInforme(informe.get(i));
+				if (tDto.getIdRol() != null) {
+					t.setRol(rs.findOne(tDto.getIdRol()));
+				}
+            	t.setInforme(tDto.getInforme() != null ? tDto.getInforme() : false);
 
 				ts.save(t);
 			}
 		}
 	}
 
-	// POST para editar un procedimiento ya existente
 	@PostMapping("/procedure")
-	public void editProcedure(@RequestParam Map<String, String> params,
-			@RequestParam(name = "idTascap[]", required = false) List<String> idTascap,
-			@RequestParam(name = "dataLimit[]", required = false) List<String> dataLimit,
-			@RequestParam(name = "tipus[]", required = false) List<String> tipus,
-			@RequestParam(name = "codiEvidencia[]", required = false) List<String> codiEvidencia,
-			@RequestParam(name = "idTascaSeg[]", required = false) List<String> idTascaSeg,
-			@RequestParam(name = "idTascaSeg2[]", required = false) List<String> idTascaSeg2,
-			@RequestParam(name = "opcions[]", required = false) List<String> opcions,
-			@RequestParam(name = "idRol[]", required = false) List<String> idRol,
-			@RequestParam(name = "titolCas[]", required = false) List<String> titolCas,
-			@RequestParam(name = "titolVal[]", required = false) List<String> titolVal,
-			@RequestParam(name = "descripcioCas[]", required = false) List<String> descripcioCas,
-			@RequestParam(name = "descripcioVal[]", required = false) List<String> descripcioVal,
-			@RequestParam(name = "nomEvidenciaCas[]", required = false) List<String> nomEvidenciaCas,
-			@RequestParam(name = "nomEvidenciaVal[]", required = false) List<String> nomEvidenciaVal,
-			@RequestParam(name = "idPlantilla[]", required = false) List<String> idPlantilla,
-			@RequestParam(name = "informe[]", required = false) List<Boolean> informe)
-			throws NumberFormatException, ParseException {
-
+	public void editProcedure(@RequestBody ProcedureRequestDTO request) {
 		DateTimeFormatter formatter = DateTimeFormatter.ofPattern(DDMMYYYY);
-		Proces p = ps.findByID(Integer.parseInt(params.get("idProces")));
-		p.setNomProces(params.get("nomProces"));
-		p.setVersio(params.get("versio"));
-		p.setComentaris(params.get("comentaris"));
-		p.setSubTitol(params.get("subTitol"));
-		p.setAmbit(params.get("ambit"));
-		p.setTitolCas(params.get("titolCas").equals(".") ? "" : params.get("titolCas"));
-		p.setTitolVal(params.get("titolVal").equals(".") ? "" : params.get("titolVal"));
-		p.setDescripcioCas(params.get("descripcioCas").equals(".") ? "" : params.get("descripcioCas"));
-		p.setDescripcioVal(params.get("descripcioVal").equals(".") ? "" : params.get("descripcioVal"));
-		p.setCursActivacio(Integer.parseInt(params.get("cursActivacio")));
-		p.setCursAvaluat(Integer.parseInt(params.get("cursAvaluat")));
-
+		ProcesDTO procesDTO = request.getProces();
+		List<TascaDTO> tasquesDTO = request.getTasques();
+
+		Proces p = ps.findByID(procesDTO.getIdProces());
+		p.setNomProces(procesDTO.getNomProces());
+		p.setVersio(procesDTO.getVersio());
+		p.setComentaris(procesDTO.getComentaris());
+		p.setSubTitol(procesDTO.getSubTitol());
+		p.setAmbit(procesDTO.getAmbit());
+		p.setTitolCas(procesDTO.getTitolCas());
+		p.setTitolVal(procesDTO.getTitolVal());
+		p.setDescripcioCas(procesDTO.getDescripcioCas());
+		p.setDescripcioVal(procesDTO.getDescripcioVal());
+		p.setCursActivacio(procesDTO.getCursActivacio());
+		p.setCursAvaluat(procesDTO.getCursAvaluat());
 		ps.save(p);
 
-		if (idTascaSeg != null) {
-			for (Tasca t : ts.findByProces(p.getIdProces())) {
-				if (!idTascap.contains(Integer.toString(t.getIdTascap()))) {
-					ts.delete(t);
-				}
+		List<Tasca> tasquesActuals = ts.findByProces(p.getIdProces());
+		List<Integer> idsTasquesNoves = tasquesDTO.stream()
+				.map(TascaDTO::getIdTascap)
+				.toList();
+
+		for (Tasca t2 : tasquesActuals) {
+			if (!idsTasquesNoves.contains(t2.getIdTascap())) {
+				ts.delete(t2);
 			}
+		}
 
-			for (Integer i = 0; i < idTascap.size(); i++) {
-				Tasca t;
-				try {
-					t = ts.getByID((p.getIdProces() * 10000) + Integer.parseInt(idTascap.get(i)));
-					if (t == null) {
-						t = new Tasca();
-						t.setIdTasca((p.getIdProces() * 10000) + Integer.parseInt(idTascap.get(i)));
-						t.setProces(p);
-						t.setIdTascap(Integer.parseInt(idTascap.get(i)));
-					}
-				} catch (Exception e) {
-					t = new Tasca();
-					t.setIdTasca((p.getIdProces() * 10000) + Integer.parseInt(idTascap.get(i)));
-					t.setProces(p);
-					t.setIdTascap(Integer.parseInt(idTascap.get(i)));
+		for (TascaDTO tDto : tasquesDTO) {
+			if (tDto.getIdTascaSeg() != null) {
+				int idCalculat = (int) (p.getIdProces() * 10000) + tDto.getIdTascap();
+				
+				Tasca tasca = ts.getByID(idCalculat);
+				if (tasca == null) {
+					tasca = new Tasca();
+					tasca.setIdTasca(idCalculat);
+					tasca.setProces(p);
+					tasca.setIdTascap(tDto.getIdTascap());
+				}
+				tasca.setIdTascaSeg(tDto.getIdTascaSeg());
+				tasca.setIdTascaSeg2(tDto.getIdTascaSeg2());
+				tasca.setOpcions(tDto.getOpcions());
+				tasca.setTitolCas(limpiarTexto(tDto.getTitolCas()));
+				tasca.setTitolVal(limpiarTexto(tDto.getTitolVal()));
+				tasca.setDescripcioCas(limpiarTexto(tDto.getDescripcioCas()));
+				tasca.setDescripcioVal(limpiarTexto(tDto.getDescripcioVal()));
+				tasca.setNomEvidenciaCas(limpiarTexto(tDto.getNomEvidenciaCas()));
+				tasca.setNomEvidenciaVal(limpiarTexto(tDto.getNomEvidenciaVal()));
+
+				if (tDto.getDataLim() != null && !tDto.getDataLim().isEmpty()) {
+					tasca.setDataLim(LocalDate.parse(tDto.getDataLim(), formatter));
 				}
 
-				t.setIdTascaSeg(Integer.parseInt(idTascaSeg.get(i)));
-				t.setIdTascaSeg2(idTascaSeg2.get(i).equals(".") ? null : Integer.parseInt(idTascaSeg2.get(i)));
-				t.setOpcions(opcions.get(i));
-				t.setTitolCas(titolCas.get(i).equals(".") ? "" : titolCas.get(i).replace("[comma]", ","));
-				t.setDescripcioCas(
-						descripcioCas.get(i).equals(".") ? "" : descripcioCas.get(i).replace("[comma]", ","));
-				t.setTitolVal(titolVal.get(i).equals(".") ? "" : titolVal.get(i).replace("[comma]", ","));
-				t.setDescripcioVal(
-						descripcioVal.get(i).equals(".") ? "" : descripcioVal.get(i).replace("[comma]", ","));
-				t.setNomEvidenciaCas(
-						nomEvidenciaCas.get(i).equals(".") ? "" : nomEvidenciaCas.get(i).replace("[comma]", ","));
-				t.setNomEvidenciaVal(
-						nomEvidenciaVal.get(i).equals(".") ? "" : nomEvidenciaVal.get(i).replace("[comma]", ","));
-				t.setDataLim(LocalDate.parse(dataLimit.get(i), formatter));
-				t.setTipus(tps.findOne(Integer.parseInt(tipus.get(i))));
-				if (t.getTipus().getTipus() == 11 || t.getTipus().getTipus() == 15) {
-					t.setCodiEvidencia(idPlantilla.get(i));
+				if (tDto.getIdTipus() != null) {
+					tasca.setTipus(tps.findOne(tDto.getIdTipus()));
+				}
+
+				if (tasca.getTipus() != null && (tasca.getTipus().getTipus() == 11 || tasca.getTipus().getTipus() == 15)) {
+					tasca.setCodiEvidencia(tDto.getIdPlantilla() != null ? tDto.getIdPlantilla().toString() : "");
 				} else {
-					t.setCodiEvidencia(
-							codiEvidencia.get(i).equals(".") ? "" : codiEvidencia.get(i).replace("[comma]", ","));
+					tasca.setCodiEvidencia(limpiarTexto(tDto.getCodiEvidencia()));
 				}
-				t.setRol(rs.findOne(Integer.parseInt(idRol.get(i))));
-				t.setInforme(informe.get(i));
-				ts.save(t);
+
+				tasca.setRol(rs.findOne(tDto.getIdRol()));
+				tasca.setInforme(tDto.getInforme() != null ? tDto.getInforme() : false);
+				
+				ts.save(tasca);
 			}
 		}
 	}
 
+	private String limpiarTexto(String texto) {
+		if (texto == null || texto.equals(".")) {
+			return "";
+		}
+		return texto.replace("[comma]", ",");
+	}
+
 	// DELETE que elimina un procedimiento
-	@DeleteMapping("/procedures")
+	@DeleteMapping("/procedure")
 	public void removeProcedure(@RequestParam("idProces") Integer idProces) {
 		Proces p = ps.findByID(idProces);
 		for (Tasca t : ts.findByProces(p.getIdProces())) {
@@ -646,10 +631,11 @@ public class AdminController {
 
 	// POST que le eliminar un usuario concreto del sitema
 	@DeleteMapping("/userrole")
-	public HashMap<String, Object> removeUserrole(@RequestParam("idRol") Integer idRol,
+	public boolean removeUserrole(@RequestParam("idRol") Integer idRol,
 			@RequestParam("usuari") String usuari,
 			@RequestParam("lugar") Integer lugar, @RequestParam("tlugar") String tlugar) throws IOException {
-		HashMap<String, Object> map = new HashMap<>();
+		
+		usuari = usuari.split(",")[0];
 
 		UsuarisRol u = urs.findActive(idRol, usuari, lugar, tlugar);
 		if (u != null) {
@@ -658,30 +644,17 @@ public class AdminController {
 			urs.save(u);	
 		}
 
-		List<Integer> respCentres = new ArrayList<Integer>();
-		List<Integer> respTitulacions = new ArrayList<Integer>();
-		if (tlugar.equals("C")) {
-			respCentres.add(lugar);
-			map.put("respCentres", respCentres);
-			map.put("respTitulacions", respTitulacions);
-		} else {
-			Organ titulacio = os.findByID(tlugar, lugar);
-			respCentres.add(titulacio.getOrgan().getId().getLugar());
-			respTitulacions.add(titulacio.getId().getLugar());
-			map.put("respCentres", respCentres);
-			map.put("respTitulacions", respTitulacions);
-		}
-
-		return map;
+		return urs.findActive(idRol, usuari, lugar, tlugar) == null ? true : false;
 	}
 
 	// PUT para añadir un nuevo usuario al sistema
 	@PutMapping("/userrole")
-	public HashMap<String, Object> newUserrole(@RequestParam("idRol") Integer idRol,
+	public boolean newUserrole(@RequestParam("idRol") Integer idRol,
 			@RequestParam(name = "usuari", required = false) String usuari, @RequestParam("centre") Integer idCentre,
 			@RequestParam(name = "titulacio", required = false) Integer idTitulacio,
-			@RequestParam Map<String, String> params) throws IOException {
-		HashMap<String, Object> map = new HashMap<>();
+			@RequestParam Map<String, String> params) {
+		
+		usuari = usuari.split(",")[0];
 
 		if (usuari == null && params.get("username") != null) {
 			Usuari x = new Usuari();
@@ -697,7 +670,6 @@ public class AdminController {
 		Rol rol = rs.findOne(idRol);
 		Integer lugar = null;
 		String tlugar = null;
-		boolean exists = false;
 		if (rol.getAmbit().equals("U") || (rol.getAmbit().equals("C"))) {
 			lugar = idCentre;
 			tlugar = "C";
@@ -716,8 +688,6 @@ public class AdminController {
 					r.setSupervisor(0);
 					r.setNum(num + 1);
 					urs.save(r);
-				} else {
-					exists = true;
 				}
 			} else {
 				UsuarisRol r = new UsuarisRol();
@@ -732,6 +702,7 @@ public class AdminController {
 				urs.save(r);
 			}	
 		} else {
+			lugar = idTitulacio;
 			tlugar = "T";
 			UsuarisRol u = urs.findLast(idRol, usuari, idTitulacio, tlugar);
 			Integer num = urs.findLastNum(idRol, idTitulacio, tlugar);
@@ -748,8 +719,6 @@ public class AdminController {
 					r.setSupervisor(0);
 					r.setNum(num + 1);
 					urs.save(r);
-				} else {
-					exists = true;
 				}
 			} else {
 				UsuarisRol r = new UsuarisRol();
@@ -763,24 +732,8 @@ public class AdminController {
 				r.setNum(num + 1);
 				urs.save(r);
 			}
-		}
-
-		List<Integer> respCentres = new ArrayList<Integer>();
-		respCentres.add(idCentre);
-		map.put("respCentres", respCentres);
-		List<Integer> respTitulacions = new ArrayList<Integer>();
-		if (idTitulacio != null) {
-			respTitulacions.add(idTitulacio);
-		}
-		map.put("respTitulacions", respTitulacions);
-
-		if (exists) {
-			map.put("roleExists", true);
-		} else {
-			map.put("roleExists", null);
-		}
-
-		return map;
+		};
+		return urs.findActive(idRol, usuari, lugar, tlugar) != null ? true : false;
 	}
 
 	// GET que recoge todas las plantillas actuales del sistema

+ 4 - 2
src/main/java/es/uv/saic/web/ProceduresController.java

@@ -689,7 +689,9 @@ public class ProceduresController {
 	}
 
 	@GetMapping("/find/proces/{idProces}")
-	public Proces findProcesByID(@PathVariable Integer idProces) {
-		return ps.findByID(idProces);
+	public ProcesDTO findProcesByID(@PathVariable Integer idProces) {
+		Proces proces = ps.findByID(idProces);
+		return proces != null ? new ProcesDTO(proces) : null;
+
 	}
 }