/**
* The contents of this file are subject to the license and copyright
* detailed in the LICENSE and NOTICE files at the root of the source
* tree and available online at
*
* https://github.com/CILEA/dspace-cris/wiki/License
*/
package org.dspace.app.webui.cris.controller;
import java.io.File;
import java.util.Locale;
import java.util.ResourceBundle;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.dspace.app.cris.model.ResearcherPage;
import org.dspace.app.cris.util.ResearcherPageUtils;
import org.dspace.app.webui.cris.dto.MailDTO;
import org.dspace.app.webui.util.UIUtil;
import org.dspace.core.ConfigurationManager;
import org.dspace.core.Email;
import org.springframework.validation.BindException;
import org.springframework.web.servlet.ModelAndView;
/**
* This SpringMVC controller is responsible to send request change email to
* backoffice staff.
*
* @author cilea
*
*/
public class FormSendMailController extends BaseFormController
{
/*
* constants to define the scope of the send mail page
*/
/**
* constant to request changes for media
*/
public final int MODE_MEDIA = 1;
/**
* constant to request changes for bibliometric data
*/
public final int MODE_BIBLIOMETRIC = 2;
/**
* constant to request changes for item
*/
public final int MODE_ITEMS = 3;
/**
* email template name constant
*/
public final String TEMPLATE_MEDIA = "rp_request_changes_media";
/**
* email template name constant
*/
public final String TEMPLATE_BIBLIOMETRIC = "rp_request_changes_bibliometric";
/**
* email template name constant
*/
public final String TEMPLATE_ITEMS = "rp_request_changes_items";
protected Object formBackingObject(HttpServletRequest request)
throws Exception
{
String mode_s = request.getParameter("mode");
Integer mode = Integer.parseInt(mode_s);
String id_s = request.getParameter("id");
Integer id = null;
if (id_s != null)
{
id = Integer.parseInt(id_s);
}
ResearcherPage researcher = applicationService.get(
ResearcherPage.class, id);
MailDTO dto = new MailDTO();
dto.setSubmitter(researcher.getId());
dto.setRp(ResearcherPageUtils.getPersistentIdentifier(researcher));
Locale supportedLocale = request.getLocale();
ResourceBundle labels = ResourceBundle.getBundle("Messages",
supportedLocale);
switch (mode)
{
case MODE_BIBLIOMETRIC:
dto.setTemplate(TEMPLATE_BIBLIOMETRIC);
dto.setSubject(labels
.getString("subject.mail.hku.request-changes.two"));
break;
case MODE_ITEMS:
dto.setTemplate(TEMPLATE_ITEMS);
dto.setSubject(labels
.getString("subject.mail.hku.request-changes.three"));
break;
default:
dto.setTemplate(TEMPLATE_MEDIA);
dto.setSubject(labels
.getString("subject.mail.hku.request-changes.one"));
break;
}
return dto;
}
protected ModelAndView onSubmit(HttpServletRequest request,
HttpServletResponse response, Object command, BindException errors)
throws Exception
{
MailDTO dto = (MailDTO) command;
// send mail
Email email = Email.getEmail(ConfigurationManager
.getProperty("dspace.dir")
+ File.separatorChar
+ "config"
+ File.separatorChar
+ "emails"
+ File.separatorChar + dto.getTemplate());
email.addArgument(dto.getRp());
email.addArgument(dto.getText());
email.addRecipient(ConfigurationManager
.getProperty("feedback.recipient"));
email.setReplyTo(UIUtil.obtainContext(request).getCurrentUser()
.getEmail());
email.send();
return new ModelAndView(getSuccessView() + dto.getRp());
}
}