req.getRequestDispatcher("/index.jsp").forward(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
YFEmployee user = (YFEmployee) req.getSession().getAttribute("user");
YFEmployee employee = new YFEmployee();
boolean isOk = true;
if (req.getParameter("id") != null && !req.getParameter("id").isEmpty()) {
try {
if (user.getRestaurant() != null) {
// On récupère déjà l'utilisateur pour voir s'il est dans le restaurant du connecté
employee = employeeService.getEmployeeFromRestaurant(Long.parseLong(req.getParameter("id")), user.getRestaurant().getId());
if (employee == null) {
req.setAttribute("idError", "Une erreur est survenue lors de la mise à jour de l'employé");
isOk = false;
}
} else {
employee = employeeService.getEmployee(Long.parseLong(req.getParameter("id")));
}
req.setAttribute("isEmployeeEdition", true);
} catch (Exception e) {
System.out.println("ID en chaine de caractères.");
req.setAttribute("idError", "Une erreur est survenue lors de la mise à jour de l'employé");
isOk = false;
}
}
if (req.getParameter("username") == null || req.getParameter("username").isEmpty()) {
req.setAttribute("usernameError", "Ne doit pas être vide.");
isOk = false;
} else if ((employee.getId() == null || employee.getId() <= 0) && employeeService.getEmployee(req.getParameter("username")) != null) {
req.setAttribute("usernameError", "Le login de l'employé est déjà pris.");
isOk = false;
}
// Si l'employé existe et que nous voulons changer le mdp
if (employee.getId() != null && employee.getId() > 0) {
if (req.getParameter("changePassword") != null && req.getParameter("changePassword").equals("on")) {
req.setAttribute("changePasswordIsSelected", "checked");
if (req.getParameter("password") == null || req.getParameter("password").isEmpty()) {
req.setAttribute("passwordError", "Ne doit pas être vide.");
isOk = false;
} else {
employee.setPassword(employeeService.hash(req.getParameter("password")));
}
}
} else {
// Si l'employé est nouveau, nous devons obligatoirement mettre un mdp
if (req.getParameter("password") == null || req.getParameter("password").isEmpty()) {
req.setAttribute("passwordError", "Ne doit pas être vide.");
isOk = false;
} else {
employee.setPassword(employeeService.hash(req.getParameter("password")));
}
}
YFRestaurant restaurant = null;
if (req.getParameter("restaurant") != null && !req.getParameter("restaurant").isEmpty()) {
try {
long restaurantId = Long.parseLong(req.getParameter("restaurant"));
// On dit qu'un ID de restaurant à 0 normal. C'est pour permettre la différenciation
// entre les administrateur à l'échelle d'un restaurant et les administrateurs
// de l'entreprise YouFood
if (restaurantId != 0) {
restaurant = restaurantService.getRestaurant(restaurantId);
if (restaurant == null) {
isOk = false;
req.setAttribute("restaurantError", "Le restaurant n'existe pas.");
}
}
} catch (Exception e) {
req.setAttribute("restaurantError", "Une erreur est survenue lors de la récupération du restaurant.");
isOk = false;
}
}
YFJob job = null;
if (req.getParameter("group") != null && !req.getParameter("group").isEmpty()) {
try {
job = YFJob.valueOf(req.getParameter("group"));
if (job.equals(YFJob.ADMINISTRATOR) && restaurant == null) {
ArrayList<YFEmployee> administrators = (ArrayList<YFEmployee>) employeeService.getEmployees(YFJob.ADMINISTRATOR);
if (administrators != null && administrators.size() == 1) {
if (employee.getId() != null && employee.getId().equals(administrators.get(0).getId())
&& !job.equals(YFJob.ADMINISTRATOR) || employee.getRestaurant() != null) {
isOk = false;
req.setAttribute("groupError", "Il doit rester au moins un superadministrateur. Donc ne lui assignez pas un restaurant.");
}
} else if (!job.equals(YFJob.ADMINISTRATOR) && restaurant == null) {
req.setAttribute("groupError", "Impossible de définir un autre groupe qu'administrateur à quelqu'un de non assigné à un restaurant");
isOk = false;
}
}
} catch (Exception e) {
e.printStackTrace();
req.setAttribute("groupError", "Le groupe n'existe pas.");
isOk = false;
}
} else {
req.setAttribute("groupError", "Ne doit pas être vide.");
isOk = false;
}
employee.setFirstname(req.getParameter("firstname"));
employee.setLastname(req.getParameter("lastname"));
employee.setMail(req.getParameter("mail"));
employee.setPhone(req.getParameter("phone"));
employee.setUsername(req.getParameter("username"));
employee.setJob(job);
employee.setAddress(req.getParameter("address"));
employee.setRestaurant(restaurant);
if (isOk) {
if (employee.getId() == null || employee.getId() == 0) {
employeeService.createEmployee(employee);
} else {
employeeService.updateEmployee(employee);
}