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"); } }