Skip to content

Commit cd15b30

Browse files
authored
Merge pull request #2792 from objectcomputing/feature-2759/server-side-markdown-generation
Feature 2759/server side markdown generation
2 parents ed83bb9 + 88f61ca commit cd15b30

File tree

9 files changed

+579
-418
lines changed

9 files changed

+579
-418
lines changed

server/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ dependencies {
7979

8080
yarnBuildElements(project(":web-ui"))
8181

82+
implementation("net.steppschuh.markdowngenerator:markdowngenerator:1.3.1.1")
8283
implementation("io.micronaut:micronaut-jackson-databind")
8384
implementation("io.micronaut:micronaut-http-client")
8485
implementation("io.micronaut:micronaut-management")

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

Lines changed: 399 additions & 0 deletions
Large diffs are not rendered by default.

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

Lines changed: 25 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,12 @@
1212
import com.objectcomputing.checkins.services.feedback_answer.FeedbackAnswerServices;
1313
import com.objectcomputing.checkins.services.feedback_template.template_question.TemplateQuestionServices;
1414
import com.objectcomputing.checkins.services.employee_hours.EmployeeHoursServices;
15+
import com.objectcomputing.checkins.services.file.FileServices;
16+
1517
import io.micronaut.http.MediaType;
18+
import io.micronaut.http.HttpStatus;
1619
import io.micronaut.http.annotation.Controller;
20+
import io.micronaut.http.annotation.Body;
1721
import io.micronaut.http.annotation.Post;
1822
import io.micronaut.http.annotation.Get;
1923
import io.micronaut.http.multipart.CompletedFileUpload;
@@ -27,6 +31,7 @@
2731
import reactor.core.publisher.Flux;
2832
import reactor.core.scheduler.Schedulers;
2933
import jakarta.validation.constraints.NotNull;
34+
import jakarta.validation.Valid;
3035

3136
import org.slf4j.Logger;
3237
import org.slf4j.LoggerFactory;
@@ -51,6 +56,7 @@ public class ReportDataController {
5156
private final FeedbackAnswerServices feedbackAnswerServices;
5257
private final TemplateQuestionServices templateQuestionServices;
5358
private final EmployeeHoursServices employeeHoursServices;
59+
private final FileServices fileServices;
5460

5561
public ReportDataController(ReportDataServices reportDataServices,
5662
KudosRepository kudosRepository,
@@ -61,7 +67,8 @@ public ReportDataController(ReportDataServices reportDataServices,
6167
FeedbackRequestServices feedbackRequestServices,
6268
FeedbackAnswerServices feedbackAnswerServices,
6369
TemplateQuestionServices templateQuestionServices,
64-
EmployeeHoursServices employeeHoursServices) {
70+
EmployeeHoursServices employeeHoursServices,
71+
FileServices fileServices) {
6572
this.reportDataServices = reportDataServices;
6673
this.kudosRepository = kudosRepository;
6774
this.kudosRecipientRepository = kudosRecipientRepository;
@@ -72,6 +79,7 @@ public ReportDataController(ReportDataServices reportDataServices,
7279
this.feedbackAnswerServices = feedbackAnswerServices;
7380
this.templateQuestionServices = templateQuestionServices;
7481
this.employeeHoursServices = employeeHoursServices;
82+
this.fileServices = fileServices;
7583
}
7684

7785
@Post(uri="/upload", consumes = MediaType.MULTIPART_FORM_DATA)
@@ -115,35 +123,22 @@ private String uploadHelper(ReportDataServices.DataType dataType,
115123
}
116124
}
117125

118-
@Get
126+
@Post(uri="/generate")
119127
@RequiredPermission(Permission.CAN_CREATE_MERIT_REPORT)
120-
public List<ReportDataDTO> get(@NotNull List<UUID> memberIds,
121-
@NotNull UUID reviewPeriodId) {
122-
List<ReportDataDTO> list = new ArrayList<ReportDataDTO>();
123-
for (UUID memberId : memberIds) {
124-
ReportDataCollation data = new ReportDataCollation(
125-
memberId, reviewPeriodId,
126-
kudosRepository,
127-
kudosRecipientRepository,
128-
memberProfileServices,
129-
reviewPeriodServices,
130-
reportDataServices,
131-
feedbackTemplateServices,
132-
feedbackRequestServices,
133-
feedbackAnswerServices,
134-
templateQuestionServices,
135-
employeeHoursServices);
136-
list.add(new ReportDataDTO(memberId, reviewPeriodId,
137-
data.getStartDate(), data.getEndDate(),
138-
data.getMemberProfile(), data.getKudos(),
139-
data.getCompensationHistory(),
140-
data.getCurrentInformation(),
141-
data.getPositionHistory(),
142-
data.getSelfReviews(),
143-
data.getReviews(),
144-
data.getFeedback(),
145-
data.getReportHours()));
146-
}
147-
return list;
128+
public HttpStatus generate(@Body @Valid ReportDataDTO dto) {
129+
MarkdownGeneration markdown =
130+
new MarkdownGeneration(reportDataServices,
131+
kudosRepository,
132+
kudosRecipientRepository,
133+
memberProfileServices,
134+
reviewPeriodServices,
135+
feedbackTemplateServices,
136+
feedbackRequestServices,
137+
feedbackAnswerServices,
138+
templateQuestionServices,
139+
employeeHoursServices,
140+
fileServices);
141+
markdown.upload(dto.getMemberIds(), dto.getReviewPeriodId());
142+
return HttpStatus.OK;
148143
}
149144
}
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
}
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
package com.objectcomputing.checkins.services.reports;
2+
3+
/*************************************************************************
4+
*
5+
* This class is here due to the fact that the ReportDataController now
6+
* references the FileServices. The real FileServicesImpl requires the
7+
* GoogleApiAccess class that does not exist during testing.
8+
*
9+
* This replacement class does not require that and can help us test the
10+
* output of the MarkdownGeneration class.
11+
*
12+
************************************************************************/
13+
14+
import com.objectcomputing.checkins.services.file.FileInfoDTO;
15+
import com.objectcomputing.checkins.services.file.FileServices;
16+
import com.objectcomputing.checkins.services.file.FileServicesImpl;
17+
18+
import io.micronaut.http.multipart.CompletedFileUpload;
19+
20+
import java.io.File;
21+
import java.util.Set;
22+
import java.util.HashSet;
23+
import java.util.UUID;
24+
25+
import jakarta.inject.Singleton;
26+
import io.micronaut.context.env.Environment;
27+
import io.micronaut.context.annotation.Replaces;
28+
import io.micronaut.context.annotation.Requires;
29+
30+
@Singleton
31+
@Replaces(FileServicesImpl.class)
32+
@Requires(env = Environment.TEST)
33+
public class FileServicesImplReplacement implements FileServices {
34+
public String documentName = "";
35+
public String documentText = "";
36+
37+
public Set<FileInfoDTO> findFiles(UUID checkInId) {
38+
return new HashSet<FileInfoDTO>();
39+
}
40+
41+
public File downloadFiles(String uploadDocId) {
42+
return null;
43+
}
44+
45+
public FileInfoDTO uploadFile(UUID checkInID, CompletedFileUpload file) {
46+
return new FileInfoDTO();
47+
}
48+
49+
public FileInfoDTO uploadDocument(String directory,
50+
String name, String text) {
51+
documentName = name;
52+
documentText = text;
53+
return new FileInfoDTO();
54+
}
55+
56+
public boolean deleteFile(String uploadDocId) {
57+
return true;
58+
}
59+
}

0 commit comments

Comments
 (0)