Skip to content

Commit b5e4977

Browse files
committed
Changed report generation to a POST so that member ids could be part of the body instead of a URL parameter.
1 parent 5a76dd4 commit b5e4977

File tree

4 files changed

+24
-54
lines changed

4 files changed

+24
-54
lines changed

server/src/main/java/com/objectcomputing/checkins/services/reports/ReportDataController.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import io.micronaut.http.MediaType;
1818
import io.micronaut.http.HttpStatus;
1919
import io.micronaut.http.annotation.Controller;
20+
import io.micronaut.http.annotation.Body;
2021
import io.micronaut.http.annotation.Post;
2122
import io.micronaut.http.annotation.Get;
2223
import io.micronaut.http.multipart.CompletedFileUpload;
@@ -30,6 +31,7 @@
3031
import reactor.core.publisher.Flux;
3132
import reactor.core.scheduler.Schedulers;
3233
import jakarta.validation.constraints.NotNull;
34+
import jakarta.validation.Valid;
3335

3436
import org.slf4j.Logger;
3537
import org.slf4j.LoggerFactory;
@@ -121,10 +123,9 @@ private String uploadHelper(ReportDataServices.DataType dataType,
121123
}
122124
}
123125

124-
@Get(uri="/generate")
126+
@Post(uri="/generate")
125127
@RequiredPermission(Permission.CAN_CREATE_MERIT_REPORT)
126-
public HttpStatus generate(@NotNull List<UUID> memberIds,
127-
@NotNull UUID reviewPeriodId) {
128+
public HttpStatus generate(@Body @Valid ReportDataDTO dto) {
128129
MarkdownGeneration markdown =
129130
new MarkdownGeneration(reportDataServices,
130131
kudosRepository,
@@ -137,7 +138,7 @@ public HttpStatus generate(@NotNull List<UUID> memberIds,
137138
templateQuestionServices,
138139
employeeHoursServices,
139140
fileServices);
140-
markdown.upload(memberIds, reviewPeriodId);
141+
markdown.upload(dto.getMemberIds(), dto.getReviewPeriodId());
141142
return HttpStatus.OK;
142143
}
143144
}
Lines changed: 1 addition & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,58 +1,20 @@
11
package com.objectcomputing.checkins.services.reports;
22

3-
import com.objectcomputing.checkins.services.memberprofile.MemberProfile;
43
import io.micronaut.core.annotation.Introspected;
54
import jakarta.validation.constraints.NotNull;
6-
import lombok.AllArgsConstructor;
75
import lombok.Getter;
86
import lombok.Setter;
97

10-
import java.time.LocalDate;
118
import java.util.List;
129
import java.util.UUID;
1310

1411
@Getter
1512
@Setter
16-
@AllArgsConstructor
1713
@Introspected
1814
public class ReportDataDTO {
19-
2015
@NotNull
21-
private UUID memberId;
16+
private List<UUID> memberIds;
2217

2318
@NotNull
2419
private UUID reviewPeriodId;
25-
26-
@NotNull
27-
private LocalDate startDate;
28-
29-
@NotNull
30-
private LocalDate endDate;
31-
32-
@NotNull
33-
private MemberProfile memberProfile;
34-
35-
@NotNull
36-
private List<ReportKudos> kudos;
37-
38-
@NotNull
39-
private List<CompensationHistory.Compensation> compensationHistory;
40-
41-
@NotNull
42-
private CurrentInformation.Information currentInformation;
43-
44-
@NotNull
45-
private List<PositionHistory.Position> positionHistory;
46-
47-
@NotNull
48-
private List<Feedback> selfReviews;
49-
50-
@NotNull
51-
private List<Feedback> reviews;
52-
53-
@NotNull
54-
private List<Feedback> feedback;
55-
56-
@NotNull
57-
private ReportHours hours;
5820
}

server/src/test/java/com/objectcomputing/checkins/services/reports/ReportDataControllerTest.java

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@
3131
import org.junit.jupiter.api.Test;
3232

3333
import java.io.File;
34+
import java.util.UUID;
35+
import java.util.ArrayList;
3436
import java.time.LocalDate;
3537
import java.time.format.DateTimeFormatter;
3638

@@ -116,10 +118,12 @@ void processReportData() {
116118
final String response = client.toBlocking().retrieve(request);
117119
assertNotNull(response);
118120

119-
request = HttpRequest.GET(
120-
String.format("/generate?memberIds=%s&reviewPeriodId=%s",
121-
target.getId(),
122-
reviewPeriod.getId().toString()))
121+
ReportDataDTO dto = new ReportDataDTO();
122+
ArrayList<UUID> memberIds = new ArrayList<>();
123+
memberIds.add(target.getId());
124+
dto.setReviewPeriodId(reviewPeriod.getId());
125+
dto.setMemberIds(memberIds);
126+
request = HttpRequest.POST("/generate", dto)
123127
.basicAuth(admin.getWorkEmail(), ADMIN_ROLE);
124128
client.toBlocking().exchange(request);
125129

@@ -129,10 +133,12 @@ void processReportData() {
129133

130134
@Test
131135
void processReportDataWithoutPermission() {
132-
final HttpRequest<?> request = HttpRequest.GET(
133-
String.format("/generate?memberIds=%s&reviewPeriodId=%s",
134-
regular.getId(),
135-
reviewPeriod.getId()))
136+
ReportDataDTO dto = new ReportDataDTO();
137+
ArrayList<UUID> memberIds = new ArrayList<>();
138+
memberIds.add(regular.getId());
139+
dto.setReviewPeriodId(reviewPeriod.getId());
140+
dto.setMemberIds(memberIds);
141+
final HttpRequest<?> request = HttpRequest.POST("/generate", dto)
136142
.basicAuth(regular.getWorkEmail(), MEMBER_ROLE);
137143
HttpClientResponseException responseException =
138144
assertThrows(HttpClientResponseException.class,

web-ui/src/api/generic.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,13 @@ export const downloadData = (url, cookie, params) => {
2626

2727
export const initiate = (url, cookie, params) => {
2828
return resolve({
29-
method: 'GET',
30-
params: params,
29+
method: 'POST',
3130
headers: {
3231
'X-CSRF-Header': cookie,
3332
Accept: 'application/json',
33+
'Content-Type': 'application/json;charset=UTF-8'
3434
},
35-
url: url
35+
url: url,
36+
data: params,
3637
});
3738
};

0 commit comments

Comments
 (0)