
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
package com.example.educatback.controller;
import com.example.educatback.Application.MemberAppService;
import com.example.educatback.Application.StudyAnswerAppService;
import com.example.educatback.DuplicateIdException;
import com.example.educatback.controller.request.MemberRequest;
import com.example.educatback.controller.request.StudyAnswerRequest;
import com.example.educatback.controller.response.ApiResponse;
import com.example.educatback.controller.response.ResponseCode;
import com.example.educatback.controller.response.SolvedResponse;
import jakarta.persistence.EntityNotFoundException;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/studyAnswer")
@RequiredArgsConstructor
public class StudyAnswerController {
private final StudyAnswerAppService studyAnswerAppService;
@PostMapping("/checkAnswer")
public ApiResponse<SolvedResponse> checkAnswer(@RequestBody StudyAnswerRequest.Save request, @AuthenticationPrincipal UserDetails user) {
try {
SolvedResponse solvedResponse = studyAnswerAppService.checkAnswer(request, user.getUsername());
return ApiResponse.response(true, ResponseCode.SUCCESS, solvedResponse);
} catch (Exception e) {
return handleException(e);
}
}
private <T> ApiResponse<T> handleException(Exception e) {
if (e instanceof MethodArgumentNotValidException) {
return ApiResponse.response(false, ResponseCode.ValidationError, null);
}
if (e instanceof DuplicateIdException) {
return ApiResponse.response(false, ResponseCode.DuplicateError, null);
}
if (e instanceof EntityNotFoundException) {
return ApiResponse.response(false, ResponseCode.NOT_FOUND, null);
}
return ApiResponse.response(false, ResponseCode.InternalServerError, null);
}
}