55 lines
2.2 KiB
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);
|
|
}
|
|
}
|
|
}
|