/**
*
*/
package net.conselldemallorca.helium.webapp.v3.controller;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import net.conselldemallorca.helium.v3.core.api.dto.AccioDto;
import net.conselldemallorca.helium.v3.core.api.dto.DefinicioProcesVersioDto;
import net.conselldemallorca.helium.v3.core.api.dto.ExpedientDto;
import net.conselldemallorca.helium.v3.core.api.dto.InstanciaProcesDto;
import net.conselldemallorca.helium.v3.core.api.service.DissenyService;
import net.conselldemallorca.helium.v3.core.api.service.ExpedientService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.ui.Model;
/**
* Controlador base per al llistat d'expedients.
*
* @author Limit Tecnologies <limit@limit.es>
*/
public class BaseExpedientController extends BaseController {
@Autowired
protected ExpedientService expedientService;
@Autowired
protected DissenyService dissenyService;
protected String mostrarInformacioExpedientPerPipella(
HttpServletRequest request,
Long expedientId,
Model model,
String pipellaActiva) {
ExpedientDto expedient = expedientService.findAmbId(expedientId);
model.addAttribute("expedient", expedient);
model.addAttribute("participants", expedientService.findParticipants(expedientId));
model.addAttribute("relacionats", expedientService.relacioFindAmbExpedient(expedientId));
DefinicioProcesVersioDto versions = dissenyService.getByVersionsInstanciaProcesById(expedient.getProcessInstanceId());
model.addAttribute("definicioProces", versions);
if (pipellaActiva != null)
model.addAttribute("pipellaActiva", pipellaActiva);
else if (request.getParameter("pipellaActiva") != null)
model.addAttribute("pipellaActiva", request.getParameter("pipellaActiva"));
else
model.addAttribute("pipellaActiva", "dades");
List<InstanciaProcesDto> arbreProcessos = expedientService.getArbreInstanciesProces(Long.parseLong(expedient.getProcessInstanceId()));
// Map<InstanciaProcesDto, List<AccioDto>> accions = new LinkedHashMap<InstanciaProcesDto, List<AccioDto>>();
int numAccions = 0;
List<String> subprocessos = new ArrayList<String>();
for (InstanciaProcesDto instanciaProces: arbreProcessos) {
// Subprocessos
if (!instanciaProces.getId().equals(expedient.getProcessInstanceId())) {
String subproces = instanciaProces.getTitol() + " v." + instanciaProces.getDefinicioProces().getVersio();
subprocessos.add(subproces);
}
// Accions
List<AccioDto> accionsTrobades = expedientService.findAccionsVisiblesAmbProcessInstanceId(instanciaProces.getId(), expedientId);
// accions.put(instanciaProces, accionsTrobades);
numAccions += accionsTrobades.size();
}
model.addAttribute("subprocessos", subprocessos);
model.addAttribute("numAccions", numAccions);
return "v3/expedientPipelles";
}
}