use of org.obiba.mica.web.model.Mica.DataAccessRequestDto.StatusChangeDto.Builder in project mica2 by obiba.
the class DataAccessRequestDtos method asDto.
@NotNull
public Mica.DataAccessRequestDto asDto(@NotNull DataAccessRequest request) {
Mica.DataAccessRequestDto.Builder builder = asDtoBuilder(request);
String title = dataAccessRequestUtilService.getRequestTitle(request);
if (!Strings.isNullOrEmpty(title)) {
builder.setTitle(title);
}
if (request.hasStartDate())
builder.setStartDate(ISO_8601.format(request.getStartDate()));
DataAccessRequestTimeline timeline = dataAccessRequestReportNotificationService.getReportsTimeline(request);
if (timeline.hasStartDate() && timeline.hasEndDate()) {
builder.setReportsTimeline(Mica.TimelineDto.newBuilder().setStartDate(ISO_8601.format(timeline.getStartDate())).setEndDate(ISO_8601.format(timeline.getEndDate())).addAllIntermediateDates(timeline.getIntermediateDates().stream().map(d -> ISO_8601.format(d)).collect(Collectors.toList())));
}
builder.setArchived(request.isArchived());
request.getAttachments().forEach(attachment -> builder.addAttachments(attachmentDtos.asDto(attachment)));
if (!request.isArchived()) {
builder.addAllActions(addDataAccessEntityActions(request, "/data-access-request"));
if (subjectAclService.isPermitted(Paths.get("/data-access-request", request.getId(), "/amendment").toString(), "ADD")) {
builder.addActions("ADD_AMENDMENTS");
}
boolean hasAdministrativeRole = SecurityUtils.getSubject().hasRole(Roles.MICA_DAO) || SecurityUtils.getSubject().hasRole(Roles.MICA_ADMIN);
if (hasAdministrativeRole || subjectAclService.isPermitted("/data-access-request/private-comment", "VIEW")) {
builder.addActions("VIEW_PRIVATE_COMMENTS");
}
if (hasAdministrativeRole || subjectAclService.isPermitted(Paths.get("/data-access-request", request.getId(), "_attachments").toString(), "EDIT")) {
builder.addActions("EDIT_ATTACHMENTS");
if (hasAdministrativeRole) {
builder.addActions("DELETE_ATTACHMENTS");
builder.addActions("EDIT_ACTION_LOGS");
}
}
}
try {
Project project = projectService.findById(request.getId());
Mica.PermissionsDto permissionsDto = permissionsDtos.asDto(project);
Mica.ProjectSummaryDto.Builder projectSummaryDtoBuilder = Mica.ProjectSummaryDto.newBuilder();
projectSummaryDtoBuilder.setId(project.getId());
projectSummaryDtoBuilder.setPermissions(permissionsDto);
builder.setProject(projectSummaryDtoBuilder.build());
} catch (NoSuchProjectException e) {
// do nothing
}
return builder.build();
}
Aggregations