Browse Source

ManagersController adapted

Drowsito 1 week ago
parent
commit
fac52a3df3

+ 12 - 2
src/main/java/es/uv/saic/dto/UsuariDTO.java

@@ -6,17 +6,20 @@ public class UsuariDTO {
     private String nom;
     private String cognoms;
     private String email;
+    private String usuari;
     
-    public UsuariDTO(String nom, String cognoms, String email) {
+    public UsuariDTO(String nom, String cognoms, String email, String usuari) {
         this.nom = nom;
         this.cognoms = cognoms;
         this.email = email;
+        this.usuari = usuari;
     }
 
     public UsuariDTO(Usuari usuari) {
         this.nom = usuari.getNom();
         this.cognoms = usuari.getCognoms();
         this.email = usuari.getEmail();
+        this.usuari = usuari.getUsuari();
     }
 
     public String getNom() {
@@ -42,6 +45,13 @@ public class UsuariDTO {
     public void setEmail(String email) {
         this.email = email;
     }
-    
+
+    public String getUsuari() {
+        return usuari;
+    }
+
+    public void setUsuari(String usuari) {
+        this.usuari = usuari;
+    }
     
 }

+ 73 - 54
src/main/java/es/uv/saic/web/ManagersController.java

@@ -10,22 +10,28 @@ import jakarta.servlet.http.HttpSession;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.mysql.cj.protocol.x.OkBuilder;
 
 import es.uv.saic.domain.Organ;
 import es.uv.saic.domain.Rol;
 import es.uv.saic.domain.Usuari;
 import es.uv.saic.domain.UsuarisRol;
+import es.uv.saic.dto.OrganDTO;
+import es.uv.saic.dto.RolDTO;
+import es.uv.saic.dto.UsuariDTO;
+import es.uv.saic.dto.UsuarisRolDTO;
 import es.uv.saic.service.OrganService;
 import es.uv.saic.service.RolService;
 import es.uv.saic.service.UsuariService;
 import es.uv.saic.service.UsuarisRolService;
 
 // Controller for the managers administration page 
-@Controller
+@RestController
 public class ManagersController {
 	
 	@Autowired
@@ -46,56 +52,64 @@ public class ManagersController {
 	 * - If there is a roleExists attribute in the session, load it too
 	 * - The view is managers.html
 	 */
-	@SuppressWarnings("unchecked")
 	@PostMapping("/managers")
-	public HashMap<String, Object> managersForm(@RequestBody Usuari usuari, HttpSession session) {
+	public HashMap<String, Object> managersForm(@RequestBody String usuari) {
 		HashMap<String, Object> model = new HashMap<>();
-		List<Organ> sup_centres;
-		List<Organ> sup_titulacions;
-		if(urs.isGrantedUser((Usuari) usuari)){
-			sup_centres = this.ors.getCentres();
-			sup_titulacions = this.ors.getTitulacions();
+		Usuari u = us.findByUsername(usuari);
+		
+		List<OrganDTO> sup_centres = new ArrayList<>();
+		List<OrganDTO> sup_titulacions = new ArrayList<>();
+		List<Organ> centres;
+		List<Organ> titulacions;
+		if(u.isGranted()){
+			centres = this.ors.getCentres();
+			titulacions = this.ors.getTitulacions();
 		}
 		else {
-			sup_centres = this.ors.getUsuariCentres((usuari).getUsuari());
-			if(sup_centres != null) {
-				if(sup_centres.size() > 0) {
-					sup_titulacions = this.ors.getTitulacionsByCentres(sup_centres);
+			centres = this.ors.getUsuariCentres(usuari);
+			if(centres != null) {
+				if(centres.size() > 0) {
+					titulacions = this.ors.getTitulacionsByCentres(centres);
 				}
 				else {
-					sup_titulacions = this.ors.getUsuariTitulacions(usuari.getUsuari());
-					for(Organ o : sup_titulacions) {
-						sup_centres.add(o.getOrgan());
+					titulacions = this.ors.getUsuariTitulacions(usuari);
+					for(Organ o : titulacions) {
+						centres.add(o.getOrgan());
 					}
 				}
 			}
 			else {
-				sup_titulacions = this.ors.getUsuariTitulacions(usuari.getUsuari());
+				titulacions = this.ors.getUsuariTitulacions(usuari);
 			}
 		}
+
+		for(Organ o : centres) {
+			sup_centres.add(new OrganDTO(o));
+		}
+
+		for(Organ o : titulacions) {
+			sup_titulacions.add(new OrganDTO(o));
+		}
+
 		model.put("sup_centres", sup_centres);
 		model.put("sup_titulacions", sup_titulacions);
 		
-		List<Usuari> users = us.findAll();
-		List<Rol> roles = rs.findAssignables();
-		model.put("users", users);
-		model.put("roles", roles);
-		
-	
-		if(session.getAttribute("respTitulacions") != null && session.getAttribute("respCentres") != null ) {
-			model.put("restoreCentres", ((List<Integer>)session.getAttribute("respCentres")).toString());
-			model.put("restoreTitulacions", ((List<Integer>)session.getAttribute("respTitulacions")).toString());
-			this.loadManagers(model, (List<Integer>)session.getAttribute("respCentres"), (List<Integer>)session.getAttribute("respTitulacions"));
-			session.removeAttribute("respTitulacions");
-			session.removeAttribute("respCentres");
+		List<Usuari> sup_users = us.findAll();
+		List<Rol> sup_roles = rs.findAssignables();
+		List<UsuariDTO> users = new ArrayList<>();
+		List<RolDTO> roles = new ArrayList<>();
+
+		for(Usuari usu : sup_users) {
+			users.add(new UsuariDTO(usu));
 		}
-		
-		if(session.getAttribute("roleExists") != null) {
-			model.put("roleExists", true);
-			session.removeAttribute("roleExists");
+
+		for(Rol r : sup_roles) {
+			roles.add(new RolDTO(r));
 		}
 		
-		model.put("ok", "managers");
+		model.put("users", users);
+		model.put("roles", roles);
+	
 		return model;
 	}
 	
@@ -106,20 +120,11 @@ public class ManagersController {
 	 * @Return The view component list_managers
 	 */
 	@PostMapping("/managers/search")
-	public String managersSearch(@RequestBody HashMap<String, Object> model,
-			@RequestParam("center") List<Integer> centres,
-			@RequestParam(name="titulation[]", required=false) List<Integer> titulacions,
-			HttpSession session) {
-
-		if(titulacions == null) {
-			titulacions = new ArrayList<Integer>();
-		}
-		this.loadManagers(model, centres, titulacions);
-		
-		session.setAttribute("respTitulacions", titulacions);
-		session.setAttribute("respCentres", centres);
+	public HashMap<String, Object> managersSearch(@RequestParam("center") List<Integer> centres,
+			@RequestParam(name="titulation[]", required=false) List<Integer> titulacions) {
+		HashMap<String, Object> map = this.loadManagers(centres, titulacions);
 		
-		return "components/list_managers";
+		return map;
 	}
 	
 	/*
@@ -128,9 +133,10 @@ public class ManagersController {
 	 * @Param centres List of centre ids to search managers in
 	 * @Param titulacions List of titulacion ids to search managers in
 	 */
-	public void loadManagers(HashMap<String, Object> model, List<Integer> centres, List<Integer> titulacions) {
-		List<UsuarisRol> resp_centre = urs.findManagerByCentres(centres);
-		Collections.sort(resp_centre, new Comparator<UsuarisRol>() {  
+	public HashMap<String, Object> loadManagers(List<Integer> centres, List<Integer> titulacions) {
+		HashMap<String, Object> model = new HashMap<>();
+		List<UsuarisRol> centre = urs.findManagerByCentres(centres);
+		Collections.sort(centre, new Comparator<UsuarisRol>() {  
 		    @Override  
 		    public int compare(UsuarisRol a, UsuarisRol b) {  
 		          
@@ -147,10 +153,10 @@ public class ManagersController {
 		    }  
 		});
 		
-		List<UsuarisRol> resp_titulacio = new ArrayList<UsuarisRol>();
+		List<UsuarisRol> titulacio = new ArrayList<UsuarisRol>();
 		if(titulacions.size() > 0) {
-			resp_titulacio = urs.findManagerByTitulacions(titulacions);
-			Collections.sort(resp_titulacio, new Comparator<UsuarisRol>() {  
+			titulacio = urs.findManagerByTitulacions(titulacions);
+			Collections.sort(titulacio, new Comparator<UsuarisRol>() {  
 			    @Override  
 			    public int compare(UsuarisRol a, UsuarisRol b) {  
 			          
@@ -167,15 +173,28 @@ public class ManagersController {
 			    }  
 			});
 		}
+
+		List<UsuarisRolDTO> resp_centre = new ArrayList<>();
+		List<UsuarisRolDTO> resp_titulacio = new ArrayList<>();
+
+		for(UsuarisRol ur : centre) {
+			resp_centre.add(new UsuarisRolDTO(ur));
+		}
+		for(UsuarisRol ur : titulacio) {
+			resp_titulacio.add(new UsuarisRolDTO(ur));
+		}
 				
-		if(resp_centre == null) {
+		if(centre == null) {
 			model.put("results", false);
 		}
 		else{
+			
 			model.put("results", true);
 			model.put("resp_centres", resp_centre);
 			model.put("resp_titulacions", resp_titulacio);
 		}
+
+		return model;
 	}
 	
 }