package net.sourceforge.solexatools.webapp.controller;
import java.util.LinkedList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.sourceforge.seqware.common.business.RegistrationService;
import net.sourceforge.seqware.common.model.Registration;
import net.sourceforge.seqware.common.util.Log;
import net.sourceforge.solexatools.Security;
import net.sourceforge.solexatools.validation.LoginValidator;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.BaseCommandController;
/**
* <p>
* InviteNewUserValidatorController class.
* </p>
*
* @author boconnor
* @version $Id: $Id
*/
public class InviteNewUserValidatorController extends BaseCommandController {
private RegistrationService registrationService;
/**
* <p>
* Constructor for InviteNewUserValidatorController.
* </p>
*/
public InviteNewUserValidatorController() {
super();
setSupportedMethods(new String[] { METHOD_GET });
}
/**
* {@inheritDoc}
*
* @return
* @throws java.lang.Exception
*/
@Override
protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) throws Exception {
Registration registration = Security.getRegistration(request);
if (registration == null || !registration.isLIMSAdmin()) return new ModelAndView("redirect:/login.htm");
Boolean isHasError = false;
List<String> errorMessages = new LinkedList<>();
List<String> emailsHasError = new LinkedList<>();
String[] emails = request.getParameterValues("emailsToString");
if (emails == null || (emails.length == 1 && emails[0].trim().isEmpty())) {
Log.info("Emails is Empty");
isHasError = true;
errorMessages.add(this.getMessageSourceAccessor().getMessage("error.list.emails.empty"));
}
// Check is correct emails format
if (!isHasError) {
for (String email : emails) {
if (!LoginValidator.isCheckEmail(email)) {
isHasError = true;
emailsHasError.add(email);
}
}
if (isHasError) {
errorMessages.add(this.getMessageSourceAccessor().getMessage("error.format.list.emails",
new Object[] { getEmailsToString(emailsHasError) }));
}
}
// emails already exists?
if (!isHasError) {
for (String email : emails) {
if (getRegistrationService().findByEmailAddress(email) != null) {
isHasError = true;
emailsHasError.add(email);
}
}
if (isHasError) {
errorMessages.add(this.getMessageSourceAccessor().getMessage("error.list.emails.exists",
new Object[] { getEmailsToString(emailsHasError) }));
}
}
ModelAndView modelAndView = new ModelAndView("ResultShareValidation");
modelAndView.addObject("isHasError", isHasError);
modelAndView.addObject("errorMessages", errorMessages);
return modelAndView;
}
private String getEmailsToString(List<String> emails) {
String str = "";
if (emails != null && emails.size() > 0) {
for (String email : emails) {
str = str + email + ", ";
}
str = str.substring(0, str.length() - 2);
}
return str;
}
/**
* <p>
* Getter for the field <code>registrationService</code>.
* </p>
*
* @return a {@link net.sourceforge.seqware.common.business.RegistrationService} object.
*/
public RegistrationService getRegistrationService() {
return registrationService;
}
/**
* <p>
* Setter for the field <code>registrationService</code>.
* </p>
*
* @param registrationService
* a {@link net.sourceforge.seqware.common.business.RegistrationService} object.
*/
public void setRegistrationService(RegistrationService registrationService) {
this.registrationService = registrationService;
}
}