|
|
@@ -0,0 +1,844 @@
|
|
|
+package es.uv.saic.web;
|
|
|
+
|
|
|
+import java.io.File;
|
|
|
+import java.io.IOException;
|
|
|
+import java.math.BigInteger;
|
|
|
+import java.nio.file.Files;
|
|
|
+import java.nio.file.Paths;
|
|
|
+import java.text.ParseException;
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
+import java.time.LocalDate;
|
|
|
+import java.time.ZoneId;
|
|
|
+import java.time.format.DateTimeFormatter;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.Arrays;
|
|
|
+import java.util.Calendar;
|
|
|
+import java.util.HashMap;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.stream.Stream;
|
|
|
+
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.beans.factory.annotation.Value;
|
|
|
+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.PutMapping;
|
|
|
+import org.springframework.web.bind.annotation.RequestBody;
|
|
|
+import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
+import org.springframework.web.bind.annotation.RequestParam;
|
|
|
+import org.springframework.web.bind.annotation.RestController;
|
|
|
+
|
|
|
+import es.uv.saic.shared.domain.Acreditacio;
|
|
|
+import es.uv.saic.shared.domain.AcreditacioTransfer;
|
|
|
+import es.uv.saic.shared.domain.Email;
|
|
|
+import es.uv.saic.shared.domain.EvidenciaIndicadorEnquesta;
|
|
|
+import es.uv.saic.shared.domain.EvidenciaIndicadorEnquestaPK;
|
|
|
+import es.uv.saic.shared.domain.Instancia;
|
|
|
+import es.uv.saic.shared.domain.InstanciaTasca;
|
|
|
+import es.uv.saic.shared.domain.Organ;
|
|
|
+import es.uv.saic.shared.domain.Proces;
|
|
|
+import es.uv.saic.shared.domain.Rol;
|
|
|
+import es.uv.saic.shared.domain.Tasca;
|
|
|
+import es.uv.saic.shared.domain.Usuari;
|
|
|
+import es.uv.saic.shared.domain.UsuarisRol;
|
|
|
+import es.uv.saic.shared.dto.ProcedureRequestDTO;
|
|
|
+import es.uv.saic.shared.dto.ProcesDTO;
|
|
|
+import es.uv.saic.shared.dto.TascaDTO;
|
|
|
+import es.uv.saic.shared.feign.IndicadorClient;
|
|
|
+import es.uv.saic.service.AcreditacioService;
|
|
|
+import es.uv.saic.service.EmailService;
|
|
|
+import es.uv.saic.service.InstanciaService;
|
|
|
+import es.uv.saic.service.InstanciaTascaService;
|
|
|
+import es.uv.saic.service.InstanciaTascaVerService;
|
|
|
+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;
|
|
|
+import es.uv.saic.service.UsuarisRolService;
|
|
|
+import tools.jackson.databind.ObjectMapper;
|
|
|
+
|
|
|
+@RestController
|
|
|
+@RequestMapping("/admin")
|
|
|
+public class AdminController {
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private OrganService os;
|
|
|
+ @Autowired
|
|
|
+ private ProcesService ps;
|
|
|
+ @Autowired
|
|
|
+ private InstanciaService is;
|
|
|
+ @Autowired
|
|
|
+ private InstanciaTascaService its;
|
|
|
+ @Autowired
|
|
|
+ private InstanciaTascaVerService itsver;
|
|
|
+ @Autowired
|
|
|
+ private UsuariService us;
|
|
|
+ @Autowired
|
|
|
+ private RolService rs;
|
|
|
+ @Autowired
|
|
|
+ private UsuarisRolService urs;
|
|
|
+ @Autowired
|
|
|
+ private TascaService ts;
|
|
|
+ @Autowired
|
|
|
+ private TipusService tps;
|
|
|
+ @Autowired
|
|
|
+ private EmailService es;
|
|
|
+ @Autowired
|
|
|
+ private AcreditacioService as;
|
|
|
+ @Value("${saic.data.filePath}")
|
|
|
+ private String filePath;
|
|
|
+ @Value("${saic.data.templates.filePath}")
|
|
|
+ private String templatePath;
|
|
|
+ @Autowired
|
|
|
+ private IndicadorClient ic;
|
|
|
+
|
|
|
+ public static final String DDMMYYYY = "dd/MM/yyyy";
|
|
|
+
|
|
|
+ public static final Map<Integer, String> acreditaGroups =
|
|
|
+ Map.of(
|
|
|
+ 1, "ENERO",
|
|
|
+ 4, "ABRIL",
|
|
|
+ 9, "SEPTIEMBRE",
|
|
|
+ 10, "NOVIEMBRE"
|
|
|
+ );
|
|
|
+
|
|
|
+ @PostMapping("/instance")
|
|
|
+ public HashMap<String, Object> instantiate(@RequestParam("procedure") Integer idProces,
|
|
|
+ @RequestParam("center") Integer idCentre,
|
|
|
+ @RequestParam("titulation") Integer idTitulacio) {
|
|
|
+ HashMap<String, Object> map = new HashMap<>();
|
|
|
+ Proces p = ps.findByID(idProces);
|
|
|
+ List<String> errorCas = new ArrayList<String>();
|
|
|
+ List<String> errorVal = new ArrayList<String>();
|
|
|
+ List<String> successCas = new ArrayList<String>();
|
|
|
+ List<String> successVal = new ArrayList<String>();
|
|
|
+
|
|
|
+ if (p.getAmbit().equals("U")) { // Type U procedure
|
|
|
+ Organ centre = os.findByID("C", idCentre);
|
|
|
+ BigInteger idInstancia = is.instantiateU(idProces, idTitulacio);
|
|
|
+ if (!idInstancia.equals(BigInteger.valueOf(0))) {
|
|
|
+ InstanciaTasca activa = its.findActiveByInstancia(idInstancia);
|
|
|
+ for (Usuari u : us.getInstanceAsignedUsers(idInstancia)) {
|
|
|
+ Email email = new Email();
|
|
|
+ email.setUsuari(u);
|
|
|
+ email.setInstanciaTasca(activa);
|
|
|
+ es.addEmail(email);
|
|
|
+ }
|
|
|
+ successCas.add("Procediment: " + p.getNomProces() + ", Centre: " + centre.getNomCas());
|
|
|
+ successVal.add("Procediment: " + p.getNomProces() + ", Centre: " + centre.getNomVal());
|
|
|
+ map.put("success", true);
|
|
|
+ } else {
|
|
|
+ errorCas.add("Procediment: " + p.getNomProces() + ", Centre: " + centre.getNomCas());
|
|
|
+ errorVal.add("Procediment: " + p.getNomProces() + ", Centre: " + centre.getNomVal());
|
|
|
+ map.put("error", true);
|
|
|
+ }
|
|
|
+ } else if (idTitulacio > 2 && p.getAmbit().equals("T")) { // Type T procedure for one place
|
|
|
+ Organ o = os.findByID("T", idTitulacio);
|
|
|
+ BigInteger idInstancia = is.instantiateT(idProces, idTitulacio);
|
|
|
+ if (!idInstancia.equals(BigInteger.valueOf(0))) {
|
|
|
+ InstanciaTasca activa = its.findActiveByInstancia(idInstancia);
|
|
|
+ for (Usuari u : us.getInstanceAsignedUsers(idInstancia)) {
|
|
|
+ Email email = new Email();
|
|
|
+ email.setUsuari(u);
|
|
|
+ email.setInstanciaTasca(activa);
|
|
|
+ es.addEmail(email);
|
|
|
+ }
|
|
|
+ successCas.add("Procediment: " + p.getNomProces() + ", Centre: " + o.getOrgan().getNomCas()
|
|
|
+ + ", Titulació: " + o.getNomCas());
|
|
|
+ successVal.add("Procediment: " + p.getNomProces() + ", Centre: " + o.getOrgan().getNomVal()
|
|
|
+ + ", Titulació: " + o.getNomVal());
|
|
|
+ map.put("success", true);
|
|
|
+ } else {
|
|
|
+ errorCas.add("Procediment: " + p.getNomProces() + ", Centre: " + o.getOrgan().getNomCas()
|
|
|
+ + ", Titulació: " + o.getNomCas());
|
|
|
+ errorVal.add("Procediment: " + p.getNomProces() + ", Centre: " + o.getOrgan().getNomVal()
|
|
|
+ + ", Titulació: " + o.getNomVal());
|
|
|
+ map.put("error", true);
|
|
|
+ }
|
|
|
+ } else if (idTitulacio <= 2 && p.getAmbit().equals("T")) {
|
|
|
+ List<Organ> titulacions;
|
|
|
+ if (idTitulacio == 0) { // Type T procedure for all active places
|
|
|
+ titulacions = os.getTitulacionsByCentre(idCentre);
|
|
|
+ } else { // Type T procedure for one whole category place (masters/grados)
|
|
|
+ titulacions = os.getTitulacionsByTypeCentre(idCentre, idTitulacio);
|
|
|
+ }
|
|
|
+ for (Organ o : titulacions) {
|
|
|
+ BigInteger idInstancia = is.instantiateT(idProces, o.getId().getLugar());
|
|
|
+ if (!idInstancia.equals(BigInteger.valueOf(0))) {
|
|
|
+ InstanciaTasca activa = its.findActiveByInstancia(idInstancia);
|
|
|
+ for (Usuari u : us.getInstanceAsignedUsers(idInstancia)) {
|
|
|
+ Email email = new Email();
|
|
|
+ email.setUsuari(u);
|
|
|
+ email.setInstanciaTasca(activa);
|
|
|
+ es.addEmail(email);
|
|
|
+ }
|
|
|
+ successCas.add("Procediment: " + p.getNomProces() + ", Centre: " + o.getOrgan().getNomCas()
|
|
|
+ + ", Titulació: " + o.getNomCas());
|
|
|
+ successVal.add("Procediment: " + p.getNomProces() + ", Centre: " + o.getOrgan().getNomVal()
|
|
|
+ + ", Titulació: " + o.getNomVal());
|
|
|
+ } else {
|
|
|
+ errorCas.add("Procediment: " + p.getNomProces() + ", Centre: " + o.getOrgan().getNomCas()
|
|
|
+ + ", Titulació: " + o.getNomCas());
|
|
|
+ errorVal.add("Procediment: " + p.getNomProces() + ", Centre: " + o.getOrgan().getNomVal()
|
|
|
+ + ", Titulació: " + o.getNomVal());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else if (p.getAmbit().equals("C")) {
|
|
|
+ if (idCentre == 0) { // Type C procedure for all active places
|
|
|
+ for (Organ centre : os.getActiveCentres()) {
|
|
|
+ Organ titulacio = os.findByID("T", idTitulacio);
|
|
|
+ BigInteger idInstancia = is.instantiateC(idProces, centre.getId().getLugar(), idTitulacio);
|
|
|
+ if (!idInstancia.equals(BigInteger.valueOf(0))) {
|
|
|
+ InstanciaTasca activa = its.findActiveByInstancia(idInstancia);
|
|
|
+ for (Usuari u : us.getInstanceAsignedUsers(idInstancia)) {
|
|
|
+ Email email = new Email();
|
|
|
+ email.setUsuari(u);
|
|
|
+ email.setInstanciaTasca(activa);
|
|
|
+ es.addEmail(email);
|
|
|
+ }
|
|
|
+ successCas.add("Procediment: " + p.getNomProces() + ", Centre: " + centre.getNomCas()
|
|
|
+ + ", Titulació: " + titulacio.getNomCas());
|
|
|
+ successVal.add("Procediment: " + p.getNomProces() + ", Centre: " + centre.getNomVal()
|
|
|
+ + ", Titulació: " + titulacio.getNomVal());
|
|
|
+ map.put("success", true);
|
|
|
+ } else {
|
|
|
+ errorCas.add("Procediment: " + p.getNomProces() + ", Centre: " + centre.getNomCas()
|
|
|
+ + ", Titulació: " + titulacio.getNomCas());
|
|
|
+ errorVal.add("Procediment: " + p.getNomProces() + ", Centre: " + centre.getNomVal()
|
|
|
+ + ", Titulació: " + titulacio.getNomVal());
|
|
|
+ map.put("error", true);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else if (idCentre > 0) { // Type C procedure for one place
|
|
|
+ Organ titulacio = os.findByID("T", idTitulacio);
|
|
|
+ Organ centre = os.findByID("C", idCentre);
|
|
|
+ BigInteger idInstancia = is.instantiateC(idProces, idCentre, idTitulacio);
|
|
|
+ if (!idInstancia.equals(BigInteger.valueOf(0))) {
|
|
|
+ InstanciaTasca activa = its.findActiveByInstancia(idInstancia);
|
|
|
+ for (Usuari u : us.getInstanceAsignedUsers(idInstancia)) {
|
|
|
+ Email email = new Email();
|
|
|
+ email.setUsuari(u);
|
|
|
+ email.setInstanciaTasca(activa);
|
|
|
+ es.addEmail(email);
|
|
|
+ }
|
|
|
+ successCas.add("Procediment: " + p.getNomProces() + ", Centre: " + centre.getNomCas()
|
|
|
+ + ", Titulació: " + titulacio.getNomCas());
|
|
|
+ successVal.add("Procediment: " + p.getNomProces() + ", Centre: " + centre.getNomVal()
|
|
|
+ + ", Titulació: " + titulacio.getNomVal());
|
|
|
+ map.put("success", true);
|
|
|
+ } else {
|
|
|
+ errorCas.add("Procediment: " + p.getNomProces() + ", Centre: " + centre.getNomCas()
|
|
|
+ + ", Titulació: " + titulacio.getNomCas());
|
|
|
+ errorVal.add("Procediment: " + p.getNomProces() + ", Centre: " + centre.getNomVal()
|
|
|
+ + ", Titulació: " + titulacio.getNomVal());
|
|
|
+ map.put("error", true);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ map.put("successCas", successCas);
|
|
|
+ map.put("successVal", successVal);
|
|
|
+ map.put("errorCas", errorCas);
|
|
|
+ map.put("errorVal", errorVal);
|
|
|
+ if (errorCas.isEmpty()) {
|
|
|
+ map.put("error", true);
|
|
|
+ }
|
|
|
+ if (successCas.isEmpty()) {
|
|
|
+ map.put("success", true);
|
|
|
+ }
|
|
|
+
|
|
|
+ return map;
|
|
|
+ }
|
|
|
+
|
|
|
+ // POST que elimina una instancia concreta
|
|
|
+ @DeleteMapping("/instance")
|
|
|
+ public void deleteInstance(@RequestParam BigInteger idInstancia) throws IOException {
|
|
|
+
|
|
|
+ Instancia instancia = is.findByID(idInstancia);
|
|
|
+ List<InstanciaTasca> instanciaTasques = its.findByInstancia(instancia.getIdInstancia());
|
|
|
+ for (InstanciaTasca instanciaTasca : instanciaTasques) {
|
|
|
+ Files.deleteIfExists(Paths.get(this.filePath + instanciaTasca.getEvidencia()));
|
|
|
+ }
|
|
|
+ is.deleteInstance(instancia);
|
|
|
+ }
|
|
|
+
|
|
|
+ // POST que reinicia una instancia por completo
|
|
|
+ @PostMapping("/instance/clear")
|
|
|
+ public String clearInstance(@RequestParam BigInteger idInstancia) throws IOException {
|
|
|
+
|
|
|
+ Instancia instancia = is.findByID(idInstancia);
|
|
|
+ List<InstanciaTasca> instanciaTasques = its.findByInstancia(instancia.getIdInstancia());
|
|
|
+ for (InstanciaTasca instanciaTasca : instanciaTasques) {
|
|
|
+ Files.deleteIfExists(Paths.get(this.filePath + instanciaTasca.getEvidencia()));
|
|
|
+ }
|
|
|
+ is.clearInstance(instancia);
|
|
|
+ instancia.setEstat("A");
|
|
|
+ is.save(instancia);
|
|
|
+
|
|
|
+ this.itsver.deleteByIdInstancia(idInstancia);
|
|
|
+
|
|
|
+ InstanciaTasca activa = its.findActiveByInstancia(idInstancia);
|
|
|
+ if (activa.getTasca().getRol().getNomRol().equals("sys")) {
|
|
|
+ activa = this.its.system(activa);
|
|
|
+ }
|
|
|
+
|
|
|
+ for (Usuari u : us.getInstanceAsignedUsers(idInstancia)) {
|
|
|
+ Email email = new Email();
|
|
|
+ email.setUsuari(u);
|
|
|
+ email.setInstanciaTasca(activa);
|
|
|
+ es.addEmail(email);
|
|
|
+ }
|
|
|
+
|
|
|
+ return instancia.getIdInstancia().toString();
|
|
|
+ }
|
|
|
+
|
|
|
+ // POST que establece que una instancia ha sido cerrada, cambiandole su estado
|
|
|
+ @PostMapping("/instance/close")
|
|
|
+ public String closeInstance(@RequestParam BigInteger idInstancia) throws IOException {
|
|
|
+
|
|
|
+ Instancia instancia = is.findByID(idInstancia);
|
|
|
+ instancia.setEstat("C");
|
|
|
+ InstanciaTasca instanciaTasca = its.findActiveByInstancia(instancia.getIdInstancia());
|
|
|
+ instanciaTasca.setEstat(null);
|
|
|
+ its.save(instanciaTasca);
|
|
|
+ is.save(instancia);
|
|
|
+
|
|
|
+ return instancia.getIdInstancia().toString();
|
|
|
+ }
|
|
|
+
|
|
|
+ // POST que se encarga de eliminar una tarea concreta de una instancia
|
|
|
+ @DeleteMapping("/instance/task")
|
|
|
+ public String removeTask(@RequestParam BigInteger idInstanciaTasca) throws IOException {
|
|
|
+
|
|
|
+ InstanciaTasca instanciaTasca = its.findById(idInstanciaTasca);
|
|
|
+ Files.deleteIfExists(Paths.get(this.filePath + instanciaTasca.getEvidencia()));
|
|
|
+ its.remove(instanciaTasca.getIdInstanciaTasca());
|
|
|
+ return instanciaTasca.getInstancia().getIdInstancia().toString();
|
|
|
+ }
|
|
|
+
|
|
|
+ // POST que se encarga de reiniciar por completo una tarea de una instancia
|
|
|
+ @PostMapping("/instance/task/clear")
|
|
|
+ public String clearTask(@RequestParam BigInteger idInstanciaTasca) throws IOException {
|
|
|
+
|
|
|
+ InstanciaTasca instanciaTasca = its.findById(idInstanciaTasca);
|
|
|
+ Files.deleteIfExists(Paths.get(this.filePath + instanciaTasca.getEvidencia()));
|
|
|
+ instanciaTasca.setDataFet(null);
|
|
|
+ instanciaTasca.setEvidencia(null);
|
|
|
+ instanciaTasca.setUsuari(null);
|
|
|
+ instanciaTasca.setEstat(null);
|
|
|
+ instanciaTasca.setText(null);
|
|
|
+ if (instanciaTasca.getTasca().getRol().getNomRol().equals("sys")) {
|
|
|
+ instanciaTasca = this.its.system(instanciaTasca);
|
|
|
+ }
|
|
|
+ its.save(instanciaTasca);
|
|
|
+
|
|
|
+ return instanciaTasca.getInstancia().getIdInstancia().toString();
|
|
|
+ }
|
|
|
+
|
|
|
+ // POST que reinicia una tarea del procedimiento, eliminando datos anteriores y
|
|
|
+ // creando una nueva vesión de esta
|
|
|
+ @PostMapping("/instance/task/reload")
|
|
|
+ public String reloadTask(@RequestParam BigInteger idInstanciaTasca) throws IOException {
|
|
|
+
|
|
|
+ InstanciaTasca instanciaTasca = its.findById(idInstanciaTasca);
|
|
|
+ Files.deleteIfExists(Paths.get(this.filePath + instanciaTasca.getEvidencia()));
|
|
|
+ InstanciaTasca instanciaTascaNew = new InstanciaTasca();
|
|
|
+ instanciaTascaNew.setDataFet(null);
|
|
|
+ instanciaTascaNew.setEstat("A");
|
|
|
+ instanciaTascaNew.setEvidencia(null);
|
|
|
+ instanciaTascaNew.setInstancia(instanciaTasca.getInstancia());
|
|
|
+ instanciaTascaNew.setTasca(instanciaTasca.getTasca());
|
|
|
+ instanciaTascaNew.setUsuari(null);
|
|
|
+ instanciaTascaNew.setText(null);
|
|
|
+ instanciaTascaNew.setVersion(0);
|
|
|
+ instanciaTascaNew.setIdInstanciaTasca(instanciaTasca.getInstancia().getIdInstancia()
|
|
|
+ .multiply(BigInteger.valueOf(10000))
|
|
|
+ .add(BigInteger.valueOf(instanciaTasca.getTasca().getIdTascap()))
|
|
|
+ .multiply(BigInteger.valueOf(100)));
|
|
|
+
|
|
|
+ /* Editable online revisión - inyectar de quien corresponda */
|
|
|
+ if (instanciaTasca.getTasca().getTipus().getTipus() == 15) {
|
|
|
+ InstanciaTasca itdone = its.findByInstanciaTascap(instanciaTasca.getInstancia().getIdInstancia(),
|
|
|
+ Integer.parseInt(instanciaTasca.getTasca().getOpcions()));
|
|
|
+ instanciaTascaNew.setText(itdone.getText());
|
|
|
+ }
|
|
|
+
|
|
|
+ its.deactivateAll(instanciaTasca.getInstancia().getIdInstancia());
|
|
|
+ its.removeAllVersions(instanciaTasca.getInstancia().getIdInstancia(), instanciaTasca.getTasca().getIdTasca());
|
|
|
+
|
|
|
+ if (instanciaTascaNew.getTasca().getRol().getNomRol().equals("sys")) {
|
|
|
+ instanciaTascaNew = this.its.system(instanciaTascaNew);
|
|
|
+ }
|
|
|
+ its.save(instanciaTascaNew);
|
|
|
+
|
|
|
+ if (!instanciaTasca.getInstancia().getEstat().equals("A")) {
|
|
|
+ instanciaTasca.getInstancia().setEstat("A");
|
|
|
+ is.save(instanciaTasca.getInstancia());
|
|
|
+ }
|
|
|
+
|
|
|
+ for (Usuari u : us.getInstanceAsignedUsers(instanciaTascaNew.getInstancia().getIdInstancia())) {
|
|
|
+ Email email = new Email();
|
|
|
+ email.setUsuari(u);
|
|
|
+ email.setInstanciaTasca(instanciaTascaNew);
|
|
|
+ es.addEmail(email);
|
|
|
+ }
|
|
|
+
|
|
|
+ return instanciaTasca.getInstancia().getIdInstancia().toString();
|
|
|
+ }
|
|
|
+
|
|
|
+ // POST que tiene como objetivo reactivar una tarea
|
|
|
+ @PostMapping("/instance/task/reactivate")
|
|
|
+ public String activateTask(@RequestParam BigInteger idInstanciaTasca) throws IOException {
|
|
|
+
|
|
|
+ InstanciaTasca instanciaTasca = its.findById(idInstanciaTasca);
|
|
|
+ InstanciaTasca instanciaTascaNew = new InstanciaTasca();
|
|
|
+ instanciaTascaNew.setDataFet(null);
|
|
|
+ instanciaTascaNew.setEstat("A");
|
|
|
+ instanciaTascaNew.setEvidencia(null);
|
|
|
+ instanciaTascaNew.setInstancia(instanciaTasca.getInstancia());
|
|
|
+ instanciaTascaNew.setTasca(instanciaTasca.getTasca());
|
|
|
+ instanciaTascaNew.setUsuari(null);
|
|
|
+ instanciaTascaNew.setVersion(instanciaTasca.getVersion() + 1);
|
|
|
+ instanciaTascaNew.setIdInstanciaTasca(instanciaTasca.getIdInstanciaTasca().add(BigInteger.valueOf(1)));
|
|
|
+
|
|
|
+ its.deactivateAll(instanciaTasca.getInstancia().getIdInstancia());
|
|
|
+
|
|
|
+ /* Editable online revisión - inyectar de quien corresponda */
|
|
|
+ if (instanciaTasca.getTasca().getTipus().getTipus() == 15) {
|
|
|
+ instanciaTascaNew.setText(instanciaTasca.getText());
|
|
|
+ }
|
|
|
+
|
|
|
+ its.save(instanciaTascaNew);
|
|
|
+
|
|
|
+ if (!instanciaTasca.getInstancia().getEstat().equals("A")) {
|
|
|
+ instanciaTasca.getInstancia().setEstat("A");
|
|
|
+ is.save(instanciaTasca.getInstancia());
|
|
|
+ }
|
|
|
+
|
|
|
+ for (Usuari u : us.getInstanceAsignedUsers(instanciaTascaNew.getInstancia().getIdInstancia())) {
|
|
|
+ Email email = new Email();
|
|
|
+ email.setUsuari(u);
|
|
|
+ email.setInstanciaTasca(instanciaTascaNew);
|
|
|
+ es.addEmail(email);
|
|
|
+ }
|
|
|
+
|
|
|
+ return instanciaTasca.getInstancia().getIdInstancia().toString();
|
|
|
+ }
|
|
|
+
|
|
|
+ // POST que edita la información de una tarea ya existente
|
|
|
+ @PostMapping("/instance/task/edit")
|
|
|
+ public String editTask(@RequestParam BigInteger idInstanciaTasca) throws IOException {
|
|
|
+
|
|
|
+ InstanciaTasca instanciaTasca = its.findById(idInstanciaTasca);
|
|
|
+ InstanciaTasca instanciaTascaNew = new InstanciaTasca();
|
|
|
+ instanciaTascaNew.setDataFet(null);
|
|
|
+ instanciaTascaNew.setEstat("A");
|
|
|
+ instanciaTascaNew.setEvidencia(null);
|
|
|
+ instanciaTascaNew.setInstancia(instanciaTasca.getInstancia());
|
|
|
+ instanciaTascaNew.setTasca(instanciaTasca.getTasca());
|
|
|
+ instanciaTascaNew.setUsuari(null);
|
|
|
+ instanciaTascaNew.setVersion(instanciaTasca.getVersion() + 1);
|
|
|
+ instanciaTascaNew.setIdInstanciaTasca(instanciaTasca.getIdInstanciaTasca().add(BigInteger.valueOf(1)));
|
|
|
+ instanciaTascaNew.setText(instanciaTasca.getText());
|
|
|
+
|
|
|
+ its.deactivateAll(instanciaTasca.getInstancia().getIdInstancia());
|
|
|
+ its.save(instanciaTascaNew);
|
|
|
+
|
|
|
+ if (!instanciaTasca.getInstancia().getEstat().equals("A")) {
|
|
|
+ instanciaTasca.getInstancia().setEstat("A");
|
|
|
+ is.save(instanciaTasca.getInstancia());
|
|
|
+ }
|
|
|
+
|
|
|
+ for (Usuari u : us.getInstanceAsignedUsers(instanciaTascaNew.getInstancia().getIdInstancia())) {
|
|
|
+ Email email = new Email();
|
|
|
+ email.setUsuari(u);
|
|
|
+ email.setInstanciaTasca(instanciaTascaNew);
|
|
|
+ es.addEmail(email);
|
|
|
+ }
|
|
|
+
|
|
|
+ return instanciaTasca.getInstancia().getIdInstancia().toString();
|
|
|
+ }
|
|
|
+
|
|
|
+ @PostMapping("/mailing")
|
|
|
+ public void sendMails(@RequestParam Integer idRol, @RequestParam("centres[]") List<Integer> centres,
|
|
|
+ @RequestParam String subject, @RequestParam String body) {
|
|
|
+ List<Usuari> usuaris = us.findByRolCentre(idRol, centres);
|
|
|
+ for (Usuari usuari : usuaris) {
|
|
|
+ Email email = new Email();
|
|
|
+ email.setUsuari(usuari);
|
|
|
+ email.setBody(body);
|
|
|
+ email.setSubject(subject);
|
|
|
+ es.addEmail(email);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // PUT para la creación de un procedimiento nuevo
|
|
|
+ @PutMapping("/procedure")
|
|
|
+ public void newProcedure(@RequestBody ProcedureRequestDTO request) {
|
|
|
+ DateTimeFormatter formatter = DateTimeFormatter.ofPattern(DDMMYYYY);
|
|
|
+ ProcesDTO procesDTO = request.getProces();
|
|
|
+ List<TascaDTO> tasquesDTO = request.getTasques();
|
|
|
+
|
|
|
+ Proces p = new Proces();
|
|
|
+ p.setIdProces(procesDTO.getIdProces());
|
|
|
+ p.setNomProces(procesDTO.getNomProces());
|
|
|
+ p.setVersio(procesDTO.getVersio());
|
|
|
+ p.setComentaris(procesDTO.getComentaris());
|
|
|
+ p.setSubTitol(procesDTO.getSubTitol());
|
|
|
+ p.setAmbit(procesDTO.getAmbit());
|
|
|
+ p.setTitolCas(procesDTO.getTitolCas());
|
|
|
+ p.setTitolVal(procesDTO.getTitolVal());
|
|
|
+ p.setDescripcioCas(procesDTO.getDescripcioCas());
|
|
|
+ p.setDescripcioVal(procesDTO.getDescripcioVal());
|
|
|
+ p.setCursActivacio(procesDTO.getCursActivacio());
|
|
|
+ p.setCursAvaluat(procesDTO.getCursAvaluat());
|
|
|
+
|
|
|
+ ps.save(p);
|
|
|
+
|
|
|
+ if (tasquesDTO != null && !tasquesDTO.isEmpty()) {
|
|
|
+ for (TascaDTO tDto : tasquesDTO) {
|
|
|
+ Tasca t = new Tasca();
|
|
|
+ t.setIdTasca((p.getIdProces() * 10000) + tDto.getIdTascap());
|
|
|
+ t.setProces(p);
|
|
|
+ t.setIdTascap(tDto.getIdTascap());
|
|
|
+ t.setIdTascaSeg(tDto.getIdTascaSeg());
|
|
|
+ t.setIdTascaSeg2(tDto.getIdTascaSeg2());
|
|
|
+ t.setOpcions(tDto.getOpcions());
|
|
|
+ t.setTitolCas(limpiarTexto(tDto.getTitolCas()));
|
|
|
+ t.setDescripcioCas(limpiarTexto(tDto.getDescripcioCas()));
|
|
|
+ t.setTitolVal(limpiarTexto(tDto.getTitolVal()));
|
|
|
+ t.setDescripcioVal(limpiarTexto(tDto.getDescripcioVal()));
|
|
|
+ t.setNomEvidenciaCas(limpiarTexto(tDto.getNomEvidenciaCas()));
|
|
|
+ t.setNomEvidenciaVal(limpiarTexto(tDto.getNomEvidenciaVal()));
|
|
|
+ if (tDto.getDataLim() != null && !tDto.getDataLim().isEmpty()) {
|
|
|
+ t.setDataLim(LocalDate.parse(tDto.getDataLim(), formatter));
|
|
|
+ }
|
|
|
+ if (tDto.getIdTipus() != null) {
|
|
|
+ t.setTipus(tps.findOne(tDto.getIdTipus()));
|
|
|
+
|
|
|
+ if (t.getTipus().getTipus() == 11 || t.getTipus().getTipus() == 15) {
|
|
|
+ // Si es plantilla, usamos el idPlantilla del DTO
|
|
|
+ t.setCodiEvidencia(tDto.getIdPlantilla() != null ? tDto.getIdPlantilla().toString() : "");
|
|
|
+ } else {
|
|
|
+ t.setCodiEvidencia(limpiarTexto(tDto.getCodiEvidencia()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (tDto.getIdRol() != null) {
|
|
|
+ t.setRol(rs.findOne(tDto.getIdRol()));
|
|
|
+ }
|
|
|
+ t.setInforme(tDto.getInforme() != null ? tDto.getInforme() : false);
|
|
|
+
|
|
|
+ ts.save(t);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @PostMapping("/procedure")
|
|
|
+ public void editProcedure(@RequestBody ProcedureRequestDTO request) {
|
|
|
+ DateTimeFormatter formatter = DateTimeFormatter.ofPattern(DDMMYYYY);
|
|
|
+ ProcesDTO procesDTO = request.getProces();
|
|
|
+ List<TascaDTO> tasquesDTO = request.getTasques();
|
|
|
+
|
|
|
+ Proces p = ps.findByID(procesDTO.getIdProces());
|
|
|
+ p.setNomProces(procesDTO.getNomProces());
|
|
|
+ p.setVersio(procesDTO.getVersio());
|
|
|
+ p.setComentaris(procesDTO.getComentaris());
|
|
|
+ p.setSubTitol(procesDTO.getSubTitol());
|
|
|
+ p.setAmbit(procesDTO.getAmbit());
|
|
|
+ p.setTitolCas(procesDTO.getTitolCas());
|
|
|
+ p.setTitolVal(procesDTO.getTitolVal());
|
|
|
+ p.setDescripcioCas(procesDTO.getDescripcioCas());
|
|
|
+ p.setDescripcioVal(procesDTO.getDescripcioVal());
|
|
|
+ p.setCursActivacio(procesDTO.getCursActivacio());
|
|
|
+ p.setCursAvaluat(procesDTO.getCursAvaluat());
|
|
|
+ ps.save(p);
|
|
|
+
|
|
|
+ List<Tasca> tasquesActuals = ts.findByProces(p.getIdProces());
|
|
|
+ List<Integer> idsTasquesNoves = tasquesDTO.stream()
|
|
|
+ .map(TascaDTO::getIdTascap)
|
|
|
+ .toList();
|
|
|
+
|
|
|
+ for (Tasca t2 : tasquesActuals) {
|
|
|
+ if (!idsTasquesNoves.contains(t2.getIdTascap())) {
|
|
|
+ ts.delete(t2);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ for (TascaDTO tDto : tasquesDTO) {
|
|
|
+ if (tDto.getIdTascaSeg() != null) {
|
|
|
+ int idCalculat = (int) (p.getIdProces() * 10000) + tDto.getIdTascap();
|
|
|
+
|
|
|
+ Tasca tasca = ts.getByID(idCalculat);
|
|
|
+ if (tasca == null) {
|
|
|
+ tasca = new Tasca();
|
|
|
+ tasca.setIdTasca(idCalculat);
|
|
|
+ tasca.setProces(p);
|
|
|
+ tasca.setIdTascap(tDto.getIdTascap());
|
|
|
+ }
|
|
|
+ tasca.setIdTascaSeg(tDto.getIdTascaSeg());
|
|
|
+ tasca.setIdTascaSeg2(tDto.getIdTascaSeg2());
|
|
|
+ tasca.setOpcions(tDto.getOpcions());
|
|
|
+ tasca.setTitolCas(limpiarTexto(tDto.getTitolCas()));
|
|
|
+ tasca.setTitolVal(limpiarTexto(tDto.getTitolVal()));
|
|
|
+ tasca.setDescripcioCas(limpiarTexto(tDto.getDescripcioCas()));
|
|
|
+ tasca.setDescripcioVal(limpiarTexto(tDto.getDescripcioVal()));
|
|
|
+ tasca.setNomEvidenciaCas(limpiarTexto(tDto.getNomEvidenciaCas()));
|
|
|
+ tasca.setNomEvidenciaVal(limpiarTexto(tDto.getNomEvidenciaVal()));
|
|
|
+
|
|
|
+ if (tDto.getDataLim() != null && !tDto.getDataLim().isEmpty()) {
|
|
|
+ tasca.setDataLim(LocalDate.parse(tDto.getDataLim(), formatter));
|
|
|
+ }
|
|
|
+
|
|
|
+ if (tDto.getIdTipus() != null) {
|
|
|
+ tasca.setTipus(tps.findOne(tDto.getIdTipus()));
|
|
|
+ }
|
|
|
+
|
|
|
+ if (tasca.getTipus() != null && (tasca.getTipus().getTipus() == 11 || tasca.getTipus().getTipus() == 15)) {
|
|
|
+ tasca.setCodiEvidencia(tDto.getIdPlantilla() != null ? tDto.getIdPlantilla().toString() : "");
|
|
|
+ } else {
|
|
|
+ tasca.setCodiEvidencia(limpiarTexto(tDto.getCodiEvidencia()));
|
|
|
+ }
|
|
|
+
|
|
|
+ tasca.setRol(rs.findOne(tDto.getIdRol()));
|
|
|
+ tasca.setInforme(tDto.getInforme() != null ? tDto.getInforme() : false);
|
|
|
+
|
|
|
+ ts.save(tasca);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private String limpiarTexto(String texto) {
|
|
|
+ if (texto == null || texto.equals(".")) {
|
|
|
+ return "";
|
|
|
+ }
|
|
|
+ return texto.replace("[comma]", ",");
|
|
|
+ }
|
|
|
+
|
|
|
+ // DELETE que elimina un procedimiento
|
|
|
+ @DeleteMapping("/procedure")
|
|
|
+ public void removeProcedure(@RequestParam("idProces") Integer idProces) {
|
|
|
+ Proces p = ps.findByID(idProces);
|
|
|
+ for (Tasca t : ts.findByProces(p.getIdProces())) {
|
|
|
+ ts.delete(t);
|
|
|
+ }
|
|
|
+ ps.delete(p);
|
|
|
+ }
|
|
|
+
|
|
|
+ // POST que le eliminar un usuario concreto del sitema
|
|
|
+ @DeleteMapping("/userrole")
|
|
|
+ public boolean removeUserrole(@RequestParam("idRol") Integer idRol,
|
|
|
+ @RequestParam("usuari") String usuari,
|
|
|
+ @RequestParam("lugar") Integer lugar, @RequestParam("tlugar") String tlugar) throws IOException {
|
|
|
+
|
|
|
+ usuari = usuari.split(",")[0];
|
|
|
+
|
|
|
+ UsuarisRol u = urs.findActive(idRol, usuari, lugar, tlugar);
|
|
|
+ if (u != null) {
|
|
|
+ u.setVigent(false);
|
|
|
+ u.setFin(Calendar.getInstance().getTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDate());
|
|
|
+ urs.save(u);
|
|
|
+ }
|
|
|
+
|
|
|
+ return urs.findActive(idRol, usuari, lugar, tlugar) == null ? true : false;
|
|
|
+ }
|
|
|
+
|
|
|
+ // PUT para añadir un nuevo usuario al sistema
|
|
|
+ @PutMapping("/userrole")
|
|
|
+ public boolean newUserrole(@RequestParam("idRol") Integer idRol,
|
|
|
+ @RequestParam(name = "usuari", required = false) String usuari, @RequestParam("centre") Integer idCentre,
|
|
|
+ @RequestParam(name = "titulacio", required = false) Integer idTitulacio,
|
|
|
+ @RequestParam Map<String, String> params) {
|
|
|
+
|
|
|
+ usuari = usuari.split(",")[0];
|
|
|
+
|
|
|
+ if (usuari == null && params.get("username") != null) {
|
|
|
+ Usuari x = new Usuari();
|
|
|
+ x.setCognoms(params.get("lastname"));
|
|
|
+ x.setNom(params.get("firstname"));
|
|
|
+ x.setUsuari(params.get("username"));
|
|
|
+ x.setEmail(params.get("email"));
|
|
|
+ x.setLdap(true);
|
|
|
+ this.us.save(x);
|
|
|
+ usuari = x.getUsuari();
|
|
|
+ }
|
|
|
+
|
|
|
+ Rol rol = rs.findOne(idRol);
|
|
|
+ Integer lugar = null;
|
|
|
+ String tlugar = null;
|
|
|
+ if (rol.getAmbit().equals("U") || (rol.getAmbit().equals("C"))) {
|
|
|
+ lugar = idCentre;
|
|
|
+ tlugar = "C";
|
|
|
+ UsuarisRol u = urs.findLast(idRol, usuari, lugar, tlugar);
|
|
|
+ Integer num = urs.findLastNum(idRol, lugar, tlugar);
|
|
|
+ num = num == null ? 0 : num;
|
|
|
+ if (u != null) {
|
|
|
+ if (!u.getVigent()) {
|
|
|
+ UsuarisRol r = new UsuarisRol();
|
|
|
+ r.setFin(null);
|
|
|
+ r.setInici(Calendar.getInstance().getTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDate());
|
|
|
+ r.setUsuari(u.getUsuari());
|
|
|
+ r.setOrgan(u.getOrgan());
|
|
|
+ r.setRol(u.getRol());
|
|
|
+ r.setVigent(true);
|
|
|
+ r.setSupervisor(0);
|
|
|
+ r.setNum(num + 1);
|
|
|
+ urs.save(r);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ UsuarisRol r = new UsuarisRol();
|
|
|
+ r.setFin(null);
|
|
|
+ r.setInici(Calendar.getInstance().getTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDate());
|
|
|
+ r.setUsuari(us.findByUsername(usuari));
|
|
|
+ r.setOrgan(os.findByID(tlugar, lugar));
|
|
|
+ r.setRol(rs.findOne(idRol));
|
|
|
+ r.setVigent(true);
|
|
|
+ r.setSupervisor(0);
|
|
|
+ r.setNum(num + 1);
|
|
|
+ urs.save(r);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ lugar = idTitulacio;
|
|
|
+ tlugar = "T";
|
|
|
+ UsuarisRol u = urs.findLast(idRol, usuari, idTitulacio, tlugar);
|
|
|
+ Integer num = urs.findLastNum(idRol, idTitulacio, tlugar);
|
|
|
+ num = num == null ? 0 : num;
|
|
|
+ if (u != null) {
|
|
|
+ if (!u.getVigent()) {
|
|
|
+ UsuarisRol r = new UsuarisRol();
|
|
|
+ r.setFin(null);
|
|
|
+ r.setInici(Calendar.getInstance().getTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDate());
|
|
|
+ r.setUsuari(u.getUsuari());
|
|
|
+ r.setOrgan(u.getOrgan());
|
|
|
+ r.setRol(u.getRol());
|
|
|
+ r.setVigent(true);
|
|
|
+ r.setSupervisor(0);
|
|
|
+ r.setNum(num + 1);
|
|
|
+ urs.save(r);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ UsuarisRol r = new UsuarisRol();
|
|
|
+ r.setFin(null);
|
|
|
+ r.setInici(Calendar.getInstance().getTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDate());
|
|
|
+ r.setUsuari(us.findByUsername(usuari));
|
|
|
+ r.setOrgan(os.findByID(tlugar, idTitulacio));
|
|
|
+ r.setRol(rs.findOne(idRol));
|
|
|
+ r.setVigent(true);
|
|
|
+ r.setSupervisor(0);
|
|
|
+ r.setNum(num + 1);
|
|
|
+ urs.save(r);
|
|
|
+ }
|
|
|
+ };
|
|
|
+ return urs.findActive(idRol, usuari, lugar, tlugar) != null ? true : false;
|
|
|
+ }
|
|
|
+
|
|
|
+ // GET que recoge todas las plantillas actuales del sistema
|
|
|
+ @GetMapping("/templates")
|
|
|
+ public List<String> getTemplates2() {
|
|
|
+
|
|
|
+ File[] files = Stream.concat(Arrays.stream(new File(this.templatePath).listFiles()),
|
|
|
+ Arrays.stream(new File(this.templatePath + "/T1/").listFiles()))
|
|
|
+ .toArray(File[]::new);
|
|
|
+ files = Stream.concat(Arrays.stream(files),
|
|
|
+ Arrays.stream(new File(this.templatePath + "/T2/").listFiles()))
|
|
|
+ .distinct()
|
|
|
+ .toArray(File[]::new);
|
|
|
+
|
|
|
+ List<String> evs = new ArrayList<String>();
|
|
|
+ for (File f : files) {
|
|
|
+
|
|
|
+ String e = f.getName().replace(".docx", "");
|
|
|
+ if (f.getPath().contains("/T1/")) {
|
|
|
+ e = e + " (G)";
|
|
|
+ } else if (f.getPath().contains("/T2/")) {
|
|
|
+ e = e + " (M)";
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!e.endsWith("_") && !e.contains(".old")) {
|
|
|
+ evs.add(e.replace("_", "."));
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ return evs;
|
|
|
+ }
|
|
|
+
|
|
|
+ // POST que redefine que indicadores están asociados a una evidencia dentro de
|
|
|
+ // un proceso
|
|
|
+ @PostMapping("/templates/inds/update")
|
|
|
+ public void updateTemplateInds(@RequestParam(name = "indicador[]", required = true) List<String> indicador,
|
|
|
+ @RequestParam(name = "enquesta[]", required = true) List<String> enquesta,
|
|
|
+ @RequestParam(name = "media[]", required = true) List<String> media,
|
|
|
+ @RequestParam(name = "evidencia", required = true) String evidencia,
|
|
|
+ @RequestParam(name = "proces", required = true) String proces) {
|
|
|
+
|
|
|
+ ic.deleteByProcesEnquesta(proces, evidencia);
|
|
|
+
|
|
|
+ for (Integer i = 0; i < indicador.size(); i++) {
|
|
|
+ EvidenciaIndicadorEnquesta e = new EvidenciaIndicadorEnquesta();
|
|
|
+ EvidenciaIndicadorEnquestaPK eid = new EvidenciaIndicadorEnquestaPK();
|
|
|
+ eid.setEnquesta(enquesta.get(i));
|
|
|
+ eid.setEvidencia(evidencia);
|
|
|
+ eid.setIndicador(indicador.get(i));
|
|
|
+ eid.setProces(proces);
|
|
|
+ e.setId(eid);
|
|
|
+ e.setMedia(media.get(i));
|
|
|
+ ic.save(e);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @GetMapping("/acredita/{curs}/{grup}/{tambit}")
|
|
|
+ public List<AcreditacioTransfer> acreditacionsByCurs(@PathVariable Integer curs, @PathVariable Integer grup,
|
|
|
+ @PathVariable String tambit) {
|
|
|
+
|
|
|
+ List<AcreditacioTransfer> alist = new ArrayList<AcreditacioTransfer>();
|
|
|
+
|
|
|
+ if (grup == 0) {
|
|
|
+ for (Acreditacio a : this.as.getByCurs(curs)) {
|
|
|
+ Organ o = os.findByID(a.getTlugar(), a.getLugar());
|
|
|
+ alist.add(new AcreditacioTransfer(a, o));
|
|
|
+ }
|
|
|
+ return alist;
|
|
|
+ } else {
|
|
|
+ if (tambit.equals("A")) {
|
|
|
+ for (Acreditacio a : this.as.getByCursGrup(curs, grup)) {
|
|
|
+ Organ o = os.findByID(a.getTlugar(), a.getLugar());
|
|
|
+ alist.add(new AcreditacioTransfer(a, o));
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ for (Acreditacio a : this.as.getByCursGrupTambit(curs, grup, tambit)) {
|
|
|
+ Organ o = os.findByID(a.getTlugar(), a.getLugar());
|
|
|
+ alist.add(new AcreditacioTransfer(a, o));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return alist;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @PostMapping("/acredita")
|
|
|
+ public Acreditacio UpdateAcreditacio(@RequestParam String tlugar, @RequestParam Integer lugar,
|
|
|
+ @RequestParam Integer grupCurs, @RequestParam Integer grupNum, @RequestParam Integer cursImpla,
|
|
|
+ @RequestParam String dataAcred, @RequestParam String dataRenov, @RequestParam String dataSegui,
|
|
|
+ @RequestParam String dataVerif, @RequestParam Boolean recom, @RequestParam Boolean segui)
|
|
|
+ throws ParseException {
|
|
|
+
|
|
|
+ Acreditacio a = this.as.getById(tlugar, lugar);
|
|
|
+ a.setGrupCurs(grupCurs);
|
|
|
+ a.setGrupNum(grupNum);
|
|
|
+ a.setGrup(acreditaGroups.get(grupNum));
|
|
|
+ a.setDataAcred(new SimpleDateFormat(DDMMYYYY).parse(dataAcred).toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime());
|
|
|
+ a.setDataRenov(new SimpleDateFormat(DDMMYYYY).parse(dataRenov).toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime());
|
|
|
+ a.setDataSegui(new SimpleDateFormat(DDMMYYYY).parse(dataSegui).toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime());
|
|
|
+ a.setDataVerif(new SimpleDateFormat(DDMMYYYY).parse(dataVerif).toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime());
|
|
|
+ a.setCursImpla(cursImpla);
|
|
|
+ a.setRecom(recom);
|
|
|
+ a.setSegui(segui);
|
|
|
+ a = as.save(a);
|
|
|
+
|
|
|
+ return a;
|
|
|
+ }
|
|
|
+}
|