Mario Martínez Hernández 4 месяцев назад
Родитель
Сommit
456a222495

+ 0 - 2
src/main/java/es/uv/saic/service/OrganService.java

@@ -18,8 +18,6 @@ public class OrganService {
 
 
 	@Autowired
 	@Autowired
 	private OrganRepository organRepository;
 	private OrganRepository organRepository;
-
-
 	
 	
 	public Organ findByID(String tlugar, Integer lugar) {
 	public Organ findByID(String tlugar, Integer lugar) {
 		return this.organRepository.findByTlugarLugar(tlugar, lugar);
 		return this.organRepository.findByTlugarLugar(tlugar, lugar);

+ 0 - 804
src/main/java/es/uv/saic/web/AjaxController.java

@@ -1,804 +0,0 @@
-package es.uv.saic.web;
-
-import java.io.IOException;
-import java.math.BigInteger;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.time.Year;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Date;
-
-import static java.util.Comparator.comparing;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Optional;
-import java.util.Set;
-
-import jakarta.servlet.http.HttpSession;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.core.Authentication;
-import org.springframework.stereotype.Controller;
-import org.springframework.ui.Model;
-import org.springframework.web.bind.annotation.DeleteMapping;
-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.RequestParam;
-import org.springframework.web.bind.annotation.ResponseBody;
-
-import es.uv.saic.domain.Calendari;
-import es.uv.saic.domain.DummyDataTransfer;
-import es.uv.saic.domain.Email;
-import es.uv.saic.domain.EvidenciaIndicadorEnquesta;
-import es.uv.saic.domain.InstanciaTasca;
-import es.uv.saic.domain.Organ;
-import es.uv.saic.domain.Plantilla;
-import es.uv.saic.domain.Proces;
-import es.uv.saic.domain.Rol;
-import es.uv.saic.domain.Tipus;
-import es.uv.saic.domain.Usuari;
-import es.uv.saic.dto.EvidenciaBuscadorDTO;
-import es.uv.saic.feign.PlantillaClient;
-import es.uv.saic.service.CalendariService;
-import es.uv.saic.service.EmailService;
-import es.uv.saic.service.EvidenciaIndicadorEnquestaService;
-import es.uv.saic.service.InstanciaService;
-import es.uv.saic.service.InstanciaTascaService;
-import es.uv.saic.service.OrganService;
-import es.uv.saic.service.ProcesService;
-import es.uv.saic.service.RolService;
-import es.uv.saic.service.TascaService;
-import es.uv.saic.service.TipusService;
-import es.uv.saic.service.UsuariService;
-
-
-
-@Controller
-public class AjaxController {
-	
-	@Autowired
-	private OrganService os;
-	@Autowired
-	private UsuariService us;
-	@Autowired
-	private ProcesService ps;
-	@Autowired
-	private TascaService tas;
-	@Autowired
-	private TipusService tps;
-	@Autowired
-	private RolService rs;
-	@Autowired
-	private EvidenciaIndicadorEnquestaService eies;
-	@Autowired
-	private CalendariService cs;
-	@Autowired
-	private InstanciaService is;
-	@Autowired
-	private InstanciaTascaService its;
-	@Autowired
-	private EmailService es;
-	@Autowired
-	private PlantillaClient plc;
-	
-	@PostMapping("/ajax/active/centres")
-	public String getActiveCentres(Model model, Authentication auth) throws IOException {	
-		List<Organ> org_list = this.os.getActiveCentres();
-		List<DummyDataTransfer> centres = new ArrayList<DummyDataTransfer>();
-		for(Organ or : org_list) {
-			DummyDataTransfer c = new DummyDataTransfer();
-			c.setText(or.getNomCas());
-			c.setText2(or.getNomVal());
-			c.setValue(or.getId().getLugar());
-			centres.add(c);
-		}
-		System.out.println(centres);
-		model.addAttribute("sup_centers", centres);
-		return "components/selector_centres";
-	}
-	
-	@PostMapping("/ajax/active/titulacions")
-	public String getActiveTitulationsByCenter(Model model, Authentication auth,
-			@RequestParam("centre") Integer centre) throws IOException {	
-		List<Organ> org_list = this.os.getTitulacionsByCentre(centre);
-		List<DummyDataTransfer> titulacions = new ArrayList<DummyDataTransfer>();
-		for(Organ or : org_list) {
-			DummyDataTransfer c = new DummyDataTransfer();
-			c.setText(or.getNomCas());
-			c.setText2(or.getNomVal());
-			c.setValue(or.getRuct());
-			titulacions.add(c);
-		}
-		model.addAttribute("sup_orgs", titulacions);
-		return "components/selector_titulacions";
-	}
-	
-	// POST que buscar titulaciones que se encuentren asociadas a uno o varios centros
-	@PostMapping("/ajax/search/titulations")
-	public String getTitulationsByCenter(Model model, Authentication auth,
-			@RequestParam(name="centers[]", required=false) List<Integer> centres) throws IOException {	
-		if(centres == null) { centres = us.getSupervisableCentres((Usuari) auth.getPrincipal()); }
-		List<Organ> org_list = this.os.findTitulacionsByCentre(centres);
-		List<DummyDataTransfer> supervisable_cents = new ArrayList<DummyDataTransfer>();
-		for(Organ or : org_list) {
-			DummyDataTransfer c = new DummyDataTransfer();
-			c.setText(or.getNomCas());
-			c.setText2(or.getNomVal());
-			c.setValue(or.getId().getLugar());
-			supervisable_cents.add(c);
-		}
-		DummyDataTransfer o = new DummyDataTransfer();
-		o = new DummyDataTransfer();
-		Organ org = os.findByID("T", 1);
-		o.setText(org.getNomCas());
-		o.setText2(org.getNomVal());
-		o.setValue(1);
-		supervisable_cents.add(o);
-		o = new DummyDataTransfer();
-		org = os.findByID("T", 2);
-		o.setText(org.getNomCas());
-		o.setText2(org.getNomVal());
-		o.setValue(2);
-		supervisable_cents.add(o);
-		o = new DummyDataTransfer();
-		org = os.findByID("T", 0);
-		o.setText(org.getNomCas());
-		o.setText2(org.getNomVal());
-		o.setValue(0);
-		supervisable_cents.add(o);
-		model.addAttribute("sup_orgs", supervisable_cents);
-		return "components/selector_titulacions";
-	}
-	
-	// POST que se utiliza para conseguir los cursos a partir de la titulación
-	@PostMapping("/ajax/search/years")
-	public String getYearsByCenterTitulation(Model model, Authentication auth, 
-			@RequestParam(name="centers[]", required=false) List<Integer> centres,
-			@RequestParam("titulations[]") List<Integer> titulacions) throws IOException {		
-			List<DummyDataTransfer> supervisable_years = new ArrayList<DummyDataTransfer>();
-			if(centres == null) { centres = us.getSupervisableCentres((Usuari) auth.getPrincipal()); }
-			for(Integer c : ps.getSupervisableCursos(centres, titulacions)) {
-				DummyDataTransfer d = new DummyDataTransfer();
-				d.setValue(c);
-				d.setText(Integer.toString(c-1) + " - " + Integer.toString(c));
-				supervisable_years.add(d);
-			}
-			model.addAttribute("sup_years", supervisable_years);
-		return "components/selector_cursos";
-	}
-	
-	// POST que se utiliza para conseguir los procedimiento que se han llevado a cabo por cursos y por titulación
-	@PostMapping("/ajax/search/procedures")
-	public String getProceduresByCenterTitulationYear(Model model, Authentication auth,
-			@RequestParam(name="centers[]", required=false) List<Integer> centres,
-			@RequestParam("years[]") List<Integer> cursos,
-			@RequestParam("titulations[]") List<Integer> titulacions) throws IOException {	
-		List<DummyDataTransfer> supervisable_procedures = new ArrayList<DummyDataTransfer>();
-		if(centres == null) { centres = us.getSupervisableCentres((Usuari) auth.getPrincipal()); }
-		for(Integer p_id : ps.getSupervisableProcedures((Usuari) auth.getPrincipal(), cursos, centres, titulacions)) {
-			DummyDataTransfer d = new DummyDataTransfer();
-			Proces p = ps.findByID(p_id);
-			d.setText(p.getNomProces());
-			d.setText2(p.getNomProces() + " " + p.getTitolCas());
-			d.setText3(p.getNomProces() + " " + p.getTitolVal());
-			supervisable_procedures.add(d);
-		}
-		
-		Set<String> set = new HashSet<>(supervisable_procedures.size());
-		supervisable_procedures.removeIf(p -> !set.add(p.getText()));
-		Collections.sort(supervisable_procedures, comparing(DummyDataTransfer::getText));
-		model.addAttribute("sup_procs", supervisable_procedures);
-		
-		return "components/selector_processos";
-	}
-
-	// POST para buscar pas evidencias a partir del año, centro y titulación
-	@PostMapping("/ajax/search/evidences")
-	public String getEvidencesByCenterTitulationYear(Model model, Authentication auth,
-			@RequestParam(name="centers[]", required=false) List<Integer> centres,
-			@RequestParam("years[]") List<Integer> cursos,
-			@RequestParam("titulations[]") List<Integer> titulacions) throws IOException {	
-		List<DummyDataTransfer> supervisable_evs = new ArrayList<DummyDataTransfer>();
-		List<EvidenciaBuscadorDTO> evs_list = tas.getEvidenciesByCentreTitulacioCurs(centres, titulacions, cursos);		
-		for(EvidenciaBuscadorDTO e : evs_list) {
-			DummyDataTransfer c = new DummyDataTransfer();
-			c.setText(e.getCodiEvidencia());
-			c.setText2(e.getNomEvidenciaCas());
-			c.setText3(e.getNomEvidenciaVal());
-			supervisable_evs.add(c);
-		}
-		model.addAttribute("sup_evs", supervisable_evs);
-		return "components/selector_evidencies";
-	}
-	
-	// POST que recoge toda las titulaciones que contiene un centro para el manager
-	@PostMapping("/ajax/search/managers/titulations")
-	public String getCenterTitulations(Model model, Authentication auth, 
-			@RequestParam("center") Integer centre,
-			HttpSession session) {
-		List<Organ> sup_titulacions;
-		sup_titulacions = this.os.getTitulacionsByCentre(centre);
-		model.addAttribute("resp_titulacions", sup_titulacions);
-		
-		return "components/selector_titulacions_managers";
-	}
-	
-	@PostMapping("/ajax/find/titulations2")
-	public String getTitulationsByCenters(Model model, Authentication auth,
-			@RequestParam("centers[]") List<Integer> centres, @RequestParam("procedure") Integer idProces) throws IOException {	
-		List<DummyDataTransfer> titulations = new ArrayList<DummyDataTransfer>();
-		DummyDataTransfer o = new DummyDataTransfer();
-		
-		if(idProces > 0) {
-			Proces p = ps.findByID(idProces);
-			if(p.getAmbit().equals("U")) {
-				o = new DummyDataTransfer();
-				Organ org = os.findByID("T", 0);
-				o.setText(org.getNomCas());
-				o.setText2(org.getNomVal());
-				titulations.add(o);
-			}
-			else if(p.getAmbit().equals("C")) {
-				o = new DummyDataTransfer();
-				Organ org = os.findByID("T", 1);
-				o.setText(org.getNomCas());
-				o.setText2(org.getNomVal());
-				o.setValue(1);
-				titulations.add(o);
-				o = new DummyDataTransfer();
-				org = os.findByID("T", 2);
-				o.setText(org.getNomCas());
-				o.setText2(org.getNomVal());
-				o.setValue(2);
-				titulations.add(o);
-				o = new DummyDataTransfer();
-				org = os.findByID("T", 0);
-				o.setText(org.getNomCas());
-				o.setText2(org.getNomVal());
-				o.setValue(0);
-				titulations.add(o);
-			}
-			else if(p.getAmbit().equals("T")) {
-				for(Integer centre : centres) {
-					List<Organ> org_list = this.os.getTitulacionsByCentre(centre);
-					for(Organ or : org_list) {
-						DummyDataTransfer c = new DummyDataTransfer();
-						c.setText(or.getNomCas());
-						c.setText2(or.getNomVal());
-						c.setValue(or.getId().getLugar());
-						titulations.add(c);
-					}
-				}	
-				Collections.sort(titulations, 
-	                    (o1, o2) -> Integer.valueOf(o1.getValue()).compareTo(Integer.valueOf(o2.getValue())));
-			}
-		}
-		else {
-			for(Integer centre : centres) {
-				List<Organ> org_list = this.os.getTitulacionsByCentre(centre);
-				for(Organ or : org_list) {
-					DummyDataTransfer c = new DummyDataTransfer();
-					c.setText(or.getNomCas());
-					c.setText2(or.getNomVal());
-					c.setValue(or.getId().getLugar());
-					titulations.add(c);
-				}
-			}	
-			Collections.sort(titulations, 
-                    (o1, o2) -> Integer.valueOf(o1.getValue()).compareTo(Integer.valueOf(o2.getValue())));
-		}
-		
-		model.addAttribute("sup_orgs", titulations);
-		return "components/selector_titulacions";
-	}
-	
-	@PostMapping("/ajax/find/titulations")
-	public String getTitulationsByCenter(Model model, Authentication auth,
-			@RequestParam("center") Integer centre, @RequestParam("procedure") Integer idProces) throws IOException {	
-		Proces p = ps.findByID(idProces);
-		List<DummyDataTransfer> titulations = new ArrayList<DummyDataTransfer>();
-		DummyDataTransfer o = new DummyDataTransfer();
-		
-		if(p.getAmbit().equals("U")) {
-			o = new DummyDataTransfer();
-			Organ org = os.findByID("T", 0);
-			o.setText(org.getNomCas());
-			o.setText2(org.getNomVal());
-			titulations.add(o);
-		}
-		else if(p.getAmbit().equals("C")) {
-			o = new DummyDataTransfer();
-			Organ org = os.findByID("T", 1);
-			o.setText(org.getNomCas());
-			o.setText2(org.getNomVal());
-			o.setValue(1);
-			titulations.add(o);
-			o = new DummyDataTransfer();
-			org = os.findByID("T", 2);
-			o.setText(org.getNomCas());
-			o.setText2(org.getNomVal());
-			o.setValue(2);
-			titulations.add(o);
-			o = new DummyDataTransfer();
-			org = os.findByID("T", 0);
-			o.setText(org.getNomCas());
-			o.setText2(org.getNomVal());
-			o.setValue(0);
-			titulations.add(o);
-		}
-		else if(p.getAmbit().equals("T")) {
-			o = new DummyDataTransfer();
-			o.setText("Todos los grados");
-			o.setText2("Tots els graus");
-			o.setValue(1);
-			titulations.add(o);
-			o = new DummyDataTransfer();
-			o.setText("Todos los másters");
-			o.setText2("Tots els màsters");
-			o.setValue(2);
-			titulations.add(o);
-			o = new DummyDataTransfer();
-			o.setText("Todas las titulaciones");
-			o.setText2("Totes les titulacions");
-			o.setValue(0);
-			titulations.add(o);
-			List<Organ> org_list = this.os.getTitulacionsByCentre(centre);
-			for(Organ or : org_list) {
-				DummyDataTransfer c = new DummyDataTransfer();
-				c.setText(or.getNomCas());
-				c.setText2(or.getNomVal());
-				c.setValue(or.getId().getLugar());
-				titulations.add(c);
-			}
-		}
-		model.addAttribute("sup_orgs", titulations);
-		return "components/selector_titulacions";
-	}
-	
-	@PostMapping("/ajax/get/titulations")
-	public String getAllTitulationsByCenter(Model model, Authentication auth, @RequestParam("center") Integer centre) throws IOException {	
-		List<DummyDataTransfer> titulations = new ArrayList<DummyDataTransfer>();
-		DummyDataTransfer o = new DummyDataTransfer();
-		
-		o = new DummyDataTransfer();
-		o.setText("Todos los grados");
-		o.setText2("Tots els graus");
-		o.setValue(1);
-		titulations.add(o);
-		o = new DummyDataTransfer();
-		o.setText("Todos los másters");
-		o.setText2("Tots els màsters");
-		o.setValue(2);
-		titulations.add(o);
-		o = new DummyDataTransfer();
-		o.setText("Todas las titulaciones");
-		o.setText2("Totes les titulacions");
-		o.setValue(0);
-		titulations.add(o);
-		List<Organ> org_list = this.os.getTitulacionsByCentre(centre);
-		for(Organ or : org_list) {
-			DummyDataTransfer c = new DummyDataTransfer();
-			c.setText(or.getNomCas());
-			c.setText2(or.getNomVal());
-			c.setValue(or.getId().getLugar());
-			titulations.add(c);
-		}
-		model.addAttribute("sup_orgs", titulations);
-		return "components/selector_titulacions";
-	}
-	
-	// POST para encontrar el centro a partir de los procedimientos
-	@PostMapping("/ajax/find/centers")
-	public String getAllCentresByAmbit(Model model, Authentication auth, @RequestParam("procedure") Integer idProces) throws IOException {	
-		List<DummyDataTransfer> centres = new ArrayList<DummyDataTransfer>();
-		if(idProces > 0) {
-			Proces p = ps.findByID(idProces);
-			if(p.getAmbit().equals("C")) {
-				DummyDataTransfer o = new DummyDataTransfer();
-				o.setText("Todos los centros");
-				o.setText2("Tots els centres");
-				o.setValue(0);
-				centres.add(o);
-			}
-		}
-		List<Organ> org_list = this.os.getActiveCentres();
-		for(Organ or : org_list) {
-			DummyDataTransfer c = new DummyDataTransfer();
-			c.setText(or.getNomCas());
-			c.setText2(or.getNomVal());
-			c.setValue(or.getId().getLugar());
-			centres.add(c);
-		}
-		model.addAttribute("sup_centers", centres);
-		return "components/selector_centres";
-	}
-	
-	// POST para encontrar un procedimiento concreto
-	@PostMapping("/ajax/find/procedure")
-	public String findProcedure(Model model, Authentication auth, @RequestParam("procedure") Integer idProces, 
-			@RequestParam("action") String action) throws IOException {	
-		
-		Proces p = new Proces();
-		model.addAttribute("action", action);
-		List<Tipus> tipus = tps.findAll();
-		List<Plantilla> templates = plc.findAll();
-		model.addAttribute("tipus", tipus);
-		model.addAttribute("templates", templates);
-		
-		
-		if(idProces != 0 && (action.equals("duplicate") || action.equals("edit"))) {
-			p = ps.findByID(idProces);
-			if(action.equals("duplicate")) {
-				p.setVersio(Integer.toString(Integer.parseInt(p.getVersio())+1));
-				p.setIdProces(p.getIdProces()+1);
-				p.setCursActivacio(Year.now().getValue());
-				p.setCursAvaluat(null);
-			}
-			model.addAttribute("tasks", this.tas.findByProces(idProces));
-			model.addAttribute("procedure", p);
-			List<Rol> roles = rs.findAssignables();
-			model.addAttribute("roles", roles);
-			return "components/form_procedure";
-		}
-		else if(idProces != 0 && action.equals("remove")) {
-			p = ps.findByID(idProces);
-			model.addAttribute("procedure", p);
-			return "components/form_procedure_remove_confirm";
-		}
-		else {
-			model.addAttribute("procedure", p);
-			List<Rol> roles = rs.findAssignables();
-			model.addAttribute("roles", roles);
-			return "components/form_procedure";
-		}	
-	}	
-	
-	// POST para encontar las plantillas concretas para cierta titulación, centro o procedimiento
-	@PostMapping("/ajax/find/templates")
-	public String findTemplates(Model model, Authentication auth, @RequestParam("procedure") Integer idProces, 
-			@RequestParam("center") String idCentre, @RequestParam("titulation") String idTitulacio) throws IOException {	
-		model.addAttribute("evs", this.tas.getEvidencesByProcedure(idProces));
-		model.addAttribute("idCentre", idCentre);
-		model.addAttribute("idTitulacio", idTitulacio);
-		model.addAttribute("idProces", idProces);
-		return "components/templates";
-	}
-	
-	@PostMapping("/ajax/find/template/inds")
-	public String findTemplatesInds(Model model, Authentication auth, @RequestParam("procedure") Integer idProces, 
-			@RequestParam("center") String idCentre, @RequestParam("titulation") String idTitulacio,
-			@RequestParam("ev") String evidencia) throws IOException {	
-		
-		Proces p = this.ps.findByID(idProces);
-		List<EvidenciaIndicadorEnquesta> inds = this.eies.getByProcesEvidencia(p.getNomProces(), evidencia);
-		model.addAttribute("inds", inds);
-		model.addAttribute("proces", p.getNomProces());
-		model.addAttribute("idCentre", idCentre);
-		model.addAttribute("idTitulacio", idTitulacio);
-		model.addAttribute("evidencia", evidencia);
-		
-		return "components/form_templates_indicators";
-	}
-	
-	// GET para renderizar el formulario de cración de nueva tarea
-	@GetMapping("/ajax/newTask/{i}")
-	public String newTaskForm(Model model, Authentication auth, @PathVariable Integer i) throws IOException {	
-		List<Rol> roles = rs.findAssignables();
-		List<Tipus> tipus = tps.findAll();
-		List<Plantilla> templates = plc.findAll();
-		model.addAttribute("tipus", tipus);
-		model.addAttribute("roles", roles);
-		model.addAttribute("i", i);
-		model.addAttribute("templates", templates);
-		return "components/form_procedure_task";
-	}
-	
-	@GetMapping("/ajax/newUserrole")
-	public String newUserRoleForm(Model model, Authentication auth) throws IOException {	
-		List<Usuari> users = us.findAll();
-		List<Rol> roles = rs.findAll();
-		model.addAttribute("users", users);
-		model.addAttribute("roles", roles);
-		return "components/form_new_manager";
-	}
-	
-	@ResponseBody
-	@PostMapping("/ajax/find/template")
-	public String findTemplate(Model model, Authentication auth, @RequestParam("id") Integer idPlantilla) throws IOException {	
-		Plantilla p = plc.findByID(idPlantilla);
-		return p.getText();
-	}
-	
-	// GET para comprobar si una plantilla esta siendo usada
-	@ResponseBody
-	@GetMapping("/ajax/template/used/{idPlantilla}")
-	public int isTemplateUsed(Model model, Authentication auth, @PathVariable("idPlantilla") Integer idPlantilla) throws IOException {	
-		Boolean u = plc.isUsed(idPlantilla);
-		return u ? 1 : 0;
-	}
-	
-	// POST para crear el form de creación de plantilla
-	@PostMapping("/ajax/template/form")
-	public String formTemplate(Model model, Authentication auth, @RequestParam("id") Integer idPlantilla,
-			@RequestParam("action") String action) throws IOException {	
-		if(action.equals("new")) {
-			Plantilla p = new Plantilla();
-			model.addAttribute("editable", true);
-			model.addAttribute("template", p);
-			return "components/form_template";
-		}
-		else if(action.equals("edit")) {
-			Plantilla p = plc.findByID(idPlantilla);
-			model.addAttribute("editable", false);
-			model.addAttribute("template", p);
-			return "components/form_template";
-		}
-		else if(action.equals("duplicate")) {
-			Plantilla p = plc.findByID(idPlantilla);
-			p.setVersio(p.getVersio()+1);
-			model.addAttribute("editable", true);
-			model.addAttribute("template", p);
-			return "components/form_template";
-		}
-		
-		return "";
-	}
-	
-	// DELETE para eliminar una plantilla concreta
-	@DeleteMapping("/ajax/template/form")
-	@ResponseBody
-	public String formTemplateRemove(Model model, Authentication auth, @RequestParam("id") Integer idPlantilla) throws IOException {	
-		if(plc.isUsed(idPlantilla)){
-			return "0";
-		}
-		else {
-			Plantilla p = plc.findByID(idPlantilla);
-			plc.delete(p);
-			return "1";
-		}
-	
-	}
-	
-	// POST para guadar una de las plantillas
-	@ResponseBody
-	@PostMapping("/ajax/template/save")
-	public String templateSave(Model model, Authentication auth, @RequestParam("id") Integer idPlantilla, @RequestParam("action") String action,
-			@RequestParam("text") String text, @RequestParam("codi") String codi, @RequestParam("versio") Integer versio,
-			@RequestParam("nomCas") String nomCas, @RequestParam("nomVal") String nomVal, @RequestParam("ambit") String ambit) throws IOException {	
-		
-		if(action.equals("edit")) {
-			Plantilla p = plc.findByID(idPlantilla);
-			p.setNomCas(nomCas);
-			p.setNomVal(nomVal);
-			p.setText(text);
-			p.setAmbit(ambit);
-			plc.save(p);
-			return "1";
-		}
-		else if(action.equals("duplicate") || action.equals("new")) {
-			Plantilla p = new Plantilla();
-			Plantilla p2 = plc.findByVersioCodiAmbit(versio, codi, ambit);
-			if(p2 != null) {
-				return "0";
-			}
-			p.setCodi(codi);
-			p.setVersio(versio);
-			p.setNomCas(nomCas);
-			p.setNomVal(nomVal);
-			p.setText(text);
-			p.setAmbit(ambit);
-			plc.save(p);
-			return "1";
-		}
-		return "0";
-	}
-	
-	@ResponseBody
-	@PostMapping("/ajax/draft/save/{id}")
-	public String saveTemplate(Model model, Authentication auth, @PathVariable("id") Integer idPlantilla, 
-			@RequestParam("text") String text) throws IOException {	
-		Plantilla p = plc.findByID(idPlantilla);
-		p.setText(text);
-		plc.save(p);
-		return "1";
-	}
-	
-	// POST para añadir un evento al calendario
-	@ResponseBody
-	@PostMapping("/ajax/calendar")
-	public Calendari calendarAddEvent(Model model, Authentication auth, @RequestParam("idProces") Integer idProces, 
-			@RequestParam("titulacions") List<String> titulacions, @RequestParam("centres") List<String> centres, 
-			@RequestParam("data") String data, @RequestParam("instancia") Optional<Integer> instancia) throws IOException, ParseException {	
-		
-		Date d = new SimpleDateFormat("dd/MM/yyyy").parse(data);
-		String dstr = new SimpleDateFormat("yyyy-MM-dd").format(d);
-		Proces p = this.ps.findByID(idProces);
-		Calendari c = new Calendari();
-		c.setIdProces(p.getIdProces());
-		c.setData(d);
-		c.setDataStr(dstr);
-		c.setTitolCas(p.getNomProces() + " " + p.getTitolCas());
-		c.setTitolVal(p.getNomProces() + " " + p.getTitolVal());
-		c.setAmbit(p.getAmbit());
-		c.setTipus(1);
-		c.setColor(p.getAmbit().equals("C")  ? "aquamarine" : "dodgerblue");
-		c.setStatus("P");
-		if(instancia.isPresent()) {
-			Calendari cold = cs.findById(instancia.get());
-			c.setCentres(cold.getCentres());
-			c.setTitulacions(cold.getTitulacions());
-		}
-		else {
-			c.setCentres(centres.toString());
-			c.setTitulacions(titulacions.toString());
-		}
-		
-		c = cs.save(c);
-		
-		return c;
-	}
-	
-	// POST que actualiza el evento ddel calendario
-	@ResponseBody
-	@PostMapping("/ajax/calendar/{id}")
-	public Calendari calendarAddEvent(Model model, Authentication auth, @PathVariable("id") Integer id, 
-			@RequestParam("idProces") Integer idProces, @RequestParam("titulacions") List<String> titulacions, 
-			@RequestParam("centres") List<String> centres, @RequestParam("data") String data) throws IOException, ParseException {	
-		
-		Calendari c = cs.findById(id);
-		Date d = new SimpleDateFormat("dd/MM/yyyy").parse(data);
-		String dstr = new SimpleDateFormat("yyyy-MM-dd").format(d);
-		Proces p = this.ps.findByID(idProces);
-		c.setIdProces(p.getIdProces());
-		c.setData(d);
-		c.setDataStr(dstr);
-		c.setCentres(centres.toString());
-		c.setTitulacions(titulacions.toString());
-		c.setTitolCas(p.getNomProces() + " " + p.getTitolCas());
-		c.setTitolVal(p.getNomProces() + " " + p.getTitolVal());
-		c.setAmbit(p.getAmbit());
-		c.setColor(p.getAmbit().equals("C") ? "aquamarine" : "dodgerblue");
-		c.setStatus("P");
-		
-		c = cs.save(c);
-		
-		return c;
-	}
-	
-	// GET que recoge todos los eventos del calendario
-	@ResponseBody
-	@GetMapping("/ajax/calendar")
-	public List<Calendari> calendarGetEvents(Model model, Authentication auth) throws IOException, ParseException {	
-		return cs.getAll();
-	}
-	
-	// DELETE que elimina un evento del calendario
-	@ResponseBody
-	@DeleteMapping("/ajax/calendar")
-	public Integer calendarDeleteEvent(Model model, Authentication auth, @RequestParam("id") Integer id) throws IOException, ParseException {	
-		Calendari c = this.cs.findById(id);
-		this.cs.delete(c);
-		return id;
-	}
-	
-
-	// POST para instanciar un proceso desde el calendario
-	@ResponseBody
-	@PostMapping("/ajax/instantiate")
-	public List<String> instantiate(Model model, Authentication auth, @RequestParam("id") Integer id,
-			@RequestParam("idProces") Integer idProces, @RequestParam("centres") List<Integer> centres,
-			@RequestParam("titulacions") List<Integer> titulacions) throws IOException, ParseException {	
-		if(!((Usuari)auth.getPrincipal()).isAdmin()) {
-			return null;
-		}
-		
-		Calendari cal = cs.findById(id);
-		if(!cal.getIdProces().equals(idProces) || !cal.getCentres().equals(centres.toString()) 
-				|| !cal.getTitulacions().equals(titulacions.toString())) {
-			cal.setCentres(centres.toString());
-			cal.setTitulacions(titulacions.toString());
-			cal.setIdProces(idProces);
-			cs.save(cal);
-		}
-		
-		List<String> log = new ArrayList<String>();
-		boolean hasErrors = false;
-		
-		Proces pr = ps.findByID(idProces);
-		
-		if(pr.getAmbit().equals("U")) {  // ambit == universitat (U)
-			for(Integer idTitulacio : titulacions) {
-				BigInteger idInstancia = is.instantiateU(idProces, idTitulacio);
-				if(!idInstancia.equals(new BigInteger("0"))) {
-					log.add("[OK] "+idInstancia.toString()+" - "+groupedTitToText(idTitulacio));
-					InstanciaTasca activa = its.findActiveByInstancia(idInstancia);
-					for(Usuari u : us.getInstanceAsignedUsers(idInstancia)) {
-						Email email = new Email();
-						email.setUsusari(u);
-						email.setInstanciaTasca(activa);
-						es.addEmail(email);
-					}
-				}
-				else {
-					log.add("[ERROR] "+groupedTitToText(idTitulacio));
-					hasErrors = true;
-				}		
-			}
-		}
-		else if(pr.getAmbit().equals("C")) { // ambit == centre (C)
-			for(Integer idCentre : centres) {
-				Organ c = os.findByID("C", idCentre);
-				for(Integer idTitulacio : titulacions) {
-					BigInteger idInstancia = is.instantiateC(idProces, c.getId().getLugar(), idTitulacio);
-					if(!idInstancia.equals(new BigInteger("0"))) {
-						log.add("[OK] "+idInstancia.toString()+" - "+c.getNomCas() + " -> " + groupedTitToText(idTitulacio));
-						InstanciaTasca activa = its.findActiveByInstancia(idInstancia);
-						for(Usuari u : us.getInstanceAsignedUsers(idInstancia)) {
-							Email email = new Email();
-							email.setUsusari(u);
-							email.setInstanciaTasca(activa);
-							es.addEmail(email);
-						}
-					}
-					else {
-						hasErrors = true;
-						log.add("[ERROR] "+c.getNomCas() + " -> " + groupedTitToText(idTitulacio));
-					}
-				}
-			}
-		}
-		else if(pr.getAmbit().equals("T")) { // ambit == titulacio (T)
-			for(Integer idTitulacio : titulacions) {
-				Organ t = os.findByID("T", idTitulacio);
-				BigInteger idInstancia = is.instantiateT(idProces, t.getId().getLugar());
-				if(!idInstancia.equals(new BigInteger("0"))) {
-					log.add("[OK] "+idInstancia.toString()+" - "+t.getNomCas());
-					InstanciaTasca activa = its.findActiveByInstancia(idInstancia);
-					for(Usuari u : us.getInstanceAsignedUsers(idInstancia)) {
-						Email email = new Email();
-						email.setUsusari(u);
-						email.setInstanciaTasca(activa);
-						es.addEmail(email);
-					}
-				}
-				else {
-					hasErrors = true;
-					log.add("[ERROR] "+idInstancia.toString()+" - "+t.getNomCas());
-				}
-			}
-		}
-		
-		if(hasErrors) {
-			cal.setStatus("E");
-			cal.setColor("indianred");
-			cal.setData(new Date(System.currentTimeMillis()));
-			cs.save(cal);
-		}
-		else {
-			cal.setStatus("F");
-			cal.setColor("lightgreen");
-			cal.setData(new Date(System.currentTimeMillis()));
-			cs.save(cal);
-		}
-		
-		return log;
-	}
-	
-	private String groupedTitToText(Integer t) {
-		if(t == 1) {
-			return "Grados";
-		}
-		else if(t == 2) {
-			return "Masters";
-		}
-		else if(t == 3) {
-			return "Doctorados";
-		}
-		else {
-			return "Todas Titulaciones";
-		}
-	}
-	
-}

+ 249 - 0
src/main/java/es/uv/saic/web/CalendarController.java

@@ -0,0 +1,249 @@
+package es.uv.saic.web;
+
+import java.io.IOException;
+import java.math.BigInteger;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Optional;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.DeleteMapping;
+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.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.RestController;
+
+import es.uv.saic.domain.Calendari;
+import es.uv.saic.domain.Email;
+import es.uv.saic.domain.InstanciaTasca;
+import es.uv.saic.domain.Organ;
+import es.uv.saic.domain.Proces;
+import es.uv.saic.domain.Usuari;
+import es.uv.saic.service.CalendariService;
+import es.uv.saic.service.EmailService;
+import es.uv.saic.service.InstanciaService;
+import es.uv.saic.service.InstanciaTascaService;
+import es.uv.saic.service.OrganService;
+import es.uv.saic.service.ProcesService;
+import es.uv.saic.service.UsuariService;
+
+@RestController
+public class CalendarController {
+    @Autowired
+	private OrganService os;
+	@Autowired
+	private UsuariService us;
+	@Autowired
+	private ProcesService ps;
+	@Autowired
+	private CalendariService cs;
+	@Autowired
+	private InstanciaService is;
+	@Autowired
+	private InstanciaTascaService its;
+	@Autowired
+	private EmailService es;
+	
+	// POST para añadir un evento al calendario
+	@ResponseBody
+	@PostMapping("/ajax/calendar")
+	public Calendari calendarAddEvent(@RequestParam("idProces") Integer idProces, 
+			@RequestParam("titulacions") List<String> titulacions, @RequestParam("centres") List<String> centres, 
+			@RequestParam("data") String data, @RequestParam("instancia") Optional<Integer> instancia) throws IOException, ParseException {	
+		
+		Date d = new SimpleDateFormat("dd/MM/yyyy").parse(data);
+		String dstr = new SimpleDateFormat("yyyy-MM-dd").format(d);
+		Proces p = this.ps.findByID(idProces);
+		Calendari c = new Calendari();
+		c.setIdProces(p.getIdProces());
+		c.setData(d);
+		c.setDataStr(dstr);
+		c.setTitolCas(p.getNomProces() + " " + p.getTitolCas());
+		c.setTitolVal(p.getNomProces() + " " + p.getTitolVal());
+		c.setAmbit(p.getAmbit());
+		c.setTipus(1);
+		c.setColor(p.getAmbit().equals("C")  ? "aquamarine" : "dodgerblue");
+		c.setStatus("P");
+		if(instancia.isPresent()) {
+			Calendari cold = cs.findById(instancia.get());
+			c.setCentres(cold.getCentres());
+			c.setTitulacions(cold.getTitulacions());
+		}
+		else {
+			c.setCentres(centres.toString());
+			c.setTitulacions(titulacions.toString());
+		}
+		
+		c = cs.save(c);
+		
+		return c;
+	}
+	
+	// POST que actualiza el evento ddel calendario
+	@ResponseBody
+	@PostMapping("/ajax/calendar/{id}")
+	public Calendari calendarAddEvent(@PathVariable("id") Integer id, 
+			@RequestParam("idProces") Integer idProces, @RequestParam("titulacions") List<String> titulacions, 
+			@RequestParam("centres") List<String> centres, @RequestParam("data") String data) throws IOException, ParseException {	
+		
+		Calendari c = cs.findById(id);
+		Date d = new SimpleDateFormat("dd/MM/yyyy").parse(data);
+		String dstr = new SimpleDateFormat("yyyy-MM-dd").format(d);
+		Proces p = this.ps.findByID(idProces);
+		c.setIdProces(p.getIdProces());
+		c.setData(d);
+		c.setDataStr(dstr);
+		c.setCentres(centres.toString());
+		c.setTitulacions(titulacions.toString());
+		c.setTitolCas(p.getNomProces() + " " + p.getTitolCas());
+		c.setTitolVal(p.getNomProces() + " " + p.getTitolVal());
+		c.setAmbit(p.getAmbit());
+		c.setColor(p.getAmbit().equals("C") ? "aquamarine" : "dodgerblue");
+		c.setStatus("P");
+		
+		c = cs.save(c);
+		
+		return c;
+	}
+	
+	// GET que recoge todos los eventos del calendario
+	@ResponseBody
+	@GetMapping("/ajax/calendar")
+	public List<Calendari> calendarGetEvents() throws IOException, ParseException {	
+		return cs.getAll();
+	}
+	
+	// DELETE que elimina un evento del calendario
+	@ResponseBody
+	@DeleteMapping("/ajax/calendar")
+	public Integer calendarDeleteEvent(@RequestParam("id") Integer id) throws IOException, ParseException {	
+		Calendari c = this.cs.findById(id);
+		this.cs.delete(c);
+		return id;
+	}
+	
+
+	// POST para instanciar un proceso desde el calendario
+	@ResponseBody
+	@PostMapping("/ajax/instantiate")
+	public List<String> instantiate(@RequestParam("id") Integer id,
+			@RequestParam("idProces") Integer idProces, @RequestParam("centres") List<Integer> centres,
+			@RequestParam("titulacions") List<Integer> titulacions, @RequestParam String usuari) throws IOException, ParseException {	
+		
+        Usuari u = us.findByUsername(usuari);
+        if(!u.isAdmin()) {
+			return null;
+		}
+		
+		Calendari cal = cs.findById(id);
+		if(!cal.getIdProces().equals(idProces) || !cal.getCentres().equals(centres.toString()) 
+				|| !cal.getTitulacions().equals(titulacions.toString())) {
+			cal.setCentres(centres.toString());
+			cal.setTitulacions(titulacions.toString());
+			cal.setIdProces(idProces);
+			cs.save(cal);
+		}
+		
+		List<String> log = new ArrayList<String>();
+		boolean hasErrors = false;
+		
+		Proces pr = ps.findByID(idProces);
+		
+		if(pr.getAmbit().equals("U")) {  // ambit == universitat (U)
+			for(Integer idTitulacio : titulacions) {
+				BigInteger idInstancia = is.instantiateU(idProces, idTitulacio);
+				if(!idInstancia.equals(new BigInteger("0"))) {
+					log.add("[OK] "+idInstancia.toString()+" - "+groupedTitToText(idTitulacio));
+					InstanciaTasca activa = its.findActiveByInstancia(idInstancia);
+					for(Usuari usr : us.getInstanceAsignedUsers(idInstancia)) {
+						Email email = new Email();
+						email.setUsusari(usr);
+						email.setInstanciaTasca(activa);
+						es.addEmail(email);
+					}
+				}
+				else {
+					log.add("[ERROR] "+groupedTitToText(idTitulacio));
+					hasErrors = true;
+				}		
+			}
+		}
+		else if(pr.getAmbit().equals("C")) { // ambit == centre (C)
+			for(Integer idCentre : centres) {
+				Organ c = os.findByID("C", idCentre);
+				for(Integer idTitulacio : titulacions) {
+					BigInteger idInstancia = is.instantiateC(idProces, c.getId().getLugar(), idTitulacio);
+					if(!idInstancia.equals(new BigInteger("0"))) {
+						log.add("[OK] "+idInstancia.toString()+" - "+c.getNomCas() + " -> " + groupedTitToText(idTitulacio));
+						InstanciaTasca activa = its.findActiveByInstancia(idInstancia);
+						for(Usuari usr : us.getInstanceAsignedUsers(idInstancia)) {
+							Email email = new Email();
+							email.setUsusari(usr);
+							email.setInstanciaTasca(activa);
+							es.addEmail(email);
+						}
+					}
+					else {
+						hasErrors = true;
+						log.add("[ERROR] "+c.getNomCas() + " -> " + groupedTitToText(idTitulacio));
+					}
+				}
+			}
+		}
+		else if(pr.getAmbit().equals("T")) { // ambit == titulacio (T)
+			for(Integer idTitulacio : titulacions) {
+				Organ t = os.findByID("T", idTitulacio);
+				BigInteger idInstancia = is.instantiateT(idProces, t.getId().getLugar());
+				if(!idInstancia.equals(new BigInteger("0"))) {
+					log.add("[OK] "+idInstancia.toString()+" - "+t.getNomCas());
+					InstanciaTasca activa = its.findActiveByInstancia(idInstancia);
+					for(Usuari usr : us.getInstanceAsignedUsers(idInstancia)) {
+						Email email = new Email();
+						email.setUsusari(usr);
+						email.setInstanciaTasca(activa);
+						es.addEmail(email);
+					}
+				}
+				else {
+					hasErrors = true;
+					log.add("[ERROR] "+idInstancia.toString()+" - "+t.getNomCas());
+				}
+			}
+		}
+		
+		if(hasErrors) {
+			cal.setStatus("E");
+			cal.setColor("indianred");
+			cal.setData(new Date(System.currentTimeMillis()));
+			cs.save(cal);
+		}
+		else {
+			cal.setStatus("F");
+			cal.setColor("lightgreen");
+			cal.setData(new Date(System.currentTimeMillis()));
+			cs.save(cal);
+		}
+		
+		return log;
+	}
+	
+	private String groupedTitToText(Integer t) {
+		if(t == 1) {
+			return "Grados";
+		}
+		else if(t == 2) {
+			return "Masters";
+		}
+		else if(t == 3) {
+			return "Doctorados";
+		}
+		else {
+			return "Todas Titulaciones";
+		}
+	}
+}

+ 267 - 4
src/main/java/es/uv/saic/web/OrganController.java

@@ -1,6 +1,9 @@
 package es.uv.saic.web;
 package es.uv.saic.web;
 
 
+import java.io.IOException;
 import java.util.ArrayList;
 import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
 import java.util.List;
 import java.util.List;
 import java.util.stream.Collectors;
 import java.util.stream.Collectors;
 
 
@@ -10,18 +13,20 @@ import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.bind.annotation.RestController;
 
 
+import es.uv.saic.domain.DummyDataTransfer;
 import es.uv.saic.domain.IndicadorEnquesta;
 import es.uv.saic.domain.IndicadorEnquesta;
 import es.uv.saic.domain.Organ;
 import es.uv.saic.domain.Organ;
+import es.uv.saic.domain.Proces;
 import es.uv.saic.domain.Usuari;
 import es.uv.saic.domain.Usuari;
 import es.uv.saic.dto.OrganDTO;
 import es.uv.saic.dto.OrganDTO;
 import es.uv.saic.dto.OrganTransferDTO;
 import es.uv.saic.dto.OrganTransferDTO;
 import es.uv.saic.service.IndicadorEnquestaService;
 import es.uv.saic.service.IndicadorEnquestaService;
 import es.uv.saic.service.OrganService;
 import es.uv.saic.service.OrganService;
-
-
-
+import es.uv.saic.service.ProcesService;
+import es.uv.saic.service.UsuariService;
 
 
 @RestController
 @RestController
 public class OrganController {
 public class OrganController {
@@ -33,6 +38,13 @@ public class OrganController {
 
 
     @Autowired
     @Autowired
     private IndicadorEnquestaService ies;
     private IndicadorEnquestaService ies;
+
+    @Autowired
+    private UsuariService us;
+
+    @Autowired
+    private ProcesService ps;
+
     /*
     /*
      * Endpoint for getTitulacions
      * Endpoint for getTitulacions
      */
      */
@@ -163,5 +175,256 @@ public class OrganController {
             return ResponseEntity.badRequest().body("Error al obtener los centros: " + e.getMessage());
             return ResponseEntity.badRequest().body("Error al obtener los centros: " + e.getMessage());
         }
         }
     }
     }
-    
+
+    // Funciones ajax
+    @PostMapping("/ajax/search/titulations")
+	public HashMap<String, Object> getTitulationsByCenter(@RequestParam(name="centers[]", required=false) List<Integer> centres,
+        @RequestParam String usuari ) throws IOException {	
+        
+        HashMap<String, Object> model = new HashMap<>();
+        Usuari u = us.findByUsername(usuari);
+
+		if(centres == null) { centres = us.getSupervisableCentres(u); }
+		List<Organ> org_list = this.os.findTitulacionsByCentre(centres);
+		List<DummyDataTransfer> supervisable_cents = new ArrayList<DummyDataTransfer>();
+		for(Organ or : org_list) {
+			DummyDataTransfer c = new DummyDataTransfer();
+			c.setText(or.getNomCas());
+			c.setText2(or.getNomVal());
+			c.setValue(or.getId().getLugar());
+			supervisable_cents.add(c);
+		}
+		DummyDataTransfer o = new DummyDataTransfer();
+		o = new DummyDataTransfer();
+		Organ org = os.findByID("T", 1);
+		o.setText(org.getNomCas());
+		o.setText2(org.getNomVal());
+		o.setValue(1);
+		supervisable_cents.add(o);
+		o = new DummyDataTransfer();
+		org = os.findByID("T", 2);
+		o.setText(org.getNomCas());
+		o.setText2(org.getNomVal());
+		o.setValue(2);
+		supervisable_cents.add(o);
+		o = new DummyDataTransfer();
+		org = os.findByID("T", 0);
+		o.setText(org.getNomCas());
+		o.setText2(org.getNomVal());
+		o.setValue(0);
+		supervisable_cents.add(o);
+		model.put("sup_orgs", supervisable_cents);
+        model.put("redirect", "components/selector_titulacions");
+		return model;
+	}
+
+    // POST que recoge toda las titulaciones que contiene un centro para el manager
+	@PostMapping("/ajax/search/managers/titulations")
+	public HashMap<String, Object> getCenterTitulations(
+			@RequestParam("center") Integer centre) {
+        
+        HashMap<String, Object> model = new HashMap<>();
+		List<Organ> sup_titulacions;
+		sup_titulacions = this.os.getTitulacionsByCentre(centre);
+		model.put("resp_titulacions", sup_titulacions);
+		model.put("redirect", "components/selector_titulacions_managers");
+
+		return model;
+	}
+
+    @PostMapping("/ajax/find/titulations2")
+	public HashMap<String, Object> getTitulationsByCenters(@RequestParam("centers[]") List<Integer> centres, @RequestParam("procedure") Integer idProces) throws IOException {	
+		
+        HashMap<String, Object> model = new HashMap<>();
+        List<DummyDataTransfer> titulations = new ArrayList<DummyDataTransfer>();
+		DummyDataTransfer o = new DummyDataTransfer();
+		
+		if(idProces > 0) {
+			Proces p = ps.findByID(idProces);
+			if(p.getAmbit().equals("U")) {
+				o = new DummyDataTransfer();
+				Organ org = os.findByID("T", 0);
+				o.setText(org.getNomCas());
+				o.setText2(org.getNomVal());
+				titulations.add(o);
+			}
+			else if(p.getAmbit().equals("C")) {
+				o = new DummyDataTransfer();
+				Organ org = os.findByID("T", 1);
+				o.setText(org.getNomCas());
+				o.setText2(org.getNomVal());
+				o.setValue(1);
+				titulations.add(o);
+				o = new DummyDataTransfer();
+				org = os.findByID("T", 2);
+				o.setText(org.getNomCas());
+				o.setText2(org.getNomVal());
+				o.setValue(2);
+				titulations.add(o);
+				o = new DummyDataTransfer();
+				org = os.findByID("T", 0);
+				o.setText(org.getNomCas());
+				o.setText2(org.getNomVal());
+				o.setValue(0);
+				titulations.add(o);
+			}
+			else if(p.getAmbit().equals("T")) {
+				for(Integer centre : centres) {
+					List<Organ> org_list = this.os.getTitulacionsByCentre(centre);
+					for(Organ or : org_list) {
+						DummyDataTransfer c = new DummyDataTransfer();
+						c.setText(or.getNomCas());
+						c.setText2(or.getNomVal());
+						c.setValue(or.getId().getLugar());
+						titulations.add(c);
+					}
+				}	
+				Collections.sort(titulations, 
+	                    (o1, o2) -> Integer.valueOf(o1.getValue()).compareTo(Integer.valueOf(o2.getValue())));
+			}
+		}
+		else {
+			for(Integer centre : centres) {
+				List<Organ> org_list = this.os.getTitulacionsByCentre(centre);
+				for(Organ or : org_list) {
+					DummyDataTransfer c = new DummyDataTransfer();
+					c.setText(or.getNomCas());
+					c.setText2(or.getNomVal());
+					c.setValue(or.getId().getLugar());
+					titulations.add(c);
+				}
+			}	
+			Collections.sort(titulations, 
+                    (o1, o2) -> Integer.valueOf(o1.getValue()).compareTo(Integer.valueOf(o2.getValue())));
+		}
+		
+		model.put("sup_orgs", titulations);
+        model.put("redirect", "components/selector_titulacions");
+		return model;
+	}
+	
+	@PostMapping("/ajax/find/titulations")
+	public HashMap<String, Object> getTitulationsByCenter(@RequestParam("center") Integer centre, @RequestParam("procedure") Integer idProces) throws IOException {	
+		HashMap<String, Object> model = new HashMap<>();
+        Proces p = ps.findByID(idProces);
+		List<DummyDataTransfer> titulations = new ArrayList<DummyDataTransfer>();
+		DummyDataTransfer o = new DummyDataTransfer();
+		
+		if(p.getAmbit().equals("U")) {
+			o = new DummyDataTransfer();
+			Organ org = os.findByID("T", 0);
+			o.setText(org.getNomCas());
+			o.setText2(org.getNomVal());
+			titulations.add(o);
+		}
+		else if(p.getAmbit().equals("C")) {
+			o = new DummyDataTransfer();
+			Organ org = os.findByID("T", 1);
+			o.setText(org.getNomCas());
+			o.setText2(org.getNomVal());
+			o.setValue(1);
+			titulations.add(o);
+			o = new DummyDataTransfer();
+			org = os.findByID("T", 2);
+			o.setText(org.getNomCas());
+			o.setText2(org.getNomVal());
+			o.setValue(2);
+			titulations.add(o);
+			o = new DummyDataTransfer();
+			org = os.findByID("T", 0);
+			o.setText(org.getNomCas());
+			o.setText2(org.getNomVal());
+			o.setValue(0);
+			titulations.add(o);
+		}
+		else if(p.getAmbit().equals("T")) {
+			o = new DummyDataTransfer();
+			o.setText("Todos los grados");
+			o.setText2("Tots els graus");
+			o.setValue(1);
+			titulations.add(o);
+			o = new DummyDataTransfer();
+			o.setText("Todos los másters");
+			o.setText2("Tots els màsters");
+			o.setValue(2);
+			titulations.add(o);
+			o = new DummyDataTransfer();
+			o.setText("Todas las titulaciones");
+			o.setText2("Totes les titulacions");
+			o.setValue(0);
+			titulations.add(o);
+			List<Organ> org_list = this.os.getTitulacionsByCentre(centre);
+			for(Organ or : org_list) {
+				DummyDataTransfer c = new DummyDataTransfer();
+				c.setText(or.getNomCas());
+				c.setText2(or.getNomVal());
+				c.setValue(or.getId().getLugar());
+				titulations.add(c);
+			}
+		}
+		model.put("sup_orgs", titulations);
+		model.put("redirect", "components/selector_titulacions");
+        return model;
+	}
+
+    @PostMapping("/ajax/get/titulations")
+	public HashMap<String, Object> getAllTitulationsByCenter(@RequestParam("center") Integer centre) throws IOException {	
+		List<DummyDataTransfer> titulations = new ArrayList<DummyDataTransfer>();
+		DummyDataTransfer o = new DummyDataTransfer();
+		HashMap<String, Object> model = new HashMap<>();
+
+		o = new DummyDataTransfer();
+		o.setText("Todos los grados");
+		o.setText2("Tots els graus");
+		o.setValue(1);
+		titulations.add(o);
+		o = new DummyDataTransfer();
+		o.setText("Todos los másters");
+		o.setText2("Tots els màsters");
+		o.setValue(2);
+		titulations.add(o);
+		o = new DummyDataTransfer();
+		o.setText("Todas las titulaciones");
+		o.setText2("Totes les titulacions");
+		o.setValue(0);
+		titulations.add(o);
+		List<Organ> org_list = this.os.getTitulacionsByCentre(centre);
+		for(Organ or : org_list) {
+			DummyDataTransfer c = new DummyDataTransfer();
+			c.setText(or.getNomCas());
+			c.setText2(or.getNomVal());
+			c.setValue(or.getId().getLugar());
+			titulations.add(c);
+		}
+		model.put("sup_orgs", titulations);
+		model.put("redirect", "components/selector_titulacions");
+        return model;
+	}
+
+    @PostMapping("/ajax/find/centers")
+	public HashMap<String, Object> getAllCentresByAmbit(@RequestParam("procedure") Integer idProces) throws IOException {	
+		HashMap<String, Object> model = new HashMap<>();
+        List<DummyDataTransfer> centres = new ArrayList<DummyDataTransfer>();
+		if(idProces > 0) {
+			Proces p = ps.findByID(idProces);
+			if(p.getAmbit().equals("C")) {
+				DummyDataTransfer o = new DummyDataTransfer();
+				o.setText("Todos los centros");
+				o.setText2("Tots els centres");
+				o.setValue(0);
+				centres.add(o);
+			}
+		}
+		List<Organ> org_list = this.os.getActiveCentres();
+		for(Organ or : org_list) {
+			DummyDataTransfer c = new DummyDataTransfer();
+			c.setText(or.getNomCas());
+			c.setText2(or.getNomVal());
+			c.setValue(or.getId().getLugar());
+			centres.add(c);
+		}
+		model.put("sup_centers", centres);
+		model.put("redirect", "components/selector_centres");
+        return model;
+	}
 }
 }

+ 194 - 0
src/main/java/es/uv/saic/web/ProceduresController.java

@@ -7,14 +7,18 @@ import java.math.BigInteger;
 import java.nio.file.Files;
 import java.nio.file.Files;
 import java.nio.file.Paths;
 import java.nio.file.Paths;
 import java.sql.Timestamp;
 import java.sql.Timestamp;
+import java.time.Year;
 import java.util.ArrayList;
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.Date;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.List;
 import java.util.List;
 import java.util.Map;
 import java.util.Map;
 import java.util.Set;
 import java.util.Set;
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipOutputStream;
 import java.util.zip.ZipOutputStream;
+import static java.util.Comparator.comparing;
 
 
 import jakarta.servlet.http.HttpServletResponse;
 import jakarta.servlet.http.HttpServletResponse;
 import jakarta.servlet.http.HttpSession;
 import jakarta.servlet.http.HttpSession;
@@ -22,6 +26,7 @@ import jakarta.servlet.http.HttpSession;
 import org.apache.commons.io.FilenameUtils;
 import org.apache.commons.io.FilenameUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.beans.factory.annotation.Value;
+import org.springframework.http.ResponseEntity;
 import org.springframework.security.core.Authentication;
 import org.springframework.security.core.Authentication;
 import org.springframework.stereotype.Controller;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
 import org.springframework.ui.Model;
@@ -35,6 +40,8 @@ import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.multipart.MultipartFile;
 import org.springframework.web.multipart.MultipartFile;
 
 
+import es.uv.saic.domain.DummyDataTransfer;
+import es.uv.saic.domain.EvidenciaIndicadorEnquesta;
 import es.uv.saic.domain.Instancia;
 import es.uv.saic.domain.Instancia;
 import es.uv.saic.domain.InstanciaTasca;
 import es.uv.saic.domain.InstanciaTasca;
 import es.uv.saic.domain.InstanciaTascaTransfer;
 import es.uv.saic.domain.InstanciaTascaTransfer;
@@ -43,9 +50,14 @@ import es.uv.saic.domain.InstanciaTransfer;
 import es.uv.saic.domain.Organ;
 import es.uv.saic.domain.Organ;
 import es.uv.saic.domain.Plantilla;
 import es.uv.saic.domain.Plantilla;
 import es.uv.saic.domain.Proces;
 import es.uv.saic.domain.Proces;
+import es.uv.saic.domain.Rol;
+import es.uv.saic.domain.Tipus;
 import es.uv.saic.domain.Usuari;
 import es.uv.saic.domain.Usuari;
 import es.uv.saic.dto.InstanciaTascaDTO;
 import es.uv.saic.dto.InstanciaTascaDTO;
 import es.uv.saic.dto.PdfDTO;
 import es.uv.saic.dto.PdfDTO;
+import es.uv.saic.dto.ProcesDTO;
+import es.uv.saic.dto.RolDTO;
+import es.uv.saic.dto.TascaDTO;
 import es.uv.saic.dto.TemplateDataDTO;
 import es.uv.saic.dto.TemplateDataDTO;
 import es.uv.saic.feign.PlantillaClient;
 import es.uv.saic.feign.PlantillaClient;
 import es.uv.saic.service.*;
 import es.uv.saic.service.*;
@@ -67,6 +79,16 @@ public class ProceduresController {
 	@Autowired
 	@Autowired
 	private OrganService ors;
 	private OrganService ors;
 	@Autowired
 	@Autowired
+    private ProcesService ps;
+    @Autowired
+    private TipusService tps;
+    @Autowired
+    private RolService rs;
+    @Autowired
+    private TascaService tas;
+	@Autowired
+	private EvidenciaIndicadorEnquestaService eies;
+	@Autowired
 	private PlantillaClient plc;
 	private PlantillaClient plc;
 	@Value("${saic.data.filePath}")
 	@Value("${saic.data.filePath}")
 	private String filePath;
 	private String filePath;
@@ -84,6 +106,13 @@ public class ProceduresController {
 	 * @param _new Optional parameter to indicate a new access
 	 * @param _new Optional parameter to indicate a new access
 	 * @return The name of the view to render
 	 * @return The name of the view to render
 	 */
 	 */
+
+	@GetMapping("/tipus/findAll")
+	public List<Tipus> findAll() {
+		return tps.findAll();
+	}
+	
+
 	@PostMapping("/procedures")
 	@PostMapping("/procedures")
 	public HashMap<String, Object> getActiveInstances(@RequestParam(required = false) String _new, @RequestParam String usuari) {
 	public HashMap<String, Object> getActiveInstances(@RequestParam(required = false) String _new, @RequestParam String usuari) {
 		HashMap<String, Object> model = new HashMap<>();
 		HashMap<String, Object> model = new HashMap<>();
@@ -523,5 +552,170 @@ public class ProceduresController {
 		List<String> flow = this.procesService.getFlowDiagram(proces);
 		List<String> flow = this.procesService.getFlowDiagram(proces);
 		return "graph TD \n" + String.join("\n", flow);
 		return "graph TD \n" + String.join("\n", flow);
 	}
 	}
+
+    @PostMapping("/proces/{id}")
+    public ResponseEntity<?> findById(@PathVariable Integer id) {
+        try {
+            Proces proces = ps.findByID(id);
+            ProcesDTO procesDTO = new ProcesDTO(proces);
+
+            return (procesDTO != null) ? ResponseEntity.ok(procesDTO) : ResponseEntity.badRequest().body("El proces con id " + id + " esta vacio");
+        } catch (Exception e) {
+             e.printStackTrace();
+            return ResponseEntity.badRequest().body("Error al obtener el proces por el id:" +  e.getMessage());
+        }
+    }
+    
+    @GetMapping("/proces/getAll")
+    public ResponseEntity<?> getAll() {
+        try {
+            List<Proces> proces = ps.getAll();
+            List<ProcesDTO> procesDTOList = new ArrayList<>();
+            
+            for(Proces pro: proces) {
+                procesDTOList.add(new ProcesDTO(pro));
+            }
+
+            return ResponseEntity.ok(procesDTOList);
+        } catch(Exception e) {
+            return ResponseEntity.badRequest().body("Error al obtener los centros");
+        }
+    }
+    
+    @PostMapping("/ajax/search/years")
+	public HashMap<String, Object> getYearsByCenterTitulation(
+			@RequestParam(name="centers[]", required=false) List<Integer> centres,
+			@RequestParam("titulations[]") List<Integer> titulacions, @RequestParam String usuari) throws IOException {
+            
+            HashMap<String, Object> model = new HashMap<>();
+            Usuari u = us.findByUsername(usuari);
+
+			List<DummyDataTransfer> supervisable_years = new ArrayList<DummyDataTransfer>();
+			if(centres == null) { centres = us.getSupervisableCentres(u); }
+			for(Integer c : ps.getSupervisableCursos(centres, titulacions)) {
+				DummyDataTransfer d = new DummyDataTransfer();
+				d.setValue(c);
+				d.setText(Integer.toString(c-1) + " - " + Integer.toString(c));
+				supervisable_years.add(d);
+			}
+			model.put("sup_years", supervisable_years);
+            model.put("redirect", "components/selector_cursos");
+		return model;
+	}
+
+    @PostMapping("/ajax/search/procedures")
+	public HashMap<String, Object> getProceduresByCenterTitulationYear(
+            @RequestParam(name="centers[]", required=false) List<Integer> centres,
+			@RequestParam("years[]") List<Integer> cursos,
+			@RequestParam("titulations[]") List<Integer> titulacions,
+            @RequestParam String usuari) throws IOException {	
+		
+        HashMap<String, Object> model = new HashMap<>();
+        Usuari u = us.findByUsername(usuari);
+
+        List<DummyDataTransfer> supervisable_procedures = new ArrayList<DummyDataTransfer>();
+		if(centres == null) { centres = us.getSupervisableCentres(u); }
+		for(Integer p_id : ps.getSupervisableProcedures(u, cursos, centres, titulacions)) {
+			DummyDataTransfer d = new DummyDataTransfer();
+			Proces p = ps.findByID(p_id);
+			d.setText(p.getNomProces());
+			d.setText2(p.getNomProces() + " " + p.getTitolCas());
+			d.setText3(p.getNomProces() + " " + p.getTitolVal());
+			supervisable_procedures.add(d);
+		}
+		
+		Set<String> set = new HashSet<>(supervisable_procedures.size());
+		supervisable_procedures.removeIf(p -> !set.add(p.getText()));
+		Collections.sort(supervisable_procedures, comparing(DummyDataTransfer::getText));
+		model.put("sup_procs", supervisable_procedures);
+		model.put("redirect", "components/selector_processos");
+
+		return model;
+	}
+
+    @PostMapping("/ajax/find/procedure")
+	public HashMap<String, Object> findProcedure(@RequestParam("procedure") String idProces, 
+			@RequestParam("action") String action) throws IOException {	
+		
+		HashMap<String, Object> model = new HashMap<>();
+		Proces p = new Proces();
+		model.put("action", action);
+		List<Tipus> tipus = tps.findAll();
+		List<Plantilla> templates = plc.findAll();
+		model.put("tipus", tipus);
+		model.put("templates", templates);
+		
+		
+		if(!idProces.equals("0") && (action.equals("duplicate") || action.equals("edit"))) {
+			p = ps.findByID(Integer.parseInt(idProces));
+			if(action.equals("duplicate")) {
+				p.setVersio(Integer.toString(Integer.parseInt(p.getVersio())+1));
+				p.setIdProces(p.getIdProces()+1);
+				p.setCursActivacio(Year.now().getValue());
+				p.setCursAvaluat(null);
+			}
+			model.put("tasks", this.tas.findByProces(Integer.parseInt(idProces)).stream().map(TascaDTO::new).toList());
+			model.put("procedure", p);
+			List<Rol> roles = rs.findAssignables();
+			model.put("roles", roles.stream().map(RolDTO::new).toList());
+			model.put("redirect", "components/form_procedure");
+            return model;
+		}
+		else if(!idProces.equals("0") && action.equals("remove")) {
+			p = ps.findByID(Integer.parseInt(idProces));
+			model.put("procedure", p);
+            model.put("redirect", "components/form_procedure_remove_confirm");
+			return model;
+		}
+		else {
+			model.put("procedure", p);
+			List<Rol> roles = rs.findAssignables();
+			model.put("roles", roles);
+            model.put("redirect", "components/form_procedure");
+			return model;
+		}	
+	}
+
+	@PostMapping("/ajax/template/form")
+	public HashMap<String, Object> formTemplate(@RequestParam("id") Integer idPlantilla,
+			@RequestParam("action") String action) throws IOException {	
+		
+		HashMap<String, Object> model = new HashMap<>();
+
+		if(action.equals("new")) {
+			Plantilla p = new Plantilla();
+			model.put("editable", true);
+			model.put("template", p);
+			model.put("redirect", "components/form_template");
+			return model;
+		}
+		else if(action.equals("edit")) {
+			Plantilla p = plc.findByID(idPlantilla);
+			model.put("editable", false);
+			model.put("template", p);
+			model.put("redirect", "components/form_template");
+			return model;
+		}
+		else if(action.equals("duplicate")) {
+			Plantilla p = plc.findByID(idPlantilla);
+			p.setVersio(p.getVersio()+1);
+			model.put("editable", true);
+			model.put("template", p);
+			model.put("redirect", "components/form_template");
+			return model;
+		}
+		model.put("redirect", "");
+		return model;
+	}
+
+	@GetMapping("/find/proces/{idProces}")
+	public Proces findProcesByID(@PathVariable Integer idProces) {
+		return ps.findByID(idProces);
+	}
+	
+	@GetMapping("/getByProcesEvidencia")
+	public List<EvidenciaIndicadorEnquesta> getByProcesEvidencia(@RequestParam String nomProces, @RequestParam String evidencia) {
+		return eies.getByProcesEvidencia(nomProces, evidencia);
+	}
 	
 	
 }
 }

+ 0 - 54
src/main/java/es/uv/saic/web/ProcesController.java

@@ -1,54 +0,0 @@
-package es.uv.saic.web;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.RestController;
-
-import es.uv.saic.domain.Proces;
-import es.uv.saic.dto.ProcesDTO;
-import es.uv.saic.service.ProcesService;
-
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.GetMapping;
-
-
-
-@RestController
-public class ProcesController {
-    @Autowired
-    private ProcesService procesService;
-
-    @PostMapping("/proces/{id}")
-    public ResponseEntity<?> findById(@PathVariable Integer id) {
-        try {
-            Proces proces = procesService.findByID(id);
-            ProcesDTO procesDTO = new ProcesDTO(proces);
-
-            return (procesDTO != null) ? ResponseEntity.ok(procesDTO) : ResponseEntity.badRequest().body("El proces con id " + id + " esta vacio");
-        } catch (Exception e) {
-             e.printStackTrace();
-            return ResponseEntity.badRequest().body("Error al obtener el proces por el id:" +  e.getMessage());
-        }
-    }
-    
-    @GetMapping("/proces/getAll")
-    public ResponseEntity<?> getAll() {
-        try {
-            List<Proces> proces = procesService.getAll();
-            List<ProcesDTO> procesDTOList = new ArrayList<>();
-            
-            for(Proces pro: proces) {
-                procesDTOList.add(new ProcesDTO(pro));
-            }
-
-            return ResponseEntity.ok(procesDTOList);
-        } catch(Exception e) {
-            return ResponseEntity.badRequest().body("Error al obtener los centros");
-        }
-    }
-    
-}

+ 10 - 2
src/main/java/es/uv/saic/web/SupervisionController.java

@@ -54,9 +54,13 @@ public class SupervisionController {
 	 * @return The name of the view to render
 	 * @return The name of the view to render
 	 */
 	 */
 	@PostMapping("/supervision")
 	@PostMapping("/supervision")
-	public HashMap<String, Object> supervisionForm(@RequestParam String usuario, @RequestBody SupervisionSearchParams ssp) {
+	public HashMap<String, Object> supervisionForm(@RequestParam String usuari, @RequestParam(required = false) SupervisionSearchParams ssp) {
 		HashMap<String, Object> model = new HashMap<>();
 		HashMap<String, Object> model = new HashMap<>();
-		Usuari u = us.findByUsername(usuario);
+
+		if(usuari.equals("procedures") || usuari.equals("evidences"))
+			usuari = "admin";
+
+		Usuari u = us.findByUsername(usuari);
 
 
 		List<DummyDataTransfer> supervisable_procs = new ArrayList<DummyDataTransfer>();
 		List<DummyDataTransfer> supervisable_procs = new ArrayList<DummyDataTransfer>();
 		List<DummyDataTransfer> supervisable_years = new ArrayList<DummyDataTransfer>();
 		List<DummyDataTransfer> supervisable_years = new ArrayList<DummyDataTransfer>();
@@ -218,6 +222,10 @@ public class SupervisionController {
 			@RequestParam(name="searchType", required=false) String searchType,
 			@RequestParam(name="searchType", required=false) String searchType,
 			@RequestParam String usuari) {
 			@RequestParam String usuari) {
 		HashMap<String, Object> model = new HashMap<>();
 		HashMap<String, Object> model = new HashMap<>();
+
+		if(usuari.equals("procedures") || usuari.equals("evidences"))
+			usuari = "admin";
+
 		Usuari u = us.findByUsername(usuari);
 		Usuari u = us.findByUsername(usuari);
 
 
 		model.put("location", "supervision");
 		model.put("location", "supervision");

+ 37 - 0
src/main/java/es/uv/saic/web/TascaController.java

@@ -1,9 +1,15 @@
 package es.uv.saic.web;
 package es.uv.saic.web;
 
 
+import java.io.IOException;
 import java.math.BigInteger;
 import java.math.BigInteger;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
 
 
+import es.uv.saic.domain.DummyDataTransfer;
 import es.uv.saic.domain.InstanciaTasca;
 import es.uv.saic.domain.InstanciaTasca;
 import es.uv.saic.domain.Tasca;
 import es.uv.saic.domain.Tasca;
+import es.uv.saic.dto.EvidenciaBuscadorDTO;
 import es.uv.saic.dto.InstanciaTascaDTO;
 import es.uv.saic.dto.InstanciaTascaDTO;
 import es.uv.saic.dto.NomProcesOrganDTO;
 import es.uv.saic.dto.NomProcesOrganDTO;
 import es.uv.saic.dto.ProcesDTO;
 import es.uv.saic.dto.ProcesDTO;
@@ -14,6 +20,8 @@ import es.uv.saic.service.TascaService;
 
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.ResponseEntity;
 import org.springframework.http.ResponseEntity;
+import org.springframework.security.core.Authentication;
+import org.springframework.ui.Model;
 import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.PathVariable;
@@ -95,4 +103,33 @@ public class TascaController {
             return ResponseEntity.badRequest().body("Error al obtener la instancia tasca: " + e.getMessage());
             return ResponseEntity.badRequest().body("Error al obtener la instancia tasca: " + e.getMessage());
         }
         }
     }
     }
+
+    // POST para buscar pas evidencias a partir del año, centro y titulación
+	@PostMapping("/ajax/search/evidences")
+	public HashMap<String, Object> getEvidencesByCenterTitulationYear(
+			@RequestParam(name="centers[]", required=false) List<Integer> centres,
+			@RequestParam("years[]") List<Integer> cursos,
+			@RequestParam("titulations[]") List<Integer> titulacions) throws IOException {	
+		
+        HashMap<String, Object> model = new HashMap<>();
+
+        List<DummyDataTransfer> supervisable_evs = new ArrayList<DummyDataTransfer>();
+		List<EvidenciaBuscadorDTO> evs_list = ts.getEvidenciesByCentreTitulacioCurs(centres, titulacions, cursos);		
+		for(EvidenciaBuscadorDTO e : evs_list) {
+			DummyDataTransfer c = new DummyDataTransfer();
+			c.setText(e.getCodiEvidencia());
+			c.setText2(e.getNomEvidenciaCas());
+			c.setText3(e.getNomEvidenciaVal());
+			supervisable_evs.add(c);
+		}
+		model.put("sup_evs", supervisable_evs);
+        model.put("redirect", "components/selector_evidencies");
+		return model;
+	}
+
+    @GetMapping("/getEvidencesByProcedure/{idProces}")
+    public List<EvidenciaBuscadorDTO> getEvidencesByProcedure(@PathVariable Integer idProces) {
+        return ts.getEvidencesByProcedure(idProces);
+    }
+    
 }
 }

+ 16 - 1
src/main/java/es/uv/saic/web/UsuariController.java

@@ -11,6 +11,7 @@ import es.uv.saic.domain.Rol;
 import es.uv.saic.domain.Usuari;
 import es.uv.saic.domain.Usuari;
 import es.uv.saic.domain.UsuarisRol;
 import es.uv.saic.domain.UsuarisRol;
 import es.uv.saic.dto.RolDTO;
 import es.uv.saic.dto.RolDTO;
+import es.uv.saic.dto.UsuariDTO;
 import es.uv.saic.service.RolService;
 import es.uv.saic.service.RolService;
 import es.uv.saic.service.UsuariService;
 import es.uv.saic.service.UsuariService;
 import es.uv.saic.service.UsuarisRolService;
 import es.uv.saic.service.UsuarisRolService;
@@ -18,6 +19,8 @@ import es.uv.saic.service.UsuarisRolService;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestParam;
+
 
 
 
 
 @RestController
 @RestController
@@ -50,7 +53,7 @@ public class UsuariController {
 		return urs.exists(usuari, tlugar, lugar);
 		return urs.exists(usuari, tlugar, lugar);
 	}
 	}
 
 
-    @GetMapping("/findAllRols")
+    @GetMapping("/find/allRols")
     public ResponseEntity<?> findAllRols() {
     public ResponseEntity<?> findAllRols() {
         try {
         try {
             List<Rol> rolList = rs.findAll();
             List<Rol> rolList = rs.findAll();
@@ -65,4 +68,16 @@ public class UsuariController {
              return ResponseEntity.badRequest().body("Error al obtener los roles: " +  e.getMessage());
              return ResponseEntity.badRequest().body("Error al obtener los roles: " +  e.getMessage());
         }
         }
     }
     }
+
+    @GetMapping("/find/allUsers")
+    public List<UsuariDTO> findAllUsers() {
+        return us.findAll().stream().map(UsuariDTO::new).toList();
+    }
+    
+    @GetMapping("/find/assignables")
+    public List<Rol> findAssignables() {
+        return rs.findAssignables();
+    }
+    
+
 }
 }