Merge branch 'ui-redesign' of gitlab.eudat.eu:dmp/OpenAIRE-EUDAT-DMP-service-pilot into ui-redesign
This commit is contained in:
commit
1a14ee0929
|
@ -14,6 +14,7 @@ import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import javax.xml.bind.JAXBException;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
|
@ -41,7 +42,7 @@ public class UserInvitationController extends BaseController {
|
||||||
@Transactional
|
@Transactional
|
||||||
@RequestMapping(method = RequestMethod.GET, value = {"/exchange/{invitationID}"}, produces = "application/json")
|
@RequestMapping(method = RequestMethod.GET, value = {"/exchange/{invitationID}"}, produces = "application/json")
|
||||||
public @ResponseBody
|
public @ResponseBody
|
||||||
ResponseEntity<ResponseItem<UUID>> exchange(@PathVariable UUID invitationID, Principal principal) {
|
ResponseEntity<ResponseItem<UUID>> exchange(@PathVariable UUID invitationID, Principal principal) throws JAXBException {
|
||||||
UUID dmpId = invitationsManager.assignUserAcceptedInvitation(invitationID, principal);
|
UUID dmpId = invitationsManager.assignUserAcceptedInvitation(invitationID, principal);
|
||||||
return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem<UUID>().status(ApiMessageCode.SUCCESS_MESSAGE).payload(dmpId));
|
return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem<UUID>().status(ApiMessageCode.SUCCESS_MESSAGE).payload(dmpId));
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,10 +12,11 @@ import eu.eudat.models.data.userinfo.UserInfoInvitationModel;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import java.util.Collection;
|
import javax.xml.bind.JAXBContext;
|
||||||
import java.util.LinkedList;
|
import javax.xml.bind.JAXBException;
|
||||||
import java.util.List;
|
import javax.xml.bind.Unmarshaller;
|
||||||
import java.util.UUID;
|
import java.io.StringReader;
|
||||||
|
import java.util.*;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
import java.util.stream.Stream;
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
|
@ -38,6 +39,7 @@ public class InvitationsManager {
|
||||||
for (UserInfo userInfo : alreadySignedInUsersEntities) {
|
for (UserInfo userInfo : alreadySignedInUsersEntities) {
|
||||||
UserDMP userDMP = new UserDMP();
|
UserDMP userDMP = new UserDMP();
|
||||||
userDMP.setUser(userInfo);
|
userDMP.setUser(userInfo);
|
||||||
|
userDMP.setRole(invitation.getRole());
|
||||||
userInfoToUserDmp.add(userDMP);
|
userInfoToUserDmp.add(userDMP);
|
||||||
/*if (!apiContext.getOperationsContext().getDatabaseRepository().getUserAssociationDao().areAssociated(principalUser, userInfo)) {
|
/*if (!apiContext.getOperationsContext().getDatabaseRepository().getUserAssociationDao().areAssociated(principalUser, userInfo)) {
|
||||||
UserAssociation userAssociation = new UserAssociation();
|
UserAssociation userAssociation = new UserAssociation();
|
||||||
|
@ -47,7 +49,7 @@ public class InvitationsManager {
|
||||||
}*/
|
}*/
|
||||||
}
|
}
|
||||||
DMP dataManagementPlan = apiContext.getOperationsContext().getDatabaseRepository().getDmpDao().find(invitation.getDataManagementPlan());
|
DMP dataManagementPlan = apiContext.getOperationsContext().getDatabaseRepository().getDmpDao().find(invitation.getDataManagementPlan());
|
||||||
apiContext.getUtilitiesService().getInvitationService().createInvitations(apiContext.getOperationsContext().getDatabaseRepository().getInvitationDao(), apiContext.getUtilitiesService().getMailService(), invitation.getUsers().stream().map(UserInfoInvitationModel::toDataModel).collect(Collectors.toList()), dataManagementPlan, principalUser);
|
apiContext.getUtilitiesService().getInvitationService().createInvitations(apiContext.getOperationsContext().getDatabaseRepository().getInvitationDao(), apiContext.getUtilitiesService().getMailService(), invitation.getUsers().stream().map(UserInfoInvitationModel::toDataModel).collect(Collectors.toList()), dataManagementPlan, invitation.getRole(), principalUser);
|
||||||
apiContext.getUtilitiesService().getInvitationService().assignToDmp(apiContext.getOperationsContext().getDatabaseRepository().getDmpDao(), userInfoToUserDmp, dataManagementPlan);
|
apiContext.getUtilitiesService().getInvitationService().assignToDmp(apiContext.getOperationsContext().getDatabaseRepository().getDmpDao(), userInfoToUserDmp, dataManagementPlan);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -69,7 +71,7 @@ public class InvitationsManager {
|
||||||
return userModels;
|
return userModels;
|
||||||
}
|
}
|
||||||
|
|
||||||
public UUID assignUserAcceptedInvitation(UUID invitationID, Principal principal) throws UnauthorisedException {
|
public UUID assignUserAcceptedInvitation(UUID invitationID, Principal principal) throws UnauthorisedException, JAXBException {
|
||||||
eu.eudat.data.entities.Invitation invitation = apiContext.getOperationsContext().getDatabaseRepository().getInvitationDao().find(invitationID);
|
eu.eudat.data.entities.Invitation invitation = apiContext.getOperationsContext().getDatabaseRepository().getInvitationDao().find(invitationID);
|
||||||
if (invitation == null)
|
if (invitation == null)
|
||||||
throw new UnauthorisedException("There is no Data Management Plan assigned to this Link");
|
throw new UnauthorisedException("There is no Data Management Plan assigned to this Link");
|
||||||
|
@ -78,7 +80,14 @@ public class InvitationsManager {
|
||||||
UserDMP userDMP = new UserDMP();
|
UserDMP userDMP = new UserDMP();
|
||||||
userDMP.setUser(invitedUser);
|
userDMP.setUser(invitedUser);
|
||||||
userDMP.setDmp(invitation.getDmp());
|
userDMP.setDmp(invitation.getDmp());
|
||||||
|
JAXBContext context = JAXBContext.newInstance(HashMap.class);
|
||||||
|
Unmarshaller unmarshaller = context.createUnmarshaller();
|
||||||
|
Map<String, Object> properties = (Map<String, Object>) unmarshaller.unmarshal(new StringReader(invitation.getProperties()));
|
||||||
|
if (properties.get("role") != null) {
|
||||||
|
userDMP.setRole((Integer) properties.get("role"));
|
||||||
|
} else {
|
||||||
userDMP.setRole(UserDMP.UserDMPRoles.USER.getValue());
|
userDMP.setRole(UserDMP.UserDMPRoles.USER.getValue());
|
||||||
|
}
|
||||||
/*if (!apiContext.getOperationsContext().getDatabaseRepository().getUserAssociationDao().areAssociated(invitedUser, invitation.getUser())) {
|
/*if (!apiContext.getOperationsContext().getDatabaseRepository().getUserAssociationDao().areAssociated(invitedUser, invitation.getUser())) {
|
||||||
UserAssociation userAssociation = new UserAssociation();
|
UserAssociation userAssociation = new UserAssociation();
|
||||||
userAssociation.setFirstUser(invitedUser);
|
userAssociation.setFirstUser(invitedUser);
|
||||||
|
|
|
@ -16,7 +16,7 @@ public interface InvitationService {
|
||||||
|
|
||||||
void assignToDmp(DMPDao dmpDao, eu.eudat.data.entities.UserDMP user, DMP dmp);
|
void assignToDmp(DMPDao dmpDao, eu.eudat.data.entities.UserDMP user, DMP dmp);
|
||||||
|
|
||||||
void createInvitations(InvitationDao invitationDao, MailService mailService, List<eu.eudat.data.entities.UserInfo> users, DMP dmp, eu.eudat.data.entities.UserInfo creator) throws MessagingException;
|
void createInvitations(InvitationDao invitationDao, MailService mailService, List<eu.eudat.data.entities.UserInfo> users, DMP dmp, Integer role, eu.eudat.data.entities.UserInfo creator) throws MessagingException;
|
||||||
|
|
||||||
CompletableFuture sendInvitationAsync(DMP dmp, Invitation invitation, String recipient, MailService mailService) throws MessagingException;
|
CompletableFuture sendInvitationAsync(DMP dmp, Invitation invitation, String recipient, MailService mailService, Integer role) throws MessagingException;
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,6 +5,7 @@ import eu.eudat.data.dao.entities.DMPDao;
|
||||||
import eu.eudat.data.dao.entities.InvitationDao;
|
import eu.eudat.data.dao.entities.InvitationDao;
|
||||||
import eu.eudat.data.entities.DMP;
|
import eu.eudat.data.entities.DMP;
|
||||||
import eu.eudat.data.entities.Invitation;
|
import eu.eudat.data.entities.Invitation;
|
||||||
|
import eu.eudat.data.entities.UserDMP;
|
||||||
import eu.eudat.models.data.mail.SimpleMail;
|
import eu.eudat.models.data.mail.SimpleMail;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
@ -46,7 +47,7 @@ public class InvitationServiceImpl implements InvitationService {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void createInvitations(InvitationDao invitationDao, MailService mailService, List<eu.eudat.data.entities.UserInfo> users, DMP dmp, eu.eudat.data.entities.UserInfo creator) throws MessagingException {
|
public void createInvitations(InvitationDao invitationDao, MailService mailService, List<eu.eudat.data.entities.UserInfo> users, DMP dmp, Integer role, eu.eudat.data.entities.UserInfo creator) throws MessagingException {
|
||||||
for (eu.eudat.data.entities.UserInfo userInfo : users) {
|
for (eu.eudat.data.entities.UserInfo userInfo : users) {
|
||||||
Invitation invitation = new Invitation();
|
Invitation invitation = new Invitation();
|
||||||
invitation.setDmp(dmp);
|
invitation.setDmp(dmp);
|
||||||
|
@ -54,16 +55,17 @@ public class InvitationServiceImpl implements InvitationService {
|
||||||
invitation.setUser(creator);
|
invitation.setUser(creator);
|
||||||
invitation.setToken(UUID.randomUUID());
|
invitation.setToken(UUID.randomUUID());
|
||||||
invitation.setAcceptedInvitation(false);
|
invitation.setAcceptedInvitation(false);
|
||||||
|
invitation.setProperties("<role>" + role + "</role>");
|
||||||
invitationDao.createOrUpdate(invitation);
|
invitationDao.createOrUpdate(invitation);
|
||||||
sendInvitationAsync(dmp, invitation, userInfo.getName(), mailService);
|
sendInvitationAsync(dmp, invitation, userInfo.getName(), mailService, role);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public CompletableFuture sendInvitationAsync(DMP dmp, Invitation invitation, String recipient, MailService mailService) {
|
public CompletableFuture sendInvitationAsync(DMP dmp, Invitation invitation, String recipient, MailService mailService, Integer role) {
|
||||||
return CompletableFuture.runAsync(() -> {
|
return CompletableFuture.runAsync(() -> {
|
||||||
SimpleMail mail = new SimpleMail();
|
SimpleMail mail = new SimpleMail();
|
||||||
mail.setSubject(createSubject(dmp, mailService.getMailTemplateSubject()));
|
mail.setSubject(createSubject(dmp, mailService.getMailTemplateSubject(), role));
|
||||||
mail.setContent(createContent(invitation.getId(), dmp, recipient, mailService.getMailTemplateContent("classpath:templates/email/email.html")));
|
mail.setContent(createContent(invitation.getId(), dmp, recipient, mailService.getMailTemplateContent("classpath:templates/email/email.html")));
|
||||||
mail.setTo(invitation.getInvitationEmail());
|
mail.setTo(invitation.getInvitationEmail());
|
||||||
try {
|
try {
|
||||||
|
@ -74,8 +76,9 @@ public class InvitationServiceImpl implements InvitationService {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private String createSubject(DMP dmp, String templateSubject) {
|
private String createSubject(DMP dmp, String templateSubject, Integer role) {
|
||||||
String subject = templateSubject.replace("{dmpname}", dmp.getLabel());
|
String subject = templateSubject.replace("{dmpname}", dmp.getLabel());
|
||||||
|
subject = subject.replace("{dmprole}", UserDMP.UserDMPRoles.fromInteger(role).name());
|
||||||
return subject;
|
return subject;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -9,6 +9,7 @@ import java.util.UUID;
|
||||||
public class Invitation {
|
public class Invitation {
|
||||||
private UUID dataManagementPlan;
|
private UUID dataManagementPlan;
|
||||||
private List<UserInfoInvitationModel> users;
|
private List<UserInfoInvitationModel> users;
|
||||||
|
private Integer role;
|
||||||
|
|
||||||
public UUID getDataManagementPlan() {
|
public UUID getDataManagementPlan() {
|
||||||
return dataManagementPlan;
|
return dataManagementPlan;
|
||||||
|
@ -25,4 +26,12 @@ public class Invitation {
|
||||||
public void setUsers(List<UserInfoInvitationModel> users) {
|
public void setUsers(List<UserInfoInvitationModel> users) {
|
||||||
this.users = users;
|
this.users = users;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Integer getRole() {
|
||||||
|
return role;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRole(Integer role) {
|
||||||
|
this.role = role;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -261,7 +261,7 @@
|
||||||
<tr>
|
<tr>
|
||||||
<td>
|
<td>
|
||||||
<p>Dear {recipient},</p>
|
<p>Dear {recipient},</p>
|
||||||
<p>You have been invited to collaborate to Data Management plan {dmpname}.</p>
|
<p>You have been invited to collaborate to Data Management plan {dmpname} with role {dmprole}.</p>
|
||||||
<p>Click the button to redirect to {dmpname}.</p>
|
<p>Click the button to redirect to {dmpname}.</p>
|
||||||
|
|
||||||
<table border="0" cellpadding="0" cellspacing="0" class="btn btn-primary">
|
<table border="0" cellpadding="0" cellspacing="0" class="btn btn-primary">
|
||||||
|
|
|
@ -5,11 +5,13 @@ export class DmpInvitation {
|
||||||
|
|
||||||
public dataManagementPlan: string;
|
public dataManagementPlan: string;
|
||||||
public users = new Array<DmpInvitationUser>();
|
public users = new Array<DmpInvitationUser>();
|
||||||
|
public role: number;
|
||||||
|
|
||||||
buildForm(): FormGroup {
|
buildForm(): FormGroup {
|
||||||
const formGroup = new FormBuilder().group({
|
const formGroup = new FormBuilder().group({
|
||||||
dataManagementPlan: [this.dataManagementPlan],
|
dataManagementPlan: [this.dataManagementPlan],
|
||||||
users: [this.users]
|
users: [this.users],
|
||||||
|
role: [this.role]
|
||||||
});
|
});
|
||||||
|
|
||||||
return formGroup;
|
return formGroup;
|
||||||
|
|
Loading…
Reference in New Issue