Skip to content

Commit

Permalink
Merge pull request #455 from EsupPortail/test
Browse files Browse the repository at this point in the history
Test
  • Loading branch information
dlemaignent authored Sep 26, 2024
2 parents d6ff30b + 83af184 commit 9f404ee
Show file tree
Hide file tree
Showing 29 changed files with 476 additions and 143 deletions.
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
</parent>
<groupId>org.esupportail</groupId>
<artifactId>esup-signature</artifactId>
<version>1.30.0</version>
<version>1.30.1</version>
<name>esup-signature</name>
<properties>
<startClass>org.esupportail.esupsignature.EsupSignatureApplication</startClass>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -294,6 +294,13 @@ public enum TokenType {
*/
private Boolean enableHelp = true;

/*
* Email de test remplaçant les destinataires toutes les notifications
*/
private String testEmail;

Boolean frenchPhoneNumberOnly = false;

public String getRootUrl() {
return rootUrl;
}
Expand Down Expand Up @@ -760,4 +767,20 @@ public Boolean getEnableHelp() {
public void setEnableHelp(Boolean enableHelp) {
this.enableHelp = enableHelp;
}

public String getTestEmail() {
return testEmail;
}

public void setTestEmail(String testEmail) {
this.testEmail = testEmail;
}

public Boolean getFrenchPhoneNumberOnly() {
return frenchPhoneNumberOnly;
}

public void setFrenchPhoneNumberOnly(Boolean frenchPhoneNumberOnly) {
this.frenchPhoneNumberOnly = frenchPhoneNumberOnly;
}
}
10 changes: 10 additions & 0 deletions src/main/java/org/esupportail/esupsignature/entity/Workflow.java
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,8 @@ public class Workflow {
@Column(columnDefinition = "TEXT")
private String message;

private Boolean disableEmailAlerts = false;

private String mailFrom;

private Integer counter;
Expand Down Expand Up @@ -132,6 +134,14 @@ public void setMessage(String message) {
this.message = message;
}

public Boolean getDisableEmailAlerts() {
return disableEmailAlerts;
}

public void setDisableEmailAlerts(Boolean disableEmailAlerts) {
this.disableEmailAlerts = disableEmailAlerts;
}

public String getMailFrom() {
return mailFrom;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package org.esupportail.esupsignature.service;

import com.google.i18n.phonenumbers.PhoneNumberUtil;
import jakarta.annotation.Resource;
import org.esupportail.esupsignature.dto.RecipientWsDto;
import org.esupportail.esupsignature.dto.WorkflowStepDto;
Expand Down Expand Up @@ -73,7 +72,7 @@ public void addRecipientsToWorkflowStep(SignBook signBook, LiveWorkflowStep live
recipientUser.setName(recipientWsDto.getName());
recipientUser.setFirstname(recipientWsDto.getFirstName());
if(StringUtils.hasText(recipientWsDto.getPhone())) {
recipientUser.setPhone(PhoneNumberUtil.normalizeDiallableCharsOnly(recipientWsDto.getPhone()));
userService.updatePhone(recipientUser.getEppn(), recipientWsDto.getPhone());
}
recipientUser.setForceSms(recipientWsDto.getForceSms() != null && recipientWsDto.getForceSms());

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@ public List<WorkflowStepDto> convertRecipientEmailsToStep(List<String> recipient
recipientWsDto.setEmail(realUserEmail);
User user = userService.getUserByEmail(realUserEmail);
if(user.getUserType().equals(UserType.external) && userStrings.length > 2) {
user.setPhone(userStrings[2]);
userService.updatePhone(user.getEppn(), userStrings[2]);
}
recipientWsDtos.add(recipientWsDto);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@
import org.esupportail.esupsignature.service.interfaces.fs.FsAccessService;
import org.esupportail.esupsignature.service.interfaces.fs.FsFile;
import org.esupportail.esupsignature.service.interfaces.prefill.PreFillService;
import org.esupportail.esupsignature.service.interfaces.workflow.DefaultWorkflow;
import org.esupportail.esupsignature.service.mail.MailService;
import org.esupportail.esupsignature.service.security.otp.OtpService;
import org.esupportail.esupsignature.service.utils.StepStatus;
Expand Down Expand Up @@ -438,36 +437,6 @@ public void initSignBook(Long signBookId, Long workflowId, String userEppn) {
}
}

public void importWorkflow(SignBook signBook, Workflow workflow, List<WorkflowStepDto> steps) {
logger.info("try import workflow steps in signBook " + signBook.getSubject() + " - " + signBook.getId());
int i = 0;
for (WorkflowStep workflowStep : workflow.getWorkflowSteps()) {
i++;
WorkflowStepDto step = new WorkflowStepDto();
int finalI = i;
Optional<WorkflowStepDto> optionalStep = steps.stream().filter(s -> s.getStepNumber() == finalI).findFirst();
if(optionalStep.isPresent()) step = optionalStep.get();
for (User user : workflowStep.getUsers()) {
if (user.equals(userService.getCreatorUser())) {
user = signBook.getCreateBy();
}
recipientService.addRecipientInStep(step, user.getEmail());
}
step.setRepeatable(workflowStep.getRepeatable());
step.setRepeatableSignType(workflowStep.getRepeatableSignType());
step.setMultiSign(workflowStep.getMultiSign());
step.setAutoSign(workflowStep.getAutoSign());
step.setAllSignToComplete(workflowStep.getAllSignToComplete());
step.setSignType(workflowStep.getSignType());
LiveWorkflowStep newWorkflowStep = liveWorkflowStepService.createLiveWorkflowStep(signBook, workflowStep, step);
signBook.getLiveWorkflow().getLiveWorkflowSteps().add(newWorkflowStep);
}
if(!(workflow instanceof DefaultWorkflow)) {
signBook.getLiveWorkflow().setWorkflow(workflow);
}
dispatchSignRequestParams(signBook);
}

public void dispatchSignRequestParams(SignBook signBook) {
for(SignRequest signRequest : signBook.getSignRequests()) {
dispatchSignRequestParams(signRequest);
Expand Down Expand Up @@ -497,8 +466,8 @@ public void dispatchSignRequestParams(SignRequest signRequest) {
}
}
}
} else if(signRequest.getParentSignBook().getLiveWorkflow().getLiveWorkflowSteps().stream().allMatch(liveWorkflowStep1 -> liveWorkflowStep1.getSignRequestParams().isEmpty())){
signRequest.getParentSignBook().getLiveWorkflow().getLiveWorkflowSteps().get(0).getSignRequestParams().addAll(signRequest.getSignRequestParams());
} else if(signRequest.getSignRequestParams().size() > i) {
liveWorkflowStep.getSignRequestParams().add(signRequest.getSignRequestParams().get(i));
}
i++;
}
Expand All @@ -519,11 +488,7 @@ public void importWorkflowFromWorkflowStepDto(Long signBookId, List<WorkflowStep
if(steps.get(0).getUserSignFirst() != null && steps.get(0).getUserSignFirst()) {
addUserSignFirstStep(signBookId, userEppn);
}
for (WorkflowStepDto step : steps) {
LiveWorkflowStep newWorkflowStep = liveWorkflowStepService.createLiveWorkflowStep(signBook, null, step);
signBook.getLiveWorkflow().getLiveWorkflowSteps().add(newWorkflowStep);
}
signBook.getLiveWorkflow().setCurrentStep(signBook.getLiveWorkflow().getLiveWorkflowSteps().get(0));
workflowService.computeWorkflow(steps, signBook);
dispatchSignRequestParams(signBook);
}

Expand Down Expand Up @@ -604,7 +569,7 @@ public void restore(Long signBookId, String userEppn) {
signRequest.setDeleted(false);
signRequest.getParentSignBook().setDeleted(false);
logService.create(signRequest.getId(), signRequest.getParentSignBook().getSubject(), signRequest.getParentSignBook().getWorkflowName(), signRequest.getStatus(), "Restauration par l'utilisateur", null, "SUCCESS", null, null, null, null, userEppn, userEppn);
for (Target target : signRequest.getParentSignBook().getLiveWorkflow().getTargets().stream().filter(t -> t != null && fsAccessFactoryService.getPathIOType(t.getTargetUri()).equals(DocumentIOType.rest)).collect(Collectors.toList())) {
for (Target target : signRequest.getParentSignBook().getLiveWorkflow().getTargets().stream().filter(t -> t != null && fsAccessFactoryService.getPathIOType(t.getTargetUri()).equals(DocumentIOType.rest)).toList()) {
targetService.sendRest(target.getTargetUri(), signRequest.getId().toString(), "restored", signRequest.getParentSignBook().getLiveWorkflow().getCurrentStepNumber().toString(), userEppn, "");
}
}
Expand Down Expand Up @@ -834,7 +799,8 @@ public SignBook sendForSign(Long dataId, List<WorkflowStepDto> steps, List<Strin
String fileName = form.getTitle().replaceAll("[\\\\/:*?\"<>|]", "-").replace("\t", "") + ".pdf";
MultipartFile multipartFile = new DssMultipartFile(fileName, fileName, "application/pdf", toAddFile);
signRequestService.addDocsToSignRequest(signRequest, true, 0, form.getSignRequestParams(), multipartFile);
importWorkflow(signBook, computedWorkflow, steps);
workflowService.importWorkflow(signBook, computedWorkflow, steps);
dispatchSignRequestParams(signBook);
signRequestService.nextWorkFlowStep(signBook);
Workflow workflow = workflowService.getById(form.getWorkflow().getId());
targetService.copyTargets(workflow.getTargets(), signBook, targetEmails);
Expand Down Expand Up @@ -954,9 +920,14 @@ public void initSignBookWorkflow(Long signBookId, List<WorkflowStepDto> steps, L
SignBook signBook = getById(signBookId);
if(signBook.getStatus().equals(SignRequestStatus.draft) || signBook.getStatus().equals(SignRequestStatus.uploading)) {
List<Target> targets = new ArrayList<>(workflowService.getById(signBook.getLiveWorkflow().getWorkflow().getId()).getTargets());
Workflow workflow = workflowService.computeWorkflow(signBook.getLiveWorkflow().getWorkflow().getId(), steps, userEppn, false);
importWorkflow(signBook, workflow, steps);
signRequestService.nextWorkFlowStep(signBook);
if(signBook.getLiveWorkflow().getWorkflow().getWorkflowSteps().isEmpty()) {
workflowService.computeWorkflow(steps, signBook);
} else {
Workflow workflow = workflowService.computeWorkflow(signBook.getLiveWorkflow().getWorkflow().getId(), steps, userEppn, false);
workflowService.importWorkflow(signBook, workflow, steps);
signRequestService.nextWorkFlowStep(signBook);
}
dispatchSignRequestParams(signBook);
targetService.copyTargets(targets, signBook, targetEmails);
userPropertieService.createUserPropertieFromMails(userService.getByEppn(authUserEppn), steps);
if (pending != null && pending) {
Expand Down Expand Up @@ -1257,7 +1228,7 @@ public void refuse(Long signRequestId, String comment, String userEppn, String a
if(signBook.getSignRequests().size() > 1 && (signBook.getForceAllDocsSign() == null || !signBook.getForceAllDocsSign())) {
commentService.create(signRequest.getId(), comment, 0, 0, 0, null, true, "#FF7EB9", userEppn);
signRequestService.updateStatus(signRequest.getId(), SignRequestStatus.refused, "Refusé", null, "SUCCESS", null, null, null, signRequest.getParentSignBook().getLiveWorkflow().getCurrentStepNumber(), userEppn, authUserEppn);
for (Target target : signRequest.getParentSignBook().getLiveWorkflow().getTargets().stream().filter(t -> t != null && fsAccessFactoryService.getPathIOType(t.getTargetUri()).equals(DocumentIOType.rest)).collect(Collectors.toList())) {
for (Target target : signRequest.getParentSignBook().getLiveWorkflow().getTargets().stream().filter(t -> t != null && fsAccessFactoryService.getPathIOType(t.getTargetUri()).equals(DocumentIOType.rest)).toList()) {
targetService.sendRest(target.getTargetUri(), signRequest.getId().toString(), "refused", signRequest.getParentSignBook().getLiveWorkflow().getCurrentStepNumber().toString(), authUserEppn, comment);
}
for (Recipient recipient : signRequest.getParentSignBook().getLiveWorkflow().getCurrentStep().getRecipients()) {
Expand Down Expand Up @@ -1290,7 +1261,7 @@ public void refuse(Long signRequestId, String comment, String userEppn, String a
}
} else {
refuseSignBook(signRequest.getParentSignBook(), comment, userEppn, authUserEppn);
for (Target target : signRequest.getParentSignBook().getLiveWorkflow().getTargets().stream().filter(t -> t != null && fsAccessFactoryService.getPathIOType(t.getTargetUri()).equals(DocumentIOType.rest)).collect(Collectors.toList())) {
for (Target target : signRequest.getParentSignBook().getLiveWorkflow().getTargets().stream().filter(t -> t != null && fsAccessFactoryService.getPathIOType(t.getTargetUri()).equals(DocumentIOType.rest)).toList()) {
targetService.sendRest(target.getTargetUri(), signRequest.getId().toString(), "refused", signRequest.getParentSignBook().getLiveWorkflow().getCurrentStepNumber().toString(), authUserEppn, comment);
}
}
Expand Down Expand Up @@ -1324,7 +1295,8 @@ public List<Long> startWorkflow(Long id, MultipartFile[] multipartFiles, String
@Transactional
public void addWorkflowToSignBook(SignBook signBook, String authUserEppn, Long workflowSignBookId) throws EsupSignatureRuntimeException {
Workflow workflow = workflowService.getById(workflowSignBookId);
importWorkflow(signBook, workflow, new ArrayList<>());
workflowService.importWorkflow(signBook, workflow, new ArrayList<>());
dispatchSignRequestParams(signBook);
signRequestService.nextWorkFlowStep(signBook);
pendingSignBook(signBook.getId(), null, authUserEppn, authUserEppn, false, true);
}
Expand Down Expand Up @@ -1423,7 +1395,8 @@ public int importFilesFromSource(Long workflowId, User user, User authUser) thro
j++;
} else {
targetService.copyTargets(workflow.getTargets(), signBook, null);
importWorkflow(signBook, workflow, new ArrayList<>());
workflowService.importWorkflow(signBook, workflow, new ArrayList<>());
dispatchSignRequestParams(signBook);
}
fsAccessService.remove(fsFile);
nextStepAndPending(signBook.getId(), null, user.getEppn(), authUser.getEppn());
Expand Down Expand Up @@ -1908,7 +1881,7 @@ public int transfer(String authUserEppn) {
if(replacedByUser != null) {
List<SignRequest> signRequests = getSignBookForUsers(authUserEppn).stream().filter(signBook -> signBook.getStatus().equals(SignRequestStatus.pending)).flatMap(signBook -> signBook.getSignRequests().stream().distinct()).collect(Collectors.toList());
for(SignRequest signRequest : signRequests) {
transfertSignRequest(signRequest.getId(), user, replacedByUser, false);
transfertSignRequest(signRequest.getId(), true, user, replacedByUser, false);
i++;
}
}
Expand All @@ -1923,25 +1896,26 @@ public void transfertSignRequest(Long signRequestId, String userEppn, String rep
if (user.equals(replacedByUser)) {
throw new EsupSignatureRuntimeException("Transfer impossible");
}
transfertSignRequest(signRequestId, user, replacedByUser, keepFollow);
transfertSignRequest(signRequestId, false, user, replacedByUser, keepFollow);
} else {
throw new EsupSignatureRuntimeException("Transfer impossible");
}
}

@Transactional
public void transfertSignRequest(Long signRequestId, User user, User replacedByUser, boolean keepFollow) {
public void transfertSignRequest(Long signRequestId, boolean transfertAll, User user, User replacedByUser, boolean keepFollow) {
SignRequest signRequest = signRequestService.getById(signRequestId);
signRequest.getParentSignBook().getTeam().remove(user);
addToTeam(signRequest.getParentSignBook(), user.getEppn());
for(LiveWorkflowStep liveWorkflowStep : signRequest.getParentSignBook().getLiveWorkflow().getLiveWorkflowSteps()) {
List<LiveWorkflowStep> liveWorkflowSteps = new ArrayList<>();
if(transfertAll) {
liveWorkflowSteps.addAll(signRequest.getParentSignBook().getLiveWorkflow().getLiveWorkflowSteps());
} else {
liveWorkflowSteps.add(signRequest.getParentSignBook().getLiveWorkflow().getCurrentStep());
}
for(LiveWorkflowStep liveWorkflowStep : liveWorkflowSteps) {
for(Recipient recipient : liveWorkflowStep.getRecipients()) {
if(recipient.getUser().equals(user)) {
recipient.setUser(replacedByUser);
}
}
for(Recipient recipient : signRequest.getRecipientHasSigned().keySet()) {
if(recipient.getUser().equals(user)) {
if(recipient.getUser().equals(user) && signRequest.getRecipientHasSigned().get(recipient).getActionType().equals(ActionType.none)) {
recipient.setUser(replacedByUser);
}
}
Expand Down
Loading

0 comments on commit 9f404ee

Please sign in to comment.