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

55 lines
2.2 KiB
Java

package ru.charm.back.controller;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.MultipartConfig;
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.ProfileGetDto;
import ru.charm.back.dto.ProfileUpdateDto;
import ru.charm.back.mapper.RequestToProfileUpdateDtoMapper;
import ru.charm.back.model.exception.DuplicateEmailException;
import ru.charm.back.service.ProfileService;
import java.io.IOException;
import java.util.Optional;
import static jakarta.servlet.http.HttpServletResponse.SC_BAD_REQUEST;
@WebServlet("/credentials")
@Slf4j
@MultipartConfig
public class CredentialsController extends HttpServlet {
private final ProfileService service = ProfileService.getInstance();
private final RequestToProfileUpdateDtoMapper requestToProfileUpdateDtoMapper = RequestToProfileUpdateDtoMapper.getInstance();
@Override
protected void doGet (HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String sId = req.getParameter("id");
String forwardUri = "/notFound";
if (sId != null) {
Optional<ProfileGetDto> optProfileGetDto = service.findById(Long.parseLong(sId));
if (optProfileGetDto.isPresent()) {
req.setAttribute("profile", optProfileGetDto.get());
forwardUri = "/WEB-INF/jsp/email.jsp";
}
}
req.getRequestDispatcher(forwardUri).forward(req, resp);
}
@Override
protected void doPut (HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
ProfileUpdateDto dto = requestToProfileUpdateDtoMapper.map(req, new ProfileUpdateDto());
try {
service.update(dto);
log.info("Email {} was changed in profile with id = {}", dto.getEmail(), dto.getId());
resp.sendRedirect(String.format("/profile?id=%s", dto.getId()));
} catch (DuplicateEmailException e) {
resp.sendError(SC_BAD_REQUEST);
}
}
}