/**
*
*/
package net.conselldemallorca.helium.webapp.mvc;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import net.conselldemallorca.helium.core.model.dto.TascaDto;
import net.conselldemallorca.helium.core.model.dto.TascaLlistatDto;
import net.conselldemallorca.helium.core.model.exception.NotFoundException;
import net.conselldemallorca.helium.core.model.hibernate.Entorn;
import net.conselldemallorca.helium.core.model.service.TascaService;
import net.conselldemallorca.helium.webapp.mvc.util.BaseController;
import net.conselldemallorca.helium.webapp.mvc.util.TascaFormUtil;
import net.conselldemallorca.helium.webapp.mvc.util.TramitacioMassiva;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
/**
* Controlador per la gestiĆ³ de signatures a les tasques
*
* @author Limit Tecnologies <limit@limit.es>
*/
@Controller
public class TascaSignaturesController extends BaseController {
private TascaService tascaService;
@Autowired
public TascaSignaturesController(
TascaService tascaService) {
this.tascaService = tascaService;
}
@ModelAttribute("seleccioMassiva")
public List<TascaLlistatDto> populateSeleccioMassiva(
HttpServletRequest request,
@RequestParam(value = "id", required = false) String id) {
if (id != null) {
Entorn entorn = getEntornActiu(request);
if (entorn != null) {
String[] ids = TramitacioMassiva.getTasquesTramitacioMassiva(request, id);
if (ids != null) {
List<TascaLlistatDto> tasquesTramitacioMassiva = tascaService.findTasquesPerTramitacioMassiva(
entorn.getId(),
null,
id);
for (Iterator<TascaLlistatDto> it = tasquesTramitacioMassiva.iterator(); it.hasNext();) {
TascaLlistatDto tasca = it.next();
boolean trobada = false;
for (String tascaId: ids) {
if (tascaId.equals(tasca.getId())) {
trobada = true;
break;
}
}
if (!trobada)
it.remove();
}
return tasquesTramitacioMassiva;
}
}
}
return null;
}
@ModelAttribute("commandReadOnly")
public Object populateCommand(
HttpServletRequest request,
@RequestParam(value = "id", required = true) String id) {
Entorn entorn = getEntornActiu(request);
if (entorn != null) {
try {
TascaDto tasca = tascaService.getById(
entorn.getId(),
id,
null,
null,
true,
true);
Map<String, Object> campsAddicionals = new HashMap<String, Object>();
campsAddicionals.put("id", id);
campsAddicionals.put("entornId", entorn.getId());
campsAddicionals.put("procesScope", null);
@SuppressWarnings("rawtypes")
Map<String, Class> campsAddicionalsClasses = new HashMap<String, Class>();
campsAddicionalsClasses.put("id", String.class);
campsAddicionalsClasses.put("entornId", Long.class);
campsAddicionalsClasses.put("procesScope", Map.class);
Object command = TascaFormUtil.getCommandForTasca(
tasca,
campsAddicionals,
campsAddicionalsClasses);
return command;
} catch (NotFoundException ignored) {}
}
return null;
}
@RequestMapping(value = "/tasca/signatures")
public String signatures(
HttpServletRequest request,
@RequestParam(value = "id", required = true) String id,
ModelMap model) {
Entorn entorn = getEntornActiu(request);
if (entorn != null) {
if (model.get("commandReadOnly") == null) {
missatgeError(request, getMessage("error.tasca.no.disponible") );
return "redirect:/tasca/personaLlistat.html";
}
TascaDto tasca = tascaService.getById(
entorn.getId(),
id,
null,
null,
true,
true);
model.addAttribute("tasca", tasca);
return "tasca/signatures";
} else {
missatgeError(request, getMessage("error.no.entorn.selec") );
return "redirect:/index.html";
}
}
}