فهرست منبع

Modificada y traspasada la lógica de los indicadores

Mario Martínez Hernández 1 ماه پیش
والد
کامیت
64c1779071

+ 6 - 1
src/main/java/es/uv/saic/config/WebConfig.java

@@ -1,11 +1,15 @@
 package es.uv.saic.config;
 
+import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; 
+import org.springframework.boot.servlet.MultipartConfigFactory;
+import org.springframework.boot.tomcat.servlet.TomcatServletWebServerFactory;
+import org.springframework.boot.web.server.WebServerFactoryCustomizer;
 import org.springframework.boot.web.servlet.FilterRegistrationBean;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.core.Ordered;
+import org.springframework.util.unit.DataSize;
 import org.springframework.web.filter.ForwardedHeaderFilter;
 import org.springframework.web.servlet.LocaleResolver;
 import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
@@ -13,6 +17,7 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
 import org.springframework.web.servlet.i18n.LocaleChangeInterceptor;
 
 import jakarta.servlet.DispatcherType;
+import jakarta.servlet.MultipartConfigElement;
 
 @Configuration
 public class WebConfig implements WebMvcConfigurer{

+ 0 - 140
src/main/java/es/uv/saic/domain/Dimension.java

@@ -1,140 +0,0 @@
-package es.uv.saic.domain;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class Dimension {
-
-	private String titulacion;
-	private String dimension;
-	private List<Indicador> indicadores;
-	
-	public Dimension(){}
-	public Dimension(String titulacion, String dimension) {
-		this.titulacion = titulacion;
-		this.dimension = dimension;
-		this.indicadores = new ArrayList<Indicador>();
-	}
-	
-	public String getTitulacion() {
-		return titulacion;
-	}
-	
-	public void setTitulacion(String titulacion) {
-		this.titulacion = titulacion;
-	}
-	
-	public String getDimension() {
-		return dimension;
-	}
-	
-	public void setDimension(String dimension) {
-		this.dimension = dimension;
-	}
-	public List<Indicador> getIndicadores() {
-		return indicadores;
-	}
-	
-	public void setIndicadores(List<Indicador> indicadores) {
-		this.indicadores = indicadores;
-	}
-	
-	public boolean add(Indicador arg0) {
-		return indicadores.add(arg0);
-	}
-	
-	public Indicador get(int arg0) {
-		return indicadores.get(arg0);
-	}
-	
-	public boolean isEmpty() {
-		return indicadores.isEmpty();
-	}
-	
-	public Indicador set(int arg0, Indicador arg1) {
-		return indicadores.set(arg0, arg1);
-	}
-	
-	public int size() {
-		return indicadores.size();
-	}
-
-	public Indicador newIndicador(String indicador) {
-		return new Indicador(indicador);
-	}
-
-	public class Indicador{
-		private String indicador;
-		private List<Indicador> subindicadores;
-		private List<CursoValor> valores;
-		
-		public Indicador(){}
-		public Indicador(String indicador){
-			this.indicador = indicador;
-			this.valores = new ArrayList<CursoValor>();
-			this.subindicadores = new ArrayList<Indicador>();
-		}
-
-		public String getIndicador() {
-			return this.indicador;
-		}
-		
-		public void setIndicador(String indicador) {
-			this.indicador = indicador;
-		}
-		
-		public List<CursoValor> getValores() {
-			return this.valores;
-		}
-	
-		public boolean add(CursoValor arg0) {
-			return this.valores.add(arg0);
-		}
-	
-		public boolean isEmpty() {
-			return this.valores.isEmpty();
-		}
-	
-		public int size() {
-			return this.valores.size();
-		}
-		
-		public boolean addCursoValor(String curso, String valor) {
-			return this.add(new CursoValor(curso, valor));
-		}
-
-		public boolean addSubindicador(Indicador arg0) {
-			return this.subindicadores.add(arg0);
-		}
-		
-		public List<Indicador> getSubindicadores(){
-			return this.subindicadores;
-		}
-
-		public class CursoValor{
-			private String curso;
-			private String valor;
-			
-			public CursoValor(){ }
-			
-			public CursoValor(String curso, String valor) {
-				this.curso = curso;
-				this.valor = valor;
-			}
-			
-			public String getCurso() {
-				return curso;
-			}
-			public void setCurso(String curso) {
-				this.curso = curso;
-			}
-			public String getValor() {
-				return valor;
-			}
-			public void setValor(String valor) {
-				this.valor = valor;
-			}
-		}
-	}
-	
-}

+ 1 - 1
src/main/java/es/uv/saic/feign/DocumentClient.java

@@ -65,7 +65,7 @@ public interface DocumentClient {
 
     @GetMapping(value="/test/template2/{titulacio}/{centre}/{evidencia}/{curs}/{tipusTasca}", produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
 	@ResponseBody
-	public byte[] testTemplate(@PathVariable("titulacio") Integer idTitulacio, @PathVariable("centre") Integer idCentre,
+	public ResponseEntity<byte[]> testTemplate(@PathVariable("titulacio") Integer idTitulacio, @PathVariable("centre") Integer idCentre,
 			@PathVariable("evidencia") String evidencia, @PathVariable("curs") Integer curs,
             @PathVariable("tipusTasca") Integer tipusTasca);
 

+ 4 - 1
src/main/java/es/uv/saic/feign/IndicadorClient.java

@@ -10,7 +10,7 @@ import org.springframework.web.bind.annotation.PostMapping;
 
 import es.uv.saic.domain.IndicadorEnquesta;
 
-@FeignClient(name = "saic-core-service", contextId = "indicador-controller")
+@FeignClient(name = "saic-data-service", contextId = "indicador-controller")
 public interface IndicadorClient {
     @GetMapping("/indicadorEnquesta")
     List<String> findTypes();
@@ -39,4 +39,7 @@ public interface IndicadorClient {
     @PostMapping("/indicadorEnquesta/{enquesta}/{curs}/{ambit}/{estudi}/{centre}/{titulacio}")
     public List<IndicadorEnquesta> findByEnquestaCursAmbitEstudiCentreTitulacio(@PathVariable("enquesta") String enquesta, @PathVariable("curs") Integer curs, 
         @PathVariable("ambit") String ambit, @PathVariable("estudi") String estudi, @PathVariable("centre") String centre, @PathVariable("titulacio") String titulacio);
+
+    @GetMapping("/indicadorEnquesta/{ruct}/{curs}")
+    public List<IndicadorEnquesta> getAllIndsByRuct(@PathVariable Integer ruct, @PathVariable Integer curs);
 }

+ 0 - 4
src/main/java/es/uv/saic/feign/OrganClient.java

@@ -11,7 +11,6 @@ import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestParam;
 
-import es.uv.saic.domain.IndicadorEnquesta;
 import es.uv.saic.domain.Usuari;
 import es.uv.saic.dto.OrganDTO;
 
@@ -25,9 +24,6 @@ public interface OrganClient {
 
     @GetMapping("/organ/titulacions")
     public List<OrganDTO> getTitulacionsWithCentre();
-    
-    @GetMapping("/organ/indicadors/{ruct}/{curs}")
-    public List<IndicadorEnquesta> getAllIndsByRuct(@PathVariable Integer ruct, @PathVariable Integer curs);
 
     @GetMapping("/organ/find/{tlugar}/{idTitulacio}")
     public OrganDTO findByID(@PathVariable String tlugar,  @PathVariable Integer idTitulacio);

+ 2 - 5
src/main/java/es/uv/saic/web/AdminController.java

@@ -302,13 +302,10 @@ public class AdminController {
 	@Secured({"ROLE_ADMIN", "ROLE_MANAGER"})
 	public void removeUserrole(Model model, Authentication auth, HttpServletResponse response, HttpSession session, @RequestParam("idRol") Integer idRol, 
 			@RequestParam("usuari") String usuari, @RequestParam("lugar") Integer lugar, @RequestParam("tlugar") String tlugar) throws IOException{
-		
+
 		HashMap<String, Object> map = ac.removeUserrole(idRol, usuari, lugar, tlugar);
-				
-		session.setAttribute("respCentres", (List<Integer>) map.get("respCentres"));
-		session.setAttribute("respTitulacions", (List<Integer>) map.get("respTitulacions"));
 
-		response.sendRedirect("/dashboard");
+	    response.sendRedirect("/dashboard");
 	}
 	
 	// POST para añadir un nuevo usuario al sistema

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

@@ -196,7 +196,7 @@ public class DataController {
 	@ResponseBody
 	public List<IndicadorEnquesta> show(Model model, Authentication auth, @PathVariable Integer ruct, 
 			@PathVariable Integer curs) throws IOException { 
-        return oc.getAllIndsByRuct(ruct, curs);
+        return ic.getAllIndsByRuct(ruct, curs);
 	}
 	
 	// POST que muestra los datos del curso actual

+ 16 - 0
src/main/java/es/uv/saic/web/DownloadController.java

@@ -106,4 +106,20 @@ public class DownloadController {
 		PdfDTO pdf = new PdfDTO(content, idtascai);
 		return dc.downloadTemplatePdf(pdf);
 	}
+
+	@GetMapping(value="/test/template2/{titulacio}/{centre}/{evidencia}/{curs}/{tipusTasca}", produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
+	@ResponseBody
+	public FileSystemResource testTemplate(Model model, @PathVariable("titulacio") Integer idTitulacio, @PathVariable("centre") Integer idCentre,
+			@PathVariable("evidencia") String evidencia, @PathVariable("curs") Integer curs, @PathVariable("tipusTasca") Integer tipusTasca) throws IOException, XDocReportException {
+		
+		ResponseEntity<byte[]> response = dc.testTemplate(idTitulacio, idCentre, evidencia, curs, tipusTasca);
+		byte[] data = response.getBody();
+		String fileName = response.getHeaders().getFirst("Content-Disposition").split("filename=")[1].replace("\"", "");
+
+		Path tempFile = Files.createTempFile( "download-", "-" + fileName);
+		Files.write(tempFile, data);
+		tempFile.toFile().deleteOnExit();
+
+		return new FileSystemResource(tempFile.toFile());
+	}
 }

+ 0 - 1
src/main/java/es/uv/saic/web/OrganController.java

@@ -19,7 +19,6 @@ import es.uv.saic.domain.Usuari;
 import es.uv.saic.dto.OrganDTO;
 import es.uv.saic.feign.OrganClient;
 import jakarta.servlet.http.HttpSession;
-import org.springframework.web.bind.annotation.RequestBody;
 
 
 @Controller

+ 11 - 11
src/main/resources/application-local.properties

@@ -21,17 +21,17 @@ spring.datasource.url=jdbc:postgresql://saicd.uv.es:5432/saic_v2
 spring.datasource.password=docent1ia2.l6
 
 # Files and log config
-saic.data.filePath=/home/dagarcos/DATA_SYNC/UV_APPS/SAIC/DATA/saic-data/files/
-saic.data.tmpPath=/home/dagarcos/DATA_SYNC/UV_APPS/SAIC/DATA/saic-data/tmp/
-saic.data.docsPath=/home/dagarcos/DATA_SYNC/UV_APPS/SAIC/DATA/saic-data/documents/
-saic.data.templates.filePath = /home/dagarcos/DATA_SYNC/UV_APPS/SAIC/DATA/saic-data/templates/
-saic.data.templates.logoPath = /home/dagarcos/DATA_SYNC/UV_APPS/SAIC/DATA/saic-data/templates/logos/
-saic.data.templates.fileNotFound = /home/dagarcos/DATA_SYNC/UV_APPS/SAIC/DATA/saic-data/utils/filenotfound.pdf
-saic.data.master = /home/dagarcos/DATA_SYNC/UV_APPS/SAIC/DATA/saic-data/databases/MasterOficial/
-saic.data.doctorado = /home/dagarcos/DATA_SYNC/UV_APPS/SAIC/DATA/saic-data/databases/doctorat/
-saic.data.evdocente = /home/dagarcos/DATA_SYNC/UV_APPS/SAIC/DATA/saic-data/databases/ev_docente/latest/
-logging.file.path=/home/dagarcos/DATA_SYNC/UV_APPS/SAIC/DATA/saic-data/logs
-logging.file.name=/home/dagarcos/DATA_SYNC/UV_APPS/SAIC/DATA/saic-data/logsd/saic.log
+saic.data.filePath=/home/mariomh/Documentos/SAIC/docs/files/
+saic.data.tmpPath=/home/mariomh/Documentos/SAIC/docs/tmp/
+saic.data.docsPath=/home/mariomh/Documentos/SAIC/docs/documents/
+saic.data.templates.filePath = /home/mariomh/Documentos/SAIC/docs/templates/
+saic.data.templates.logoPath = /home/mariomh/Documentos/SAIC/docs/templates/logos/
+saic.data.templates.fileNotFound = /home/mariomh/Documentos/SAIC/docs/filenotfound.pdf
+saic.data.master = /home/mariomh/Documentos/SAIC/docs/databases/MasterOficial/
+saic.data.doctorado = /home/mariomh/Documentos/SAIC/docs/databases/doctorat/
+saic.data.evdocente = /home/mariomh/Documentos/SAIC/docs/databases/ev_docente/latest/
+logging.file.path=/home/mariomh/Documentos/SAIC/docs/logs
+logging.file.name=/home/mariomh/Documentos/SAIC/docs/logs/saic.log
 
 # Scheduler
 saic.scheduler.expired.enabled=false

+ 1 - 0
src/main/resources/messages_ca.properties

@@ -164,6 +164,7 @@ managers.search = Cercar
 managers.search.title = Resultats de la cerca
 managers.noResults = No s'ha trobar cap responsable amb els criteris de cerca seleccionats
 managers.since = des del
+managers.remove.confirm = Está segur de que vol eliminar aquest responsable? Esta acció no es irreversible
 
 ##########################################
 #	ADMIN PAGE LOCALES

+ 2 - 1
src/main/resources/messages_es.properties

@@ -164,7 +164,8 @@ managers.titulations = Titulación(es)
 managers.search = Buscar
 managers.search.title = Resultados de la búsqueda
 managers.noResults = No se ha encontrado ningun responsable con los criterios seleccionados
-managers.since = desde del
+managers.since = desde el
+managers.remove.confirm = ¿Está seguro de que desea eliminar este responsable? Esta acción no se podrá deshacer
 
 ##########################################
 #	ADMIN PAGE LOCALES

+ 19 - 14
src/main/resources/templates/adminCalendar.html

@@ -174,9 +174,11 @@
 	        </div>
 	        <div class="modal-body">
 	        	<div class="container-fluid">
-	        		<span class="btn btn-danger pointer" style="float:right;margin-top:-50px;width:40px;height:38px;border-radius:40px;" onclick="deleteEvent();" id="deletebtn" th:title="#{admin.calendar.form.delete}"><i class="fas fa-trash"></i></span>
-	        		<span class="btn btn-secondary pointer" style="float:right;margin-top:-50px;width:40px;height:38px;border-radius:40px;" onclick="copyEvent();" id="copybtn" th:title="'Copiar'"><i class="fas fa-copy"></i></span>
-	        		<button type="button" class="btn btn-primary" style="float:right;margin-right:50px;margin-top:-50px;width:40px;height:38px;border-radius:40px;" onclick="instantiate();" id="instantiatebtn" th:title="#{admin.calendar.form.instanciar}"><i class="fas fa-step-forward"></i></button>
+	        	<div style="position:absolute; top:10px; right:15px; display:flex; gap:5px;">
+	        		<span class="btn btn-danger pointer" style="width:40px;height:38px;border-radius:40px;" onclick="deleteEvent();" id="deletebtn" th:title="#{admin.calendar.form.delete}"><i class="fas fa-trash"></i></span>
+	        		<span class="btn btn-secondary pointer" style="width:40px;height:38px;border-radius:40px;" onclick="copyEvent();" id="copybtn" th:title="'Copiar'"><i class="fas fa-copy"></i></span>
+	        		<button type="button" class="btn btn-primary" style="width:40px;height:38px;border-radius:40px;" onclick="instantiate();" id="instantiatebtn" th:title="#{admin.calendar.form.instanciar}"><i class="fas fa-step-forward"></i></button>
+	        	</div>
 			    	<form id="editInstanceForm" style="margin-top:50px;">
 			    		<input type="hidden" id="eid" value="">
 						<div class="uv-table-group-procedure">
@@ -460,15 +462,18 @@
 		}
 		
 		function deleteEvent(){
-			$.ajax({
-			    url: '/calendar',
-			    type: 'DELETE',
-			    data: {id:$('#eid').val()},
-			    success: function(d) {
-			    	calendar.removeAllEvents();
-					initCalendar();
-			    }
-			});
+			if (confirm("¿Estás seguro de que quieres borrar esta instancia?")) {
+				$.ajax({
+				    url: '/calendar',
+				    type: 'DELETE',
+				    data: {id:$('#eid').val()},
+				    success: function(d) {
+				    	calendar.removeAllEvents();
+						initCalendar();
+						$('#editInstanceModal').modal('hide');
+				    }
+				});
+			}
 		}
 						
 		function setEditData(id){
@@ -480,7 +485,7 @@
 			}
 			else if(tmpEvent.status === 'E'){
 				$('#instantiatebtn').show();
-				$('#deletebtn').show();
+				$('#deletebtn').hide();
 				$('#editbtn').hide();
 				$('.editFormItem').prop("disabled", true);
 			}
@@ -499,7 +504,7 @@
 				$("#ecentresSelector").html(data).selectpicker('refresh'); 
 				$('#ecentresSelector').val(tmpEvent.centres).trigger('change');
 				var params = {'procedure':$('#eproceduresSelector').val(), 'centers[]':$('#ecentresSelector').val()};
-				$.post("/find/titulacions2", params, function(data){ 
+				$.post("/find/titulations2", params, function(data){ 
 					$("#etitulacionsSelector").html(data).selectpicker('refresh'); 
 					$('#etitulacionsSelector').val(tmpEvent.titulacions).trigger('change');
 				});

+ 3 - 3
src/main/resources/templates/adminProcedures.html

@@ -152,7 +152,7 @@
 	});
 	
 	function formNew(){
-		$.put("/find/procedure", {procedure:0, action:"new"}, function(rawData){ 
+		$.post("/find/procedure", {procedure:0, action:"new"}, function(rawData){ 
 			$('#formFields').html(rawData);
 			$('.selectpicker').selectpicker('refresh');
 			$('#formFields').show();
@@ -162,7 +162,7 @@
 	}
 	
 	function formDuplicate(){
-		$.put("/find/procedure", {procedure:$('#proceduresSelector').val(), action:"duplicate"}, function(rawData){ 
+		$.post("/find/procedure", {procedure:$('#proceduresSelector').val(), action:"duplicate"}, function(rawData){ 
 			$('#formFields').html(rawData);
 			$('.selectpicker').selectpicker('refresh');
 			$('#formFields').find('.datepicker').datepicker({
@@ -178,7 +178,7 @@
 	}
 	
 	function formRemove(){
-		$.delete("/find/procedure", {procedure:$('#proceduresSelector').val(), action:"remove"}, function(rawData){ 
+		$.post("/find/procedure", {procedure:$('#proceduresSelector').val(), action:"remove"}, function(rawData){ 
 			$('#formFields').html(rawData);
 			$('.selectpicker').selectpicker('refresh');
 			$('#formFields').show();