Tinder-Clone/src/ru/charm/back/controller/RegistrationController.java

60 lines
2.3 KiB
Java

package ru.charm.back.controller;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import lombok.extern.slf4j.Slf4j;
import ru.charm.back.dto.RegistrationDto;
import ru.charm.back.mapper.RequestToRegistrationDtoMapper;
import ru.charm.back.service.ProfileService;
import ru.charm.back.validator.RegistrationValidator;
import ru.charm.back.validator.ValidationResult;
import java.io.IOException;
@WebServlet("/registration")
@Slf4j
public class RegistrationController extends HttpServlet {
private final ProfileService service = ProfileService.getInstance();
private final RequestToRegistrationDtoMapper requestToRegistrationDtoMapper = RequestToRegistrationDtoMapper.getInstance();
private final RegistrationValidator validator = RegistrationValidator.getInstance();
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.getRequestDispatcher("/WEB-INF/jsp/registration.jsp").forward(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException {
RegistrationDto dto = requestToRegistrationDtoMapper.map(req);
ValidationResult validationResult = validator.validate(dto);
if (!validationResult.isValid()) {
req.setAttribute("errors", validationResult.getErrors());
doGet(req, resp);
return;
}
Long id = service.save(dto);
log.info("Profile with the email address {} has been registered with id {}", dto.getEmail(), id);
resp.sendRedirect(String.format("/profile?id=%s", id));
}
@Override
protected void doDelete(HttpServletRequest req, HttpServletResponse resp) throws IOException {
String sId = req.getParameter("id");
boolean success = false;
if (!sId.isBlank()) {
success = service.delete(Long.parseLong(sId));
}
resp.setStatus(HttpServletResponse.SC_NO_CONTENT);
if (success) {
log.info("Profile with id {} has been deleted", sId);
}
resp.sendRedirect("/registration");
}
}