package oss.ngocminh.lego.service;
import java.io.IOException;
import java.sql.Connection;
import java.sql.SQLException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang.StringUtils;
import oss.ngocminh.lego.data.User;
import oss.ngocminh.lego.persistence.UserDAO;
import oss.ngocminh.lego.util.EmailValidator;
import oss.ngocminh.lego.util.SessionUtils;
/**
* Servlet implementation class GuestLoginController
*/
public class GuestLoginController extends AbstractController {
private static final long serialVersionUID = 1L;
/**
* Default constructor.
*/
public GuestLoginController() {
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
renderView(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
Errors errors = new Errors();
String email = getEmail(request, errors);
String firstName = getFirstName(request, errors);
String lastName = getLastName(request, errors);
String address = getAddress(request, errors);
String company = getCompany(request, errors);
String telephone = getTelephone(request, errors);
String mobile = getMobile(request, errors);
if (errors.isNotEmpty()) {
request.setAttribute("errors", errors);
renderView(request, response);
return;
}
User user = new User();
user.put("email", email);
user.put("firstName", firstName);
user.put("lastName", lastName);
user.put("address", address);
user.put("company", company);
user.put("telephone", telephone);
user.put("mobile", mobile);
try {
Connection conn = getConnection();
UserDAO userDAO = new UserDAO(conn);
userDAO.save(user);
conn.close();
} catch (SQLException e) {
throw new ServletException(e);
}
SessionUtils.login(request, user);
String returnUrl = StringUtils.defaultIfEmpty(
request.getParameter("returnUrl"), "home");
redirect(returnUrl, response);
}
private String getMobile(HttpServletRequest request, Errors errors) {
return request.getParameter("mobile");
}
private String getTelephone(HttpServletRequest request, Errors errors) {
return request.getParameter("telephone");
}
private String getCompany(HttpServletRequest request, Errors errors) {
return request.getParameter("company");
}
private String getAddress(HttpServletRequest request, Errors errors) {
return request.getParameter("address");
}
private String getLastName(HttpServletRequest request, Errors errors) {
return request.getParameter("lastName");
}
private String getFirstName(HttpServletRequest request, Errors errors) {
String firstName = request.getParameter("firstName");
if (StringUtils.isBlank(firstName)) {
errors.put("firstName", "Cần phải điền tên của bạn");
}
return firstName;
}
private String getEmail(HttpServletRequest request, Errors errors) throws ServletException {
String email = request.getParameter("email").trim();
if (StringUtils.isNotEmpty(email)) {
if (EmailValidator.isNotValid(email)) {
errors.put("email", "Địa chỉ thư không hợp lệ");
}
try {
Connection conn = getConnection();
UserDAO userDAO = new UserDAO(conn);
if (userDAO.findByEmail(email) != null) {
errors.put("email", "Địa chỉ thư đã được sử dụng");
}
conn.close();
} catch (SQLException e) {
throw new ServletException(e);
}
}
return email;
}
}