package org.molgenis.questionnaires;
import org.molgenis.data.DataService;
import org.molgenis.data.Entity;
import org.molgenis.data.meta.model.EntityTypeMetadata;
import org.molgenis.ui.MolgenisPluginController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
import java.util.stream.Collectors;
/**
* Static content editor for the questionnaires thank you page
*/
@Controller
@RequestMapping(ThankYouPageEditorController.URI)
public class ThankYouPageEditorController extends MolgenisPluginController
{
public static final String ID = "questionnaireThankYouPage";
public static final String URI = MolgenisPluginController.PLUGIN_URI_PREFIX + ID;
private final ThankYouTextService thankYouTextService;
private final DataService dataService;
@Autowired
public ThankYouPageEditorController(DataService dataService, ThankYouTextService thankYouTextService)
{
super(URI);
this.thankYouTextService = thankYouTextService;
this.dataService = dataService;
}
@RequestMapping(method = RequestMethod.GET)
public String view(@RequestParam(value = "questionnaireName", required = false) String questionnaireName,
@RequestParam(value = "edit", required = false, defaultValue = "false") String edit, Model model,
HttpServletResponse response) throws IOException
{
if ((questionnaireName != null) && dataService.getMeta().getEntityType(questionnaireName) == null)
{
response.sendError(404);
return null;
}
if (edit.equalsIgnoreCase("true") && (questionnaireName != null)) model.addAttribute("edit", true);
List<Entity> questionnaires = QuestionnaireUtils.findQuestionnairesMetaData(dataService)
.collect(Collectors.toList());
model.addAttribute("questionnaires", questionnaires);
if ((questionnaireName == null) && !questionnaires.isEmpty())
{
questionnaireName = questionnaires.get(0).getString(EntityTypeMetadata.FULL_NAME);
}
model.addAttribute("content", thankYouTextService.getThankYouText(questionnaireName));
model.addAttribute("selectedQuestionnaire", questionnaireName);
return "view-thank-you-text";
}
@RequestMapping(method = RequestMethod.POST)
public String save(@RequestParam("questionnaireName") String questionnaireName,
@RequestParam("content") String content, Model model)
{
if (dataService.getMeta().getEntityType(questionnaireName) != null)
{
thankYouTextService.saveThankYouText(questionnaireName, content);
}
List<Entity> questionnaires = QuestionnaireUtils.findQuestionnairesMetaData(dataService)
.collect(Collectors.toList());
model.addAttribute("questionnaires", questionnaires);
model.addAttribute("content", content);
model.addAttribute("selectedQuestionnaire", questionnaireName);
return "view-thank-you-text";
}
}