package com.rau.evoting.validators;
import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
import javax.faces.component.UIInput;
import javax.faces.context.FacesContext;
import javax.faces.validator.Validator;
import javax.faces.validator.ValidatorException;
import javax.mail.MessagingException;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.InternetHeaders;
import com.rau.evoting.utils.MailService;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class AddCandidateValidator implements Validator {
@Override
public void validate(FacesContext context, UIComponent component, Object value)
throws ValidatorException {
String id = component.getId();
if(id.equals("dob")) {
Date dob = (Date)value;
SimpleDateFormat format = new SimpleDateFormat("dd-mm-yyyy");
Date beforeDate = null;
Date afterDate = null;
try {
beforeDate = format.parse("01-01-1753");
afterDate = format.parse("31-12-9999");
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if(dob.before(beforeDate)){
throw new ValidatorException(new FacesMessage("Date must be not less than 01-01-1753"));
}
if(dob.after(afterDate)){
throw new ValidatorException(new FacesMessage("Date must be not great than 31-12-9999"));
}
} else if (id.equals("email")) {
UIInput nameInput = (UIInput)component.getAttributes().get("nameComponent");
String name = (String)nameInput.getValue();
UIInput surnameInput = (UIInput)component.getAttributes().get("surnameComponent");
String surname = (String)nameInput.getValue();
String message = "Hi Mr. " + name + " " + surname;
/*System.out.println("Message: " + message);
try {
MailService.sendMessage((String)value, "YAHOOOOOOOOOOOOOOOOOO", message);
} catch (MessagingException e) {
e.printStackTrace();
throw new ValidatorException(new FacesMessage("invalid email address"));
}*/
if(! validateEmail((String)value)) {
throw new ValidatorException(new FacesMessage("invalid email address"));
}
}
}
private boolean validateEmail(String email) {
boolean isValid = false;
InternetAddress address;
try {
address = new InternetAddress(email);
address.validate();
isValid = true;
} catch (AddressException e) {
e.printStackTrace();
}
return isValid;
}
}