|
7 | 7 | import io.micronaut.core.annotation.Nullable; |
8 | 8 | import io.micronaut.core.convert.format.Format; |
9 | 9 | import io.micronaut.http.HttpResponse; |
10 | | -import io.micronaut.http.HttpStatus; |
11 | 10 | import io.micronaut.http.annotation.*; |
12 | 11 | import io.micronaut.scheduling.TaskExecutors; |
13 | 12 | import io.micronaut.scheduling.annotation.ExecuteOn; |
14 | 13 | import io.micronaut.security.annotation.Secured; |
15 | 14 | import io.micronaut.security.rules.SecurityRule; |
16 | | -import io.micronaut.security.utils.SecurityService; |
17 | 15 | import io.micronaut.validation.Validated; |
18 | 16 | import io.swagger.v3.oas.annotations.tags.Tag; |
19 | | -import jakarta.inject.Inject; |
20 | 17 | import jakarta.validation.Valid; |
21 | 18 | import jakarta.validation.constraints.NotNull; |
22 | 19 |
|
|
28 | 25 | @Validated |
29 | 26 | @Controller("/services/feedback/external/recipients") |
30 | 27 | @ExecuteOn(TaskExecutors.BLOCKING) |
31 | | -@Secured(SecurityRule.IS_ANONYMOUS) |
| 28 | +@Secured(SecurityRule.IS_AUTHENTICATED) |
32 | 29 | @Tag(name = "feedback external recipient") |
33 | 30 | public class FeedbackExternalRecipientController { |
34 | 31 |
|
35 | | - private final FeedbackRequestServices feedbackReqServices; |
36 | 32 | private final FeedbackExternalRecipientServices feedbackExternalRecipientServices; |
37 | 33 |
|
38 | | - public FeedbackExternalRecipientController(FeedbackRequestServices feedbackRequestServices, FeedbackExternalRecipientServices feedbackExternalRecipientServices) { |
39 | | - this.feedbackReqServices = feedbackRequestServices; |
| 34 | + public FeedbackExternalRecipientController(FeedbackExternalRecipientServices feedbackExternalRecipientServices) { |
40 | 35 | this.feedbackExternalRecipientServices = feedbackExternalRecipientServices; |
41 | 36 | } |
42 | 37 |
|
43 | | - @Get("/{?creatorId,requesteeId,recipientId,oldestDate,reviewPeriodId,templateId,externalRecipientId,requesteeIds}") |
44 | | - public List<FeedbackRequestResponseDTO> findByValues(@Nullable UUID creatorId, @Nullable UUID requesteeId, @Nullable UUID recipientId, @Nullable @Format("yyyy-MM-dd") LocalDate oldestDate, @Nullable UUID reviewPeriodId, @Nullable UUID templateId, @Nullable UUID externalRecipientId, @Nullable List<UUID> requesteeIds) { |
45 | | - if (externalRecipientId == null) { |
46 | | - throw new BadArgException("Missing required parameter: externalRecipientId"); |
47 | | - } |
48 | | - return feedbackReqServices.findByValues(creatorId, requesteeId, recipientId, oldestDate, reviewPeriodId, templateId, externalRecipientId, requesteeIds) |
49 | | - .stream() |
50 | | - .map(this::fromEntity) |
51 | | - .toList(); |
52 | | - } |
53 | | - |
54 | 38 | /** |
55 | | - * Update a feedback request |
| 39 | + * Create a feedback request external recipient |
56 | 40 | * |
57 | | - * @param requestBody {@link FeedbackRequestUpdateDTO} The updated feedback request |
58 | | - * @return {@link FeedbackRequestResponseDTO} |
| 41 | + * @param feedbackExternalRecipientCreateDTO {@link FeedbackExternalRecipientCreateDTO} New feedback-req external recipient to create |
| 42 | + * @return {@link FeedbackExternalRecipient} |
59 | 43 | */ |
60 | | - @Put |
61 | | - public HttpResponse<FeedbackRequestResponseDTO> update(@Body @Valid @NotNull FeedbackRequestUpdateDTO requestBody) { |
62 | | - if (requestBody.getExternalRecipientId() == null) { |
63 | | - throw new BadArgException("Missing required parameter: externalRecipientId"); |
| 44 | + @RequiredPermission(Permission.CAN_CREATE_FEEDBACK_REQUEST) |
| 45 | + @Post |
| 46 | + public HttpResponse<FeedbackExternalRecipientResponseDTO> save(@Body @Valid @NotNull FeedbackExternalRecipientCreateDTO feedbackExternalRecipientCreateDTO) { |
| 47 | + FeedbackExternalRecipient savedFeedbackExternalRecipient; |
| 48 | + FeedbackExternalRecipient feedbackExternalRecipientFromDto = fromDTO(feedbackExternalRecipientCreateDTO); |
| 49 | + try { |
| 50 | + savedFeedbackExternalRecipient = feedbackExternalRecipientServices.save(feedbackExternalRecipientFromDto); |
| 51 | + } catch (Exception e) { |
| 52 | + throw e; |
64 | 53 | } |
65 | | - FeedbackRequest savedFeedback = feedbackReqServices.update(requestBody); |
66 | | - return HttpResponse.ok(fromEntity(savedFeedback)) |
67 | | - .headers(headers -> headers.location(URI.create("/feedback_request/" + savedFeedback.getId()))); |
| 54 | + return HttpResponse.created(fromEntity(savedFeedbackExternalRecipient)) |
| 55 | + .headers(headers -> headers.location(URI.create("/feedback_external_recipient/" + savedFeedbackExternalRecipient.getId()))); |
68 | 56 | } |
69 | 57 |
|
70 | | - /** |
71 | | - * Get feedback request by ID |
72 | | - * |
73 | | - * @param id {@link UUID} ID of the request |
74 | | - * @return {@link FeedbackRequestResponseDTO} |
75 | | - */ |
76 | | - //@Secured(SecurityRule.IS_ANONYMOUS) |
77 | | - @Get("/{id}") |
78 | | - public HttpResponse<FeedbackRequestResponseDTO> getById(UUID id) { |
79 | | - FeedbackRequest feedbackRequest = feedbackReqServices.getById(id); |
80 | | - if (feedbackRequest.getExternalRecipientId() == null) { |
81 | | - throw new BadArgException("Missing required parameter: externalRecipientId"); |
82 | | - } |
83 | | - return feedbackRequest == null ? HttpResponse.notFound() : HttpResponse.ok(fromEntity(feedbackRequest)) |
84 | | - .headers(headers -> headers.location(URI.create("/feedback_request" + feedbackRequest.getId()))); |
| 58 | + private FeedbackExternalRecipient fromDTO(FeedbackExternalRecipientCreateDTO dto) { |
| 59 | + FeedbackExternalRecipient object = new FeedbackExternalRecipient(); |
| 60 | + object.setEmail(dto.getEmail()); |
| 61 | + object.setFirstName(dto.getFirstName()); |
| 62 | + object.setLastName(dto.getLastName()); |
| 63 | + object.setCompanyName(dto.getCompanyName()); |
| 64 | + return object; |
85 | 65 | } |
86 | 66 |
|
87 | | - private FeedbackRequestResponseDTO fromEntity(FeedbackRequest feedbackRequest) { |
88 | | - FeedbackRequestResponseDTO dto = new FeedbackRequestResponseDTO(); |
89 | | - dto.setId(feedbackRequest.getId()); |
90 | | - dto.setCreatorId(feedbackRequest.getCreatorId()); |
91 | | - dto.setRequesteeId(feedbackRequest.getRequesteeId()); |
92 | | - dto.setRecipientId(feedbackRequest.getRecipientId()); |
93 | | - dto.setTemplateId(feedbackRequest.getTemplateId()); |
94 | | - dto.setSendDate(feedbackRequest.getSendDate()); |
95 | | - dto.setDueDate(feedbackRequest.getDueDate()); |
96 | | - dto.setStatus(feedbackRequest.getStatus()); |
97 | | - dto.setSubmitDate(feedbackRequest.getSubmitDate()); |
98 | | - dto.setReviewPeriodId(feedbackRequest.getReviewPeriodId()); |
99 | | - dto.setExternalRecipientId(feedbackRequest.getExternalRecipientId()); |
100 | | - |
| 67 | + private FeedbackExternalRecipientResponseDTO fromEntity(FeedbackExternalRecipient feedbackExternalRecipient) { |
| 68 | + FeedbackExternalRecipientResponseDTO dto = new FeedbackExternalRecipientResponseDTO(); |
| 69 | + dto.setId(feedbackExternalRecipient.getId()); |
| 70 | + dto.setEmail(feedbackExternalRecipient.getEmail()); |
| 71 | + dto.setFirstName(feedbackExternalRecipient.getFirstName()); |
| 72 | + dto.setLastName(feedbackExternalRecipient.getLastName()); |
| 73 | + dto.setCompanyName(feedbackExternalRecipient.getCompanyName()); |
101 | 74 | return dto; |
102 | 75 | } |
103 | 76 |
|
|
0 commit comments