Skip to content

Commit

Permalink
fix : initialize data and refact code structure
Browse files Browse the repository at this point in the history
  • Loading branch information
AmimiHamza committed May 20, 2024
1 parent b246df1 commit 90c993d
Show file tree
Hide file tree
Showing 13 changed files with 120 additions and 33 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -595,7 +595,7 @@
"enabled": true,
"firstName": "anas",
"lastName": "El Ardi",
"email": "anas@gmail.com",
"email": "anas@example.com",
"credentials": [
{
"type": "password",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,6 @@ public class ChatMessageDTO {
private Long senderId;
private Long recipientId;
private String content;
private Date timestamp;//to datete
private Date timestamp;

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package ma.insea.connect.chat.common.chatMessage;

import java.util.Date;

import lombok.Data;
@Data
public class ChatMessageDTO2 {
private Long senderId;
private String content;
private Date timestamp;
private String senderName;

}
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@
import ma.insea.connect.user.User;
import ma.insea.connect.user.UserRepository;

import java.util.Date;
import java.sql.Date;
import java.util.ArrayList;
import java.util.List;

@Service
Expand All @@ -31,7 +32,7 @@ public ChatMessage saveusermessage(ChatMessageDTO chatMessage) {
chatMessage1.setSender(sender);
chatMessage1.setRecipient(recipient);
chatMessage1.setContent(chatMessage.getContent());
chatMessage1.setTimestamp(new Date());
chatMessage1.setTimestamp(new java.sql.Date(System.currentTimeMillis()));

chatMessageRepository.save(chatMessage1);

Expand All @@ -45,10 +46,9 @@ public ChatMessage saveusermessage(ChatMessageDTO chatMessage) {
public GroupMessage savegroupmessage(GroupMessageDTO groupMessageDTO) {
User sender = userRepository.findById(groupMessageDTO.getSenderId()).get();
GroupMessage groupMessage = new GroupMessage();
groupMessage.setGroupId(groupMessageDTO.getGroupId());
groupMessage.setSender(sender);
groupMessage.setContent(groupMessageDTO.getContent());
groupMessage.setTimestamp(new Date());
groupMessage.setTimestamp(new java.sql.Date(System.currentTimeMillis()));
groupMessageRepository.save(groupMessage);
return groupMessage;
}
Expand Down Expand Up @@ -89,8 +89,30 @@ public ChatMessageDTO findLastMessage(String chatId) {
}
return null;
}
public List<GroupMessage> findGroupMessages(Long groupId) {
return groupMessageRepository.findByGroupId(groupId);
public List<GroupMessageDTO> findGroupMessages(Long groupId) {
List<GroupMessage> groupMessages = groupMessageRepository.findByGroupId(groupId);
List<GroupMessageDTO> groupMessages2 = new ArrayList<GroupMessageDTO>();
for (GroupMessage groupMessage : groupMessages) {
GroupMessageDTO groupMessageDTO = new GroupMessageDTO();
groupMessageDTO.setContent(groupMessage.getContent());
groupMessageDTO.setTimestamp(groupMessage.getTimestamp());
groupMessageDTO.setSenderId(groupMessage.getSender().getId());
groupMessageDTO.setSenderName(groupMessage.getSender().getUsername());
groupMessages2.add(groupMessageDTO);
}
return groupMessages2;
}
public GroupMessageDTO findLastGroupMessage(Long groupId) {
List<GroupMessage> groupMessages = groupMessageRepository.findByGroupId(groupId);
if (groupMessages.size() > 0) {
GroupMessage groupMessage2=groupMessages.get(groupMessages.size() - 1);
GroupMessageDTO groupMessageDTO=new GroupMessageDTO();
groupMessageDTO.setContent(groupMessage2.getContent());
groupMessageDTO.setTimestamp(new java.util.Date(System.currentTimeMillis()));
groupMessageDTO.setSenderId(groupMessage2.getSender().getId());
groupMessageDTO.setSenderName(groupMessage2.getSender().getUsername());
return groupMessageDTO;
}
return null;}

}
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,14 @@



import java.util.Date;

import lombok.Data;
@Data
public class GroupMessageDTO {
private Long senderId;
private Long groupId;
private String content;
private String senderName;
private Date timestamp;

}
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import ma.insea.connect.user.UserRepository;
import ma.insea.connect.chat.common.chatMessage.ChatMessage;
import ma.insea.connect.chat.common.chatMessage.ChatMessageDTO;
import ma.insea.connect.chat.common.chatMessage.ChatMessageDTO2;
import ma.insea.connect.chat.common.chatMessage.ChatMessageRepository;


Expand All @@ -26,6 +27,7 @@ public class ConversationService {

public List<ConversationDTO> findConversationsByEmail(String email) {
User user2=userRepository.findByEmail(email);
System.out.println("useer" + user2);
List<Conversation> conversations = conversationRepository.findAllByMember1OrMember2(user2,user2);


Expand All @@ -34,15 +36,16 @@ public List<ConversationDTO> findConversationsByEmail(String email) {
{
ChatMessageDTO chatMessage=chatMessageService.findLastMessage(conversation.getChatId());

Long member1=conversation.getMember1().getId();
Long member2=conversation.getMember2().getId();
Long recepientId=member1.equals(email)?member2:member1;
User user=userRepository.findById(recepientId).get();
String member1=conversation.getMember1().getEmail();
String member2=conversation.getMember2().getEmail();
String recepientId=member1.equals(email)?member2:member1;
User user=userRepository.findByEmail(recepientId);



ConversationDTO conversationDTO=new ConversationDTO();

conversationDTO.setChatId(conversation.getChatId());
conversationDTO.setRecipientId(recepientId);
conversationDTO.setUsername(user.getUsername());
conversationDTO.setLastLogin(user.getLastLogin());
conversationDTO.setStatus(user.getStatus());
Expand Down Expand Up @@ -88,8 +91,17 @@ public List<ConversationDTO> findConversationsByID(Long myId) {

}

public List<ChatMessage> findConversationMessages(String conversationId) {
return chatMessageRepository.findByChatId(conversationId);
public List<ChatMessageDTO2> findConversationMessages(String conversationId) {
List<ChatMessage> chatMessages = chatMessageRepository.findByChatId(conversationId);
List<ChatMessageDTO2> chatMessageDTOs = new ArrayList<>();
for (ChatMessage chatMessage : chatMessages) {
ChatMessageDTO2 chatMessageDTO = new ChatMessageDTO2();
chatMessageDTO.setContent(chatMessage.getContent());
chatMessageDTO.setTimestamp(chatMessage.getTimestamp());
chatMessageDTO.setSenderId(chatMessage.getSender().getId());
chatMessageDTO.setSenderName(chatMessage.getSender().getUsername());
chatMessageDTOs.add(chatMessageDTO);
}
return chatMessageDTOs;}

}
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@
import org.springframework.web.bind.annotation.RestController;

import ma.insea.connect.chat.common.chatMessage.ChatMessage;
import ma.insea.connect.chat.common.chatMessage.ChatMessageDTO;
import ma.insea.connect.chat.common.chatMessage.ChatMessageDTO2;
import lombok.RequiredArgsConstructor;

@RestController
Expand All @@ -18,7 +20,7 @@ public class ConversatonController {
private final ConversationService conversationService;

@GetMapping("/conversations/{conversationId}/messages")
public ResponseEntity<List<ChatMessage>> findConversationMessages(@PathVariable String conversationId
public ResponseEntity<List<ChatMessageDTO2>> findConversationMessages(@PathVariable String conversationId
) {
return ResponseEntity
.ok(conversationService.findConversationMessages(conversationId));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import lombok.AllArgsConstructor;
import ma.insea.connect.chat.common.chatMessage.ChatMessageService;
import ma.insea.connect.chat.common.chatMessage.GroupMessage;
import ma.insea.connect.chat.common.chatMessage.GroupMessageDTO;
import ma.insea.connect.user.User;

import java.util.List;
Expand Down Expand Up @@ -40,7 +41,7 @@ public ResponseEntity<String> deleteGroup(@PathVariable("groupid") Long groupId)
}

@GetMapping("/groups/{groupId}/messages")
public ResponseEntity<List<GroupMessage>> findGroupChatMessages(@PathVariable Long groupId) {
public ResponseEntity<List<GroupMessageDTO>> findGroupChatMessages(@PathVariable Long groupId) {

return ResponseEntity
.ok(chatMessageService.findGroupMessages(groupId));
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package ma.insea.connect.chat.group;


import lombok.Data;
import ma.insea.connect.chat.common.chatMessage.GroupMessageDTO;
@Data
public class GroupDTO2 {
private Long id;
private String name;
private GroupMessageDTO lastMessage;
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,10 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import ma.insea.connect.chat.common.chatMessage.ChatMessageDTO;
import ma.insea.connect.chat.common.chatMessage.ChatMessageDTO2;
import ma.insea.connect.chat.common.chatMessage.ChatMessageService;
import ma.insea.connect.chat.common.chatMessage.GroupMessageDTO;
import ma.insea.connect.user.User;
import ma.insea.connect.user.UserRepository;

Expand All @@ -20,6 +24,7 @@ public class GroupService {
private final UserRepository userRepository;
private final GroupRepository groupRepository;
private final MembershipRepository membershipRepository;
private final ChatMessageService chatMessageService;

public Group saveGroup(GroupDTO groupDTO) {
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
Expand Down Expand Up @@ -49,13 +54,22 @@ public Group saveGroup(GroupDTO groupDTO) {
membershipRepository.save(m);
return group;
}
public List<Group> findallgroupsofemail(Long myId) {
public List<GroupDTO2> findallgroupsofemail(Long myId) {
List<Membership> memberships = membershipRepository.findByUserId(myId);
List<Group> groups = new ArrayList<Group>();
for (Membership membership : memberships) {
groups.add(membership.getGroup());
}
return groups;
List<GroupDTO2> groupDTOs = new ArrayList<GroupDTO2>();
for (Group group : groups) {
GroupDTO2 groupDTO = new GroupDTO2();
groupDTO.setId(group.getId());
groupDTO.setName(group.getName());
GroupMessageDTO chatMessage=chatMessageService.findLastGroupMessage(group.getId());
groupDTO.setLastMessage(chatMessage);
groupDTOs.add(groupDTO);
}
return groupDTOs;
}
public void deleteGroup(Long groupId) {
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import ma.insea.connect.chat.conversation.ConversationDTO;
import ma.insea.connect.chat.conversation.ConversationService;
import ma.insea.connect.chat.group.Group;
import ma.insea.connect.chat.group.GroupDTO2;
import ma.insea.connect.chat.group.GroupService;
import ma.insea.connect.keycloak.DTO.AddKeycloakDTO;
import ma.insea.connect.keycloak.controller.KeyCloakController;
Expand Down Expand Up @@ -92,11 +93,6 @@ public ResponseEntity<List<User>> findConnectedUsers() {
return ResponseEntity.ok(userService.findAllUsers());
}

@GetMapping("/user/{myId}/groups")
public ResponseEntity<List<Group>> getGroupsByEmail(@PathVariable Long myId) {
List<Group> groups = groupService.findallgroupsofemail(myId);
return ResponseEntity.ok(groups);
}

@GetMapping("/user/{email}")
public ResponseEntity<User> getUserByEmail(@PathVariable String email) {
Expand All @@ -105,7 +101,7 @@ public ResponseEntity<User> getUserByEmail(@PathVariable String email) {
}

@GetMapping("/users/me/groups")
public ResponseEntity<List<Group>> getGroupsByEmail(@AuthenticationPrincipal Jwt jwt) {
public ResponseEntity<List<GroupDTO2>> getGroupsByEmail(@AuthenticationPrincipal Jwt jwt) {
if (jwt == null) {
return ResponseEntity.status(HttpStatus.FORBIDDEN).build();
}
Expand Down Expand Up @@ -135,9 +131,6 @@ public ResponseEntity<UserInfoResponseDTO> getUserById(@AuthenticationPrincipal

@GetMapping("/users/me/conversations")
public ResponseEntity<List<ConversationDTO>> getUserConversations(@AuthenticationPrincipal Jwt jwt) {
if (jwt == null) {
return ResponseEntity.status(HttpStatus.FORBIDDEN).build();
}
String email = jwt.getClaimAsString("email");
List<ConversationDTO> conversations = conversationService.findConversationsByEmail(email);
return ResponseEntity.ok(conversations);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ public void disconnect(User user) {
var storedUser = userRepository.findByEmail(user.getEmail());
if (storedUser != null) {
storedUser.setStatus(Status.OFFLINE);
storedUser.setLastLogin(new java.util.Date());
storedUser.setLastLogin(new java.sql.Date(System.currentTimeMillis()));
userRepository.save(storedUser);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ public void run(String... args) throws Exception {
private void loadDummyUsers(UserRepository userRepository,GroupRepository groupRepository, MembershipRepository membershipRepository,GroupMessageRepository groupMessageRepository , ChatMessageRepository chatMessageRepository,ConversationRepository conversationRepository) {
AddUserDTO user = AddUserDTO.builder()
.username("anas")
.email("anas")
.email("anas@example.com")
.firstName("anas")
.lastName("anas")
.role(Role.ADMIN)
Expand Down Expand Up @@ -133,6 +133,13 @@ private void loadDummyUsers(UserRepository userRepository,GroupRepository groupR
groupMessage2.setSender(soulayman);
groupMessageRepository.save(groupMessage2);

GroupMessage groupMessage3=new GroupMessage();
groupMessage3.setGroupId(group.getId());
groupMessage3.setContent("this is a nce group");
groupMessage3.setTimestamp(new java.sql.Date(System.currentTimeMillis()));
groupMessage3.setSender(anas);
groupMessageRepository.save(groupMessage3);




Expand All @@ -142,7 +149,7 @@ private void loadDummyUsers(UserRepository userRepository,GroupRepository groupR
chatMessage1.setSender(anas);
chatMessage1.setRecipient(soulayman);
chatMessage1.setContent("hello soulayman , my name is anas");
chatMessage1.setTimestamp(new Date());
chatMessage1.setTimestamp(new java.sql.Date(System.currentTimeMillis()));
chatMessageRepository.save(chatMessage1);

Conversation conversation = new Conversation();
Expand All @@ -157,8 +164,17 @@ private void loadDummyUsers(UserRepository userRepository,GroupRepository groupR
chatMessage2.setSender(soulayman);
chatMessage2.setRecipient(anas);
chatMessage2.setContent("nice to meet you anas , my name is soulayman");
chatMessage2.setTimestamp(new Date());
chatMessage2.setTimestamp(new java.sql.Date(System.currentTimeMillis()));
chatMessageRepository.save(chatMessage2);


ChatMessage chatMessage3 = new ChatMessage();
chatMessage3.setChatId(chatId);
chatMessage3.setSender(anas);
chatMessage3.setRecipient(soulayman);
chatMessage3.setContent("nice to meet you too soulayman");
chatMessage3.setTimestamp(new java.sql.Date(System.currentTimeMillis()));
chatMessageRepository.save(chatMessage3);

}
public String getChatRoomId(String senderId,String recipientId,boolean createNewRoomIfNotExists)
Expand Down

0 comments on commit 90c993d

Please sign in to comment.