Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
package dmu.dasom.api.domain.interview.dto;

import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotNull;
import lombok.*;

@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Schema(name = "InterviewReservationApplicantResponseDto", description = "면접 예약 지원자 응답 DTO")
public class InterviewReservationApplicantResponseDto {

@NotNull(message = "지원자 ID는 필수 값입니다.")
@Schema(description = "지원자의 고유 ID", example = "1234")
private Long applicantId;

@NotNull(message = "이름은 필수 값입니다.")
@Schema(description = "지원자 이름", example = "홍길동")
private String applicantName;

@NotNull(message = "학번은 필수 값입니다.")
@Schema(description = "지원자 학번", example = "20210001")
private String studentNo;

@NotNull(message = "연락처는 필수 값입니다.")
@Schema(description = "지원자 연락처", example = "010-1234-5678")
private String contact;

@NotNull(message = "이메일은 필수 값입니다.")
@Schema(description = "지원자 이메일", example = "[email protected]")
private String email;

@Schema(description = "희망 활동", example = "프로젝트")
private String activityWish;

@Schema(description = "지원 동기", example = "동아리 활동을 통해 새로운 경험을 쌓고 싶어서 지원합니다.")
private String reasonForApply;
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package dmu.dasom.api.domain.interview.service;

import dmu.dasom.api.domain.interview.dto.InterviewReservationApplicantResponseDto;
import dmu.dasom.api.domain.interview.dto.InterviewReservationRequestDto;
import dmu.dasom.api.domain.interview.dto.InterviewSlotResponseDto;

Expand All @@ -24,4 +25,6 @@ public interface InterviewService {

List<InterviewSlotResponseDto> getAllInterviewSlots();

List<InterviewReservationApplicantResponseDto> getAllInterviewApplicants();

}
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import dmu.dasom.api.domain.applicant.repository.ApplicantRepository;
import dmu.dasom.api.domain.common.exception.CustomException;
import dmu.dasom.api.domain.common.exception.ErrorCode;
import dmu.dasom.api.domain.interview.dto.InterviewReservationApplicantResponseDto;
import dmu.dasom.api.domain.interview.dto.InterviewReservationRequestDto;
import dmu.dasom.api.domain.interview.dto.InterviewSlotResponseDto;
import dmu.dasom.api.domain.interview.entity.InterviewReservation;
Expand All @@ -22,6 +23,7 @@
import java.time.LocalTime;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

@RequiredArgsConstructor
@Service
Expand All @@ -37,10 +39,14 @@ public class InterviewServiceImpl implements InterviewService{
@Override
@Transactional
public List<InterviewSlotResponseDto> createInterviewSlots(LocalDate newStartDate, LocalDate newEndDate, LocalTime newStartTime, LocalTime newEndTime) {
boolean slotsExist = interviewSlotRepository.existsAny();
List<InterviewSlot> existingSlots = interviewSlotRepository.findAll();

if(slotsExist){
interviewSlotRepository.deleteAll();
if(!existingSlots.isEmpty()){
List<InterviewSlot> slotsToDelete = existingSlots.stream()
.filter(slot -> slot.getCurrentCandidates() == 0)
.toList();

interviewSlotRepository.deleteAll(slotsToDelete);
}

List<InterviewSlotResponseDto> newSlots = new ArrayList<>();
Expand Down Expand Up @@ -142,4 +148,24 @@ public List<InterviewSlotResponseDto> getAllInterviewSlots() {
.toList();
}

@Override
public List<InterviewReservationApplicantResponseDto> getAllInterviewApplicants() {
List<InterviewReservation> reservations = interviewReservationRepository.findAll();

return reservations.stream()
.map(reservation -> {
Applicant applicant = reservation.getApplicant();
return InterviewReservationApplicantResponseDto.builder()
.applicantId(applicant.getId())
.applicantName(applicant.getName())
.studentNo(applicant.getStudentNo())
.contact(applicant.getContact())
.email(applicant.getEmail())
.activityWish(applicant.getActivityWish())
.reasonForApply(applicant.getReasonForApply())
.build();
})
.collect(Collectors.toList());
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,7 @@
import dmu.dasom.api.domain.applicant.dto.ApplicantCreateRequestDto;
import dmu.dasom.api.domain.applicant.service.ApplicantService;
import dmu.dasom.api.domain.common.exception.ErrorResponse;
import dmu.dasom.api.domain.interview.dto.InterviewReservationRequestDto;
import dmu.dasom.api.domain.interview.dto.InterviewSlotCreateRequestDto;
import dmu.dasom.api.domain.interview.dto.InterviewSlotRequestDto;
import dmu.dasom.api.domain.interview.dto.InterviewSlotResponseDto;
import dmu.dasom.api.domain.interview.dto.*;
import dmu.dasom.api.domain.interview.service.InterviewService;
import dmu.dasom.api.domain.recruit.dto.ResultCheckRequestDto;
import dmu.dasom.api.domain.recruit.dto.ResultCheckResponseDto;
Expand Down Expand Up @@ -128,4 +125,10 @@ public ResponseEntity<List<InterviewSlotResponseDto>> getAllInterviewSlots() {
return ResponseEntity.ok(allSlots);
}

@GetMapping("/interview/applicants")
public ResponseEntity<List<InterviewReservationApplicantResponseDto>> getAllInterviewApplicants() {
List<InterviewReservationApplicantResponseDto> applicants = interviewService.getAllInterviewApplicants();
return ResponseEntity.ok(applicants);
}

}