Skip to content

Commit

Permalink
[DDING-112] 지원자 메모하기 API 구현 (#262)
Browse files Browse the repository at this point in the history
  • Loading branch information
Seooooo24 authored Feb 13, 2025
1 parent d51e23b commit 3cf8937
Show file tree
Hide file tree
Showing 10 changed files with 73 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package ddingdong.ddingdongBE.domain.formapplication.api;

import ddingdong.ddingdongBE.auth.PrincipalDetails;
import ddingdong.ddingdongBE.domain.formapplication.controller.dto.request.UpdateFormApplicationNoteRequest;
import ddingdong.ddingdongBE.domain.formapplication.controller.dto.response.FormApplicationResponse;
import ddingdong.ddingdongBE.domain.formapplication.controller.dto.request.UpdateFormApplicationStatusRequest;
import ddingdong.ddingdongBE.domain.formapplication.controller.dto.response.MyAllFormApplicationsResponse;
Expand Down Expand Up @@ -51,4 +52,16 @@ void updateFormApplicationStatus(
@AuthenticationPrincipal PrincipalDetails principalDetails,
@Valid @RequestBody UpdateFormApplicationStatusRequest request
);

@Operation(summary = "지원자 메모하기 API")
@ApiResponse(responseCode = "204", description = "지원자 메모하기 성공")
@ResponseStatus(HttpStatus.NO_CONTENT)
@SecurityRequirement(name = "AccessToken")
@PatchMapping("/my/forms/{formId}/applications/{applicationId}")
void updateFormApplicationNote(
@PathVariable("formId") Long formId,
@PathVariable("applicationId") Long applicationId,
@AuthenticationPrincipal PrincipalDetails principalDetails,
@Valid @RequestBody UpdateFormApplicationNoteRequest request
);
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package ddingdong.ddingdongBE.domain.formapplication.controller;

import ddingdong.ddingdongBE.auth.PrincipalDetails;
import ddingdong.ddingdongBE.domain.formapplication.controller.dto.request.UpdateFormApplicationNoteRequest;
import ddingdong.ddingdongBE.domain.formapplication.controller.dto.request.UpdateFormApplicationStatusRequest;
import ddingdong.ddingdongBE.domain.formapplication.controller.dto.response.FormApplicationResponse;
import ddingdong.ddingdongBE.domain.formapplication.service.FacadeCentralFormApplicationService;
Expand Down Expand Up @@ -42,4 +43,10 @@ public void updateFormApplicationStatus(Long formId, PrincipalDetails principalD
User user = principalDetails.getUser();
facadeCentralFormApplicationService.updateStatus(request.toCommand(formId, user));
}

@Override
public void updateFormApplicationNote(Long formId, Long applicationId,
PrincipalDetails principalDetails, UpdateFormApplicationNoteRequest request) {
facadeCentralFormApplicationService.updateNote(request.toCommand(applicationId));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package ddingdong.ddingdongBE.domain.formapplication.controller.dto.request;

import ddingdong.ddingdongBE.domain.formapplication.service.dto.command.UpdateFormApplicationNoteCommand;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotNull;

public record UpdateFormApplicationNoteRequest(
@NotNull(message = "수정할 메모는 필수 입력 사항입니다.")
@Schema(description = "추가할 메모", example = "좋은 답변이었습니다.")
String note
) {
public UpdateFormApplicationNoteCommand toCommand(Long applicationId) {
return UpdateFormApplicationNoteCommand.builder()
.applicationId(applicationId)
.note(note)
.build();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@ public record FormApplicationResponse(
String email,
@Schema(description = "status", example = "SUBMITTED")
FormApplicationStatus status,
@Schema(description = "메모", example = "좋은 지원자였습니다.")
String note,
@ArraySchema(schema = @Schema(implementation = FormFieldAnswerListResponse.class))
List<FormFieldAnswerListResponse> formFieldAnswers
) {
Expand Down Expand Up @@ -86,6 +88,7 @@ public static FormApplicationResponse from(FormApplicationQuery formApplicationQ
.phoneNumber(formApplicationQuery.phoneNumber())
.email(formApplicationQuery.email())
.status(formApplicationQuery.status())
.note(formApplicationQuery.note())
.formFieldAnswers(responses)
.build();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,8 @@ public class FormApplication extends BaseEntity {
@ManyToOne(fetch = FetchType.LAZY)
private Form form;

private String note;

@Builder
private FormApplication(String name, String studentNumber, String department,
String phoneNumber, String email,
Expand All @@ -55,4 +57,8 @@ private FormApplication(String name, String studentNumber, String department,
public void updateStatus(FormApplicationStatus status) {
this.status = status;
}

public void updateNote(String note) {
this.note = note;
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package ddingdong.ddingdongBE.domain.formapplication.service;

import ddingdong.ddingdongBE.domain.formapplication.service.dto.command.UpdateFormApplicationNoteCommand;
import ddingdong.ddingdongBE.domain.formapplication.service.dto.command.UpdateFormApplicationStatusCommand;
import ddingdong.ddingdongBE.domain.formapplication.service.dto.query.FormApplicationQuery;
import ddingdong.ddingdongBE.domain.formapplication.service.dto.query.MyAllFormApplicationsQuery;
Expand All @@ -12,4 +13,6 @@ public interface FacadeCentralFormApplicationService {
FormApplicationQuery getFormApplication(Long formId, Long applicationId, User user);

void updateStatus(UpdateFormApplicationStatusCommand command);

void updateNote(UpdateFormApplicationNoteCommand command);
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import ddingdong.ddingdongBE.domain.form.service.FormService;
import ddingdong.ddingdongBE.domain.formapplication.entity.FormAnswer;
import ddingdong.ddingdongBE.domain.formapplication.entity.FormApplication;
import ddingdong.ddingdongBE.domain.formapplication.service.dto.command.UpdateFormApplicationNoteCommand;
import ddingdong.ddingdongBE.domain.formapplication.service.dto.command.UpdateFormApplicationStatusCommand;
import ddingdong.ddingdongBE.domain.formapplication.service.dto.query.FormApplicationQuery;
import ddingdong.ddingdongBE.domain.formapplication.service.dto.query.MyAllFormApplicationsQuery;
Expand Down Expand Up @@ -61,6 +62,13 @@ public void updateStatus(UpdateFormApplicationStatusCommand command) {
formApplications.forEach(formApplication -> formApplication.updateStatus(command.status()));
}

@Transactional
@Override
public void updateNote(UpdateFormApplicationNoteCommand command) {
FormApplication formApplication = formApplicationService.getById(command.applicationId());
formApplication.updateNote(command.note());
}

private List<FormFieldAnswerListQuery> buildFormFieldAnswerQueries(List<FormAnswer> formAnswers) {
return formAnswers.stream()
.map(formAnswer -> {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package ddingdong.ddingdongBE.domain.formapplication.service.dto.command;

import lombok.Builder;

@Builder
public record UpdateFormApplicationNoteCommand (
Long applicationId,
String note
){

}
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ public record FormApplicationQuery(
String phoneNumber,
String email,
FormApplicationStatus status,
String note,
List<FormFieldAnswerListQuery> formFieldAnswers
) {

Expand Down Expand Up @@ -75,6 +76,7 @@ public static FormApplicationQuery of(Form form, FormApplication formApplication
.phoneNumber(formApplication.getPhoneNumber())
.email(formApplication.getEmail())
.status(formApplication.getStatus())
.note(formApplication.getNote())
.formFieldAnswers(formFieldAnswerListQueries)
.build();
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
ALTER TABLE form_application
ADD note VARCHAR(500) NULL;

0 comments on commit 3cf8937

Please sign in to comment.