|
|
@@ -2,8 +2,6 @@ package es.uv.saic.web;
|
|
|
|
|
|
import java.io.IOException;
|
|
|
import java.text.CharacterIterator;
|
|
|
-import java.text.ParseException;
|
|
|
-import java.text.SimpleDateFormat;
|
|
|
import java.text.StringCharacterIterator;
|
|
|
import java.time.LocalDate;
|
|
|
import java.time.LocalDateTime;
|
|
|
@@ -16,7 +14,6 @@ import java.util.Comparator;
|
|
|
import java.util.Date;
|
|
|
import java.util.HashMap;
|
|
|
import java.util.List;
|
|
|
-import java.util.UUID;
|
|
|
import java.util.stream.Collectors;
|
|
|
import java.util.stream.Stream;
|
|
|
|
|
|
@@ -27,7 +24,6 @@ import org.springframework.beans.factory.annotation.Value;
|
|
|
import org.springframework.context.i18n.LocaleContextHolder;
|
|
|
import org.springframework.core.io.FileSystemResource;
|
|
|
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;
|
|
|
@@ -38,6 +34,14 @@ import org.springframework.web.bind.annotation.ResponseBody;
|
|
|
import org.springframework.web.bind.annotation.RestController;
|
|
|
import org.springframework.web.multipart.MultipartFile;
|
|
|
|
|
|
+import es.uv.saic.service.CategoriaService;
|
|
|
+import es.uv.saic.service.GraficaService;
|
|
|
+import es.uv.saic.service.InformeService;
|
|
|
+import es.uv.saic.service.InstanciaService;
|
|
|
+import es.uv.saic.service.LinkService;
|
|
|
+import es.uv.saic.service.OrganService;
|
|
|
+import es.uv.saic.service.UsuariService;
|
|
|
+import es.uv.saic.service.UsuarisRolService;
|
|
|
import es.uv.saic.shared.domain.Categoria;
|
|
|
import es.uv.saic.shared.domain.CursoValor;
|
|
|
import es.uv.saic.shared.domain.Document;
|
|
|
@@ -46,7 +50,6 @@ import es.uv.saic.shared.domain.Indicador;
|
|
|
import es.uv.saic.shared.domain.Informe;
|
|
|
import es.uv.saic.shared.domain.InformeProcessos;
|
|
|
import es.uv.saic.shared.domain.Instancia;
|
|
|
-import es.uv.saic.shared.domain.Link;
|
|
|
import es.uv.saic.shared.domain.Organ;
|
|
|
import es.uv.saic.shared.domain.Usuari;
|
|
|
import es.uv.saic.shared.domain.UsuarisRol;
|
|
|
@@ -57,7 +60,6 @@ import es.uv.saic.shared.dto.CategoriaDocumentDTO;
|
|
|
import es.uv.saic.shared.dto.DimensioInstanciesDTO;
|
|
|
import es.uv.saic.shared.dto.DocumentDTO;
|
|
|
import es.uv.saic.shared.dto.DocumentTmpDTO;
|
|
|
-import es.uv.saic.shared.dto.IndicadorDTO;
|
|
|
import es.uv.saic.shared.dto.IndicadorDTOimp;
|
|
|
import es.uv.saic.shared.dto.InstanciaDTO;
|
|
|
import es.uv.saic.shared.dto.InstanciaGanttDTO;
|
|
|
@@ -70,14 +72,6 @@ import es.uv.saic.shared.dto.TreeDTOOrgan;
|
|
|
import es.uv.saic.shared.dto.UsuarisRolDTO;
|
|
|
import es.uv.saic.shared.feign.DocumentClient;
|
|
|
import es.uv.saic.shared.feign.IndicadorClient;
|
|
|
-import es.uv.saic.service.CategoriaService;
|
|
|
-import es.uv.saic.service.GraficaService;
|
|
|
-import es.uv.saic.service.InformeService;
|
|
|
-import es.uv.saic.service.InstanciaService;
|
|
|
-import es.uv.saic.service.LinkService;
|
|
|
-import es.uv.saic.service.OrganService;
|
|
|
-import es.uv.saic.service.UsuariService;
|
|
|
-import es.uv.saic.service.UsuarisRolService;
|
|
|
|
|
|
@RestController
|
|
|
@RequestMapping("/dashboard")
|
|
|
@@ -87,7 +81,6 @@ public class DashboardController {
|
|
|
private OrganService os;
|
|
|
@Autowired
|
|
|
private UsuarisRolService urs;
|
|
|
-
|
|
|
@Autowired
|
|
|
private UsuariService us;
|
|
|
@Autowired
|
|
|
@@ -109,9 +102,6 @@ public class DashboardController {
|
|
|
@Autowired
|
|
|
private IndicadorClient ic;
|
|
|
|
|
|
- @Value("${saic.url.public}")
|
|
|
- private String publicUrl;
|
|
|
-
|
|
|
@Value("${saic.data.templates.fileNotFound}")
|
|
|
private String fileNotFound;
|
|
|
|
|
|
@@ -125,16 +115,14 @@ public class DashboardController {
|
|
|
Usuari u = us.findByUsername(usuari);
|
|
|
boolean showCentres = false;
|
|
|
|
|
|
- if(urs.isGrantedUser(u)){
|
|
|
+ List<UsuarisRol> rols = this.urs.findActiveRols(u);
|
|
|
+
|
|
|
+ if(rols.stream().anyMatch(r -> r.getOrgan().getId().getTlugar().equals("U"))){
|
|
|
Organ o = os.findByID("C", 0);
|
|
|
model.put("organ", o.getRuct());
|
|
|
return model;
|
|
|
- }
|
|
|
- else if(urs.isGrantedSupervisor(u)) {
|
|
|
- titulacions = os.getTitulacions().stream().filter(o -> o.getOrgan().getId().getLugar() != 99).collect(Collectors.toList());
|
|
|
}
|
|
|
- else {
|
|
|
- List<UsuarisRol> rols = this.urs.findActiveRols(u);
|
|
|
+ else {
|
|
|
for(UsuarisRol rol : rols) {
|
|
|
if(rol.getOrgan().getId().getTlugar().equals("C")) {
|
|
|
titulacions.addAll(this.os.findTitulacionsByCentre(Arrays.asList(rol.getOrgan().getId().getLugar())));
|
|
|
@@ -205,7 +193,7 @@ public class DashboardController {
|
|
|
List<Categoria> c = cs.findFirstLevel(o.getId().getTlugar());
|
|
|
model.put("organ", new OrganDTO(o));
|
|
|
model.put("categories", c);
|
|
|
- model.put("editable", (u.isAdmin() || (u.isGranted())));
|
|
|
+ model.put("editable", (urs.isAdminUser(u) || (urs.isGrantedUser(u))));
|
|
|
model.put("showCentres", false);
|
|
|
if(o.getTambit().equals("C") && o.getId().getTlugar().equals("C") && o.getId().getLugar() == 0) {
|
|
|
model.put("showCentres", true);
|
|
|
@@ -379,11 +367,14 @@ public class DashboardController {
|
|
|
List<Categoria> catChilds = cs.findByPareTambitAndU(c.getIdCategoria(), o.getTambit());
|
|
|
for(Categoria cc : catChilds) {
|
|
|
Document doc = findByCategoriaOrgan(cc.getIdCategoria(), o.getId().getLugar(), o.getId().getTlugar());
|
|
|
+ if(doc == null){
|
|
|
+ doc = findByCategoriaOrgan(cc.getIdCategoria(), o.getOrgan().getId().getLugar(), o.getOrgan().getId().getTlugar());
|
|
|
+ }
|
|
|
if(doc != null) {
|
|
|
DocumentDTO docdto = new DocumentDTO(locale.equals("es") ? cc.getNomCas() : cc.getNomVal(),
|
|
|
doc.getIdDocument().toString(),
|
|
|
- String.format("%td-%<tm-%<tY", doc.getData()) + "(" + this.getSize(doc.getRuta()) + ")"
|
|
|
- );
|
|
|
+ String.format("%td-%<tm-%<tY", doc.getData()),
|
|
|
+ this.getSize(doc.getRuta()));
|
|
|
cat.getChildren().add(docdto);
|
|
|
}
|
|
|
}
|
|
|
@@ -431,7 +422,6 @@ public class DashboardController {
|
|
|
}
|
|
|
data.addAll(instancies);
|
|
|
|
|
|
- //TODO Esto peta
|
|
|
Collections.sort(data, new Comparator<InstanciaGanttDTO>() {
|
|
|
@Override
|
|
|
public int compare(InstanciaGanttDTO a, InstanciaGanttDTO b) {
|
|
|
@@ -567,47 +557,6 @@ public class DashboardController {
|
|
|
public List<Indicador> getGraphDataByRuct(@PathVariable Integer ruct) throws ParserConfigurationException {
|
|
|
return getGraphDataByRuctTambit(ruct, null);
|
|
|
}
|
|
|
-
|
|
|
- @GetMapping("/links/{ruct}")
|
|
|
- @ResponseBody
|
|
|
- public List<Link> getLinks(@PathVariable Integer ruct) {
|
|
|
- List<Link> links = this.ls.findByRuct(ruct);
|
|
|
- for(Link l : links){
|
|
|
- l.setLink(publicUrl+l.getLink());
|
|
|
- }
|
|
|
- return this.ls.findByRuct(ruct);
|
|
|
- }
|
|
|
-
|
|
|
- @PostMapping("/links/{ruct}")
|
|
|
- @ResponseBody
|
|
|
- public Link createLink(@PathVariable Integer ruct, @RequestParam String dataExp) throws ParseException {
|
|
|
-
|
|
|
- String token = UUID.randomUUID().toString();
|
|
|
- SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
|
|
|
- Date date = formatter.parse(dataExp);
|
|
|
-
|
|
|
- Link l = new Link();
|
|
|
- l.setRuct(ruct);
|
|
|
- l.setData(new Date(System.currentTimeMillis()));
|
|
|
- l.setDataExp(date);
|
|
|
- l.setToken(token);
|
|
|
- l.setLink("/shared/"+token);
|
|
|
- l.setVisites(0);
|
|
|
- this.ls.save(l);
|
|
|
-
|
|
|
- return l;
|
|
|
- }
|
|
|
-
|
|
|
- @DeleteMapping("/links/{id}")
|
|
|
- @ResponseBody
|
|
|
- public Integer deleteLink(@PathVariable Integer id) {
|
|
|
- Link l = this.ls.findById(id);
|
|
|
- if(l != null){
|
|
|
- this.ls.delete(l);
|
|
|
- return id;
|
|
|
- }
|
|
|
- return 0;
|
|
|
- }
|
|
|
|
|
|
// Función encargada de cargar a los managers a partir del centro y titulación
|
|
|
public void loadManagers(Model model, Integer centre, Integer titulacio) {
|
|
|
@@ -664,7 +613,7 @@ public class DashboardController {
|
|
|
|
|
|
// Función para comprobar si un usario esta permitido para hacer una acción
|
|
|
public boolean isSuitable(Organ o, Usuari u) {
|
|
|
- if(u.isAdmin() || u.isGranted()) {
|
|
|
+ if(urs.isAdminUser(u) || urs.isGrantedUser(u)) {
|
|
|
return true;
|
|
|
}
|
|
|
else if(this.urs.exists(u.getUsuari(), o.getId().getTlugar(), o.getId().getLugar())) {
|