Skip to content

Commit

Permalink
Merge pull request #468 from EsupPortail/test
Browse files Browse the repository at this point in the history
Test
  • Loading branch information
dlemaignent authored Nov 14, 2024
2 parents cee0e81 + dd825af commit 18e7506
Show file tree
Hide file tree
Showing 17 changed files with 102 additions and 74 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -341,7 +341,7 @@ public void setFavoriteSignRequestParams(SignRequestParams favoriteSignRequestPa
}

@JsonIgnore
public User getCurrentReplaceUser() {
public User getCurrentReplaceByUser() {
Date checkDate = new Date();
if((getReplaceBeginDate() == null
|| checkDate.after(getReplaceBeginDate()))
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package org.esupportail.esupsignature.repository;

import org.esupportail.esupsignature.dto.view.UserDto;
import org.esupportail.esupsignature.entity.SignBook;
import org.esupportail.esupsignature.entity.User;
import org.esupportail.esupsignature.entity.Workflow;
Expand Down Expand Up @@ -61,7 +62,7 @@ and size(sb.signRequests) > 0
left join lw.liveWorkflowSteps lws
left join lws.recipients r
left join r.user u
where (:workflowFilter is null or sb.workflowName = :workflowFilter)
where (:workflowId is null or sb.liveWorkflow.workflow.id = :workflowId)
and (:docTitleFilter is null or sb.subject = :docTitleFilter)
and (:recipientUser is null or key(rhs).user = :recipientUser or :recipientUser in (u))
and (:creatorFilter is null or sb.createBy = :creatorFilter)
Expand All @@ -70,33 +71,31 @@ and size(sb.signRequests) > 0
and size(sb.signRequests) > 0
and (sb.createDate between :startDateFilter and :endDateFilter)
""")
Page<SignBook> findByWorkflowName(User recipientUser, SignRequestStatus statusFilter, String workflowFilter, String docTitleFilter, User creatorFilter, Date startDateFilter, Date endDateFilter, Pageable pageable);
Page<SignBook> findByWorkflowName(User recipientUser, SignRequestStatus statusFilter, Long workflowId, String docTitleFilter, User creatorFilter, Date startDateFilter, Date endDateFilter, Pageable pageable);

@Query("""
select distinct sb.subject from SignBook sb
where (:workflowFilter is null or sb.workflowName = :workflowFilter)
where (:workflowId is null or sb.liveWorkflow.workflow.id = :workflowId)
and sb.status <> 'deleted' and (sb.deleted is null or sb.deleted != true)
""")
List<String> findByWorkflowNameSubjects(String workflowFilter);
List<String> findByWorkflowNameSubjects(Long workflowId);

@Query("""
select distinct sb.createBy from SignBook sb
where (:workflowFilter is null or sb.workflowName = :workflowFilter)
select distinct sb.createBy.name as name, sb.createBy.firstname as firstname, sb.createBy.eppn as eppn, sb.createBy.email as email from SignBook sb
where (:workflowId is null or sb.liveWorkflow.workflow.id = :workflowId)
and sb.status <> 'deleted' and (sb.deleted is null or sb.deleted != true)
""")
List<User> findByWorkflowNameCreators(String workflowFilter);
List<UserDto> findByWorkflowNameCreators(Long workflowId);

@Query("""
select distinct u from SignBook sb
left join sb.team team
left join sb.signRequests sr
left join sr.recipientHasSigned rhs
left join sb.liveWorkflow lw
left join lw.liveWorkflowSteps lws
left join lws.recipients r
left join r.user u
where (:workflowFilter is null or sb.workflowName = :workflowFilter) and u is not null
""")
List<User> findByWorkflowNameRecipientsUsers(String workflowFilter);
select distinct u.name as name, u.firstname as firstname, u.eppn as eppn, u.email as email from SignBook sb
left join sb.liveWorkflow lw
left join lw.liveWorkflowSteps lws
left join lws.recipients r
left join r.user u
where (:workflowId is null or sb.liveWorkflow.workflow.id = :workflowId) and u is not null
""")
List<UserDto> findByWorkflowNameRecipientsUsers(Long workflowId);

@Query("""
select distinct sb from SignBook sb
Expand Down Expand Up @@ -252,7 +251,7 @@ and size(sb.signRequests) > 0
List<String> findSubjects(User user);

@Query("""
select distinct sb.createBy from SignBook sb
select distinct sb.createBy.name as name, sb.createBy.firstname as firstname, sb.createBy.eppn as eppn, sb.createBy.email as email from SignBook sb
left join sb.team team
where (sb.workflowName = :workflowFilter or :workflowFilter is null)
and (sb.subject = :docTitleFilter or :docTitleFilter is null)
Expand All @@ -262,12 +261,12 @@ and size(sb.signRequests) > 0
and sb.status <> 'deleted' and (sb.deleted is null or sb.deleted != true)
and (sb.createBy = :creatorFilter or :creatorFilter is null)
""")
List<User> findUserByRecipientAndCreateBy(User user, String workflowFilter, String docTitleFilter, User creatorFilter);
List<UserDto> findUserByRecipientAndCreateBy(User user, String workflowFilter, String docTitleFilter, User creatorFilter);

Page<SignBook> findAll(Pageable pageable);

@Query("""
select distinct u from SignBook sb
select distinct u.name as name, u.firstname as firstname, u.eppn as eppn, u.email from SignBook sb
left join sb.team team
left join sb.liveWorkflow lw
left join lw.liveWorkflowSteps lws
Expand All @@ -277,7 +276,7 @@ and size(sb.signRequests) > 0
and :user not member of sb.hidedBy
and sb.status <> 'deleted' and (sb.deleted is null or sb.deleted != true)
""")
List<User> findRecipientNames(User user);
List<UserDto> findRecipientNames(User user);

@Query("""
select distinct sb from SignBook as sb
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -83,14 +83,15 @@ public void replaceRecipientsToWorkflowStep(SignBook signBook, LiveWorkflowStep
if(signBook.getLiveWorkflow().getLiveWorkflowSteps().indexOf(liveWorkflowStep) + 1 < signBook.getLiveWorkflow().getCurrentStepNumber()) {
throw new EsupSignatureException("Impossible de modifier les destinataires d'une étape déjà passée");
}
List<Recipient> oldRecipients = new ArrayList<>(liveWorkflowStep.getRecipients());
liveWorkflowStep.getRecipients().clear();
Map<Recipient, Action> recipientsToReAdd = new HashMap<>();
List<Recipient> recipients = addRecipientsToWorkflowStep(signBook, liveWorkflowStep, recipientWsDtos);
liveWorkflowStepRepository.save(liveWorkflowStep);
if(signBook.getLiveWorkflow().getCurrentStep().equals(liveWorkflowStep)) {
for(SignRequest signRequest : signBook.getSignRequests()) {
for(Map.Entry<Recipient, Action> recipientActionEntry : signRequest.getRecipientHasSigned().entrySet()) {
if(!recipientActionEntry.getValue().getActionType().equals(ActionType.none)) {
if(!recipientActionEntry.getValue().getActionType().equals(ActionType.none) && oldRecipients.contains(recipientActionEntry.getKey())) {
recipientsToReAdd.put(recipientActionEntry.getKey(), recipientActionEntry.getValue());
}
}
Expand All @@ -102,7 +103,6 @@ public void replaceRecipientsToWorkflowStep(SignBook signBook, LiveWorkflowStep
}
}
liveWorkflowStep.getRecipients().addAll(recipientsToReAdd.keySet());

}

public List<Recipient> addRecipientsToWorkflowStep(SignBook signBook, LiveWorkflowStep liveWorkflowStep, List<RecipientWsDto> recipientWsDtos) {
Expand All @@ -114,8 +114,12 @@ public List<Recipient> addRecipientsToWorkflowStep(SignBook signBook, LiveWorkfl
Optional<RecipientWsDto> optionalRecipientWsDto = recipientWsDtos.stream().filter(recipientWsDto1 -> recipientWsDto1.getEmail().equals(recipientEmail)).findFirst();
if(optionalRecipientWsDto.isPresent()) {
RecipientWsDto recipientWsDto = optionalRecipientWsDto.get();
recipientUser.setName(recipientWsDto.getName());
recipientUser.setFirstname(recipientWsDto.getFirstName());
if(StringUtils.hasText(recipientWsDto.getName())) {
recipientUser.setName(recipientWsDto.getName());
}
if(StringUtils.hasText(recipientWsDto.getFirstName())) {
recipientUser.setFirstname(recipientWsDto.getFirstName());
}
if(StringUtils.hasText(recipientWsDto.getPhone())) {
userService.updatePhone(recipientUser.getEppn(), recipientWsDto.getPhone());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
import org.esupportail.esupsignature.dss.model.DssMultipartFile;
import org.esupportail.esupsignature.dto.json.RecipientWsDto;
import org.esupportail.esupsignature.dto.json.WorkflowStepDto;
import org.esupportail.esupsignature.dto.view.UserDto;
import org.esupportail.esupsignature.entity.*;
import org.esupportail.esupsignature.entity.enums.*;
import org.esupportail.esupsignature.exception.*;
Expand Down Expand Up @@ -184,7 +185,7 @@ public Long nbToSignSignBooks(String userEppn) {
}

@Transactional
public Page<SignBook> getSignBooksForManagers(String userEppn, String authUserEppn, SignRequestStatus statusFilter, String recipientsFilter, String workflowFilter, String docTitleFilter, String creatorFilter, String dateFilter, Pageable pageable) {
public Page<SignBook> getSignBooksForManagers(String userEppn, String authUserEppn, SignRequestStatus statusFilter, String recipientsFilter, Long workflowId, String docTitleFilter, String creatorFilter, String dateFilter, Pageable pageable) {
User creatorFilterUser = null;
if(creatorFilter != null) {
creatorFilterUser = userService.getByEppn(creatorFilter);
Expand All @@ -210,7 +211,7 @@ public Page<SignBook> getSignBooksForManagers(String userEppn, String authUserEp
logger.error("unable to parse date : " + dateFilter);
}
}
return signBookRepository.findByWorkflowName(userFilter, statusFilter, workflowFilter, docTitleFilter, creatorFilterUser, startDateFilter, endDateFilter, pageable);
return signBookRepository.findByWorkflowName(userFilter, statusFilter, workflowId, docTitleFilter, creatorFilterUser, startDateFilter, endDateFilter, pageable);
}

@Transactional
Expand Down Expand Up @@ -358,7 +359,7 @@ public void finishSignBookUpload(Long signBookId, String userEppn) {
signBook.setStatus(SignRequestStatus.draft);
}

public List<User> getRecipientsNames(String userEppn) {
public List<UserDto> getRecipientsNames(String userEppn) {
User user = userService.getByEppn(userEppn);
return signBookRepository.findRecipientNames(user);
}
Expand Down Expand Up @@ -1869,7 +1870,7 @@ public String generateName(Long signBookId, Workflow workflow, User user, Boolea
return template;
}

public List<User> getCreators(String userEppn, String workflowFilter, String docTitleFilter, String creatorFilter) {
public List<UserDto> getCreators(String userEppn, String workflowFilter, String docTitleFilter, String creatorFilter) {
User creatorFilterUser = null;
if(creatorFilter != null) {
creatorFilterUser = userService.getByEppn(creatorFilter);
Expand All @@ -1887,7 +1888,7 @@ public List<SignBook> getSignBookForUsers(String userEppn) {
public int transfer(String authUserEppn) {
int i = 0;
User user = userService.getByEppn(authUserEppn);
User replacedByUser = user.getCurrentReplaceUser();
User replacedByUser = user.getCurrentReplaceByUser();
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) {
Expand Down Expand Up @@ -1925,7 +1926,7 @@ public void transfertSignRequest(Long signRequestId, boolean transfertAll, User
}
for(LiveWorkflowStep liveWorkflowStep : liveWorkflowSteps) {
for(Recipient recipient : liveWorkflowStep.getRecipients()) {
if(recipient.getUser().equals(user) && signRequest.getRecipientHasSigned().get(recipient).getActionType().equals(ActionType.none)) {
if(recipient.getUser().equals(user) && signRequest.getRecipientHasSigned().get(recipient) != null && signRequest.getRecipientHasSigned().get(recipient).getActionType() != null && signRequest.getRecipientHasSigned().get(recipient).getActionType().equals(ActionType.none)) {
recipient.setUser(replacedByUser);
}
}
Expand Down Expand Up @@ -2024,15 +2025,15 @@ public void addToTeam(SignBook signBook, String userEppn) {
}
}

public List<String> getSignBooksForManagersSubjects(String workflowFilter) {
return signBookRepository.findByWorkflowNameSubjects(workflowFilter);
public List<String> getSignBooksForManagersSubjects(Long workflowId) {
return signBookRepository.findByWorkflowNameSubjects(workflowId);
}

public List<User> getSignBooksForManagersCreators(String workflowFilter) {
return signBookRepository.findByWorkflowNameCreators(workflowFilter);
public List<UserDto> getSignBooksForManagersCreators(Long workflowId) {
return signBookRepository.findByWorkflowNameCreators(workflowId);
}

public List<User> getSignBooksForManagersRecipientsUsers(String workflowFilter) {
return signBookRepository.findByWorkflowNameRecipientsUsers(workflowFilter);
public List<UserDto> getSignBooksForManagersRecipientsUsers(Long workflowId) {
return signBookRepository.findByWorkflowNameRecipientsUsers(workflowId);
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package org.esupportail.esupsignature.service;

import jakarta.annotation.Resource;
import org.esupportail.esupsignature.dto.json.RecipientWsDto;
import org.esupportail.esupsignature.dto.json.WorkflowStepDto;
import org.esupportail.esupsignature.entity.User;
Expand All @@ -8,9 +9,7 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import jakarta.annotation.Resource;
import java.util.*;
import java.util.stream.Collectors;

@Service
public class UserPropertieService {
Expand Down Expand Up @@ -60,15 +59,23 @@ private void addProperty(User user, User favoriteUser) {
}

@Transactional
public List<User> getFavoritesEmails(String userEppn) {
public Set<User> getFavoritesEmails(String userEppn) {
List<UserPropertie> userProperties = getUserProperties(userEppn);
Map<User, Date> favorites = new HashMap<>();
for(UserPropertie userPropertie : userProperties) {
favorites.putAll(userPropertie.getFavorites());
}
List<Map.Entry<User, Date>> entrySet = new ArrayList<>(favorites.entrySet());
entrySet.sort(Map.Entry.<User, Date>comparingByValue().reversed());
return entrySet.stream().map(Map.Entry::getKey).limit(5).collect(Collectors.toList());
Set<User> favoritesUsers = new HashSet<>();
for(User favoriteUser : entrySet.stream().map(Map.Entry::getKey).limit(5).toList()) {
if(favoriteUser.getCurrentReplaceByUser() != null) {
favoritesUsers.add(favoriteUser.getCurrentReplaceByUser());
} else {
favoritesUsers.add(favoriteUser);
}
}
return favoritesUsers;
}

@Transactional
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -518,12 +518,13 @@ public PersonLdap getPersonLdapFromUser(User user) {

public PersonLightLdap getPersonLdapLightFromUser(User user) {
PersonLightLdap personLdap = new PersonLightLdap();
if(user.getReplaceByUser() != null) {
personLdap.setUid(user.getReplaceByUser().getEppn());
personLdap.setSn(user.getReplaceByUser().getName());
personLdap.setGivenName(user.getReplaceByUser().getFirstname());
personLdap.setDisplayName(user.getFirstname() + " " + user.getName() + " remplacé par " + user.getReplaceByUser().getFirstname() + " " + user.getReplaceByUser().getName());
personLdap.setMail(user.getReplaceByUser().getEmail());
User currentReplaceByUser = user.getCurrentReplaceByUser();
if(currentReplaceByUser != null) {
personLdap.setUid(currentReplaceByUser.getEppn());
personLdap.setSn(currentReplaceByUser.getName());
personLdap.setGivenName(currentReplaceByUser.getFirstname());
personLdap.setDisplayName(user.getFirstname() + " " + user.getName() + " remplacé par " + currentReplaceByUser.getFirstname() + " " + currentReplaceByUser.getName());
personLdap.setMail(currentReplaceByUser.getEmail());
} else {
personLdap.setUid(user.getEppn());
personLdap.setSn(user.getName());
Expand Down Expand Up @@ -786,7 +787,7 @@ public List<String> getAllRoles() {
roles.add(role);
}
}
if(ldapGroupService != null && webSecurityProperties.getGroupToRoleFilterPattern() != null) {
if(ldapGroupService != null && StringUtils.hasText(webSecurityProperties.getGroupToRoleFilterPattern())) {
List<String> groupsNames = ldapGroupService.getAllPrefixGroups(webSecurityProperties.getGroupToRoleFilterPattern());
for (String groupName : groupsNames) {
Pattern pattern = Pattern.compile(webSecurityProperties.getGroupToRoleFilterPattern());
Expand Down Expand Up @@ -909,7 +910,7 @@ public void anonymize(Long id) {
User user = userRepository.findById(id).orElseThrow();
List<User> users = userRepository.findByReplaceByUser(user);
for(User user1 : users) {
user1.setReplaceByUser(user.getReplaceByUser());
user1.setReplaceByUser(user.getCurrentReplaceByUser());
}
user.setEppn("");
user.setName("");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -416,9 +416,9 @@ public void replaceStepSystemUsers(String userEppn, WorkflowStep workflowStep) t
workflowStep.getUsers().add(userService.getUserByEmail(email));
}
}
if(oneUser.getCurrentReplaceUser() != null) {
if(oneUser.getCurrentReplaceByUser() != null) {
workflowStep.getUsers().remove(oneUser);
workflowStep.getUsers().add(oneUser.getCurrentReplaceUser());
workflowStep.getUsers().add(oneUser.getCurrentReplaceByUser());
}
}
}
Expand Down
Loading

0 comments on commit 18e7506

Please sign in to comment.