Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[#101] Feat : 초대 로직 수정 #102

Merged
merged 36 commits into from
Jun 2, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
18f8c55
fix: Fix error about get all rooms
donggni0712 May 13, 2024
916f3b8
fix: Fix error about get all rooms
donggni0712 May 13, 2024
ad16d87
merge
donggni0712 May 13, 2024
ab9e119
feat: Make userstory logic with openai
donggni0712 May 13, 2024
daf0501
fire: Fix out port
donggni0712 May 13, 2024
c9643f7
fix: Add environment for openai
donggni0712 May 13, 2024
1e03d7c
fix: Add check left chance
donggni0712 May 13, 2024
30d95e1
merge
donggni0712 May 13, 2024
dace2ef
fix: Fix error
donggni0712 May 13, 2024
6fa6a71
fix: Fix error
donggni0712 May 13, 2024
c2cc3e9
merge
donggni0712 May 14, 2024
4c9a50c
merge
donggni0712 May 14, 2024
fbebcfa
feat: Make color
donggni0712 May 14, 2024
3ed9ec4
feat: Make login redirect uri
donggni0712 May 14, 2024
a99e9a0
fix: Fix error
donggni0712 May 14, 2024
6b20a47
merge
donggni0712 May 15, 2024
ef80758
refactor: Seperate login port
donggni0712 May 16, 2024
346e5f5
fix: Modify userstory
donggni0712 May 16, 2024
61eef01
fix: Redirect
donggni0712 May 19, 2024
ae9a74e
fix: Fix error
donggni0712 May 19, 2024
aaa76a5
merge
donggni0712 May 19, 2024
a9fe533
feat: Fix redirect uri
donggni0712 May 19, 2024
9bac4c6
feat: Fix redirect uri
donggni0712 May 19, 2024
ded6e65
merge
donggni0712 May 20, 2024
cd7abb5
merge
donggni0712 May 20, 2024
5b5cc38
merge
donggni0712 May 20, 2024
160c19e
merge
donggni0712 May 24, 2024
4fae916
merge
donggni0712 May 24, 2024
8d0e931
feat: Write readme
donggni0712 May 27, 2024
0fe86c9
merge
donggni0712 May 27, 2024
3093bec
docs: Write readme
donggni0712 May 30, 2024
55e0a1f
merge
donggni0712 May 30, 2024
ab26b2f
test: Make project service test
donggni0712 Jun 2, 2024
1f1396c
test: Modify test code
donggni0712 Jun 2, 2024
15631e2
feat: 초대 로직 수정
donggni0712 Jun 2, 2024
c6d41b1
merge
donggni0712 Jun 2, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 7 additions & 7 deletions src/main/java/com/syncd/adapter/out/gmail/GmailAdapter.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,24 +20,24 @@ public class GmailAdapter implements SendMailPort {
@Override
@Async
public String sendInviteMail(String email, String hostName, String userName, String projectName, String projectId) {
MimeMessage message = createMail(email, hostName, userName, projectName,projectId);
MimeMessage message = createMail(email, hostName, projectName,projectId);
// 실제 메일 전송
javaMailSender.send(message);

return projectName;
}

@Override
public String sendIviteMailBatch(String hostName, String projectName, List<User> users,String projectId) {
users.forEach(user -> {
MimeMessage message = createMail(user.getEmail(), hostName, user.getName(), projectName,projectId);
public String sendIviteMailBatch(String hostName, String projectName, List<String> userEmails,String projectId) {
userEmails.forEach(user -> {
MimeMessage message = createMail(user, hostName, projectName,projectId);
javaMailSender.send(message);
});
return projectName;
}

// 메일 양식 작성
public MimeMessage createMail(String email, String hostName, String userName, String projectName, String projectId){
public MimeMessage createMail(String email, String hostName, String projectName, String projectId){
MimeMessage message = javaMailSender.createMimeMessage();

try {
Expand Down Expand Up @@ -85,8 +85,8 @@ public MimeMessage createMail(String email, String hostName, String userName, St
"<body>\n" +
" <div class=\"container\">\n" +
" <h1>싱크대 프로젝트에 초대받았습니다!</h1>\n" +
" <p>"+hostName+"님이 "+userName+"님을 "+projectName+" 프로젝트에 초대되었습니다. 아래 버튼을 클릭하시면 초대에 응하실 수 있습니다</p>\n" +
" <a href=\"https://syncd.i-dear.org/invite/"+projectId+"\" class=\"btn\">초대 수락</a>\n" +
" <p>"+hostName+"님이 "+projectName+" 프로젝트에 초대하였습니다. 아래 버튼을 클릭하여 협업하세요!</p>\n" +
" <a href=\"https://syncd.i-dear.org/\" class=\"btn\">sync-d 접속</a>\n" +
" </div>\n" +
"</body>\n" +
"</html>\n";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,5 @@ public interface SendMailPort {
@Async
String sendInviteMail(String email,String hostName, String userName, String projectName, String ProjectId);

String sendIviteMailBatch(String hostName, String projectName, List<User> users, String ProjectId);
String sendIviteMailBatch(String hostName, String projectName, List<String> userEmails, String ProjectId);
}
3 changes: 2 additions & 1 deletion src/main/java/com/syncd/application/service/JwtService.java
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,8 @@ private static Key createSigningKey() {
// }
@Override
public String getUsernameFromToken(String token) {
return Jwts.parser().setSigningKey(secretKey).parseClaimsJws(token).getBody().getSubject();
Claims claims = Jwts.parser().setSigningKey(secretKey).parseClaimsJws(token).getBody();
return claims.get("name", String.class);
}
@Override
public boolean validateToken(String token) {
Expand Down
42 changes: 24 additions & 18 deletions src/main/java/com/syncd/application/service/ProjectService.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@

import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import java.util.stream.Collectors;

Expand All @@ -46,33 +47,36 @@ public class ProjectService implements CreateProjectUsecase, GetAllRoomsByUserId

@Override
public CreateProjectResponseDto createProject(String hostId, String hostName, String projectName, String description, MultipartFile img, List<String> userEmails){
List<User> users = new ArrayList<>();
if(userEmails!=null){
users = readUserPort.usersFromEmails(userEmails);
}
String imgURL = "";
System.out.println(hostName);
if (img != null && !img.isEmpty()) {
Optional<String> optionalImgURL = s3Port.uploadMultipartFileToS3(img, hostName, projectName);
imgURL = optionalImgURL.orElseThrow(() -> new IllegalStateException("Failed to upload image to S3"));
}

Project project = new Project();
project = project.createProjectDomain(projectName, description, imgURL, hostId);

project.addUsers(userInProjectFromEmail(userEmails));
CreateProjectResponseDto createProjectResponseDto = new CreateProjectResponseDto(writeProjectPort.CreateProject(project));

User host = readUserPort.findByUserId(hostId);
List<UserInProject> members = new ArrayList<>();
if (userEmails != null && !userEmails.isEmpty()) {
members = userEmails.stream()
.map(email -> createUserInProjectWithRoleMember(email, host.getName(), projectName, createProjectResponseDto.projectId()))
.collect(Collectors.toList());
}

sendMailPort.sendIviteMailBatch(hostName, projectName, users,project.getId());
// List<UserInProject> members = new ArrayList<>();
// if (userEmails != null && !userEmails.isEmpty()) {
// members = userEmails.stream()
// .map(email -> createUserInProjectWithRoleMember(email, host.getName(), projectName, createProjectResponseDto.projectId()))
// .collect(Collectors.toList());
// }

sendMailPort.sendIviteMailBatch(hostName, projectName, userEmails, project.getId());
return createProjectResponseDto;
}

private List<UserInProject> userInProjectFromEmail(List<String> userEmails) {
return userEmails.stream()
.map(email -> new UserInProject(email, Role.MEMBER))
.collect(Collectors.toList());
}

@Override
public JoinProjectUsecase.JoinProjectResponseDto joinProject(String userId, String projectId) {
UserInProject userInProject = new UserInProject(userId, Role.MEMBER);
Expand Down Expand Up @@ -221,9 +225,9 @@ private GetAllRoomsByUserIdResponseDto mapProjectsToResponse(String userId, List
return new GetAllRoomsByUserIdResponseDto(userId, projectDtos);
}

private ProjectForGetAllInfoAboutRoomsByUserIdResponseDto convertProjectToDto(String userId, Project project) {
private ProjectForGetAllInfoAboutRoomsByUserIdResponseDto convertProjectToDto(String userEmail, Project project) {
Role userRole = project.getUsers().stream()
.filter(user -> userId.equals(user.getUserId()))
.filter(user -> userEmail.equals(user.getUserId()))
.map(UserInProject::getRole)
.findFirst()
.orElse(null);
Expand All @@ -234,9 +238,11 @@ private ProjectForGetAllInfoAboutRoomsByUserIdResponseDto convertProjectToDto(St

List<String> userEmails = usersInProject.stream()
.map(UserInProject::getUserId)
.map(readUserPort::findByUserId)
.filter(user -> user != null)
.map(User::getEmail)
.map(userId -> {
User user = readUserPort.findByUserId(userId);
return user != null ? user.getEmail() : null;
})
.filter(Objects::nonNull)
.collect(Collectors.toList());

return new ProjectForGetAllInfoAboutRoomsByUserIdResponseDto(
Expand Down
1 change: 1 addition & 0 deletions src/main/java/com/syncd/domain/project/Project.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ public class Project {
private String lastModifiedDate;
private int leftChanceForUserstory;


public void addUsers(List<UserInProject> newUsers) {
if (this.users == null) {
this.users = new ArrayList<>();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,8 @@ public String sendInviteMail(String email, String hostName, String userName, Str
}

@Override
public String sendIviteMailBatch(String hostName, String projectName, List<User> users, String ProjectId) {
public String sendIviteMailBatch(String hostName, String projectName, List<String> userEmails, String ProjectId) {

return Consistent.ProjectName.getValue();
}
}
Loading